[go: up one dir, main page]

RU2820638C2 - 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 - Google Patents

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 Download PDF

Info

Publication number
RU2820638C2
RU2820638C2 RU2022101152A RU2022101152A RU2820638C2 RU 2820638 C2 RU2820638 C2 RU 2820638C2 RU 2022101152 A RU2022101152 A RU 2022101152A RU 2022101152 A RU2022101152 A RU 2022101152A RU 2820638 C2 RU2820638 C2 RU 2820638C2
Authority
RU
Russia
Prior art keywords
sample
integer
pixel
block
prediction
Prior art date
Application number
RU2022101152A
Other languages
Russian (ru)
Other versions
RU2022101152A (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 RU2022101152A publication Critical patent/RU2022101152A/en
Application granted granted Critical
Publication of RU2820638C2 publication Critical patent/RU2820638C2/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: invention relates to image processing and relates to a method for predicting a bidirectional optical flow based on a sample value from a sampling position belonging to an extended region of a predicted block used in predicting a bidirectional optical stream of the current block. Method includes obtaining a motion vector of a current block, obtaining a subpixel sampling position in an extended region of a predicted block in a reference picture based on the obtained motion vector, processing the obtained subpixel sampling position to obtain an integer sampling position of pixels in a reference picture and performing bidirectional optical flow prediction by accessing the reference sample value in the obtained integer pixel sample position in the reference picture.
EFFECT: high degree of image compression with minimal loss of quality.
35 cl, 10 dwg

Description

ПЕРЕКРЕСТНЫЕ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИCROSS REFERENCE TO RELATED APPLICATIONS

Эта заявка испрашивает приоритет заявки на патент Индии IN201931025013, поданной 24 июня 2019 г. в Патентное ведомство Индии, раскрытие которой полностью включено в настоящий документ посредством ссылки.This application claims priority to Indian Patent Application IN201931025013 filed on June 24, 2019 with the Indian Patent Office, the disclosure of which is incorporated herein by reference in its entirety.

ОБЛАСТЬ ТЕХНИКИTECHNICAL FIELD

Варианты осуществления настоящей заявки в целом относятся к области обработки картинки и, в частности, к уточнению оптического потока.Embodiments of the present application generally relate to the field of image processing and, in particular, to optical flow refinement.

УРОВЕНЬ ТЕХНИКИBACKGROUND 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, 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 present even a relatively short video can be significant, which can lead to difficulties when the data must be streamed or otherwise communicated 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 by the recipient's video decompressor, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques are desired that improve the compression ratio with little or no loss in picture quality.

СУЩНОСТЬ РАСКРЫТИЯESSENCE OF DISCLOSURE

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

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

Первый вариант осуществления настоящего раскрытия сущности предоставляет способ, реализованный устройством кодирования или устройством декодирования, для предсказания двунаправленного оптического потока на основе значения выборки из позиции выборки, принадлежащей расширенной области предсказанного блока, используемого в предсказании двунаправленного оптического потока текущего блока, при этом способ содержит получение вектора движения (MV) текущего блока, получение позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV, обработку полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке и выполнение предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.A first embodiment of the present disclosure provides a method, implemented by an encoding device or a decoding device, for predicting a bidirectional optical flow based on a sample value from a sample position belonging to an extended area of a predicted block used in predicting a bidirectional optical flow of a current block, the method comprising obtaining a vector motion (MV) of the current block, obtaining a subpixel sampling position in the extended region of the predicted block in the reference picture based on the MV, processing the obtained subpixel sampling position to obtain an integer pixel sampling position in the reference picture, and performing bidirectional optical flow prediction by referring to the reference sampling value in the resulting integer position of a sample of pixels in the reference picture.

Обработка полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке может уменьшить объем памяти для предсказания двунаправленного оптического потока (BDOF) и позволить установить конвейер уровня субблока в конструкциях оборудования пока значения расширенной выборки (то есть позиции выборки, которые выходят за пределы позиций выборки M x N, соответствующих субблоку) не получены посредством интерполяции с компенсацией движения соответствующих опорных выборок.Processing the resulting subpixel sample position to obtain an integer pixel sample position in the reference picture can reduce the memory footprint for bidirectional optical flow (BDOF) prediction and allow the establishment of a subblock level pipeline in hardware designs as long as extended sample values (that is, sample positions that extend beyond the positions M x N samples corresponding to the sub-block) are not obtained through motion-compensated interpolation of the corresponding reference samples.

Значение опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке может называться значением выборки из позиции выборки субпикселей при предсказании двунаправленного оптического потока.The reference sample value at the obtained integer pixel sampling position in the reference picture may be called the sampling value from the sub-pixel sampling position in bidirectional optical flow prediction.

Обработка полученной позиции выборки субпикселей может включать в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.Processing the received subpixel sample position may include rounding the obtained subpixel sample position to obtain an integer pixel sample position in the reference picture.

Округляя положение субпикселя в горизонтальном и вертикальном направлениях, граничные градиенты могут быть более точными. Это может улучшить вычисленный оптический поток на основе этих градиентов выборки, а также коррекции, применяемые с использованием вычисленного оптического потока. Это может обеспечить согласованный выигрыш от кодировки по сравнению с более ранним способом игнорирования дробного смещения в горизонтальном и вертикальном направлениях при выборе значения целочисленной выборки для позиций расширенной выборки. В то же время сложность не может быть увеличена сильно, поскольку добавление горизонтального и вертикального смещения округления - единственное увеличение сложности.By rounding the subpixel position in the horizontal and vertical directions, boundary gradients can be more precise. This can improve the calculated optical flow based on these sampling gradients, as well as the corrections applied using the calculated optical flow. This may provide a consistent encoding gain over the earlier method of ignoring fractional offsets in the horizontal and vertical directions when choosing an integer sample value for extended sample positions. At the same time, the complexity cannot be increased much, since adding horizontal and vertical rounding offsets is the only increase in complexity.

Обработка полученной позиции выборки субпикселей может включать в себя округление полученной позиции выборки субпикселей отдельно по горизонтали и вертикали до соответствующей ближайшей целочисленной позиции выборки пикселей в соответствующем направлении и получение целочисленной позиции выборки пикселей в опорной картинке на основе ближайших целочисленных позиций выборки пикселей в горизонтальном и вертикальном направлениях.Processing the obtained subpixel sampling position may include rounding the obtained subpixel sampling position separately horizontally and vertically to the corresponding nearest integer pixel sampling position in the corresponding direction, and obtaining an integer pixel sampling position in the reference picture based on the nearest integer pixel sampling positions in the horizontal and vertical directions. .

Способ может дополнительно содержать, перед выполнением предсказания двунаправленного оптического потока, выбор (извлечение) значения опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке в качестве значения выборки предсказания для использования в предсказании двунаправленного оптического потока, при этом выполнение предсказания двунаправленного оптического потока со ссылкой на значение опорной выборки содержит выполнение предсказания двунаправленного оптического потока с использованием значения выборки предсказания.The method may further comprise, before performing bidirectional optical flow prediction, selecting (extracting) a reference sample value at the obtained integer sample position of pixels in the reference picture as a prediction sample value for use in bidirectional optical flow prediction, wherein performing bidirectional optical flow prediction with reference the reference sample value comprises performing a bidirectional optical flow prediction using the prediction sample value.

Согласно реализации, округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении может включать в себя сравнение дробной части полученной позиции выборки субпикселей в соответствующем направлении с пороговым значением, при этом в случае, если дробная часть равна или превышает пороговое значение, ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении, и при этом в случае, если дробная часть меньше порогового значения, ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении.According to the implementation, rounding the obtained subpixel sample position separately in the horizontal direction and vertical direction may include comparing a fractional part of the obtained subpixel sample position in the corresponding direction with a threshold value, wherein if the fractional part is equal to or greater than the threshold value, the nearest upper integer the pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction, and wherein in case the fractional part is less than the threshold value, the nearest lower integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction.

Ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена путем добавления смещения на 1 к усеченной целочисленной позиции выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей, и ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена путем добавления смещения на 0 к усеченной целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей.The nearest upper integer pixel sampling position in the corresponding direction can be obtained by adding an offset of 1 to the truncated integer pixel sampling position in the corresponding direction obtained by discarding the fractional part of the resulting sub-pixel sampling position, and the nearest lower integer pixel sampling position in the corresponding direction can be obtained by adding an offset of 0 to the truncated integer position of the truncated pixel sample in the appropriate direction, obtained by discarding the fractional part of the resulting subpixel sample position.

Пороговое значение может быть задано как P/2 для субпиксельной точности в 1/P pel (пикселя). Пороговое значение может составлять 8 для субпиксельной точности в 1/16 pel.The threshold can be set to P/2 for sub-pixel precision of 1/P pel (pixel). The threshold value can be 8 for sub-pixel precision of 1/16 pel.

Согласно реализации, округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении может включать в себя применение операции сдвига и операции обратного сдвига к компонентам полученной позиции выборки субпикселей в соответствующих направлениях.According to the implementation, rounding the obtained subpixel sample position separately in the horizontal direction and the vertical direction may include applying a shift operation and a reverse shift operation to the components of the obtained subpixel sample position in the respective directions.

Целочисленная позиция (x_pos, y_pos) выборки пикселей в опорной картинке может быть получена в соответствии со следующими уравнениями:The integer position (x_pos, y_pos) of a sample of pixels in the reference picture can be obtained according to the following equations:

x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_valx_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val

y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_valy_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val

где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, можно использовать shift_val, равный 1, 2, 3 или 4 соответственно.where (x_spel_pos, y_spel_pos) is the resulting subpixel sampling position and shift_val is chosen according to the subpixel sampling precision used. For subpixel sampling precision equal to half pixel, quarter pixel, 1/8 pixel or 1/16 pixel, you can use shift_val equal to 1, 2, 3 or 4 respectively.

Согласно реализации, MV текущего блока может быть уточненным MV, полученным посредством уточнения вектора движения (MVR) на основе начального MV.According to the implementation, the MV of the current block may be a refined MV obtained by motion vector refinement (MVR) based on the initial MV.

MVR может содержать этап уточнения целочисленного расстояния в отношении начального MV, при этом, в случае, если этап уточнения MVR целочисленного расстояния приводит к ненулевому смещению уточненного MV относительно начального MV, целочисленная позиция выборки пикселей в опорной картинке может быть получена округлением полученной позиции выборки субпикселей.The MVR may comprise an integer distance refinement step with respect to the initial MV, wherein, in the event that the integer distance MVR refinement step results in a non-zero offset of the refined MV relative to the initial MV, the integer pixel sample position in the reference picture may be obtained by rounding the resulting subpixel sample position.

В случае, если этап уточнения целочисленного расстояния MVR приводит к нулевому смещению уточненного MV по отношению к начальному MV, целочисленная позиция выборки пикселей в опорной картинке может быть получена путем отбрасывания дробной части полученной позиции выборки субпикселей.In case the integer MVR distance refinement step results in a zero offset of the refined MV with respect to the initial MV, the integer pixel sample position in the reference picture can be obtained by discarding the fractional part of the resulting subpixel sample position.

Согласно реализации, в случае, если этап уточнения целочисленного расстояния MVR приводит к нулевому смещению уточненного MV относительно начального MV, целочисленная позиция (x_pos, y_pos) выборки пикселей в опорной картинке может быть получена в соответствии со следующими уравнениями:According to the implementation, in the case that the MVR integer distance refinement step results in a zero offset of the refined MV relative to the initial MV, the integer position (x_pos, y_pos) of the sample pixels in the reference picture can be obtained according to the following equations:

x_pos = x_spel_pos >> shift_valx_pos = x_spel_pos >> shift_val

y_pos = y_spel_pos >> shift_valy_pos = y_spel_pos >> shift_val

где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, можно использовать shift_val, равный 1, 2, 3 или 4 соответственно.where (x_spel_pos, y_spel_pos) is the resulting subpixel sampling position and shift_val is chosen according to the subpixel sampling precision used. For subpixel sampling precision equal to half pixel, quarter pixel, 1/8 pixel or 1/16 pixel, you can use shift_val equal to 1, 2, 3 or 4 respectively.

Текущий блок может быть текущим блоком кодировки или текущим субблоком кодировки или текущим блоком предсказания.The current block may be a current encoding block or a current sub-encoding block or a current prediction block.

Значение опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке может использоваться при вычислении градиента граничной выборки, соответствующего границе предсказанного блока в опорной картинке.The reference sample value at the resulting integer sample position of pixels in the reference picture can be used in calculating a boundary sample gradient corresponding to the boundary of a predicted block in the reference picture.

Согласно аспекту первого варианта осуществления предоставляется кодер, содержащий схему обработки для выполнения любого из способов согласно первому варианту осуществления.According to an aspect of the first embodiment, an encoder is provided comprising processing circuitry for performing any of the methods according to the first embodiment.

Согласно дополнительному аспекту первого варианта осуществления предоставляется декодер, содержащий схему обработки для выполнения любого из способов согласно первому варианту осуществления.According to a further aspect of the first embodiment, a decoder is provided including processing circuitry for performing any of the methods according to the first embodiment.

Согласно дополнительному аспекту первого варианта осуществления предоставляется компьютерный программный продукт, содержащий инструкции, которые, когда программа выполняется компьютером, заставляют компьютер выполнять любой из способов согласно первому варианту осуществления.According to a further aspect of the first embodiment, a computer program product is provided containing instructions that, when the program is executed by a computer, cause the computer to perform any of the methods according to the first embodiment.

Согласно дополнительному аспекту первого варианта осуществления предоставляется кодер, содержащий один или несколько процессоров и энергонезависимый машиночитаемый носитель данных, подсоединенный к одному или нескольким процессорам и хранящий инструкции для выполнения одним или несколькими процессорами, при этом инструкции, когда выполняются одним или несколькими процессорами, конфигурируют кодер для выполнения любого из способов согласно первому варианту осуществления.According to a further aspect of the first embodiment, an encoder is provided comprising one or more processors and a non-transitory computer-readable storage medium coupled to the one or more processors and storing instructions for execution by the one or more processors, wherein the instructions, when executed by the one or more processors, configure the encoder to performing any of the methods according to the first embodiment.

Согласно дополнительному аспекту первого варианта осуществления предоставляется декодер, содержащий один или несколько процессоров и энергонезависимый машиночитаемый носитель данных, подключенный к одному или нескольким процессорам и хранящий инструкции для выполнения одним или несколькими процессорами, при этом инструкции, когда выполняются одним или несколькими процессорами, конфигурируют декодер для выполнения любого из способов согласно первому варианту осуществления.According to a further aspect of the first embodiment, a decoder is provided comprising one or more processors and a non-volatile computer-readable storage medium coupled to the one or more processors and storing instructions for execution by the one or more processors, wherein the instructions, when executed by the one or more processors, configure the decoder to performing any of the methods according to the first embodiment.

Согласно дополнительному аспекту первого варианта осуществления, предоставляется кодер, содержащий блок предсказания, сконфигурированный для выполнения предсказания двунаправленного оптического потока текущего блока, первый блок получения, сконфигурированный для получения вектора движения (MV) текущего блока, второй блок получения, сконфигурированный для получения позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV, и блок обработки, сконфигурированный для обработки полученной позиции выборки субпикселей, чтобы получить целочисленную позицию выборки пикселей в опорной картинке, при этом блок предсказания сконфигурирован для выполнения предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.According to a further aspect of the first embodiment, an encoder is provided, comprising a prediction unit configured to perform bidirectional optical flow prediction of a current block, a first acquiring unit configured to obtain a motion vector (MV) of the current block, a second acquiring unit configured to obtain a subpixel sampling position in an extended area of the predicted block in the reference picture based on the MV, and a processing unit configured to process the obtained sub-pixel sampling position to obtain an integer pixel sampling position in the reference picture, wherein the prediction unit is configured to perform bidirectional optical flow prediction by referring to the reference sampling value at the resulting integer sample position of pixels in the reference picture.

Согласно реализации, обработка полученной позиции выборки субпикселей может включать в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.According to the implementation, processing the received sub-pixel sample position may include rounding the received sub-pixel sample position to obtain an integer pixel sample position in the reference picture.

Согласно реализации, обработка полученной позиции выборки субпикселей может включать в себя округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении до соответствующей ближайшей целочисленной позиции выборки пикселей в соответствующем направлении и получение целочисленной позиции выборки пикселей в опорной картинке на основе ближайших целочисленных позиций выборки пикселей в горизонтальном направлении и вертикальном направлении.According to the implementation, processing the obtained subpixel sampling position may include rounding the obtained subpixel sampling position separately in the horizontal direction and vertical direction to the corresponding nearest integer pixel sampling position in the corresponding direction, and obtaining the integer pixel sampling position in the reference picture based on the nearest integer pixel sampling positions in horizontal direction and vertical direction.

Округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении может включать в себя сравнение дробной части полученной позиции выборки субпикселей в соответствующем направлении с пороговым значением,Rounding the resulting subpixel sample position separately in the horizontal direction and the vertical direction may involve comparing a fractional portion of the resulting subpixel sample position in the corresponding direction with a threshold value,

при этом в случае, когда дробная часть равна или превышает пороговое значение, ближайшая целочисленная позиция выборки пикселей в соответствующем направлении может быть получена как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении, и при этом в случае, когда дробная часть меньше порогового значения, ближайшая целочисленная позиция выборки пикселей в соответствующем направлении может быть получена как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении.wherein, in the case where the fractional part is equal to or greater than the threshold value, the nearest integer pixel sampling position in the corresponding direction can be obtained as the nearest integer pixel sampling position in the corresponding direction, and in this case, in the case where the fractional part is less than the threshold value, the nearest integer the pixel sampling position in the corresponding direction can be obtained as the nearest integer pixel sampling position in the corresponding direction.

Ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена путем добавления смещения на 1 к усеченной целочисленной позиции выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей, и ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена путем добавления смещения на 0 к усеченной целочисленной позиции выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей.The nearest upper integer pixel sampling position in the corresponding direction can be obtained by adding an offset of 1 to the truncated integer pixel sampling position in the corresponding direction obtained by discarding the fractional part of the resulting sub-pixel sampling position, and the nearest lower integer pixel sampling position in the corresponding direction can be obtained by adding an offset of 0 to the truncated integer pixel sample position in the appropriate direction, obtained by discarding the fractional part of the resulting subpixel sample position.

Согласно дополнительному аспекту первого варианта осуществления, предоставляется декодер, содержащий блок предсказания, сконфигурированный для выполнения предсказания двунаправленного оптического потока текущего блока, первый блок получения, сконфигурированный для получения вектора движения (MV) текущего блока из потока битов закодированного видео, второй блок получения, сконфигурированный для получения позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV, и блок обработки, сконфигурированный для обработки полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке, при этом блок предсказания сконфигурирован для выполнения предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.According to a further aspect of the first embodiment, a decoder is provided, comprising a prediction unit configured to perform bidirectional optical flow prediction of the current block, a first acquiring unit configured to obtain a motion vector (MV) of the current block from the encoded video bitstream, a second acquiring unit configured to obtaining a subpixel sampling position in an extended region of a predicted block in a reference picture based on the MV, and a processing unit configured to process the obtained subpixel sampling position to obtain an integer pixel sampling position in the reference picture, wherein the prediction unit is configured to perform bidirectional optical flow prediction by reversing to the reference sample value at the resulting integer sample position of pixels in the reference picture.

Согласно реализации, обработка полученной позиции выборки субпикселей может включать в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.According to the implementation, processing the received sub-pixel sample position may include rounding the received sub-pixel sample position to obtain an integer pixel sample position in the reference picture.

Согласно реализации, обработка полученной позиции выборки субпикселей может включать в себя округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении до соответствующей ближайшей целочисленной позиции выборки пикселей в соответствующем направлении и получение целочисленной позиции выборки пикселей в опорной картинке на основе ближайших целочисленных позиций выборки пикселей в горизонтальном направлении и вертикальном направлении.According to the implementation, processing the obtained subpixel sampling position may include rounding the obtained subpixel sampling position separately in the horizontal direction and vertical direction to the corresponding nearest integer pixel sampling position in the corresponding direction, and obtaining the integer pixel sampling position in the reference picture based on the nearest integer pixel sampling positions in horizontal direction and vertical direction.

Округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении может включать в себя сравнение дробной части полученной позиции выборки субпикселей в соответствующем направлении с пороговым значением,Rounding the resulting subpixel sample position separately in the horizontal direction and the vertical direction may involve comparing a fractional portion of the resulting subpixel sample position in the corresponding direction with a threshold value,

при этом в случае, когда дробная часть равна или превышает пороговое значение, ближайшая целочисленная позиция выборки пикселей в соответствующем направлении может быть получена как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении, и при этом в случае, когда дробная часть меньше порогового значения, ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении.wherein, in the case where the fractional part is equal to or greater than the threshold value, the nearest integer pixel sample position in the corresponding direction can be obtained as the nearest integer pixel sample position in the corresponding direction, and in this case, in the case where the fractional part is less than the threshold value, the nearest lower the integer pixel sampling position in the corresponding direction can be obtained as the nearest integer pixel sampling position in the corresponding direction.

Ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена путем добавления смещения на 1 к усеченной целочисленной позиции выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей, и ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении может быть получена путем добавления смещения на 0 к усеченной целочисленной позиции выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей.The nearest upper integer pixel sampling position in the corresponding direction can be obtained by adding an offset of 1 to the truncated integer pixel sampling position in the corresponding direction obtained by discarding the fractional part of the resulting sub-pixel sampling position, and the nearest lower integer pixel sampling position in the corresponding direction can be obtained by adding an offset of 0 to the truncated integer pixel sample position in the appropriate direction, obtained by discarding the fractional part of the resulting subpixel sample position.

Согласно дополнительному аспекту первого варианта осуществления предоставляется носитель данных, хранящий поток битов, который получается с использованием любого из способов первого варианта осуществления.According to a further aspect of the first embodiment, a storage medium storing a bit stream that is obtained using any of the methods of the first embodiment is provided.

Второй вариант осуществления настоящего раскрытия предоставляет способ, используемый для получения предсказанного значения выборки для позиции выборки, принадлежащей расширенной области предсказанного блока, используемой в предсказании двунаправленного оптического потока текущего блока кодирования, содержащий получение первого MV, соответствующего предсказанной выборке в расширенной области блока кодирования, получение второго MV путем отбрасывания дробной части первого MV, получение положения первого целого пикселя расширенной области в опорной картинке на основе второго MV, определение вектора дробного смещения на основе первого MV и получение положения второго целого пикселя в опорной картинке на основе положения первого целого пикселя и вектора дробного смещения, при этом положение второго целого пикселя устанавливается равным позиции первого целого пикселя плюс смещение позиции, где смещение позиции определяется путем сравнения каждого компонента вектора дробного смещения и порогового значения, и дополнительно дополнение предсказанной выборки с использованием значения пикселя в положении второго целого пикселя в опорной картинке.A second embodiment of the present disclosure provides a method used for obtaining a predicted sample value for a sample position belonging to an extended area of a predicted block used in bidirectional optical flow prediction of a current encoding block, comprising obtaining a first MV corresponding to a predicted sample in an extended area of the encoding block, obtaining a second MV by discarding the fractional part of the first MV, obtaining the position of the first integer pixel of the extended region in the reference picture based on the second MV, determining the fractional offset vector based on the first MV, and obtaining the position of the second integer pixel in the reference picture based on the position of the first integer pixel and the fractional offset vector , wherein the position of the second integer pixel is set equal to the position of the first integer pixel plus a position offset, where the position offset is determined by comparing each component of the fractional offset vector and a threshold value, and further padding the predicted sample using the pixel value at the position of the second integer pixel in the reference picture.

Является ли компонент смещения позиции 1 или 0, может зависеть от результата сравнения между соответствующим компонентом вектора дробного смещения и пороговым значением, при этом компонент включает в себя компонент X и компонент Y.Whether the position offset component is 1 or 0 may depend on the result of a comparison between the corresponding fractional offset vector component and the threshold value, where the component includes an X component and a Y component.

Пороговое значение может быть K, при этом компонент смещения позиции может быть установлен равным 1, когда соответствующий компонент дробного смещения равен или больше K, в противном случае - равным 0. K может быть равно 7.The threshold value may be K, and the position offset component may be set to 1 when the corresponding fractional offset component is equal to or greater than K, otherwise set to 0. K may be 7.

Согласно аспекту второго варианта осуществления предоставлен кодер или декодер, содержащий схему обработки для выполнения любого из способов согласно второму варианту осуществления.According to an aspect of the second embodiment, an encoder or decoder is provided including processing circuitry for performing any of the methods according to the second embodiment.

Согласно дополнительному аспекту второго варианта осуществления предоставляется компьютерный программный продукт, содержащий программный код для выполнения любого из способов согласно второму варианту осуществления.According to a further aspect of the second embodiment, a computer program product is provided comprising program code for performing any of the methods according to the second embodiment.

Согласно дополнительному аспекту второго варианта осуществления предоставляется декодер или кодер, содержащий один или несколько процессоров и энергонезависимый машиночитаемый носитель данных, подсоединенный к процессорам и хранящий программы для выполнения процессорами, при этом программа, когда выполняется процессорами, конфигурирует декодер или кодер для выполнения любого из способов согласно второму варианту осуществления.According to a further aspect of the second embodiment, a decoder or encoder is provided comprising one or more processors and a non-volatile computer readable storage medium coupled to the processors and storing programs for execution by the processors, wherein the program, when executed by the processors, configures the decoder or encoder to perform any of the methods according to the second embodiment.

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

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

Далее варианты осуществления раскрытия описаны более подробно со ссылкой на прилагаемые фигуры и чертежи, на которых:Embodiments of the disclosure are now 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 present disclosure;

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

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

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

Фиг. 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 - диаграмма, иллюстрирующая процесс округления позиции субпикселя в одном из направлений в опорной картинке, используемом в процессе выбора целочисленной выборки для вычисления градиента BDOF; Fig. 6 is a diagram illustrating the process of rounding a subpixel position in one of the directions in a reference picture used in the integer sampling process for calculating the BDOF gradient;

Фиг. 7 - схема, иллюстрирующая целочисленные позиции с использованием процесса округления позиции субпикселя в опорной картинке в процессе выбора целочисленной выборки для вычисления градиента BDOF;Fig. 7 is a diagram illustrating integer positions using a process of rounding a subpixel position in a reference picture in an integer sample selection process for calculating a BDOF gradient;

Фиг. 8 показывает блок-схему способа кодирования/декодирования видео согласно варианту осуществления раскрытия;Fig. 8 shows a flowchart of a video encoding/decoding method according to an embodiment of the disclosure;

Фиг. 9 показывает блок-схему, иллюстрирующую пример аппаратуры кодирования/декодирования согласно варианту осуществления раскрытия.Fig. 9 shows a block diagram illustrating an example of encoding/decoding equipment according to an embodiment of the disclosure.

В дальнейшем одинаковые ссылочные позиции относятся к одинаковым или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.In the following, like reference numerals refer to the same or at least functionally equivalent features, unless explicitly stated 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 present disclosure or specific aspects in which embodiments of the present disclosure may be used. It is understood that embodiments of this disclosure may be used in other aspects and contain structural or logical changes not shown in the figures. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of the present disclosure is determined by the appended claims.

Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретная аппаратура описана на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если конкретно не указано иное.For example, it will be understood that the disclosure associated with the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or a plurality of specific method steps are described, the corresponding apparatus may include one or a plurality of blocks, such as functional blocks, to perform the one or multiple method steps described (e.g., one block performing one or a plurality of steps, or a plurality of blocks, each of which performs one or more of a plurality of steps), even if such one or more blocks are not explicitly described or illustrated in the figures. On the other hand, for example, if a particular apparatus 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 (for example, 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 term "frame" or "image" can be used interchangeably in the field of video encoding. Video encoding (or encoding in general) consists of two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing (eg, through compression) of the source video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed on the receiver (destination) side and usually contains reverse processing compared to the encoder for reconstructing video images. Embodiments relating to "encoding" of video pictures (or pictures in general) are to be understood as referring to "encoding" or "decoding" video pictures or corresponding video sequences. The combination of an encoding part and a decoding part is also called CODEC (encoding and decoding).

В случае видеокодировки без потерь исходные видеокартинки могут быть восстановлены, т. е. восстановленные видеокартинки имеют то же качество, что и исходные видеокартинки (при условии, что во время хранения или передачи не происходит потери передачи или других потерь данных). В случае видеокодировки с потерями выполняется дополнительное сжатие, например, посредством квантования, для сокращения объема данных, представляющих видеокартинок, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеокартинок ниже или хуже по сравнению с качеством исходных видеокартинок.In the case of lossless video encoding, the original video images can be restored, i.e., the restored video images have the same quality as the original video images (provided that no transmission loss or other data loss occurs 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 преобразованием для применения квантования в области преобразования). Каждая картинка видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодировка обычно выполняется на уровне блоков (блочном уровне). Другими словами, в видеокодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (внутри картинки) предсказания и/или временного (вне картинке) предсказания для генерирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к закодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказания) и/или восстановления для обработки, то есть кодировки (coding), последующих блоков.Several video coding 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 coding to apply quantization in the transform domain). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and encoding is usually done at the block level (block level). In other words, in a video encoder, video is typically processed, that is, encoded, at the block (video block) level, for example using spatial (in-picture) prediction and/or temporal (out-of-picture) prediction to generate a prediction block, the prediction block being subtracted from the current block ( block that is currently being processed/to be processed) to obtain a residual block, the residual block is transformed and this residual block is quantized in the transform domain to reduce the amount of data (compression) to be transmitted, whereas in the decoder, reverse processing compared to the encoder is applied to an encoded or compressed block to reconstruct the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that they will both generate identical predictions (eg, intra and outer predictions) and/or reconstructions for processing, ie encoding, of subsequent blocks.

В нижеследующих вариантах осуществления системы 10 видеокодировки, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.In the following embodiments, video encoding systems 10, video encoder 20, and 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 schematic block diagram illustrating 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 картинки также могут именоваться необработанной (raw) картинкой или необработанными данными 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 may be configured to receive (raw) picture data 17 and perform preprocessing on the picture data 17 to produce a preprocessed picture 19 or preprocessed picture data 19. Preprocessing 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 may be configured to receive preprocessed 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 communications interface 28 of the destination device 14 may be configured to receive the 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 such as an encoded data storage device pictures, and provide 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, for example, a wired or wireless network or any combination thereof, or any private and public network, or any combination thereof.

Интерфейс 22 связи может быть сконфигурирован для упаковки закодированных данных 21 картинки в соответствующий формат, например, пакеты, и/или обработки закодированных данных картинки с использованием любого вида кодирования передачи или обработки для передачи по линии связи или сети связи.The communications interface 22 may 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 form of transmission encoding or processing for transmission over a communications link or network.

Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть сконфигурирован для приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения закодированных данных 21 картинки.Communication interface 28, constituting a counterpart to communication interface 22, may be configured to receive transmitted data and process the transmission data using any form of appropriate decoding or transmission processing and/or decompression to obtain 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 send and receive messages, for example, to establish a connection, to confirm and exchange any other information related to the communication link and/ or data transmission, such as transmission of encoded picture data.

Декодер 30 может быть сконфигурирован для приема закодированных данных 21 картинки и предоставления декодированных данных 31 картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе фиг. 3 или фиг. 5). Decoder 30 may be 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 may be configured to post-process the decoded picture data 31 (also referred to as reconstructed picture data), such as the decoded picture 31, to obtain post-processed picture data 33, such as the post-processed picture 33. Post-processing performed by the post-processing unit 32 , may include any one or more color format conversions (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), плазменным дисплеем, проектором, дисплеем на микро-светодиодах, жидким кристаллом на кремнии (LCoS), цифровым световым процессором (DLP) или любым другим дисплеем.The display device 34 of the recipient device 14 may be 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 kind of display for presenting the reconstructed picture, such as a built-in or external display or monitor. The display may be a liquid crystal display (LCD), an organic light-emitting diode (OLED), a plasma display, a projector, a micro-LED display, a liquid crystal on silicon (LCoS), a digital light processor (DLP), or any other display.

Хотя фиг. 1A изображает устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба устройства или обе функциональные возможности, то есть устройство-источник 12 или соответствующие функциональные возможности и устройство-получатель 14 или соответствующие функциональные возможности. В таких вариантах осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-получатель 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.Although fig. 1A depicts source device 12 and destination device 14 as separate devices, embodiments of the devices may also comprise both devices or both functionality, that is, source device 12 or related functionality and destination device 14 or related 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 to one skilled in the art from the description, the presence and (precise) separation of functionality of various blocks or functionality in 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.An encoder 20 (eg, video encoder 20) or a decoder 30 (eg, video decoder 30), or both, encoder 20 and decoder 30 may be implemented using the processing circuit 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 described with respect to encoder 20 in 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-volatile computer readable storage medium and may execute the instructions in hardware using one or more processors to execute the techniques of this disclosure. Video encoder 20 and video decoder 30 may be integrated as part of a combined encoder/decoder (CODEC) in one device, for example, as shown in FIG. 1B.

Система 40 видеокодировки, показанная на фиг. 1B, содержит схему обработки, реализующую как видеокодер 20, так и видеодекодер 30. Кроме того, одно или несколько устройств 41 формирования изображений, таких как камера для захвата картинок реального мира, антенна 42, одно или несколько запоминающих устройств 44, один или несколько процессоров 43 и/или устройство 45 отображения, такое как устройство 34 отображения, описанных выше, может быть предоставлено как часть системы 40 видеокодировки.The video encoding system 40 shown in FIG. 1B includes processing circuitry implementing both a video encoder 20 and a video decoder 30. In addition, one or more imaging devices 41, such as a real world camera, an antenna 42, one or more storage devices 44, one or more processors 43 and/or display device 45, such as display device 34 described above, may be provided as part of video encoding system 40.

Устройство-источник 12 и устройство-получатель 14 могут включать в себя любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например, ноутбуки или лэптопы, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, теле-приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потокового видео (например, серверы служб контента или серверы доставки контента), устройства приемника вещания, устройства передатчика вещания и т.п. и могут использовать никакой или любой тип операционной системы. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.Source device 12 and destination device 14 may include any of a wide range of devices, including any type of portable or desktop devices, such as notebooks or laptops, 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 receiver devices, broadcast transmitter devices, and the like. and can use any or 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, the video encoding system 10 illustrated in FIG. 1A is merely an example, and the techniques of the present application may be applied to video encoding systems (eg, video encoding or video decoding) that do not necessarily involve any data transfer 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 in 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 this disclosure are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, a next-generation video coding standard being developed by the Joint Collaboration on Video Coding (JCT-VC) Expert Group. ITU-T Video Coding (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG). One of ordinary skill in the art will appreciate that embodiments of this disclosure are not limited to HEVC or VVC.

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

Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методов настоящей заявки. В примере на фиг.2 видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер декодированных картинок (DPB) 230, блок 260 выбора режима, блок 270 энтропийного кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.Fig. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the methods of the present application. In the example of FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a 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 contour block 220 filter, decoded picture buffer (DPB) 230, mode selection unit 260, entropy encoding unit 270, and 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 восстановления, контурный фильтр 220, буфер декодированных картинок (DPB) 230, блок 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, and mode selection block 260 may be referred to as forming the forward signal path of the encoder 20, while the inverse quantization block 210, inverse transform processing block 212, reconstruction block 214, loop filter 220, buffer decoded picture (DPB) 230, inter prediction block 244 and intra prediction block 254 may be said to form a return signal path of video encoder 20, wherein the return signal path of video encoder 20 corresponds to the signal path of the decoder (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 of 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 to be encoded (particularly in video encoding to distinguish the current picture from other pictures, such as previously encoded and/or decoded pictures of the same video sequences, i.e. video sequences that also contain the current picture).

(Цифровая) картинка является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента картинки) или pel (элемент картинки). Количество выборок в горизонтальном и вертикальном направлении (или оси) массива или картинки определяет размер и/или разрешение картинки. Для представления цвета обычно используются три цветовых компонента, то есть картинка может быть представлена в виде трех массивов выборок или может включать в себя их. В формате RBG или цветовом пространстве картинка содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при видеокодировке каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например, YCbCr, которое содержит компоненту яркости, указываемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), указываемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновой картинке), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, картинка в формате 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 (picture element). 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, that is, the picture can be represented as three arrays of samples or can include them. In RBG format, or color space, a picture contains a corresponding array of red, green, and blue color samples. However, in video encoding, each pixel is typically represented in a luminance and chrominance format or color space, such as YCbCr, which contains a luminance component indicated by Y (sometimes L is also used instead) and two chrominance components (chrominance components) indicated by Cb and Cr. The Y component of luminance (or luma for short) represents the brightness or intensity of the gray level (such as in a halftone picture), while the two components Cb and Cr are chrominance (or chrominance for short). chroma) represent components of chromaticity or color information. Accordingly, a picture in YCbCr format contains an array of luminance samples with luminance sample values (Y) and two arrays of chrominance samples with chrominance values (Cb and Cr). Pictures in RGB format can be converted or converted to YCbCr format and vice versa. This 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) (as per H.265/HEVC and VVC). The picture division unit may be configured to use the same block size for all pictures in 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. Соответственно, блок может, например, содержать массив выборок M × N (M-столбец на N-строку) или массив M × N коэффициентов преобразования.Like picture 17, picture block 203 is 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 luminance array in the case of a monochrome picture 17 or a luminance or chrominance array in the case of a color picture) or three arrays of samples (for example, luminance and two chrominance arrays in the case of a color picture 17) or any other number and/or type of arrays depending on the color format used . 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, for example, contain an M×N array of samples (M-column by N-row) or an M×N array of transform coefficients.

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

Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разделена на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU). Слайс может содержать коллекцию прямоугольных тайлов (мозаичных изображений) или может быть коллекцией строк CTU порядка растра внутри тайла.Embodiments of video encoder 20, as shown in FIG. 2 may further be 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). A slice may contain a collection of rectangular tiles (tiled images) or may be a collection of raster order CTU strings within a tile.

Варианты осуществления видеокодера 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 groups of tiles (also called video tile groups) and/or tiles (also called video tiles), wherein the picture may be divided or encoded using one or more groups of tiles (usually not overlapping), and each group of tiles may contain one or more blocks (such as a CTU) or one or more tiles, where each tile may be rectangular in shape and may contain one or more blocks ( e.g. CTU), 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 area.

Преобразование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 block 206 may be configured to apply DCT/DST integer approximations, such as the transforms defined for H.265/HEVC. 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 transforms, additional scaling factors are applied as part of the transform 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, such as the inverse transform processing unit 312 in the video decoder 30), and the corresponding scaling factors for the forward transform, for example, by the transform processing unit 206, can 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 scalings can 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 predetermined 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 involving 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 bitstream. 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 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 the block 208 quantization. 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 предсказания.A reconstruction block 214 (e.g., an add block or an adder 214) is configured to add a transform block 213 (i.e., a reconstructed residual block 213) with a prediction block 265 to obtain a reconstructed block 215 in the sample domain, for example, by means of an addition, sample per sample, the sample values of the reconstructed residual block 213, and the sample values of the prediction block 265.

ФильтрацияFiltration

Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра может быть сконфигурирован для сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или несколько контурных фильтров, таких как фильтр деблокирования, фильтр с адаптивным смещением (SAO) или один или несколько других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), увеличение резкости, сглаживающий фильтр или коллаборативный фильтр, или любая их комбинация. Хотя блок 220 контурного фильтра показан на фиг. 2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как пост-контурный фильтр. Отфильтрованный блок 221 также может называться отфильтрованным восстановленным блоком 221.Loop filter block 220 (or “loop filter” 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally to filter the reconstructed samples to obtain filtered samples. The edge filter block can be configured to smooth pixel transitions or otherwise improve video quality. The edge filter block 220 may include one or more edge filters, such as a deblocking filter, an adaptive offset filter (SAO), or one or more other filters, such as a two-way filter, an adaptive edge filter (ALF), a sharpening filter, an anti-aliasing filter, or a collaborative filter. filter, or any combination of them. Although 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 adaptive sample 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, той же самой текущей картинки или разных картинок, например, ранее восстановленных картинок, и может предоставлять полные ранее восстановленные, т.е. декодированные, картинки (и соответствующие опорные блоки и выборки) и/или частично восстановленную текущую картинку (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер декодированных картинок (DPB) 230 также может быть сконфигурирован для хранения одного или нескольких нефильтрованных восстановленных блоков 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 block 260 includes a division block 262, an inter prediction block 244, and an intra prediction block 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 more previously decoded pictures, for example, 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 selection block 260 may be configured to determine or select a split for the current block prediction mode (including no split) and 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 recovery of the restored 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. The 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", "minimum", "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 block 262 may be configured to partition block 203 into smaller sections or sub-blocks (which form blocks again), for example, iteratively using quad-tree (QT) partitioning, binary-tree (BT) partitioning, or partitioning by triple tree (TT) or any combination thereof, and to perform prediction for each of the partitions or sub-blocks of the block, wherein the mode selection comprises selecting a tree structure of the partitioned block 203 and the prediction modes are applied to each of the block partitions or sub-blocks.

Далее более подробно поясняется разделение (например, блоком 262 разделения) и обработка предсказания (блоком 244 внешнего предсказания и блоком 254 внутреннего предсказания), выполняемые примерным видеокодером 20.Next, the division (e.g., by division block 262) and prediction processing (by inter prediction block 244 and intra prediction block 254) performed by the exemplary video encoder 20 will be 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 divisions, 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 tree level 0 (hierarchy level 0, depth 0), can be recursively partitioned, for example divided into two or more blocks of the next lower tree level. for example, nodes at tree level 1 (hierarchy level 1, depth 1), where these blocks can again be divided into two or more blocks of the next lower level, for example tree level 2 (hierarchy level 2, depth 2), etc. until the split is completed, for example because a completion criterion is met, such as the maximum tree depth or minimum block size being reached. Blocks that are not further divided are also called leaf blocks or leaf nodes of a tree. A tree that uses a two-partition partition is called a binary tree (BT), a tree that uses a three-partition partition is called a triple-tree (TT), and a tree that uses a four-partition partition is called a quad-tree (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 reference to, for example, HEVC and VVC, a block can either correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) or a transform unit (TU) and/or to corresponding blocks, e.g. a tree block coding block (CTB), coding block (CB), transform block (TB) or prediction block (PB).

Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости и два соответствующих CTB выборок цветности картинки, которая имеет три массива выборок, или CTB выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности картинки, которая имеет три массива выборок, или блок кодирования выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.For example, a coding tree unit (CTU) may be either a CTB of luma samples and two corresponding CTBs of chroma samples of a picture that has three arrays of samples, or a CTB of samples of a monochrome picture or a picture that is encoded using three separate color planes and syntax structures used for encoding samples. Accordingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that dividing a component by the CTB is a division. A coding unit (CU) may be or comprise a luma sample encoding unit and two corresponding chrominance 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 an M×N block of 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 some embodiments, for example, according to HEVC, a coding tree unit (CTU) may be divided into CUs using a quad-tree structure, referred to 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 partitioning type of the PU, the CU can be divided into transformation units (TUs) according to another quad-tree 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 a recent video coding standard currently under development called Versatile Video Coding (VVC), a combined quad-tree and binary tree (QTBT) partition, for example, is used to partition a coding 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 by a quad-tree structure. The leaf nodes of a quad-tree are further separated by a binary tree or ternary (or triple) tree structure. The leaf nodes of a partitioning tree are called coding units (CUs), and this partitioning is used for prediction and transformation processing without any additional partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. Multiple partitions can be used in parallel with the QTBT block structure, such as a ternary tree partition.

В одном примере блок 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 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, such as non-directional modes, such as DC (or average) mode and planar mode, or directional modes, for example, as defined in HEVC, or may contain 67 different intra prediction modes, such as as non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined for VVC.

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

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

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

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

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

Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба не показаны на фиг.2). Блок оценки движения может быть сконфигурирован для приема или получения блока 203 картинки (текущего блока 203 картинки текущей картинки 17) и декодированной картинки 231, или, по меньшей мере, одного или множества ранее восстановленных блоков, таких как восстановленные блоки одной или множества ранее декодированных картинок 231 для оценки движения. В качестве примера видеопоследовательность может содержать текущую картинку и ранее декодированные картинки 231, или, другими словами, текущую картинку и ранее декодированные картинки 231 могут быть частью или формировать последовательность картинок, образующих видеопоследовательность.The inter prediction unit 244 may include a motion estimation (ME) unit and a motion compensation (MC) unit (both not shown in FIG. 2). The motion estimator may be configured to receive or obtain a picture block 203 (the current picture block 203 of the current picture 17) and a decoded picture 231, or at least one or a plurality of previously reconstructed blocks, such as reconstructed blocks of one or a plurality of previously decoded pictures. 231 for motion assessment. As an example, a video sequence may comprise a 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 forming a video sequence.

Кодер 20 может быть сконфигурирован для выбора опорного блока из множества опорных блоков одинаковых или разных картинок из множества ранее декодированных картинок и предоставления опорной картинки (или индекса опорной картинки) и/или смещения (пространственного смещения) между позицией (координатами x, y) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания для блока оценки движения. Это смещение также называется вектором движения (MV). В некоторых реализациях MV может быть дополнительно уточнен как на стороне кодирования, так и на стороне декодирования, чтобы повысить точность предсказания и, в конечном итоге, улучшить производительность сжатия. Кроме того, предсказание, полученное посредством MV или уточненного MV, может быть дополнительно модифицировано или скорректировано с использованием уточнения оптического потока с двунаправленным предсказанием (BPOF), посредством которого предсказание может быть скомпенсировано в случае, когда точное движение существует на уровне пикселей. Технология уточнения вектора движения на стороне декодирования (DMVR) и (BPOF) будет подробно описана позже.Encoder 20 may be configured to select a reference block from a plurality of reference blocks of the same or different pictures from a plurality of previously decoded 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-frame prediction parameters for the motion estimation block. This displacement is also called motion vector (MV). In some implementations, the MV may be further refined on both the encoding and decoding sides to improve prediction accuracy and ultimately improve compression performance. Moreover, the prediction obtained by MV or refined MV can be further modified or corrected using bidirectional prediction optical flow (BPOF) refinement, whereby the prediction can be compensated in the case where fine motion exists at the pixel level. Decoding-side motion vector refinement (DMVR) and (BPOF) technology will be described in detail later.

Блок компенсации движения может быть сконфигурирован для получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 (внешнего) предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число кандидатных блоков предсказания, которые могут использоваться для кодирования блока картинки. После приема вектора движения для PU текущего блока картинки блок компенсации движения может определить положение блока предсказания, на который указывает вектор движения, в одном из списков опорных картинок.The motion compensation block may be configured to receive, for example, receive an inter prediction parameter and perform inter prediction based on or using the inter prediction parameter to obtain an (inter) prediction block 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 accuracy. 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 of the current picture block, the motion compensation unit can determine the position 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 video blocks and slices for use by video decoder 30 when decoding the picture blocks of the 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 coding

Блок 270 энтропийного кодирования сконфигурирован для применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с интервалом вероятности (PIPE) или другого метода или методики энтропийного кодирования) или байпаса (без сжатия) квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения закодированных данных 21 картинки, которые могут выводиться через выход 272, например, в форме кодированного потока 21 битов, так что, например, видеодекодер 30 может принимать и использовать параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.Entropy encoding block 270 is configured to apply, for example, an entropy encoding algorithm or scheme (e.g., variable length coding (VLC) scheme, context adaptive VLC (CAVLC), arithmetic coding scheme, binarization, context adaptive binary arithmetic coding (CABAC) ), based on the syntax of context-adaptive binary arithmetic coding (SBAC), probability interval entropy encoding (PIPE), or other entropy encoding method or technique) or bypass (uncompressed) quantized coefficients 209, inter prediction parameters, intra prediction parameters, parameters loop filter 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 parameters for decoding. The encoded bitstream 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. Video decoder 30 is configured to receive encoded picture data 21 (e.g., encoded bit stream 21), such as encoded by encoder 20, to obtain 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 group of tiles or tile) and associated syntax elements.

В примере на фиг. 3 декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер декодированных картинок (DBP) 330, блок 360 приложения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 20 на фиг.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 (DBP) 330, a mode application block 360, an external block 344 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 opposite of the encoding step described with respect to video encoder 20 in FIG. 2.

Как объяснялось в отношении кодера 20, блока 210 обратного квантования, блока 212 обработки обратного преобразования, блока 214 восстановления, контурного фильтра 220, буфера декодированных картинок (DPB) 230, блока 244 внешнего предсказания и блока 254 внутреннего предсказания также называется формированием «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 210 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных картинок может быть идентичен по функции буферу 230 декодированных картинок. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.As explained 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 244, and the intra prediction unit 254 is also referred to as “embedded decoder” generation. video encoder 20. Accordingly, the inverse quantization unit 310 may be identical in function to the inverse quantization unit 210, the inverse transform processing unit 312 may be identical in function to the inverse transform processing unit 212, the restoration unit 314 may be identical in function to the restoration unit 214, and the loop filter 320. may be identical in function to the loop filter 220, and the decoded picture buffer 330 may be identical in function to the 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 и/или декодированные параметры 366 кодирования, например, любой или все из параметров внешнего предсказания (например, индекс опорной картинки и вектор движения), параметры внутреннего предсказания (например, режим или индекс внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно сконфигурирован для предоставления параметров внешнего предсказания, параметров внутреннего предсказания и/или других элементов синтаксиса блоку 360 приложения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие элементы синтаксиса.Entropy decoding block 304 is configured to parse bitstream 21 (or generally encoded picture data 21) and perform, for example, entropy decoding on encoded picture data 21 to obtain, for example, quantized coefficients 309 and/or decoded encoding parameters 366 , for example, any or all of the inter-prediction parameters (eg, reference picture index and motion vector), intra-prediction parameters (eg, intra-prediction mode or index), transform parameters, quantization parameters, loop filter parameters, and/or other syntax elements. Entropy decoding block 304 may be configured to employ decoding algorithms or schemes corresponding to encoding schemes as described with respect to entropy encoding block 270 of encoder 20. Entropy decoding block 304 may be further configured to provide inter prediction parameters, intra prediction parameters, and/or other syntax elements to mode application block 360 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 для каждого видеоблока в видеослайсе (или тайле или группе тайлов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.An inverse quantization block 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 a block 304 entropy decoding) and apply, based on the quantization parameters, inverse quantization to 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 для того, чтобы получить восстановленные остаточные блоки 313 в области выборок. Восстановленные остаточные блоки 313 также могут именоваться блоками 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 313 in the sample region. The reconstructed residual blocks 313 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 предсказания.A reconstruction block 314 (e.g., an add block or an adder 314) may be configured to add the reconstructed residual block 313 with a 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. The edge filter block 320 may include one or more edge filters, such as a deblocking filter, an adaptive offset filter (SAO), or one or more other filters, such as a two-way filter, an adaptive edge filter (ALF), a sharpener, an anti-aliasing filter, or a collaborative filter. filter, or any combination of them. Although 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, respectively.

Декодер 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 (specifically, the motion compensation module), and the intra prediction block 354 may be identical to the intra prediction block 254 in function and performs division or division decisions and prediction based on division 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). Mode application block 360 may be configured to perform prediction (intra or inter prediction) for each block based on the reconstructed pictures, blocks, or corresponding samples (filtered or unfiltered) to obtain prediction block 365.

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

Блок 360 приложения режима сконфигурирован для определения информации предсказания для блока видео/картинки текущего видеослайса путем анализа векторов движения или связанной информации и других элементов синтаксиса и использования информации предсказания для создания блоков предсказания для текущего видеоблока, который декодируется. Например, блок 360 приложения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннего или внешнего предсказания), используемого для кодирования видеоблоков видеослайса, тип слайса с внешним предсказанием (например, B-слайс, P-слайс или GPB-слайс), информацию о конструкции для одного или нескольких списков опорных картинок для слайса, векторы движения для каждого внешне кодированного видеоблока слайса, статус внешнего предсказания для каждого внешнекодированного видеоблока слайса и другую информацию для декодирования видеоблоков в текущем слайсе. Тот же или подобный подход может быть применен для вариантов осуществления или с их помощью с использованием групп тайлов (например, группы видеотайлов) и/или слайсов (например, видеотайлов) в дополнение или в качестве альтернативы к слайсам (например, видеослайсам), например, видео может быть закодировано с использованием групп тайлов I, P или B и/или талов.Mode application block 360 is configured to determine prediction information for a video/picture block of the current video slice by analyzing motion vectors or related information and other syntax elements and using the prediction information to create prediction blocks for the current video block that is being decoded. For example, mode application 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, the type of inter-prediction slice (e.g., B-slice, P-slice, or GPB slice ), design 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 slice. The same or similar approach can be applied to or with embodiments using groups of tiles (e.g., a group of video tiles) and/or slices (e.g., video tiles) in addition to or as an alternative to slices (e.g., video slices), e.g. video can be encoded using groups of I, P or B tiles and/or tals.

Варианты осуществления видеодекодера 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, as shown in FIG. 3, may be configured to divide and/or decode a picture using groups of tiles (also called tile groups) and/or tiles (also called video tiles), wherein the picture can be divided into or decoded using one or more groups of tiles (usually non-overlapping), and each group of tiles may contain one or more blocks (such as a CTU) or one or more tiles, where each tile may be rectangular in shape and may contain one or more blocks (e.g. CTU), such as full or fractional blocks.

Другие варианты видеодекодера 30 могут использоваться для декодирования закодированных данных 21 картинки. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other embodiments of 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 derived motion vectors of the current block (including, but not limited to, affine mode checkpoint motion vectors, affine mode subblock motion vectors, planar mode motion vectors, ATMVP mode motion vectors, temporary motion vectors, and so on). For example, the value of a motion vector is limited to a predefined range according to the number of bits representing it. If the number of bits of the motion vector representation is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is 16, the range is -32768~32767; if bitDepth is 18, the range is -131072~131071. For example, the value of the derived motion vector (e.g., the MVs of four 4x4 subblocks in one 8x8 block) is limited such that the maximum difference between the integer parts of the four MVs of a 4x4 subblock is no more than N pixels, e.g., no more than 1 pixel . The following description provides two ways to constrain the motion vector according to bitDepth.

Способ 1: удалите старший бит переполнения (старший значащий бит) с помощью следующих операций:Method 1: Remove the most significant overflow bit (most significant bit) using the following operations:

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

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

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

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

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

Например, если значение 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. Two's complement -32769 is 1.0111,1111,1111,1111 (17 bits). The MSB is then discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal 32767), which is the same as the result of applying formulas (1) and (2).

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

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

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

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

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

Способ 2: удаление MSB переполнения посредством усечения значения:Method 2: Removing 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 is the horizontal component of the motion vector of a block or subblock of the image, vy is the vertical component of the motion vector of the block or subblock of the image; 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 block diagram of a video encoding apparatus 400 according to an embodiment of the present disclosure. Video encoding apparatus 400 is suitable for implementing the disclosed embodiments, as described below. 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) и один или несколько приемных блоков (Rx) 420 для приема данных; процессор, логический блок или центральный процессор (ЦП) 430 для обработки данных; один или несколько передающих блоков (Tx) 440 и выходных портов 450 (или выходных портов 450) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.The video encoding device 400 may include input ports 410 (or input ports 410) and one or more receive units (Rx) 420 for receiving data; a processor, logic unit, or central processing unit (CPU) 430 for processing data; one or more transmit units (Tx) 440 and output ports 450 (or output ports 450) for transmitting data; 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 or optical input or output. electrical signals.

Процессор 430 может быть реализован аппаратно и программно. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 может поддерживать связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 может содержать блок 470 кодирования. Блок 470 кодирования реализует раскрытые варианты осуществления, описанные выше и ниже. Например, блок 470 кодирования может реализовывать, обрабатывать, подготавливать или предоставлять различные операции кодирования. Следовательно, включение блока 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы блок 470 кодирования может быть реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.Processor 430 may be implemented in hardware or software. Processor 430 may be implemented as one or more CPU chips, cores (eg, a multi-core processor), FPGA, ASIC, and DSP. Processor 430 may communicate with input ports 410, receiver blocks 420, transmitter blocks 440, output ports 450, and memory 460. Processor 430 may include an encoding block 470. Encoding block 470 implements the disclosed embodiments described above and below. For example, encoding block 470 may implement, process, prepare, or provide various encoding operations. Therefore, the inclusion of the encoding block 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 may be 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 из фиг. 1A согласно примерному варианту осуществления. Fig. 5 is a simplified block diagram of an apparatus 500 that may be used as one or both of the source device 12 and destination device 14 of FIG. 1A according to an exemplary embodiment .

Процессор 502 в аппаратуре 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.The processor 502 in the hardware 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 that currently exists or will be 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 hardware 500 may be read-only memory (ROM) or random access memory (RAM) in an implementation. Memory 504 may be any other suitable type of memory 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, application programs 510 including at least one program that allows 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.The apparatus 500 may also include one or more output devices, such as a display 518. The 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 может состоять из многочисленных шин. Кроме того, вторичное хранилище (не показано) может быть напрямую связано с другими компонентами аппаратуры 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или несколько блоков, таких как несколько карт памяти. Таким образом, аппаратура 500 может быть реализована в самых разнообразных конфигурациях.Although a single bus is depicted here, bus 512 of device 500 may be composed of multiple buses. In addition, secondary storage (not shown) may be directly coupled to other components of hardware 500 or may be accessible over a network and may comprise a single integrated unit, such as a memory card, or multiple units, such as multiple memory cards. Thus, the apparatus 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 a coded bit stream. However, motion vectors may also be refined at the decoder (as well as at the encoder), starting from the initial motion vectors specified in the bitstream. In such a case, for example, the similarity between fragments or blocks of already decoded pixels indicated by the initial motion vectors can be used to improve the accuracy of the initial motion vectors. This motion vector refinement provides the benefit of reducing signaling overhead: the accuracy of the initial motion vector 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 initial motion vectors are transmitted in a bit stream, it may not be possible to represent the initial motion vector with very high accuracy (which would increase the data rate). Therefore, the motion vector refinement process is used to improve the initial motion vector. The initial 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 the motion vectors of which neighboring block is being used by the current block. This prediction mechanism is very effective in reducing the number of bits to represent the initial motion vectors. However, the accuracy of the initial 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 bit stream. 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 image is performed by determining the pattern of the reconstructed samples, defining a search space around the original motion information for the current block, and finding the part of the reference image with the best match to the pattern in the search space. The best-fit 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 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 vector can be determined based on the indication in the bit stream. For example, an index may be reported in the bitstream that indicates a position in a list of possible 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 bit stream are defined as initial motion vectors. In the case of dual prediction, where the outer prediction for the current block is obtained as a weighted combination of predicted sample blocks that are determined according to two motion vectors, let the initial motion vector in the first reference picture in the first reference picture list L0 be denoted as MV0, and the initial motion vector in the second the reference picture in the second reference picture list L1 is designated as MV1.

Используя начальные векторы движения, определяются кандидатные пары векторов движения (MV) на уточнение. Могут быть определены по меньшей мере две кандидатных пары на уточнение. Обычно кандидатные пары векторов движения на уточнение определяются на основе пары начальных векторов движения (MV0, MV1). Кроме того, кандидатные пары MV могут быть определены путем добавления небольших разностей векторов движения к MV0 и MV1. Например, кандидатные пары MV могут включать в себя следующее:Using the initial motion vectors, candidate motion vector (MV) pairs for refinement are determined. At least two candidate pairs for refinement can be identified. Typically, candidate pairs of motion vectors for refinement are determined based on a pair of initial motion vectors (MV0, MV1). Additionally, candidate MV pairs can be 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 integer pixel in the horizontal (or x) direction and an offset of -1 integer pixel in the vertical (or y) direction.

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

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

При двойном предсказании текущего блока два блока предсказания, полученные с использованием соответствующего первого вектора движения списка L0 и второго вектора движения списка L1, объединяются в один сигнал или блок предсказания, что может обеспечить лучшую адаптацию к исходному сигналу, чем с единичным предсказанием, что приводит к меньшему количеству остаточной информации и, возможно, более эффективному сжатию.In dual prediction of the current block, two prediction blocks obtained using the corresponding first list motion vector L0 and second list motion vector L1 are combined into one signal or prediction block, which can provide better adaptation to the original signal than with 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 candidate MV pair are compared with each other based on a similarity metric for each of the candidate MV pairs for refinement. The candidate MV pair leading to the highest similarity is usually selected as refined motion vectors, denoted as MV0' and MV1', that is, the refined motion vector in the first reference picture in the list L0 and the refined motion vector in the second reference picture in the list L1, respectively. In other words, predictions are obtained according to the motion vector of the list L0 and the motion vector of the list L1 of the candidate pair of motion vectors, which are then compared with each other based on a similarity metric. The candidate motion vector pair that has the highest similarity is selected as the refined MV pair.

Обычно выходными данными процесса уточнения являются уточненные MV. Уточненные MV могут быть такими же, как начальные MV, или могут отличаться от начальных MV. В зависимости от того, какая кандидатная пара MV достигает наивысшего подобия, кандидатная пара MV, сформированная начальными MV, также входит в число кандидатных пар MV. Другими словами, если кандидатная пара MV, которая достигает наивысшего подобия, образована начальными MV, уточненные MV и начальные MV равны друг другу.Typically, the output of the refinement process is refined MVs. The refined MVs may be the same as the initial MVs, or they may be different from the initial MVs. Depending on which candidate MV pair achieves the highest similarity, the candidate MV pair formed by the initial MVs is also among the candidate MV pairs. In other words, if the candidate pair of MVs that achieves the highest similarity is formed by the initial MVs, the refined MVs and the initial 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 way 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 candidate MV pair (CMV0, CMV1), in this case, 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) determines the absolute value of the argument a, predSamplesL0 and predSamplesL1 are the prediction block samples obtained in accordance with the candidate MV pair, which is denoted (CMV0, CMV1).

В качестве альтернативы, мера сравнения неподобия может быть получена путем оценки только подмножества выборок в блоке предсказания, чтобы уменьшить количество вычислений. Ниже приведен пример, в котором строки выборок альтернативно включаются в вычисление SAD (оценивается каждая вторая строка).Alternatively, the dissimilarity comparison measure can be obtained by evaluating only a subset of samples in the prediction block to reduce the amount of computation. Below is an example 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) which is publicly available under http://phenix.it-sudparis.eu/jvet/. Раздел “8.4.3 Decoder side motion vector refinement process» в документе иллюстрирует уточнение вектора движения.One illustrative example of motion vector refinement is explained in 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 under 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 a sample encoding block that exceeds a certain predetermined width and/or predetermined height in the luminance samples into subblocks of samples. , which are less than or equal to a predefined width and a predefined height in luminance. The refined MV pair for each subblock in a divided encoding 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 указывает смещение между текущим блоком выборок и опорной областью с повторной выборкой, и это смещение может указывать на дробную позицию в горизонтальном и вертикальном направлениях из целочисленной сетки восстановленных опорных выборок. Обычно выполняется 2-мерная интерполяция целочисленной сетки восстановленной опорной выборки для получения значений выборки в дробном положении смещения выборки. Процесс получения предсказанных выборок из восстановленных опорных картинок с использованием кандидатной пары MV может осуществляться одним из следующих способов:Each MV of an initial MV pair may 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 2D integer interpolation of the reconstructed reference sample is performed to obtain sample values at the fractional position of the sample offset. The process of obtaining predicted samples from reconstructed reference pictures using a candidate MV pair can be carried out in one of the following ways:

Округлите дробную часть пары начальных MV до ближайшего целочисленного положения и получите целочисленные значения сетки восстановленных опорных картинок.Round the fractional part of the pair of initial MVs to the nearest integer position 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 pair of initial MVs.

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

Хотя кандидатные пары MV могут иметь произвольное смещение субпикселей относительно пары начальных MV, в некоторых вариантах осуществления для простоты поиска кандидатной пары MV выбираются с целочисленным расстоянием между пикселями или целочисленным смещением относительно пары начальных MV. Такие кандидатные пары MV с целочисленным пиксельным расстоянием относительно пары начальных MV также могут использоваться на первом этапе процесса уточнения вектора движения (MVR), так называемом этапе уточнения целочисленного расстояния MVR. В таких случаях предсказанные выборки по всем кандидатным парам MV могут быть получены путем выполнения предсказания для блока выборок вокруг пары начальных MV, чтобы охватить все позиции уточнения вокруг пары начальных MV.Although candidate MV pairs can have an arbitrary subpixel offset relative to the seed MV pair, in some embodiments, for ease of finding a candidate MV pair, MVs are selected with an integer inter-pixel distance or an integer offset relative to the seed MV pair. Such candidate MV pairs with an integer pixel distance relative to the seed MV pair can also be used in the first stage of the motion vector refinement (MVR) process, the so-called integer MVR distance refinement stage. In such cases, predicted samples over all candidate MV pairs can be obtained by performing prediction on a block of samples around the seed MV pair to cover all refinement positions around the seed MV pair.

В некоторых вариантах осуществления, после того, как значения издержки неподобия во всех кандидатных парах MV на целочисленном расстоянии (целочисленное смещение) от пары начальных MV были оценены, дополнительные кандидатные пары MV на расстоянии смещений субпикселя от позиции наилучшего значения издержек могут быть добавлены. Этот второй этап может выполняться как этап уточнения дробного расстояния процесса MVR. Предсказанные выборки могут быть получены для каждой из этих позиций с использованием одного из способов, описанных выше, и издержки неподобия оценивается и сравнивается друг с другом, чтобы получить позицию с наименьшими издержками неподобия. В некоторых других вариантах осуществления, чтобы избежать этого дорогостоящего в вычислительном отношении процесса предсказания для каждой позиции расстояния субпикселя вокруг целочисленной позиции расстояния с наименьшими издержками, оцененные значения издержек целочисленного расстояния сохраняются, а поверхность параметрической ошибки устанавливается вблизи наилучшего целочисленного расстояния. Затем аналитически вычисляется минимум этой поверхности ошибки и используется как позиция с минимальным неподобием. В таких случаях говорят, что значение издержек неподобия выведено из вычисленных значений стоимости целочисленного расстояния.In some embodiments, after the dissimilarity cost values in all candidate MV pairs at an integer distance (integer offset) from the pair of initial MVs have been estimated, additional candidate MV pairs at a distance of subpixel offsets from the position of the best cost value can be added. This second step can be performed as a fractional distance refinement step of the MVR process. Predicted samples can be obtained for each of these positions using one of the methods described above, and the dissimilarity costs are estimated and compared with each other to obtain the position with the lowest dissimilarity cost. In some other embodiments, to avoid this computationally expensive process of predicting for each subpixel distance position around the least-overhead integer distance position, the estimated integer distance overhead values are stored and the parametric error surface is set near 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 value of the dissimilarity cost is said to be derived from the calculated values of the integer distance cost.

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

Расстояния в количестве картинок (при выборке с одинаковой частотой кадров) или различия в счетчике порядка картинок (POC) от текущей картинки до двух опорных картинок, используемых для двойного предсказания блока кодирования выборок, равны и попадают на противоположные стороны текущей картинки.The distances in number of pictures (when sampling at the same frame rate) or differences in picture order counter (POC) from the current picture to the two reference pictures used for the double prediction of the sample encoding block are equal and fall on opposite sides of the current picture.

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

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

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

При двойном предсказании 2 внешних предсказания получаются согласно двум векторам движения, затем предсказания объединяются путем применения взвешенного усреднения. Комбинированное предсказание может привести к уменьшению остаточной энергии, поскольку шум квантования в двух опорных фрагментах или блоках удаляется, тем самым обеспечивая более высокую эффективность кодирования, чем единичное предсказание. Взвешенная комбинация при двойном предсказании может выполняться согласно следующему уравнению:In dual 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 two reference tiles or blocks is removed, thereby providing higher coding efficiency than single prediction. Weighted combination in dual prediction can be performed according to the following equation:

Двойное предсказание= предсказание1 * W1+предсказание2 * W2+K,Double prediction=prediction1*W1+prediction2*W2+K,

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

Двойное предсказание=(предсказание1+предсказание2)/2Double prediction=(prediction1+prediction2)/2

где W1 и W2 равны 1/2, а K равно 0.where W1 and W2 are equal to 1/2, and K is equal to 0.

Целью уточнения оптического потока является повышение точности двойного предсказания. Оптический поток - это картина видимого движения объектов изображения между двумя последовательными кадрами. Оптический поток вызывается движением объекта и/или камеры. Процесс уточнения оптического потока повышает точность двойного предсказания за счет применения уравнения оптического потока (решения уравнения оптического потока).The purpose of optical flow refinement is to improve the accuracy of dual 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 the object and/or camera. The optical flow refinement process improves the accuracy of dual 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 corresponds to the time dimension). The object represented by the pixel moves a distance (dx, dy) in the next frame taken after time dt. Assuming that 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+dtI (x, y, t)== I (x+ dx , y+ dy , t+dt

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

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

= 0 = 0

где и - горизонтальный и вертикальный градиенты пространственной выборки в позиции (x, y), производная по времени в позиции (x, y), а vx=dx/dt and vy=dy/dt представляет собой скорость перемещения.Where And - horizontal and vertical gradients of spatial sampling at position (x, y), the derivative with respect to time at position (x, y), and v x =dx/dt and v y =dy/dt represents the speed of movement.

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

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

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

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

3. Вычисление перемещения (dx, dy) пикселей или группы пикселей, которое минимизирует ошибку между двумя опорными фрагментами или блоками с использованием уравнения оптического потока.3. Calculate the displacement (dx, dy) of pixels or a group of pixels that minimizes the error between two supporting fragments or blocks using the optical flow equation.

где I(0) соответствует значению выборки в первом предсказании, I(1) - значение выборки во втором предсказании, vx и vy - скорости перемещения, вычисленные в направлениях x и y, а ∂I(0)/ ∂x, ∂I(0)/ ∂y , ∂I(1)/ ∂x и ∂I(1)/ ∂y - градиенты в направлениях x и y в первом и втором предсказаниях соответственно. и обозначают временные расстояния от текущей картинки в порядке отображения до соответствующих опорных картинок, где получают первое предсказание и второе предсказание. Некоторые подходы минимизируют сумму квадратов ошибок, в то время как некоторые подходы минимизируют сумму абсолютных ошибок.where I(0) corresponds to the sample value in the first prediction, I(1) is the sample value in the second prediction, vx and vy - speed displacements calculated in the x and y directions, and ∂I(0)/ ∂x, ∂I(0)/ ∂y, ∂I(1)/ ∂x and ∂I(1)/ ∂y are the gradients in the x and y directions in the first and second predictions, respectively. And denote the time distances from the current picture in display order to the corresponding reference pictures where the first prediction and the second prediction are obtained. 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 the one below:

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

Градиенты выборок могут быть получены по следующим формулам:Sample gradients can be obtained using the following formulas:

∂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 motion for each pixel, motion is estimated for a group of pixels. In some examples, to calculate improved dual 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.5.6.4 «Bidirectional optical flow prediction process» документа JVET-N1001, Versatile Video Coding (Draft 5), which is publicly available under http://phenix.it-sudparis.eu/jvet/, ссылка на который приведена ниже для справки.One example of optical flow refinement is explained in section 8.5.6.4 "Bidirectional optical flow prediction process" of JVET-N1001, Versatile Video Coding (Draft 5), which is publicly available under http://phenix.it-sudparis.eu/jvet/ , which is linked below for your reference.

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования,two variables nCbW and nCbH, defining the width and height of the current encoding block,

два (nCbW+2) x (nCbH+2) массива выборок предсказания яркости predSamplesL0 и predSamplesL1,two (nCbW+2) x (nCbH+2) arrays of brightness prediction samples predSamplesL0 and predSamplesL1,

флаги использования списка предсказания predFlagL0 и predFlagL1,prediction list usage flags predFlagL0 and predFlagL1,

опорные индексы refIdxL0 и refIdxL1,reference indexes refIdxL0 and refIdxL1,

флаги bdofUtilizationFlag[ xIdx ][ yIdx ] использования двунаправленного оптического потока с xIdx = 0..( nCbW >> 2 ) − 1, yIdx = 0..( nCbH >> 2 ) – 1.flags bdofUtilizationFlag[ xIdx ][ yIdx ] for using bidirectional optical flow with xIdx = 0..( nCbW >> 2 ) − 1, yIdx = 0..( nCbH >> 2 ) − 1.

Выходными данными этого процесса является pbSamples массива (nCbW) x (nCbH) значений выборки предсказания яркости.The output of this process is pbSamples of an array of (nCbW) x (nCbH) brightness prediction sample values.

Переменные bitDepth, shift1, shift2, shift3, shift4, offset4 и mvRefineThres выводятся следующим образом:The bitDepth, shift1, shift2, shift3, shift4, offset4 and mvRefineThres variables are output as follows:

Переменная bitDepth устанавливается равной BitDepthY, то есть битовой глубине компонента яркости.The bitDepth variable is set equal to BitDepthY, then is the bit depth of the luma component.

Переменная shift1 устанавливается равной Max (6, bitDepth - 6).The shift1 variable is set to Max(6, bitDepth - 6).

Переменная shift2 устанавливается равной Max (4, bitDepth - 8).The shift2 variable is set to Max(4, bitDepth - 8).

Переменная shift3 устанавливается равной Max (1, bitDepth - 11).The shift3 variable is set to Max(1, bitDepth - 11).

Переменная shift4 устанавливается равной Max (3, 15 - bitDepth), а переменная offset4 устанавливается равной 1  <<  ( shift4 − 1 ).The shift4 variable is set to Max(3, 15 - bitDepth) and the offset4 variable is set to 1  << (shift4 − 1).

– Переменная mvRefineThres устанавливается равной 1 << Max( 5, bitDepth − 7 ).– The mvRefineThres variable is set to 1 << Max(5, bitDepth − 7).

Для xIdx = 0..( nCbW >> 2 ) − 1 и yIdx = 0..( nCbH >> 2 ) − 1 применяется следующее:For xIdx = 0..( nCbW >> 2 ) − 1 and yIdx = 0..( nCbH >> 2 ) − 1 the following applies:

Переменная xSb устанавливается равной (( xIdx << 2) + 1, а ySb устанавливается равной ( yIdx << 2 ) + 1.The variable xSb is set to (( xIdx << 2) + 1 and ySb is set to ( yIdx << 2) + 1.

Если bdofUtilizationFlag [xIdx] [yIdx] равно FALSE, для x=xSb - 1..xSb+2, y=ySb - 1 .. ySb+2 значения выборки предсказания для текущего субблока выводятся следующим образом:If bdofUtilizationFlag [xIdx] [yIdx] is FALSE, for x=xSb - 1..xSb+2, y=ySb - 1 .. ySb+2, the prediction sample values for the current subblock are output as follows:

pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset4 +
predSamplesL1[ x + 1 ][ y + 1 ] )  >>  shift4 )
pbSamples[ x ][ y ] = Clip3( 0, ( 2 bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset4 +
predSamplesL1[ x + 1 ][ y + 1 ] ) >> shift4 )

В противном случае (bdofUtilizationFlag [xIdx] [yIdx] равно TRUE) значения выборки предсказания текущего субблока выводятся следующим образом:Otherwise (bdofUtilizationFlag [xIdx] [yIdx] is TRUE), the prediction sample values of the current subblock are output as follows:

Для x=xSb - 1..xSb+4, y=ySb - 1..ySb+4 применяются следующие упорядоченные шаги:For x=xSb - 1..xSb+4, y=ySb - 1..ySb+4 the following ordered steps apply:

1. Положения (hx, vy ) для каждого из соответствующих позиций выборки (x, y) внутри массивов выборок предсказания выводятся следующим образом:1. Positions (hx, vy ) for each from the corresponding sample positions (x, y) within the sample arrays, predictions are derived as follows:

hx=Clip3 (1, nCbW, x)hx=Clip3 (1, nCbW, x)

vy=Clip3 (1, nCbH, y)vy=Clip3 (1, nCbH, y)

2. Переменные gradientHL0 [x] [y], gradientVL0 [x] [y], gradientHL1 [x] [y] и gradientVL1 [x] [y] выводятся следующим образом:2. The variables gradientHL0 [x] [y], gradientVL0 [x] [y], gradientHL1 [x] [y] and gradientVL1 [x] [y] are output as follows:

gradientHL0[ x ][ y ]  =  (predSamplesL0[ hx + 1 ][vy] − predSampleL0[ hx − 1 ][ v] ) >> shift1gradientHL0[ x ][ y ] = (predSamplesL0[ h x + 1 ][v y ] − predSampleL0[ h x − 1 ][ v y ] ) >> shift1

gradientVL0[ x ][ y ]  =   (predSampleL0[ hx ][ vy + 1 ] − predSampleL0[ h][vy − 1 ] ) >> shift1gradientVL0[ x ][ y ] = (predSampleL0[ h x ][ v y + 1 ] − predSampleL0[ h x ][v y − 1 ] ) >> shift1

gradientHL1[ x ][ y ]  =  (predSamplesL1[ hx + 1 ][vy] − predSampleL1[ hx − 1 ][ v] ) >> shift1gradientHL1[ x ][ y ] = (predSamplesL1[ h x + 1 ][v y ] − predSampleL1[ h x − 1 ][ v y ] ) >> shift1

gradientVL1[ x ][ y ]  =   (predSampleL1[ hx ][ vy + 1 ] − predSampleL1[ h][vy − 1 ] ) >> shift1gradientVL1[ x ][ y ] = (predSampleL1[ h x ][ v y + 1 ] − predSampleL1[ h x ][v y − 1 ] ) >> shift1

3. Переменные diff [x] [y], tempH [x] [y] и tempV [x] [y] выводятся следующим образом:3. The variables diff [x] [y], tempH [x] [y] and tempV [x] [y] are output as follows:

diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) − ( predSamplesL1[ hx ][ vy ] >> shift2 )diff[ x ][ y ] = (predSamplesL0[ h x ][ v y ] >> shift2 ) − ( predSamplesL1[ h x ][ v y ] >> shift2 )

tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ]) >> shift3

tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ]) >> shift3

Переменные sGx2, sGy2, sGxGy, sGxdI и sGydI выводятся следующим образом:The variables sGx2, sGy2, sGxGy, sGxdI and sGydI are output as follows:

sGx2 = ΣiΣj( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) с i, j = −1..4sGx2 = Σ i Σ j ( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) with i, j = −1..4

sGy2 = ΣiΣj( tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) с i, j = −1..4sGy2 = Σ i Σ j ( tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) with i, j = −1..4

sGxGy = ΣiΣj( tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) с i, j  −1..4sGxGy = Σ i Σ j ( tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) with i, j −1..4

sGxGym = sGxGy >> 12 sGxGy m = sGxGy >> 12

sGxGys =  sGxGy & ( ( 1 << 12 ) − 1 ) sGxGy s = sGxGy & ( ( 1 << 12 ) − 1 )

sGxdI = ΣiΣj( −tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) с i, j = −1..4sGxdI = Σ i Σ j ( −tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) with i, j = −1..4

sGydI = ΣiΣj( −tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) с i, j = −1..4sGydI = Σ i Σ j ( −tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) with i, j = −1..4

Смещения по горизонтали и вертикали текущего субблока выводятся как:The horizontal and vertical offsets of the current subblock are output as:

vx = sGx2 > 0  ?  Clip3( −mvRefineThres, mvRefineThres, −( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) )  :  0v x = sGx2 > 0 ? Clip3( −mvRefineThres, mvRefineThres, −( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) : 0

vy = sGy2 > 0  ?  Clip3( −mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) – v y = sGy2 > 0 ? Clip3( −mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) –

( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ) ) )  :  0( ( v x * sGxGy m ) << 12 + v x * sGxGy s ) >> 1 ) >> Floor( Log2( sGx2 ) ) : 0

Для x=xSb - 1..xSb+2, y=ySb - 1..ySb+2 значения выборки предсказания текущего субблока выводятся следующим образом:For x=xSb - 1..xSb+2, y=ySb - 1..ySb+2, the prediction sample values of the current subblock are output as follows:

bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] − gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 )bdofOffset = Round( ( v x * ( gradientHL1[ x + 1 ][ y + 1 ] − gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 )

+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] − gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )+ Round( ( v y * (gradientVL1[ x + 1 ][ y + 1 ] − gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )

[Операция Round() определена для ввода с плавающей запятой. Операция Round() здесь может быть опущена.][The Round() operation is defined for floating point input. The Round() operation may be omitted here.]

pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ]  + offset4 + predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset )  >>  shift4 ) pbSamples[ x ][ y ] = Clip3( 0, ( 2 bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset4 + predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset ) >> shift4)

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

Технические задачи, которые рассматриваются в раскрытииTechnical problems addressed in the disclosure

В версии принятого в настоящее время BPOF блок кодирования разделен на субблоки, чтобы уменьшить объем памяти для BPOF и позволить установить конвейер уровня субблока в конструкциях оборудования. Любая единица кодирования с шириной больше 16 разделяется по горизонтали с шириной субблока 16. Любая единица кодирования с высотой более 16 разделяется по вертикали с высотой субблока 16.In the version of the currently accepted BPOF, the encoding block is divided into subblocks to reduce the memory footprint of BPOF and allow the installation of a subblock level pipeline in hardware designs. Any coding unit with a width greater than 16 is split horizontally with a subblock width of 16. Any coding unit with a height greater than 16 is split vertically with a subblock height of 16.

Градиенты выборок требуются для всех позиций выборок в блоке 4×4 (как описано в разделе уровня техники в отношении BPOF) для вычисления оптического потока и для применения коррекции на основе вычисленного оптического потока. Для получения градиентов выборки 4×4 требуются значения расширенной выборки для того и другого, причем опорные точки выходят за рамки значений выборки 4×4. При использовании фильтра [-1 0 1] для вычисления градиентов в каждой опорной точке требуется одно значение расширенной выборки по всему блоку 4×4. Другими словами, для градиентов выборок 4×4 требуется область выборок 6×6 (за исключением четырех угловых выборок области 6×6).Sample gradients are required for all sample positions in a 4x4 block (as described in the prior art section regarding BPOF) to calculate optical flow and to apply correction based on the calculated optical flow. To obtain 4x4 sampling gradients, extended sampling values are required for both, with reference points extending beyond the 4x4 sampling values. When using the [-1 0 1] filter, computing gradients at each reference point requires one oversampled value across the entire 4x4 block. In other words, 4x4 sample gradients require a 6x6 sample area (except for the four corner samples of the 6x6 region).

На уровне субблока субблок размера M x N требует (M+2) x (N+2) значений выборки для вычисления градиентов выборки для позиций выборки M x N. Чтобы сохранить низкую сложность, в версии принятого в настоящее время BPOF значения расширенной выборки (т. е. позиции выборки, которые выходят за пределы M x N позиций выборки, соответствующих субблоку) не получаются посредством интерполяции с компенсацией движения соответствующих опорных выборок. Вместо этого получают позицию расширенной выборки с точностью до субпикселя в каждой опорной картинке, а дробные части в горизонтальном и вертикальном направлениях игнорируются, чтобы получить соответствующее значение целочисленной сетки восстановленной опорной позиции выборки, в каждой опорной точке.At the subblock level, a subblock of size M x N requires (M+2) x (N+2) sample values to compute sampling gradients for M x N sample positions. To keep complexity low, the version of currently accepted BPOF has extended sampling values (t e. sample positions that extend beyond the M x N sample positions corresponding to the subblock) are not obtained by motion-compensated interpolation of the corresponding reference samples. Instead, the extended sample position is obtained with subpixel precision in each reference picture, and fractional parts in the horizontal and vertical directions are ignored to obtain the corresponding integer grid value of the reconstructed reference sample position, at each reference point.

Эти значения расширенной выборки используются при вычислении градиентов граничных выборок в каждой опорной точке. Поскольку при вычислении оптического потока для 4×4 используются значения градиента выборки и значения выборки позиций выборки 6×6 с центром на 4×4, значение градиента позиции расширенной выборки устанавливается равным значению градиента выборки ближайшей выборки границы субблока. После того, как значения расширенной выборки, полученные из восстановленных значений позиции опорной выборки целочисленной сетки были использованы для вычисления градиента границы, значение выборки некоторой расширенной выборки устанавливается равным значению выборки ближайшей выборки границы субблока.These extended sample values are used to calculate the boundary sample gradients at each reference point. Since the optical flow calculation for 4x4 uses the sample gradient values and the sample position sample values of 6x6 centered on 4x4, the position gradient value of the extended sample is set equal to the sample gradient value of the nearest sub-block boundary sample. After the extended sample values obtained from the reconstructed integer grid reference sample position values have been used to calculate the boundary gradient, the sample value of some extended sample is set equal to the sample value of the nearest subblock boundary sample.

Этот аспект удаления дробной части в горизонтальном и вертикальном направлениях позиции выборки для получения значения опорной выборки, восстановленной по целочисленной сетке, для расширенной выборки вносит небольшие потери сжатия по сравнению с выполнением 2-мерной разделяемой K-отводной интерполяции с заполненными выборками, принимая самое близкое значение граничной выборки, как показано в JVET-M0487.This aspect of removing the fractional part in the horizontal and vertical directions of the sample position to obtain the value of the reference sample reconstructed from the integer grid for the extended sample introduces a small compression loss compared to performing 2D separable K-tap interpolation with the filled samples taking the closest value boundary sampling as shown in JVET-M0487.

Предлагаемый способSuggested method

В этом раскрытии изобретения предлагается способ, который сохраняет аспект низкой сложности получения значения расширенной выборки, в то же время почти исключающий потери кодирования, вызванные удалением дробных горизонтальных и вертикальных частей.This disclosure provides a method that retains the low complexity aspect of obtaining an extended sample value while substantially eliminating coding losses caused by removing fractional horizontal and vertical portions.

В частности, вместо игнорирования дробных горизонтальных и вертикальных смещений позиции расширенной выборки в каждой восстановленной сетке опорных выборок, дробные смещения используются для выполнения операции округления как в горизонтальном, так и в вертикальном направлениях, чтобы идентифицировать ближайшую целочисленную позицию выборки в соответствующей целочисленной сетке восстановленного опорного кадра. Затем значение выборки в такой идентифицированной позиции присваивается расширенной выборке.Specifically, rather than ignoring the fractional horizontal and vertical offsets of the extended sample position in each reconstructed reference sample grid, the fractional offsets are used to perform a rounding operation in both the horizontal and vertical directions to identify the nearest integer sample position in the corresponding integer grid of the reconstructed reference frame. . The sample value at such identified position is then assigned to the extended sample.

В общем, предлагаемый способ предсказания двунаправленного оптического потока на основе значения выборки из позиции выборки, принадлежащей расширенной области предсказанного блока, используемой в предсказании двунаправленного оптического потока текущего блока, может быть реализован следующими этапами, как показано на рис. 8:In general, the proposed bidirectional optical flow prediction method based on a sample value from a sampling position belonging to the extended area of the predicted block used in bidirectional optical flow prediction of the current block can be implemented in the following steps, as shown in Fig. 8:

Этап 1310, получение вектора движения (MV) текущего блока;Step 1310, obtaining a motion vector (MV) of the current block;

Этап 1320, получение позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV;Step 1320, obtaining the position of the subpixel sample in the expanded region of the predicted block in the reference picture based on the MV;

При этом расширенная область предсказанного блока в опорной картинке основана на MV. В частности, с использованием MV блок предсказания со смещением, указанным MV как ссылка на совместно размещенный блок, соответствующий текущему блоку, может быть найден. Расширенная область - это область, которая включает в себя по меньшей мере одну строку/столбец пикселей, смежных с блоком предсказания и окружающих/охватывающих его. Расширенная область может рассматриваться как область дополнения, которая окружает блок предсказания в опорной картинке и используется, например, для применения фильтров интерполяции K-отводов и/или вычисления градиентов выборки с 3 отводами на границе блока.Here, the expanded area of the predicted block in the reference picture is based on the MV. In particular, using the MV, a prediction block at an offset specified by the MV as a reference to a co-located block corresponding to the current block can be found. An extended region is an area that includes at least one row/column of pixels adjacent to and surrounding/encompassing the prediction block. The extended region can be thought of as a padding region that surrounds a prediction block in a reference picture and is used, for example, to apply K-tap interpolation filters and/or calculate 3-tap sampling gradients at a block boundary.

Этап 1330, обработка полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке; иStep 1330, processing the obtained sub-pixel sampling position to obtain an integer pixel sampling position in the reference picture; And

Этап 1340, выполнение предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.Step 1340, performing a bidirectional optical flow prediction by referring to a reference sample value at the obtained integer sample position of pixels in the reference picture.

Следующие ниже варианты осуществления иллюстрируют, как этот способ может быть реализован. The following embodiments illustrate how this method can be implemented.

Вариант 1 осуществления:Option 1:

Пусть верхняя левая выборка текущего субблока размером M x N выборок, для которых выполняется двойное предсказание с BPOF/BDOF, расположена в (sb_start_x, sb_start_y). Пусть (mvx0, mvy0) будет MV с точностью до 1/16 пикселя для текущего субблока относительно первого опорного кадра L0, а (mvx1, mvxy1) будет MV с точностью до 1/16 пикселя для текущего субблока относительно второго опорного кадра L1.Let the top left sample of the current subblock of size M x N samples for which dual prediction with BPOF/BDOF is performed be located at (sb_start_x, sb_start_y). Let (mvx0, mvy0) be the MV with accurate to 1/16 pixel for the current subblock relative to the first reference frame L0, and (mvx1, mvxy1) will be MV with accuracy up to 1/16 pixel for the current subblock relative to the second reference frame L1.

Позиция с точностью до 1/16 пикселя в L0, соответствующая левой верхней позиции текущего субблока в L0, задается как ((sb_start_x << 4) + mvx0, (sb_start_y << 4) + mvy0). Позиция с точностью до 1/16 пикселя в L1, соответствующая левой верхней позиции текущего субблока в L0, задается как ((sb_start_x << 4) + mvx1, (sb_start_y << 4) + mvy1). Понятно, что могут использоваться различные субпиксельные точности, такие как полупиксель, четверть пикселя или 1/8 пикселя, при этом верхняя левая позиция текущих субблоков определяется путем применения соответствующего сдвига влево на 1 , 2 или 3 соответственно.Position with precision to 1/16 pixel in L0, corresponding to the top left position of the current subblock in L0, is given by ((sb_start_x << 4) + mvx0, (sb_start_y << 4) + mvy0). Position with precision to 1/16 pixel in L1, corresponding to the top left position of the current subblock in L0, is given as ((sb_start_x << 4) + mvx1, (sb_start_y << 4) + mvy1). It will be appreciated that various subpixel accuracies may be used, such as half pixel, quarter pixel or 1/8 pixel, with the top left position of the current subblocks determined by applying an appropriate left shift of 1, 2, or 3 respectively.

Для позиций M x N в опорных кадрах L0 и L1, соответствующих субблоку, 2-мерная разделяемая интерполяция с компенсацией движения по K-отводам выполняется в соответствующем опорном кадре на основе точности субпикселя, например, 1/16 , соответствующей позиции выборки и используемой в качестве предсказанных значений выборки, которые используются в процессе BDOF для вычисления градиентов выборки.For M x N positions in reference frames L0 and L1 corresponding to a subblock, 2D separable motion-compensated K-tap interpolation is performed on the corresponding reference frame based on the subpixel precision, e.g. 1/16, corresponding sample position and used as predicted sample values that are used in the BDOF process to calculate sample gradients.

Чтобы получить предсказанные значения выборки для оставшихся расширенных соответствующих позиций выборки, которые выходят за пределы центральных позиций выборки M x N в блоке (M+2) x (N+2) позиций выборки с целью вычисления градиента граничной выборки субблока M x N, выполняется следующая процедура (для общей точности выборки субпикселей):To obtain the predicted sample values for the remaining extended corresponding sample positions that extend beyond the central M x N sample positions in a block of (M+2) x (N+2) sample positions for the purpose of calculating the boundary sample gradient of the M x N subblock, the following is performed procedure (for overall subpixel sampling accuracy):

Пусть x_spel_pos будет горизонтальной точной позицией выборки субпикселей, а y_spel_pos будет вертикальной точной позицией выборки субпикселей соответственно позиции расширенной выборки. Значение выборки для этой позиции расширенной выборки получается как восстановленное значение опорной выборки в позиции (x_pos, y_pos), вычисляемое следующим образом:Let x_spel_pos be the horizontal fine subpixel sampling position and y_spel_pos be the vertical fine subpixel sampling position corresponding to the extended sampling position. The sample value for this extended sample position is obtained as the reconstructed value of the reference sample at position (x_pos, y_pos), calculated as follows:

x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_valx_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val

y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_valy_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val

где shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя и 1/16 пикселя, shift_val равны 1, 2, 3 и 4 соответственно.where shift_val is chosen according to the subpixel sampling precision used. For subpixel sampling precision of half pixel, quarter pixel, 1/8 pixel and 1/16 pixels, shift_val are 1, 2, 3 and 4 respectively.

Благодаря этому процессу округления позиции субпикселя в горизонтальном и вертикальном направлениях граничные градиенты становятся более точными, как это видно на рисунках 6 и 7.Through this process of rounding the subpixel position in the horizontal and vertical directions, the boundary gradients become more accurate, as can be seen in Figures 6 and 7.

На фиг.6 показано, из какой позиции в опорной картинке выбирается значение пикселя. На диаграмме (A), показывающей уровень техники, в качестве MV, указывающего на дробную позицию в опорных картинках, дробная часть отбрасывается, и только целая часть используется для выбора значения пикселя. Например, для MV (4, 0), MV (9, 0), которые находятся в формате Q4, позиция (0, 0) в опорной картинке используется для выбора значения пикселя (опорная выборка). Напротив, на диаграмме (B), согласно настоящему раскрытию, дробная часть рассматривается для округления до ближайшего целого числа, которое в конечном итоге используется для выбора значения пикселя. Например, для MV (4, 0), MV (9, 0), которые находятся в формате Q4, позиция (0, 0) и позиция (16, 0), соответственно, в опорной картинке используются для выбора соответствующего значения пикселей, которые могут значительно повысить точность выбора опорной выборки.FIG. 6 shows from which position in the reference picture the pixel value is selected. In the diagram (A) showing the prior art, as an MV indicating a fractional position in reference pictures, the fractional part is discarded and only the integer part is used to select a pixel value. For example, for MV(4, 0), MV(9, 0), which are in Q4 format, the position (0, 0) in the reference picture is used to select the pixel value (reference sample). In contrast, in diagram (B), according to the present disclosure, the fractional part is considered for rounding to the nearest integer, which is ultimately used to select the pixel value. For example, for MV (4, 0), MV (9, 0), which are in Q4 format, position (0, 0) and position (16, 0), respectively, in the reference picture are used to select the corresponding value of the pixels that can significantly improve the accuracy of reference sample selection.

На фиг. 7B показан описанный способ определения позиции опорной выборки целочисленной сетки на основе позиции выборки точности субпикселя (с точностью до субпикселя)(т. е. 1/16 пикселя). Можно видеть, что в горизонтальном и вертикальном направлениях ближайшая целочисленная позиция выборки выбирается на основе (половинного) округления горизонтальной и вертикальной составляющих позиции. Таким образом, смещения субпиксельной точности от (i - 8/16) до (i+7/16) в горизонтальном направлении и от (j - 8/16) до (j+7/16) в вертикальном направлении используют ( i, j) как ближайшую целочисленную позицию выборки. По сравнению с этим рис. 7A иллюстрирует проблему с выбором целочисленной позиции выборки посредством усечения, где точное смещение субпикселя от i до (i+15/16) по горизонтали и j до (j+15/16) в вертикальном направлении используют (i, j) как целочисленную позицию выборки.In fig. 7B illustrates a described method for determining the position of an integer grid reference sample based on the position of a subpixel precision (subpixel accurate) sample position (i.e., 1/16 pixel). It can be seen that in the horizontal and vertical directions, the nearest integer sample position is selected based on (half) rounding of the horizontal and vertical components of the position. Thus, subpixel precision offsets from (i - 8/16) to (i+7/16) in the horizontal direction and from (j - 8/16) to (j+7/16) in the vertical direction use ( i, j ) as the nearest integer sample position. Compared to this Fig. 7A illustrates a problem with selecting an integer sample position via clipping, where the exact subpixel offset from i to (i+15/16) in the horizontal direction and j to (j+15/16) in the vertical direction uses (i, j) as the integer sample position .

В позиции выборки левой границы блока M x N градиент выборки горизонтальной границы вычисляется путем взятия разницы между значением выборки позиции справа (которая вычисляется с использованием 2-мерной разделяемой интерполяции K-отвода) и значение выборки позиции расширенной выборки слева от нее (которой присваивается округленное ближайшее восстановленное значение опорной выборки, как описано выше). Точно так же в позиции правой границы выборки блока M x N градиент выборки по горизонтали вычисляется путем взятия разницы между значением выборки позиции справа (которой присваивается округленное ближайшее восстановленное значение опорной выборки, как описано выше) и примерное значение позиции слева от него (которое вычисляется с помощью 2-мерной разделяемой интерполяции K-отводов).At the left boundary sampling position of an M x N block, the sampling gradient of the horizontal boundary is calculated by taking the difference between the sampling value of the position on the right (which is calculated using 2-dimensional shared K-tap interpolation) and the sampling value of the extended sampling position to the left of it (which is assigned the rounded nearest the reconstructed value of the reference sample as described above). Similarly, at the position of the right sample boundary of an M x N block, the horizontal sampling gradient is calculated by taking the difference between the sample value of the position to the right (which is assigned the rounded nearest reconstructed value of the reference sample, as described above) and the approximate value of the position to the left of it (which is calculated with using 2D separable K-tap interpolation).

В позиции выборки верхней границы блока M x N градиент выборки вертикальной границы вычисляется путем взятия разницы между значением выборки позиции под ней (которая вычисляется с использованием 2-мерной разделяемой интерполяции K-отводов) и значением выборки позиции расширенной выборки сверху (которому присваивается округленное ближайшее восстановленное значение опорной выборки, как описано выше). Точно так же в позиции выборки нижней границы блока M x N градиент выборки вертикальной границы вычисляется путем взятия разницы между значением выборки позиции ниже (которому присваивается округленное ближайшее восстановленное значение опорной выборки, как описано выше) и примерное значение позиции сверху (которое вычисляется с использованием 2-мерной разделяемой интерполяции K-отводов).At the top boundary sampling position of an M x N block, the vertical boundary sampling gradient is calculated by taking the difference between the sampling value of the position below it (which is calculated using 2D separable K-tap interpolation) and the sampling value of the extended sampling position above (which is assigned the rounded nearest reconstructed reference sample value as described above). Similarly, at the bottom boundary sampling position of an M x N block, the vertical boundary sampling gradient is calculated by taking the difference between the sample value of the position below (which is assigned the rounded nearest reconstructed value of the reference sample as described above) and the approximate value of the position above (which is calculated using 2 -dimensional separable interpolation of K-taps).

Вариант 2 осуществления:Option 2 implementation:

В этом варианте осуществления значения позиции расширенной выборки выводятся с использованием процедуры, описанной в варианте осуществления 1, всякий раз, когда применяется BPOF/BDOF и когда уточнение вектора движения (MVR) не применяется для данного блока кодирования, которому принадлежит текущий субблок, или когда MVR и BDOF оба применяются для данного блока кодирования, которому принадлежит текущий субблок, но MVR не приводит к целочисленному смещению на этапе уточнения целочисленного расстояния MVR относительно начальной пары MV. Другими словами, когда применяются оба MVR и BDOF, когда этап уточнения целочисленного расстояния MVR приводит к начальной паре MV, то есть с нулевым смещением, значения позиции расширенной выборки выводятся с использованием процедуры, описанной в варианте осуществления 1.In this embodiment, the extended sample position values are output using the procedure described in Embodiment 1 whenever BPOF/BDOF is applied and when motion vector refinement (MVR) is not applied for a given coding block to which the current subblock belongs, or when MVR and BDOF are both applied for a given encoding block to which the current subblock belongs, but MVR does not result in an integer offset in the integer distance refinement step of the MVR relative to the initial MV pair. In other words, when both MVR and BDOF are applied, when the MVR integer distance refinement step results in an initial MV pair, that is, with zero offset, the extended sample position values are output using the procedure described in Embodiment 1.

Когда MVR и BDOF оба применяются для данного блока кодирования, которому принадлежит текущий субблок, но MVR приводит к целочисленному смещению на этапе уточнения целочисленного расстояния MVR относительно начальной пары MV, т. е. уточненной пары MV после этапа уточнения целочисленного расстояния отличается от начальной пары MV, значение выборки для позиции расширенной выборки (x_spel_pos, y_spel_pos) получается как восстановленное значение опорной выборки в позиции (x_pos, y_pos), вычисленное следующим образом:When MVR and BDOF are both applied for a given encoding block to which the current subblock belongs, but MVR results in an integer offset in the integer distance refinement step of the MVR relative to the initial MV pair, i.e., the refined MV pair after the integer distance refinement step is different from the initial MV pair , the sample value for the extended sample position (x_spel_pos, y_spel_pos) is obtained as the reconstructed value of the reference sample at position (x_pos, y_pos), calculated as follows:

x_pos = x_spel_pos >> shift_valx_pos = x_spel_pos >> shift_val

y_pos = y_spel_pos >> shift_valy_pos = y_spel_pos >> shift_val

где shift_val выбирается в соответствии с используемой точностью выборки субпикселей. Для точности выборки субпикселей в половину пикселя, четверть пикселя, 1/8 пикселя и 1/16 пикселя используются shift_val 1, 2, 3 и 4 соответственно. Другими словами, дробная часть позиции как в горизонтальном, так и в вертикальном направлениях игнорируется при получении позиции выборки для этого случая.where shift_val is chosen according to the subpixel sampling precision used. For subpixel sampling precision of half pixel, quarter pixel, 1/8 pixel and 1/16 pixels used shift_val 1, 2, 3 and 4 respectively. In other words, the fractional part of the position in both the horizontal and vertical directions is ignored when obtaining the sample position for this case.

Преимущества предлагаемого способа:Advantages of the proposed method:

С помощью описанных способов округления позиции субпикселя в горизонтальном и вертикальном направлениях граничные градиенты становятся более точными. Это улучшает вычисленный оптический поток на основе этих градиентов выборки, а также поправки, применяемые с использованием вычисленного оптического потока. Это обеспечивает постоянный выигрыш от кодирования по сравнению с более ранним способом игнорирования дробного смещения в горизонтальном и вертикальном направлениях при выборе целочисленного значения выборки для позиций расширенной выборки. В то же время сложность не сильно меняется, поскольку добавление горизонтального и вертикального смещения округления - единственное увеличение сложности.By using the described methods of rounding the subpixel position in the horizontal and vertical directions, the boundary gradients become more accurate. This improves the calculated optical flow based on these sampling gradients, as well as the corrections applied using the calculated optical flow. This provides a consistent coding gain over the earlier method of ignoring fractional offsets in the horizontal and vertical directions when selecting an integer sample value for extended sample positions. At the same time, the difficulty doesn't change much, since adding horizontal and vertical rounding offsets is the only increase in difficulty.

На основе решения возможный вариант комбинирования стандартного проекта VVC 5 может быть показан следующим образом.Based on the solution, a possible combination of a standard VVC 5 project can be shown as follows.

Процесс выборки целочисленных выборок яркости (Luma)Integer luminance sampling process (Luma)

Входные данные для этого процесса являются следующими:The inputs for this process are as follows:

– расположение яркости в блоках полной выборки ( xIntL, yIntL ),– location of brightness in full sample blocks ( xInt L , yInt L ),

расположение яркости в блоках дробной выборки (( xFracL, yFracL ),brightness location in fractional sampling blocks (( xFrac L , yFrac L ),

массив опорных выборок яркости refPicLXL, array of reference brightness samples refPicLX L ,

Выходными данными этого процесса является предсказанное значение выборки яркости predSampleLXL.The output of this process is the predicted luminance sample value predSampleLX L .

Сдвиг переменной устанавливается равным Max (2, 14 - BitDepthY ).The variable shift is set to Max (2, 14 - BitDepth Y ).

Переменная picW устанавливается равной pic_width_in_luma_samples, а переменная picH устанавливается равной pic_height_in_luma_samples.The picW variable is set to pic_width_in_luma_samples and the picH variable is set to pic_height_in_luma_samples.

Положения яркости в единицах полной выборки (xInt, yInt) выводятся следующим образом:Luminance positions in full sample units (xInt, yInt) are output as follows:

xOffset = xFracL > 7 ? 1 : 0xOffset = xFrac L > 7 ? 10

yOffset = yFracL  > 7 ? 1 : 0yOffset = yFrac L > 7 ? 10

xInt = Clip3( 0, picW − 1, sps_ref_wraparound_enabled_flag ?
ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL − 1 + xOffset) : xIntL − 1 + xOffset)
xInt = Clip3( 0, picW − 1, sps_ref_wraparound_enabled_flag ?
ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL − 1 + xOffset) : xIntL − 1 + xOffset)

yInt = Clip3( 0, picH − 1, yIntL − 1 + yOffset)yInt = Clip3( 0, picH − 1, yInt L − 1 + yOffset)

Предсказанное значение выборки яркости predSampleLXL выводится следующим образом:The predicted luminance sample value predSampleLX L is output as follows:

predSampleLXL = refPicLXL[ xInt ][ yInt ] << shift3predSampleLX L = refPicLX L [ xInt ][ yInt ] << shift3

Следует отметить, что эти примерные изменения в проекте VVC сделаны только для компонента яркости, но они могут использоваться для компонента цветности таким же образом или с некоторыми изменениями, чтобы принять характеристику компонента цветности.It should be noted that these example changes in the VVC design are made only for the luma component, but they can be used for the chrominance component in the same way or with some modifications to adopt the characteristic of the chrominance component.

Фиг. 8 показывает блок-схему способа кодирования/декодирования видео согласно варианту осуществления раскрытия. Проиллюстрированный способ выполняет двойное предсказание оптического потока на основе значения выборки из позиции выборки, принадлежащей расширенной области предсказанного блока, используемого в предсказании двунаправленного оптического потока текущего блока, следующим образом: на этапе 1310 получают вектор движения (MV) текущего блока. На этапе 1320 позицию выборки субпикселей в расширенной области предсказанного блока в опорной картинке получают на основе MV. На этапе 1330 полученная позиция выборки субпикселей обрабатывается, в частности, округляется, чтобы получить целочисленную позицию выборки пикселей в опорной картинке. На этапе 1340, наконец, выполняется двойное предсказание оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.Fig. 8 shows a flowchart of a video encoding/decoding method according to an embodiment of the disclosure. The illustrated method performs dual optical flow prediction based on a sample value from a sample position belonging to an extended region of a predicted block used in bidirectional optical flow prediction of the current block as follows: At step 1310, a motion vector (MV) of the current block is obtained. At step 1320, the position of the subpixel sample in the expanded region of the predicted block in the reference picture is obtained based on the MV. At step 1330, the resulting subpixel sample position is processed, specifically rounded, to obtain an integer pixel sample position in the reference picture. At step 1340, a dual optical flow prediction is finally performed by referring to the reference sample value at the obtained integer sample position of the pixels in the reference picture.

Фиг. 9 показывает блок-схему, иллюстрирующую пример аппаратуры кодирования/декодирования согласно варианту осуществления этого раскрытия. Аппаратура 20/30 кодирования/декодирования содержит блок 1440 предсказания, сконфигурированный для выполнения предсказания двунаправленного оптического потока текущего блока, первый блок 1410 получения, сконфигурированный для получения вектора движения (MV) текущего блока, второй блок 1420 получения, сконфигурированный для получения позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе MV, иFig. 9 is a block diagram illustrating an example of encoding/decoding equipment according to an embodiment of this disclosure. The encoding/decoding apparatus 20/30 includes a prediction unit 1440 configured to perform bidirectional optical flow prediction of the current block, a first acquiring unit 1410 configured to obtain the motion vector (MV) of the current block, a second acquiring unit 1420 configured to obtain the subpixel sampling position in extended area of the predicted block in the MV-based reference picture, and

блок 1430 обработки, сконфигурированный для обработки, в конкретном раунде, полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке, при этом блок 1440 предсказания сконфигурирован для выполнения предсказания двунаправленного оптического потока посредством обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.a processing unit 1430 configured to process, in a particular round, the obtained sub-pixel sampling position to obtain an integer pixel sampling position in the reference picture, wherein the prediction unit 1440 is configured to perform bidirectional optical flow prediction by referring to the reference sample value at the obtained integer pixel sampling position in the reference picture.

Блоки 1410 и 1420 получения, блок 1430 обработки и блок 1440 предсказания могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.Acquisition units 1410 and 1420, processing unit 1430, and prediction unit 1440 may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted through a communication medium in the form of one or more instructions or code and executed by a hardware processing unit. 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.

Некоторые конкретные варианты осуществления изложены в следующих аспектах раскрытия.Some specific embodiments are set forth in the following aspects of the disclosure.

Согласно первому аспекту предоставляется способ, используемый для получения предсказанного значения выборки для позиции выборки, принадлежащей расширенной области предсказанного блока, используемой в предсказании двунаправленного оптического потока текущего блока кодирования, который содержит получение MV текущего блока кодирования, получение позиции субпикселя в опорной картинке на основе MV и позиции расширенной выборки в текущей картинке, которая окружает позиции выборки текущего блока кодирования, получение позиции целого пикселя в опорной картинке путем округления/перемещения полученной позиции выборки субпикселей к ближайшему положению целочисленного пикселя, и устанавку предсказанного значения выборки для позиции выборки, принадлежащей расширенной области предсказанного блока, в качестве значения опорной выборки в полученном положении целого пикселя.According to a first aspect, there is provided a method used for obtaining a predicted sample value for a sample position belonging to an extended area of a predicted block used in bidirectional optical flow prediction of a current encoding block, which comprises obtaining an MV of the current encoding block, obtaining a subpixel position in a reference picture based on the MV, and an extended sample position in the current picture that surrounds the sample positions of the current encoding block, obtaining an integer pixel position in the reference picture by rounding/moving the resulting sub-pixel sample position to the nearest integer pixel position, and setting a predicted sample value for the sample position belonging to the extended region of the predicted block , as the reference sample value at the resulting integer pixel position.

Округление/перемещение полученной позиции выборки субпикселей в сторону ближайшего положения целочисленного пикселя может включать в себя округление полученной позиции выборки субпикселей отдельно в горизонтальном и вертикальном направлениях до ближайшей позиции целочисленной выборки в этом направлении с позицией половины выборки между двумя позициями целочисленной выборки, округляемыми в большую сторону до более высокой позиции целочисленной выборки в этом направлении.Rounding/moving the resulting subpixel sample position toward the nearest integer pixel position may include rounding the resulting subpixel sample position separately in the horizontal and vertical directions to the nearest integer sample position in that direction, with the half sample position between the two integer sample positions rounded up to a higher integer sample position in that direction.

Округление/перемещение полученной позиции выборки субпикселей в сторону ближайшего положения целочисленного пикселя может включать в себя сравнение полученной позиции выборки субпикселей отдельно в горизонтальном и вертикальном направлениях с пороговым значением, в случае, когда позиция выборки субпикселей равна или превышает пороговое значение, ближайшая более высокая позиция целочисленной выборки может быть получена как положение целочисленного пикселя, и в случае, когда позиция выборки субпикселей меньше порогового значения, ближайшая более низкая позиция целочисленной выборки может быть получена как положение целого пикселя.Rounding/moving the received subpixel sample position towards the nearest integer pixel position may involve comparing the obtained subpixel sample position separately in the horizontal and vertical directions with a threshold value, in the case where the subpixel sample position is equal to or greater than the threshold value, the nearest higher integer position sample position can be obtained as an integer pixel position, and in the case where the subpixel sample position is less than a threshold value, the nearest lower integer sample position can be obtained as an integer pixel position.

Согласно второму аспекту предоставляется способ, используемый для получения предсказанного значения выборки для позиции выборки, принадлежащей расширенной области предсказанного блока, используемого в предсказании двунаправленного оптического потока текущего блока кодирования, который содержит получение первого MV, соответствующего предсказанной выборке в расширенной области блока кодирования, получение второго MV путем отбрасывания дробной части первого MV, получение положения первого целого пикселя расширенной области в опорной картинке на основе второго MV, определение вектора дробного смещения на основе первого MV, получение положения второго целочисленного пикселя в опорной картинке на основе положения первого целого пикселя и вектора дробного смещения, при этом положение второго целого пикселя устанавливается равным позиции первого целого пикселя плюс смещение позиции, где смещение позиции определяется путем сравнения каждого компонента вектора дробного смещения и порогового значения, а дополнительно содержит дополнение предсказанной выборки с использованием значения пикселя в положении второго целочисленного пикселя в опорной картинке.According to a second aspect, there is provided a method used for obtaining a predicted sample value for a sample position belonging to an extended area of a prediction block used in bidirectional optical flow prediction of a current encoding block, which comprises obtaining a first MV corresponding to a predicted sample in an extended area of the encoding block, obtaining a second MV by discarding the fractional part of the first MV, obtaining the position of the first integer pixel of the extended region in the reference picture based on the second MV, determining the fractional offset vector based on the first MV, obtaining the position of the second integer pixel in the reference picture based on the position of the first integer pixel and the fractional offset vector, wherein the position of the second integer pixel is set equal to the position of the first integer pixel plus a position offset, wherein the position offset is determined by comparing each component of the fractional offset vector and the threshold value, and further comprises padding the predicted sample using the pixel value at the position of the second integer pixel in the reference picture.

Является ли компонент смещения позиции 1 или 0, может зависеть от результата сравнения между соответствующим компонентом вектора дробного смещения и пороговым значением, при этом компонент включает в себя компонент X и компонент Y.Whether the position offset component is 1 or 0 may depend on the result of a comparison between the corresponding fractional offset vector component and the threshold value, where the component includes an X component and a Y component.

Пороговое значение может быть K, при этом компонент смещения позиции устанавливается равным 1, когда соответствующий компонент дробного смещения равен или больше K, в противном случае - равным 0. K может быть равно 8.The threshold value may be K, with the position offset component set to 1 when the corresponding fractional offset component is equal to or greater than K, otherwise set to 0. K may be 8.

Согласно дополнительному аспекту предоставляется кодер или декодер, содержащий схему обработки для выполнения любого из способов согласно вышеописанным первому и второму аспектам.According to a further aspect, an encoder or decoder is provided including processing circuitry for performing any of the methods according to the first and second aspects described above.

Согласно дополнительному аспекту предоставляется компьютерный программный продукт, содержащий программный код для выполнения любого из способов согласно вышеописанным первому и второму аспектам.According to a further aspect, a computer program product is provided comprising program code for performing any of the methods according to the first and second aspects described above.

Согласно дополнительному аспекту предоставляется декодер или кодер, содержащий один или несколько процессоров и энергонезависимый машиночитаемый носитель данных, подсоединенный к процессорам и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения любого из способов согласно вышеописанным первому и второму аспектам.According to a further aspect, a decoder or encoder is provided, comprising one or more processors and a non-volatile 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 the decoder to perform any of the methods according to the first and second aspects described above.

Математические операторы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 rules usually start from 0, i.e. "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 unary 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 and 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 && yx && y

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

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

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

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

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

> Больше> More

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

< Меньше< Less

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

== Равно== Equal

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

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

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

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

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

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

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

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

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

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

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

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

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

− − Уменьшение, т.е. x− − эквивалентно x=x - 1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.− − Decrease, i.e. x− − 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 units of radians.

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

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

Ceil( x ) наименьшее целое, большее или равное 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 units of radians.

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

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

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

Log2( x ) логарифм x по основанию 2.Log2( 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 operates on x in units of radians.

Sqrt( x )= Sqrt( x )=

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

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

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

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

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

Операции с одинаковым приоритетом оцениваются последовательно слева направо.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) xy 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" (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:

если ( условие 0 ) определение 0 if ( condition 0 ) definition 0

иначе если( условие 1 ) else if( condition 1)

определение 1 ... definition 1...

иначе /* информативный комментарий по оставшемуся условию */ определение nelse /* informative comment on the remaining condition */ definition 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...else, if...else,..." definition in the text is introduced with the words "...as below" or "...the following applies" followed immediately by "if..." . The final condition "if...else, if...else..." can always be "otherwise..." Alternating definitions of "if...else if...else,..." can be identified by comparison "...as stated below" or "...the following applies" followed by a final "otherwise,...".

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

если( условие 0a && условие 0b ) определение 0 if( condition 0a && condition 0b ) definition 0

иначе если( условие 1a | | условие 1b ) определение 1 ... иначе определение nelse if ( condition 1a | | condition 1b ) definition 1 ... else definition n

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

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

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

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

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

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

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

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

- ...- ...

- Иначе, определение n- Otherwise, the definition of n

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

если ( условие 0 ) определение 0 если ( условие 1 ) определение 1if (condition 0) definition 0 if (condition 1) definition 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, внутреннее предсказание 254/354 и/или контурная фильтрация 220, 320, энтропийное кодирование 270 и энтропийное декодирование 304.Although embodiments of the disclosure 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 picture, that is, processing or encoding a single picture independently of any previous or subsequent picture, as in video encoding. In general, only the inter prediction (encoder) and 344 (decoder) blocks 244 may not be available if the encoding for picture processing is limited to a single picture 17. All other functions (also referred to as tools or techniques) of video encoder 20 and video decoder 30 may equally used for processing static images, for example, residual calculation 204/304, transform 206, quantization 208, inverse quantization 210/310, (inverse) transform 212/312, division 262, intra prediction 254/354 and/or loop filtering 220 ,320, 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 processing unit. Computer-readable media may include computer-readable storage media that correspond to tangible media, such as data storage media, or communication media, including any media that facilitates the transfer of a computer program from one place to another, for example, according to a communications protocol. Thus, computer-readable media may generally correspond to (1) tangible computer-readable storage media that are non-volatile, or (2) communication media such as a signal or carrier wave. Storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementing the techniques described in this disclosure. The computer program product may include computer-readable media.

В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на невременные, материальные запоминающие носители. Диск и диск, используемые здесь, включают в себя компакт-диск (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. However, it should be understood that computer readable and storage media do not include connections, carrier waves, signals or other transient media, but are instead directed to non-transitory, tangible storage media. Disc and disc used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs typically reproduce data magnetically and discs reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer readable media.

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

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

Claims (79)

1. Способ для предсказания двунаправленного оптического потока на основе значения выборки из позиции выборки, принадлежащей расширенной области предсказанного блока, используемого в предсказании двунаправленного оптического потока текущего блока, содержащий:1. A method for predicting bidirectional optical flow based on a sample value from a sample position belonging to an extended area of a predicted block used in bidirectional optical flow prediction of a current block, comprising: получение вектора движения (MV) текущего блока;obtaining the motion vector (MV) of the current block; получение позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе упомянутого MV;obtaining a sample position of subpixels in the expanded region of the predicted block in the reference picture based on said MV; обработку полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке; иprocessing the obtained sub-pixel sampling position to obtain an integer pixel sampling position in the reference picture; And выполнение предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке. performing a bidirectional optical flow prediction by referring to a reference sample value at the resulting integer sample position of pixels in the reference picture. 2. Способ по п.1, в котором значение опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке упоминается как значение выборки из позиции выборки субпикселей при предсказании двунаправленного оптического потока.2. The method of claim 1, wherein the reference sample value at the obtained integer pixel sampling position in the reference picture is referred to as the sampling value from the sub-pixel sampling position in bidirectional optical flow prediction. 3. Способ по п.1 или 2, в котором обработка полученной позиции выборки субпикселей включает в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.3. The method of claim 1 or 2, wherein processing the obtained subpixel sampling position includes rounding the obtained subpixel sampling position to obtain an integer pixel sampling position in the reference picture. 4. Способ по любому из предшествующих пунктов, в котором обработка полученной позиции выборки субпикселей включает в себя: 4. The method as claimed in any one of the preceding claims, wherein processing the obtained subpixel sample position includes: округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении до соответствующей ближайшей целочисленной позиции выборки пикселей в соответствующем направлении и получение целочисленной позиции выборки пикселей в опорной картинке на основе ближайших целочисленных позиций выборки пикселей в горизонтальном направление и вертикальном направлении. rounding the obtained sub-pixel sampling position separately in the horizontal direction and vertical direction to the corresponding nearest integer pixel sampling position in the corresponding direction, and obtaining an integer pixel sampling position in the reference picture based on the nearest integer pixel sampling positions in the horizontal direction and vertical direction. 5. Способ по любому из предшествующих пунктов, отличающийся тем, что способ дополнительно содержит: 5. The method according to any of the preceding paragraphs, characterized in that the method additionally contains: перед выполнением предсказания двунаправленного оптического потока выбор значения опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке в качестве значения выборки предсказания для использования в предсказании двунаправленного оптического потока,before performing bidirectional optical flow prediction, selecting a reference sample value at the obtained integer sample position of pixels in the reference picture as a prediction sample value for use in bidirectional optical flow prediction, при этом выполнение предсказания двунаправленного оптического потока со ссылкой на значение опорной выборки содержит:wherein performing a bidirectional optical flow prediction with reference to the reference sample value comprises: выполнение предсказания двунаправленного оптического потока с использованием значения выборки предсказания.performing bidirectional optical flow prediction using the prediction sample value. 6. Способ по п. 4 или 5, в котором округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении включает в себя:6. The method according to claim 4 or 5, wherein rounding the obtained sub-pixel sampling position separately in the horizontal direction and the vertical direction includes: сравнение дробной части полученной позиции выборки субпикселей в соответствующем направлении с пороговым значением,comparison of the fractional part of the resulting subpixel sample position in the corresponding direction with a threshold value, при этом в случае, когда дробная часть равна или больше порогового значения, ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении, иwherein, in the case where the fractional part is equal to or greater than the threshold value, the nearest upper integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction, and при этом в случае, когда дробная часть меньше порогового значения, ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении.wherein, in the case where the fractional part is less than the threshold value, the nearest lower integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction. 7. Способ по п. 6, в котором ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 1 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей; и7. The method of claim 6, wherein the nearest upper integer pixel sample position in the corresponding direction is obtained by adding an offset of 1 to the integer position of the truncated pixel sample in the corresponding direction obtained by discarding the fractional part of the resulting subpixel sample position; And при этом ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 0 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей.wherein the nearest lower integer pixel sample position in the corresponding direction is obtained by adding an offset of 0 to the integer position of the truncated pixel sample in the corresponding direction obtained by discarding the fractional part of the resulting subpixel sample position. 8. Способ по п. 6 или 7, в котором пороговое значение задается как P/2 для точности субпикселя 1/P пикселя.8. The method of claim 6 or 7, wherein the threshold value is set to P/2 for sub-pixel precision 1/P pixel. 9. Способ по п. 8, в котором пороговое значение составляет 8 для точности субпикселя 1/16 пикселя.9. The method of claim 8, wherein the threshold value is 8 for a subpixel precision of 1/16 pixel. 10. Способ по п. 4, в котором округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении включает в себя10. The method of claim 4, wherein rounding the obtained subpixel sampling position separately in the horizontal direction and the vertical direction includes применение операции сдвига к компонентам полученной позиции выборки субпикселей в соответствующих направлениях.applying a shift operation to the components of the resulting subpixel sample position in appropriate directions. 11. Способ по п. 10, в котором целочисленную позицию (x_pos, y_pos) выборки пикселей в опорной картинке получают в соответствии со следующими уравнениями:11. The method of claim 10, wherein the integer position (x_pos, y_pos) of the sample pixels in the reference picture is obtained in accordance with the following equations: x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val,x_pos = (x_spel_pos + (1 << (shift_val – 1))) >> shift_val, y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val,y_pos = (y_spel_pos + (1 << (shift_val – 1))) >> shift_val, где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей.where (x_spel_pos, y_spel_pos) is the resulting subpixel sampling position and shift_val is chosen according to the subpixel sampling precision used. 12. Способ по п. 11, отличающийся тем, что для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, используется shift_val, равный 1, 2, 3 или 4 соответственно. 12. The method of claim 11, wherein for subpixel sampling precision equal to half a pixel, quarter pixel, 1/8 pixel, or 1/16 pixel, a shift_val of 1, 2, 3, or 4 is used, respectively. 13. Способ по одному из предшествующих пунктов, в котором MV текущего блока является уточненным MV, полученным посредством уточнения вектора движения (MVR) на основе начального MV.13. The method as claimed in one of the preceding claims, wherein the MV of the current block is a refined MV obtained by motion vector refinement (MVR) based on the initial MV. 14. Способ по п. 13, в котором MVR содержит этап уточнения целочисленного расстояния по отношению к начальному MV; и14. The method according to claim 13, in which the MVR comprises the step of refining the integer distance with respect to the initial MV; And при этом в случае, если этап уточнения целочисленного расстояния MVR приводит к ненулевому смещению уточненного MV относительно начального MV, целочисленная позиция выборки пикселей в опорной картинке получается путем округления полученной позиции выборки субпикселей.Moreover, in the event that the integer MVR distance refinement step results in a non-zero offset of the refined MV relative to the initial MV, the integer position of the pixel sample in the reference picture is obtained by rounding the resulting subpixel sample position. 15. Способ по п. 14, в котором в случае, если этап уточнения целочисленного расстояния MVR приводит к нулевому смещению уточненного MV относительно начального MV, целочисленная позиция выборки пикселей в опорной картинке получается путем отбрасывания дробной части полученной позиции выборки субпикселей.15. The method of claim 14, wherein if the integer MVR distance refinement step results in a zero offset of the refined MV relative to the initial MV, the integer pixel sample position in the reference picture is obtained by discarding the fractional part of the resulting subpixel sample position. 16. Способ по п. 14, в котором в случае, если этап уточнения целочисленного расстояния MVR приводит к нулевому смещению уточненного MV относительно начального MV, целочисленная позиция (x_pos, y_pos) выборки пикселей в опорной картинке получается согласно следующим уравнениям:16. The method of claim 14, wherein if the integer MVR distance refinement step results in a zero offset of the refined MV relative to the initial MV, the integer position (x_pos, y_pos) of the sample pixels in the reference picture is obtained according to the following equations: x_pos = x_spel_pos >> shift_val,x_pos = x_spel_pos >> shift_val, y_pos = y_spel_pos >> shift_val,y_pos = y_spel_pos >> shift_val, где (x_spel_pos, y_spel_pos) - это полученная позиция выборки субпикселей, а shift_val выбирается в соответствии с используемой точностью выборки субпикселей.where (x_spel_pos, y_spel_pos) is the resulting subpixel sampling position and shift_val is chosen according to the subpixel sampling precision used. 17. Способ по п. 16, отличающийся тем, что для точности выборки субпикселей, равной половине пикселя, четверти пикселя, 1/8 пикселя или 1/16 пикселя, используется shift_val, равный 1, 2, 3 или 4 соответственно. 17. The method of claim 16, wherein for subpixel sampling precision equal to half a pixel, quarter pixel, 1/8 pixel, or 1/16 pixel, a shift_val of 1, 2, 3, or 4 is used, respectively. 18. Способ по любому из предшествующих пунктов, в котором текущий блок является текущим блоком кодирования, или текущим субблоком кодирования, или текущим блоком предсказания.18. The method as claimed in any one of the preceding claims, wherein the current block is a current encoding block, or a current sub-encoding block, or a current prediction block. 19. Способ по любому из предшествующих пунктов, в котором значение опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке используется при вычислении градиента граничной выборки, соответствующего границе предсказанного блока в опорной картинке.19. The method as claimed in any one of the preceding claims, wherein the reference sample value at the obtained integer sample position of pixels in the reference picture is used in calculating a boundary sample gradient corresponding to the boundary of a predicted block in the reference picture. 20. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 1-19.20. An encoder (20) containing a processing circuit for performing the method according to any one of claims. 1-19. 21. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-19.21. A decoder (30) comprising a processing circuit for performing the method according to any one of claims. 1-19. 22. Кодер (20), содержащий:22. Encoder (20), containing: один или более процессоров; иone or more processors; And энергонезависимый машиночитаемый носитель данных, подключенный к одному или нескольким процессорам и хранящий инструкции для выполнения одним или несколькими процессорами, причем инструкции, когда выполняются одним или несколькими процессорами, конфигурируют кодер для выполнения способа по любому из пп. 1-19.a non-volatile computer-readable storage medium coupled to one or more processors and storing instructions for execution by the one or more processors, wherein the instructions, when executed by the one or more processors, configure an encoder to perform the method of any one of claims. 1-19. 23. Декодер (30), содержащий:23. Decoder (30), containing: один или более процессоров; иone or more processors; And энергонезависимый машиночитаемый носитель данных, подключенный к одному или нескольким процессорам и хранящий инструкции для выполнения одним или несколькими процессорами, причем инструкции, когда выполняются одним или несколькими процессорами, конфигурируют декодер для выполнения способа по любому из пп. 1-19.a non-volatile computer-readable storage medium coupled to one or more processors and storing instructions for execution by the one or more processors, wherein the instructions, when executed by the one or more processors, configure a decoder to perform the method of any one of claims. 1-19. 24. Кодер (20), содержащий:24. Encoder (20), containing: блок предсказания, сконфигурированный для выполнения предсказания двунаправленного оптического потока текущего блока;a prediction unit configured to perform bidirectional optical flow prediction of the current block; первый блок получения, сконфигурированный для получения вектора движения (MV) текущего блока;a first receiving unit configured to obtain a motion vector (MV) of the current block; второй блок получения, сконфигурированный для получения позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе упомянутого MV; иa second acquiring unit configured to obtain a sample position of subpixels in an expanded region of a predicted block in a reference picture based on said MV; And блок обработки, сконфигурированный для обработки полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке;a processing unit configured to process the obtained sub-pixel sampling position to obtain an integer pixel sampling position in the reference picture; при этом блок предсказания сконфигурирован для выполнения предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.wherein the prediction unit is configured to perform bidirectional optical flow prediction by referring to a reference sample value at the obtained integer sample position of pixels in the reference picture. 25. Кодер (20) по п. 24, в котором обработка полученной позиции выборки субпикселей включает в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.25. The encoder (20) of claim 24, wherein processing the obtained sub-pixel sample position includes rounding the obtained sub-pixel sample position to obtain an integer pixel sample position in the reference picture. 26. Кодер (20) по п. 24 или 25, в котором обработка полученной позиции выборки субпикселей включает в себя:26. The encoder (20) according to claim 24 or 25, wherein processing the received subpixel sample position includes: округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении до соответствующей ближайшей целочисленной позиции выборки пикселей в соответствующем направлении и получение целочисленной позиции выборки пикселей в опорной картинке на основе ближайших целочисленных позиций выборки пикселей в горизонтальном направлении и вертикальном направлении.rounding the obtained sub-pixel sampling position separately in the horizontal direction and vertical direction to the corresponding nearest integer pixel sampling position in the corresponding direction, and obtaining an integer pixel sampling position in the reference picture based on the nearest integer pixel sampling positions in the horizontal direction and vertical direction. 27. Кодер (20) по п. 26, в котором округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении включает в себя:27. The encoder (20) according to claim 26, wherein rounding the obtained sub-pixel sample position separately in the horizontal direction and the vertical direction includes: сравнение дробной части полученной позиции выборки субпикселей в соответствующем направлении с пороговым значением,comparison of the fractional part of the resulting subpixel sample position in the corresponding direction with a threshold value, при этом в случае, когда дробная часть равна или больше порогового значения, ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении, иwherein, in the case where the fractional part is equal to or greater than the threshold value, the nearest upper integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction, and при этом в случае, когда дробная часть меньше порогового значения, ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении.wherein, in the case where the fractional part is less than the threshold value, the nearest lower integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction. 28. Кодер (20) по п. 27, в котором ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 1 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей; и28. The encoder (20) of claim 27, wherein the nearest upper integer pixel sample position in the corresponding direction is obtained by adding an offset of 1 to the integer position of the truncated pixel sample in the corresponding direction obtained by discarding the fractional part of the resulting sub-pixel sample position; And при этом ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 0 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей.wherein the nearest lower integer pixel sample position in the corresponding direction is obtained by adding an offset of 0 to the integer position of the truncated pixel sample in the corresponding direction obtained by discarding the fractional part of the resulting sub-pixel sample position. 29. Декодер (30), содержащий:29. Decoder (30), containing: блок предсказания, сконфигурированный для выполнения предсказания двунаправленного оптического потока текущего блока;a prediction unit configured to perform bidirectional optical flow prediction of the current block; первый блок получения, сконфигурированный для получения вектора движения (MV) текущего блока из потока битов кодированного видео;a first receiving unit configured to obtain a motion vector (MV) of the current block from the encoded video bit stream; второй блок получения, сконфигурированный для получения позиции выборки субпикселей в расширенной области предсказанного блока в опорной картинке на основе упомянутого MV; иa second acquiring unit configured to obtain a sample position of subpixels in an expanded region of a predicted block in a reference picture based on said MV; And блок обработки, сконфигурированный для обработки полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке;a processing unit configured to process the obtained sub-pixel sampling position to obtain an integer pixel sampling position in the reference picture; при этом блок (1440) предсказания сконфигурирован для выполнения предсказания двунаправленного оптического потока путем обращения к значению опорной выборки в полученной целочисленной позиции выборки пикселей в опорной картинке.wherein the prediction unit (1440) is configured to perform bidirectional optical flow prediction by referring to a reference sample value at the obtained integer sample position of pixels in the reference picture. 30. Декодер (30) по п. 29, в котором обработка полученной позиции выборки субпикселей включает в себя округление полученной позиции выборки субпикселей для получения целочисленной позиции выборки пикселей в опорной картинке.30. The decoder (30) of claim 29, wherein processing the obtained sub-pixel sample position includes rounding the obtained sub-pixel sample position to obtain an integer pixel sample position in the reference picture. 31. Декодер (30) по п. 29 или 30, в котором обработка полученной позиции выборки субпикселей включает в себя:31. The decoder (30) according to claim 29 or 30, wherein processing the received subpixel sample position includes: округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении до соответствующей ближайшей целочисленной позиции выборки пикселей в соответствующем направлении и получение целочисленной позиции выборки пикселей в опорной картинке на основе ближайших целочисленных позиций выборки пикселей в горизонтальном направлении и вертикальном направлении.rounding the obtained sub-pixel sampling position separately in the horizontal direction and vertical direction to the corresponding nearest integer pixel sampling position in the corresponding direction, and obtaining an integer pixel sampling position in the reference picture based on the nearest integer pixel sampling positions in the horizontal direction and vertical direction. 32. Декодер (30) по п. 31, в котором округление полученной позиции выборки субпикселей отдельно в горизонтальном направлении и вертикальном направлении включает в себя:32. The decoder (30) according to claim 31, wherein rounding the obtained sub-pixel sample position separately in the horizontal direction and the vertical direction includes: сравнение дробной части полученной позиции выборки субпикселей в соответствующем направлении с пороговым значением, comparison of the fractional part of the resulting subpixel sample position in the corresponding direction with a threshold value, при этом в случае, когда дробная часть равна или больше порогового значения, ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении, иwherein, in the case where the fractional part is equal to or greater than the threshold value, the nearest upper integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction, and при этом в случае, когда дробная часть меньше порогового значения, ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается как ближайшая целочисленная позиция выборки пикселей в соответствующем направлении.wherein, in the case where the fractional part is less than the threshold value, the nearest lower integer pixel sampling position in the corresponding direction is obtained as the nearest integer pixel sampling position in the corresponding direction. 33. Декодер (30) по п. 32, в котором ближайшая верхняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 1 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей; и33. The decoder (30) of claim 32, wherein the nearest upper integer pixel sample position in the corresponding direction is obtained by adding an offset of 1 to the integer position of the truncated pixel sample in the corresponding direction obtained by discarding the fractional part of the resulting sub-pixel sample position; And при этом ближайшая нижняя целочисленная позиция выборки пикселей в соответствующем направлении получается путем добавления смещения на 0 к целочисленной позиции усеченной выборки пикселей в соответствующем направлении, полученной путем отбрасывания дробной части полученной позиции выборки субпикселей.wherein the nearest lower integer pixel sample position in the corresponding direction is obtained by adding an offset of 0 to the integer position of the truncated pixel sample in the corresponding direction obtained by discarding the fractional part of the resulting subpixel sample position. 34. Носитель данных, хранящий поток битов, полученный с использованием способа декодирования/кодирования, который использует способ по любому из пп. 1-19.34. A storage medium storing a bitstream obtained using a decoding/encoding method that uses the method according to any one of claims. 1-19. 35. Машиночитаемый носитель данных, причем машиночитаемый носитель данных хранит компьютерную программу, при исполнении которой процессор выполняет способ по любому из пп. 1-19.35. A computer-readable storage medium, wherein the computer-readable storage medium stores a computer program, upon execution of which the processor executes the method according to any one of claims. 1-19.
RU2022101152A 2019-06-24 2020-06-23 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 RU2820638C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IN201931025013 2019-06-24

Publications (2)

Publication Number Publication Date
RU2022101152A RU2022101152A (en) 2023-07-24
RU2820638C2 true RU2820638C2 (en) 2024-06-07

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007091213A2 (en) * 2006-02-10 2007-08-16 Koninklijke Philips Electronics N.V. Video processor comprising a motion estimator of the recursive type
WO2018156628A1 (en) * 2017-02-21 2018-08-30 Qualcomm Incorporated Deriving motion vector information at a video decoder

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007091213A2 (en) * 2006-02-10 2007-08-16 Koninklijke Philips Electronics N.V. Video processor comprising a motion estimator of the recursive type
WO2018156628A1 (en) * 2017-02-21 2018-08-30 Qualcomm Incorporated Deriving motion vector information at a video decoder

Similar Documents

Publication Publication Date Title
US12206860B2 (en) Early termination for optical flow refinement
JP7640647B2 (en) Method for computing integer grid reference sample locations for block-level boundary sample gradient computation in bipredictive optical flow computation and bipredictive compensation - Patents.com
US12015762B2 (en) DMVR using decimated prediction block
EP3942825B1 (en) Optical flow based video inter prediction
WO2020253853A1 (en) Early termination for optical flow refinment
EP3895418B1 (en) An encoder, a decoder and corresponding methods for local illumination compensation
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
RU2808608C2 (en) Early termination of optical flow refinement