RU2783331C2 - Memory access window and filling for detailing of motion vector and motion compensation - Google Patents
Memory access window and filling for detailing of motion vector and motion compensation Download PDFInfo
- Publication number
- RU2783331C2 RU2783331C2 RU2021101690A RU2021101690A RU2783331C2 RU 2783331 C2 RU2783331 C2 RU 2783331C2 RU 2021101690 A RU2021101690 A RU 2021101690A RU 2021101690 A RU2021101690 A RU 2021101690A RU 2783331 C2 RU2783331 C2 RU 2783331C2
- Authority
- RU
- Russia
- Prior art keywords
- motion vector
- sample
- window
- block
- integer
- Prior art date
Links
- 238000001914 filtration Methods 0.000 claims abstract description 74
- 230000000875 corresponding Effects 0.000 claims description 68
- 108060000351 ALYREF Proteins 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 abstract 3
- 238000005755 formation reaction Methods 0.000 abstract 3
- 239000000126 substance Substances 0.000 abstract 1
- 230000011664 signaling Effects 0.000 description 18
- 230000002123 temporal effect Effects 0.000 description 13
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 12
- 238000000034 method Methods 0.000 description 11
- 230000002146 bilateral Effects 0.000 description 6
- 230000002457 bidirectional Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000007906 compression Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 238000009795 derivation Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000001131 transforming Effects 0.000 description 3
- 101700050599 CAND1 Proteins 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011068 load Methods 0.000 description 2
- 230000001340 slower Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 206010047571 Visual impairment Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002596 correlated Effects 0.000 description 1
- 230000001419 dependent Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000004301 light adaptation Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
Images
Abstract
Description
Варианты осуществления настоящего изобретения относятся к определению и детализации вектора движения, а также к определению предиктора для компенсации движения, который может использоваться во время кодирования и декодирования видеоинформации.Embodiments of the present invention relate to the definition and refinement of the motion vector, as well as the definition of a predictor for motion compensation, which can be used during encoding and decoding of video information.
Уровень техникиState of the art
Текущие гибридные видеокодеки используют кодирование с предсказанием. Изображение видеопоследовательности подразделяется на блоки пикселей и эти блоки затем кодируются. Вместо того, чтобы кодировать блок попиксельно, весь блок предсказывается, используя уже кодированные пиксели в пространственной или временной близости от блока. Кодер дополнительно обрабатывает только разности между блоком и его предсказанием. Дополнительная обработка обычно содержит преобразование блочных пикселей в коэффициенты в области преобразования. Коэффициенты могут затем дополнительно сжиматься посредством квантования и дополнительного уплотнения посредством статистического кодирования, чтобы сформировать битовый поток. Битовый поток дополнительно содержит любую сигнальную информацию, позволяющую декодеру декодировать кодированную видеоинформацию. Например, сигнализация может содержать установки, относящиеся к установкам кодера, таким как размер входного изображения, частота кадров, индикация шага квантования, предсказание, применяемые к блокам изображений, и т.п.Current hybrid video codecs use predictive coding. The image of the video sequence is subdivided into blocks of pixels and these blocks are then encoded. Instead of encoding a block pixel by pixel, the entire block is predicted using already encoded pixels in spatial or temporal proximity to the block. The encoder further processes only the differences between the block and its prediction. Additional processing typically involves converting block pixels to coefficients in the transform region. The coefficients may then be further compressed by quantization and further compressed by entropy coding to form a bitstream. The bitstream further contains any signaling information that allows the decoder to decode the encoded video information. For example, the signaling may contain settings related to encoder settings such as input image size, frame rate, quantization step indication, prediction applied to image blocks, and the like.
Временное предсказание использует временную корреляцию между изображениями, также называемыми кадрами, видеоинформации. Временное предсказание также вызывают межкадровым предсказанием, поскольку это предсказание, использующее зависимости между различными видеокадрами (межкадрами). Соответственно, кодируемый блок, также называемый текущим блоком, предсказывается исходя из одного или более ранее кодированного изображения(-ий), называемого опорным изображением(-ями). Опорное изображение не обязательно является изображением, предшествующим текущему изображению, в котором текущий блок располагается в порядке отображения видеопоследовательности. Кодер может кодировать изображения в порядке кодирования, отличающемся от порядка отображения. В качестве предсказания текущего блока, в опорном изображении может быть определен cовмещенный блок. Cовмещенный блок является блоком, который располагается в опорном изображении в той же самой позиции, что и текущий блок в текущем изображении. Такой предсказание является точным для областей неподвижного изображения, то есть, областей изображения без движения от одного изображения к другому.Temporal prediction uses the temporal correlation between pictures, also called frames, of video information. Temporal prediction is also called interframe prediction because it is a prediction using dependencies between different video frames (interframes). Accordingly, the encoded block, also referred to as the current block, is predicted from one or more previously encoded picture(s), referred to as the reference picture(s). The reference picture is not necessarily the picture preceding the current picture in which the current block is located in the display order of the video sequence. The encoder may encode the pictures in a different encoding order from the display order. As a prediction of the current block, a co-located block may be determined in the reference picture. A merged block is a block that is located in the reference picture at the same position as the current block in the current picture. Such a prediction is accurate for still image areas, that is, areas of an image without movement from one image to another.
Чтобы получить устройство предсказания, которое учитывает движение, то есть, предиктор с компенсацией движения оценка движения обычно используется при определении предсказания текущего блока. Соответственно, текущий блок предсказывается с помощью блока в опорном изображении, который располагается на расстоянии, задаваемом вектором движения относительно позиции совмещенного блока. Чтобы позволить декодеру определить такое же предсказание текущего блока, вектор движения может быть сообщен посредством сигнализации в битовом потоке. Чтобы дополнительно уменьшить издержки на сигнализацию, вызванные сигнализацией вектора движения для каждого из блоков, может быть оценен сам вектор движения. Оценка вектора движения может быть выполнена, основываясь на векторах движения соседних блоков в пространственной и/или во временной области.To obtain a predictor that takes motion into account, that is, a motion-compensated predictor, a motion estimate is typically used in determining the prediction of the current block. Accordingly, the current block is predicted by a block in the reference picture that is located at a distance given by the motion vector relative to the position of the aligned block. To allow the decoder to determine the same prediction of the current block, the motion vector may be signaled in the bitstream. To further reduce the signaling overhead caused by motion vector signaling for each of the blocks, the motion vector itself can be estimated. Motion vector estimation may be performed based on the motion vectors of adjacent blocks in the spatial and/or time domain.
Предсказание текущего блока может быть вычислено, используя одно опорное изображение или путем взвешивания предсказаний, полученных из двух или более опорных изображений. Опорное изображение может соседним изображением, то есть, изображением, непосредственно предшествующим, и/или изображением, следующим сразу после текущего изображения в порядке отображения, поскольку соседние изображения, наиболее вероятно, должны быть подобны текущему изображению. Однако, в целом, опорное изображение может также быть любым другим изображением, предшествующим или следующим после текущего изображения в порядке отображения и предшествующим текущему изображению в битовом потоке (в порядке декодирования). Это может обеспечить преимущества, например, в случае затемнений/или нелинейного движения в видеоконтенте. Идентификация опорного изображения может, таким образом, также передаваться посредством сигнализации в битовом потоке.The prediction of the current block may be calculated using one reference picture or by weighting the predictions obtained from two or more reference pictures. The reference picture may be an adjacent picture, i.e., the picture immediately preceding and/or the picture immediately following the current picture in the display order, since the adjacent pictures are most likely to be similar to the current picture. However, in general, the reference picture may also be any other picture preceding or following the current picture in display order and preceding the current picture in the bitstream (in decoding order). This can provide advantages, for example, in the case of dimming/or non-linear motion in video content. The reference picture identification can thus also be signaled in the bitstream.
Специальный режим межкадрового предсказания является так называемым би-предсказанием, при котором два опорных изображения используются для формирования предсказания текущего блока. В частности, два предсказания, определенных в соответствующих двух опорных изображениях, объединяются в сигнал предсказания текущего блока. Би-предсказание может приводить в результате к более точному предсказанию текущего блока, чем уни-предсказание, то есть, предсказание, использующее только одно единственное опорное изображение. Более точное предсказание ведет к меньшим разностям между пикселями текущего блока и предсказанием (упоминаемым также как "остатки"), которые могут кодироваться более эффективно, то есть, сжиматься в более короткий битовый поток. В целом, для нахождения соответствующих более чем двух опорных блоков для предсказания текущего блока могут использоваться более двух опорных изображений, то есть, может применяться мультиопорное межкадровое предсказание. Термин "мультиопорное предсказание", таким образом, содержит би-предсказание, а также предсказания, использующие более двух опорных изображений.A special mode of inter-picture prediction is the so-called bi-prediction, in which two reference pictures are used to generate a prediction of the current block. Specifically, two predictions determined in the respective two reference pictures are combined into a prediction signal of the current block. Bi-prediction may result in a more accurate prediction of the current block than uni-prediction, that is, a prediction using only one single reference picture. A more accurate prediction leads to smaller differences between the pixels of the current block and the prediction (also referred to as "residuals"), which can be coded more efficiently, ie, compressed into a shorter bitstream. In general, more than two reference pictures may be used to find corresponding more than two reference blocks for prediction of the current block, that is, multi-reference inter-picture prediction may be applied. The term "multi-reference prediction" thus includes bi-prediction as well as predictions using more than two reference pictures.
Чтобы обеспечить более точную оценку движения, разрешающая способность опорного изображения может быть улучшена путем интерполяции выборок между пикселями. Дробная пиксельная интерполяция может выполняться путем взвешенного усреднения ближайших пикселей. В случае полупиксельной разрешающей способности, например, обычно используется билинейная интерполяция. Другие дробные пиксели вычисляются как среднее значение ближайших пикселей, взвешенных путем инверсии расстояния между соответствующими ближайшими пикселями и предсказываемым пикселем.To provide a more accurate motion estimate, the resolution of the reference image can be improved by interpolating samples between pixels. Fractional pixel interpolation can be performed by weighted averaging of nearby pixels. In the case of half-pixel resolution, for example, bilinear interpolation is commonly used. The other fractional pixels are calculated as the average of the nearest pixels, weighted by inverting the distance between the corresponding nearest pixels and the predicted pixel.
Оценка вектора движения в вычислительном отношении является сложной задачей, в которой вычисляется подобие между текущим блоком и соответствующими блоками предсказания (предикторами), на которые указывают возможные векторы движения в опорном изображении. Как правило, пространство поиска содержит М x М выборок изображения и каждая позиция выборки из М x М возможных позиций тестируется. Тест содержит вычисление меры подобия между N x N позиций опорного блока С и блоком R, расположенным в тестированной возможной позиции пространства поиска. Для упрощения, сумма абсолютных разностей (sum of absolute differences, SAD) является мерой, часто используемой с этой целью и представляемой в виде:Motion vector estimation is computationally complex, in which the similarity between the current block and the corresponding prediction blocks (predictors) pointed to by the possible motion vectors in the reference picture is calculated. Typically, the search space contains M x M image samples and each sample position of the M x M possible positions is tested. The test comprises calculating a measure of similarity between the N x N positions of the reference block C and the block R located at the tested candidate position in the search space. To simplify, the sum of absolute differences (SAD) is a measure often used for this purpose, expressed as:
В приведенной выше формуле x и y определяют возможную позицию внутри пространства поиска, тогда как индексы i и j обозначают выборки внутри опорного блока C и возможного блока R. Возможная позиция часто упоминается как смещение или сдвиг блока, которые отражают представление сопоставления блоков как смещение опорного блока внутри пространства поиска и вычисление подобия между опорным блоком C и перекрывающимся участком пространства поиска. Чтобы уменьшить сложность, количество возможных векторов движения обычно уменьшается, ограничивая возможные векторы движения определенным пространством поиска. Пространство поиска может, например, определяться количеством и/или позициями пикселей, окружающих позицию в опорном изображении, соответствующем позиции текущего блока в текущем изображении. После вычисления SAD для всего М x М возможных позиций x и y, блок R с наилучшим сопоставлением является блоком в позиции, дающей в результате самый низкий SAD, соответствующий наибольшему подобию с опорным блоком C. С другой стороны, возможные векторы движения могут быть определены списком возможных векторов движения, образованным векторами движения соседних блоков.In the formula above, x and y define a candidate position within the search space, while the indices i and j denote the samples within the reference box C and candidate box R. The candidate position is often referred to as the offset or box offset, which reflects the representation of the box matching as a pivot box offset. inside the search space and calculating the similarity between the support block C and the overlapping region of the search space. To reduce complexity, the number of possible motion vectors is usually reduced by limiting the possible motion vectors to a certain search space. The search space may, for example, be defined by the number and/or positions of pixels surrounding a position in the reference image corresponding to the position of the current block in the current image. After calculating the SAD for all M x M possible positions x and y, the block R with the best match is the block at the position resulting in the lowest SAD corresponding to the greatest similarity with the reference block C. On the other hand, the possible motion vectors can be defined by a list possible motion vectors formed by the motion vectors of neighboring blocks.
Векторы движения обычно, по меньшей мере частично, определяются на стороне кодера и сообщаются декодеру посредством сигнализации внутри кодированного битового потока. Однако, векторы движения могут также быть получены в декодере. В таком случае, текущий блок не доступен декодеру и не может использоваться для вычисления подобия блоков, на которые возможные векторы движения указывают в опорном изображении. Поэтому вместо текущего блока используется шаблон, который создается из пикселей уже декодированных блоков ("сопоставление с шаблонами"). Например, могут использоваться уже декодированные пиксели, соседствующие с текущим блоком. Такая оценка движения обеспечивает преимущество сокращения объема сигнализации: вектор движения получают одним и тем же способам в кодере и в декодере и, таким образом, никакая сигнализация не требуется. С другой стороны, точность такой оценки движения может быть ниже.The motion vectors are typically at least partially determined at the encoder side and signaled to the decoder via intra-coded bitstream signaling. However, motion vectors may also be obtained at the decoder. In such a case, the current block is not available to the decoder and cannot be used to calculate the similarity of the blocks that the possible motion vectors point to in the reference picture. Therefore, instead of the current block, a template is used, which is created from the pixels of already decoded blocks ("template matching"). For example, already decoded pixels adjacent to the current block may be used. This motion estimation has the advantage of reducing the amount of signaling: the motion vector is obtained in the same way in the encoder and decoder, and thus no signaling is required. On the other hand, the accuracy of such motion estimation may be lower.
В случае би-предсказания, альтернативно использованию шаблона может также использоваться сопоставление между возможными блоками кодирования в различных опорных изображениях, на которые указывают возможные векторы движения, ("двустороннее сопоставление"), как будет дополнительно уточнено ниже.In the case of bi-prediction, as an alternative to using a template, a matching between candidate coding blocks in different reference pictures pointed to by candidate motion vectors ("two-way matching") can also be used, as will be further specified below.
Чтобы обеспечить компромисс между точностью и издержками на сигнализацию, оценка вектора движения может быть разделена на два этапа: получение вектора движения и детализация вектора движения. Например, получение вектора движения может содержать выбор вектора движения из списка возможных кандидатов. Такой выбранный вектор движения может быть дополнительно детализирован, например, посредством поиска внутри пространства поиска. Поиск в пространстве поиска основан на вычислении функции стоимости для каждого возможного вектора движения, то есть, для каждого возможной позиции блока, на который указывает возможный вектор движения.To provide a trade-off between accuracy and signaling overhead, motion vector estimation can be divided into two steps: motion vector acquisition and motion vector refinement. For example, deriving a motion vector may comprise selecting a motion vector from a list of possible candidates. Such a selected motion vector may be further refined, for example, by searching within the search space. The search in the search space is based on computing a cost function for each possible motion vector, that is, for each possible block position pointed to by the possible motion vector.
Документ JVET-D0029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, авторов X. Chen, J. An, J. Zheng (документ можно найти на сайте: <http://phenix.it-sudparis.eu/jvet/>) показывает детализацию вектора движения, при которой находят первый вектор движения с целочисленной пиксельной разрешающей способностью и дополнительно детализируют его посредством поиска с полупиксельной разрешающей способностью в пространства поиска вокруг первого вектора движения.Document JVET-D0029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching by X. Chen, J. An, J. Zheng (document can be found at: <http://phenix.it-sudparis.eu/jvet />) shows motion vector granularity, which finds a first motion vector with integer pixel resolution and further refines it by searching at half-pixel resolution in search spaces around the first motion vector.
Чтобы выполнить детализацию вектора движения, необходимо сохранить в памяти, по меньшей мере, те выборки, которые необходимы для текущего блока, чтобы выполнить детализацию, то есть, выборки, соответствующие пространству поиска, и выборки, к которым можно получить доступ, когда выполняются сопоставление с шаблонами или двустороннее сопоставление в пространстве поиска.In order to drill down on a motion vector, it is necessary to store in memory at least those samples that are needed for the current block in order to drill down, that is, the samples corresponding to the search space and the samples that can be accessed when matching with patterns or two-way matching in the search space.
Доступ к внешней памяти является важным параметром решения в настоящих реализациях аппаратной архитектуры и/или программного обеспечения. Это вызвано тем фактом, что доступ к внешней памяти замедляет обработку по сравнению с использованием внутренней памяти. С другой стороны, внутренняя память, выполненная на микросхеме, ограничена, например, из-за реализации размера кристалла.Access to external memory is an important decision parameter in current hardware and/or software implementations. This is caused by the fact that accessing external memory slows down processing compared to using internal memory. On the other hand, the internal memory implemented on a chip is limited, for example, due to the implementation of the die size.
Раскрытие сущности изобретенияDisclosure of the essence of the invention
Настоящее раскрытие основывается, например, на наблюдении, что детализация вектора движения, когда она реализуется в сочетании с дробной интерполяцией, может потребовать дополнительного увеличения размера внутренней памяти или даже доступа к внешней памяти. Оба варианта могут быть нежелательны. То же самое имеет место, когда интерполяция применяется для улучшения разрешающей способности предиктора посредством введения дробных позиций выборки.The present disclosure is based, for example, on the observation that motion vector granularity, when implemented in combination with fractional interpolation, may require additional internal memory size or even external memory access. Both options may not be desirable. The same is the case when interpolation is applied to improve predictor resolution by introducing fractional sample positions.
С точки зрения вышеупомянутой проблемы, настоящее раскрытие обеспечивает предсказание вектора движения, которое позволяет учесть количество доступов к внешней памяти и количество выборок, которые необходимы для доступности к детализации вектора движения для кодируемого блока и вычисления предиктора для блока.In terms of the above problem, the present disclosure provides a motion vector prediction that allows for the number of external memory accesses and the number of samples that are necessary to access the motion vector granularity for a block to be coded and calculate a predictor for the block.
Это достигается путем заполнения (замены) значений, которые располагаются вне заданного окна доступа к памяти с целью детализации вектора движения и/или дробной интерполяции с помощью заменяющих значений, основываясь на одной или более выборках внутри окна доступа к памяти.This is achieved by padding (replacing) values that lie outside a given memory access window to refine the motion vector and/or fractionally interpolate with replacement values based on one or more samples within the memory access window.
Это достигается признаками независимых пунктов формулы изобретения.This is achieved by features of independent claims.
В соответствии с вариантом настоящего изобретения, обеспечивается устройство кодирования, определяющее предиктор для кодирования блока видеоизображения. Устройство кодирования содержит схему обработки, выполненную с возможностью получения начального вектора движения для блока, получения детализированного вектора движения для блока, основываясь на начальном векторе движения, и определения предиктора для блока, соответствующего детализированному вектору движения. Схема обработки выполнена с возможностью определения предиктора, соответствующего детализированному вектору движения, используя интерполяцию с помощью интерполяционного фильтра и используя по меньшей мере одно значение выборки для целочисленной позиции выборки, расположенной внутри окна, и заполненное значение выборки для целочисленной позиции выборки, расположенной вне окна для интерполяционной фильтрации, где заполненное значение выборки основано по меньшей мере на одном значении выборки, расположенной внутри окна.According to an embodiment of the present invention, an encoder is provided that determines a predictor for encoding a video block. The encoding device comprises a processing circuit configured to obtain an initial motion vector for the block, obtain a fine-grained motion vector for the block based on the initial motion vector, and determine a predictor for the block corresponding to the fine-grained motion vector. The processing circuit is configured to determine a predictor corresponding to the fine-grained motion vector using interpolation with an interpolation filter and using at least one sample value for an integer sample position located inside the window and a filled sample value for an integer sample position located outside the window for the interpolation filtering, where the populated sample value is based on at least one sample value located within the window.
Согласно другому варианту настоящего изобретения, обеспечивается устройство декодирования для определения предиктора для декодирования блока видеоизображения. Устройство декодирования содержит схему обработки, выполненную с возможностью получения, для блока, начального вектора движения, получения детализированного вектора движения для предиктора, основываясь на начальном векторе движения, и определения предиктора для блока в соответствии с детализированным вектором движения. Схема обработки выполнена с возможностью определения предиктора, соответствующего детализированному вектору движения, используя интерполяцию с помощью интерполяционного фильтра, и использования по меньшей мере одного значения выборки для целочисленной позиции выборки, расположенной внутри окна, и заполненного значения выборки для целочисленной позиции выборки, расположенной вне окна для интерполяционной фильтрации, где заполненное значение выборки основано по меньшей мере на одном значении выборки, расположенной внутри окна.According to another embodiment of the present invention, a decoding apparatus is provided for determining a predictor for decoding a video block. The decoding device comprises a processing circuit configured to obtain, for a block, an initial motion vector, obtain a detailed motion vector for a predictor based on the initial motion vector, and determine a predictor for the block in accordance with the detailed motion vector. The processing circuit is configured to determine a predictor corresponding to the fine-grained motion vector using interpolation with an interpolation filter, and use at least one sample value for an integer sample position located inside the window and a filled sample value for an integer sample position located outside the window for interpolation filtering, where the populated sample value is based on at least one sample value located within the window.
Согласно дополнительному варианту настоящего изобретения, обеспечивается способ кодирования для определения предиктора для кодирования блока видеоизображения. Способ кодирования содержит этапы, на которых получают начальный вектор движения для блока, получают детализированный вектор движения для блока, основываясь на начальном векторе движения, и определяют предиктор для блока, соответствующего детализированному вектору движения, где этап определения определяет предиктор, соответствующий детализированному вектору движения, используя интерполяцию с помощью интерполяционного фильтра, и использует по меньшей мере одно значение выборки целочисленной позиции выборки, расположенной внутри окна, и заполненное значения выборки для целочисленной позиции выборки, расположенной вне окна для интерполяционной фильтрации, где заполненное значение выборки основывается по меньшей мере на одном значении выборки для целочисленной выборки, расположенной внутри окна.According to a further embodiment of the present invention, an encoding method is provided for determining a predictor for encoding a video block. The encoding method comprises obtaining an initial motion vector for the block, obtaining a detailed motion vector for the block based on the initial motion vector, and determining a predictor for the block corresponding to the detailed motion vector, where the determining step determines the predictor corresponding to the detailed motion vector using interpolation with an interpolation filter, and uses at least one sample value of an integer sample position located inside the window and a padded sample value for an integer sample position located outside the window for interpolation filtering, where the padded sample value is based on at least one sample value for an integer selection located inside the window.
Согласно еще одному дополнительному варианту настоящего изобретения, обеспечивается способ декодирования для определения предиктора для декодирования блока видеоизображения. Способ декодирования содержит этапы, на которых получают начальный вектор движения для блока, получают детализированный вектор движения для блока предсказания, основываясь на начальном векторе движения, и определяют предиктор, соответствующий детализированному вектору движения, используя интерполяцию с помощью интерполяционного фильтра, используют по меньшей мере одно значение целочисленной позиции выборки, расположенной внутри окна, и значение заполненной выборки для целочисленной позиции выборки, расположенной вне окна для интерполяционной фильтрации, где значение заполненной выборки основано по меньшей мере на одном значении выборки для целочисленной выборки, расположенной внутри окна.According to another further embodiment of the present invention, a decoding method for determining a predictor for decoding a video block is provided. The decoding method comprises the steps of obtaining an initial motion vector for the block, obtaining a detailed motion vector for the prediction block based on the initial motion vector, and determining a predictor corresponding to the detailed motion vector using interpolation with an interpolation filter, using at least one value an intra-window integer sample position and a populated sample value for the integer sample position outside the window for interpolation filtering, where the populated sample value is based on at least one sample value for the intra-window integer sample.
Такие способы и устройства обеспечивают преимущество в отношении ограничения количества выборок, которые должны быть доступны с целью определения предиктора путем интерполяционной фильтрации, в то же время также избегая дополнительных доступов к запоминающему устройств/(внешней) памяти, хранящей все опорные изображения.Such methods and apparatuses provide the advantage of limiting the number of samples that must be available in order to determine a predictor by interpolation filtering, while also avoiding additional memory/(external) memory accesses storing all reference pictures.
В вариантах осуществления вышеупомянутых вариантов окно является окном для интерполяционной фильтрации.In embodiments of the above options, the window is a window for interpolation filtering.
В соответствии с вариантами осуществления, интерполяция может содержать доступ к значениям выборки в целочисленных позициях выборки внутри окна и/или заполнение по меньшей мере одного значения выборки для целочисленной позиции выборки, расположенной вне окна, посредством заполняющего значения, которое основано по меньшей мере на одной выборке внутри окна и/или на использовании значений целочисленных позиций, к которым получен доступ, а также на заполняющих значениях выборок для выполнения интерполяционной фильтрации.According to embodiments, the interpolation may comprise accessing sample values at integer sample positions within a window and/or padding at least one sample value for an integer sample position located outside the window with a padding value that is based on at least one sample. inside the window and/or on using the values of the integer positions that are accessed, as well as on the padding values of the samples to perform interpolation filtering.
Например, схема обработки может быть выполнена с возможностью определения детализации начального вектора движения, основываясь на пространстве поиска возможных векторов движения, и определения детализированного вектора движения, основываясь на начальном векторе движения и детализации.For example, the processing circuit may be configured to determine the granularity of the initial motion vector based on the search space of possible motion vectors, and determine the granular motion vector based on the initial motion vector and the granularity.
Кроме того, например, схема обработки может быть выполнена с возможностью определения пространства поиска, основываясь на начальном векторе движения. Более конкретно, пространство поиска может быть расположено в позиции, определяемой начальным вектором движения. Например, пространство поиска может быть центрировано вокруг начального вектора движения. Более конкретно, в соответствии с примером, пространство поиска может содержать девять возможных векторов движения с целочисленной выборкой, то есть, начальный вектор движения и восемь возможных векторов движения, расположенных вокруг него.In addition, for example, the processing circuit may be configured to determine the search space based on the initial motion vector. More specifically, the search space may be located at a position determined by the initial motion vector. For example, the search space may be centered around the initial motion vector. More specifically, in accordance with the example, the search space may contain nine possible integer-sample motion vectors, that is, the initial motion vector and eight possible motion vectors located around it.
В вариантах осуществления схема обработки дополнительно выполнена с возможностью реконструкции блока, основываясь на предикторе. Реконструкция может быть выполнена в устройстве декодирования, а также в контуре декодирования устройства кодирования. Варианты раскрытия, связанные со способом, могут содержать соответствующий этап реконструкции блока, основанный на предикторе.In embodiments, the processing circuitry is further configured to reconstruct the block based on the predictor. The reconstruction may be performed in the decoder as well as in the decoding loop of the encoder. The disclosures associated with the method may comprise an appropriate block reconstruction step based on a predictor.
Например, схема обработки может быть выполнена с возможностью получения разности между блоком и предиктором, также называемой "остатком". Более конкретно, схема обработки может быть выполнена с возможностью реконструкции блока, основываясь на предикторе и остатке, еще более конкретно, на сумме предиктора и остатка.For example, the processing circuit may be configured to obtain a difference between a block and a predictor, also referred to as a "residual". More specifically, the processing circuit may be configured to reconstruct the block based on the predictor and the residual, even more specifically, the sum of the predictor and the residual.
Например, значение заполненной выборки (заменяющее значение) определяется зеркальным отражением относительно оси интерполяционного фильтра значения соответственно используемой (оценочной) целочисленной позиции выборки. Интерполяционная фильтрация может быть одномерной или разделяемой двумерной фильтрацией.For example, the value of the filled sample (replacement value) is determined by mirroring about the axis of the interpolation filter the value corresponding to the used (estimated) integer sample position. Interpolation filtering can be 1D or separable 2D filtering.
В одной примерной реализации окно формируется всеми целочисленными позициями выборки, доступными для получения предиктора в позиции, указываемой начальным вектором движения.In one exemplary implementation, the window is formed by all integer sample positions available to obtain a predictor at the position indicated by the initial motion vector.
Окно определяют, например, его вертикальным и/или горизонтальным размером относительно блока с размером блока, расположенного в позиции начального вектора движения, или позицией начального вектора движения, или длиной по вертикали и по горизонтали интерполяционного фильтра, который используется для определения предиктора. Определение блока, "располагающегося" в конкретной позиции, в вариантах осуществления, например, означает ссылку на позицию верхней-левой выборки для блока. Альтернативно, другая позиция выборки может делать ссылку на конкретную позицию или позиция блока может быть определена посредство центровки вокруг конкретной позиции. Схема обработки может быть выполнена с возможностью определения или характеризации позиции и/или размера окна, соответствующего позиции начального вектора движения, размера блока и/или длине по вертикали и по горизонтали интерполяционного фильтра, используемого для определения предиктора.The window is defined, for example, by its vertical and/or horizontal size relative to the block size located at the position of the initial motion vector, or by the position of the initial motion vector, or by the vertical and horizontal length of the interpolation filter that is used to determine the predictor. The definition of a block "located" in a particular position, in the embodiments, for example, means a reference to the position of the top-left sample for the block. Alternatively, another sample position may refer to a particular position, or a block position may be determined by centering around a particular position. The processing circuitry may be configured to determine or characterize the position and/or window size corresponding to the position of the initial motion vector, the block size, and/or the vertical and horizontal lengths of the interpolation filter used to determine the predictor.
В качестве другого примера, заполненное значение выборки для целочисленной позиции вне окна определяют как равное значению выборки по меньшей мере одной используемой целочисленной позиции выборки, расположенной внутри окна, которая является ближайшей к целочисленной позиции выборки, расположенной вне окна. В конкретном примере, в случае одномерного интерполяционного фильтра заполненные значения выборки для многочисленных целочисленных позиций выборки, расположенных вне окна, используются для определения предиктора, используя интерполяцию с помощью интерполяционного фильтра и заполненные значения выборки для всех целочисленных позиций выборки вне окна определяются как равные значению выборки по меньшей мере одной используемой целочисленной позиции выборки, расположенной внутри окна, которая является ближайшей к целочисленным позициям выборки, расположенным вне окна.As another example, the populated sample value for an integer position outside the window is defined as equal to the sample value of at least one usable integer sample position located within the window that is closest to the integer sample position located outside the window. In a particular example, in the case of a one-dimensional interpolation filter, the populated sample values for multiple integer sample positions located outside the window are used to determine the predictor using interpolation with the interpolation filter, and the populated sample values for all integer sample positions outside the window are determined to be equal to the sample value at at least one usable integer sample position located inside the window, which is closest to the integer sample positions located outside the window.
В соответствии с вариантами осуществления, количество значений выборки, которые должны быть заполнены, зависит от разности между начальным вектором движения и детализированным вектором движения.According to embodiments, the number of sample values to be filled depends on the difference between the initial motion vector and the detailed motion vector.
В соответствии с вариантами осуществления, схема обработки выполнена с возможностью определения детализации начального вектора движения путем сопоставления с шаблонами или билатерального сопоставления. Сопоставление с шаблонами или двустороннее сопоставление оценивает значения выборки в целочисленных позициях выборки внутри дополнительного окна. Дополнительное окно содержит пространство поиска и дополнительные целочисленные позиции выборки, доступные для сопоставления с шаблонами или билатерального сопоставления, причем сопоставление с шаблонами или двустороннее сопоставление дополнительно заполняет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной за пределами дополнительного окна, посредством заполненного значения выборки (замены), которое основывается по меньшей мере на одной выборке внутри дополнительного окна и использует значения целочисленных позиций выборки, к которым получен доступ, а также заполненные значения выборки, чтобы выполнить сопоставление с шаблонами или двустороннее сопоставление.According to embodiments, the processing circuit is configured to determine the granularity of the initial motion vector by pattern matching or bilateral matching. Pattern matching, or two-way matching, evaluates sample values at integer sample positions within an additional window. The additional window contains a search space and additional integer sample positions available for pattern matching or bilateral matching, wherein the pattern matching or bilateral matching additionally populates at least one sample value in the integer sample position located outside the additional window with the filled sample value (replacement) that is based on at least one sample within the additional window and uses the values of integer positions of the sample that are accessed, as well as populated sample values, to perform pattern matching or two-way matching.
В одном из вариантов осуществления упомянутое пространство поиска содержит по меньшей мере одну дробную позицию выборки со значением, полученным интерполяционной фильтрацией с помощью фильтра с заданным числом коэффициентов для умножения; и интерполяционная фильтрация использует упомянутые значения целочисленных позиций выборки с полученным доступом, и по меньшей мере одно значение замены (заполненная выборка), чтобы получить упомянутое по меньшей мере одно значение дробной позиции выборки.In one embodiment, said search space comprises at least one fractional sample position with a value obtained by interpolation filtering with a filter with a given number of coefficients to multiply; and interpolation filtering uses said accessed integer sample position values and at least one replacement value (filled sample) to obtain said at least one fractional sample position value.
Более конкретно, заполненное значение выборки, используемое при сопоставлении с шаблонами или при двустороннем сопоставлении, определяют посредством зеркального отражения относительно оси фильтра значения, соответствующего целочисленной позиции выборки, получившего доступ.More specifically, the populated sample value used in pattern matching or two-way matching is determined by mirroring about the filter axis the value corresponding to the integer position of the accessed sample.
Альтернативно, заполненное значение выборки, используемое при сопоставлении с шаблонами или при билатеральном согласовании, определяют как равное значению в ближайших целочисленных позициях выборки с полученным доступом.Alternatively, the padded sample value used in pattern matching or bilateral matching is determined to be equal to the value in the closest integer positions in the accessed sample.
В соответствии с вариантами осуществления, дополнительное окно определяют его вертикальным и/или горизонтальным размерами относительно по меньшей мере одного размера пространства поиска, блока с размером блока, расположенного в позиции начального вектора движения, и позиции начального вектора движения.According to embodiments, the additional window is defined by its vertical and/or horizontal dimensions relative to at least one search space size, a block size block located at the start motion vector position, and the start motion vector position.
Предпочтительно, дополнительное окно является таким же, как и основное окно.Preferably, the additional window is the same as the main window.
В соответствии с вариантами осуществления, детализацию определяют двусторонним сопоставлением и схема обработки выполнена с возможностью получения, по меньшей мере, двух начальных векторов движения, указывающих позиции в различных опорных изображениях и формирующих пару начальных векторов движения.According to embodiments, granularity is determined by two-way matching, and the processing circuit is configured to obtain at least two initial motion vectors indicating positions in different reference pictures and forming a pair of initial motion vectors.
В соответствии с другими вариантами осуществления, детализацию определяют сопоставлением с шаблонами и схема обработки дополнительно выполнена с возможностью получения шаблона для блока и определения детализации начального вектора движения посредством сопоставления с шаблоном в пространстве поиска.In accordance with other embodiments, the granularity is determined by pattern matching and the processing circuit is further configured to obtain a pattern for the block and determine the granularity of the initial motion vector by pattern matching in the search space.
В одном из вариантов осуществления упомянутое пространство поиска содержит по меньшей мере одну дробную позицию выборки со значением, полученным посредством интерполяционной фильтрации с помощью фильтра с заданным числом коэффициентов для умножения; и интерполяционная фильтрация использует упомянутые используемые значения целочисленных позиций выборки и по меньшей мере одно заполненное значение выборки, чтобы получить упомянутое по меньшей мере одно значение дробной позиции выборки.In one embodiment, said search space comprises at least one fractional sample position with a value obtained by interpolation filtering with a filter with a predetermined number of coefficients to multiply; and interpolation filtering uses said used integer sample position values and at least one populated sample value to obtain said at least one fractional sample position value.
В соответствии с вариантом изобретения обеспечивается энергонезависимый считываемый компьютером носитель, хранящий команды, которые, когда исполняются процессором/схемой обработки, выполняют этапы, соответствующие любому из вышеупомянутых вариантов или вариантов осуществления или их сочетаний.In accordance with an embodiment of the invention, a non-volatile computer-readable medium is provided that stores instructions that, when executed by a processor/processing circuit, perform steps corresponding to any of the above embodiments or embodiments, or combinations thereof.
В соответствии с дополнительным конкретным вариантом изобретения, обеспечивается устройство кодирования для кодирования видеоизображений, разделенных на блоки предсказания в битовом потоке, или, соответственно, для кодирования блоков предсказания видеоизображения в битовом потоке. Устройство кодирования содержит схему обработки для определения вектора движения для блока предсказания. Схема обработки выполнена с возможностью получения по меньшей мере одного начального вектора движения и определения детализации начального вектора движения на основе пространства поиска возможных векторов движения, с тем, чтобы получить детализированный вектор движения. Пространство поиска располагается в позиции, заданной начальным вектором движения. Устройство кодирования дополнительно содержит схему кодирования (которая может содержаться в схеме обработки) для кодирования разности между блоком предсказания и предиктором, задаваемым блоком предсказания, находящимся в позиции, основанной на определенном векторе движения, и для формирования битового потока, содержащего кодированную разность и начальный вектор движения. Устройство кодирования дополнительно содержит блок предсказания движения (который может содержаться в схеме обработки) для определения предиктора, соответствующего вектору движения, используя интерполяционную фильтрацию с помощью интерполяционного фильтра. Интерполяционная фильтрация получает доступ к значениям выборки в целочисленных позициях выборки внутри заданного окна, заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне окна, заменяющим значением, основанным по меньшей мере на одной выборке внутри окна, и использует значения выборки целочисленных позиций с полученным доступом доступ, а также заменяющие значения, чтобы выполнить интерполяционную фильтрацию.According to a further specific embodiment of the invention, an encoding apparatus is provided for encoding video images divided into prediction blocks in a bitstream, or respectively for encoding video prediction blocks in a bitstream. The encoding device contains a processing circuit for determining the motion vector for the prediction block. The processing circuit is configured to obtain at least one initial motion vector and determine the granularity of the initial motion vector based on the search space of possible motion vectors so as to obtain the granular motion vector. The search space is located at the position given by the initial motion vector. The coding device further comprises a coding circuit (which may be contained in a processing circuit) for encoding a difference between a prediction block and a predictor given by a prediction block located at a position based on a determined motion vector, and for generating a bitstream containing the coded difference and the initial motion vector. . The encoding device further comprises a motion prediction block (which may be contained in the processing circuit) for determining a predictor corresponding to the motion vector using interpolation filtering with the interpolation filter. Interpolation filtering accesses sample values at integer sample positions within a given window, replaces at least one sample value at an integer sample position located outside the window with a replacement value based on at least one sample inside the window, and uses the sample values of integer positions accessed access as well as replacement values to perform interpolation filtering.
В соответствии с еще одним другим конкретным вариантом изобретения, обеспечивается устройство декодирования для декодирования из битового потока видеоизображений, разделенных на блоки предсказания. Устройство декодирования содержит блок синтаксического анализа (который может содержаться в схеме обработки устройства декодирования) для анализа начального вектора движения из битового потока и кодированной разности между блоком предсказания и предиктором, заданным блоком предсказания в позиции, указываемой детализированным вектором движения. Устройство декодирования содержит схему обработки (например, схему обработки устройства декодирования) для определения вектора движения для блока предсказания. Схема обработки выполнена с возможностью получения по меньшей мере одного начального вектора движения и определения детализации начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения. Пространство поиска располагается в позиции, заданной начальным вектором движения. Также дополнительно, устройство декодирования содержит схему декодирования (которая может содержаться в схеме обработки устройства декодирования) для реконструкции блока предсказания как суммы проанализированной разности и предиктора, заданного блоком предиктора в позиции, указанной детализированным вектором движения, определенным схемой обработки для определения вектора движения. Схема декодирования дополнительно выполнена с возможностью определения предиктора, соответствующего вектору движения, используя интерполяционную фильтрацию с помощью интерполяционного фильтра. Интерполяционная фильтрация получает доступ к значениям выборки в целочисленной позиции выборки внутри заданного окна, заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне окна, на заменяющее значение, которое основано по меньшей мере на одной выборке внутри окна, и использует значения целочисленных позиций выборки, к которым получен доступ, а также заменяющие значения, чтобы выполнить интерполяционную фильтрацию.According to yet another specific embodiment of the invention, a decoding apparatus is provided for decoding from a video bitstream divided into prediction blocks. The decoder includes a parser (which may be contained in the processing circuit of the decoder) for parsing the initial motion vector from the bitstream and the encoded difference between the prediction block and the predictor given by the prediction block at the position indicated by the fine-grained motion vector. The decoding device comprises a processing circuit (eg, a processing circuit of a decoding device) for determining a motion vector for a prediction block. The processing circuit is configured to obtain at least one initial motion vector and determine the granularity of the initial motion vector based on the search space of possible motion vectors to obtain the granular motion vector. The search space is located at the position given by the initial motion vector. Also additionally, the decoding device comprises a decoding circuit (which may be contained in the processing circuit of the decoding device) for reconstructing the prediction block as the sum of the analyzed difference and the predictor given by the predictor block at the position indicated by the fine-grained motion vector determined by the processing circuit for determining the motion vector. The decoding circuit is further configured to determine a predictor corresponding to the motion vector using interpolation filtering with the interpolation filter. Interpolation filtering accesses the sample values at an integer sample position within a given window, replaces at least one sample value at an integer sample position outside the window with a replacement value that is based on at least one sample within the window, and uses the integer values sample positions accessed, as well as replacement values to perform interpolation filtering.
В соответствии с еще одним дополнительным вариантом изобретения, обеспечивается способ кодирования для кодирования видеоизображений в битовом потоке, разделенных на блоки предсказания. Способ кодирования содержит определение вектора движения для блока предсказания. Определение вектора движения содержит этапы, на которых получают по меньшей мере один начальный вектор движения и определяют детализацию начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения. Пространство поиска располагается в позиции, задаваемой начальным вектором движения. Способ кодирования дополнительно содержит кодирование разности между блоком предсказания и предиктором, заданным блоком предсказания в позиции, основанной на определенном векторе движения и для формирования битового потока, содержащего кодированную разность и начальный вектор движения. Способ дополнительно содержит определение предиктора, соответствующего вектору движения, используя интерполяционную фильтрацию с помощью интерполяционного фильтра. Интерполяционная фильтрация получает доступ к значениям выборки в целочисленных позициях выборки внутри заданного окна, заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной за пределами окна, на значение замены, которое основано по меньшей мере на одной выборке внутри окна, и использует значения целочисленной позиции выборки с полученным доступом, а также заменяющие значения, чтобы выполнить интерполяционную фильтрацию.In accordance with another further embodiment of the invention, there is provided a coding method for encoding video images in a bitstream divided into prediction blocks. The encoding method comprises determining a motion vector for a prediction block. The motion vector determination comprises obtaining at least one initial motion vector and determining the granularity of the initial motion vector based on the search space of possible motion vectors to obtain the granular motion vector. The search space is located at the position given by the initial motion vector. The coding method further comprises encoding a difference between the prediction block and a predictor, given the prediction block at a position based on the determined motion vector, and to generate a bitstream containing the coded difference and the initial motion vector. The method further comprises determining a predictor corresponding to the motion vector using interpolation filtering with the interpolation filter. Interpolation filtering accesses sample values at integer sample positions within the specified window, replaces at least one sample value at an integer sample position located outside the window with a replacement value that is based on at least one sample within the window, and uses the values the integer position of the accessed sample, as well as replacement values to perform interpolation filtering.
В соответствии с еще одним дополнительным вариантом изобретения, обеспечивается способ декодирования для декодирования видеоизображений битового потока, разделенных на блоки предсказания. Декодирование содержит этапы синтаксического анализа начального вектора движения битового потока и кодированной разности между блоком предсказания и предиктором, задаваемым блоком предсказания в позиции, указываемой детализированным вектором движения. Способ дополнительно содержит определение вектора движения для блока предсказания. Определение вектора движения содержит этапы, на которых получают по меньшей мере один начальный вектор движения и определяют детализацию начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения. Пространство поиска располагается в позиции, задаваемой начальным вектором движения. Способ декодирования дополнительно содержит реконструкцию блока предсказания как суммы проанализированной разности и предиктора, задаваемого блоком предсказания в позиции, указываемой детализированным вектором движения, определенным на этапе определения вектора движения. Кроме того, способ содержит определение предиктора, соответствующего вектору движения, используя интерполяционную фильтрацию с помощью интерполяционного фильтра. Интерполяционная фильтрация получает доступ к значениям выборки в целочисленных позициях выборки внутри заданного окна, заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки внутри окна на заменяющее значение, которое основано по меньшей мере на одной выборке внутри окна, и использует значения целочисленных позиций выборки с полученным доступом, а также заменяющие значения для выполнения интерполяционной фильтрации.According to yet another further embodiment of the invention, a decoding method is provided for decoding bitstream video images divided into prediction blocks. The decoding comprises the steps of parsing an initial bitstream motion vector and an encoded difference between a prediction block and a predictor specified by the prediction block at a position indicated by the fine-grained motion vector. The method further comprises determining a motion vector for the prediction block. The motion vector determination comprises obtaining at least one initial motion vector and determining the granularity of the initial motion vector based on the search space of possible motion vectors to obtain the granular motion vector. The search space is located at the position given by the initial motion vector. The decoding method further comprises reconstructing the prediction block as the sum of the analyzed difference and the predictor given by the prediction block at a position indicated by the fine-grained motion vector determined in the motion vector determination step. In addition, the method comprises determining a predictor corresponding to the motion vector using interpolation filtering with the interpolation filter. Interpolation filtering accesses the sample values at integer sample positions within the specified window, replaces at least one sample value at the integer sample position within the window with a replacement value that is based on at least one sample within the window, and uses the integer sample position values from accessed, as well as substitute values for performing interpolation filtering.
Дополнительные преимущества и варианты осуществления настоящего изобретения изложены в зависимых пунктах формулы изобретения.Additional advantages and embodiments of the present invention are set forth in the dependent claims.
Краткое описание чертежейBrief description of the drawings
Ниже примерные варианты осуществления описываются более подробно со ссылкой на прилагаемые чертежи, на которых:The following exemplary embodiments are described in more detail with reference to the accompanying drawings, in which:
Фиг. 1 - блок-схема примерной структуры кодера, в которой могут использоваться получение вектора движения и детализация;Fig. 1 is a block diagram of an exemplary encoder structure in which motion vector acquisition and granularity may be used;
Фиг. 2 - блок-схема примерной структуры декодера, в которой могут использоваться получение вектора движения и детализация;Fig. 2 is a block diagram of an exemplary decoder structure in which motion vector acquisition and granularity may be used;
Фиг. 3 – примерное сопоставление с шаблонами, пригодное для би-предсказания;Fig. 3 is an approximate pattern matching suitable for bi-prediction;
Фиг. 4 - примерное сопоставление с шаблонами, пригодное для уни- и би-предсказания;Fig. 4 exemplary pattern matching suitable for uni- and bi-prediction;
Фиг. 5 - этапы получения вектора движения без предоставления начальных векторов движения, которые должны быть детализированы в битовом потоке;Fig. 5 shows steps for obtaining a motion vector without providing initial motion vectors to be detailed in the bitstream;
Фиг. 6 - концепция двустороннего сопоставления;Fig. 6 - the concept of two-way comparison;
Фиг. 7 - примерные аппаратные средства для реализации варианта осуществления изобретения;Fig. 7 shows exemplary hardware for implementing an embodiment of the invention;
Фиг. 8 – примерное окно для блока кодирования с выборками, которые должны иметься для получения доступа;Fig. 8 is an exemplary window for a coding block with the samples that must be available to gain access;
Фиг. 9 - пространство итеративного поиска;Fig. 9 - iterative search space;
Фиг. 10 - расширение окна доступа к памяти в горизонтальном направления за счет интерполяционной фильтрации;Fig. 10 - expansion of the memory access window in the horizontal direction due to interpolation filtering;
Фиг. 11 – традиционная схема выполнения детализации вектора движения, основанная на пространстве поиска и получении предсказания посредством интерполяции;Fig. 11 is a conventional scheme for performing motion vector refinement based on search space and obtaining prediction by interpolation;
Фиг. 12 - блок-схема последовательности выполнения операций получения вектора движения и получения предсказания согласно традиционному примеру, показанному на фиг. 11;Fig. 12 is a flowchart of motion vector acquisition and prediction acquisition according to the conventional example shown in FIG. eleven;
Фиг. 13 - схема выполнения детализации вектора движения, основываясь на пространстве поиска и получении предсказания посредством интерполяции в соответствии с примерными вариантами осуществления настоящего изобретения;Fig. 13 is a diagram of how to refine a motion vector based on a search space and obtain prediction by interpolation in accordance with exemplary embodiments of the present invention;
Фиг. 14 – заполнение двух выборок, чтобы позволить вычисление дробной позиции;Fig. 14 - filling two samples to allow calculation of the fractional position;
Фиг. 15 – заполнение четырех выборок, чтобы позволить сопоставление с шаблонами на границах пространства поиска;Fig. 15 - padding four samples to allow pattern matching at the boundaries of the search space;
Фиг. 16 – примерные дробные позиции, интерполяция которых не требует заполнения;Fig. 16 - approximate fractional positions, the interpolation of which does not require filling;
Фиг. 17 - блок-схема последовательности выполнения детализации вектора движения и получения предсказания в соответствии с примерными вариантами осуществления, показанными на фиг. 13;Fig. 17 is a flowchart for performing motion vector refinement and prediction acquisition according to the exemplary embodiments shown in FIG. 13;
Фиг. 18 - определение окна доступа к памяти в отношении блока предсказания;Fig. 18 - determining the memory access window in relation to the prediction block;
Фиг. 19 – способ, соответствующий варианту осуществления;Fig. 19 - method corresponding to the embodiment;
Фиг. 20 - схема выполнения детализации вектора движения, основанная на пространстве поиска, и получения предсказания посредством интерполяции в соответствии с дополнительными примерными вариантами осуществления настоящего изобретения; иFig. 20 is a diagram of performing motion vector refinement based on search space and obtaining prediction by interpolation in accordance with further exemplary embodiments of the present invention; and
Фиг. 21 - блок-схема последовательности выполнения детализации вектора движения и получения предсказания в соответствии с примерными вариантами осуществления, показанными на фиг. 20.Fig. 21 is a flowchart for performing motion vector refinement and prediction acquisition according to the exemplary embodiments shown in FIG. twenty.
Осуществление изобретенияImplementation of the invention
Настоящее раскрытие относится к регулированию количества выборок, которые должны быть доступны для выполнения детализации вектора движения и интерполяции, чтобы получить дробные позиции в опорном изображении, а также в предикторе.The present disclosure relates to adjusting the number of samples that should be available to perform motion vector refinement and interpolation to obtain fractional positions in a reference picture as well as in a predictor.
Как упомянуто выше, доступ к внешней памяти является одним из важнейших факторов при проектировании сегодняшних архитектур аппаратных средств и программного обеспечения. Оценка вектора движения, особенно, когда она содержит сопоставление с шаблонами или двустороннее сопоставление, например, в случае детализации вектора движения, может также использоваться вместе с интерполяционной фильтрацией, чтобы получить дробные позиции пространства поиска. Использование интерполяционной фильтрации может потребовать увеличения количества выборок, к которым необходимо получать доступ из памяти. Однако, это может привести либо к увеличению дорогостоящей памяти на микросхемах, либо к увеличенному количеству доступов к внешней памяти, что, с другой стороны, замедляет реализацию. Особенно на стороне декодера эти проблемы могут привести к более дорогим или более медленным приложениям, который нежелательны.As mentioned above, access to external memory is one of the most important factors in the design of today's hardware and software architectures. Motion vector estimation, especially when it includes pattern matching or two-way matching, such as in the case of motion vector granularity, can also be used in conjunction with interpolation filtering to obtain fractional search space positions. The use of interpolation filtering may require an increase in the number of samples that must be accessed from memory. However, this can lead either to an increase in expensive on-chip memory, or to an increased number of external memory accesses, which, on the other hand, slows down the implementation. Especially on the decoder side, these problems can lead to more expensive or slower applications, which are undesirable.
Чтобы предотвратить такую ситуацию, настоящее раскрытие обеспечивает ограничение количества доступов внешней памяти к заданным окнам.To prevent such a situation, the present disclosure provides for limiting the number of external memory accesses to given windows.
Окна могут иметь заданный размер. Например, при детализации вектора движения окно может содержать по меньшей мере все позиции пространства поиска. Выборки, к которым получен доступ, являются выборками, которые фактически используются для определенного блока и его пространства поиска, чтобы выполнить сопоставление с шаблонами или двустороннее сопоставление, например, все выборки, которые используются для вычисления функции стоимости с помощью функции стоимости для сопоставления с шаблонами или двустороннего сопоставления. Доступные выборки содержат, кроме того, выборки, к которым нет необходимости получать доступ во время конкретного сопоставления с шаблонами или двустороннего сопоставления для конкретного блока, например, потому что пространство поиска была итеративно определено, чтобы содержать различные выборки и сопоставление с шаблонами или двустороннее сопоставление на этих выборках не требуют всех доступных пикселей. Доступные выборки содержат также выборки, которые, возможно, могли бы быть результатом любого итеративно определенного пространства поиска (то есть, предполагая любой контент блоков), и, возможно, также выборки, к которым мог бы быть получен доступ для выполнения сопоставление с шаблонами в таких возможных пространствах поиска.Windows can be of a given size. For example, when refining the motion vector, the window may contain at least all positions in the search space. The samples accessed are the samples that are actually used for a particular block and its search space to perform pattern matching or two-way matching, for example, all samples that are used to compute a cost function with a template matching cost function or bilateral comparison. The available samples contain, in addition, samples that do not need to be accessed during a particular pattern matching or two-way matching for a particular block, for example, because the search space has been iteratively defined to contain different samples and pattern matching or two-way matching on these samples do not require all available pixels. The available selections also contain selections that could possibly be the result of any iteratively defined search space (that is, assuming any block content), and possibly also selections that could be accessed to perform pattern matching in such possible search spaces.
В случае формирования конечного предсказания с помощью интерполяционной фильтрации величина расширения требуемого окна доступа к памяти при традиционном подходе зависит от максимальной разности между определенным детализированным вектором движения и начальным вектором движения.In the case of generating a finite prediction using interpolation filtering, the amount of expansion of the required memory access window in the traditional approach depends on the maximum difference between a certain fine-grained motion vector and the initial motion vector.
Заметим, что окно может быть определено меньшим, чем все доступные выборки. Такое определение окна позволяет поддерживать меньшее количество выборок, которые должны храниться во внутренней памяти микросхеме и извлекаться из внешней памяти. Настоящее раскрытие, таким образом, ограничивает количество целочисленных выборок, которые должны храниться/кэшироваться/буферироваться с целью операций, связанных с сопоставлением с шаблонами или двусторонним сопоставлением для конкретного блока. Это не означает, что другие выборки обычно не существуют/недоступны в другой памяти или в запоминающем устройстве. Как обсуждалось выше, обычно все опорные изображения могут храниться во внешней памяти. Однако, с целью сопоставления с шаблонами или двустороннего сопоставления, только их часть, а именно, выборки внутри окна, могут быть загружены и использоваться для сопоставления с шаблонами.Note that the window can be defined to be smaller than all available samples. This window definition allows for fewer samples to be stored in the chip's internal memory and retrieved from external memory. The present disclosure thus limits the number of integer samples that must be stored/cached/buffered for the purposes of pattern matching or two-way matching operations for a particular block. This does not mean that other samples do not normally exist/are not available in other memory or storage media. As discussed above, typically all reference pictures may be stored in an external memory. However, for the purposes of pattern matching or two-way matching, only a subset of them, namely the samples within the window, can be loaded and used for pattern matching.
Обеспечение такого ограниченного окна содержит реализации, которые используют это и фактически загружают только выборки окна. Чтобы гарантировать подобную работу кодера и декодера, определение окна может быть задано заранее в стандарте или сообщаться в битовом потоке. Особенно, если детализированные векторы движения используются для формирования опорных изображений, то и кодер и декодер должны использовать один и тот же подход.Providing such a limited window contains implementations that use this and actually load only window samples. To ensure that the encoder and decoder work in a similar way, the window definition may be predefined in the standard or communicated in the bitstream. Especially if detailed motion vectors are used to generate reference pictures, then both encoder and decoder should use the same approach.
На фиг. 1 показан кодер 100, который содержит вход для приема выборок входного изображения кадров или изображений видеопотока и выход формирования кодированного битового видеопотока. Термин "кадр" в этом раскрытии используется как синоним изображения. Однако, следует заметить, что настоящее раскрытие также применимо к полям в случае, если применяется чередование. В целом, изображение содержит m раз по n пикселей. Это соответствует выборкам изображения и может содержать один или более цветовых компонент. Для простоты, последующее описание относится к пикселям, означающим выборки яркости. Однако, следует заметить, что поиск вектора движения согласно изобретению может быть применим к любому цветовому компоненту, содержащему цветность или компоненты пространства поиска, такие как RGB и т. п. С другой стороны, может быть предпочтительно выполнять оценку вектора движения только для одного компонента и применять определенный вектор движения к большему (или всем) количеству компонент.In FIG. 1 shows an encoder 100 that includes an input for receiving samples of input frames or images of a video stream and an output for generating an encoded video bitstream. The term "frame" in this disclosure is used as a synonym for the image. However, it should be noted that the present disclosure also applies to fields in case interleaving is applied. In general, the image contains m times n pixels. It corresponds to image samples and may contain one or more color components. For simplicity, the following description refers to pixels representing brightness samples. However, it should be noted that the motion vector search according to the invention may be applicable to any color component containing chrominance or search space components such as RGB, etc. On the other hand, it may be preferable to perform motion vector estimation for only one component and apply a specific motion vector to more (or all) of the components.
Входные блоки, которые должны кодироваться, не обязательно должны иметь один и тот же размер. Одно изображение может содержать блоки различных размеров и растр блоков различных изображений также может различаться.The input blocks to be encoded need not be of the same size. One image may contain blocks of different sizes, and the raster of blocks of different images may also vary.
В поясняющей реализации кодер 100 выполнен с возможностью применения к видеопотоку предсказания, преобразования, квантования и статистического кодирования. Преобразование, квантование и статистическое кодирование выполняются, соответственно, блоком 106 преобразования, блоком 108 квантования и блоком 170 статистического кодирования с тем, чтобы сформировать в качестве выходного результата кодированный битовый видеопоток.In an explanatory implementation, the encoder 100 is configured to apply prediction, transformation, quantization, and entropy coding to the video stream. Transformation, quantization, and entropy encoding are performed by
Видеопоток может содержать множество кадров, причем каждый кадр делится на блоки определенного размера, которые кодируются с внутрикадровым или межкадровым предсказанием. Блоки, например, первого кадра видеопотока кодируются с внутрикадровым предсказанием посредством блока 154 внутрикадрового предсказания. Кадр с внутрикадровым предсказанием кодируется, используя только информацию, содержащуюся внутри того же самого кадра, так чтобы он мог независимо декодироваться, и может обеспечить точку ввода в битовый поток для произвольного доступа. Блоки других кадров видеопотока могут кодироваться с межкадровым предсказанием посредством блока 144 межкадрового предсказания: информация от ранее кодированных кадров (опорных кадров) используется для уменьшения временной избыточности, так чтобы каждый блок кадра с межкадровым кодированием был предсказан из блока, содержащегося в опорном кадре. Блок 160 выбора режима выполнен с возможностью выбора, должен ли блок кадра обрабатываться блоком 154 внутрикадрового предсказания или блоком 144 межкадрового предсказания. Этот блок 160 выбора режима также управляет параметрами внутрикадрового или межкадрового предсказания. Чтобы позволить обновление информации об изображении, блоки с внутрикадровым кодированием могут обеспечиваться внутри кадров с межкадровым кодированием. Кроме того, кадры с внутрикадровым кодированием, которые содержат только блоки с внутрикадровым кодированием, могут регулярно вставляться в видеопоследовательность, чтобы обеспечить точки ввода для декодирования, то есть, точки, где декодер может начать декодирование, не имея информацию от ранее кодированных кадров.The video stream may contain multiple frames, with each frame being divided into blocks of a certain size, which are encoded with intra-frame or inter-frame prediction. Blocks, for example, of the first frame of the video stream are encoded with intra-prediction by
Блок 152 внутрикадровой оценки и блок 154 внутрикадрового предсказания являются блоками, выполняющими внутрикадровое предсказание. В частности, блок 152 внутрикадровой оценки может получить режим предсказания, основываясь также на знании исходного изображения, тогда как блок 154 внутрикадрового предсказания обеспечивает соответствующее предиктор, то есть, выборки, предсказываемые, используя выбранный режим предсказания для кодирования разности. Чтобы выполнить пространственное или временное предсказание, кодированные блоки могут дополнительно обрабатываться блоком 110 обратного квантования и блоком 112 обратного преобразования. После реконструкции блока применяют блок 120 контурной фильтрации, чтобы дополнительно улучшить качество декодированного изображения. Отфильтрованные блоки затем формируют опорные кадры, которые далее сохраняются в буфере 130 декодированного изображения. Такой контур декодирования (декодер) на стороне кодера обеспечивает преимущество создания опорных кадров, которые являются такими же, как опорные изображения, реконструированные на стороне декодера. Соответственно, сторона кодера и декодера действуют соответствующим способом. Термин "реконструкция" здесь относится к получению реконструированного блока, добавляя к декодированному блоку остатка блок предсказания.The
Блок 142 межкадровой оценки принимает в качестве входного сигнала блок текущего кадра или изображения, который должен быть межкадрово кодированным, и один или более опорных кадров из буфера 130 декодированного изображения. Оценка движения выполняется блоком 142 межкадровой оценки, при этом компенсация движения применяется блоком 144 межкадрового предсказания. Оценка движения используется для получения вектора движения и опорного кадра, основываясь на определенной функции стоимости, например, используя также исходное изображение, которое должно кодироваться. Например, блок 142 оценки движения может обеспечить оценку начального вектора движения. Начальный вектор движения может затем передаваться посредством сигнализации внутри битового потока в форме вектора напрямую или как индекс, ссылающийся на возможный вектор движения в рамках списка возможных векторов, созданного на основе заданного правила таким же образом, как в кодере и декодере. Компенсация движения затем получает предиктор текущего блока как преобразование блока, совмещенного с текущим блоком в опорном кадре, то есть, посредством вектора движения. Блок 144 межкадрового предсказания выводит блок предсказания для текущего блока, в котором упомянутый блок предсказания минимизирует функцию стоимости. Например, функция стоимости может быть разностью между текущим блоком, который должен кодироваться, и его блоком предсказания, то есть, функция стоимости минимизирует остаточный блок. Минимизация остаточного блока основывается, например, на вычислении суммы абсолютных разностей (sum of absolute differences, SAD) между всеми пикселями (выборками) текущего блока и возможным блоком в возможном опорном изображении. Однако, в целом, может использоваться любая другая метрика подобия, такая как среднеквадратичная погрешность (mean square error, MSE) или структурная метрика подобия (structural similarity metric, SSIM).The
Однако, функция стоимости может также быть количеством битов, необходимых для кодирования такого межкадрового блока и/или искажения в результате такого кодирования. Таким образом, процедура оптимизации степени искажения может использоваться для принятия решения о выборе вектора движения и/или, в целом, о параметрах кодирования, таких как использовать ли для блока межкадровое или внутрикадровое предсказание и с какими установками.However, the cost function may also be the number of bits required to encode such an interframe block and/or the distortion resulting from such encoding. Thus, the distortion degree optimization procedure can be used to decide on the choice of motion vector and/or, in general, on coding parameters, such as whether to use inter-prediction or intra-prediction for the block, and with what settings.
Блок 152 внутрикадровой оценки и блок 154 внутрикадрового предсказания принимают в качестве входного сигнала блок текущего кадра или изображение, которое должно быть внутрикадрово кодированным, и одну или более опорных выборок из уже реконструированной области текущего кадра. Внутрикадровое предсказание затем описывает пиксели текущего блока текущего кадра с точки зрения функции опорных выборок текущего кадра. Блок 154 внутрикадрового предсказания выводит блок предсказания для текущего блока, где упомянутый блок предсказания предпочтительно минимизирует разность между текущим блоком, который должен быть кодирован, и его блоком предсказания, то есть, минимизирует остаточный блок. Минимизация остаточного блока может быть основана, например, на процедуре оптимизации степени искажения. В частности, блок предсказания получается в результате направленной интерполяции опорных выборок. Направление может быть определено оптимизацией степени искажения и/или вычислением меры подобия, как упомянуто выше, в сочетании с межкадровым предсказанием.The
Блок 142 межкадровой оценки принимает в качестве входного сигнала блок или, более универсально, сформированную выборку изображения текущего кадра или изображения, которое должно быть межкадрово кодировано, и два или более уже декодированных изображений 231. Межкадровое предсказание затем описывает текущую выборку изображения текущего кадра с точки зрения векторов движения-опорных выборок изображения опорных изображений. Блок 142 межкадрового предсказания выводит один или более векторов движения для текущей выборки изображения, в которой упомянутые опорные выборки изображения, на которые указывают векторы движения, предпочтительно минимизируют разность между текущей выборкой изображения, которая должна быть кодирована, и ее опорными выборками изображения, то есть, минимизируют выборку остаточного изображения. Предиктор для текущего блока затем обеспечивается блоком 144 межкадрового предсказания для кодирования разности.The
Разность между текущим блоком и его предсказанием, то есть, остаточным блоком 105, затем преобразуется блоком 106 преобразования. Коэффициенты 107 преобразования квантуются блоком 108 квантования и статистически кодируются блоком 170 статистического квантования. Сформированные таким образом кодированные данные 171 изображения, то есть, кодированный битовый видеопоток, содержат блоки с внутрикадровым кодированием и блоки с межкадровым кодированием и соответствующую сигнализацию (такую как индикация режима, индикация вектора движения и/или направление внутрикадрового предсказания). Блок 106 преобразования может применять линейное преобразование, такое как преобразование Фурье или дискретное косинусное преобразование (Fourier/Discrete Cosine Transformation, DFT/FFT или DCT). Такое преобразование в пространственной частотной области обеспечивает преимущество, состоящее в том, что результирующие коэффициенты 107 имеют обычно более высокие значения на более низких частотах. Таким образом, после эффективного сканирования коэффициентов (такого как зигзаг, zig-zag) и квантования результирующая последовательность значений обычно имеет некоторые большие значения в начале и в конце с прохождением нулей. Это позволяет иметь эффективное дополнительное кодирование. Блок 108 квантования 108 выполняет фактическое сжатие с потерями, снижая разрешающую способность значений коэффициентов. Блок 170 статистического кодирования затем назначает значениям коэффициентов двоичные кодовые слова, чтобы создать битовый поток. Блок 170 статистического кодирования также кодирует сигнальную информацию (не показано на фиг. 1).The difference between the current block and its prediction, that is, the residual block 105, is then transformed by the
На фиг. 2 показан видеодекодер 200. Видеодекодер 200 содержит, в частности, буфер 230 декодированного изображения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания, который является блоком предсказания блоков изображения. Буфер 230 декодированного изображения выполнен с возможностью хранения по меньшей мере одного (для уни-предсказания) или по меньшей мере два (для би-предсказания) опорных кадров, реконструированных из кодированного битового видеопотока, причем упомянутые опорные кадры отличаются от текущего кадра (текуще декодированного кадра) кодированного битового видеопотока. Блок 254 внутрикадрового предсказания выполнен с возможностью формирования блока предсказания, который является оценкой блока, который должен быть декодирован. Блок 254 внутрикадрового предсказания выполнен с возможностью формирования этого предсказания, основываясь на опорных выборках, которые получают из буфера 230 декодированного изображения.In FIG. 2 shows a video decoder 200. The video decoder 200 includes, in particular, a decoded
Декодер 200 выполнен с возможностью декодирования кодированного битового видеопотока, сформированного видеокодером 100, и, предпочтительно, декодер 200 и кодер 100 вместе формируют идентичные предсказания для соответствующего блока, который должен кодироваться/декодироваться. Признаки буфера 230 декодированного изображения, реконструированного блока 215, буфера 216 и блока 254 внутрикадрового предсказания схожи с подобными признаками буфера 130 декодированного изображения, реконструированного блока 115, буфера 116 и блока 154 внутрикадрового предсказания, показанными на фиг. 1.Decoder 200 is configured to decode the encoded video bitstream generated by video encoder 100, and preferably decoder 200 and encoder 100 together generate identical predictions for the respective block to be encoded/decoded. The features of decoded
Видеодекодер 200 содержит дополнительные блоки, которые также присутствуют в видеокодере 100, как например, блок 210 обратного квантования, блок 212 обратного преобразования и блок 220 циклической фильтрации, которые соответственно схожи с блоком 110 обратного квантования, блоком 112 обратного преобразования и блоком 120 контурной фильтрации видеокодера 100.Video decoder 200 contains additional blocks that are also present in video encoder 100, such as
Блок 204 статистического декодирования выполнен с возможностью декодирования принятого кодированного битового видеопотока и, соответственно, получения коэффициентов 209 преобразования квантованного остатка и информации сигнализации. Коэффициенты 209 преобразования квантованного остатка подаются на блок 210 обратного квантования и на блок 212 обратного преобразования, чтобы сформировать остаточный блок. Остаточный блок добавляется к блоку 265 предсказания и результат сложения подается на блок 220 контурной фильтрации, чтобы получить декодированную видеоинформацию. Кадры декодированной видеоинформации могут быть сохранены в буфере 230 декодированного изображения и служат в качестве декодированного изображения 231 для межкадрового предсказания.The
В целом, блоки 154 и 254 внутрикадрового предсказания, показанные на фиг. 1 и 2, могут использовать опорные выборки из уже кодированной области, чтобы формировать сигналы предсказания для блоков, которые должны быть кодированы или должны быть декодированы.In general, intra prediction blocks 154 and 254 shown in FIG. 1 and 2 may use reference samples from an already coded region to generate prediction signals for blocks to be coded or to be decoded.
Блок 204 статистического декодирования принимает в качестве своего входного сигнала кодированный битовый поток 171. В целом, битовый поток сначала синтаксически анализируется, то есть, параметры сигнализации и остатки извлекаются из битового потока. Как правило, синтаксис и семантика битового потока определяются стандартом, так чтобы кодеры и декодеры могли работать совместимым способом. Как описано выше в разделе "Уровень техники", кодированный битовый поток содержит не только остатки предсказания. В случае предсказания компенсации движения, индикация вектора движения также кодируется в битовом потоке и семантически анализируется в нем в декодере. Индикация вектора движения может задаваться посредством опорного изображения, в котором обеспечивается вектор движения, и посредством координат вектора движения. До этого момента было рассмотрено кодирование полных векторов движения. Однако, также может кодироваться только разность между текущим вектором движения и предыдущим вектором движения в битовом потоке. Этот подход позволяет воспользоваться избыточностью между векторами движения соседних блоков.The
Чтобы эффективно кодировать опорное изображение, кодек H.265 (смотрите: сектор по стандартизации телекоммуникаций в составе Международного союза по телекоммуникациям (ITU-T), H265, Series H: Audiovisual and multimedia systems: High Efficient Video Coding) обеспечивает список опорных изображений, назначаемых для списка индексов соответствующих опорных кадров. Опорный кадр затем сообщается посредством сигнализации в битовом потоке, включая в него соответствующий назначенный индекс из списка. Такой список может определяться в стандарте или сообщаться посредством сигнализации в начале видеоинформации или набора из множества кадров. Следует заметить, что в стандарте H.265 имеется два списка определенных опорных изображений, называемых L0 и L1. Опорное изображение затем сообщается посредством сигнализации в битовом потоке, указывая список (L0 или L1) и указывая индекс в том списке, связанный с требуемым опорным изображением. Обеспечение двух или более списков может иметь преимущества для лучшего сжатия. Например, L0 может использоваться как для однонаправленных слоев с межкадровым предсказанием, так и для двунаправленных слоев с межкадровым предсказанием, тогда как L1 может использоваться только для двунаправленных слоев с межкадровым предсказанием. Однако, в целом, настоящее раскрытие не ограничивается никаким контентом списков L0 и L1.To efficiently encode a reference picture, the H.265 codec (see: Telecommunications Standards Sector of the International Telecommunications Union (ITU-T), H265, Series H: Audiovisual and multimedia systems: High Efficient Video Coding) provides a list of reference pictures assigned to for a list of indexes of the corresponding key frames. The reference frame is then signaled in the bitstream, including the corresponding assigned index from the list. Such a list may be defined in the standard or signaled at the start of video information or a set of multiple frames. It should be noted that in the H.265 standard there are two lists of defined reference pictures, called L0 and L1. The reference picture is then signaled in the bitstream indicating the list (L0 or L1) and indicating the index in that list associated with the desired reference picture. Providing two or more lists may have benefits for better compression. For example, L0 can be used for both unidirectional inter prediction layers and bidirectional inter prediction layers, while L1 can only be used for bidirectional inter prediction layers. However, in general, the present disclosure is not limited to any content of the L0 and L1 lists.
Списки L0 и L1 могут быть определены в стандарте и фиксированы. Однако, большей гибкости при кодировании/декодировании можно достигнуть посредством их сигнализации в начале видеопоследовательности. Соответственно, кодер может конфигурировать списки L0 и L1 с конкретными опорными изображениями, упорядоченными согласно индексу. Списки L0 и L1 могут иметь один и тот же фиксированный размер. В целом, может иметься более двух списков. Вектор движения может сообщаться напрямую координатами в опорном изображении. Альтернативно, как также указано в H.265, список возможных векторов движения может быть создан и индекс, связанный в списке с конкретным вектором движения, может быть передан.Lists L0 and L1 can be defined in the standard and fixed. However, more flexibility in encoding/decoding can be achieved by signaling them at the start of a video sequence. Accordingly, the encoder may configure the lists L0 and L1 with specific reference pictures ordered according to the index. Lists L0 and L1 can have the same fixed size. In general, there may be more than two lists. The motion vector may be directly communicated by coordinates in the reference picture. Alternatively, as also specified in H.265, a list of possible motion vectors may be created and an index associated in the list with a particular motion vector may be transmitted.
Векторы движения текущего блока обычно коррелируются с векторами движения соседних блоков в текущем изображении или в ранее кодированных изображениях. Причина в том, что соседние блоки, вероятно, должны соответствовать такому же движущемуся объекту с подобным движением, и движение объекта вряд ли резко изменяется во времени. Следовательно, использование векторов движения в соседних блоках в качестве предикторов уменьшает размер сообщаемой разности векторов движения. Предикторы векторов движения (Motion Vector Predictor, MVP) обычно получают из уже кодированных/декодированных векторов движения из пространственного соседства или временного соседства или из совмещенных блоков в опорном изображении. В стандарте H.264/AVC это делается, создавая разумную компонентную медиану из трех пространственно соседствующих векторов движения. Используя этот подход, не требуется никакой сигнализации предиктора. Временные MVP из совмещенного блока в опорном изображении рассматривают только в так называемом временном прямом режиме H.264/AVC. Прямые режимы H.264/AVC также используются для получения других данных движения, отличных от векторов движения. Следовательно, они больше связаны с концепцией слияния блоков в HEVC. В HEVC подход неявного получения MVP был заменен технологией, известной как конкуренция векторов движения, при которой явно сигнализируется, какой MVP от списка MVP используется для получения вектора движения. Переменная структура блока квадродерева кодирования в HEVC может привести в результате к одному блоку, имеющему несколько соседних блоков с векторами движения в качестве потенциально возможных MVP. Беря соседа с левой стороны в качестве примера, в худшем случае блок предсказания яркости 64x64 может иметь 16 блоков предсказания яркости 4x4 слева, когда блок дерева кодирования яркости 64x64 дополнительно не делится, и левый блок разделяется на максимальную глубину.The motion vectors of the current block are usually correlated with the motion vectors of neighboring blocks in the current picture or in previously encoded pictures. The reason is that neighboring blocks are likely to correspond to the same moving object with similar motion, and the object's motion is unlikely to change dramatically over time. Therefore, using motion vectors in adjacent blocks as predictors reduces the size of the reported motion vector difference. Motion vector predictors (MVPs) are typically derived from already encoded/decoded motion vectors from spatial or temporal neighborhood or from aligned blocks in a reference picture. In the H.264/AVC standard, this is done by creating a reasonable component median of three spatially adjacent motion vectors. Using this approach, no predictor signaling is required. Temporal MVPs from a merged block in a reference picture are only considered in the so-called H.264/AVC temporal direct mode. H.264/AVC direct modes are also used to acquire motion data other than motion vectors. Hence, they are more related to the concept of block merging in HEVC. In HEVC, the implicit MVP derivation approach has been replaced by a technology known as motion vector contention, which explicitly signals which MVP from the MVP list is used to derive the motion vector. The variable coding quadtree block structure in HEVC may result in a single block having multiple neighboring blocks with motion vectors as potential MVPs. Taking the neighbor on the left side as an example, in the worst case, a 64x64 luminance prediction block may have 16 4x4 luminance prediction blocks on the left when the 64x64 luminance coding tree block is not further divided and the left block is split by the maximum depth.
Детализированный предиктор вектора движения (Advanced Motion Vector Predictor, AMVP) был введен, чтобы модифицировать конкуренцию векторов движения для учета такой гибкой блочной структуры. Во время разработки HEVC начальный проект AMVP был значительно упрощен, чтобы обеспечить хорошее компромиссное решение между эффективностью кодирования и проектом, удобным для реализации. Начальный проект AMVP содержал пять MVP из трех различных классов предикторов: три вектора движения из пространственных соседей, медиана трех пространственных предикторов и масштабированный вектор движения из совмещенного, соседнего по времени блока. Дополнительно, список предикторов модифицировался посредством переупорядочивания, чтобы разместить предиктор наиболее вероятного движения в первой позиции, и посредством удаления избыточных кандидатов, чтобы гарантировать минимальные издержки на сигнализацию. Конечный проект построения возможного списка AMVP содержит следующие два возможных MVP: a) до двух пространственных возможных MVP, которые получают из пяти пространственных соседних блоков; b) один временный возможный MVP, получаемый из двух временных совмещенных блоков, когда оба возможных пространственных MVP недоступны или они идентичны; и c) нулевые векторы движения, когда пространственные, временные или оба возможных MVP недоступны. Подробности в отношении определения вектора движения можно найти в книге V. Sze и др., High Efficiency Video Coding (HEVC): Algorithms and Architectures, Springer, 2014, в частности, в главе 5, включенной сюда посредством ссылки.The Advanced Motion Vector Predictor (AMVP) was introduced to modify motion vector contention to account for such a flexible block structure. During the development of HEVC, the initial design of AMVP was greatly simplified to provide a good trade-off between coding efficiency and easy-to-implement design. The initial AMVP design contained five MVPs from three different classes of predictors: three motion vectors from spatial neighbors, a median of three spatial predictors, and a scaled motion vector from a co-located, time-adjacent block. Additionally, the list of predictors has been modified by reordering to place the predictor of the most likely move in the first position, and by removing redundant candidates to ensure minimum signaling overhead. The final AMVP candidate list building project contains the following two candidate MVPs: a) up to two spatial candidate MVPs, which are derived from five spatial neighboring blocks; b) one temporal candidate MVP derived from two temporal co-located blocks when both spatial candidate MVPs are unavailable or identical; and c) zero motion vectors, when spatial, temporal, or both possible MVPs are not available. Details regarding motion vector determination can be found in V. Sze et al., High Efficiency Video Coding (HEVC): Algorithms and Architectures, Springer, 2014, in particular Chapter 5, incorporated here by reference.
Чтобы дополнительно улучшить оценку вектора движения без дополнительного увеличения издержек на сигнализацию, может быть выгодным дополнительно детализировать векторы движения, полученные на стороне кодера и обеспечиваемые в битовом потоке. Детализация вектора движения может быть выполнена в декодере без помощи со стороны кодера. Кодер в своем цикле декодера может использовать ту же самую детализацию, чтобы получить соответствующие векторы движения. Детализация вектора движения выполняется в пространства поиска, которое содержит целочисленные пиксельные позиции и дробные пиксельные позиции опорного изображения. Например, дробные пиксельные позиции могут быть полупиксельными позициями или четвертьпиксельными позициями или дополнительными дробными позициями. Дробные пиксельные позиции могут быть получены из целой (полнопиксельной) позиции путем интерполяции, такой как билинейная интерполяция. Однако, настоящее раскрытие одинаково применимо к пространствам поиска, не содержащим дробные пиксельные позиции.In order to further improve motion vector estimation without additional signaling overhead, it may be advantageous to further refine the motion vectors obtained at the encoder side and provided in the bitstream. Motion vector detailing can be performed in the decoder without assistance from the encoder. The encoder in its decoder loop may use the same granularity to obtain the corresponding motion vectors. Motion vector detailing is performed in a search space that contains integer pixel positions and fractional pixel positions of the reference image. For example, fractional pixel positions may be half-pixel positions or quarter-pixel positions or additional fractional positions. Fractional pixel positions can be obtained from an integer (full pixel) position by interpolation such as bilinear interpolation. However, the present disclosure is equally applicable to search spaces that do not contain fractional pixel positions.
При би-предсказании текущего блока два блока предсказания, полученные, используя соответствующий первый вектор движения из списка L0 и второй вектор движения из списка L1, объединяются в единый сигнал предсказания, который может обеспечить лучшую адаптацию к исходному сигналу, чем уни-предсказание, приводя в результате к меньшей остаточной информации и, возможно, к более эффективному сжатию.In bi-prediction of the current block, two prediction blocks obtained using the respective first motion vector from list L0 and the second motion vector from list L1 are combined into a single prediction signal, which can provide better adaptation to the original signal than uni-prediction, resulting in resulting in less residual information and possibly more efficient compression.
Поскольку в декодере текущий блок недоступен, пока идет декодирование, для цели детализации вектора движения используется шаблон, который является оценкой текущего блока и который создан, основываясь на уже обработанной (то есть, кодированной на стороне кодера и декодированной на стороне декодера) части изображения.Since the current block is not available at the decoder while decoding is in progress, a template is used for the purpose of motion vector detailing, which is an estimate of the current block and which is created based on the already processed (i.e., encoder-side encoded and decoder-side decoded) part of the picture.
Сначала, в качестве входного сигнала декодера 200 принимаются оценка первого вектора движения MV0 и оценка второго вектора движения MV1. На стороне 100 кодера вектор движения оценивает MV0 и MV1 может быть получен путем блочного сопоставления и/или поиска в списке кандидатов (таком как список слияния), формируемом векторами движения блоков, соседствующих с текущим блоком (в том же самом изображении или в соседних изображениях). MV0 и MV1 затем предпочтительно сообщаются стороне декодера внутри битового потока. Однако, заметим, что, в целом, первый этап определения в кодере может также быть выполнен посредством сопоставления с шаблонами, которое может обеспечить преимущество снижения издержек на сигнализацию.First, the first motion vector estimate MV0 and the second motion vector estimate MV1 are received as input to the decoder 200. On the encoder side 100, the motion vector estimates MV0 and MV1 can be obtained by block matching and/or searching in a candidate list (such as a merge list) generated by the motion vectors of blocks adjacent to the current block (in the same picture or in adjacent pictures) . MV0 and MV1 are then preferably reported to the decoder side within the bitstream. However, note that, in general, the first step of determination at the encoder may also be performed by pattern matching, which may provide the benefit of lower signaling overhead.
На стороне 200 декодера векторы MV0 и MV1 движения предпочтительно получаются, основываясь на информации, содержащейся в битовом потоке. MV0 и MV1 либо сообщаются напрямую, либо сообщаются дифференцированно, и/или сообщается индекс в списке векторов движения (списке слияния). Однако, настоящее раскрытие не ограничивается сообщением векторов движения в битовом потоке. Скорее вектор движения может быть определен сопоставлением с шаблонами уже на первой стадии, соответственно операции кодера. Сопоставление с шаблонами на первой стадии (получение вектора движения) может быть выполнено, основываясь на пространстве поиска, отличающемся от пространства поиска второй стадии, стадии детализации. В частности, детализация может быть выполнена в пространстве поиска с более высокой разрешающей способностью (то есть, при более коротком расстоянии между позициями поиска).On the decoder side 200, the motion vectors MV0 and MV1 are preferably obtained based on the information contained in the bitstream. MV0 and MV1 are either directly communicated or differentially communicated and/or an index in the motion vector list (merge list) is communicated. However, the present disclosure is not limited to reporting motion vectors in a bitstream. Rather, the motion vector can be determined by pattern matching already in the first stage, according to the operation of the encoder. Pattern matching in the first stage (deriving a motion vector) may be performed based on a search space different from the search space of the second stage, the refinement stage. In particular, refinement can be performed in a higher resolution search space (ie, with a shorter distance between search positions).
Указание двух опорных изображений RefPic0 и RefPic1, на которые указывают соответствующие MV0 и MV1, обеспечивается также для декодера. Опорные изображения хранятся в буфере декодированного изображения на стороне кодера и на стороне декодера как результат предыдущей обработки, то есть, соответствующего кодирования и декодирования. Одно из этих опорных изображений выбирается для детализации вектора движения посредством поиска. Блок выбора опорного изображения кодера и декодера, соответственно, выполнен с возможностью выбора первого опорного изображения, на которое указывает MV0, и второго опорного изображения, на которое указывает MV1. После выбора блок выбора опорного изображения определяет, используются ли для выполнения детализации вектора движения первое опорное изображение или второе опорное изображение. Для выполнения детализации вектора движения область поиска в первом опорном изображении определяют вокруг возможной позиции, на которую указывает вектор движения MV0. Возможные позиции пространства поиска внутри области поиска анализируются, чтобы обнаружить блок, наиболее подобный шаблонному блоку, выполняя сопоставление с шаблонами внутри пространства поиска и определяя метрику подобия, такую как сумма абсолютных разностей (SAD). Позиции пространства поиска обозначают позиции, с которыми сопоставляется верхний левый угол шаблона. Как уже упоминалось выше, верхний левый угол является просто договоренностью и любая точка пространства поиска, такая как центральная точка, может обычно использоваться для обозначения соответствующей позиции.An indication of the two reference pictures RefPic0 and RefPic1 pointed to by the respective MV0 and MV1 is also provided to the decoder. The reference pictures are stored in the decoded picture buffer at the encoder side and at the decoder side as a result of the previous processing, that is, the respective encoding and decoding. One of these reference pictures is selected to refine the motion vector by searching. The reference picture selector of the encoder and decoder, respectively, is configured to select the first reference picture pointed to by MV0 and the second reference picture pointed to by MV1. After the selection, the reference picture selector determines whether the first reference picture or the second reference picture is used to perform motion vector detailing. To perform motion vector refinement, a search area in the first reference picture is defined around a candidate position pointed to by the motion vector MV0. Possible search space positions within the search region are analyzed to find the block most similar to the template block by performing pattern matching within the search space and determining a similarity metric such as sum of absolute differences (SAD). The search space positions denote the positions against which the upper left corner of the pattern is matched. As mentioned above, the top left corner is just a convention and any point in the search space, such as the center point, can usually be used to indicate the corresponding position.
В соответствии с вышеупомянутым документом JVET-D0029, детализация вектора движения на стороне декодера (decoder-side motion vector refinement, DMVR) имеет в качестве входного сигнала начальные векторы движения MV0 и MV1, которые указывают на два соответствующих опорных изображения RefPict0 и RefPict1. Эти начальные векторы движения используются для определения соответствующие пространств поиска в RefPict0 и RefPict1. Кроме того, используя векторы движения MV0 и MV1, шаблон создается, основываясь на соответствующих блоках (выборок) A и B, на которые указывают MV0 и MV1, следующим образом:According to the aforementioned document JVET-D0029, decoder-side motion vector refinement (DMVR) has as input the initial motion vectors MV0 and MV1, which point to two corresponding reference pictures RefPict0 and RefPict1. These initial motion vectors are used to determine the corresponding search spaces in RefPict0 and RefPict1. In addition, using the motion vectors MV0 and MV1, a pattern is created based on the respective blocks (samples) A and B pointed to by MV0 and MV1 as follows:
Шаблон = функция ((Блок A, Блок B)).Template = function((Block A, Block B)).
Функция может быть операцией обрезания выборки в сочетании с взвешенным суммированием, основанным на выборках. Шаблон затем используется, чтобы выполнить сопоставление с шаблонами в пространствах поиска, определенных, основываясь на MV0 и MV1 в соответствующих опорных изображениях 0 и 1. Функцией стоимости для определения наилучшего сопоставления с шаблонами в соответствующих пространствах поиска является SAD (шаблон, блок candA’), где блок candA’ является возможным блоком кодирования, на который указывает возможный MV в пространстве поиска, натянутом на позицию, заданную MV0. На фиг. 3 показано определение наилучшего блока А' и результирующего детализированного вектора движения MV0’. Соответственно, один и тот же шаблон используется для обнаружения наилучшего соответствия блока B’ и соответствующего вектора движения MV1’, который указывает на блок B’, как показано на фиг. 3. Другими словами, после того, как шаблон создан на основе блоков A и B, указанных начальными векторами движения MV0 и MV1, детализированные векторы движения MV0’ и MV1’ находятся посредством поиска на RefPic0 и RefPic1 с помощью шаблона.The function can be a sample truncation operation combined with a sample-based weighted summation. The template is then used to perform pattern matching in the search spaces determined based on MV0 and MV1 in the
Технологии получения вектора движения иногда также упоминаются как преобразование вверх частоты кадров (frame rate up-conversion, FRUC). Начальные векторы движения MV0 и MV1 могут обычно быть указываться в битовом потоке, чтобы гарантировать, что кодер и декодер могут использовать одну и ту же начальную точку для детализации вектора движения. Альтернативно, начальные векторы движения могут быть получены, обеспечивая список начальных кандидатов, содержащий одного или более начальных кандидатов. Для каждого из них определяют детализированный вектор движения и в конце выбирается детализированный вектор движения, уменьшающий функцию стоимости.Motion vector acquisition techniques are sometimes also referred to as frame rate up-conversion (FRUC). The start motion vectors MV0 and MV1 may typically be specified in the bitstream to ensure that the encoder and decoder can use the same start point for motion vector granularity. Alternatively, the initial motion vectors may be obtained by providing an initial candidate list containing one or more initial candidates. For each of them, a detailed motion vector is determined and, at the end, a detailed motion vector is selected that reduces the cost function.
Дополнительно заметим, что настоящее изобретение не ограничивается сопоставлением с шаблонами, как описано выше со ссылкой на фиг. 3. На фиг. 4 показано альтернативное сопоставление с шаблонами, которое также применимо для уни-предсказания. Подробности можно найти в документе JVET-A1001, в частности, в разделе "2.4.6. Pattern matched motion vector derivation" документа JVET-A1001, озаглавленного "Algorithm Description of Joint Exploration Test Model 1", автор Джиэнл Чен и др., который доступен на сайте: http://phenix.it-sudparis.eu/jvet/. Шаблон при таком подходе сопоставления с шаблонами определяют как выборки, соседние с текущим блоком в текущем кадре. Как показано на фиг.1, могут быть получены уже реконструированные выборки, соседствующие с верхней и левой границей текущего блока и упоминаемые как "шаблон L-образной формы".Additionally, note that the present invention is not limited to pattern matching as described above with reference to FIG. 3. In FIG. 4 shows an alternative pattern matching that is also applicable to uni-prediction. Details can be found in the JVET-A1001 document, specifically section "2.4.6. Pattern matched motion vector derivation" of the JVET-A1001 document entitled "Algorithm Description of Joint Exploration Test Model 1" by Jianl Chen et al., who available on the website: http://phenix.it-sudparis.eu/jvet/. A pattern in this pattern matching approach is defined as the samples adjacent to the current block in the current frame. As shown in FIG. 1, already reconstructed samples adjacent to the top and left of the current block and referred to as the "L-shaped pattern" can be obtained.
На фиг. 5 представлен другой тип получения вектора движения, который также может использоваться. Вход в процесс получения вектора движения обозначается флагом, который указывает, применяется ли получение вектора движения. Неявно, другой вход в процесс получения является вектором движения соседнего (во времени или пространственно) ранее кодированного/реконструированного блока. Векторы движения множества соседних блоков используются в качестве кандидатов на начальный этап поиска при получении вектора движения. Выходом процесса является MV0’ (возможно также MV1’, если используется би-предсказание) и соответствующие индексы опорного изображения refPict0 и, возможно, refPict1, соответственно. этап детализации вектора движения затем содержит сопоставление с шаблонами, как описано выше. После обнаружения детализированного одного (уни-предсказание) или более (би-предсказание/мультикадровое предсказание) векторов движения, создается предиктор текущего блока (для би-/мультипредсказания посредством взвешенного предсказания выборки, в противном случае, обращаясь к выборкам, на которые указывает детализированный MV).In FIG. 5 shows another type of motion vector acquisition that can also be used. The entry into the motion vector acquisition process is indicated by a flag that indicates whether motion vector acquisition is applied. Implicitly, another input to the acquisition process is the motion vector of an adjacent (temporally or spatially) previously encoded/reconstructed block. The motion vectors of the plurality of neighboring blocks are used as candidates for the initial search step in obtaining the motion vector. The output of the process is MV0' (possibly also MV1' if bi-prediction is used) and the corresponding reference picture indices refPict0 and possibly refPict1, respectively. the motion vector refinement step then comprises template matching as described above. After finding fine-grained one (uni-prediction) or more (bi-prediction/multi-prediction) motion vectors, a current block predictor (for bi-/multi-prediction by weighted sample prediction, otherwise referring to the samples pointed to by the fine-grained MV) is created. ).
Настоящее изобретение не ограничивается двумя способами сопоставления (примеры сопоставления с шаблонами), описанными выше. Как пример, для детализации вектора движения может также использоваться третий способ сопоставления, который называют двусторонним сопоставлением (также описанный в документе JVET-A1001), и изобретение применяется аналогично. Двустороннее сопоставление объясняется со ссылкой на фиг. 6.The present invention is not limited to the two matching methods (pattern matching examples) described above. As an example, a third matching method, which is called two-way matching (also described in JVET-A1001), can also be used to refine the motion vector, and the invention is applied similarly. The two-way matching is explained with reference to FIG. 6.
В соответствии с двусторонним сопоставлением, поиск наилучшего соответствия ведется между двумя блоками вдоль траектории движения текущего блока в двух различных опорных изображениях. Как показано на фиг. 6, двустороннее сопоставление используется для получения информации о движении текущего блока, обнаруживая наилучшее соответствие между двумя блоками вдоль траектории движения текущего блока в двух различных опорных изображениях. При двустороннем сопоставлении может использоваться функция стоимости, такая как SAD (Block cand0’, Block cand1’), где на Block cand0’ указывает MV0 и на Block cand1’ указывает MV1.According to two-way matching, the best match is searched between two blocks along the current block's motion path in two different reference pictures. As shown in FIG. 6, two-way matching is used to obtain motion information of the current block by finding the best match between two blocks along the motion path of the current block in two different reference pictures. A two-way match may use a cost function such as SAD (Block cand0', Block cand1') where Block cand0' is referenced by MV0 and Block cand1' is referenced by MV1.
Чтобы уменьшить затраты на вычисления, для выбора приемлемых кандидатов (пары кандидатов) векторов движения, для которых вычисляются и сравниваются функции стоимости, может иметь смысл рассмотреть выполнение следующего условия. Предполагая траекторию движения непрерывной, векторы движения MV0 и MV1, указывающие на два опорных блока, должны быть пропорциональны временным расстояниям, то есть, TD0 и TD1, между текущим изображением и двумя опорными изображениями. Как особый случай, когда текущее изображение временно находится между двумя опорными изображениями и временное расстояние от текущего изображения до двух опорных изображений является одинаковым, разности векторов движения между векторами движения многочисленных пар, относящихся к одному опорному изображению, и соответствующими векторами движения пар, относящимися к другому опорному изображению, должны зеркально отражать друг друга.In order to reduce computational costs, in order to select acceptable candidates (pairs of candidates) of motion vectors for which cost functions are calculated and compared, it may make sense to consider the following condition. Assuming a continuous motion path, the motion vectors MV0 and MV1 pointing to the two reference blocks should be proportional to the time distances, ie, TD0 and TD1, between the current picture and the two reference pictures. As a special case, when the current picture is temporarily between two reference pictures and the temporal distance from the current picture to the two reference pictures is the same, the motion vector differences between the motion vectors of multiple pairs related to one reference picture and the corresponding motion vectors of the pairs related to another reference image should mirror each other.
Схема 600 обработки показана на фиг. 7. Схема обработки может содержать любые аппаратные средства и конфигурация может быть реализована любым видом программирования или аппаратными средствами или сочетанием их обоих. Например, схема обработки может быть сформирована единым процессором, таким как универсальный процессор с соответствующим программным обеспечением, реализующим вышеупомянутые этапы. С другой стороны, схема обработки может быть реализована специализированными аппаратными средствами, такими как ASIC (Application-Specific Integrated Circuit, специализированная прикладная интегральная схема) или FPGA (Field-Programmable Gate Array, программируемая логическая интегральная схема) цифрового сигнального процессора (Digital Signal Processor, DSP) и т. п.
Схема обработки может содержать один или больше вышеупомянутых компонент аппаратных средств, соединенных друг с другом для получения вышеупомянутого вектора движения. Схема 600 обработки содержит вычислительную логику, реализующую две функциональные возможности: получение начального вектора движения (или множества начальных векторов движения, если используется би-/мультипредсказание) и шаблона, если используется сопоставление 610 с шаблонами и детализация 620 вектора движения. Эти две функциональные возможности могут быть реализованы на одной и той же части аппаратных средств или могут быть выполнены отдельными блоками аппаратных средств, такими как блок 610 определения начального вектора движения и шаблона и блок 620 детализации вектора движения. Схема 600 обработки может средствами связи соединяться с внешней памятью 650, в которой хранятся реконструированные выборки опорного изображения. Кроме того, схема 600 обработки может дополнительно содержать внутреннюю память 640, которая буферирует выборки в окне, передаваемые из внешней памяти и используемые для определения вектора движения для обработанного на данный момент блока. Схема обработки может быть реализована на единой микросхеме как интегральная схема.The processing circuit may comprise one or more of the aforementioned hardware components connected to each other to obtain the aforementioned motion vector.
Заметим, что схема обработки может реализовать дополнительные функции кодера и/или декодера, описанные со ссылкой на фиг. 1 и 2. Внутренняя память может быть памятью на микросхеме, такой как кэш или строчная память. Внутренняя память предпочтительно реализуется на микросхеме кодера/декодера, чтобы ускорить вычисления. Так как размер микросхемы ограничен, внутренняя память обычно мала. С другой стороны, внешняя память может быть очень большой по размеру, однако доступ к внешней памяти расходует больше энергии и доступ намного медленнее. Обычно перед выполнением вычислений вся необходимая информация передается из внешней памяти во внутреннюю память. Наихудший случай доступа к внешней памяти (или полоса пропускания, которую необходимо оговорить при проектировании шины памяти), означает наибольший объем передачи памяти между внешней памятью и микросхемой при декодировании кадра или кодировании блока. К памяти (особенно внешней памяти) обычно можно получать доступ только в заданных блочных единицах. Другими словами, обычно невозможно получить доступ к одиночному пикселю, вместо этого должен быть получен доступ к самому малому блоку (например, 8x8). Размер внутренней памяти является также важным соображением проекта, поскольку, чем больше внутренняя память, тем выше стоимость.Note that the processing circuit may implement the additional encoder and/or decoder functions described with reference to FIG. 1 and 2. The internal memory may be an on-chip memory such as cache or line memory. The internal memory is preferably implemented on an encoder/decoder chip to speed up calculations. Since the chip size is limited, the internal memory is usually small. On the other hand, external memory can be very large, but external memory access consumes more power and access is much slower. Usually, before performing calculations, all the necessary information is transferred from external memory to internal memory. Worst-case external memory access (or bandwidth, which must be specified when designing the memory bus) means the largest amount of memory transfer between external memory and the chip when decoding a frame or encoding a block. Memory (especially external memory) can usually only be accessed in given block units. In other words, it is usually not possible to access a single pixel, instead the smallest block (eg 8x8) must be accessed. The size of the internal memory is also an important design consideration, since the larger the internal memory, the higher the cost.
Другими словами, вышеупомянутое устройство может быть интегральной схемой, дополнительно содержащей: внутреннюю память, встроенную внутрь интегральной схемы, и блок доступа к памяти (интерфейс) для извлечения целочисленных выборок, расположенных внутри упомянутого окна, из внешней памяти во внутреннюю память.In other words, the aforementioned device may be an integrated circuit further comprising: an internal memory embedded inside the integrated circuit, and a memory access unit (interface) for retrieving integer samples located within said window from the external memory to the internal memory.
Термин "блок предсказания", используемый выше, относится к текущему блоку, который должен быть предсказан. Это блок внутри изображения, который может быть получен путем подразделения изображения на блоки одинакового размера или разного размера (например, посредством иерархического разделения на части блока дерева кодирования, CTU в более мелких блоках). Блок может быть квадратным или, в более общем случае, прямоугольным, поскольку блоки являются типичными формами, также используемыми в текущих кодерах/декодерах. Однако, настоящее раскрытие не ограничивается никаким размером/формой блока.The term "prediction block" as used above refers to the current block to be predicted. It is a block within an image, which can be obtained by subdividing the image into blocks of the same size or different sizes (eg, by hierarchically splitting into coding tree block parts, CTUs in smaller blocks). The block may be square, or more generally rectangular, as blocks are typical shapes also used in current encoders/decoders. However, the present disclosure is not limited to any block size/shape.
Устройство, содержащее схему обработки, может быть кодером или декодером или даже устройством, содержащим такой кодер или декодер, например регистрирующим устройством и/или устройством воспроизведения.The device containing the processing circuit may be an encoder or decoder, or even a device containing such an encoder or decoder, such as a recording device and/or a playback device.
Дробные позиции выборки являются позициями между реальными позициями выборки изображения, полученными путем реконструкции опорного изображения, которое было кодировано, как показано на фиг. 1. Таким образом, дробные позиции должны быть получены посредством интерполяции, основываясь на ближайших целочисленных позициях. Подробности интерполяционной фильтрации можно найти в разделе "5.3 Fractional Sample Interpolation” книги High Efficiency Video Coding (HEVC) авторов В. Же и др., Springer, 2014.Fractional sample positions are positions between real image sample positions obtained by reconstructing a reference image that has been encoded as shown in FIG. 1. Thus, fractional positions must be obtained by interpolation based on the nearest integer positions. Details of interpolation filtering can be found in section "5.3 Fractional Sample Interpolation" of the book High Efficiency Video Coding (HEVC) by V. Zhe et al., Springer, 2014.
Интерполяционная фильтрация обычно, применяет различные фильтры, чтобы сформировать различные дробные позиции элемента растра (выборки). Как пример, применяются нижеследующие отдельные фильтры 1D, чтобы сформировать четвертные позиции и половинные позиции элемента растра в стандарте видеосжатия H.265:Interpolation filtering typically applies different filters to generate different fractional pixel positions (samples). As an example, the following individual 1D filters are applied to generate quarter pixel positions and half pixel positions in the H.265 video compression standard:
Как можно видеть из приведенной выше таблицы, интерполяционная фильтрация требует нескольких выборок вокруг дробной позиции элемента растра, соответствующей коэффициентам фильтра для умножения (количество коэффициентов в таблице). Используя приведенные выше примерные фильтры, чтобы сформировать половинную позицию элемента растра, требуются 4 целочисленных выборки с левой/верхней стороны и правой/нижней стороны. Следует заметить, что длина интерполяционного фильтра различна для четвертной позиции элемента растра (который имеет 7 коэффициентов для умножения) и половинной позиции выборки элемента растра (который имеет 8 коэффициентов для умножения). Термины выборка, элемент растра и пиксель используются взаимозаменяемо в этой заявке, обозначая выборку изображения (в одном или более цветовых компонентах) в заданный момент времени. Выборка, в принципе, является значением яркости.As you can see from the table above, interpolation filtering requires multiple samples around the fractional position of the raster element corresponding to the filter coefficients to be multiplied (the number of coefficients in the table). Using the example filters above, it takes 4 integer samples from the left/top side and right/bottom side to generate a half position of a raster element. Note that the length of the interpolation filter is different for a quarter bin position (which has 7 coefficients to multiply) and a half bin position (which has 8 coefficients to multiply). The terms sample, pixel, and pixel are used interchangeably throughout this application to refer to a sample of an image (in one or more color components) at a given point in time. The sample, in principle, is the brightness value.
В некоторых вариантах осуществления изобретения интерполяционный фильтр с заданным количеством коэффициентов для умножения оценивает целочисленные выборки только внутри окна, заданного целочисленными выборками, доступными для сопоставления с шаблонами в упомянутом пространстве поиска. Окно могло бы содержать намного больше выборок, чем те, которые фактически используются в вычислениях определенного блока предсказания. Причиной является тот факт, что операция поиска при детализации обычно реализуется, используя способ быстрого поиска (в отличие от способа принудительного поиска), согласно которому некоторые из выборок не оцениваются, в зависимости от постепенного прогресса операции поиска. В результате, количество итераций сопоставления с шаблонами, а также выборок, которые используются в вычислениях для операции поиска при детализации, может меняться для каждого блока предсказания.In some embodiments of the invention, an interpolation filter with a specified number of coefficients to multiply evaluates integer samples only within a window specified by integer samples available for pattern matching in said search space. The window could contain many more samples than those actually used in the calculation of a particular prediction block. The reason is the fact that the drill-down search operation is generally implemented using a fast search method (as opposed to a forced search method) in which some of the samples are not evaluated depending on the gradual progress of the search operation. As a result, the number of pattern matching iterations as well as the samples that are used in the calculations for the drill down search operation may vary for each prediction block.
На фиг. 8 показан блок кодирования (блок предсказания) и соответствующие выборки окна. Заметим, что выборки, показанные на фиг. 8, являются выборками опорного изображения и блок кодирования здесь является фактически блоком, по размеру и позиции соответствующим текущему блоку в текущем кадре, для которого должен быть получен вектор движения в опорном изображении. Таким образом, фактически, блок кодирования на фиг. 8 реально является блоком, совмещенным с блоком, для которого ищется предиктор. Однако, по причине упрощения, этот блок в дальнейшем упоминается как "блок кодирования".In FIG. 8 shows a coding block (prediction block) and corresponding window samples. Note that the samples shown in Fig. 8 are reference picture samples and the coding block here is actually a block corresponding in size and position to the current block in the current frame for which the motion vector in the reference picture is to be obtained. Thus, in fact, the coding block in FIG. 8 is actually the block superimposed on the block for which the predictor is being searched. However, for reasons of simplification, this block is hereinafter referred to as a "coding block".
В этом примере недетализированный вектор движения MV0 указывает на целочисленную позицию выборки. Гранулярность поиска при детализации вектора движения равна 1 целочисленной выборке, что означает, что поскольку начальной точкой является целочисленная выборка, ищутся только точки целочисленной выборки. В этом примере поиск выполняется в постепенно расширяющемся пространстве поиска. Это означает, что пространство поиска в каждой итерации продвигается вперед, добавляя новые позиции поиска в зависимости от наилучшего направления с точки зрения функции стоимости для ранее протестированных позиций.In this example, the non-detailed motion vector MV0 points to an integer sample position. The search granularity in motion vector refinement is 1 integer sample, which means that since the starting point is an integer sample, only integer sample points are searched. In this example, the search is performed in a gradually expanding search space. This means that the search space advances in each iteration, adding new search positions depending on the best direction in terms of cost function for previously tested positions.
Такой подход поясняется в упрощенном виде на фиг. 9. На фиг. 9 начальный вектор движения указывает на центральную точку 810. Пространство поиска постепенно создается вокруг позиции начального вектора движения. На первом этапе тестируются четыре позиции, непосредственно соседствующие с верхней, нижней, левой и правой границами позиции 810, указанной начальным вектором движения, а также позиции 810, указанной начальным вектором движения. Основываясь на направлении, которое приводит в результате к самому низкому значению функции стоимости для протестированных пяти точек, дополнительные позиции, которые должны быть протестированы, добавляются к пространству поиска. В этом примере самое низкое значение функции стоимости можно видеть в точке справа и, таким образом, пространство поиска на втором этапе было расширено на три дополнительные точки в горизонтальном направлении вправо. На втором этапе самое низкое значение функции стоимости можно видеть в точке справа (относительно точки с самым низким значением стоимости на первом этапе), что приводит к дальнейшему расширению пространства поиска на три точки в горизонтальном направлении вправо. На третьем этапе самое низкое значение функции стоимости наблюдается снова в точке справа относительно точки с самым низким значением стоимости на этапе 2 и приводит в результате к расширению пространства поиска еще на три точки в горизонтальном направлении вправо. Согласно примеру, показанному на фиг. 9, выполняются еще три этапа в направлениях вверх, вверх и вправо, в таком порядке. В примере для каждой итерации используется модель ромбовидной формы (состоящая из 5 точек поиска) и пространство поиска расширяется, чтобы завершить точки поиска отсутствия на каждом этапе.This approach is illustrated in a simplified form in FIG. 9. In FIG. 9, the start motion vector points to the
В каждой итерации определения пространства поиска пространство поиска может возрастать на одну или более целочисленных позиций выборки. Возвращаемся теперь к примеру на фиг. 8, где максимальное количество итераций поиска равно 4. Поскольку максимально возможны 4 итерации, чтобы выполнить операцию поиска, все выборки, показанные слева, должны быть извлечены из памяти в случае, если постепенное развитие пространства поиска движется влево. Точно также, необходимо расширение вверх на 4 выборки. Таким образом, пространство поиска расширяется в обоих направлениях (влево-вправо и вверх-вниз), так как детализированный MV может перемещаться в любом направлении и реализации аппаратных средств требуют, чтобы все выборки, которые могут потребоваться, были извлечены из внешней памяти до применения поиска детализации. Если пространство поиска развивается в направлении вниз или вправо, необходимо расширение на 4 дополнительных выборки, поскольку сопоставлению с шаблонами для шаблона, соответствующего размеру блока кодирования (блока предсказания), нужно получить доступ к некоторым из этих выборок. Кроме того, угловые выборки (например, верхняя-правая) также должны быть извлечены из памяти, так как аппаратные реализации обычно не могут извлекать неправильные формы (доступ к прямоугольнику более выполним).In each iteration of the search space determination, the search space may increase by one or more integer sample positions. Returning now to the example in Fig. 8, where the maximum number of search iterations is 4. Since a maximum of 4 iterations are possible to perform a search operation, all samples shown on the left must be fetched from memory in case the gradual development of the search space moves to the left. Similarly, expansion up by 4 samples is needed. Thus, the search space expands in both directions (left-right and up-down), since the detailed MV can move in any direction and hardware implementations require that all samples that may be required be fetched from external memory before the search is applied. detail. If the search space evolves downwards or to the right, an extension of 4 additional samples is needed because pattern matching for a pattern corresponding to the size of the coding block (prediction block) needs to access some of these samples. In addition, corner samples (e.g. top-right) must also be retrieved from memory, since hardware implementations usually cannot retrieve irregular shapes (rectangle access is more doable).
Заметим, что описанное выше итеративное развитие пространства поиска является только примером и правила и количество точек для расширения пространства поиска в каждой итерации могут различаться, то есть, определяться по-другому.Note that the iterative development of the search space described above is only an example, and the rules and number of points for expanding the search space in each iteration may differ, that is, be defined differently.
На фиг. 9 также показан сценарий, который может произойти благодаря правилам доступа к внешней памяти, описанным выше. Количество выборок, которые извлекаются из внешней памяти, намного больше, чем количество выборок, которые фактически используются на этапе вычисления. Предполагая, что шаблон здесь является только одной большой выборкой (с целью простоты), белые круги представляют выборки, которые извлекают из внешней памяти и затененные выборки представляют те выборки, которые фактически используются. Однако, такая избыточность необходима, если количество доступов к внешней памяти должно оставаться низким, поскольку, когда запускается обработка текущего блока, фактически необходимые выборки еще не известны.In FIG. 9 also shows a scenario that can happen due to the external memory access rules described above. The number of samples that are retrieved from external memory is much larger than the number of samples that are actually used in the calculation step. Assuming that the template here is only one large sample (for the sake of simplicity), the white circles represent the samples that are retrieved from the external memory and the shaded samples represent the samples that are actually used. However, such redundancy is necessary if the number of external memory accesses is to remain low, since when processing of the current block is started, the actual fetches required are not yet known.
Заметим, что пространство поиска может также быть определено по-другому, например как стабильная форма, расположенная в позиции, на которую указывает начальный вектор движения. Форма может быть любой формой, такой как квадрат, прямоугольник, ромб и т.п.Note that the search space can also be defined in other ways, such as a stable shape located at the position pointed to by the initial motion vector. The shape can be any shape such as square, rectangle, diamond, and the like.
На фиг. 10 показан пример, в котором пространство поиска может также содержать дробные выборки. На фиг. 8 и 9 поиск вектора движения был выполнен на целочисленных выборках, приводя в результате к позициям, обозначенным окружностями сплошной линии, содержащимися в окне доступа. Если теперь поиск выполняется на выборке, которая обладает разрешающей способностью полуэлемента растра (меньшая окружность сплошной линии), чтобы сформировать дробную выборку, изображенную на левой стороне, необходимо также извлечь из памяти еще три столбца выборок, предполагая, что интерполяционный фильтр симметричен и имеет восемь коэффициентов для умножения. Кроме того, то же самое должно быть применено на левой стороне (расширение на 3 столбца пикселей) вследствие того факта, что операция поиска симметрична (может перемещаться итеративно влево и вправо), так что дробный пиксель мог располагаться на левой стороне окна.In FIG. 10 shows an example where the search space may also contain fractional samples. In FIG. 8 and 9, a motion vector search has been performed on integer samples, resulting in the positions indicated by the solid line circles contained in the access window. If the search is now performed on a sample that has the resolution of a half-cell raster (the smaller circle of the solid line), three more columns of samples must also be retrieved from memory to form the fractional sample depicted on the left side, assuming the interpolation filter is symmetrical and has eight coefficients for multiplication. Also, the same must be applied on the left side (expansion by 3 columns of pixels) due to the fact that the search operation is symmetrical (can move left and right iteratively), so that a fractional pixel could be located on the left side of the window.
В результате, благодаря интерполяционной фильтрации количество выборок, необходимых для извлечения из памяти, дополнительно увеличивается и обозначено пунктирной линией, теперь также содержащей пунктирные окружности, представляющие позиции, добавленные, благодаря дробной интерполяции. Аналогично, если позволить также искать половинные позиции в вертикальном направлении, окно выборок, к которым должен быть получен доступ из памяти, должно быть также расширено в вертикальном направлении (не показано в примере на фиг. 10) в верхнюю и нижнюю стороны.As a result, due to interpolation filtering, the number of samples required to retrieve from memory is further increased and is indicated by a dotted line, now also containing dotted circles representing positions added due to fractional interpolation. Likewise, if half positions are also allowed to be searched in the vertical direction, the window of samples to be accessed from memory must also be expanded in the vertical direction (not shown in the example in FIG. 10) to the top and bottom sides.
Окно доступа к памяти определяют как прямоугольник, который содержит все выборки, которые должны быть извлечены из памяти, чтобы выполнить поиск вектора движения для блока предсказания (блока кодирования). Окно доступа к памяти содержит не только фактические выборки, которые требуются, но также и все остающиеся выборки, к которым имеется возможность получения доступа во время операции поиска вектора движения. В примере на фиг. 9 поиск вектора движения передвинулся вправо. Но он мог бы также передвинуться в направлении влево, что заранее неизвестно. Соответственно, чтобы не получать доступ к внешней памяти несколько раз, окно доступа к памяти (или окно доступа) содержит все выборки, пригодные для соответствующей обработки.The memory access window is defined as a rectangle that contains all the samples that must be retrieved from memory in order to perform a motion vector search for a prediction block (coding block). The memory access window contains not only the actual samples that are required, but also all remaining samples that can be accessed during the motion vector search operation. In the example in FIG. 9 motion vector search moved to the right. But he could also move in the direction to the left, which is not known in advance. Accordingly, in order not to access the external memory multiple times, the memory access window (or access window) contains all the samples suitable for the corresponding processing.
Чтобы достигнуть этого, настоящее раскрытие выполняет заполнение выборок, которые располагаются за пределами окна доступа к памяти, если они необходимы, например, для интерполяции дробных выборок.To achieve this, the present disclosure performs padding of samples that are located outside the memory access window, if necessary, for example, for interpolation of fractional samples.
Предоставление заменяющих выборок (заполняющих выборок) может быть дополнительно предпочтительным в связи с сопоставлением с шаблонами в пространствах поиска, которые также содержат дробные выборки. Другими словами, пространство поиска для блока предсказания может содержать по меньшей мере одну дробную позицию выборки со значением, полученным интерполяционной фильтрацией с помощью фильтра с заданным количеством коэффициентов для умножения. Интерполяционная фильтрация использует значения позиции выборки из окна и по меньшей мере одно заменяющее значение, чтобы получить по меньшей мере одно значение дробной позиции выборки.Providing replacement samples (padding samples) may be further advantageous in connection with pattern matching in search spaces that also contain fractional samples. In other words, the search space for the prediction block may contain at least one fractional sample position with a value obtained by interpolation filtering with a filter with a given number of coefficients to multiply. The interpolation filtering uses the sample position values from the window and at least one replacement value to obtain at least one fractional sample position value.
На фиг. 11 представлены основные этапы известной схемы выполнения получения/детализации вектора движения, как она описана ранее. На первом этапе (этап 1) получают "пространство поиска" по меньшей мере для двух возможных векторов движения (в показанном примере существует девять возможных векторов движения). Как вариант, один из возможных векторов движения, образующих пространство поиска, может рассматриваться как начальный вектор движения (в соответствии с терминологией, используемой в настоящей заявке, также называется "анкерным" вектором движения или возможным анкерным вектором движения). Начальный или анкерный вектор движения может быть, например, вектором движения, который содержится в битовом потоке и явно или неявно сообщается декодеру.In FIG. 11 shows the main steps of a known motion vector acquisition/detail execution scheme as previously described. In a first step (step 1), a "search space" is obtained for at least two possible motion vectors (in the example shown, there are nine possible motion vectors). Alternatively, one of the candidate motion vectors constituting the search space may be considered as the initial motion vector (also referred to as an "anchor" motion vector or a candidate anchor motion vector in the terminology used herein). The initial or anchor motion vector may be, for example, a motion vector that is contained in the bitstream and is explicitly or implicitly reported to the decoder.
На следующем этапе (этап 2) процесс сопоставления применяется в пространстве поиска, чтобы обнаружить наилучшую точку соответствия в пространстве поиска (другими словами, точку пространства поиска, минимизирующую функцию стоимости, соответствующую самому подходящему возможному вектору движения). В показанном примере применяется двустороннее сопоставление, однако, одинаково могут применяться и другие схемы сопоставления, такие как сопоставление с шаблонами.In the next step (step 2), a matching process is applied in the search space to find the best match point in the search space (in other words, the search space point minimizing the cost function corresponding to the best possible motion vector). The example shown uses two-way matching, however, other matching schemes, such as pattern matching, can be applied equally.
На конечном этапе на чертеже (этап 3) конечное предсказание получается путем интерполяции на основе наиболее подходящего возможного вектора движения, выбранного в соответствии с процессом, представленным на этапе 2.At the final step in the drawing (step 3), the final prediction is obtained by interpolation based on the best possible motion vector selected according to the process presented in
Концепция, представленная на фиг. 11, дополнительно описана на блок-схеме последовательности выполнения операций, показанной на фиг. 12. На фиг. 12 приведен пример специально для случая пары возможных векторов движения, то есть, для двустороннего сопоставления (также может применяться, когда сопоставление с шаблонами используется, например, при двунаправленном предсказании, как показано выше со ссылкой на фиг. 3).The concept shown in Fig. 11 is further described in the flowchart shown in FIG. 12. In FIG. 12 is an example specifically for the case of a pair of possible motion vectors, that is, for bidirectional matching (can also be applied when pattern matching is used, for example, in bidirectional prediction, as shown above with reference to Fig. 3).
На первом этапе (1310) создается пространство поиска пар возможных векторов движения. Этот этап соответствует этапу 1 на фиг. 11.In the first step (1310), a search space for pairs of possible motion vectors is created. This step corresponds to step 1 in FIG. eleven.
На следующем этапе (1320) создают предсказание, формируемое для каждой пары вектора движения в пространстве поиска, применяя интерполяционную фильтрацию. На следующем этапе (1330) для каждой пары векторов движения в пространстве поиска создают (получают) шаблон. Как объясняется выше, этот этап является необязательным, то есть, он необходим только в случае сопоставления с шаблонами, но не требуется для двустороннего сопоставления. На следующем этапе (1340) для каждой пары векторов движения в пространстве поиска вычисляется стоимость сопоставления с шаблонами (или стоимость двустороннего сопоставления), сравнивая блоки предсказания, на которые указывают два вектора движения пары (или блока предсказания одного возможного вектора движения и шаблона). На следующем этапе (1370) результирующая пара векторов движения, минимизирующая функцию стоимости для сопоставления с шаблонами или двустороннего сопоставления (более широко: наилучшего сопоставления, то есть, получаемую как наиболее пригодную посредством процесса сопоставления), выбирается и выводится как пара векторов движения для блока предсказания. В соответствии с терминологией, объясняемой выше, это может называться "детализированной парой векторов движения". Предшествующие этапы 1320, 1330, 1340 и 1370 соответствуют этапу 2 на фиг. 11.In the next step (1320), a prediction is generated for each motion vector pair in the search space by applying interpolation filtering. In the next step (1330), a pattern is created (obtained) for each pair of motion vectors in the search space. As explained above, this step is optional, that is, it is required only in case of pattern matching, but not required for two-way matching. In the next step (1340), for each pair of motion vectors in the search space, the template matching cost (or two-way matching cost) is calculated by comparing the prediction blocks pointed to by the pair's two motion vectors (or prediction blocks of one candidate motion vector and template). In the next step (1370), the resulting motion vector pair minimizing the cost function for pattern matching or two-way matching (more broadly: the best match, that is, obtained as the best fit by the matching process) is selected and output as a motion vector pair for the prediction block . In accordance with the terminology explained above, this may be referred to as a "detailed pair of motion vectors". The preceding
Следующий этап (1380) формирует конечное предсказание с помощью интерполяции, используя пару векторов движения, выбранную на этапе 1370. Этот этап соответствует этапу 3 на фиг. 11.The next step (1380) generates a final interpolation prediction using the motion vector pair selected in
На фиг. 13 представлена обработка для детализации вектора движения и формирования конечного предсказания в соответствии с примерными вариантами осуществления настоящего изобретения. Существенное различие между подходом, представленным на фиг. 13, и традиционным подходом, представленным на фиг. 11, состоит в том, что подход, соответствующий фиг. 13 настоящего изобретения, использует заполнение выборки как для детализации вектора движения, так и для конечного формирования предиктора, используя интерполяционную фильтрацию.In FIG. 13 shows processing for motion vector refinement and final prediction generation according to exemplary embodiments of the present invention. The essential difference between the approach shown in FIG. 13 and the conventional approach shown in FIG. 11 is that the approach corresponding to FIG. 13 of the present invention uses sample population for both motion vector refinement and final predictor shaping using interpolation filtering.
Использование заполненных выборок для детализации (необязательной) векторов движения показано на дополнительном этапе 2, который ниже будет описан более подробно со ссылкой на фиг. 14-18. Таким образом, даже в случае возможных векторов движения, имеющих дробные координаты (то есть, дробные координаты в пространстве поиска), требуемые возможные блоки для выполнения двустороннего сопоставления или сопоставления с шаблонами могут быть выполнены используя заданное окно с ограниченным доступом, такое же, как в случае пространства поиска, содержащего только целочисленные точки. Фактическое получение функции стоимости, применяя двустороннее сопоставление или сопоставление с шаблонами, выполняется на этапе 3, таком же, как этап 2 на фиг. 11.The use of populated samples to refine (optional) motion vectors is shown in an
Дополнительно, заполнение выборок (также или только) используется на конечном этапе 4 для выполнения фактического формирования предиктора. Этот этап обычно соответствует этапу 3 на фиг. 11, но отличается от него использованием концепции заполнения. Конкретно, в заданном примере к значениям выборки, расположенным в двух крайних правых столбцах и нижней строке, не получен доступ, но они заполняются значениями заполнения выборки, основанными на других доступных значениях выборки.Additionally, population of samples (also or only) is used in the final step 4 to perform the actual predictor generation. This step generally corresponds to step 3 in FIG. 11, but differs from it in its use of the concept of padding. Specifically, in the given example, the sample values located in the two rightmost columns and the bottom row are not accessed, but are populated with sample fill values based on other available sample values.
Количество выборок, которые должны заполняться (заменяться заменяющими значениями из-за недоступности), зависит от разности между окончательно выбранным ("детализированным") вектором движения и, упомянутым начальным ("анкерным") вектором движения. В показанном примере эта разность составляет два пикселя по вертикали и один пиксель по горизонтали. В соответствии с этим, для осуществляемой горизонтально и вертикально интерполяции пикселя в точке пересечения этих двух прямоугольников на этапе 5 на чертеже, значения выборки двух правых столбцов пикселей, а также нижнего ряда пикселей недоступны и должны быть заменены (заполнены) заменяющими значениями в соответствии с заданными правилами, как изложено выше и обсуждается ниже с дополнительными подробностями.The number of samples to be filled (replaced by replacement values due to unavailability) depends on the difference between the final selected ("detailed") motion vector and said initial ("anchor") motion vector. In the example shown, this difference is two pixels vertically and one pixel horizontally. Accordingly, for the horizontal and vertical interpolation of a pixel at the intersection point of these two rectangles in step 5 in the drawing, the sampling values of the two right columns of pixels, as well as the bottom row of pixels, are not available and must be replaced (filled) with replacement values in accordance with the given rules as set out above and discussed in more detail below.
Предпочтительно, если заполнение используется также для поиска на этапе 2, а также используется одно и то же окно доступа для обеих операций интерполяционной фильтрации на этапе 2 и на этапе 4.Preferably, padding is also used for the search in
Предпочтительно, окна доступа к памяти, которые используются на этапе 2 и на этапе 4 на фиг. 13, определяются, основываясь на конкретном возможном векторе движения в пространстве поиска. Конкретный вектор движения (называемый анкерным вектором движения) может быть, например, вектором движения, который содержится в битовом потоке и явно или неявно сообщается декодеру. Определение для выбора анкерного вектора движения выполняется в соответствии с заданным правилом, которое известно кодеру и декодеру.Preferably, the memory access windows that are used in
На фиг. 14 показано окно доступа к памяти с целью детализации вектора движения. Окно проходит вокруг точки 1010 в центре, который является позицией, на которую указывает начальный вектор движения. Кроме того, дробная позиция 1020 также принадлежит пространству поиска. Однако, дробная позиция 1020 должна интерполироваться с 6 коэффициентами для умножения, используя 3 целочисленных позиции выборки влево от дробной позиции и три целочисленных позиции вправо от дробной позиции. Поскольку дробная позиция 1020 располагается на одной строке с целочисленными позициями выборки, для интерполяции может применяться одномерный фильтр, например, такой, как показано в приведенном выше примере, описанном со ссылкой на фиг. 10. Как можно видеть на фиг. 14, чтобы интерполировать дробную выборку 1020, должны быть необходимы две дополнительных позиции 1030 выборки, которые располагаются вне окна. Чтобы избежать дополнительной загрузки этих выборок из внешней памяти, в соответствии с настоящим раскрытием значения внешних позиций 1030 заменяются значениями, которые получаются на основе выборок внутри окна.In FIG. 14 shows a memory access window for the purpose of motion vector detail. The window extends around
На фиг. 14 показана дробная позиция 1020 выборки, которая находится в середине между двумя целочисленными позициями выборки и, таким образом, является полупиксельной позицией (половиной элемента растра). Однако, настоящее раскрытие может в равной степени быть применено к другим дробным позициям, таким как четвертная или 1/8-позиция. Кроме того, демонстрационная позиция 1020 располагается на горизонтальной линии, соответствующей строке целочисленных позиций выборки так, чтобы горизонталь 1D фильтрация могла использоваться для ее интерполяции. Однако, настоящее раскрытие не ограничивается такими дробными позициями. Скорее дробные позиции могут располагаться на вертикальной линии, соответствующей столбцу целочисленных позиций выборки, так чтобы вертикальная фильтрация 1D могла использоваться для их интерполяции. Кроме того, дробные позиции вообще не должны располагаться на той же самой строке пикселей, что и целочисленные выборки. В таком случае, чтобы интерполировать такие выборки, может использоваться двумерная фильтрация; такая двумерная фильтрация может разделяться на вертикальную и горизонтальную одномерные (1D) фильтрации.In FIG. 14 shows a
Примеры различных дробных позиций показаны на фиг. 16. В частности, дробная позиция 1 является позицией, для интерполяции которой может применяться фильтрация по горизонтали и по вертикали, потому что она не располагается на линии со строками и столбцами целочисленных позиций выборки. Позиция 2 является позицией, для интерполяции которой используется только горизонтальная фильтрация, тогда как позиция 6 является позицией, для интерполяции которой используется только вертикальная фильтрация. Все дробные позиции, показанные на фиг. 16, могут быть получены, используя только целочисленные позиции внутри окна.Examples of various fractional positions are shown in FIG. 16. In particular, fractional position 1 is a position that can be interpolated by horizontal and vertical filtering because it is not in line with rows and columns of integer sample positions.
Окно для доступа к памяти может быть определено различными способами. На фиг. 18 показан пример, в котором окно доступа к памяти определяют как расширения EXT на левой/правой или верхней/нижней стороне блока кодирования (соответствующего расположению блока кодирования, заданного начальным вектором движения). Величины расширения могут зависеть от размера и формы блока кодирования или предсказания. На фиг. 18 расширение соответствует 4 выборками в длину в каждом направлении (вверх, вниз, влево, вправо). Однако, заметим, что EXT может также принимать различные значения для различных направлений, в зависимости от размера блока (который может иметь различные размеры в вертикальном и горизонтальном направлениях) и/или формы и размера пространства поиска.The memory access window can be defined in various ways. In FIG. 18 shows an example in which the memory access window is defined as EXT extensions on the left/right or top/bottom side of the coding block (corresponding to the location of the coding block given by the start motion vector). The spreading values may depend on the size and shape of the coding or prediction block. In FIG. 18 extension corresponds to 4 samples in length in each direction (up, down, left, right). However, note that EXT can also take on different values for different directions, depending on the block size (which can have different sizes in the vertical and horizontal directions) and/or the shape and size of the search space.
Например, в соответствии с примером, окно определяют как N столбцов целочисленной выборки и М строк целочисленной выборки относительно начального вектора движения блока предсказания, где N и М - ненулевые целочисленные значения. На фиг. 18 N и М указаны, но имеют один и тот же размер. Как упомянуто выше, N и М может иметь различный размер. N и М являются целыми числами и по меньшей мере одно из них не равно нулю. Принятые параметры N и М определяют форму и размер шаблона и могут определять размер окна доступа. В частности, если шаблон имеет T1 строк и T2 столбцов, размер окна доступа к памяти может быть вычислен как (N+T1+N) строк и (M+T2+M) столбцов. Причина в том, что поиск может пройти N выборок слева и справа, давая в результате 2N выборок по горизонтали и М выборок вверх или вниз и, в результате, 2M выборок по вертикали. Кроме того, шаблон может соответствовать T1 x T2 выборок в любых из 2N x 2M позиций выборки.For example, according to the example, the window is defined as N integer sample columns and M integer sample rows relative to the initial motion vector of the prediction block, where N and M are non-zero integer values. In FIG. 18 N and M are listed but have the same size. As mentioned above, N and M may have a different size. N and M are integers and at least one of them is non-zero. The received parameters N and M determine the shape and size of the template and may determine the size of the access window. In particular, if the template has T1 rows and T2 columns, the size of the memory access window can be calculated as (N+T1+N) rows and (M+T2+M) columns. The reason is that the search may go N samples left and right, resulting in 2N horizontal samples and M samples up or down, resulting in 2M vertical samples. In addition, the pattern may match T1 x T2 samples at any of the 2N x 2M sample positions.
С другой стороны, для конкретных подходов пространство поиска создает пространство поиска, описанное со ссылкой на фиг. 8 и 9, причем окно доступа к памяти может быть определено с точки зрения максимального количества итераций при детализации (итераций, создающих пространство поиска) и размер шага итерации (с точки зрения максимального расстояния выборки, доступного для каждой итерации), который может быть позже преобразован в максимальную величину смещения влево, вправо, вверх и вниз. Поэтому окно доступа к памяти определяют как максимальное смещение в каждом направлении. Например, 4 итерации, в которых каждая итерация может увеличивать пространство поиска максимум на одну целочисленную позицию выборки, приводит в результате к EXT=4.On the other hand, for specific approaches, the search space creates the search space described with reference to FIG. 8 and 9, where the memory access window can be defined in terms of the maximum number of iterations at drill down (the iterations that create the search space) and the iteration step size (in terms of the maximum fetch distance available for each iteration), which can be later converted to the maximum amount of shift left, right, up and down. Therefore, the memory access window is defined as the maximum offset in each direction. For example, 4 iterations, in which each iteration can increase the search space by at most one integer fetch position, results in EXT=4.
Другими словами, в соответствии с этим примером, схема обработки выполнена с возможностью определения детализации начального вектора движения путем сопоставления с шаблонами, используя упомянутый шаблон в пространстве поиска, которое итеративно расширяется в направлении, задаваемом одной (или более) из наилучших позиций сопоставления пространства поиска самой последней итерации, окно определяют заданным количеством итераций. То же самое, с необходимыми изменениями, применяется к случаю двустороннего сопоставления.In other words, according to this example, the processing circuit is configured to determine the granularity of the initial motion vector by pattern matching using said pattern in a search space that iteratively expands in a direction given by one (or more) of the best matching positions of the search space itself. last iteration, the window is determined by the given number of iterations. The same, mutatis mutandis, applies to the case of two-way matching.
Заметим, что, в целом, настоящее раскрытие не ограничивается никакой конкретной формой или видом определения пространства поиска. В другом примере пространство поиска является прямоугольным субокном или может быть равным окну. Определение окна доступа к памяти может быть пригодным, чтобы, по возможности, содержать соответствующий параметр сигнализации в битовом потоке (например, параметр EXT или параметры N и M). Однако, размер окна доступа к памяти может также быть определен в стандарте или получен на основе других параметров кодирования (таких как размер шаблона, размер блока предсказания, разрешающая способность изображения и т. д.). Возвращаясь к фиг. 14, в соответствии с вариантом осуществления, окно доступа к памяти для детализации определяют вокруг позиции, на которую указывает недетализированный вектор 1010 движения. Окно идентифицирует максимальное число пиксельных выборок, к которым необходимо получить доступ из памяти, чтобы выполнить поиск детализации вектора движения. Пространство поиска здесь соответствует окну доступа. Другими словами, для упрощения, в этом примере размер шаблона считается равным 1x1, но может и на практике обычно должен быть больше. Окно доступа к памяти обычно определяют как расширение вокруг блока кодирования. В этом примере имеются 4 выборки слева/справа и 4 выборки сверху/снизу. Если позиция пространства поиска, в настоящий момент тестируемая во время сопоставления с шаблонами или двустороннего сопоставления, требует выборки снаружи окна доступа к памяти, то выборки, необходимые для реконструкции блока кодирования, получаются путем заполнения. Это показано в случае, показанном на фиг. 14 для дробной позиции 1020. Если сопоставление с шаблонами должно выполняться в этой позиции или используя эту позицию, оно должно интерполироваться, используя дополнительные заполненные позиции 1030, расположенные вне окна.Note that, in general, the present disclosure is not limited to any particular form or kind of search space definition. In another example, the search space is a rectangular sub-window, or may be equal to a window. The definition of the memory access window may be suitable to contain the corresponding signaling parameter in the bitstream, if possible (eg, the EXT parameter or the N and M parameters). However, the memory access window size may also be defined in the standard or derived from other coding parameters (such as template size, prediction block size, image resolution, etc.). Returning to FIG. 14, according to an embodiment, a detail memory access window is defined around the position pointed to by the
Заполненные выборки могут быть сформированы, используя, например, один из следующих способов:Populated samples can be generated using, for example, one of the following methods:
- ближайшая копия выборки;- the closest copy of the sample;
- зеркальное отражение вдоль оси интерполяционной фильтрации;- mirror reflection along the interpolation filtering axis;
В частности, ближайшая копия выборки относится к подходу, в котором заменяющее значение определяют как равное значению в ближайших из доступных целочисленных позиций выборки. Например, на фиг. 14, два пропущенных значения 1030 позиции должны быть заменены значением выборки, непосредственно соседствующим с правой частью дробной позиции 1020, которая должна быть интерполирована. Однако, следует заметить, что этот подход является только примером и настоящее раскрытие не ограничивается простой копией вышесказанного. Альтернативно, несколько ближайших позиций выборки могут использоваться, чтобы интерполировать отсутствующие выборки 1030. Например, три выборки на границе, ближайшей к отсутствующей выборке, могут использоваться, чтобы интерполировать отсутствующую выборку, например, посредством взвешенного усреднения с весами, установленными обратно пропорциональными расстоянию этих трех выборок от отсутствующей выборки.In particular, nearest copy of a sample refers to an approach in which a replacement value is determined to be equal to the value at the nearest available integer sample positions. For example, in FIG. 14, the two
Зеркальное отражение относится к подходу, в соответствии с которым заменяющее значение определяют зеркальным отражением значения соответствующей оцененной целочисленной позиции выборки относительно оси интерполяционного фильтра. Например, на фиг. 14, две отсутствующих выборки 1030 могут быть заменены значениями выборок слева от дробной позиции 1020. В частности, вторая выборка справа от дробной позиции 1020 заменяется значением позиции слева от дробной позиции 1020, тогда как третья выборка справа от дробной позиции 1020 заменяется значением третьей слева позиции от дробной позиции 1020.Mirroring refers to an approach whereby a replacement value is determined by mirroring the value of the corresponding estimated integer sample position with respect to the axis of the interpolation filter. For example, in FIG. 14, the two
Заметим, что может также применяться сочетание двух вышеупомянутых подходов, в которых отсутствующие выборки являются функцией зеркально отраженных выборок и ближайшей выборки.Note that a combination of the above two approaches may also be used, in which the missing samples are a function of the mirrored samples and the nearest sample.
В соответствии с вариантом осуществления, окно формируется всеми целочисленными позициями выборки, доступными для сопоставления с шаблонами или двустороннего сопоставления на целочисленных позициях выборки внутри упомянутого пространства поиска. Это, например, имеет место в случае, показанном на фиг. 14, где дополнительные выборки за пределами окна необходимы только для сопоставления с шаблонами в нецелых, дробных позициях выборки. Другими словами, на фиг. 14 в приведенном выше примере половинная координата элемента растра, которая должна быть найдена, требует выборки вне окна доступа к памяти. В результате, операция заполнения применяется для формирования недоступных выборок. Однако, настоящее изобретение этим не ограничивается.According to an embodiment, the window is formed by all integer sample positions available for pattern matching or two-way matching on integer sample positions within said search space. This is the case, for example, in the case shown in FIG. 14, where extra samples outside the window are needed only for pattern matching at non-integer, fractional sample positions. In other words, in FIG. 14 in the example above, the half-coordinate of the raster element to be found requires sampling outside the memory access window. As a result, the padding operation is used to generate unavailable samples. However, the present invention is not limited to this.
На фиг. 15 показан альтернативный подход, при котором окно не содержит все целочисленные позиции выборки, доступные для сопоставления с шаблонами в целочисленных позициях выборки в пределах упомянутого пространства поиска. В предыдущих примерах размер блока кодирования для простоты составлял 1x1. На фиг. 15 размер имеет 4x4 целочисленных выборки. В этом примере, если координата поиска (позиция, в которой должно вычисляться сопоставление с шаблонами или двустороннее сопоставление) указывает на целочисленную выборку, заполнение может также быть применено, если некоторые из выборок в блоке лежат вне окна доступа к памяти. Этот подход позволяет еще больше ограничить размер окна.In FIG. 15 shows an alternative approach where the window does not contain all integer sample positions available for pattern matching at integer sample positions within said search space. In the previous examples, the coding block size was 1x1 for simplicity. In FIG. 15 size has 4x4 integer samples. In this example, if the search coordinate (the position at which pattern matching or round-trip is to be evaluated) points to an integer sample, padding can also be applied if some of the samples in the block lie outside the memory access window. This approach allows you to further limit the size of the window.
Подробно: на фиг. 15 показано окно 1120, которое содержит некоторые из доступных выборок. Начальный вектор движения указывает позицию, которая отмечает верхний левый угол блока кодирования. Пространство поиска можно рассматривать здесь как равное окну. Однако, следует заметить, что оно, в принципе, может быть меньшим, чем окно, которое также может иметь смысл, поскольку, если шаблон будет больше, чем 1x1 целочисленных выборки, то обязательно выборки, кроме тех, которые содержатся в пространстве поиска, будут необходимы для выполнения сопоставления шаблонов. Тем не менее, если пространство поиска определяет размер окна, альтернативно, отсутствующие выборки могут быть заполнены. На фиг.15 показана примерная позиция поиска во второй строке и 10-ом столбце окна. Сопоставление с шаблонами с большим целочисленным шаблоном выборки 4х4 требует также пикселей вне окна. Эти выборки, таким образом, заполняются, то есть, заменяются значениями, определяемыми или вычисляемыми на основе выборок внутри окна. Вышеупомянутые подходы с заполнением, такие как ближайший сосед или зеркальное отражение, также могут быть применены.Detail: Fig. 15 shows a
Окно может быть определено его вертикальным и/или горизонтальным размером в отношенииA window can be defined by its vertical and/or horizontal size in relation to
- пространства поиска, или- search spaces, or
- блока с размером блока предсказания, расположенного в позиции начального вектора движения, или- a block with the size of the prediction block located at the position of the initial motion vector, or
- позиции начального вектора движения.- position of the initial motion vector.
Пример определения окна показан на фиг. 18 и описывается выше. Он соответствует определению размера окна, основанного на размере блока предсказания, расположенного в позиции начального вектора движения. Альтернативно, размер окна может быть определен в отношении позиции начального вектора в одном или обоих направлениях x и y. Например, окно может быть определено как расположенное вокруг позиции, на которую указывает начальный вектор движения и расширение на А целочисленных выборов в каждом из направлений верх, вниз, влево, вправо. Альтернативно, оно может быть расширено на А целочисленных выборок влево и вправо, соответственно, и на В целочисленных выборок вверх и вниз, соответственно. Возможны дополнительные определения.An example of a window definition is shown in FIG. 18 and described above. It corresponds to the definition of the window size based on the size of the prediction block located at the position of the initial motion vector. Alternatively, the window size may be defined in relation to the position of the start vector in one or both of the x and y directions. For example, the window may be defined as being located around the position pointed to by the initial motion vector and extension by A of integer choices in each of the up, down, left, right directions. Alternatively, it can be extended by A left and right integer samples, respectively, and by B up and down integer samples, respectively. Additional definitions are possible.
Такое же определение размера окна также применимо к случаю заполнения для интерполяционной фильтрации при формировании предиктора. В частности, вертикальный и горизонтальный размеры (то есть, в направлениях х и у) определяются вертикальной и горизонтальной длиной интерполяционного фильтра, который используется для определения предиктора.The same definition of window size also applies to the case of padding for interpolation filtering in predictor generation. In particular, the vertical and horizontal dimensions (ie, in the x and y directions) are determined by the vertical and horizontal length of the interpolation filter that is used to determine the predictor.
На фиг. 17 представлена блок-схема последовательности выполнения операций обработки, показанной на фиг. 13 более подробно. Блок-схема последовательности выполнения операций на фиг. 17 отличается от такой же блок-схемы на фиг. 12, показывающей традиционный процесс, тем, что этапы 1320 и 1380 заменяются этапами 1720 и 1780, соответственно. Эти этапы отличаются от соответствующих этапов на фиг. 12 тем, что для них обоих при интерполяционной фильтрации для формирования возможных блоков предсказания в опорном изображении(-ях), чтобы выполнить двустороннее сопоставление или сопоставление с шаблонами, и при интерполяционной фильтрации для формирования конечного предсказания, применяется заполнение с использованием заменяющих выборок.In FIG. 17 is a flowchart of the processing shown in FIG. 13 in more detail. The flowchart of the sequence of operations in FIG. 17 differs from the same block diagram in FIG. 12 showing the conventional process in that steps 1320 and 1380 are replaced by
Схема обработки, описанная со ссылкой на фиг. 7, может использоваться в кодере и/или декодере, как показано на фиг. 1 и 2.The processing scheme described with reference to FIG. 7 may be used in an encoder and/or decoder as shown in FIG. 1 and 2.
В частности, может обеспечиваться устройство кодирования для кодирования видеоизображений, разделенных на блоки предсказания, в битовом потоке, причем устройство кодирования содержит: устройство для определения вектора движения для блока предсказания, как описано выше, содержащее схему обработки; и схема кодирования для кодирования разности между блоком предсказания и предиктором, заданным блоком предсказания в позиции, указанной определенным вектором движения, и для формирования битового потока, содержащего кодированную разность и начальный вектор движения.Specifically, an encoding apparatus for encoding video images divided into prediction blocks in a bitstream may be provided, the encoding apparatus comprising: an apparatus for determining a motion vector for the prediction block as described above, comprising a processing circuit; and a coding scheme for encoding a difference between the prediction block and the predictor given by the prediction block at a position indicated by the determined motion vector, and for generating a bitstream containing the coded difference and the initial motion vector.
Дополнительные блоки и функции кодера, описанные выше со ссылкой на фиг. 1, могут также обеспечиваться или реализовываться в схеме обработки.The additional encoder blocks and functions described above with reference to FIG. 1 may also be provided or implemented in a processing circuit.
Соответственно, может быть обеспечено устройство декодирования для декодирования из битового потока видеоизображений, разделенных на блоки предсказания, причем устройство декодирования содержит: блок синтаксического анализа для выбора из битового потока начального вектора движения и кодированной разности между блоком предсказания и предиктором, заданной блоком предсказания в позиции, указанной детализированным вектором движения; устройство для определения детализированного вектора движения для блока предсказания, как описано выше, содержащее схему обработки; и схему декодирования для реконструкции блока предсказания как суммы проанализированной разности и предиктора, заданного блоком предсказания в позиции, основанной на детализированном векторе движения. Например, предиктор может быть задан напрямую позицией детализированного вектора движения. Однако, могут быть дополнительные этапы обработки для получения вектора движения текущего блока предсказания, которые могут дополнительно изменять вектор движения (такие как фильтрация, отсечение, дополнительная детализация и т. п.).Accordingly, a decoding apparatus can be provided for decoding from a video bitstream divided into prediction blocks, the decoding apparatus comprising: a parser for selecting from the bitstream an initial motion vector and an encoded difference between the prediction block and the predictor specified by the prediction block at a position, specified by the detailed motion vector; a device for determining a detailed motion vector for the prediction block as described above, comprising a processing circuit; and a decoding scheme for reconstructing the prediction block as the sum of the parsed difference and a predictor given by the prediction block at a position based on the detailed motion vector. For example, the predictor can be given directly by the position of the detailed motion vector. However, there may be additional processing steps to obtain the motion vector of the current prediction block, which may further modify the motion vector (such as filtering, clipping, additional granularity, etc.).
Дополнительные блоки и функции декодера, описанного выше со ссылкой на фиг. 2, могут также быть обеспечены или реализованы в схеме обработки.Additional blocks and functions of the decoder described above with reference to FIG. 2 may also be provided or implemented in a processing circuit.
Более того, варианты осуществления изобретения были описаны с точки зрения устройства со схемой обработки, чтобы выполнить детализацию вектора движения. Однако, настоящее раскрытие этим не ограничивается, а также обеспечивает соответствующие способы, которые содержат этапы обработки, соответствующие им, для выполнения которых конфигурирована описанная выше схема обработки.Moreover, embodiments of the invention have been described in terms of an apparatus with a processing circuit to perform motion vector granularity. However, the present disclosure is not limited to this, but also provides corresponding methods that contain processing steps corresponding to them, for which the above-described processing circuit is configured to perform.
Коэффициенты для умножения соответствуют коэффициентам фильтра. Коэффициенты для умножения соответствуют порядку фильтра. Здесь, предполагается, что фильтр является линейным фильтром. В некоторых примерах фильтр может быть симметричным, то есть, имеющим симметричные коэффициенты. Однако, настоящее раскрытие не ограничивается симметричными фильтрами или линейными фильтрами или фильтрами любого рода. В целом, дробные позиции могут быть получены любым способом, основываясь на соседних выборках.The coefficients for multiplication correspond to the coefficients of the filter. The coefficients for multiplication correspond to the order of the filter. Here, it is assumed that the filter is a linear filter. In some examples, the filter may be symmetrical, that is, having symmetrical coefficients. However, the present disclosure is not limited to symmetrical filters or linear filters or filters of any kind. In general, fractional positions can be obtained in any way based on adjacent samples.
Способ, соответствующий варианту осуществления, определяет вектор движения для блока предсказания со следующими этапами, показанными на фиг. 19. На этапе 1410 получают начальный вектор движения и шаблон для блока предсказания, сопровождаемые определением детализации начального вектора движения посредством сопоставления с упомянутым шаблоном в пространстве поиска. Пространство поиска располагается в позиции, задаваемой начальным вектором движения. На этапе 1420 определяют окно доступа к памяти. Заметим, что это не должно выполняться явно. Окно доступа к памяти может быть определено заранее и быть известно. Таким образом, этот этап служит, чтобы указать, что знание размера окна доступа к памяти известно. Затем на этапах 1430-1490 выполняется сопоставление с шаблонами.The method according to the embodiment determines a motion vector for a prediction block with the following steps shown in FIG. 19. In
Сопоставление с шаблонами или двустороннее сопоставление получает доступ к целочисленным позициям выборки внутри заданного окна, причем заданное окно содержит упомянутое пространство поиска и дополнительные целочисленные позиции выборки, доступные для сопоставления с шаблонами или двустороннего сопоставления; и заменяет по меньшей мере одну целочисленную позицию выборки, расположенную за пределами окна, заменяющим значением, основанным по меньшей мере на одной выборке внутри упомянутого окна. Значения целочисленных позиций выборки, к которым получен доступ, а также заменяющие значения используются для выполнения сопоставления с шаблонами. Это показано на фиг. 19: сопоставление с шаблонами или двустороннее сопоставление выполняются для всех позиций в пространства поиска. На этапе 1430 тестируется, требуют ли сопоставление с шаблонами или двустороннее сопоставление в текущей позиции выборки или выборок, которые находятся за пределами окна доступа к памяти. Если ответ утвердительный ("да" на этапе 1430), то заполнение, как оно описано выше, выполняется для выборки или выборок вне окна на этапе 1440. После этого этапа сопоставление с шаблонами или двустороннее сопоставление (то есть, поиск) выполняется на этапе 1450 в текущей позиции, используя заполненные выборки. Альтернативно, если ни одна из необходимых выборок не находится вне окна ("нет" на этапе 1430), сопоставление с шаблонами или двустороннее сопоставление (то есть, поиск) выполняются на этапе 1450 в текущей позиции, используя доступные выборки. Если текущая позиция является последней позицией в пространстве поиска, которая должна быть тестирована ("да" на этапе 1460), то сопоставление с шаблонами заканчивается. В противном случае ("нет" на этапе 1460), на этапе 1470 получают следующую позицию и сопоставление с шаблонами продолжается на этапе 1430, как описано выше, для новой позиции.Pattern matching or two-way matching accesses integer sample positions within a given window, where the given window contains said search space and additional integer sample positions available for pattern matching or two-way matching; and replaces at least one integer sample position located outside of the window with a replacement value based on at least one sample within said window. The integer sample position values that are accessed, as well as replacement values, are used to perform pattern matching. This is shown in FIG. 19: Pattern matching or two-way matching is performed on all positions in the search space. At
После окончания сопоставления с шаблонами идентифицируется позиция наилучшего сопоставления (например, как сохраненная позиция с наименьшей стоимостью).After pattern matching is complete, the best matching position is identified (eg, as the lowest cost stored position).
На фиг. 20 показан альтернативный примерный подход к детализации вектора движения и формированию предиктора, применимый в рамках инфраструктуры вариантов осуществления настоящего изобретения. Разница между этим подходом и подходом, показанным на фиг. 13, состоит в том, что в случае, показанном на фиг. 20, интерполяционная фильтрация с заполнением применяется только для конечного формирования предиктора, используя детализированный вектор движения (пару). Это является этапом 5 на фиг. 20, соответствующим этапу 4 на фиг. 13.In FIG. 20 shows an alternative exemplary approach to motion vector refinement and predictor generation applicable within the infrastructure of embodiments of the present invention. The difference between this approach and the approach shown in FIG. 13 is that in the case shown in FIG. 20, padding interpolation filtering is only applied to the final predictor generation using the fine-grained motion vector (pair). This is step 5 in FIG. 20 corresponding to step 4 in FIG. 13.
С другой стороны, никакая интерполяционная фильтрация с заполнением не применяется к детализации (поиску) вектора движения, то есть, к этапу 2 на фиг. 13. Вместо этого, подход, показанный на фиг. 20, выполняет операцию округления, чтобы округлить координату, относящуюся к ближайшей целочисленной точки, в случае начального вектора движения (или множества возможных начальных векторов движения, формирующих начальное пространство поиска) до ближайшей целочисленной точки (этап 2 на фиг. 20). Эта операция округления эквивалентна сдвигу с заданным вектором, обозначенным как MV_round_diff, который описывает направление округления. Характеристики операции округления гарантируют, что пространство поиска модифицируется, чтобы получить модифицированное пространство поиска, имеющее только точки с целочисленными координатами. Как следствие, следующий этап 3 получения наилучшей целочисленной точки сопоставления с помощью двустороннего сопоставления (или сопоставления с шаблонами) может быть выполнен на целочисленных координатах, так чтобы никакая интерполяционная фильтрация не была необходимой для формирования предсказаний для сопоставления с шаблонами/двустороннего сопоставления.On the other hand, no padding interpolation filtering is applied to the motion vector refinement (search), i.e.,
Дополнительно, этап 20 содержит этап 4. Этот этап является необязательным. На этапе 4 после того, как на этапе 3 была получена наилучшая целочисленная точка сопоставления в модифицированном пространстве поиска, применение округления идет в обратном направлении, чтобы получить конечный детализированный вектор движения в (начальном) пространстве поиска. Другими словами, вектор сдвига, противоположный вектору сдвига на этапе 2, применяется к наилучшему сопоставленному (детализированному) вектору движения, полученному в результате этапа 3. Если используется необязательный этап 4, конечное предсказание затем получают на основе детализированного вектора движения, полученного в результате этапа 4. Альтернативно, этап 3 пропускается и этап 5 напрямую применяется к вектору движения, полученному в результате этапа 3. Также альтернативно, на основе заданного условия можно принять решение, включить ли или пропустить этап 4.Additionally, step 20 includes step 4. This step is optional. In step 4, after the best integer match point in the modified search space has been obtained in
Блок-схема последовательности выполнения операций, соответствующая подходу, показанному на фиг. 20, представлена на фиг. 21. Опять же, блок-схема последовательности выполнения операций была построена для случая пар векторов движения, а не одиночных векторов движения, которые используются с целью упрощения на фиг. 20.A flowchart corresponding to the approach shown in FIG. 20 is shown in FIG. 21. Again, the flowchart has been constructed for the case of pairs of motion vectors, rather than single motion vectors, which are used for simplicity in FIG. twenty.
Начальный этап 1310 является таким же, как на фиг. 20. Следующий этап 2115 соответствует операции округления на этапе 2 на фиг. 20. Обработка, показанная здесь, является, в некоторой степени, обобщением, поскольку изменение начального пространства поиска не ограничивается операцией округления, но здесь, более широко, упоминается, что для каждой пары векторов движения в начальном пространстве поиска формируется представительная пара векторов движения. Операция округления, показанная на фиг. 20, является особым случаем этого отображения начальных векторов движения в пространстве поиска в представительные векторные пары.
Следующие этапы, 2130 (необязательный для сопоставления с шаблонами) и 2140, являются такими же, как на фиг. 17, с единственной разницей, что соответствующие операции выполняются с представительными векторами движения в модифицированном пространстве поиска. Этапы 2150 и 2160 соответствуют этапу 4 на фиг. 20. Этап 2150 описывает установку представительной пары векторов движения, минимизирующую стоимость сопоставления с шаблонами (или стоимость двустороннего сопоставления), как Pair_best_rep.The next steps, 2130 (optional for pattern matching) and 2140, are the same as in FIG. 17, with the only difference that the corresponding operations are performed on representative motion vectors in the modified search space.
Этап 2160 (необязательный) соответствует возвращению в прежнее состояние операции округления, показанной на этапе 4 на фиг. 20. На следующем этапе (1370), вектор движения (пара) исходного пространства поиска выводится как вектор движения для блока предсказания. Этапы 1370 и 1780 являются такими же, как на фиг. 17.Step 2160 (optional) corresponds to reverting to the rounding operation shown in step 4 in FIG. 20. In the next step (1370), the motion vector (pair) of the original search space is output as the motion vector for the prediction block.
Кроме того, способ кодирования обеспечивается для кодирования в битовом потоке видеоизображений, разделенных на блоки предсказания, причем способ кодирования содержит этапы определения вектора движения для блока предсказания, соответствующие любому из способов, описанных выше; а также этап кодирования разности между блоком предсказания и предиктором, заданным блоком предсказания в позиции, основанной на полученном векторе движения, и формирования битового потока, содержащего кодированную разность и начальный вектор движения.Further, an encoding method is provided for encoding in a bitstream video images divided into prediction blocks, the encoding method comprising the steps of determining a motion vector for a prediction block corresponding to any of the methods described above; and a step of encoding a difference between the prediction block and a predictor given by the prediction block at a position based on the received motion vector, and generating a bitstream containing the coded difference and the initial motion vector.
Способ кодирования может дополнительно содержать этапы, описанные со ссылкой на функции блоков, показанных на фиг. 1.The encoding method may further comprise the steps described with reference to the functions of the blocks shown in FIG. one.
Также дополнительно, обеспечивается способ декодирования для декодирования из битового потока видеоизображений, разделенных на блоки предсказания, причем упомянутый способ декодирования содержит этапы, на которых: синтаксически анализируют из битового потока начальный вектор движения и кодированную разность между блоком предсказания и предиктором, заданным блоком предсказания в позиции, определяемой детализированным вектором движения; определяют детализированный вектор движения для блока предсказания, соответствующего любому из способов, упомянутых выше; и реконструируют блок предсказания как сумму синтаксически проанализированной разности и предиктора, заданного блоком предсказания в позиции, определяемой детализированным вектором движения.Also additionally, a decoding method is provided for decoding video images divided into prediction blocks from a bitstream, said decoding method comprising the steps of: syntactically parsing from the bitstream an initial motion vector and an encoded difference between a prediction block and a predictor given by a prediction block at position , determined by the detailed motion vector; determining a detailed motion vector for a prediction block corresponding to any of the methods mentioned above; and reconstructing the prediction block as the sum of the parsed difference and the predictor given by the prediction block at a position determined by the fine-grained motion vector.
Способ декодирования может дополнительно содержать этапы, описанные со ссылкой на функции блоков, показанных на фиг. 2.The decoding method may further comprise the steps described with reference to the functions of the blocks shown in FIG. 2.
Однако заметим, что фиг. 1 и 2 не должны ограничивать настоящее раскрытие. Они представляют просто не создающий ограничений пример реализации настоящего изобретения в рамках существующих кодера и/или декодера.However, note that Fig. 1 and 2 should not limit the present disclosure. They represent simply a non-limiting example of the implementation of the present invention within an existing encoder and/or decoder.
Определение вектора движения с помощью заполнения выборки, как описано выше, может быть реализовано как часть кодирования и/или декодирования видеосигнала (движущегося изображения). Однако, определение вектора движения может также без ограничения использоваться для других целей при обработке изображений, таких как обнаружение движения, анализ движения и т. п., при применении для кодирования/декодирования.The determination of the motion vector using sample filling as described above may be implemented as part of the encoding and/or decoding of the video signal (moving picture). However, motion vector detection can also be used without limitation for other purposes in image processing, such as motion detection, motion analysis, and the like, when applied to encoding/decoding.
Определение вектора движения может быть реализовано устройством. Такое устройство может быть сочетанием программного и аппаратного обеспечения. Например, определение вектора движения может выполняться микросхемой, такой как универсальный процессор или цифровой сигнальный процессор (digital signal processor, DSP) или программируемая логическая интегральная схема (field programmable gate array, FPGA) и т. п. Однако, настоящее изобретение не ограничивается реализацией на программируемых аппаратных средствах. Оно может быть реализовано на специализированной прикладной интегральной схеме (application-specific integrated circuit, ASIC) или сочетанием вышеупомянутых аппаратных компонент.Motion vector determination may be implemented by the device. Such a device may be a combination of software and hardware. For example, motion vector determination may be performed by a chip such as a general purpose processor or a digital signal processor (DSP) or a field programmable gate array (FPGA), etc. However, the present invention is not limited to implementation on programmable hardware. It can be implemented on an application-specific integrated circuit (ASIC) or a combination of the above hardware components.
Определение вектора движения может также быть реализовано программными командами, хранящимися на считываемом компьютером носителе. Программа, когда она исполняется, заставляет компьютер выполнять этапы описанных выше способов. Считываемый компьютерный носитель может быть любым носителем, на котором хранится программа, таким как DVD, CD, USB (флэш-память), жесткий диск, запоминающее устройство на сервере, доступное через сеть, и т. д.Motion vector determination may also be implemented by software instructions stored on a computer-readable medium. The program, when executed, causes the computer to perform the steps of the methods described above. Readable computer media can be any media that stores the program, such as DVD, CD, USB (flash memory), hard disk, storage device on the server, accessible through the network, etc.
Кодер и/или декодер могут быть реализованы в различных устройствах, в том числе, в телевизоре, телевизионной приставке, персональном компьютере, планшете, смартфоне, и т. п., то есть, с помощью любого записывающего, кодирующего, транскодирующего, декодирующего или воспроизводящего устройства. Это может быть программное обеспечение или приложение, реализующие этапы способа и хранящиеся/действующие на процессоре, содержащемся в электронном устройстве, таком как те, которые упомянуты выше.The encoder and/or decoder may be implemented in a variety of devices, including a television, set-top box, personal computer, tablet, smartphone, etc., i.e., any recording, encoding, transcoding, decoding, or reproducing devices. This may be software or an application that implements the method steps and is stored/run on a processor contained in an electronic device such as those mentioned above.
Подводя итог, настоящее раскрытие относится к определению вектора движения, используя сопоставление с шаблонами или двустороннее сопоставление и формирование предиктора, основываясь на векторе движения. Сопоставление с шаблонами или двустороннее сопоставление и/или формирование предиктора используют интерполяционную фильтрацию. Операция интерполяционной фильтрации получает доступ к целочисленным позициям выборки внутри окна, причем окно содержит упомянутое пространство поиска и дополнительные целочисленные позиции выборки, доступные для сопоставления с шаблонами, заполняет по меньшей мере одну целочисленную позицию выборки, расположенную вне окна, заполненным значением выборки, которое основывается по меньшей мере на одной выборке внутри упомянутого окна, и использует оцененные значения целочисленных позиций выборки, а также заполненные значения выборки, чтобы выполнить сопоставление с шаблонами или формирование предиктора и/или двустороннее сопоставление.In summary, the present disclosure relates to motion vector determination using pattern matching or two-way matching and predictor generation based on the motion vector. Pattern matching or two-way matching and/or predictor generation use interpolation filtering. The interpolation filtering operation accesses integer sample positions within a window, where the window contains said search space and additional integer sample positions available for pattern matching, fills at least one integer sample position located outside the window, filled with a sample value that is based on on at least one sample within said window, and uses the estimated values of the integer sample positions as well as the populated sample values to perform pattern matching or predictor generation and/or two-tailed matching.
Далее представляются дополнительные варианты осуществления настоящего изобретения. Следует заметить, что нумерация, используемая в следующем разделе, не обязательно должна совпадать с нумерацией, используемой в предыдущих разделах.The following are additional embodiments of the present invention. It should be noted that the numbering used in the following section need not be the same as the numbering used in the previous sections.
Вариант 1 осуществления. Устройство кодирования для кодирования блока предсказания видеоизображения в битовый поток (171), причем устройство кодирования содержит:Option 1 implementation. An encoder for encoding a video prediction block into a bitstream (171), the encoder comprising:
схему (600) обработки, выполненную с возможностьюa processing circuit (600) configured to
определения вектора движения для блока (165) предсказания с помощью:determining the motion vector for the block (165) prediction using:
получения по меньшей мере одного начального вектора движения; иobtaining at least one initial motion vector; and
определения детализации начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения, где упомянутое пространство поиска располагается в позиции (810), задаваемой начальным вектором движения;determining a granularity of an initial motion vector based on a search space of possible motion vectors to obtain a granular motion vector where said search space is located at a position (810) specified by the initial motion vector;
кодирования разности (105) между блоком предсказания и предиктором, заданным блоком предсказания в позиции, основанной на определенном векторе движения и для формирования битового потока (171), содержащего кодированную разность и начальный вектор движения; иencoding a difference (105) between the prediction block and a predictor given by the prediction block at a position based on the determined motion vector, and to generate a bitstream (171) containing the coded difference and the initial motion vector; and
определения предиктора, соответствующего вектору движения, используя интерполяционную фильтрацию с помощью интерполяционного фильтра, где упомянутая интерполяционная фильтрацияdetermining a predictor corresponding to the motion vector using interpolation filtering with an interpolation filter, where said interpolation filtering
- получает доступ к значениям выборки в целочисленных позициях выборки в пределах заданного окна,- accesses sample values at integer sample positions within the specified window,
- заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне окна, заменяющим значением, которое основано по меньшей мере на одной выборке внутри упомянутого окна, и- replaces at least one sample value at an integer sample position located outside the window with a replacement value that is based on at least one sample inside said window, and
- использует значения целочисленных позиций выборки, к которым получен доступ, в качестве заменяющих значений, чтобы выполнить интерполяционную фильтрацию.- Uses the values of integer sample positions that are accessed as proxy values to perform interpolation filtering.
Вариант 2 осуществления. Устройство декодирования для декодирования из битового потока (171) видеоизображений, разделенных на блоки предсказания, причем устройство декодирования содержит схему обработки, выполненную с возможностью:
синтаксического анализа из битового потока начального вектора движения и кодированной разности между блоком предсказания и предиктором, задаваемым блоком предсказания в позиции, определяемой детализированным вектором движения;parsing from the bitstream an initial motion vector and an encoded difference between a prediction block and a predictor specified by the prediction block at a position determined by the detailed motion vector;
определения вектора движения для блока предсказания посредством:determining the motion vector for the prediction block by:
получения по меньшей мере одного начального вектора движения; иobtaining at least one initial motion vector; and
определения детализации начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения, где упомянутое пространство поиска располагается в позиции (810), задаваемой данный начальным вектором движения; иdetermining a granularity of an initial motion vector based on a search space of possible motion vectors to obtain a granular motion vector where said search space is located at a position (810) specified by the given initial motion vector; and
реконструкции блока предсказания как суммы проанализированной разности и предиктора, задаваемого блоком предсказания в позиции, определенной детализированным вектором движения, определенным схемой (600) обработки для определения вектора движения;reconstructing the prediction block as the sum of the analyzed difference and the predictor given by the prediction block at the position determined by the detailed motion vector determined by the motion vector determination processing circuit (600);
в котором упомянутая схема обработки дополнительно выполнена с возможностью определения предиктора, соответствующего детализированному вектору движения, используя интерполяцию с помощью интерполяционного фильтра, в котором упомянутая интерполяцияwherein said processing circuit is further configured to determine a predictor corresponding to the detailed motion vector using interpolation with an interpolation filter, wherein said interpolation
- получает доступ к значениям выборки в целочисленных позициях выборки в пределах заданного окна,- accesses sample values at integer sample positions within the specified window,
- заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне окна, на заменяющее значение, которое основано по меньшей мере на одной выборке внутри упомянутого окна, и- replaces at least one sample value at an integer sample position located outside the window with a replacement value that is based on at least one sample inside said window, and
- использует значения целочисленных позиций выборки, к которым получен доступ, в качестве заменяющих значений, чтобы выполнить интерполяцию.- Uses the values of the accessed integer sample positions as proxy values to perform the interpolation.
Вариант 3 осуществления. Устройство по варианту 1 или 2 осуществления, в котором заменяющее значение определяют посредством зеркального отражения относительно оси интерполяционного фильтра значения соответствующей оцененной целочисленной позиции выборки.
Вариант 4 осуществления. Устройство по любому из вариантов 1-3 осуществления, в котором интерполяционный фильтр является одномерным или разделяемым двумерным фильтром.Option 4 implementation. The apparatus of any one of embodiments 1-3, wherein the interpolation filter is a 1D or separable 2D filter.
Вариант 5 осуществления. Устройство по любому из вариантов 1-4 осуществления, в котором окно формируется всеми целочисленными позициями выборки, доступными для получения предиктора, задаваемого блоком предсказания в позиции, определяемой начальным вектором движения.Option 5 implementation. The device as in any one of embodiments 1-4, wherein the window is formed by all integer sample positions available to obtain a predictor given by a prediction block at a position determined by the initial motion vector.
Вариант 6 осуществления. Устройство по любому из вариантов 1-5 осуществления, в котором окно определяют его вертикальным и/или горизонтальным размером относительно по меньшей мере одного из следующего:Option 6 implementation. The device according to any one of embodiments 1-5, wherein the window is defined by its vertical and/or horizontal dimension relative to at least one of the following:
- блок с размером блока предсказания, расположенного в позиции начального вектора движения,- block with the size of the prediction block located at the position of the initial motion vector,
- позиция начального вектора движения, иis the position of the initial motion vector, and
- вертикальная и горизонтальная длина интерполяционного фильтра, используемого для определения предиктора.- vertical and horizontal length of the interpolation filter used to determine the predictor.
Вариант 7 осуществления. Устройство по любому из вариантов 1, 2 или 4-6 осуществления, в котором заменяющее значение определяют как равное значению в ближайшей из целочисленных позиций выборки, к которым получен доступ.Option 7 implementation. The apparatus of any one of
Вариант 8 осуществления. Устройство по любому из вариантов 1-7 осуществления, в котором количество значений выборки, которые должны быть заменены, зависит от разности между начальным вектором движения и детализированным вектором движения.Option 8 implementation. The device as in any one of embodiments 1-7, wherein the number of sample values to be replaced depends on the difference between the initial motion vector and the detailed motion vector.
Вариант 9 осуществления. Устройство по любому из предшествующих вариантов осуществления, в котором упомянутая схема (600) обработки выполнена с возможностью определения детализации начального вектора движения посредством сопоставления с шаблонами или двустороннего сопоставления, в которомOption 9 implementation. The device according to any of the preceding embodiments, wherein said processing circuit (600) is configured to determine the granularity of the initial motion vector by pattern matching or two-way matching, wherein
- упомянутое сопоставление с шаблонами или двустороннее сопоставление содержит:- said pattern matching or two-way matching contains:
- получение доступа к значениям выборки в целочисленных позициях выборки внутри дополнительного заданного окна (1120), причем дополнительное заданное окно (1120) содержит упомянутое пространство поиска и дополнительные целочисленные позиции выборки, доступные для сопоставления с шаблонами или двустороннего сопоставления,- accessing sample values in integer sample positions within an additional specified window (1120), wherein the additional specified window (1120) contains said search space and additional integer sample positions available for pattern matching or two-way matching,
- замена по меньшей мере одного значения (1030) выборки в целочисленной позиции выборки, расположенной вне дополнительного окна, заменяющим значением, которое основано по меньшей мере на одной выборке внутри упомянутого дополнительного окна, и- replacing at least one sample value (1030) at an integer sample position located outside the additional window with a replacement value that is based on at least one sample inside said additional window, and
- использование получивших доступ значений целочисленных позиций выборки в качестве заменяющих значений, для выполнения сопоставления с шаблонами или двустороннего сопоставления.- using the accessed values of integer sample positions as replacement values, to perform pattern matching or two-way matching.
Вариант 10 осуществления. Устройство по варианту 9 осуществления, в которомOption 10 implementation. The apparatus of embodiment 9, wherein
упомянутое пространство поиска содержит по меньшей мере одну дробную позицию выборки (1, 2, 6) со значением, полученным интерполяционной фильтрацией с помощью фильтра с заданными коэффициентами для умножения; иsaid search space contains at least one fractional sample position (1, 2, 6) with a value obtained by interpolation filtering using a filter with predetermined coefficients for multiplication; and
интерполяционная фильтрация использует упомянутые получившие доступ значения целочисленных позиций выборки и по меньшей мере одно заменяющее значение, чтобы получить упомянутое по меньшей мере одно значение дробной позиции выборки.the interpolation filtering uses said accessed integer sample position values and at least one substitute value to obtain said at least one fractional sample position value.
Вариант 11 осуществления. Устройство по варианту 10 осуществления, в котором заменяющее значение, используемое при сопоставлении с шаблонами или при двустороннем согласовании, определяют зеркальным отражением относительно оси фильтра значения соответствующей получившей доступ целочисленной позиции выборки.Option 11 implementation. The apparatus of embodiment 10, wherein the replacement value used in pattern matching or bidirectional matching is determined by mirroring about the filter axis the value of the corresponding accessed integer sample position.
Вариант 12 осуществления. Устройство по варианту 9 или 10 осуществления, в котором заменяющее значение, используемое при сопоставлении с шаблонами или при двустороннем согласовании, определяют как равное значению в ближайшей из получивших доступ целочисленных позиций выборки.Option 12 implementation. The apparatus of embodiment 9 or 10, wherein the replacement value used in pattern matching or round-trip matching is determined to be equal to the value in the nearest accessed integer sample position.
Вариант 13 осуществления. Устройство по любому из вариантов 9–12 осуществления, в котором дополнительное заданное окно (1120) определяют его вертикальным и/или горизонтальным размером относительно по меньшей мере одного из:Option 13 implementation. The device according to any one of embodiments 9-12, wherein the additional predetermined window (1120) is defined by its vertical and/or horizontal size relative to at least one of:
- пространства поиска,- search spaces,
- блока с размером блока предсказания, расположенного в начальной позиции вектора движения,- a block with the size of the prediction block located at the initial position of the motion vector,
- начальная позиция вектора движения.- initial position of the motion vector.
Вариант 14 осуществления. Устройство по любому из вариантов 9-13 осуществления, в котором упомянутое дополнительное заданное окно (1120) является таким же, как упомянутое заданное окно.Option 14 implementation. The apparatus of any one of embodiments 9-13, wherein said additional predetermined window (1120) is the same as said predetermined window.
Вариант 15 осуществления. Устройство по любому из вариантов 1-14 осуществления, в котором упомянутую детализацию определяют двусторонним сопоставлением и упомянутая схема обработки выполнена с возможностью получения по меньшей мере двух начальных векторов движения, указывающих позиции в различных опорных изображениях (Ref0, Ref1) и формирующих пару начальных векторов движения (Pair_0, Pair_1, …, Pair_N).Option 15 implementation. An apparatus according to any one of embodiments 1-14, wherein said granularity is determined by two-way matching and said processing circuit is configured to obtain at least two initial motion vectors indicating positions in different reference pictures (Ref0, Ref1) and forming a pair of initial motion vectors (Pair_0, Pair_1, ..., Pair_N).
Вариант 16 осуществления. Устройство по любому из вариантов 1-14 осуществления, в котором упомянутую детализацию определяют сопоставлением с шаблонами, причем упомянутая схема обработки дополнительно выполнена с возможностьюOption 16 implementation. An apparatus according to any one of embodiments 1-14, wherein said granularity is determined by pattern matching, wherein said processing circuitry is further configured to
получения шаблона для блока предсказания иobtaining a template for the prediction block and
определения детализации начального вектора движения посредством сопоставления с упомянутым шаблоном в упомянутом пространстве поиска.determining the granularity of the initial motion vector by matching with said pattern in said search space.
Вариант 17 осуществления. Способ кодирования для кодирования видеоизображений, разделенных на блоки предсказания, в битовом потоке, причем упомянутый способ кодирования содержит этапы, на которых:Option 17 implementation. A coding method for encoding video images divided into prediction blocks in a bitstream, said coding method comprising:
определяют вектор движения для блока предсказания, где упомянутое определение содержит этапы, на которыхdefine a motion vector for the prediction block, where said definition contains steps in which
получают (1310, 1410) по меньшей мере один начальный вектор движения; иreceive (1310, 1410) at least one initial motion vector; and
определяют (1320, 1330, 1340, 1720; 2115, 2120, 2130, 2140, 2150, 2160) детализацию начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения, где упомянутое пространство поиска располагается в позиции, заданной начальным вектором движения;determine (1320, 1330, 1340, 1720; 2115, 2120, 2130, 2140, 2150, 2160) the granularity of the initial motion vector based on the search space of possible motion vectors to obtain a granular motion vector, where the said search space is located at the position specified by the initial motion vector;
кодируют разность между блоком предсказания и предиктором, заданным блоком предсказания в позиции, основанной на определенном векторе движения, и формируют битовый поток, содержащий кодированную разность и начальный вектор движения; иencoding a difference between the prediction block and a predictor given by the prediction block at a position based on the determined motion vector, and generating a bitstream containing the coded difference and the initial motion vector; and
определяют (1780) предиктор, соответствующий вектору движения, используя интерполяционную фильтрацию с помощью интерполяционного фильтра, где упомянутая интерполяционная фильтрацияdetermining (1780) a predictor corresponding to the motion vector using interpolation filtering with an interpolation filter, where said interpolation filtering
- получает доступ к значениям выборки в целочисленных позициях выборки в пределах заданного окна,- accesses sample values at integer sample positions within the specified window,
- заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне окна, заменяющим значением, основанным по меньшей мере на одной выборке внутри упомянутого окна, и- replaces at least one sample value at an integer sample position located outside the window with a replacement value based on at least one sample inside said window, and
- использует получившие доступ значения целочисленных позиций выборки, а также заменяющие значения, для выполнения интерполяционной фильтрации.- uses the accessed values of integer sample positions, as well as replacement values, to perform interpolation filtering.
Вариант 18 осуществления. Способ декодирования для декодирования из битового потока видеоизображений, разделенных на блоки предсказания, причем упомянутое декодирование содержит этапы, на которыхOption 18 implementation. A decoding method for decoding video images divided into prediction blocks from a bitstream, said decoding comprising the steps of:
синтаксически анализируют из битового потока начальный вектор движения и кодированную разность между блоком предсказания и предиктором, заданным блоком предсказания, в позиции, определяемой детализированным вектором движения;syntactically parsing from the bitstream an initial motion vector and an encoded difference between the prediction block and a predictor specified by the prediction block at a position determined by the fine-grained motion vector;
определяют вектор движения для блока предсказания, где упомянутое определение содержит этапы, на которыхdefine a motion vector for the prediction block, where said definition contains steps in which
получают (1310, 1410) по меньшей мере один начальный вектор движения; иreceive (1310, 1410) at least one initial motion vector; and
определяют (1320, 1330, 1340, 1720; 2115, 2120, 2130, 2140, 2150, 2160) детализацию начального вектора движения на основе пространства поиска возможных векторов движения, чтобы получить детализированный вектор движения, где упомянутое пространство поиска располагается в позиции, задаваемой начальным вектором движения;determine (1320, 1330, 1340, 1720; 2115, 2120, 2130, 2140, 2150, 2160) the granularity of the initial motion vector based on the search space of possible motion vectors to obtain a granular motion vector, where the said search space is located at the position specified by the initial motion vector;
реконструируют блок предсказания как сумму проанализированной разности и предиктора, задаваемого блоком предсказания, в позиции, определенной детализированным вектором движения, определяемым этапом определения вектора движения; иreconstructing the prediction block as the sum of the analyzed difference and the predictor given by the prediction block at the position determined by the detailed motion vector determined by the motion vector determination step; and
определяют (1780) предиктор, соответствующий детализированному вектору движения, используя интерполяцию с помощью интерполяционного фильтра, где упомянутая интерполяцияdetermining (1780) a predictor corresponding to the fine-grained motion vector using interpolation with an interpolation filter, where said interpolation
- получает доступ к значениям выборки в целочисленных позициях выборки внутри заданного окна,- accesses sample values at integer sample positions within the specified window,
- заменяет по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне окна, заменяющим значением, основанным по меньшей мере на одной выборке внутри упомянутого окна, и- replaces at least one sample value at an integer sample position located outside the window with a replacement value based on at least one sample inside said window, and
- использует получившие доступ значения целочисленных позиций выборки, а также заменяющие значения для выполнения интерполяции.- uses the accessed values of integer sample positions as well as replacement values to perform interpolation.
Вариант 19 осуществления. Способ по варианту 17 или 18 осуществления, в котором заменяющее значение определяют посредством зеркального отражения относительно оси интерполяционного фильтра значения соответствующей оцененной целочисленной позиции выборки.Option 19 implementation. The method of embodiment 17 or 18, wherein the replacement value is determined by mirroring about the axis of the interpolation filter the value of the corresponding estimated integer sample position.
Вариант 20 осуществления. Способ по любому из вариантов 17–19 осуществления, в котором интерполяционный фильтр является одномерным или разделяемым двумерным фильтром.Embodiment 20. The method as in any one of embodiments 17-19, wherein the interpolation filter is a 1D or separable 2D filter.
Вариант 21 осуществления. Способ по любому из вариантов 17-20 осуществления, в котором окно формируется всеми целочисленными позициями выборки, доступными для получения предиктора, задаваемого блоком предсказания, в позиции, определяемой начальным вектором движения.Embodiment 21. The method as in any one of embodiments 17-20, wherein the window is formed by all integer sample positions available to obtain the predictor given by the prediction block at the position determined by the initial motion vector.
Вариант 22 осуществления. Способ по любому из вариантов 17-21 осуществления, в котором окно определяют его вертикальным и/или горизонтальным размером относительно по меньшей мере одного из следующего:Embodiment 22. The method according to any one of embodiments 17-21, wherein the window is defined by its vertical and/or horizontal dimension relative to at least one of the following:
- блок с размером блока предсказания, расположенного в начальной позиции вектора движения,- block with the size of the prediction block located at the initial position of the motion vector,
- начальная позиция вектора движения, иis the starting position of the motion vector, and
- вертикальная и горизонтальная длина интерполяционного фильтра, который используется для определения предиктора.- vertical and horizontal length of the interpolation filter that is used to determine the predictor.
Вариант 23 осуществления. Способ по любому из вариантов 17, 18 или 20–22 осуществления, в котором заменяющее значение определяют как равное значению в ближайшей из целочисленных позиций выборки, к которым получен доступ.Option 23 implementation. The method as in any one of embodiments 17, 18, or 20-22, wherein the replacement value is determined to be equal to the value at the nearest of the accessed integer positions in the sample.
Вариант 24 осуществления. Способ по любому из вариантов 17–23 осуществления, в котором количество значений выборки, которые должны быть заменены, зависит от разности между начальным вектором движения и детализированным вектором движения.Option 24 implementation. The method as in any one of embodiments 17-23, wherein the number of sample values to be replaced depends on the difference between the initial motion vector and the detailed motion vector.
Вариант 25 осуществления. Способ по любому из вариантов 17-24 осуществления, в котором упомянутый этап (1320, 1330, 1340, 1720; 2115, 2120, 2130, 2140, 2150, 2160) определения детализации определяет детализацию начального вектора движения посредством сопоставления с шаблоном или двустороннего сопоставления, в которомOption 25 implementation. The method according to any one of embodiments 17-24, wherein said granularity determination step (1320, 1330, 1340, 1720; 2115, 2120, 2130, 2140, 2150, 2160) determines the granularity of the initial motion vector by pattern matching or two-way matching, wherein
- упомянутое сопоставление с шаблоном или двустороннее сопоставление:- mentioned pattern matching or two-way matching:
- получает доступ к значениям выборки в целочисленных позициях выборки внутри дополнительного заданного окна, причем дополнительное заданное окно содержит упомянутое пространство поиска и дополнительные целочисленные позиции выборки, доступные для сопоставления с шаблонами или двустороннего сопоставления,- accesses sample values at integer sample positions within an additional specified window, wherein the additional specified window contains said search space and additional integer sample positions available for pattern matching or two-way matching,
- заменяет (1440) по меньшей мере одно значение выборки в целочисленной позиции выборки, расположенной вне дополнительного окна, заменяющим значением, которое основано по меньшей мере на одной выборке внутри упомянутого дополнительного окна, и- replaces (1440) at least one sample value at an integer sample position located outside the additional window with a replacement value that is based on at least one sample inside said additional window, and
- использует (1450) значения целочисленных позиций выборки, к которым получен доступ, а также заменяющие значения, чтобы выполнить сопоставление с шаблонами или двустороннее сопоставление.- uses (1450) the values of integer sample positions that are accessed, as well as replacement values, to perform pattern matching or two-way matching.
Вариант 26 осуществления. Способ по варианту 25 осуществления, в которомOption 26 implementation. The method of embodiment 25, wherein
упомянутое пространство поиска содержит по меньшей мере одну дробную позицию выборки со значением, полученным посредством интерполяционной фильтрации с помощью фильтра с заданным значением коэффициентов для умножения;said search space contains at least one fractional sample position with a value obtained by interpolation filtering using a filter with a given value of the coefficients for multiplication;
и интерполяционная фильтрация использует упомянутые значения с полученным доступом к целочисленным позициям выборки и по меньшей мере одно заменяющее значение, чтобы получить упомянутое по меньшей мере одно значение дробной позиции выборки.and interpolation filtering uses said integer sample position accessed values and at least one substitute value to obtain said at least one fractional sample position value.
Вариант 27 осуществления. Способ по варианту 26 осуществления, в котором заменяющее значение, используемое при сопоставлении с шаблонами или при двустороннем сопоставлении, определяют путем зеркального отражения относительно оси фильтра значения соответствующей оцененной целочисленной позиции выборки.Option 27 implementation. The method of embodiment 26 wherein the replacement value used in pattern matching or two-way matching is determined by mirroring about the filter axis the value of the corresponding evaluated integer sample position.
Вариант 28 осуществления. Способ по варианту осуществления 26 или 27, в котором заменяющее значение, используемое при сопоставлении с шаблонами или при двустороннем сопоставлении определяют как равное значению, ближайшему к целочисленной позиции выборки, к которой получен доступ.Option 28 implementation. The method of embodiment 26 or 27 wherein the replacement value used in pattern matching or two-way matching is determined to be equal to the value closest to the integer position of the accessed sample.
Вариант 29 осуществления. Способ по любому из вариантов 25-28 осуществления, в котором дополнительное заданное окно определяют его вертикальным и/или горизонтальным размером относительно по меньшей мере одного из:Option 29 implementation. The method of any one of embodiments 25-28, wherein the additional predetermined window is defined by its vertical and/or horizontal size relative to at least one of:
- пространства поиска,- search spaces,
- блока с размером блока предсказания, расположенного в позиции начального вектора движения,- a block with the size of the prediction block located at the position of the initial motion vector,
- позиции начального вектора движения.- position of the initial motion vector.
Вариант 30 осуществления. Способ по любому из вариантов 25-29 осуществления, в котором упомянутое дополнительное заданное окно является таким же, как и упомянутое заданное окно.Option 30 implementation. The method of any one of embodiments 25-29, wherein said additional predetermined window is the same as said predetermined window.
Вариант 31 осуществления. Способ по любому из вариантов 17-30 осуществления, в котором упомянутая детализация определяют двусторонним сопоставлением и на упомянутом этапе получения получают по меньшей мере два начальных вектора движения, указывающих позиции в различных опорных изображениях и формирующих пару начальных векторов движения.Option 31 implementation. The method as in any one of embodiments 17-30, wherein said granularity is determined by two-way matching, and in said acquisition step, at least two initial motion vectors are obtained indicating positions in different reference pictures and forming a pair of initial motion vectors.
Вариант 32 осуществления. Способ по любому из вариантов 17-31 осуществления, в котором упомянутая детализация определяют сопоставлением с шаблонами и упомянутый этап определения вектора движения дополнительно содержит этапы, на которыхOption 32 implementation. The method as in any one of embodiments 17-31, wherein said granularity is determined by pattern matching and said motion vector determination step further comprises:
получают (1330; 2130) шаблон для блока предсказания иget (1330; 2130) a template for the prediction block and
определяют (1340; 2140) детализацию начального вектора движения посредством сопоставления с упомянутым шаблоном в упомянутом пространстве поиска.determine (1340; 2140) detail of the initial motion vector by matching with the mentioned template in the mentioned search space.
Вариант 33 осуществления. Считываемый компьютером носитель для хранения команд, которые, когда исполняются процессором, заставляют процессор выполнять способ, соответствующий любому из вариантов 17-32 осуществления.Option 33 implementation. A computer-readable medium for storing instructions that, when executed by a processor, causes the processor to execute a method according to any one of embodiments 17-32.
Claims (45)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/691,594 | 2018-06-28 | ||
US62/691,582 | 2018-06-28 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2022128350A Division RU2022128350A (en) | 2018-06-28 | 2019-06-28 | MEMORY ACCESS WINDOW AND PADDING FOR MOTION VECTOR DETAIL AND MOTION COMPENSATION |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021101690A RU2021101690A (en) | 2022-07-28 |
RU2783331C2 true RU2783331C2 (en) | 2022-11-11 |
Family
ID=
Non-Patent Citations (1)
Title |
---|
CHEN J. et al, Algorithm description of Joint Exploration Test Model 7 (JEM7), Joint Video Exploration Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-G1001-v1, 7th Meeting: Torino, 13-21 July 2017. US 2013315313 A1 - 2013-11-28. WO 2017036414 A1 - 2017-03-09. US 9516341 B2 - 2016-12-06. US 2014010306 A1 - 2014-01-09. RU 2335096 C1 - 2008-09-27. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102606778B1 (en) | Memory access windows and padding for motion vector refinement and motion compensation | |
JP7279140B2 (en) | Limited memory access window for motion vector refinement | |
US11153595B2 (en) | Memory access window and padding for motion vector refinement | |
US20200236398A1 (en) | Motion vector refinement of a motion vector pointing to a fractional sample position | |
RU2783331C2 (en) | Memory access window and filling for detailing of motion vector and motion compensation |