BR112017020632B1 - METHODS AND DEVICE FOR PROCESSING VIDEO DATA AND COMPUTER READABLE MEMORY - Google Patents
METHODS AND DEVICE FOR PROCESSING VIDEO DATA AND COMPUTER READABLE MEMORY Download PDFInfo
- Publication number
- BR112017020632B1 BR112017020632B1 BR112017020632-3A BR112017020632A BR112017020632B1 BR 112017020632 B1 BR112017020632 B1 BR 112017020632B1 BR 112017020632 A BR112017020632 A BR 112017020632A BR 112017020632 B1 BR112017020632 B1 BR 112017020632B1
- Authority
- BR
- Brazil
- Prior art keywords
- block
- motion
- video
- sub
- current block
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 232
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 230000033001 locomotion Effects 0.000 claims abstract description 730
- 238000009795 derivation Methods 0.000 claims abstract description 132
- 239000013598 vector Substances 0.000 claims description 251
- 238000004891 communication Methods 0.000 claims description 19
- 238000007670 refining Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 56
- 230000002146 bilateral effect Effects 0.000 description 41
- 230000002123 temporal effect Effects 0.000 description 38
- 239000000203 mixture Substances 0.000 description 26
- 238000005192 partition Methods 0.000 description 25
- 241000023320 Luma <angiosperm> Species 0.000 description 24
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 24
- 238000003860 storage Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 230000002457 bidirectional effect Effects 0.000 description 18
- 238000013139 quantization Methods 0.000 description 18
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 17
- 238000000638 solvent extraction Methods 0.000 description 14
- 238000012805 post-processing Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 10
- 101100537098 Mus musculus Alyref gene Proteins 0.000 description 8
- 101150095908 apex1 gene Proteins 0.000 description 8
- 230000011664 signaling Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 229910003460 diamond Inorganic materials 0.000 description 7
- 239000010432 diamond Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 238000010845 search algorithm Methods 0.000 description 7
- 229920001091 Poly(octyl cyanoacrylate) Polymers 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 238000012935 Averaging Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 4
- DNORZUSMZSZZKU-UHFFFAOYSA-N ethyl 2-[5-(4-chlorophenyl)pentyl]oxirane-2-carboxylate Chemical compound C=1C=C(Cl)C=CC=1CCCCCC1(C(=O)OCC)CO1 DNORZUSMZSZZKU-UHFFFAOYSA-N 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 101150114515 CTBS gene Proteins 0.000 description 2
- 241000985610 Forpus Species 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013213 extrapolation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Abstract
INFORMAÇÕES DE MOVIMENTO DE DERIVAÇÃO PARA SUB-BLOCOS EM CONVERSÃO DE VÍDEO EM CÓDIGO. Trata-se de um método para processamento de dados de vídeo que inclui dividir um bloco atual de dados de vídeo em uma pluralidade de sub-blocos para derivar informações de movimento do bloco atual, sendo que as informações de movimento indicam movimento do bloco atual com relação aos dados de vídeo de referência. O método também inclui derivar, separadamente para cada respectivo sub-bloco da pluralidade de sub-blocos, informações de movimento que compreendem realizar uma busca de movimento para um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora de cada respectivo sub-bloco. O método também inclui decodificar a pluralidade de sub-blocos com base nas informações de movimento derivadas e sem decodificar elementos de sintaxe representativos das informações de movimento.DERIVATION MOVEMENT INFORMATION FOR SUB-BLOCKS IN VIDEO TO CODE CONVERSION. It is a method for processing video data that includes dividing a current block of video data into a plurality of sub-blocks to derive motion information of the current block, wherein the motion information indicates motion of the current block with relative to the reference video data. The method also includes deriving, separately for each respective sub-block of the plurality of sub-blocks, motion information comprising performing a motion search for a first set of reference data corresponding to a second set of reference data outside of each respective sub-block. The method also includes decoding the plurality of sub-blocks based on the derived motion information and without decoding syntax elements representative of the motion information.
Description
[001] Este pedido reivindica o benefício do Pedido Provisório sob no U.S. 62/139.572 depositado em 27 de março de 2015 e do Pedido Provisório sob no U.S. 62/182.367 depositado em 19 de junho de 2015, cujos conteúdos inteiros são incorporados no presente documento, a título de referência.[001] This application claims the benefit of Provisional Application under U.S. 62/139,572 filed on March 27, 2015 and Provisional Application under U.S. 62/182,367 filed on June 19, 2015, the entire contents of which are incorporated herein , for reference.
[002] Esta revelação refere-se à codificação de vídeo.[002] This disclosure relates to video coding.
[003] As capacidades de vídeo digital podem ser incorporadas em uma grande variedade de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistema de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos eletrônicos, consoles de jogos eletrônicos, telefones de rádio via satélite ou celular, os chamados de "telefones inteligentes", dispositivos de teleconferência por vídeo, dispositivos de transmissão contínua de vídeo e similares. Os dispositivos de vídeo digital implantam técnicas de codificação de vídeo como aqueles descritos nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais técnicas de codificação de vídeo.[003] Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, desktop computers, tablets, e-book readers, digital cameras, digital recording devices, digital media players, electronic gaming devices, electronic game consoles, satellite or cellular radio phones, so-called "smart phones", video teleconferencing, video streaming devices and the like. Digital video devices implement video coding techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Video Coding Advanced Video Coding (AVC), the High Efficiency Video Coding (HEVC) standard, and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video coding techniques.
[004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo que, para algumas técnicas, também podem ser denominados como blocos em árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados com o uso de predição espacial em relação às amostras de referência em blocos próximos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos próximos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser denominadas como quadros e as imagens de referência podem ser denominadas como quadros de referência.[004] Video coding techniques include spatial prediction (intra-image) and/or temporal prediction (inter-image) to reduce or remove inherent redundancy in video sequences. For block-based video coding, a video slice (e.g., a video frame or a portion of a video frame) can be partitioned into video blocks, which for some techniques can also be referred to as blocks. tree, coding units (CUs) and/or coding nodes. Video blocks in an intracoded (I) slice of an image are encoded using spatial prediction with respect to reference samples in nearby blocks in the same image. Video blocks in an intercoded slice (P or B) of an image can use spatial prediction with respect to reference samples in nearby blocks in the same image or temporal prediction with respect to reference samples in other reference images. Images can be termed as frames and reference images can be termed as reference frames.
[005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que forma o bloco preditivo, e em que os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio da transformada, resultando em coeficientes de transformada residuais que podem, então, ser quantizados. Os coeficientes de transformada quantizados dispostos inicialmente em uma matriz bidimensional podem ser varridos a fim de produzir um vetor monodimensional de coeficiente de transformada e a codificação por entropia pode ser aplicada para conseguir ainda mais compactação.[005] Spatial or temporal prediction results in a predictive block for a block to be encoded. Residual data represents pixel differences between the original block to be encoded and the predictive block. An intercoded block is coded according to a motion vector that points to a block of reference samples that forms the predictive block, and wherein the residual data indicates the difference between the encoded block and the predictive block. An intracode block is coded according to an intracoding mode and the residual data. For further compression, the residual data can be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients that can then be quantized. The quantized transform coefficients initially arranged in a two-dimensional matrix can be scanned to produce a one-dimensional transform coefficient vector, and entropy coding can be applied to achieve further compression.
[006] As técnicas desta revelação se referem à derivação de informações de movimento na codificação de vídeo. Por exemplo, um codificador (coder) de vídeo (um codificador (encoder) de vídeo ou decodificador de vídeo) pode gerar informações de movimento que não estão inclusas no fluxo de bits para codificar dados de vídeo que estão inclusos no fluxo de bits. Derivando-se as informações de movimento no ciclo de codificação ou decodificação, uma economia de bits pode ser alcançada em relação a técnicas que incluem informações de movimento no fluxo de bits como técnicas de interpredição tradicionais.[006] The techniques of this disclosure relate to deriving motion information in video coding. For example, a video encoder (a video encoder or video decoder) may generate motion information that is not included in the bitstream to encode video data that is included in the bitstream. By deriving motion information in the encoding or decoding cycle, bit savings can be achieved over techniques that include motion information in the bit stream such as traditional interprediction techniques.
[007] Em um exemplo, um método para decodificar dados de vídeo inclui selecionar um modo de derivação de informações de movimento a partir de uma pluralidade de modos de derivação de informações de movimento para determinar informações de movimento para um bloco atual, em que cada modo de derivação de informações de movimento da pluralidade compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual, e em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, determinar as informações de movimento para o bloco atual com o uso do modo de derivação de informações de movimento selecionado e decodificar o bloco atual com o uso das informações de movimento determinadas e sem decodificar os elementos de sintaxe representativos das informações de movimento.[007] In one example, a method for decoding video data includes selecting a motion information derivation mode from a plurality of motion information derivation modes to determine motion information for a current block, wherein each Mode of deriving motion information from the plurality comprises performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block, and wherein the motion information indicates motion of the current block relative to the reference video data, determine the motion information for the current block using the selected motion information derivation mode, and decode the current block using the determined motion information and without decoding the syntax elements representative of movement information.
[008] Em outro exemplo, um método para codificar dados de vídeo inclui selecionar um modo de derivação de informações de movimento a partir de uma pluralidade de modos de derivação de informações de movimento para determinar informações de movimento para um bloco atual, em que cada modo de derivação de informações de movimento da pluralidade compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual, e em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, e determinar as informações de movimento para o bloco atual com o uso do modo de derivação de informações de movimento selecionado e codificar o bloco atual com o uso das informações de movimento determinadas e sem codificar os elementos de sintaxe representativos das informações de movimento.[008] In another example, a method for encoding video data includes selecting a motion information derivation mode from a plurality of motion information derivation modes to determine motion information for a current block, wherein each Mode of deriving motion information from the plurality comprises performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block, and wherein the motion information indicates motion of the current block relative to the reference video data, and determine the motion information for the current block using the selected motion information derivation mode, and encode the current block using the determined motion information and without encoding the video elements. syntax representing movement information.
[009] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui uma memória configurada para armazenar um bloco atual de dados de vídeo, e um ou mais processadores configurados para selecionar um modo de derivação de informações de movimento a partir de uma pluralidade de modos de derivação de informações de movimento para determinar informações de movimento para o bloco atual, em que cada modo de derivação de informações de movimento da pluralidade compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual, e em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, determinar as informações de movimento para o bloco atual com o uso do modo de derivação de informações de movimento selecionado e codificar o bloco atual com o uso das informações de movimento determinadas e sem elementos de sintaxe de codificação representativos das informações de movimento.[009] In another example, a device for encoding video data includes a memory configured to store a current block of video data, and one or more processors configured to select a mode of deriving motion information from a plurality of motion information deriving modes for determining motion information for the current block, wherein each motion information deriving mode of the plurality comprises performing a motion search for a first set of reference data corresponding to a second set of reference data outside the current tile, and wherein the motion information indicates motion of the current tile relative to the reference video data, determine the motion information for the current tile using the selected motion information derivation mode and encoding the current block using the determined motion information and without coding syntax elements representative of the motion information.
[0010] Em outro exemplo, um aparelho para codificar dados de vídeo inclui meios para selecionar um modo de derivação de informações de movimento a partir de uma pluralidade de modos de derivação de informações de movimento para determinar informações de movimento para um bloco atual, em que cada modo de derivação de informações de movimento da pluralidade compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual, e em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, meios para determinar as informações de movimento para o bloco atual com o uso do modo de derivação de informações de movimento selecionado e meios para codificar o bloco atual com o uso das informações de movimento determinadas e sem decodificar os elementos de sintaxe representativos das informações de movimento.[0010] In another example, an apparatus for encoding video data includes means for selecting a motion information derivation mode from a plurality of motion information derivation modes to determine motion information for a current block, in that each mode of deriving motion information of the plurality comprises performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block, and wherein the motion information indicates motion of the current block with respect to the reference video data, means for determining the motion information for the current block using the selected motion information derivation mode, and means for encoding the current block using the determined motion information and without decoding the syntax elements representing the motion information.
[0011] Em outro exemplo, uma mídia legível por computador não transitória tem instruções armazenadas na mesma que, quando executadas, fazem com que um ou mais processadores selecionem um modo de derivação de informações de movimento a partir de uma pluralidade de modos de derivação de informações de movimento para determinar informações de movimento para um bloco atual, em que cada modo de derivação de informações de movimento da pluralidade compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual, e em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, determinar as informações de movimento para o bloco atual com o uso do modo de derivação de informações de movimento selecionado, e codificar o bloco atual com o uso das informações de movimento determinadas e sem decodificar elementos de sintaxe representativos das informações de movimento.[0011] In another example, a non-transitory computer-readable medium has instructions stored therein that, when executed, cause one or more processors to select a motion information derivation mode from a plurality of motion information derivation modes. motion information to determine motion information for a current block, wherein each mode of deriving motion information of the plurality comprises performing a motion search for a first set of reference data that corresponds to a second set of reference data outside of the current block, and wherein the motion information indicates motion of the current block relative to the reference video data, determine the motion information for the current block using the selected motion information derivation mode, and encode the current block using the determined motion information and without decoding syntax elements representative of the motion information.
[0012] Em outro exemplo, um método para processar dados de vídeo inclui determinar um vetor de movimento candidato para derivar informações de movimento de um bloco atual de dados de vídeo, em que as informações de movimento indicam o movimento do bloco atual em relação aos dados de vídeo de referência e determinar um vetor de movimento derivado para o bloco atual com base no vetor de movimento candidato determinado, em que determinar o vetor de movimento derivado compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual.[0012] In another example, a method for processing video data includes determining a candidate motion vector for deriving motion information from a current block of video data, wherein the motion information indicates the motion of the current block relative to the reference video data and determining a derived motion vector for the current block based on the determined candidate motion vector, wherein determining the derived motion vector comprises performing a motion search for a first set of reference data corresponding to a second set of reference data outside the current block.
[0013] Em outro exemplo, um dispositivo para processar dados de vídeo inclui uma memória configurada para armazenar um bloco atual de dados de vídeo, e um ou mais processadores configurados para determinar um vetor de movimento candidato para derivar informações de movimento de um bloco atual de dados de vídeo, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, e determinar um vetor de movimento derivado para o bloco atual com base no vetor de movimento candidato determinado, em que determinar o vetor de movimento derivado compreende realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual.[0013] In another example, a device for processing video data includes a memory configured to store a current block of video data, and one or more processors configured to determine a candidate motion vector for deriving motion information from a current block. of video data, wherein the motion information indicates motion of the current block relative to the reference video data, and determining a derived motion vector for the current block based on the determined candidate motion vector, wherein determining the vector Derived motion search comprises performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block.
[0014] Em outro exemplo, um aparelho para processar dados de vídeo inclui meios para determinar um vetor de movimento candidato para derivar informações de movimento de um bloco atual de dados de vídeo, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, e meios para determinar um vetor de movimento derivado para o bloco atual com base no vetor de movimento candidato determinado, em que os meios para determinar o vetor de movimento derivado compreendem meios para realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual.[0014] In another example, an apparatus for processing video data includes means for determining a candidate motion vector for deriving motion information from a current block of video data, wherein the motion information indicates motion of the current block relative to to the reference video data, and means for determining a derived motion vector for the current block based on the determined candidate motion vector, wherein the means for determining the derived motion vector comprises means for performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block.
[0015] Em outro exemplo, uma mídia legível por computador não transitória tem instruções armazenadas na mesma que, quando executadas, fazem com que um ou mais processadores determinem um vetor de movimento candidato para derivar informações de movimento de um bloco atual de dados de vídeo, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, e determinar um vetor de movimento derivado para o bloco atual com base no vetor de movimento candidato determinado, em que, para determinar o vetor de movimento derivado, as instruções fazem com que o um ou mais processadores realizem uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual.[0015] In another example, a non-transitory computer-readable medium has instructions stored therein that, when executed, cause one or more processors to determine a candidate motion vector for deriving motion information from a current block of video data. , wherein the motion information indicates motion of the current tile relative to the reference video data, and determining a derived motion vector for the current tile based on the determined candidate motion vector, wherein, to determine the motion vector Derived instructions cause the one or more processors to perform a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block.
[0016] Em outro exemplo, um método para processar dados de vídeo inclui dividir um bloco atual de dados de vídeo em uma pluralidade de sub-blocos para derivar informações de movimento do bloco atual, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, derivar, separadamente para cada respectivo sub-bloco dentre a pluralidade de sub-blocos, em que as informações de movimento compreendem realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora de cada respectivo sub- bloco e decodificar a pluralidade de sub-blocos com base nas informações de movimento derivadas e sem decodificar os elementos de sintaxe representativos das informações de movimento.[0016] In another example, a method for processing video data includes dividing a current block of video data into a plurality of sub-blocks to derive motion information from the current block, wherein the motion information indicates motion from the current block. with respect to the reference video data, derive, separately for each respective sub-block among the plurality of sub-blocks, wherein the motion information comprises performing a motion search for a first set of reference data corresponding to a second set of reference data outside each respective sub-block and decoding the plurality of sub-blocks based on the derived motion information and without decoding the syntax elements representative of the motion information.
[0017] Em outro exemplo, um método para processar dados de vídeo inclui dividir um bloco atual de dados de vídeo em uma pluralidade de sub-blocos para derivar informações de movimento do bloco atual, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, derivar, separadamente para cada respectivo sub-bloco dentre a pluralidade de sub-blocos, em que as informações de movimento compreendem realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora de cada respectivo sub- bloco e codificar a pluralidade de sub-blocos com base nas informações de movimento derivadas e sem codificar os elementos de sintaxe representativos das informações de movimento.[0017] In another example, a method for processing video data includes dividing a current block of video data into a plurality of sub-blocks to derive motion information from the current block, wherein the motion information indicates motion from the current block. with respect to the reference video data, derive, separately for each respective sub-block among the plurality of sub-blocks, wherein the motion information comprises performing a motion search for a first set of reference data corresponding to a second set of reference data outside each respective sub-block and encoding the plurality of sub-blocks based on the derived motion information and without encoding the syntax elements representative of the motion information.
[0018] Em outro exemplo, um dispositivo para processar dados de vídeo inclui uma memória configurada para armazenar um bloco atual de dados de vídeo, e um ou mais processadores configurados para dividir um bloco atual de dados de vídeo em uma pluralidade de sub-blocos para derivar informações de movimento do bloco atual, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, derivar, separadamente para cada respectivo sub-bloco dentre a pluralidade de sub-blocos, em que as informações de movimento compreendem realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora de cada respectivo sub- bloco e codificar a pluralidade de sub-blocos com base nas informações de movimento derivadas e sem codificar os elementos de sintaxe representativos das informações de movimento.[0018] In another example, a device for processing video data includes a memory configured to store a current block of video data, and one or more processors configured to divide a current block of video data into a plurality of sub-blocks. to derive motion information of the current block, wherein the motion information indicates motion of the current block relative to the reference video data, derive, separately for each respective sub-block among the plurality of sub-blocks, wherein the information of motion comprise performing a motion search for a first set of reference data corresponding to a second set of reference data outside each respective sub-block and encoding the plurality of sub-blocks based on the derived motion information and without encode the syntax elements representing movement information.
[0019] Em outro exemplo, uma mídia legível por computador não transitória tem instruções armazenadas na mesma que, quando executadas, fazem com que o um ou mais processadores dividam um bloco atual de dados de vídeo em uma pluralidade de sub-blocos para derivar informações de movimento do bloco atual, em que as informações de movimento indicam movimento do bloco atual em relação aos dados de vídeo de referência, derivar, separadamente para cada respectivo sub-bloco dentre a pluralidade de sub-blocos, em que as informações de movimento compreendem realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora de cada respectivo sub-bloco e decodificar a pluralidade de sub-blocos com base nas informações de movimento derivadas e sem decodificar os elementos de sintaxe representativos das informações de movimento.[0019] In another example, a non-transitory computer-readable medium has instructions stored therein that, when executed, cause the one or more processors to divide a current block of video data into a plurality of sub-blocks to derive information of motion of the current block, wherein the motion information indicates motion of the current block relative to the reference video data, derive, separately for each respective sub-block from among the plurality of sub-blocks, wherein the motion information comprises perform a motion search for a first set of reference data corresponding to a second set of reference data outside each respective sub-block and decode the plurality of sub-blocks based on the derived motion information and without decoding the elements of syntax representing movement information.
[0020] Em outro exemplo, um dispositivo para processar dados de vídeo inclui uma memória configurada para armazenar uma imagem atual, e um ou mais processadores configurados para obter um fluxo de bits codificado que contém uma pluralidade de imagens codificadas, interpolar uma ou mais imagens de referência que não estão inclusas no fluxo de bits codificado e decodificar dados de vídeo de uma imagem atual do fluxo de bits codificado com base na uma ou mais imagens de referência interpoladas.[0020] In another example, a device for processing video data includes a memory configured to store a current image, and one or more processors configured to obtain an encoded bit stream containing a plurality of encoded images, interpolate one or more images reference images that are not included in the encoded bitstream and decode video data from a current image of the encoded bitstream based on the one or more interpolated reference images.
[0021] Os detalhes de um ou mais exemplos da revelação são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.[0021] Details of one or more examples of the disclosure are presented in the attached drawings and in the description below. Other features, objectives and advantages will be apparent from the description, drawings and claims.
[0022] A Figura 1 é um diagrama de blocos que ilustra um sistema de decodificação e codificação de vídeo exemplificativo que pode implantar técnicas desta revelação.[0022] Figure 1 is a block diagram illustrating an exemplary video decoding and encoding system that can implement techniques of this disclosure.
[0023] A Figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo que pode implantar técnicas desta revelação.[0023] Figure 2 is a block diagram illustrating an example of a video encoder that can implement techniques of this disclosure.
[0024] A Figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo que pode implantar técnicas desta revelação.[0024] Figure 3 is a block diagram illustrating an example of a video decoder that can implement techniques of this disclosure.
[0025] As Figuras 4A e 4B são diagramas conceituais que ilustram candidatos de vetor de movimento vizinhos espaciais exemplificativos para um modo de mescla e um modo de predição de vetor de movimento avançada (AMVP).[0025] Figures 4A and 4B are conceptual diagrams illustrating exemplary spatial neighboring motion vector candidates for a blend mode and an advanced motion vector prediction (AMVP) mode.
[0026] As Figuras 5A e 5B são diagramas conceituais que ilustram um candidato de preditor de vetor de movimento temporal (TMVP) exemplificativo e escalonamento de vetor de movimento.[0026] Figures 5A and 5B are conceptual diagrams illustrating an exemplary temporal motion vector predictor (TMVP) candidate and motion vector scaling.
[0027] A Figura 6 é um diagrama conceitual que ilustra um exemplo de estimativa de movimento unilateral (ME) em conversão ascendente (up-conversion) de taxa de quadros (FRUC).[0027] Figure 6 is a conceptual diagram illustrating an example of one-way motion estimation (ME) in frame rate up-conversion (FRUC).
[0028] A Figura 7 é um diagrama conceitual que ilustra um exemplo de estimativa de movimento bilateral (ME) em FRUC.[0028] Figure 7 is a conceptual diagram illustrating an example of bilateral motion estimation (ME) in FRUC.
[0029] A Figura 8 é um diagrama conceitual que ilustra um exemplo de derivação de vetor de movimento de lado de decodificador (DMVD) com base em correspondência de modelo.[0029] Figure 8 is a conceptual diagram illustrating an example of decoder side motion vector derivation (DMVD) based on template matching.
[0030] A Figura 9 é um diagrama conceitual que ilustra um exemplo de derivação de vetor de movimento bidirecional com base em espelho em DMVD.[0030] Figure 9 is a conceptual diagram illustrating an example of mirror-based bidirectional motion vector derivation in DMVD.
[0031] A Figura 10 é um diagrama conceitual que ilustra derivação de vetor de movimento com base em correspondência bilateral estendida.[0031] Figure 10 is a conceptual diagram illustrating motion vector derivation based on extended bilateral correspondence.
[0032] A Figura 11 é um fluxograma que ilustra um exemplo de decodificação de uma unidade de predição (PU) com o uso de DMVD.[0032] Figure 11 is a flowchart that illustrates an example of decoding a prediction unit (PU) using DMVD.
[0033] A Figura 12 é um fluxograma que ilustra um processo exemplificativo para determinar um modo de derivação de informações de movimento para codificar um bloco de dados de vídeo.[0033] Figure 12 is a flowchart illustrating an exemplary process for determining a mode of deriving motion information for encoding a block of video data.
[0034] A Figura 13 é um fluxograma que ilustra um processo exemplificativo para derivar um vetor de movimento para codificar um bloco de dados de vídeo.[0034] Figure 13 is a flowchart illustrating an exemplary process for deriving a motion vector for encoding a block of video data.
[0035] A Figura 14 é um fluxograma que ilustra um processo exemplificativo para derivar informações de movimento para sub-blocos de um bloco de dados de vídeo.[0035] Figure 14 is a flowchart illustrating an exemplary process for deriving motion information for sub-blocks of a video data block.
[0036] As técnicas desta revelação se referem à derivação de informações de movimento de lado de decodificador, particionamento de bloco e/ou interpolação de dados de na codificação de vídeo com base em bloco. As técnicas podem ser aplicadas a qualquer um dos codecs de vídeo existentes, como Codificação de Vídeo de Alta Eficiência (HEVC) ou ser uma ferramenta de codificação eficaz para quaisquer padrões de codificação de vídeo futuros.[0036] The techniques of this disclosure relate to deriving decoder side motion information, block partitioning, and/or data interpolation in block-based video coding. The techniques can be applied to any of the existing video codecs such as High Efficiency Video Coding (HEVC) or be an effective encoding tool for any future video coding standards.
[0037] Os dispositivos de codificação de vídeo implantam técnicas de compactação de vídeo para codificar e decodificar os dados de vídeo de modo eficaz. As técnicas de compactação de vídeo podem incluir aplicar predição espacial (por exemplo, predição intraquadro), predição temporal (por exemplo, predição interquadros), e/ou outras técnicas de predição para reduzir ou remover a redundância inerente em sequências de vídeo. Um codificador de vídeo particiona, tipicamente, cada imagem de uma sequência de vídeo original em regiões retangulares referidas como blocos de vídeo ou unidades de codificação (descritos em maiores detalhes abaixo). Esses blocos de vídeo podem ser codificados com o uso de um modo de predição particular.[0037] Video encoding devices deploy video compression techniques to encode and decode video data effectively. Video compression techniques may include applying spatial prediction (e.g., intra-frame prediction), temporal prediction (e.g., inter-frame prediction), and/or other prediction techniques to reduce or remove inherent redundancy in video sequences. A video encoder typically partitions each image of an original video sequence into rectangular regions referred to as video blocks or coding units (described in greater detail below). These video blocks can be encoded using a particular prediction mode.
[0038] Para modos de interpredição, um codificador de vídeo busca, tipicamente, por um bloco semelhante àquele sendo codificado em um quadro em outro local temporal, referido como quadro de referência. O codificador de vídeo pode restringir a busca a um determinado deslocamento espacial do bloco a ser codificado. Uma melhor correspondência pode ser localizada com o uso de um vetor de movimento bidimensional (2D) que inclui um componente de deslocamento horizontal e um componente de deslocamento vertical. Para um modo de intrapredição, um codificador de vídeo pode formar o bloco predito com o uso de técnicas de predição espaciais com base nos dados de blocos vizinhos anteriormente codificados dentro da mesma imagem.[0038] For interprediction modes, a video encoder typically searches for a block similar to that being encoded in a frame at another temporal location, referred to as a reference frame. The video encoder can restrict the search to a certain spatial displacement of the block to be encoded. A better match can be found using a two-dimensional (2D) motion vector that includes a horizontal displacement component and a vertical displacement component. For an intraprediction mode, a video encoder may form the predicted block using spatial prediction techniques based on data from previously encoded neighboring blocks within the same image.
[0039] O codificador de vídeo pode determinar um erro de predição, isto é, a diferença entre os valores de pixel no bloco sendo codificado e no bloco predito (também referido como residual). O codificador de vídeo também pode aplicar uma transformada ao erro de predição, como uma transformada de cosseno distinta (DCT), para gerar coeficientes de transformada. Após a transformada, o codificador de vídeo pode quantizar os coeficientes de transformada. Os coeficientes de transformada quantizados e os vetores de movimento podem ser representados com o uso de elementos de sintaxe e, juntamente com informações de controle, formam uma representação codificada de uma sequência de vídeo. Em alguns casos, o codificador de vídeo pode codificar por entropia elementos de sintaxe, reduzindo, assim, adicionalmente, o número de bits necessário para sua representação.[0039] The video encoder may determine a prediction error, that is, the difference between the pixel values in the block being encoded and the predicted block (also referred to as residual). The video encoder can also apply a transform to the prediction error, such as a distinct cosine transform (DCT), to generate transform coefficients. After the transform, the video encoder can quantize the transform coefficients. Quantized transform coefficients and motion vectors can be represented using syntax elements and, together with control information, form a coded representation of a video sequence. In some cases, the video encoder may entropy encode syntax elements, thereby further reducing the number of bits required for their representation.
[0040] Um decodificador de vídeo pode, com o uso dos elementos de sintaxe e informações de controle discutidos acima, construir dados preditivos (por exemplo, um bloco preditivo) para decodificar um quadro atual. Por exemplo, o decodificador de vídeo pode adicionar o bloco predito e o erro de predição compactado. O decodificador de vídeo pode determinar o erro de predição compactado ponderando-se as funções de base de transformada com o uso dos coeficientes quantizados. A diferença entre o quadro reconstruído e o quadro original é chamado de erro de reconstrução.[0040] A video decoder can, using the syntax elements and control information discussed above, construct predictive data (e.g., a predictive block) to decode a current frame. For example, the video decoder can add the predicted block and the compressed prediction error. The video decoder can determine the compressed prediction error by weighting the transform basis functions using the quantized coefficients. The difference between the reconstructed frame and the original frame is called reconstruction error.
[0041] Em alguns casos, um decodificador de vídeo ou dispositivo de pós-processamento pode interpolar imagens com base em uma ou mais imagens de referência. Essas imagens interpoladas não estão inclusas em um fluxo de bits codificado. O decodificador de vídeo ou dispositivo de pós- processamento pode interpolar imagens para converter de modo ascendente uma taxa de quadros original de um fluxo de bits codificado. Esse processo pode ser chamado de conversão ascendente de taxa de quadros (FRUC). Alternativamente, o decodificador de vídeo ou dispositivo de pós-processamento pode interpolar imagens para inserir uma ou mais imagens que foram puladas por um codificador de vídeo para codificar uma sequência de vídeo em uma taxa de quadros reduzida. Em qualquer caso, o decodificador de vídeo ou dispositivo de pós-processamento interpola quadros que não estão inclusos em um fluxo de bits codificado que foi recebido pelo decodificador de vídeo. O decodificador de vídeo ou dispositivo de pós-processamento pode interpolar as imagens com o uso de qualquer uma dentre várias técnicas de interpolação, por exemplo, com o uso de interpolação de quadro compensada por movimento, repetição de quadro, ou cálculo de média de quadros.[0041] In some cases, a video decoder or post-processing device may interpolate images based on one or more reference images. These interpolated images are not included in an encoded bitstream. The video decoder or post-processing device may interpolate images to up-convert an original frame rate of an encoded bit stream. This process can be called frame rate upconversion (FRUC). Alternatively, the video decoder or post-processing device may interpolate images to insert one or more images that have been skipped by a video encoder to encode a video sequence at a reduced frame rate. In either case, the video decoder or post-processing device interpolates frames that are not included in an encoded bit stream that was received by the video decoder. The video decoder or post-processing device may interpolate the images using any of several interpolation techniques, for example, using motion-compensated frame interpolation, frame repetition, or frame averaging. .
[0042] Embora determinadas técnicas para interpolar imagens tenham sido usadas para propósitos de conversão ascendente, essas técnicas não foram usadas amplamente durante a codificação de vídeo, por exemplo, para codificar dados de vídeo que estão inclusos em um fluxo de bits codificado. Por exemplo, as técnicas para interpolar imagens podem ser relativamente demoradas e/ou exigir uma quantidade de potência de processamento relativamente grande. Consequentemente, essas técnicas, tipicamente, não foram realizadas em ciclo quando se decodifica dados de vídeo.[0042] Although certain techniques for interpolating images have been used for upconversion purposes, these techniques have not been used widely during video coding, for example, to encode video data that is included in an encoded bitstream. For example, techniques for interpolating images may be relatively time-consuming and/or require a relatively large amount of processing power. Consequently, these techniques have typically not been performed in a cycle when decoding video data.
[0043] De acordo com os aspectos desta revelação, um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) pode derivar informações de movimento quando se codifica um fluxo de bits. Por exemplo, o codificador de vídeo pode gerar informações de movimento que não estão inclusas no fluxo de bits para codificar dados de vídeo que estão inclusos no fluxo de bits. Derivando-se as informações de movimento no ciclo de codificação ou decodificação, uma economia de bits pode ser alcançada em relação a técnicas que incluem informações de movimento no fluxo de bits (como as técnicas de interpredição supracitadas).[0043] According to aspects of this disclosure, a video encoder (e.g., a video encoder or a video decoder) can derive motion information when encoding a bit stream. For example, the video encoder may generate motion information that is not included in the bitstream to encode video data that is included in the bitstream. By deriving motion information in the encoding or decoding cycle, bit savings can be achieved relative to techniques that include motion information in the bit stream (such as the aforementioned interprediction techniques).
[0044] De acordo com alguns aspectos desta revelação, um codificador de vídeo pode utilizar uma pluralidade de técnicas de derivação de informações de movimento durante a codificação. Nesses exemplos, o codificador de vídeo pode determinar um modo de derivação de informações de movimento para determinar quais técnicas de derivação de informações de movimento usar quando se determina informações de movimento para um bloco atual. Em geral, usar um modo de derivação de informações de movimento para derivar informações de movimento pode incluir realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual. Por exemplo, usar o modo de derivação de informações de movimento (por exemplo, uma técnica de correspondência bilateral, uma técnica de correspondência de modelo, ou outra técnica, conforme descrito em maiores detalhes abaixo), o codificador de vídeo pode selecionar um vetor de movimento candidato em uma lista de candidatos de vetor de movimento. O codificador de vídeo pode selecionar o vetor de movimento candidato com base no vetor de movimento candidato que identifica dados de referência em uma imagem de referência que corresponde de modo relativamente aproximado dados da imagem atual (que podem ser referidos como determinar uma “melhor correspondência” de dados de referência).[0044] According to some aspects of this disclosure, a video encoder may utilize a plurality of techniques for deriving motion information during encoding. In these examples, the video encoder may determine a motion information derivation mode to determine which motion information derivation techniques to use when determining motion information for a current block. In general, using a motion information deriving mode to derive motion information may include performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block. For example, using the motion information derivation mode (e.g., a bilateral matching technique, a template matching technique, or another technique as described in greater detail below), the video encoder may select a vector of candidate movement in a movement vector candidate list. The video encoder may select the candidate motion vector based on the candidate motion vector that identifies reference data in a reference image that relatively closely matches current image data (which may be referred to as determining a “best match”). reference data).
[0045] Em alguns casos, o codificador de vídeo pode usar o candidato de vetor de movimento selecionado para identificar uma janela de busca em uma imagem de referência. O codificador de vídeo pode refinar o vetor de movimento candidato com base em dados de referência na janela de busca que corresponde de modo relativamente aproximado dados correspondentes na imagem atual. Isto é, o codificador de vídeo pode derivar novas informações de movimento para o bloco atual com base no movimento entre os dados de referência na janela de busca que corresponde de modo aproximado dados na imagem atual. O codificador de vídeo pode, então, realizar a compensação de movimento para o bloco atual com o uso das informações de movimento derivadas. Desta forma, o codificador de vídeo pode derivar informações de movimento para um bloco atual sem informações de movimento sendo sinalizadas em um fluxo de bits codificado.[0045] In some cases, the video encoder may use the selected motion vector candidate to identify a search window in a reference image. The video encoder can refine the candidate motion vector based on reference data in the search window that relatively closely matches corresponding data in the current image. That is, the video encoder can derive new motion information for the current block based on motion between reference data in the search window that roughly corresponds to data in the current image. The video encoder can then perform motion compensation for the current block using the derived motion information. In this way, the video encoder can derive motion information for a current block without motion information being signaled in an encoded bitstream.
[0046] De acordo com os aspectos desta revelação, em alguns exemplos, o codificador de vídeo pode dividir um bloco de dados de vídeo em sub-blocos quando se deriva as informações de movimento. Por exemplo, o codificador de vídeo pode derivar separadamente informações de movimento para cada sub-bloco de um bloco maior. Em alguns casos, o codificador de vídeo pode, inicialmente, determinar informações de movimento para o bloco e usar as informações de movimento derivadas como informações de movimento de candidato para cada um dos sub-blocos. O codificador de vídeo pode, então, refinar adicionalmente as informações de movimento derivadas para cada um dos sub-blocos, por exemplo, com o uso de um modo de derivação de informações de movimento (por exemplo, uma técnica de correspondência bilateral, uma técnica de correspondência de modelo, ou outra técnica, conforme descrito em maiores detalhes abaixo).[0046] In accordance with aspects of this disclosure, in some examples, the video encoder may divide a block of video data into sub-blocks when deriving motion information. For example, the video encoder may separately derive motion information for each sub-block of a larger block. In some cases, the video encoder may initially determine motion information for the block and use the derived motion information as candidate motion information for each of the sub-blocks. The video encoder can then further refine the derived motion information for each of the sub-blocks, for example, using a motion information derivation mode (e.g., a bilateral matching technique, a template matching, or other technique, as described in more detail below).
[0047] As técnicas desta revelação também podem incluir técnicas para interpolar imagens. Em alguns casos, qualquer combinação das técnicas acima pode ser usada para interpolar uma imagem que não está inclusa no fluxo de bits, por exemplo, semelhante à conversão ascendente de taxa de quadros. Entretanto, ao invés de simplesmente adicionar a imagem interpolada à sequência de vídeo, um decodificador de vídeo pode usar o quadro interpolado durante a codificação. Por exemplo, o decodificador de vídeo pode decodificar dados de uma imagem atual com base em pelo menos uma porção da imagem interpolada. Em alguns casos, o decodificador de vídeo pode estabelecer a imagem interpolada igual à imagem atual. Por exemplo, o decodificador de vídeo pode decodificar dados de sintaxe para a imagem atual que está inclusa no fluxo de bits (por exemplo, dados de cabeçalho de fatia e similares), interpolar a imagem, e estabelecer a imagem interpolada como a imagem atual. Em outros casos, o decodificador de vídeo pode interpolar a imagem e decodificar dados para a imagem atual em relação à imagem interpolada. Neste caso, o decodificador de vídeo pode adicionar a imagem interpolada a uma memória de imagem de referência para fins de predição.[0047] Techniques of this disclosure may also include techniques for interpolating images. In some cases, any combination of the above techniques can be used to interpolate an image that is not included in the bitstream, for example, similar to frame rate upconversion. However, rather than simply adding the interpolated image to the video sequence, a video decoder can use the interpolated frame during encoding. For example, the video decoder may decode data from a current image based on at least a portion of the interpolated image. In some cases, the video decoder may make the interpolated image the same as the current image. For example, the video decoder may decode syntax data for the current image that is included in the bitstream (e.g., slice header data and the like), interpolate the image, and establish the interpolated image as the current image. In other cases, the video decoder may interpolate the image and decode data for the current image relative to the interpolated image. In this case, the video decoder may add the interpolated image to a reference image memory for prediction purposes.
[0048] Por conseguinte, determinadas técnicas descritas no presente documento se referindo a FRUC podem, em alguns exemplos, ser usadas para determinar informações de movimento (por exemplo, em um processo de derivação de informações de movimento de lado de decodificador). Em outros exemplos, as técnicas descritas no presente documento se referindo a FRUC podem ser usadas para interpolar dados de vídeo, por exemplo, para referência para codificar dados de vídeo, ou para emitir.[0048] Therefore, certain techniques described herein referring to FRUC may, in some examples, be used to determine motion information (e.g., in a process of deriving decoder-side motion information). In other examples, the techniques described herein referring to FRUC can be used to interpolate video data, for example, for reference to encode video data, or to output.
[0049] A Figura 1 é um diagrama de blocos que ilustra um sistema de decodificação e codificação de vídeo exemplificativo 10 que pode utilizar técnicas para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar dados de vídeo. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo para o dispositivo de destino 14 por meio de uma mídia legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (isto é, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, tais como, os então chamados telefones "inteligentes", os então chamados dispositivos do tipo pad "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo, ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem estar equipados para comunicação sem fio.[0049] Figure 1 is a block diagram illustrating an exemplary video decoding and encoding system 10 that may utilize techniques to derive motion information, perform block partitioning, and/or interpolate video data. As shown in Figure 1, system 10 includes a source device 12 that provides encoded video data to be decoded at a later time by a destination device 14. In particular, the source device 12 provides the video data to the destination device 14 via a computer-readable medium 16. The source device 12 and the destination device 14 may comprise any of a wide range of devices, including desktop-type computers, notebook-type computers (i.e., laptop-type computers), tablet-type computers, set-top boxes, telephone devices such as so-called "smart" phones, so-called "smart" pad-type devices, televisions, cameras, display devices, players digital media, video game consoles, video streaming device, or the like. In some cases, the source device 12 and the destination device 14 may be equipped for wireless communication.
[0050] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio da mídia legível por computador 16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo com capacidade para mover os dados de vídeo codificados a partir do dispositivo de origem 12 ao dispositivo de destino 14. Em um exemplo, a mídia legível por computador 16 pode compreender uma mídia de comunicação para possibilitar que um dispositivo de origem transmita os dados de vídeo codificados diretamente a um dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. A mídia de comunicação pode compreender qualquer mídia de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. A mídia de comunicação pode fazer parte de uma rede com base em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. A mídia de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino 14.[0050] The destination device 14 may receive the encoded video data to be decoded via the computer-readable media 16. The computer-readable media 16 may comprise any type of media or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the computer-readable medium 16 may comprise a communication medium to enable a source device to transmit encoded video data directly to a destination device 14 in real time. The encoded video data may be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the destination device 14. The communication media may comprise any wireless or wired communication media, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication media can be part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication media may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from the source device 12 to the destination device 14.
[0051] Em alguns exemplos, os dados codificados podem ser emitidos a partir da interface de saída 22 para um dispositivo de armazenamento. De modo semelhante, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um dentre uma variedade de mídias de armazenamento de dados acessados localmente ou distribuídos como um disco rígido, discos Blu-ray, DVDs, CD- ROMs, memória flash, memória volátil ou não volátil ou quaisquer outras mídias de armazenamento digital adequadas para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12 O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento por meio de transmissão contínua ou transferência por download. O servidor de arquivos pode ser qualquer tipo de servidor com capacidade para armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivo exemplificativos incluem um servidor da web (por exemplo, para um site da web), um servidor FTP, dispositivos de armazenamento anexado à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem de cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de transferência contínua, uma transmissão de transferência por download ou uma combinação das mesmas.[0051] In some examples, the encoded data may be output from the output interface 22 to a storage device. Similarly, the encoded data can be accessed from the storage device via the input interface. The storage device may include any of a variety of locally accessed or distributed data storage media such as a hard drive, Blu-ray Discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other storage media. digital storage suitable for storing encoded video data. In a further example, the storage device may correspond to a file server or other intermediate storage device that may store encoded video generated by the source device 12. The destination device 14 may access video data stored from the source device. storage via streaming or download transfer. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the destination device 14. Exemplary file servers include a web server (e.g., for a website). web), an FTP server, network attached storage (NAS) devices, or a local disk drive. The target device 14 can access the encoded video data over any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., DSL, cable modem, etc.), or a combination of both that is suitable for accessing stored encoded video data on a file server. The transmission of encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.
[0052] As técnicas desta revelação não estão necessariamente limitadas a aplicativos ou definições sem fio. As técnicas podem ser aplicadas à codificação de vídeo visando o suporte a qualquer uma dentre uma variedade de aplicativos de multimídia, tais como difusões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões contínuas de vídeo pela Internet, tais como transmissão contínua adaptativa dinâmica através de HTTP (DASH), vídeo digital que é codificado em uma mídia de armazenamento de dados, decodificação de vídeo digital armazenado em uma mídia de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.[0052] The techniques of this disclosure are not necessarily limited to wireless applications or definitions. The techniques can be applied to video coding to support any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television broadcasts, satellite television broadcasts, Internet video streaming, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded on a data storage medium, decoding of digital video stored on a data storage medium, or other applications. In some examples, system 10 may be configured to support unidirectional or bidirectional video transmission to support applications such as video streaming, video playback, video broadcasting, and/or video telephony.
[0053] No exemplo da Figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de saída 22. O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. De acordo com esta revelação, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar dados de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa 18, como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.[0053] In the example of Figure 1, the source device 12 includes a video source 18, a video encoder 20, and an output interface 22. The destination device 14 includes an input interface 28, a video decoder 30 and a display device 32. In accordance with this disclosure, the video encoder 20 of the source device 12 may be configured to apply techniques for deriving motion information, performing block partitioning, and/or interpolating video data. In other examples, a source device and a destination device may include other components or arrangements. For example, source device 12 may receive video data from an external video source 18, such as an external camera. Likewise, the target device 14 may interface with an external display device, rather than including an integrated display device.
[0054] O sistema ilustrado 10 da Figura 1 é meramente um exemplo. As técnicas para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar dados de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora, de modo geral, as técnicas desta revelação sejam realizadas por dispositivo codificador de vídeo de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo denominado tipicamente como "CODEC". Além disso, as técnicas desta revelação também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação em que o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de modo substancialmente simétrico de modo que cada um dos dispositivos 12, 14 incluem componentes de codificação e decodificação de vídeo. Por conseguinte, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre os dispositivos de vídeo 12, 14, por exemplo, para a transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia por vídeo.[0054] The illustrated system 10 of Figure 1 is merely an example. Techniques for deriving motion information, performing block partitioning, and/or interpolating video data can be performed by any digital video encoding and/or decoding device. Although generally the techniques of this disclosure are performed by a video encoder device, the techniques may also be performed by a video encoder/decoder typically referred to as a "CODEC". Furthermore, the techniques of this revelation can also be performed by a video preprocessor. The source device 12 and the destination device 14 are merely examples of such encoding devices where the source device 12 generates encoded video data for transmission to the destination device 14. In some examples, the devices 12, 14 may operate substantially symmetrically such that each of the devices 12, 14 includes video encoding and decoding components. Therefore, system 10 may support unidirectional or bidirectional video transmission between video devices 12, 14, for example, for video streaming, video playback, video broadcasting or video telephony.
[0055] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo que contém um vídeo anteriormente capturado e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados com base em gráficos de computador como o vídeo de fonte ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados telefones de câmera ou videofones. Entretanto, conforme mencionado acima, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações com fio e/ou sem fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificado podem, então, ser emitidas pela interface de saída 22 na mídia legível por computador 16.[0055] The video source 18 of the source device 12 may include a video capture device such as a video camera, a video file containing previously captured video, and/or a video feed interface for receiving video from a video content provider. As a further alternative, the video source 18 may generate computer graphics-based data as the source video or a combination of live video, archived video, and computer-generated video. In some cases, if the video source 18 is a video camera, the source device 12 and the destination device 14 may form so-called camera phones or videophones. However, as mentioned above, the techniques described in this disclosure may be applicable to video coding in general and may be applied to wired and/or wireless applications. In each case, the captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video information may then be output by output interface 22 onto computer-readable media 16.
[0056] A mídia legível por computador pode incluir mídias transientes, como uma transmissão de rede com fio ou difusão sem fio ou mídias de armazenamento (isto é, mídias de armazenamento não transitórias), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outras mídias legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, por meio da transmissão de rede. De modo semelhante, um dispositivo de computação de uma instalação de produção de mídia, como uma instalação de rotulação de disco, pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e produzir um disco que contém os dados de vídeo codificados. Portanto, a mídia legível por computador pode ser compreendida de modo a incluir uma ou mais mídias legíveis por computador de várias formas, em vários exemplos.[0056] Computer-readable media may include transient media, such as a wired network transmission or wireless broadcast, or storage media (i.e., non-transient storage media), such as a hard disk, flash drive, compact disk, digital video disc, Blu-ray disc, or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from the source device 12 and provide the encoded video data to the destination device 14, for example, via network transmission. Similarly, a computing device of a media production facility, such as a disk labeling facility, may receive encoded video data from the source device 12 and produce a disk containing the encoded video data. Therefore, computer-readable media may be understood to include one or more computer-readable media of various forms, in various examples.
[0057] A interface de rede 28 do dispositivo de destino 14 recebe informações a partir da mídia legível por computador 16. As informações de mídia legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, que também é usado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de exibição como um tubo de raio de cátodo (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.[0057] The network interface 28 of the target device 14 receives information from the computer-readable media 16. The computer-readable media information 16 may include syntax information defined by the video encoder 20, which is also used by the decoder video 30, which includes syntax elements that describe characteristics and/or processing of blocks and other coded units, e.g., GOPs. The display device 32 displays the decoded video data to a user and may comprise any of a variety of display devices such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display , an organic light-emitting diode (OLED) display, or other type of display device.
[0058] Embora não seja mostrado na Figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para manipular a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou fluxos de dados separados. Caso aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo multiplexador ITU H.223, ou outros protocolos como protocolo de datagrama de usuário (UDP).[0058] Although not shown in Figure 1, in some aspects, the video encoder 20 and the video decoder 30 may each be integrated with an audio encoder and decoder and may include appropriate MUX-DEMUX units, or other hardware and software, to handle the encoding of both audio and video into a common data stream or separate data streams. If applicable, MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols such as User Datagram Protocol (UDP).
[0059] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implantados como qualquer um dentre uma variedade de conjuntos de circuitos de codificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos para aplicação (ASICs), matrizes de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas foram implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível por computador não transitória adequada e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode estar incluído em um ou mais codificadores ou decodificadores, um dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo.[0059] Video encoder 20 and video decoder 30 may be implemented as any of a variety of suitable encoder circuit sets, such as one or more microprocessors, digital signal processors (DSPs), specific integrated circuits for applications (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combinations thereof. When the techniques have been partially implemented in software, a device can store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to carry out the techniques of this disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, one of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.
[0060] Esta revelação pode, de modo geral, se referir ao codificador de vídeo 20 "que sinaliza" determinadas informações para outro dispositivo, como decodificador de vídeo 30. O termo “que sinaliza” pode se referir, de modo geral, à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo compactados. Tal comunicação pode ocorrer em tempo real ou quase real. Alternativamente, essa comunicação pode ocorrer por um lapso de tempo, como pode ocorrer quando se armazena elementos de sintaxe em uma mídia de armazenamento legível por computador em um fluxo de bits codificado no momento de codificação, que pode, então, ser recuperado por um dispositivo de decodificação em qualquer momento após ser armazenado nessa mídia.[0060] This disclosure may generally refer to video encoder 20 "signaling" certain information to another device, such as video decoder 30. The term "signaling" may generally refer to communication of syntax elements and/or other data used to decode the compressed video data. Such communication can occur in real or near real time. Alternatively, this communication may occur over a period of time, as may occur when storing syntax elements on a computer-readable storage medium in a stream of bits encoded at the time of encoding, which can then be retrieved by a device. of decoding at any time after being stored on that media.
[0061] O codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo. Os padrões de codificação de vídeo exemplificativos desenvolvidos pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) bem como Equipe de Colaboração Conjunta em Desenvolvimento de Extensão de Vídeo 3D (JCT-3V) do Grupo de Especialistas de Codificação de Vídeo de ITU-T (VCEG) e Grupo de Especialistas de Imagem em Movimento de ISO/IEC (MPEG) incluem Codificação de Vídeo de Alta Eficiência (HEVC) ou ITU-T H.265, incluindo sua extensão de faixa, extensão de multivista (MV-HEVC) e extensão escalonável (SHVC). O documento de padrão de HEVC finalizados é publicado como “ITU-T H.265, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video - High efficiency video coding”, Telecommunication Standardization Sector of International Telecommunication Union (ITU), abril de 2013. Alternativamente, o codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com outros padrões de indústria ou proprietários, como ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo sua extensão de Codificação de Vídeo Escalonável (SVC) e extensão de Codificação de Vídeo de Multivista (MVC). Entretanto, as técnicas desta revelação não são limitadas a qualquer padrão de codificação particular. Por exemplo, as técnicas desta revelação podem ser usadas com uma variedade de outras técnicas de codificação de vídeo não proprietárias e proprietárias ou padrões subsequentes, como ITU-T H.266.[0061] The video encoder 20 and video decoder 30 may operate in accordance with a video coding standard. Exemplary video coding standards developed by the Joint Video Coding Collaboration Team (JCT-VC) as well as the Joint 3D Video Extension Development Collaboration Team (JCT-3V) of the ITU Video Coding Expert Group -T (VCEG) and ISO/IEC Moving Image Specialist Group (MPEG) include High Efficiency Video Coding (HEVC) or ITU-T H.265, including its range extension, multiview extension (MV- HEVC) and scalable extension (SHVC). The finalized HEVC standard document is published as “ITU-T H.265, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video - High efficiency video coding”, Telecommunication Standardization Sector of International Telecommunication Union (ITU ), April 2013. Alternatively, video encoder 20 and video decoder 30 may operate in accordance with other industry or proprietary standards, such as ISO/IEC MPEG-4 Visual and ITU-T H.264 (also known as ISO /IEC MPEG-4 AVC), including its Scalable Video Coding (SVC) extension and Multiview Video Coding (MVC) extension. However, the techniques of this disclosure are not limited to any particular coding standard. For example, the techniques of this disclosure can be used with a variety of other non-proprietary and proprietary video coding techniques or subsequent standards, such as ITU-T H.266.
[0062] Conforme notado acima, para modos interpredição, o codificador de vídeo 20 pode buscar por um bloco semelhante àquele sendo codificado (um “bloco atual”) em uma imagem de outro local temporal, referida como imagem de referência. As informações usadas para identificar a imagem de referência podem ser referidas como informações de movimento. Por exemplo, para cada bloco, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento contém informações de movimento para direções de predição para frente e para trás. No presente contexto, as direções de predição para frente e para trás são duas direções de predição de um modo de predição bidirecional e os termos “para frente” e “para trás” não têm necessariamente um significado de geometria, em vez disso os mesmos correspondem à lista de imagem de referência 0 (RefPicList0) e lista de imagem de referência 1 (RefPicList1) de uma imagem atual. Quando apenas uma lista de imagem de referência está disponível para uma imagem ou fatia, apenas a RefPicList0 está disponível e as informações de movimento de cada bloco de uma fatia estão sempre para frente.[0062] As noted above, for interprediction modes, the video encoder 20 may search for a block similar to the one being encoded (a “current block”) in an image from another temporal location, referred to as a reference image. The information used to identify the reference image can be referred to as motion information. For example, for each block, a set of motion information may be available. A motion information set contains motion information for forward and backward prediction directions. In the present context, the forward and backward prediction directions are two prediction directions of a bidirectional prediction mode and the terms “forward” and “backward” do not necessarily have a geometry meaning, rather they correspond to to the reference image list 0 (RefPicList0) and reference image list 1 (RefPicList1) of a current image. When only one reference image list is available for an image or slice, only RefPicList0 is available and the motion information for each block of a slice is always forward.
[0063] Em alguns casos, um vetor de movimento juntamente com seu índice de referência é usado em processos de decodificação, esse vetor de movimento com o índice de referência associado é denotado como um conjunto uni- preditivo de informações de movimento.[0063] In some cases, a motion vector together with its reference index is used in decoding processes, this motion vector with the associated reference index is denoted as a uni-predictive set of motion information.
[0064] Para cada direção de predição, as informações de movimento devem conter um índice de referência e um vetor de movimento. Em alguns casos, para simplicidade, um próprio vetor de movimento pode ser referido de uma forma que se supõe que tem um índice de referência associado. Um índice de referência é usado para identificar uma imagem de referência na lista de imagem de referência atual (RefPicList0 ou RefPicList1). Um vetor de movimento tem um componente horizontal e um vertical.[0064] For each prediction direction, the motion information must contain a reference index and a motion vector. In some cases, for simplicity, a motion vector itself may be referred to in a way that is assumed to have an associated reference index. A reference index is used to identify a reference image in the current reference image list (RefPicList0 or RefPicList1). A motion vector has a horizontal and a vertical component.
[0065] A contagem de ordem de imagem (POC) é amplamente usada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora existam casos em que duas imagens dentro de uma sequência de vídeo codificada podem ter o mesmo valor de POC, o mesmo, tipicamente, não ocorrer dentro de uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, as imagens com um mesmo valor de POC podem estar próximas entre si no que diz respeito à ordem de decodificação. Os valores de POC das imagens são tipicamente usados para construção de lista de imagem de referência, derivação do conjunto de imagem de referência como em HEVC e escalonamento de vetor de movimento.[0065] Picture order counting (POC) is widely used in video coding standards to identify a display order of an image. Although there are cases where two images within an encoded video sequence may have the same POC value, the same typically does not occur within an encoded video sequence. When multiple encoded video sequences are present in a bitstream, images with the same POC value may be close to each other in terms of decoding order. The POC values of images are typically used for reference image list construction, reference image set derivation as in HEVC, and motion vector scaling.
[0066] Em H.264/AVC, cada inter macrobloco (MB) pode ser particionado em quatro formas diferentes que incluem: uma partição de 16 x 16 MB; duas partições de 16 x 8 MB; duas partições de 8 x 16 MB; e quatro partições de 8 x 8 MB. As partições de diferentes em um MB podem ter diferentes valores de índice de referência para cada direção (RefPicList0 ou RefPicList1). Quando um MB não for particionado em quatro partições de 8 x 8 MB, o tem apenas um vetor de movimento para cada partição de MB em cada direção.[0066] In H.264/AVC, each intermacroblock (MB) can be partitioned into four different ways that include: a 16 x 16 MB partition; two 16 x 8 MB partitions; two 8 x 16 MB partitions; and four 8 x 8 MB partitions. Different partitions in a MB can have different reference index values for each direction (RefPicList0 or RefPicList1). When a MB is not partitioned into four 8 x 8 MB partitions, the has only one motion vector for each MB partition in each direction.
[0067] Quando um MB for particionado em quatro partições de 8 x 8 MB, cada partição de 8 x 8 MB pode ser particionada adicionalmente em sub-blocos, cada um dos quais pode ter um vetor de movimento diferente em cada direção. Existem quatro formas diferentes de obter sub-blocos a partir de uma partição de 8 x 8 MB que incluem: um sub-bloco 8 x 8; dois sub-blocos 8 x 4; dois sub-blocos 4 x 8; e quatro sub- blocos 4 x 4. Cada sub-bloco pode ter um vetor de movimento diferente em cada direção. Portanto, o vetor de movimento está presente em um nível igual a maior do que sub-bloco.[0067] When a MB is partitioned into four 8 x 8 MB partitions, each 8 x 8 MB partition may be further partitioned into sub-blocks, each of which may have a different motion vector in each direction. There are four different ways to obtain subblocks from an 8 x 8 MB partition which include: an 8 x 8 subblock; two 8 x 4 sub-blocks; two 4 x 8 sub-blocks; and four 4 x 4 sub-blocks. Each sub-block can have a different motion vector in each direction. Therefore, the motion vector is present at a level equal to greater than sub-block.
[0068] Em AVC, o modo direto temporal poderia estar habilitado em MB ou nível de partição de MB para modo de salto ou direto em fatias de B. Para cada partição de MB, os vetores de movimento do bloco colocalizado com a partição de MB atual na RefPicList1 [0] do bloco atual são usados para derivar os vetores de movimento. Cada vetor de movimento no bloco colocalizado é escalonado com base em distâncias de POC. Em AVC, um modo direto também pode prever as informações de movimento a partir dos vizinhos espaciais, que podem ser referidos como modo direto espacial.[0068] In AVC, temporal direct mode could be enabled at MB or MB partition level for skip or direct mode at B slices. For each MB partition, the motion vectors of the block co-located with the MB partition current block in RefPicList1 [0] are used to derive the motion vectors. Each motion vector in the co-located block is scaled based on POC distances. In AVC, a direct mode can also predict motion information from spatial neighbors, which can be referred to as spatial direct mode.
[0069] Em HEVC, para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTUs). Cada uma das CTUs pode compreender um bloco de árvore de codificação (CTB) de amostras de luma, dois CTBs correspondentes de amostras de croma, e estruturas de sintaxe usadas para codificar as amostras dos CTBs. Em imagens de monocroma ou imagens que têm três planos de cor separados, uma CTU pode compreender um único bloco CTB e estruturas de sintaxe usadas para codificar as amostras do bloco de árvore de codificação.[0069] In HEVC, to generate a coded representation of an image, the video encoder 20 may generate a set of coding tree units (CTUs). Each of the CTUs may comprise a coding tree block (CTB) of luma samples, two corresponding CTBs of chroma samples, and syntax structures used to encode the samples of the CTBs. In monochrome images or images that have three separate color planes, a CTU may comprise a single CTB block and syntax structures used to encode the coding tree block samples.
[0070] Um bloco de árvore de codificação pode ser um bloco NxN de amostras. O tamanho de um CTB pode estar nas faixas de 16 x 16 a 64 x 64 no perfil principal de HEVC (embora, tecnicamente, os tamanhos de CBT de 8 x 8 possam ser suportados). Uma unidade de codificação (CU) poderia ser do mesmo tamanho de um CTB e tão pequeno quanto 8 x 8. Cada unidade de codificação é codificada com um modo. Uma CTU também pode ser denominada como "bloco de árvore" ou uma "maior unidade de codificação" (LCU). As CTUs de HEVC podem ser amplamente análogas aos macroblocos de outros padrões, como H.264/AVC. No entanto, a CTU não se limita necessariamente a um tamanho particular e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs ordenadas consecutivamente em uma ordem de varredura raster.[0070] A coding tree block can be an NxN block of samples. The size of a CTB can be in the ranges of 16x16 to 64x64 in the HEVC main profile (although technically 8x8 CBT sizes can be supported). A coding unit (CU) could be the same size as a CTB and as small as 8 x 8. Each coding unit is coded with a mode. A CTU may also be referred to as a "tree block" or a "largest coding unit" (LCU). HEVC CTUs can be broadly analogous to the macroblocks of other standards, such as H.264/AVC. However, the CTU is not necessarily limited to a particular size and may include one or more coding units (CUs). A slice can include an integer number of CTUs ordered consecutively in a raster scan order.
[0071] A fim de gerar uma CTU codificada, o codificador de vídeo 20 pode realizar, recursivamente, o particionamento de árvore quadrática nos blocos de árvore de codificação de uma CTU para dividir os blocos de árvore de codificação em blocos de codificação, por conseguinte, o nome "unidades de árvore de codificação". Um bloco de árvore de codificação pode ser um bloco NxN de amostras. Uma CU pode compreender um bloco de codificação de amostras de luma e dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem uma matriz de amostra de luma, uma matriz de amostra de Cb e uma matriz de amostra de Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em imagens de monocroma ou imagens que têm três planos de cor separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação.[0071] In order to generate an encoded CTU, the video encoder 20 may recursively perform quadratic tree partitioning on the encoding tree blocks of a CTU to divide the encoding tree blocks into encoding blocks, thereby , the name "coding tree units". A coding tree block can be an NxN block of samples. A CU may comprise a luma sample coding block and two corresponding chroma sample coding blocks of an image having a luma sample matrix, a Cb sample matrix and a Cr sample matrix and syntax used to encode the coding block samples. In monochrome images or images that have three separate color planes, a CU may comprise a single coding block and syntax structures used to encode the samples of the coding block.
[0072] O codificador de vídeo 20 pode particionar um bloco de codificação de uma CU em um ou mais blocos preditivos. Um bloco preditivo é um bloco (isto é, quadrado ou não quadrado) retangular de amostras no qual a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode compreender um bloco preditivo de amostras de luma, dois blocos preditivos correspondentes de amostras de croma e estruturas de sintaxe usadas para prever os blocos preditivos. Nas imagens de monocroma ou em imagens que têm três planos de cor separados, uma PU pode compreender um único bloco preditivo e estruturas de sintaxe usadas para prever o bloco preditivo. O codificador de vídeo 20 pode gerar blocos preditivos de luma, de Cb e de Cr para blocos preditivos de luma, de Cb e de Cr de cada PU da CU.[0072] Video encoder 20 may partition a coding block of a CU into one or more predictive blocks. A prediction block is a rectangular (i.e., square or non-square) block of samples to which the same prediction is applied. A prediction unit (PU) of a CU may comprise a luma sample prediction block, two corresponding chroma sample prediction blocks, and syntax structures used to predict the prediction blocks. In monochrome images or in images that have three separate color planes, a PU may comprise a single predictive block and syntax structures used to predict the predictive block. Video encoder 20 may generate luma, Cb, and Cr predictive blocks for luma, Cb, and Cr predictive blocks of each PU of the CU.
[0073] O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar os blocos preditivos para uma PU. Se o codificador de vídeo 20 usar intrapredição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar blocos preditivos da PU com base nas amostras decodificadas da imagem associada à PU. Se o codificador de vídeo 20 usar interpredição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas de uma ou mais imagens diferentes da imagem associada à PU. Quando uma CU for intercodificada, a CU pode ser particionada adicionalmente em duas ou quatro PUs. Quando duas PUs estão presentes em uma CU, as PUs podem, em alguns casos, ter o tamanho de meio retângulo ou tamanho de dois retângulos com um tamanho de um-quarto ou três-quartos da CU.[0073] Video encoder 20 may use intraprediction or interprediction to generate the predictive blocks for a PU. If the video encoder 20 uses intraprediction to generate the predictive blocks of a PU, the video encoder 20 may generate predictive blocks of the PU based on the decoded samples of the image associated with the PU. If the video encoder 20 uses interprediction to generate the predictive blocks of a PU, the video encoder 20 may generate the predictive blocks of the PU based on decoded samples of one or more images other than the image associated with the PU. When a CU is intercoded, the CU can be further partitioned into two or four PUs. When two PUs are present in a CU, the PUs can, in some cases, be the size of half a rectangle or the size of two rectangles with a size of one-quarter or three-quarters of the CU.
[0074] Após o codificador de vídeo 20 gerar blocos de luma, de Cb e de Cr preditivos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um bloco residual de luma para a CU. Cada amostra no bloco residual de luma da CU indica uma diferença entre uma amostra de luma em um dos blocos preditivos de luma da CU e uma amostra correspondente no bloco de codificação de luma original da CU. Além disso, o codificador de vídeo 20 pode gerar um bloco residual de Cb para a CU. Cada amostra no bloco residual de Cb da CU pode indicar uma diferença entre uma amostra de Cb em um dentre os blocos preditivos de Cb da CU e uma amostra correspondente no bloco de codificação de Cb original da CU. O codificador de vídeo 20 também pode gerar um bloco residual de Cr para a CU. Cada amostra no bloco residual de Cr da CU pode indicar uma diferença entre uma amostra de Cr em um dos blocos de Cr preditivos da CU e uma amostra correspondente no bloco de codificação de Cr original da CU.[0074] After video encoder 20 generates predictive luma, Cb, and Cr blocks for one or more PUs of a CU, video encoder 20 may generate a residual luma block for the CU. Each sample in the CU luma residual block indicates a difference between a luma sample in one of the CU's luma predictive blocks and a corresponding sample in the CU's original luma encoding block. Additionally, video encoder 20 may generate a residual block of Cb for the CU. Each sample in the CU Cb residual block may indicate a difference between a Cb sample in one of the CU's Cb predictive blocks and a corresponding sample in the CU's original Cb coding block. The video encoder 20 may also generate a residual block of Cr for the CU. Each sample in the CU residual Cr block may indicate a difference between a Cr sample in one of the CU's predictive Cr blocks and a corresponding sample in the CU's original Cr coding block.
[0075] Além disso, o codificador de vídeo 20 pode usar o particionamento de árvore quadrática para decompor os blocos residuais de luma, de Cb e de Cr de uma CU em um ou mais blocos de transformada de luma, de Cb e de Cr. Um bloco de transformada é um bloco (por exemplo, quadrado ou não quadrado) retangular de amostras no qual a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode compreender um bloco de transformada de amostras de luma, dois blocos de transformada correspondentes de amostras de croma e estruturas de sintaxe usadas para transformar as amostras de bloco de transformada. Assim, cada TU de uma CU pode ser associada a um bloco de transformada de luma, um bloco de transformada de Cb e um bloco de transformada de Cr. O bloco de transformada de luma associado à TU pode ser um sub-bloco do bloco residual de luma da CU. O bloco de transformada de Cb pode ser um sub- bloco do bloco residual de Cb da CU. O bloco de transformada de Cr pode ser um sub-bloco do bloco residual de Cr da CU. Nas imagens de monocroma ou nas imagens que têm três planos de cor separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe usadas para transformar as amostras do bloco de transformada.[0075] Additionally, video encoder 20 may use quadratic tree partitioning to decompose the luma, Cb, and Cr residual blocks of a CU into one or more luma, Cb, and Cr transform blocks. A transform block is a rectangular (e.g., square or non-square) block of samples to which the same transform is applied. A transform unit (TU) of a CU may comprise a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax structures used to transform the transform block samples. Thus, each TU of a CU can be associated with a luma transform block, a Cb transform block and a Cr transform block. The luma transform block associated with the TU may be a sub-block of the luma residual block of the CU. The Cb transform block may be a subblock of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU. In monochrome images or images that have three separate color planes, a TU may comprise a single transform block and syntax structures used to transform samples from the transform block.
[0076] O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de luma de uma TU para gerar um bloco de coeficiente de luma para a TU. Um bloco de coeficiente pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cb de uma TU para gerar um bloco de coeficiente de Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cr de uma TU para gerar um bloco de coeficiente de Cr para a TU.[0076] Video encoder 20 may apply one or more transforms to a luma transform block of a TU to generate a luma coefficient block for the TU. A coefficient block can be a two-dimensional array of transform coefficients. A transform coefficient can be a scalar quantity. Video encoder 20 may apply one or more transforms to a Cb transform block of a TU to generate a Cb coefficient block for the TU. Video encoder 20 may apply one or more transforms to a Cr transform block of a TU to generate a Cr coefficient block for the TU.
[0077] Após gerar um bloco de coeficiente (por exemplo, um bloco de coeficiente de luma, um bloco de coeficiente de Cb ou um bloco de coeficiente de Cr), o codificador de vídeo 20 pode quantizar o bloco de coeficiente. Em geral, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, o que fornece uma compactação adicional. Após o codificador de vídeo 20 quantizar um bloco de coeficiente, o codificador de vídeo 20 pode codificar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, o codificador de vídeo 20 pode realizar Codificação Aritmética Binária Adaptativa Ao Contexto (CABAC) nos elementos de sintaxe que indicam os coeficientes de transformada quantizados.[0077] After generating a coefficient block (e.g., a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), the video encoder 20 may quantize the coefficient block. In general, quantization refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, which provides additional compression. After video encoder 20 quantizes a coefficient block, video encoder 20 may entropy encode syntax elements indicating the quantized transform coefficients. For example, the video encoder 20 may perform Context Adaptive Binary Arithmetic Coding (CABAC) on the syntax elements indicating the quantized transform coefficients.
[0078] O codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de imagens codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Uma unidade de NAL é uma estrutura de sintaxe que contém uma indicação do tipo de dados na unidade de NAL e bytes e que contêm esses dados na forma de uma carga de sequência de bytes brutos (RBSP) intercalados conforme necessário com bits de prevenção de emulação. Cada uma das unidades de NAL inclui um cabeçalho de unidade NAL e encapsula uma RBSP.[0078] Video encoder 20 may output a bit stream that includes a sequence of bits that forms a representation of encoded images and associated data. The bit stream may comprise a sequence of network abstraction layer (NAL) units. An NAL unit is a syntax structure that contains an indication of the type of data in the NAL unit and bytes and that contains this data in the form of a raw byte sequence payload (RBSP) interleaved as necessary with emulation prevention bits . Each of the NAL units includes a NAL unit header and encapsulates an RBSP.
[0079] Tipos diferentes de unidades de NAL podem encapsular tipos diferentes de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular uma RBSP para um ajuste de parâmetro de imagem (PPS), um segundo tipo de unidade de NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade de NAL pode encapsular uma RBSP para as SEI e assim por diante. As unidades de NAL que encapsulam as RBSPs para dados de codificação de vídeo (em oposição às RBSPs para os conjuntos de parâmetros e mensagens de SEI) podem ser denominadas como unidades de NAL de camada de codificação de vídeo (VCL).[0079] Different types of NAL units can encapsulate different types of RBSPs. For example, a first type of NAL unit may encapsulate an RBSP for a picture parameter setting (PPS), a second type of NAL unit may encapsulate an RBSP for a coded slice, a third type of NAL unit may encapsulate an RBSP for the SEI and so on. The NAL units that encapsulate the RBSPs for video coding data (as opposed to the RBSPs for SEI message and parameter sets) can be referred to as video coding layer (VCL) NAL units.
[0080] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode realizar análise sintática do fluxo de bits para obter elementos de sintaxe provenientes do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe obtidos a partir do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser, em geral, recíproco ao processo realizado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode quantizar, inversamente, os coeficientes de blocos associados às TUs de uma CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficientes para reconstruir blocos de transformada associados às TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual adicionando-se as amostras dos blocos preditivos para as PUs da CU atual às amostras correspondentes dos blocos de transformada das TUs da CU atual. Reconstruindo-se os blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.[0080] The video decoder 30 may receive a bitstream generated by the video encoder 20. Additionally, the video decoder 30 may perform parsing of the bitstream to obtain syntax elements from the bitstream. Video decoder 30 may reconstruct images of the video data based, at least in part, on syntax elements obtained from the bit stream. The process for reconstructing the video data may be generally reciprocal to the process performed by the video encoder 20. Additionally, the video decoder 30 may inversely quantize the block coefficients associated with the TUs of a current CU. The video decoder 30 may perform inverse transforms on the coefficient blocks to reconstruct transform blocks associated with the TUs of the current CU. The video decoder 30 may reconstruct the coding blocks of the current CU by adding samples from the predictive blocks for the PUs of the current CU to the corresponding samples from the transform blocks of the TUs of the current CU. By rebuilding the coding blocks for each CU of an image, the video decoder 30 can reconstruct the image.
[0081] Quando uma CU for intercodificada, um conjunto de informações de movimento está presente para cada PU. Além disso, cada PU é codificada com um modo de interpredição exclusivo para derivar um conjunto de informações de movimento. No padrão de HEVC, existem dois modos de interpredição, denominados mescla (pular é considerado um caso especial de mescla) e modos de predição de vetor de movimento predição avançado (AMVP) respectivamente para uma unidade de predição (PU).[0081] When a CU is intercoded, a set of motion information is present for each PU. Furthermore, each PU is encoded with a unique interprediction mode to derive a set of motion information. In the HEVC standard, there are two interprediction modes, called blend (skip is considered a special case of blend) and advanced motion vector prediction (AMVP) prediction modes respectively for one prediction unit (PU).
[0082] Em AMVP ou modo de mescla, uma lista de candidatos de vetor de movimento (MV) é mantida para múltiplos preditores de vetor de movimento. O vetor (ou vetores) de movimento, bem como índices de referência no modo de mescla, da PU atual é gerado tirando-se um candidato da lista de candidatos de MV.[0082] In AMVP or blend mode, a list of motion vector (MV) candidates is maintained for multiple motion vector predictors. The motion vector (or vectors), as well as reference indices in blend mode, of the current PU are generated by taking a candidate from the MV candidate list.
[0083] A lista de candidatos de MV contém até cinco candidatos para o modo de mescla e dois candidatos para o modo de AMVP. Um candidato de mescla pode ter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes a ambas as listas de imagem de referência (lista 0 e lista 1) e os índices de referência. Se um candidato de mescla for identificado por um índice de mescla, as imagens de referência são usadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. Entretanto, sob o modo de AMVP para cada direção de predição potencial a partir da lista 0 ou lista 1, um índice de referência precisa ser explicitamente sinalizado, juntamente com um índice de MVP para a lista de candidatos de MV visto que o candidato de AMVP contém apenas um vetor de movimento. No modo de AMVP, os vetores de movimento preditos podem ser adicionalmente refinados.[0083] The MV candidate list contains up to five candidates for blend mode and two candidates for AMVP mode. A merge candidate can have a set of motion information, for example, motion vectors corresponding to both the reference image lists (list 0 and list 1) and the reference indices. If a merge candidate is identified by a merge index, the reference images are used for the prediction of the current blocks as well as the associated motion vectors are determined. However, under AMVP mode for each potential prediction direction from list 0 or list 1, a reference index needs to be explicitly signaled, along with an MVP index for the list of MV candidates since the AMVP candidate contains only one motion vector. In AMVP mode, the predicted motion vectors can be further refined.
[0084] Bem como ser visto acima, um candidato de mescla corresponde a um conjunto de informações de movimento completo enquanto um candidato de AMVP contém apenas um vetor de movimento para uma direção de predição e índice de referência específica. Os candidatos para ambos os modos são derivados de modo semelhante dos mesmos blocos vizinhos espacial e temporal, conforme descrito em relação às Figuras 4 e 5 abaixo.[0084] As seen above, a merge candidate corresponds to a complete set of motion information while an AMVP candidate contains only a motion vector for a specific prediction direction and reference index. Candidates for both modes are similarly derived from the same spatial and temporal neighboring blocks, as described with respect to Figures 4 and 5 below.
[0085] De acordo com os aspectos desta revelação, conforme descrito em maiores detalhes abaixo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para realizar qualquer combinação das técnicas descritas no presente documento para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar dados de vídeo. Em relação à derivação de informações de movimento, codificador de vídeo 20 e/ou decodificador de vídeo 30 pode ser configurado para derivar informações de movimento realizando-se uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual. A correspondência pode ser determinada com base em uma quantidade de semelhança entre dados de referência, e pode ser referida no presente documento como determinando uma “correspondência” ou “melhor correspondência”.[0085] In accordance with aspects of this disclosure, as described in greater detail below, the video encoder 20 and/or the video decoder 30 may be configured to perform any combination of the techniques described herein to derive motion information, perform block partitioning and/or interpolate video data. In connection with deriving motion information, video encoder 20 and/or video decoder 30 may be configured to derive motion information by performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block. Matching may be determined based on an amount of similarity between reference data, and may be referred to herein as determining a “match” or “best match”.
[0086] Em alguns exemplos, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode codificar inicialmente um ou mais elementos de sintaxe que indicam se o processo de derivação de movimento está habilitado. Em alguns casos, o um ou mais elementos de sintaxe podem ser incorporados com outro modo, como o modo de mescla descrito acima. Por exemplo, conforme descrito em maiores detalhes em relação ao exemplo da Figura 10, o codificador de vídeo 20 e/ou decodificador de vídeo 30 codificam um ou mais elementos de sintaxe quando se realiza o modo de mescla (por exemplo, um sinalizador, um índice em uma lista de candidatos de mescla, ou similares) que indica se deve realizar derivação de movimento.[0086] In some examples, the video encoder 20 and/or video decoder 30 may initially encode one or more syntax elements that indicate whether the motion derivation process is enabled. In some cases, the one or more syntax elements may be merged with another mode, such as the blend mode described above. For example, as described in greater detail with respect to the example of Figure 10, the video encoder 20 and/or video decoder 30 encode one or more syntax elements when performing blend mode (e.g., a flag, a index in a list of merge candidates, or similar) that indicates whether to perform move derivation.
[0087] Em casos em que derivação de movimento está habilitada, de acordo com aspectos desta revelação, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode realizar derivação de vetor de movimento correspondida em padrão. Por exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode codificar um ou mais elementos de sintaxe que indica qual modo de derivação de informações de movimento deve aplicar a partir de uma pluralidade de modos de derivação de informações de movimento. O codificador de vídeo 20 e/ou decodificador de vídeo 30 pode codificar um sinalizador para distinguir entre dois modos de informações de derivação de movimento ou um índice para distinguir entre mais de dois modos de derivação de informações de movimento. Conforme descrito no presente documento, modos de derivação de informações de movimento correspondidos em padrão exemplificativos incluem correspondência bilateral ou correspondência de modelo.[0087] In cases where motion derivation is enabled, in accordance with aspects of this disclosure, the video encoder 20 and/or video decoder 30 may perform pattern-matched motion vector derivation. For example, video encoder 20 and/or video decoder 30 may encode one or more syntax elements that indicate which motion information derivation mode to apply from a plurality of motion information derivation modes. The video encoder 20 and/or video decoder 30 may encode a flag for distinguishing between two modes of motion information derivation or an index for distinguishing between more than two modes of motion information derivation. As described herein, exemplary modes of deriving pattern-matched motion information include bilateral matching or template matching.
[0088] Durante o processo de derivação de movimento, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode derivar um vetor de movimento inicial para um bloco inteiro (por exemplo, uma PU inteira) com base no processo de derivação de movimento selecionado. Por exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode usar vetores de movimento a partir de uma lista de candidatos associado ao modo de mescla e determinar qual vetor de movimento a partir da lista de candidatos resulta em uma melhor correspondência. Isto é, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode determinar qual vetor de movimento a partir da lista de candidato, quando usado no processo de derivação de movimento selecionado, resulta em um primeiro conjunto de dados de referência que correspondem a u segundo conjunto de dados de referência fora do bloco atual, por exemplo, dados de referência que correspondem de modo aproximado os dados na imagem atual ou outra imagem de referência. Em geral, “melhor correspondência” pode se referir a dados de vídeo que são mais semelhantes em termos de diferenças de pixel.[0088] During the motion derivation process, the video encoder 20 and/or video decoder 30 may derive an initial motion vector for an entire block (e.g., an entire PU) based on the motion derivation process. selected. For example, video encoder 20 and/or video decoder 30 may use motion vectors from a candidate list associated with the blend mode and determine which motion vector from the candidate list results in a best match. That is, the video encoder 20 and/or video decoder 30 can determine which motion vector from the candidate list, when used in the selected motion derivation process, results in a first set of reference data corresponding to a second set of reference data outside the current block, for example, reference data that closely matches the data in the current image or another reference image. In general, “best match” can refer to video data that is most similar in terms of pixel differences.
[0089] Como um exemplo para propósito de ilustração, conforme descrito em maiores detalhes em relação à Figura 8, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode selecionar um modo de derivação de informações de movimento de correspondência de modelo. Neste exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode selecionar o vetor de movimento candidato a partir do modo de mescla com base no candidato de vetor que resulta em um modelo que corresponde de modo mais próximo um modelo em uma imagem de referência. Por exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode configurado para realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual, em que o primeiro conjunto de dados compreende o modelo na imagem atual e o segundo conjunto de dados de referência compreende o modelo na imagem de referência. Em alguns casos, conforme descrito em maiores detalhes abaixo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode adicional ou alternativamente selecionar um vetor de movimento candidato com base em um custo de correspondência mínimo.[0089] As an example for illustration purposes, as described in greater detail with respect to Figure 8, the video encoder 20 and/or video decoder 30 may select a template matching motion information derivation mode. In this example, the video encoder 20 and/or video decoder 30 may select the candidate motion vector from the blend mode based on the vector candidate that results in a model that most closely matches a model in an image. of reference. For example, video encoder 20 and/or video decoder 30 may be configured to perform a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block, wherein the first dataset comprises the model in the current image and the second reference dataset comprises the model in the reference image. In some cases, as described in greater detail below, the video encoder 20 and/or video decoder 30 may additionally or alternatively select a candidate motion vector based on a minimum matching cost.
[0090] De acordo com os aspectos desta revelação, após determinar o vetor de movimento candidato, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode, adicionalmente, refinar o vetor de movimento candidato para derivar informações de movimento para o bloco atual. Por exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode realizar uma busca (por exemplo, uma busca com o uso do modo de derivação de informações de movimento) em uma área predefinida da imagem de referência indicada pelo vetor de movimento candidato. O codificador de vídeo 20 e/ou decodificador de vídeo 30 pode derivar as informações de movimento para o bloco atual com base no vetor de movimento que indica dados de referência na área predefinida que têm uma melhor correspondência e/ou um custo de correspondência mínimo a dados de vídeo da imagem atual.[0090] In accordance with aspects of this disclosure, after determining the candidate motion vector, the video encoder 20 and/or video decoder 30 may further refine the candidate motion vector to derive motion information for the current block. . For example, the video encoder 20 and/or video decoder 30 may perform a search (e.g., a search using the motion information derivation mode) in a predefined area of the reference image indicated by the motion vector. candidate. The video encoder 20 and/or video decoder 30 may derive the motion information for the current block based on the motion vector that indicates reference data in the predefined area that has a best match and/or a minimum matching cost to video data of the current image.
[0091] Em alguns casos, de acordo com aspectos desta revelação, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode dividir o bloco de dados de vídeo em sub- blocos quando se deriva informações de movimento. Por exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode derivar separadamente informações de movimento para cada sub-bloco de um bloco maior. Em alguns casos, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode usar as informações de movimento derivadas para um bloco (por exemplo, com o uso do processo descrito acima) como informações de movimento de candidato para cada um dos sub- blocos. O codificador de vídeo 20 e/ou decodificador de vídeo 30 pode, então, refinar adicionalmente as informações de movimento derivadas para cada um dos sub-blocos, por exemplo, com o uso de um modo de derivação de informações de movimento particular (por exemplo, uma técnica de correspondência bilateral, uma técnica de correspondência de modelo, ou outra técnica, conforme descrito em maiores detalhes abaixo).[0091] In some cases, in accordance with aspects of this disclosure, the video encoder 20 and/or video decoder 30 may divide the video data block into subblocks when deriving motion information. For example, video encoder 20 and/or video decoder 30 may separately derive motion information for each sub-block of a larger block. In some cases, video encoder 20 and/or video decoder 30 may use motion information derived for a block (e.g., using the process described above) as candidate motion information for each of the sub-blocks. blocks. The video encoder 20 and/or video decoder 30 may then further refine the derived motion information for each of the sub-blocks, for example, with the use of a particular motion information derivation mode (e.g. , a two-sided matching technique, a template matching technique, or another technique as described in greater detail below).
[0092] A Figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20 que pode implantar técnicas para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar os dados de vídeo. O codificador de vídeo 20 pode realizar intracodificação e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação depende da predição espacial para reduzir ou remover a redundância espacial no vídeo dentro de uma determinada imagem de quadro de vídeo. A intercodificação depende da predição temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dentre vários modos de codificação com base em espaço. Os intermodos, tal como predição monodirecional (modo P) ou predição bidirecional (modo B), podem se referir a qualquer um dentre diversos modos de codificação à base temporal.[0092] Figure 2 is a block diagram illustrating an example video encoder 20 that can implement techniques to derive motion information, perform block partitioning, and/or interpolate video data. The video encoder 20 can perform intracoding and intercoding of video blocks within video slices. Intracoding relies on spatial prediction to reduce or remove spatial redundancy in video within a given video frame image. Intercoding relies on temporal prediction to reduce or remove temporal redundancy in video within adjacent frames or images of a video sequence. Intramode (mode I) can refer to any of several space-based encoding modes. Intermodes, such as monodirectional prediction (P-mode) or bidirectional prediction (B-mode), can refer to any of several time-based coding modes.
[0093] Conforme mostrado na Figura 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da Figura 2, o codificador de vídeo 20 inclui memória de dados de vídeo 38, unidade de seleção de modo 40, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e unidade de codificação por entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, unidade de estimativa de movimento 42, unidade de intrapredição 46 e unidade de partição 48. Para a reconstrução do bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de transformada inversa 60 e o somador 62. Um filtro de remoção de blocos (não mostrado na Figura 2) também pode ser incluso aos limites de bloco de filtro para remover artefatos de blocagem do vídeo reconstruído. Caso desejado, o filtro de remoção de blocos filtraria tipicamente a saída do somador 62. Os filtros adicionais (em laço ou pós-laço) também podem ser usados adicionalmente ao filtro de remoção de blocos. Esses filtros não são mostrados para propósitos de brevidade, mas caso desejado, podem filtrar a saída do somador 50 (como um filtro em laço).[0093] As shown in Figure 2, video encoder 20 receives a current video block within a video frame to be encoded. In the example of Figure 2, video encoder 20 includes video data memory 38, mode selection unit 40, reference image memory 64, adder 50, transform processing unit 52, quantization unit 54, and entropy coding 56. The mode selection unit 40 in turn includes the motion compensation unit 44, motion estimation unit 42, intraprediction unit 46, and partition unit 48. For reconstruction of the video block , the video encoder 20 also includes the inverse quantization unit 58, the inverse transform unit 60, and the adder 62. A block removal filter (not shown in Figure 2) may also be included at the filter block boundaries to remove blocking artifacts from the reconstructed video. If desired, the block removal filter would typically filter the output of adder 62. Additional filters (loop or post-loop) may also be used in addition to the block removal filter. These filters are not shown for brevity purposes, but if desired, they can filter the output of adder 50 (like a loop filter).
[0094] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo para ser codificada. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A memória de dados de vídeo 38 pode armazenar os dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 38 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. A memória de imagem de referência 64 pode ser referida como um DPB que armazena dados de vídeo de referência para uso em dados de vídeo de codificação pelo codificador de vídeo 20, por exemplo, em modos de intra ou intercodificação. A memória de dados de vídeo 38 e uma memória de imagem de referência 64 podem ser formadas por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 38 e a memória de imagem de referência 64 podem ser fornecidas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 38 pode estar no chip com outros componentes de codificador de vídeo 20, ou fora do chip em relação àqueles componentes.[0094] During the encoding process, video encoder 20 receives a video frame or slice to be encoded. The frame or slice can be divided into multiple video blocks. The video data memory 38 can store the video data to be encoded by the video encoder components 20. The video data stored in the video data memory 38 can be obtained, for example, from the video source 18 Reference picture memory 64 may be referred to as a DPB that stores reference video data for use in encoding video data by video encoder 20, for example, in intra- or inter-coding modes. The video data memory 38 and a reference image memory 64 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), which includes synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. Video data memory 38 and reference image memory 64 may be provided by the same memory device or separate memory devices. In various examples, video data memory 38 may be on-chip with other video encoder components 20, or off-chip with respect to those components.
[0095] A unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 realizam codificação interpreditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. A unidade de intrapredição 46 pode, alternativamente, realizar codificação intrapreditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode realizar múltiplos passos de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.[0095] The motion estimation unit 42 and motion compensation unit 44 perform interpredictive coding of the received video block relative to one or more blocks in one or more reference frames to provide temporal prediction. The intra-prediction unit 46 may alternatively perform intra-predictive coding of the received video block relative to one or more neighboring blocks in the same frame or slice as the block to be encoded to provide spatial prediction. The video encoder 20 may perform multiple encoding steps, for example, to select an appropriate encoding mode for each block of video data.
[0096] Ademais, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação dos esquemas de particionamento anteriores em passos de codificação anteriores. Por exemplo, a unidade de partição 48 pode particionar inicialmente um quadro ou fatia em LCUs, e particionar cada uma das LCUs em sub-CUs com base na análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode produzir adicionalmente uma estrutura de dados de árvore quadrática que indica o particionamento de uma LCU em sub- CUs. As CUs de nó folha da árvore quadrática podem incluir uma ou mais PUs e uma ou mais TUs.[0096] Furthermore, the partition unit 48 may partition blocks of video data into sub-blocks, based on evaluation of previous partitioning schemes in previous coding steps. For example, the partition unit 48 may initially partition a frame or slice into LCUs, and partition each of the LCUs into sub-CUs based on rate distortion analysis (e.g., rate distortion optimization). The mode selection unit 40 may additionally produce a quadratic tree data structure that indicates the partitioning of an LCU into sub-CUs. Quadratic tree leaf node CUs may include one or more PUs and one or more TUs.
[0097] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro, e fornece o bloco intra ou intercodificado resultante ao somador 50 para gerar dados de bloco residual e ao somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores intramodo, informações de partição, e outras dessas informações de sintaxe, à unidade de codificação por entropia 56.[0097] The mode selection unit 40 may select one of the coding modes, intra or inter, for example, based on error results, and provides the resulting intra or inter coded block to the adder 50 to generate residual block data and to adder 62 to reconstruct the encoded block for use as a reference frame. The mode selection unit 40 also provides syntax elements, such as motion vectors, intramode indicators, partition information, and other such syntax information, to the entropy coding unit 56.
[0098] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para propósitos de conceito. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de gerar vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indica o deslocamento de uma PU de um bloco de vídeo dentro de um quadro de vídeo ou imagem atual em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que se encontra em correspondência muito próxima ao bloco a ser codificado em termos de diferença de pixels, que pode ser determinado pelo somatório da diferença absoluta (SAD), somatório da diferença quadrada (SSD) ou outras medidas de diferença.[0098] The motion estimation unit 42 and the motion compensation unit 44 may be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation, performed by motion estimation unit 42, is the process of generating motion vectors, which estimate motion for video blocks. A motion vector, for example, may indicate the displacement of a PU of a video block within a current video or image frame relative to a predictive block within a reference frame (or other coded unit) relative to the current block being encoded within the current frame (or other encoded unit). A predictive block is a block that is in very close correspondence to the block to be encoded in terms of pixel difference, which can be determined by summation of absolute difference (SAD), summation of squared difference (SSD), or other difference measures .
[0099] Em alguns exemplos, o codificador de vídeo 20 pode realizar uma busca de movimento rápida para determinar um vetor de movimento de um bloco. Existem muitos métodos de busca de movimento rápida propostos na literatura, como Busca por Método de Máximo Declive com base em Bloco (BBGDS) conforme descrito, por exemplo, em Lurng-Kuo Liu, Ephraim Feig, “A block-based gradient descent search algorithm for block motion estimation in video coding,” IEEE Trans. Circuits Syst. Video Technol. , vol. 6, páginas 419 a 422, agosto de 1996, Unrestricted Center-Biased Diamond Search (UCBDS), conforme descrito, por exemplo, em Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath e Ashraf Ali Kassim, “A novel unrestricted center-biased diamond search algorithm for block motion estimation,” IEEE Trans. Circuits Syst. Video Technol. , vol. 8, páginas 369 a 377, agosto de 1998, e HEXagon-Based Search (HEBS) conforme descrito, por exemplo, em Ce Zhu, Xiao Lin e Lap-Pui Chau, “Hexagon-Based Search Pattern for Fast Block Motion Estimation,” IEEE Trans. Circuits Syst. Video Technol. , vol. 12, páginas 349 a 355, maior de 2002. Basicamente, essas técnicas incluem buscar apenas um determinado número de posições dentro de uma janela de busca com base em padrões de busca predefinidos. Essas técnicas normalmente funcionam bem quando o movimento for pequeno e moderado.[0099] In some examples, video encoder 20 may perform a fast motion search to determine a motion vector of a block. There are many fast motion search methods proposed in the literature, such as Block-based Gradient Descent Method Search (BBGDS) as described, for example, in Lurng-Kuo Liu, Ephraim Feig, “A block-based gradient descent search algorithm for block motion estimation in video coding,” IEEE Trans. Circuits Syst. Video Technol. , vol. 6, pages 419 to 422, August 1996, Unrestricted Center-Biased Diamond Search (UCBDS), as described, for example, in Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath, and Ashraf Ali Kassim, “A novel unrestricted center-biased diamond search algorithm for block motion estimation,” IEEE Trans. Circuits Syst. Video Technol. , vol. 8, pages 369 to 377, August 1998, and HEXagon-Based Search (HEBS) as described, for example, in Ce Zhu, Xiao Lin, and Lap-Pui Chau, “Hexagon-Based Search Pattern for Fast Block Motion Estimation,” IEEE Trans. Circuits Syst. Video Technol. , vol. 12, pages 349 to 355, major 2002. Basically, these techniques include searching only a certain number of positions within a search window based on predefined search patterns. These techniques typically work well when the movement is small and moderate.
[00100] Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel subinteiro de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições fracionadas de pixel da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento em relação às posições completas de pixel e posições fracionadas de pixel e emitir um vetor de movimento com precisão fracionada de pixel.[00100] In some examples, video encoder 20 may calculate values for sub-integer pixel positions of reference images stored in reference image memory 64. For example, video encoder 20 may interpolate values from quarter-pixel positions. pixel, one-eighth pixel positions, or other fractional pixel positions of the reference image. Therefore, the motion estimation unit 42 can perform a motion search with respect to full pixel positions and fractional pixel positions and output a motion vector with fractional pixel accuracy.
[00101] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando-se a posição da PU à posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e a unidade de compensação de movimento 44.[00101] The motion estimation unit 42 calculates a motion vector for a PU of a video block in an intercoded slice by comparing the position of the PU to the position of a predictive block of a reference image. The reference image may be selected from a first list of reference images (List 0) or a second list of reference images (List 1), each of which identifies one or more reference images stored in image memory reference frame 64. The motion estimation unit 42 sends the calculated motion vector to the entropy coding unit 56 and the motion compensation unit 44.
[00102] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver obter ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. Novamente, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Mediante o recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo-se valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual em codificação, formando valores de diferença de pixel, conforme discutido abaixo. Em geral, a unidade de estimativa de movimento 42 realiza a estimativa de movimento relativa aos componentes de luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base em componentes de luma para ambos os componentes de croma e componentes de luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados aos blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.[00102] Motion compensation, performed by the motion compensation unit 44, may involve obtaining or generating the predictive block based on the motion vector determined by the motion estimation unit 42. Again, the motion estimation unit 42 and The motion compensation unit 44 may be functionally integrated, in some examples. Upon receipt of the motion vector for the PU of the current video block, the motion compensation unit 44 can locate the predictive block to which the motion vector points in one of the reference image lists. Adder 50 forms a residual video block by subtracting pixel values from the predictive block from pixel values from the current video block being encoded, forming pixel difference values, as discussed below. In general, the motion estimation unit 42 performs motion estimation relative to luma components, and the motion compensation unit 44 uses motion vectors calculated based on luma components for both chroma components and luma components. . The mode selection unit 40 may also generate syntax elements associated with the video blocks and the video slice for use by the video decoder 30 in decoding the video blocks of the video slice.
[00103] A unidade de intrapredição 46 pode intrapredizer um bloco atual, como uma alternativa à intrapredição realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de intrapredição 46 pode determinar um modo de intrapredição a ser usado para codificar um bloco atual. Em alguns exemplos, a unidade de intrapredição 46 pode codificar um bloco atual com o uso de vários modos de intrapredição, por exemplo, durante passos de codificação separados, e a unidade de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição adequado para usar a partir dos modos testados.[00103] The intraprediction unit 46 may intrapredict a current block, as an alternative to the intraprediction performed by the motion estimation unit 42 and the motion compensation unit 44, as described above. In particular, the intraprediction unit 46 may determine an intraprediction mode to be used to encode a current block. In some examples, the intraprediction unit 46 may encode a current block using multiple intraprediction modes, e.g., during separate encoding steps, and the intraprediction unit 46 (or mode selection unit 40, in some examples ) can select a suitable intraprediction mode to use from the tested modes.
[00104] Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa com o uso de uma análise de distorção de taxa para os vários modos de intrapredição testados e selecionar o modo de intrapredição que tem as melhores características de distorção de taxa dentre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de intrapredição 46 pode calcular razões a partir de distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa para o bloco.[00104] For example, the intraprediction unit 46 may calculate rate distortion values using a rate distortion analysis for the various intraprediction modes tested and select the intraprediction mode that has the best rate distortion characteristics. among the tested modes. Rate distortion analysis generally determines an amount of distortion (or error) between an encoded block and an original uncoded block that was encoded to produce the encoded block, as well as a bitrate (i.e., a number of bits) used to produce the coded block. The intraprediction unit 46 may calculate ratios from distortions and rates for the various coded blocks to determine which intraprediction mode exhibits the best rate distortion value for the block.
[00105] Após selecionar um modo de intrapredição para um bloco, a unidade de intrapredição 46 pode fornecer informações indicativas do modo de intrapredição selecionado para o bloco para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar as informações que indicam o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir no fluxo de bits transmitidos dados de configuração, que podem incluir uma pluralidade de tabelas de índices de modo de intrapredição e uma pluralidade de tabelas de índices de modo de intrapredição modificados (também referidas como tabelas de mapeamento de palavras-código), as definições de contextos de codificação para vários blocos e indicações de um modo de intrapredição mais provável, uma tabela de índices de modo de intrapredição e uma tabela de índices de modo de intrapredição modificados para usar para cada um dos contextos.[00105] After selecting an intraprediction mode for a block, the intraprediction unit 46 may provide information indicative of the selected intraprediction mode for the block to the entropy coding unit 56. The entropy coding unit 56 may encode the information which indicate the selected intraprediction mode. Video encoder 20 may include in the transmitted bit stream configuration data, which may include a plurality of intraprediction mode index tables and a plurality of modified intraprediction mode index tables (also referred to as word mapping tables). -code), definitions of coding contexts for various blocks and indications of a most likely intraprediction mode, a table of intraprediction mode indexes, and a table of modified intraprediction mode indexes to use for each of the contexts.
[00106] De acordo com os aspectos desta revelação, conforme descrito no presente documento, o codificador de vídeo 20 pode ser configurado para realizar qualquer combinação das técnicas descritas no presente documento para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar dados de vídeo. Em particular, determinadas técnicas desta revelação podem ser realizadas pela unidade de derivação 49. Por exemplo, unidade de derivação 49 pode ser configurada para determinar informações de movimento para um bloco atual e sem incluir dados que indicam as informações de movimento no fluxo de bits.[00106] In accordance with aspects of this disclosure, as described herein, the video encoder 20 may be configured to perform any combination of the techniques described herein to derive motion information, perform block partitioning, and/or interpolate data of video. In particular, certain techniques of this disclosure may be performed by branch unit 49. For example, branch unit 49 may be configured to determine motion information for a current block and without including data indicating motion information in the bit stream.
[00107] Em alguns casos, a unidade de derivação 49 (e/ou unidade de seleção de modo 40) pode determinar se deve realizar a derivação de movimento para um bloco particular (por exemplo, versus intrapredição ou interpredição tradicional) com base em uma análise de distorção de taxa. Por exemplo, a unidade de derivação 49 pode determinar se deve realizar derivação de movimento de modo semelhante a uma seleção de custo de distorção de taxa como é realizado para candidatos de mescla no modo de mescla. Neste exemplo, a unidade de derivação 49 pode verificar cada modo de derivação de informações de movimento de uma pluralidade de modos de derivação de informações de movimento (por exemplo, um modo de correspondência bilateral, modo de correspondência de modelo, ou similares) com o uso de uma seleção de custo de distorção de taxa. A unidade de derivação 49 pode comparar adicionalmente o modo de derivação de informações de movimento que tem o custo mínimo a outros modos de PU (por exemplo, modos de intrapredição, um modo de interpredição tradicional, um modo de codificação de palete ou similares). Em casos em que o modo de derivação de movimento é o modo mais eficaz no que diz respeito à eficiência de codificação, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe que indicam que as informações de movimento são derivadas (ao invés de sinalizadas) para o bloco atual. O codificador de vídeo 20 também pode codificar um ou mais elementos de sintaxe para indicar o modo de derivação de movimento a partir de uma pluralidade de modos de derivação de informações de movimento.[00107] In some cases, the derivation unit 49 (and/or mode selection unit 40) may determine whether to perform motion derivation for a particular block (e.g., versus traditional intraprediction or interprediction) based on a rate distortion analysis. For example, derivation unit 49 may determine whether to perform motion derivation in a manner similar to a rate distortion cost selection as is performed for merge candidates in merge mode. In this example, the derivation unit 49 may check each motion information derivation mode of a plurality of motion information derivation modes (e.g., a bilateral matching mode, template matching mode, or the like) with the use of a rate distortion cost selection. The derivation unit 49 may further compare the motion information derivation mode that has the minimum cost to other PU modes (e.g., intraprediction modes, a traditional interprediction mode, a pallet coding mode, or the like). In cases where the motion derivation mode is the most effective mode with respect to coding efficiency, the video encoder 20 may encode one or more syntax elements that indicate that the motion information is derived (rather than flagged) for the current block. The video encoder 20 may also encode one or more syntax elements to indicate the motion derivation mode from a plurality of motion information derivation modes.
[00108] Em outros exemplos, de acordo com aspectos desta revelação, a unidade de derivação 49 pode interpolar dados de vídeo que não estão inclusos no fluxo de bits codificado para uma sequência de vídeo. Por exemplo, a unidade de derivação 49 pode realizar quaisquer técnicas de combinação de derivação de movimento para interpolar uma imagem que não está inclusa no fluxo de bits, por exemplo, semelhante à conversão ascendente de taxa de quadros. Em alguns casos, o codificador de vídeo 20 pode usar a imagem interpolada durante a codificação. Por exemplo, a unidade de derivação 49 pode interpolar uma imagem e o codificador de vídeo 20 pode codificar dados para uma imagem atual em relação à imagem interpolada. Neste exemplo, o codificador de vídeo 20 pode adicionar a imagem interpolada à memória de imagem de referência 64 e codificar dados de outras imagens com base em pelo menos uma porção da imagem interpolada.[00108] In other examples, in accordance with aspects of this disclosure, the derivation unit 49 may interpolate video data that is not included in the encoded bit stream for a video sequence. For example, the derivation unit 49 may perform any motion derivation combination techniques to interpolate an image that is not included in the bit stream, e.g., similar to frame rate upconversion. In some cases, video encoder 20 may use the interpolated image during encoding. For example, the derivation unit 49 may interpolate an image and the video encoder 20 may encode data for a current image relative to the interpolated image. In this example, video encoder 20 may add the interpolated image to reference image memory 64 and encode data from other images based on at least a portion of the interpolated image.
[00109] Em outros exemplos, a unidade de derivação 49 pode interpolar uma imagem e o codificador de vídeo 20 pode estabelecer a imagem interpolada igual à imagem atual. Por exemplo, a unidade de derivação 49 pode interpolar a imagem atual e o codificador de vídeo 20 pode codificar dados de sintaxe para a imagem atual ser inclusa no fluxo de bits (por exemplo, dados de cabeçalho de fatia e similares), mas pode pular a codificação dos dados de vídeo para a imagem atual.[00109] In other examples, the derivation unit 49 may interpolate an image and the video encoder 20 may set the interpolated image equal to the current image. For example, the branch unit 49 may interpolate the current image and the video encoder 20 may encode syntax data for the current image to be included in the bit stream (e.g., slice header data and the like), but may skip encoding the video data to the current image.
[00110] Embora a unidade de derivação 49 possa ser configurada para realizar determinadas técnicas de derivação e/ou interpolação, conforme descrito no presente documento, deve ser compreendido que uma ou mais outras unidades do codificador de vídeo 20 podem também ou alternativamente ser configuradas para interpolar dados. Por exemplo, o codificador de vídeo 20 pode incluir uma variedade de outros interpoladores ou filtros, por exemplo, para interpolar um pixel em um local de subpixel (sub-pel) durante a compensação de movimento.[00110] Although derivation unit 49 may be configured to perform certain derivation and/or interpolation techniques as described herein, it should be understood that one or more other video encoder units 20 may also or alternatively be configured to interpolate data. For example, video encoder 20 may include a variety of other interpolators or filters, for example, to interpolate a pixel at a sub-pixel (sub-pel) location during motion compensation.
[00111] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo-se os dados de predição da unidade de seleção de modo 40 do original bloco de vídeo sendo codificado. O somador 50 representa o componente ou os componentes que realizam essa operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno distinta (DCT) ou uma conceitualmente semelhante, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformada residual. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente semelhantes a DCT. As transformadas de ondeleta, transformadas inteiras, transformadas de sub-banda ou outros tipos de transformadas também poderiam ser usadas.[00111] The video encoder 20 forms a residual video block by subtracting the prediction data from the mode selection unit 40 from the original video block being encoded. Adder 50 represents the component or components that perform this subtraction operation. The transform processing unit 52 applies a transform, such as a distinct cosine transform (DCT) or one conceptually similar, to the residual block, producing a video block comprising residual transform coefficient values. The transform processing unit 52 can perform other transforms that are conceptually similar to DCT. Wavelet transforms, integer transforms, subband transforms, or other types of transforms could also be used.
[00112] Em todo caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter as informações residuais de um domínio de valor de pixel em um domínio da transformada, como um domínio da frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir adicionalmente a taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54, pode, então, realizar uma varredura da matriz que inclui os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a varredura.[00112] In any case, the transform processing unit 52 applies the transform to the residual block, producing a block of residual transform coefficients. The transform can convert the residual information from a pixel value domain into a transform domain, such as a frequency domain. The transform processing unit 52 may send the resulting transform coefficients to the quantization unit 54. The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting a quantization parameter. In some examples, the quantization unit 54 may then perform a scan of the matrix that includes the quantized transform coefficients. Alternatively, the entropy coding unit 56 may perform scanning.
[00113] Após a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa a contexto (CAVLC), codificação aritmética binária adaptativa a contexto (CABAC), codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), codificação por entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso de codificação por entropia com base em contexto, o contexto pode se basear em blocos vizinhos. Após a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.[00113] After quantization, the entropy coding unit 56 entropy codes the quantized transform coefficients. For example, the entropy coding unit 56 may perform context-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (PIPE) or other entropy coding technique. In the case of context-based entropy coding, the context can be based on neighboring blocks. After entropy coding by entropy coding unit 56, the encoded bit stream may be transmitted to another device (e.g., video decoder 30) or archived for later transmission or retrieval.
[00114] A unidade de quantificação inversa 58 e a unidade de transformada inversa 60 aplicam quantificação inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixels, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando-se o bloco residual a um bloco preditivo de um dos quadros da memória de imagem de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel de subnúmeros inteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco preditivo compensado em movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.[00114] The inverse quantization unit 58 and the inverse transform unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual block in the pixel domain, for example, for later use as a reference block. The motion compensation unit 44 may calculate a reference block by adding the residual block to a predictive block of one of the reference image memory frames 64. The motion compensation unit 44 may also apply one or more motion compensation filters. interpolation to the reconstructed residual block to calculate sub-integer pixel values for use in motion estimation. Adder 62 adds the reconstructed residual block to the motion-compensated predictive block produced by motion compensation unit 44 to produce a reconstructed video block for storage in reference image memory 64. The reconstructed video block can be used by the motion estimation 42 and by the motion compensation unit 44 as a reference block for intercoding a block in a subsequent video frame.
[00115] A Figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implantar técnicas para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar os dados de vídeo. No exemplo da Figura 3, o decodificador de vídeo 30 inclui memória de dados de vídeo 68, uma unidade de decodificação por entropia 70, unidade de compensação de movimento 72, unidade de intrapredição 74, unidade de quantização inversa 76, unidade de transformada inversa 78, memória de imagem de referência 82 e somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar um passo de decodificação geralmente recíproco ao passo de codificação descrito em relação ao codificador de vídeo 20 (Figura 2). A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos a partir da unidade de decodificação por entropia 70, enquanto a unidade de intrapredição 74 pode gerar dados de predição com base nos indicadores de modo de intrapredição recebidos a partir da unidade de decodificação por entropia 70.[00115] Figure 3 is a block diagram illustrating an example video decoder 30 that can implement techniques to derive motion information, perform block partitioning, and/or interpolate video data. In the example of Figure 3, the video decoder 30 includes video data memory 68, an entropy decoding unit 70, motion compensation unit 72, intraprediction unit 74, inverse quantization unit 76, inverse transform unit 78 , reference image memory 82 and adder 80. Video decoder 30 may, in some examples, perform a decoding step generally reciprocal to the encoding step described with respect to video encoder 20 (Figure 2). The motion compensation unit 72 may generate prediction data based on motion vectors received from the entropy decoding unit 70, while the intraprediction unit 74 may generate prediction data based on intraprediction mode indicators received from from the entropy decoding unit 70.
[00116] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados provenientes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 68 podem ser obtidos, por exemplo, a partir da mídia legível por computador, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede sem fio ou com fio de dados de vídeo ou acessando-se mídias de armazenamento de dados físicas. A memória de dados de vídeo 68 pode formar um armazenamento temporário de imagem codificada (CPB) que armazena dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado.[00116] During the decoding process, video decoder 30 receives an encoded video bitstream representing video blocks of an encoded video slice and associated syntax elements from video encoder 20. The stored video data in video data memory 68 may be obtained, for example, from computer-readable media, for example, from a local video source such as a camera, via wireless or wired network communication. video data or by accessing physical data storage media. The video data memory 68 may form a coded picture buffer (CPB) that stores coded video data from a coded video bit stream.
[00117] A memória de imagem de referência 82 pode ser referida como um DPB que armazena dados de vídeo de referência para uso em dados de vídeo de decodificação pelo decodificador de vídeo 30, por exemplo, em modos de intra ou intercodificação. A memória de dados de vídeo 68 e uma memória de imagem de referência 82 podem ser formadas por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 68 e a memória de imagem de referência 82 podem ser fornecidas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 68 pode estar no chip com outros componentes de decodificador de vídeo 30 ou fora do chip em relação àqueles componentes.[00117] Reference picture memory 82 may be referred to as a DPB that stores reference video data for use in decoding video data by video decoder 30, for example, in intra- or inter-coding modes. The video data memory 68 and a reference image memory 82 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), which includes synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. Video data memory 68 and reference image memory 82 may be provided by the same memory device or separate memory devices. In various examples, video data memory 68 may be on-chip with other video decoder components 30 or off-chip with respect to those components.
[00118] A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de intrapredição e outros elementos de sintaxe. A unidade de decodificação por entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.[00118] The entropy decoding unit 70 of the video decoder 30 entropy decodes the bit stream to generate quantized coefficients, motion vectors or intraprediction mode indicators, and other syntax elements. The entropy decoding unit 70 forwards the motion vectors and other syntax elements to the motion compensation unit 72. The video decoder 30 may receive the syntax elements at the video slice level and/or at the block level. of video.
[00119] Quando a fatia de vídeo for codificada como uma fatia intracodificada (I), a unidade de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados provenientes de blocos decodificados anteriormente do quadro ou imagem atual. Quando o quadro de vídeo for codificado como uma fatia intercodificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos a partir da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, a Lista 0 e a Lista 1, com o uso de técnicas de construção padrão com base nas imagens de referência armazenadas na memória de imagens de referência 82.[00119] When the video slice is encoded as an intracoded (I) slice, the intraprediction unit 74 may generate prediction data for a video block of the current video slice based on a signaled intraprediction mode and data from previously decoded blocks of the current frame or image. When the video frame is encoded as an intercoded slice (i.e., B, P, or GPB), the motion compensation unit 72 produces predictive blocks for a video block of the current video slice based on the motion vectors and other syntax elements received from the entropy decoding unit 70. Predictive blocks may be produced from one of the reference images within one of the reference image lists. The video decoder 30 may construct the reference frame lists, List 0 and List 1, using standard construction techniques based on reference images stored in reference image memory 82.
[00120] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual analisando-se os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual em decodificação. Por exemplo, a unidade de compensação de movimento 72 pode usar uma parte dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) usado para codificar os blocos de vídeo da pedaço de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais dentre as listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, status de interpredição para cada bloco de vídeo intercodificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.[00120] The motion compensation unit 72 determines prediction information for a video block of the current video slice by analyzing the motion vectors and other syntax elements, and uses the prediction information to produce the predictive blocks for the current video block being decoded. For example, the motion compensation unit 72 may use a portion of the received syntax elements to determine a prediction mode (e.g., intra- or inter-prediction) used to encode the video blocks of the video chunk, a type of video slice. interprediction (e.g., B-slice, P-slice, or GPB-slice), construction information for one or more of the reference image lists for the slice, motion vectors for each intercoded video block of the slice, interprediction status for each intercoded video block of the slice and other information to decode the video blocks in the current video slice.
[00121] A unidade de compensação de movimento 72 também pode realizar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação conforme usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels subinteiros de blocos de referência. Nesse caso, a unidade de compensação de modo 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.[00121] The motion compensation unit 72 can also perform interpolation based on interpolation filters. The motion compensation unit 72 may use interpolation filters as used by the video encoder 20 during encoding of the video blocks to calculate interpolated values for sub-integer pixels of reference blocks. In this case, the mode compensation unit 72 may determine the interpolation filters used by the video encoder 20 from the received syntax elements and use the interpolation filters to produce predictive blocks.
[00122] De acordo com os aspectos desta revelação o decodificador de vídeo 30 pode ser configurado para realizar qualquer combinação das técnicas descritas no presente documento para derivar informações de movimento, realizar particionamento de bloco e/ou interpolar dados de vídeo. Em particular, determinadas técnicas desta revelação podem ser realizadas pela unidade de derivação 75. Por exemplo, de acordo com os aspectos desta revelação, a unidade de derivação 75 pode ser configurada para determinar informações de movimento para um bloco atual e sem decodificar as informações de movimento de um fluxo de bits codificado.[00122] In accordance with aspects of this disclosure the video decoder 30 may be configured to perform any combination of the techniques described herein to derive motion information, perform block partitioning and/or interpolate video data. In particular, certain techniques of this disclosure may be performed by branch unit 75. For example, in accordance with aspects of this disclosure, branch unit 75 may be configured to determine motion information for a current block and without decoding the motion information. movement of an encoded bit stream.
[00123] Em alguns casos, a unidade de derivação 75 pode determinar se deve realizar a derivação de movimento para um bloco particular (por exemplo, versus intrapredição ou interpredição tradicional). Por exemplo, o decodificador de vídeo 30 pode decodificar um ou mais elementos de sintaxe que indicam que as informações de movimento são derivadas (ao invés de sinalizadas) para um bloco sendo decodificado. O decodificador de vídeo 30 também pode decodificar um ou mais elementos de sintaxe que indicam um modo de derivação de informações de movimento a partir de uma pluralidade de modos de derivação de informações de movimento a serem usados para decodificar um bloco. A unidade de derivação 75 pode determinar se deve realizar a derivação de movimento e o modo de derivação de informações de movimento para um bloco com base na sintaxe decodificada. Em alguns exemplos, conforme descrito no presente documento, a sintaxe pode ser associada a um ou mais outros modos, como modo de mescla, AMVP, ou outras funções de decodificação.[00123] In some cases, the derivation unit 75 may determine whether to perform motion derivation for a particular block (e.g., versus traditional intraprediction or interprediction). For example, video decoder 30 may decode one or more syntax elements that indicate that motion information is derived (rather than signaled) for a block being decoded. The video decoder 30 may also decode one or more syntax elements that indicate a mode of deriving motion information from a plurality of modes of deriving motion information to be used to decode a block. Derivation unit 75 may determine whether to perform motion derivation and the manner of deriving motion information for a block based on the decoded syntax. In some examples, as described herein, the syntax may be associated with one or more other modes, such as blend mode, AMVP, or other decoding functions.
[00124] De acordo com outros aspectos desta revelação, a unidade de derivação 75 pode interpolar dados de vídeo que não estão inclusos no fluxo de bits codificado para uma sequência de vídeo. Por exemplo, a unidade de derivação 75 pode realizar quaisquer técnicas de combinação de derivação de movimento para interpolar uma imagem que não está inclusa no fluxo de bits analisado sintaticamente, por exemplo, semelhante à conversão ascendente de taxa de quadros. Em alguns casos, o decodificador de vídeo 30 pode usar a imagem interpolada durante a codificação. Por exemplo, a unidade de derivação 75 pode interpolar uma imagem e o decodificador de vídeo 30 pode decodificar dados para uma imagem atual em relação à imagem interpolada. Neste exemplo, o decodificador de vídeo 30 pode adicionar a imagem interpolada à memória de imagem de referência 82 e decodificar dados de outras imagens com base em pelo menos uma porção da imagem interpolada.[00124] According to other aspects of this disclosure, the branch unit 75 can interpolate video data that is not included in the encoded bit stream for a video sequence. For example, the derivation unit 75 may perform any motion derivation combination techniques to interpolate an image that is not included in the parsed bit stream, e.g., similar to frame rate upconversion. In some cases, the video decoder 30 may use the interpolated image during encoding. For example, the derivation unit 75 may interpolate an image and the video decoder 30 may decode data for a current image relative to the interpolated image. In this example, video decoder 30 may add the interpolated image to reference image memory 82 and decode data from other images based on at least a portion of the interpolated image.
[00125] Em outros exemplos, a unidade de derivação 75 pode interpolar uma imagem e o decodificador de vídeo 30 pode estabelecer a imagem interpolada igual à imagem atual. Por exemplo, a unidade de derivação 75 pode interpolar a imagem atual e o decodificador de vídeo 30 pode decodificar elementos de sintaxe para a imagem atual a partir do fluxo de bits codificado (por exemplo, dados de cabeçalho de fatia e similares), mas pode pular a decodificação dos dados de vídeo para a imagem atual e ao invés disso interpolar a imagem atual.[00125] In other examples, the derivation unit 75 may interpolate an image and the video decoder 30 may set the interpolated image equal to the current image. For example, the derivation unit 75 may interpolate the current image and the video decoder 30 may decode syntax elements for the current image from the encoded bit stream (e.g., slice header data and the like), but may skip decoding the video data for the current image and instead interpolate the current image.
[00126] Embora a unidade de derivação 75 possa ser configurada para realizar determinadas técnicas interpolação, conforme descrito no presente documento, deve ser compreendido que uma ou mais outras unidades do decodificador de vídeo 30 podem também ou alternativamente ser configuradas para interpolar dados. Por exemplo, o decodificador de vídeo 30 pode incluir uma variedade de outros interpoladores ou filtros, por exemplo, para interpolar um pixel em um local de subpixel (sub-pel) durante a compensação de movimento.[00126] Although the derivation unit 75 may be configured to perform certain interpolation techniques as described herein, it should be understood that one or more other units of the video decoder 30 may also or alternatively be configured to interpolate data. For example, video decoder 30 may include a variety of other interpolators or filters, for example, to interpolate a pixel at a sub-pixel (sub-pel) location during motion compensation.
[00127] A unidade de quantização inversa 76 quantiza inversamente, por exemplo, desquantiza, o coeficiente de transformada quantificados fornecidos no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa que deve ser aplicado.[00127] The inverse quantization unit 76 inversely quantizes, e.g., dequantizes, the quantized transform coefficient provided in the bit stream and decoded by the entropy decoding unit 70. The inverse quantization process may include the use of a quantization calculated by video decoder 30 for each video block in the video slice to determine a degree of quantization and, similarly, a degree of inverse quantization that should be applied.
[00128] A unidade de transformada inversa 78 aplica uma transformada inversa 78, por exemplo, uma DCT, uma transformada de número inteiro inversa ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.[00128] The inverse transform unit 78 applies an inverse transform 78, e.g., a DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to produce residual blocks in the pixel domain .
[00129] Após a unidade de compensação de modo 72 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando-se os blocos residuais provenientes da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de modo 72. O somador 80 representa o componente ou componentes que realizam essa operação de soma. Caso seja desejado, um filtro de remoção de blocos também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de característica de bloqueio. Outros filtros em laço (tanto no laço de codificação quanto após o laço de codificação) também podem ser usados para suavizar as transições de pixel, ou, de outro modo, melhorar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem de referência são, então, armazenados na memória de imagem 82, que armazena imagens de referência usadas para a compensação de movimento subsequente. A memória de imagem de referência 82 também armazena o vídeo decodificado para apresentação posterior em um dispositivo de exibição, como o dispositivo de exibição 32 da Figura 1.[00129] After the mode compensation unit 72 generates the predictive block for the current video block based on the motion vectors and other syntax elements, the video decoder 30 forms a decoded video block by summing the residual blocks coming from the inverse transform unit 78 with the corresponding predictive blocks generated by the mode compensation unit 72. The adder 80 represents the component or components that perform this summation operation. If desired, a block removal filter can also be applied to filter the decoded blocks to remove blocking characteristic artifacts. Other loop filters (either in the encoding loop or after the encoding loop) can also be used to smooth pixel transitions, or otherwise improve video quality. The video blocks decoded into a given reference frame or image are then stored in image memory 82, which stores reference images used for subsequent motion compensation. Reference image memory 82 also stores the decoded video for later presentation on a display device, such as display device 32 of Figure 1.
[00130] As Figuras 4A e 4B são diagramas conceituais que ilustram candidatos vizinhos espaciais em HEVC. Em alguns exemplos, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode derivar candidatos de vetor de movimento (MV) espacial a partir do bloco vizinho 0, bloco vizinho 1, bloco vizinho 2, bloco vizinho 3 ou bloco vizinho 4 para PU0.[00130] Figures 4A and 4B are conceptual diagrams illustrating spatial neighbor candidates in HEVC. In some examples, video encoder 20 and/or video decoder 30 may derive spatial motion vector (MV) candidates from neighboring block 0, neighboring block 1, neighboring block 2, neighboring block 3, or neighboring block 4 to PU0.
[00131] Em alguns casos, as técnicas para gerar os candidatos de MV dos blocos diferem para os modos de mescla e AMVP. A Figura 4A ilustra um exemplo para o modo de mescla. Por exemplo, em HEVC, um codificador de vídeo (por exemplo, como codificador de vídeo 20 e/ou decodificador de vídeo 30 das Figuras 1 a 3) pode derivar até quatro candidatos de MV espaciais. Os candidatos podem estar inclusos em uma lista de candidatos que tem uma ordem particular. Em um exemplo, a ordem para o exemplo da Figura 4A pode ser o bloco vizinho 0 (A1), bloco vizinho 1 (B1), bloco vizinho 2 (B0), bloco vizinho 3 (A0) e bloco vizinho 4 (B2).[00131] In some cases, the techniques for generating the MV candidates from the blocks differ for the merge and AMVP modes. Figure 4A illustrates an example for the blend mode. For example, in HEVC, a video encoder (e.g., such as video encoder 20 and/or video decoder 30 of Figures 1 to 3) can derive up to four spatial MV candidates. Candidates may be included in a candidate list that has a particular order. In an example, the order for the example in Figure 4A might be neighboring block 0 (A1), neighboring block 1 (B1), neighboring block 2 (B0), neighboring block 3 (A0), and neighboring block 4 (B2).
[00132] A Figura 4B ilustra um exemplo para o modo de AMVP. Por exemplo, em HEVC, o codificador de vídeo pode dividir blocos vizinhos em dois grupos: em que o grupo esquerdo inclui o bloco vizinho 0 e bloco vizinho 1 e o grupo acima inclui o bloco vizinho 2, bloco vizinho 3 e bloco vizinho 4. Para cada grupo, o candidato de vetor de movimento potencial associado a um bloco vizinho que se refere à mesma imagem de referência que aquela indicada pelo índice de referência sinalizado (para o bloco atualmente sendo codificado) pode ter a maior prioridade para ser escolhida para formar um candidato final do grupo. É possível que nenhum dos blocos vizinhos contenha um vetor de movimento que aponta para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o codificador de vídeo pode escalonar o primeiro candidato disponível para formar o candidato final, assim, as diferenças de distância temporal podem ser compensadas.[00132] Figure 4B illustrates an example for the AMVP mode. For example, in HEVC, the video encoder can divide neighboring blocks into two groups: where the left group includes neighboring block 0 and neighboring block 1 and the above group includes neighboring block 2, neighboring block 3 and neighboring block 4. For each group, the potential motion vector candidate associated with a neighboring block that refers to the same reference image as that indicated by the signed reference index (for the block currently being encoded) may have the highest priority to be chosen to form a final candidate from the group. It is possible that none of the neighboring blocks contain a motion vector that points to the same reference image. Therefore, if such a candidate cannot be found, the video encoder can scale the first available candidate to form the final candidate, thus temporal distance differences can be compensated.
[00133] De acordo com os aspectos desta revelação, os candidatos de vetor de movimento, como os vetores de movimento associados aos blocos vizinhos mostrados nas Figuras 4A e 4B podem ser usados para derivar um vetor de movimento para um bloco. Por exemplo, o codificador de vídeo pode gerar uma lista de candidatos que inclui candidatos de vetor de movimento a partir dos blocos vizinhos mostrados nas Figuras 4A e 4B. Neste exemplo, o codificador de vídeo pode usar um ou mais dos candidatos da lista de candidatos como um vetor de movimento inicial em um processo de derivação de informações de movimento (por exemplo, correspondência bilateral, correspondência de modelo ou similares). O codificador de vídeo pode aplicar um ou mais dos candidatos de vetor de movimento em uma busca de movimento de um vetor de processo de derivação de movimento para identificar dados de referência. O codificador de vídeo pode selecionar o candidato a partir da lista que identifica dados de referência de correspondência próxima (por exemplo, conforme descrito em relação às Figuras 8 a 9 abaixo). Por exemplo, o codificador de vídeo pode realizar a busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual. O codificador de vídeo pode, em alguns casos, refinar adicionalmente o candidato, por exemplo, realizando-se uma busca de movimento adicionalmente em uma área indicada pelo candidato selecionado, para determinar um vetor de movimento derivado com o uso do processo de derivação de informações de movimento.[00133] In accordance with aspects of this disclosure, motion vector candidates such as the motion vectors associated with neighboring blocks shown in Figures 4A and 4B can be used to derive a motion vector for a block. For example, the video encoder may generate a candidate list that includes motion vector candidates from the neighboring blocks shown in Figures 4A and 4B. In this example, the video encoder may use one or more of the candidates from the candidate list as an initial motion vector in a process of deriving motion information (e.g., bilateral matching, template matching, or the like). The video encoder may apply one or more of the motion vector candidates in a motion search of a motion derivation process vector to identify reference data. The video encoder may select the candidate from the list that identifies close match reference data (e.g., as described in relation to Figures 8 to 9 below). For example, the video encoder may perform motion search for a first set of reference data that corresponds to a second set of reference data outside the current block. The video encoder may, in some cases, further refine the candidate, for example, by additionally performing a motion search in an area indicated by the selected candidate, to determine a derived motion vector using the information derivation process. of movement.
[00134] As Figuras 5A e 5B são diagramas conceituais que ilustra vetor de movimento predição temporal em HEVC. Um candidato de preditor de vetor de movimento (TMVP) temporal, se habilitado e disponível, é adicionado em uma lista de candidatos de MV após candidatos de vetor de movimento espaciais. Em HEVC, o processo de derivação de vetor de movimento para um candidato de TMVP é o mesmo para ambos os modos de mescla e AMVP, entretanto, o índice de referência alvo para o candidato de TMVP no modo de mescla é tipicamente estabelecido como zero.[00134] Figures 5A and 5B are conceptual diagrams that illustrate temporal prediction motion vector in HEVC. A temporal motion vector predictor (TMVP) candidate, if enabled and available, is added to a list of MV candidates after spatial motion vector candidates. In HEVC, the motion vector derivation process for a TMVP candidate is the same for both blend mode and AMVP, however, the target reference index for the TMVP candidate in blend mode is typically set to zero.
[00135] A Figura 5A ilustra uma localização de bloco primário (mostrado como bloco “T”) para um candidato de TMVP, que é o bloco direito inferior fora da PU colocalizada. A localização pode compensar pela inclinação aos blocos acima e esquerdo usados para gerar candidatos vizinhos espaciais. Entretanto, se o bloco T estiver localizado fora da fileira de CTB atual ou informações de movimento não estiverem disponíveis, o bloco é substituído por um bloco central da PU, conforme ilustrado pelas setas tracejadas do bloco T na Figura 5A.[00135] Figure 5A illustrates a primary block location (shown as block “T”) for a TMVP candidate, which is the lower right block outside of the co-located PU. Localization can compensate for bias to the top and left blocks used to generate spatial neighbor candidates. However, if the T block is located outside the current CTB row or motion information is not available, the block is replaced with a central PU block, as illustrated by the T block dashed arrows in Figure 5A.
[00136] A Figura 5B ilustra a derivação de um candidato de TMVP 84 for um bloco atual 86 de uma imagem atual 88 a partir de uma PU colocalizada 90 de uma imagem colocalizada 92, conforme indicado no nível de fatia (por exemplo, em um cabeçalho de fatia). Semelhante ao modo direto temporal em AVC, um vetor de movimento do candidato de TMVP pode ser submetido ao escalonamento de vetor de movimento, que é realizado para compensar as diferenças de distância, por exemplo, distâncias temporais entre imagens. Em relação ao escalonamento de vetor de movimento, um codificador de vídeo (como o codificador de vídeo 20 e/ou decodificador de vídeo 30) pode ser configurado para determinar inicialmente que o valor dos vetores de movimento é proporcional à distância das imagens no tempo de apresentação. Um vetor de movimento associa duas imagens, a imagem de referência e a imagem que contém o vetor de movimento (a saber, a imagem de contenção). Quando um vetor de movimento for utilizado para prever o outro vetor de movimento, a distância da imagem de contenção e a imagem de referência é calculada com base nos valos de Contagem de Ordem de Imagem (POC).[00136] Figure 5B illustrates the derivation of a TMVP candidate 84 for a current block 86 of a current image 88 from a co-located PU 90 of a co-located image 92, as indicated at the slice level (e.g., in a slice header). Similar to the temporal direct mode in AVC, a TMVP candidate motion vector can be subjected to motion vector scaling, which is performed to compensate for distance differences, e.g., temporal distances between images. In connection with motion vector scaling, a video encoder (such as video encoder 20 and/or video decoder 30) may be configured to initially determine that the value of the motion vectors is proportional to the distance of the images at the time of presentation. A motion vector associates two images, the reference image and the image containing the motion vector (namely, the containment image). When one motion vector is used to predict the other motion vector, the distance of the containment image and the reference image is calculated based on the Image Order Count (POC) values.
[00137] Para um vetor de movimento ser predito, tanto a imagem de contenção associada para o vetor de movimento quanto uma imagem de referência do vetor de movimento podem ser diferentes. Portanto, o codificador de vídeo pode calcular uma nova distância com base em valores de POC, e o codificador de vídeo pode escalonar o vetor de movimento com base nessas duas distâncias de POC. Para um candidato vizinho espacial, as imagens de contenção para os dois vetores de movimento são as mesmas, enquanto as imagens de referência são diferentes. Em HEVC, o escalonamento de vetor de movimento aplica tanto a TMVP quanto a AMVP para candidatos vizinhos espaciais e temporais.[00137] For a motion vector to be predicted, both the associated containment image for the motion vector and a reference image of the motion vector may be different. Therefore, the video encoder can calculate a new distance based on POC values, and the video encoder can scale the motion vector based on these two POC distances. For a spatial neighbor candidate, the containment images for the two motion vectors are the same, while the reference images are different. In HEVC, motion vector scaling applies both TMVP and AMVP to spatial and temporal neighboring candidates.
[00138] Em alguns exemplos, um codificador de vídeo pode ser configurado para determinar um ou mais candidatos de vetor de movimento artificiais. Por exemplo, se uma lista de candidatos de vetor de movimento não estiver completa, o codificador de vídeo pode gerar candidatos de vetor de movimento artificial e inserir os candidatos de vetor de movimento artificiais no fim da lista até a lista incluir um número predeterminado de entradas. No modo de mescla, existem dois tipos de candidatos de MV artificiais que incluem um candidato combinado derivado apenas para fatias B e um candidato zero. Em alguns casos, o zero candidato é usado apenas para AMVP se o tipo combinado não fornecer candidatos artificiais suficientes.[00138] In some examples, a video encoder may be configured to determine one or more artificial motion vector candidates. For example, if a list of motion vector candidates is not complete, the video encoder may generate artificial motion vector candidates and insert the artificial motion vector candidates at the end of the list until the list includes a predetermined number of entries. . In merge mode, there are two types of artificial MV candidates that include a combined candidate derived only for B-slices and a zero candidate. In some cases, candidate zero is only used for AMVP if the combined type does not provide enough artificial candidates.
[00139] Para cada par de candidatos que já estão na lista de candidatos e têm informações de movimento necessárias, os candidatos de vetor de movimento combinados bidirecionais são derivados por uma combinação do vetor de movimento do primeiro candidato que se refere a uma imagem na lista 0 e o vetor de movimento de um segundo candidato que se refere a uma imagem na lista 1.[00139] For each pair of candidates that are already in the candidate list and have required motion information, the bidirectional combined motion vector candidates are derived by a combination of the motion vector of the first candidate that refers to an image in the list 0 and the motion vector of a second candidate that refers to an image in list 1.
[00140] De acordo com os aspectos desta revelação, os candidatos de vetor de movimento, como o TMVP mostrado nas Figuras 5A e 5B, podem ser usados para derivar um vetor de movimento para um bloco. Por exemplo, o codificador de vídeo pode gerar uma lista de candidatos que inclui um TMVP determinado de acordo com o processo descrito acima. Neste exemplo, o codificador de vídeo pode usar o TMVP como um vetor de movimento inicial em um processo de derivação de informações de movimento (por exemplo, correspondência bilateral, correspondência de modelo ou similares). O codificador de vídeo pode aplicar o TMVP em um vetor de processo de derivação de movimento para identificar dados de referência. O codificador de vídeo pode selecionar o TMVP em casos em que o TMVP identifica dados de referência de correspondência próxima (por exemplo, conforme descrito em relação às Figuras 8 a 9 abaixo). O codificador de vídeo pode, em alguns casos, refinar adicionalmente o TMVP para determinar um vetor de movimento derivado com o uso do processo de derivação de informações de movimento.[00140] In accordance with aspects of this disclosure, motion vector candidates, such as the TMVP shown in Figures 5A and 5B, can be used to derive a motion vector for a block. For example, the video encoder may generate a candidate list that includes a TMVP determined in accordance with the process described above. In this example, the video encoder may use the TMVP as an initial motion vector in a process of deriving motion information (e.g., bilateral matching, template matching, or the like). The video encoder can apply TMVP to a motion derivation process vector to identify reference data. The video encoder may select the TMVP in cases where the TMVP identifies closely matched reference data (e.g., as described with respect to Figures 8 through 9 below). The video encoder may, in some cases, further refine the TMVP to determine a derived motion vector using the motion information derivation process.
[00141] Em alguns exemplos, o codificador de vídeo pode remover uma lista de candidatos que inclui candidatos de vetor de movimento (como aqueles descritos em relação às Figuras 4A a 5B). Por exemplo, em alguns casos, os candidatos de diferentes blocos podem ser iguais, o que diminui a eficiência de uma lista de candidatos de mescla/AMVP. O código de vídeo pode aplicar um processo de remoção para solucionar esse problema. O codificador de vídeo pode comparar um candidato contra os outros na lista de candidatos atual para evitar inserir um candidato idêntico. Para reduzir a complexidade, o codificador de vídeo pode apenas aplicar números limitados de processos de remoção ao invés de comparar cada potencial a todos os outros existentes.[00141] In some examples, the video encoder may remove a candidate list that includes motion vector candidates (such as those described with respect to Figures 4A to 5B). For example, in some cases, candidates from different blocks may be the same, which decreases the efficiency of a merge/AMVP candidate list. Video code may apply a removal process to resolve this issue. The video encoder can compare a candidate against others in the current candidate list to avoid inserting an identical candidate. To reduce complexity, the video encoder can only apply limited numbers of removal processes rather than comparing each potential to all existing ones.
[00142] A Figura 6 é um diagrama conceitual que ilustra um exemplo de estimativa de movimento unilateral (ME) em conversão ascendente de taxa de quadros (FRUC). Em particular, a Figura 6 ilustra um quadro atual 100, um quadro de referência 102 e um quadro interpolado 104. Em alguns casos, um decodificador de vídeo ou dispositivo de pós- processamento pode interpolar imagens com base em uma ou mais imagens de referência. O decodificador de vídeo ou dispositivo de pós-processamento pode interpolar imagens para converter de modo ascendente uma taxa de quadros original de um fluxo de bits codificado. Alternativamente, o decodificador de vídeo ou dispositivo de pós-processamento pode interpolar imagens para inserir uma ou mais imagens que foram puladas por um codificador de vídeo para codificar uma sequência de vídeo em uma taxa de quadros reduzida. Em todo caso, o decodificador de vídeo ou dispositivo de pós- processamento interpola quadros (como quadro interpolado 104) que não estão inclusos em um fluxo de bits codificado que foi recebido pelo decodificador de vídeo com o uso de imagens que foram decodificadas (como quadro atual 100 e quadro de referência 102). O decodificador de vídeo ou dispositivo de pós-processamento pode interpolar as imagens com o uso de qualquer uma dentre várias técnicas de interpolação, por exemplo, com o uso de interpolação de quadro compensada por movimento, repetição de quadro, ou cálculo de média de quadros.[00142] Figure 6 is a conceptual diagram illustrating an example of one-way motion estimation (ME) in frame rate upconversion (FRUC). In particular, Figure 6 illustrates a current frame 100, a reference frame 102, and an interpolated frame 104. In some cases, a video decoder or post-processing device may interpolate images based on one or more reference images. The video decoder or post-processing device may interpolate images to upconvert an original frame rate from an encoded bit stream. Alternatively, the video decoder or post-processing device may interpolate images to insert one or more images that have been skipped by a video encoder to encode a video sequence at a reduced frame rate. In any case, the video decoder or post-processing device interpolates frames (such as interpolated frame 104) that are not included in an encoded bit stream that was received by the video decoder using images that have been decoded (such as frame current 100 and reference frame 102). The video decoder or post-processing device may interpolate the images using any of several interpolation techniques, for example, using motion-compensated frame interpolation, frame repetition, or frame averaging. .
[00143] As técnicas de interpolação de quadro notadas acima são tipicamente implantadas pós-ciclo. Por exemplo, um decodificador de vídeo tipicamente recebe e decodifica um fluxo de bits codificado para gerar uma representação reconstruída de uma sequência de vídeo que inclui o quadro atual 100 e o quadro de referência 102. Após o ciclo de decodificação, o decodificador de vídeo ou outro dispositivo de pós-processamento pode interpolar as imagens para ser incluso com a representação reconstruída que inclui o quadro interpolado 104. Em alguns casos, o processo de interpolar a imagem pode ser referido como conversão ascendente de taxa de quadros (FRUC), devido ao fato de que a sequência resultante das imagens inclui (interpoladas) imagens adicionais que não estavam inclusas no fluxo de bits codificado.[00143] The frame interpolation techniques noted above are typically implemented post-cycle. For example, a video decoder typically receives and decodes an encoded bitstream to generate a reconstructed representation of a video sequence that includes current frame 100 and reference frame 102. After the decoding cycle, the video decoder or Another post-processing device may interpolate the images to be included with the reconstructed representation that includes the interpolated frame 104. In some cases, the process of interpolating the image may be referred to as frame rate upconversion (FRUC), due to the fact that the resulting sequence of images includes (interpolated) additional images that were not included in the encoded bit stream.
[00144] Consequentemente, a tecnologia de FRUC pode ser usada para gerar vídeos de taxa de quadros alta com base em vídeos de taxa de quadros baixa. FRUC foi usada na indústria de visores. Os exemplos incluem H. Liu, R. Xiong, D. Zhao, S. Ma, W. Gao, “Multiple Hypotheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolations”, IEEE transactions on circuits and systems for video technology, vol. 22, No. 8, agosto de 2012; W. H. Lee, K. Choi, J. B. Ra, “Frame rate up conversion based on variational image fusion”, IEEE transactions on image processing, vol. 23, No. 1, janeiro de 2014; e U. S. Kim, M. H. Sunwoo, “New frame rate up-conversion algorithms with low computational complexity”, IEEE transactions on circuits and systems for video technology, vol. 24, no 3, março de 2014.[00144] Consequently, FRUC technology can be used to generate high frame rate videos based on low frame rate videos. FRUC was used in the display industry. Examples include H. Liu, R. Xiong, D. Zhao, S. Ma, W. Gao, “Multiple Hypotheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolations”, IEEE transactions on circuits and systems for video technology, vol. 22, No. 8, August 2012; W. H. Lee, K. Choi, J. B. Ra, “Frame rate up conversion based on variational image fusion,” IEEE transactions on image processing, vol. 23, No. 1, January 2014; and U. S. Kim, M. H. Sunwoo, “New frame rate up-conversion algorithms with low computational complexity,” IEEE transactions on circuits and systems for video technology, vol. 24, no 3, March 2014.
[00145] Os algoritmos de FRUC podem ser divididos em dois tipos. Um tipo de métodos interpola quadros intermediários por cálculo de média ou repetição de quadro simples. Entretanto, esse método fornece resultados inadequados em uma imagem que contém muito movimento. O outro tipo de método, chamado de FRUC compensada em movimento (MC- FRUC), considera o movimento de objeto quando o mesmo gera quadros intermediários e consiste em duas etapas: estimativa de movimento (ME) e interpolação compensada em movimento (MCI). A ME gera vetores de movimento (MVs), que representam movimento de objeto com o uso de vetores, considerando que a MCI usa MVs para gerar quadros intermediários.[00145] FRUC algorithms can be divided into two types. One type of methods interpolates intermediate frames by averaging or simple frame repetition. However, this method provides inadequate results on an image that contains a lot of motion. The other type of method, called motion-compensated FRUC (MC-FRUC), considers object motion when it generates intermediate frames and consists of two steps: motion estimation (ME) and motion-compensated interpolation (MCI). ME generates motion vectors (MVs), which represent object motion using vectors, whereas MCI uses MVs to generate intermediate frames.
[00146] O algoritmo de correspondência de bloco (BMA) é amplamente usado para ME em MC-FRUC como é simples de implantar. BMA divide uma imagem em blocos e detecta o movimento daqueles blocos, por exemplo, para determinar se os blocos correspondem. Dois tipos de ME são primeiramente usados para BMA: ME unilateral e ME bilateral.[00146] The block matching algorithm (BMA) is widely used for ME in MC-FRUC as it is simple to deploy. BMA divides an image into blocks and detects the movement of those blocks, for example, to determine whether the blocks match. Two types of ME are primarily used for BMA: unilateral ME and bilateral ME.
[00147] Conforme mostrado na Figura 6, a ME unilateral obtém MVs buscando-se a melhor correspondência de bloco do quadro de referência 102 do quadro atual 100. Então, o bloco na trajetória de movimento no quadro interpolado pode estar localizado de modo que o MV seja alcançado. Conforme mostrado na Figura 6, três blocos que incluem 106 A, 106B e 106C do quadro atual 100, do quadro de referência 102 e do quadro interpolado 104, respectivamente, estão envolvidos seguindo a trajetória de movimento. Embora o bloco 106 A no quadro atual 100 pertença a um bloco codificado, o melhor bloco de correspondência 106B no quadro de referência 102 pode pertencer não completamente a um bloco codificado, e nem o bloco 106C no quadro interpolado 104. Consequentemente, as regiões sobrepostas dos blocos e regiões não preenchidas (furos) podem ocorrer no quadro interpolado.[00147] As shown in Figure 6, the unilateral ME obtains MVs by seeking the best block match of the reference frame 102 of the current frame 100. Then, the block in the motion path in the interpolated frame can be located so that the MV is achieved. As shown in Figure 6, three blocks including 106A, 106B and 106C of the current frame 100, the reference frame 102 and the interpolated frame 104, respectively, are involved following the motion trajectory. Although the block 106A in the current frame 100 belongs to a coded block, the best matching block 106B in the reference frame 102 may not completely belong to a coded block, and neither does the block 106C in the interpolated frame 104. Consequently, the overlapping regions of blocks and unfilled regions (holes) may occur in the interpolated frame.
[00148] Para manipular sobreposições, algoritmos de FRUC simples meramente envolvem o cálculo de média e sobrescrever os pixels sobrepostos. Ademais, os furos são cobertos pelos valores de pixel de uma referência ou um quadro atual. Entretanto, esses algoritmos resultam nos artefatos de blocagem e embaçamento. Por conseguinte, a segmentação de campo de movimento, extrapolação consecutiva com o uso da transformada Hartley distinta, e retoque de imagem são propostos para manipular furos e sobreposições sem aumentar os artefatos de blocagem e embaçamento.[00148] To handle overlaps, simple FRUC algorithms merely involve averaging and overwriting the overlapping pixels. Furthermore, the holes are covered by the pixel values of a reference or a current frame. However, these algorithms result in blocking and blurring artifacts. Therefore, motion field segmentation, consecutive extrapolation using the distinct Hartley transform, and image retouching are proposed to manipulate holes and overlaps without increasing blocking and blurring artifacts.
[00149] De acordo com os aspectos desta revelação, um codificador de vídeo (como codificador de vídeo 20 e/ou decodificador de vídeo 30) pode gerar quadro interpolado 104 no ciclo de codificação ou decodificação com o uso da técnica de correspondência unilateral mostrada na Figura 6. Por exemplo, o codificador de vídeo pode usar FRUC de nível de imagem para interpolar quadro interpolado 104 como um preditor da imagem atual, com o uso da matriz de pixel reconstruída. Em alguns exemplos, essa imagem interpolada pode ser considerada como uma imagem de referência ou a reconstrução do quadro atual 100. Em outros exemplos, o codificador de vídeo pode estabelecer a imagem atual igual à imagem interpolada. Essa imagem pode ser marcada como uma imagem descartável e/ou imagem de não referência por elementos de sintaxe ou processos de decodificação.[00149] In accordance with aspects of this disclosure, a video encoder (such as video encoder 20 and/or video decoder 30) may generate interpolated frame 104 in the encoding or decoding cycle using the one-way matching technique shown in Figure 6. For example, the video encoder may use image level FRUC to interpolate interpolated frame 104 as a predictor of the current image, using the reconstructed pixel matrix. In some examples, this interpolated image may be considered as a reference image or reconstruction of the current frame 100. In other examples, the video encoder may set the current image equal to the interpolated image. This image may be marked as a throwaway image and/or non-reference image by syntax elements or decoding processes.
[00150] Em alguns exemplos, o codificador de vídeo pode interpolar uma imagem atual de modo que um modo de FRUC seja o único modo permitido, em que o modo de FRUC indica a técnica de correspondência unilateral mostrada na Figura 6 ou qualquer outra derivação de informações de movimento ou técnicas de interpolação descritas no presente documento. Por conseguinte, ao invés de uma sinalização de estrutura de CU com base em árvore quadrática, todos os blocos podem ter o mesmo tamanho predefinido ou sinalizado. Em alguns casos, apenas um subconjunto de modos de codificação de Cu válidos, como pular regular, mescla regular, modo de FRUC, e intra modo pode ser permitido. Alternativa ou adicionalmente, um modo de preenchimento de furo para FRUC pode ser permitido nessa imagem ou fatia.[00150] In some examples, the video encoder may interpolate a current image such that a FRUC mode is the only allowed mode, wherein the FRUC mode indicates the one-way matching technique shown in Figure 6 or any other derivation of motion information or interpolation techniques described in this document. Therefore, instead of a quadratic tree-based CU structure signaling, all blocks can have the same predefined or signaled size. In some cases, only a subset of valid Cu encoding modes, such as regular skip, regular merge, FRUC mode, and intra mode may be allowed. Alternatively or additionally, a hole fill mode for FRUC may be enabled on this image or slice.
[00151] De acordo com os aspectos desta revelação, uma mensagem de SEI pode ser introduzida para indicar quais imagens ou subsequência de imagens são codificadas pela FRUC de nível de imagem. Essas imagens podem ser descartadas sem impactar a qualidade das outras imagens. Essa mensagem de SEI pode indicar (ou indicar adicionalmente) qual nível (ou níveis) temporal contém imagens codificadas de FRUC, ou contém apenas imagens codificadas de FRUC. Essas informações em mensagem de SEI também podem estar presentes como outros locais da sintaxe de alto nível, como PPS, SPS e VPS.[00151] In accordance with aspects of this disclosure, an SEI message may be introduced to indicate which images or subsequence of images are encoded by the image level FRUC. These images can be discarded without impacting the quality of other images. This SEI message may indicate (or additionally indicate) which temporal level (or levels) contains FRUC encoded images, or contains only FRUC encoded images. This information in the SEI message may also be present in other high-level syntax locations, such as PPS, SPS, and VPS.
[00152] Em alguns exemplos, um codificador de vídeo pode codificar uma porção de uma imagem e interpolar os dados de vídeo restantes. Por exemplo, o codificador de vídeo pode codificar uma chamada “dica” para a conversão ascendente de taxa de quadros de lado de decodificador, o que pode permitir que decodificadores ricos em recurso ou inteligentes gerem opcionalmente os quadros de FRUC. Por exemplo, várias regiões chave (como regiões de retângulo) podem ser sinalizadas como uma dica para esses quadros de FRUC. Quando a dica for recebida e opcionalmente processada, o método de FRUC especificado como parte do decodificador pode ser usado primeiramente pelas regiões que não são regiões chave, enquanto que as regiões chave devem ser processadas adicionalmente pelos meios que podem não ser especificados pelo decodificador, como métodos de preenchimento de furo.[00152] In some examples, a video encoder may encode a portion of an image and interpolate the remaining video data. For example, the video encoder may encode a so-called “hint” for decoder-side frame rate upconversion, which may allow feature-rich or intelligent decoders to optionally generate the FRUC frames. For example, several key regions (such as rectangle regions) can be flagged as a hint for these FRUC frames. When the hint is received and optionally processed, the FRUC method specified as part of the decoder may be used primarily by regions that are not key regions, while the key regions must be further processed by means that may not be specified by the decoder, such as hole filling methods.
[00153] Em relação ao preenchimento de furo, de acordo com os aspectos desta revelação, um codificador de vídeo pode implantar técnicas de preenchimento de furo com base em bloco. Por exemplo, uma técnica de preenchimento de furo é usar interblocos espacialmente vizinhos para prever o intra bloco atual na mesma CTU. Por exemplo, o codificador de vídeo pode codificar/decodificar uma CTU duas vezes. A primeira codificação/decodificação é conforme o normal. Na segunda rodada, apenas intra blocos são codificados/decodificados e sobrescritos. Para um intra bloco, todos os seus interblocos espacialmente vizinhos na mesma CTU, que incluem aquelas à direta inferior do bloco atual, são marcadas como disponíveis para intra predição. O método de preenchimento de furo também pode ser fatia, recorte, imagem ou qualquer outro nível. Outro método de preenchimento de furo pode usar uma técnica de retoque de imagem. Outras técnicas de preenchimento de furo também podem ser aplicáveis.[00153] With respect to hole filling, in accordance with aspects of this disclosure, a video encoder can implement block-based hole filling techniques. For example, one hole filling technique is to use spatially neighboring interblocks to predict the current intrablock in the same CTU. For example, the video encoder may encode/decode a CTU twice. The first encoding/decoding is as normal. In the second round, only intra blocks are encoded/decoded and overwritten. For an intra block, all its spatially neighboring interblocks in the same CTU, which include those to the lower right of the current block, are marked as available for intra prediction. The hole filling method can also be slice, cut, image or any other level. Another hole filling method may use an image retouching technique. Other hole filling techniques may also be applicable.
[00154] A Figura 7 é um diagrama conceitual que ilustra um exemplo de estimativa de movimento bilateral (ME) em FRUC. Em particular, a Figura 7 ilustra um bloco interpolado 108 de um quadro interpolado 110 que é interpolado a partir de um bloco atual 112 de um quadro atual 114 e um bloco de referência 116 de um quadro de referência 118. Conforme mostrado na Figura 7, a ME bilateral é outra solução (em MC-FRUC) que pode ser usada para evitar os problemas causados por sobreposições e furos mostrados na Figura 6. A ME bilateral obtém MVs passando através do bloco interpolado 108 com o uso da simetria temporal entre os blocos 112 e 116 de quadro atual 114 e quadro de referência 118, respectivamente. Como um resultado, não gera sobreposições e furos. Visto que se supõe que o bloco atual é um bloco que está sendo processado, em uma determinada ordem, por exemplo, como no caso de codificação de vídeo, uma sequência desses blocos cobriria a imagem intermediária total sem sobreposição. Por exemplo, no caso de codificação de vídeo, os blocos podem ser processados na ordem de decodificação.[00154] Figure 7 is a conceptual diagram illustrating an example of bilateral motion estimation (ME) in FRUC. In particular, Figure 7 illustrates an interpolated block 108 of an interpolated frame 110 that is interpolated from a current block 112 of a current frame 114 and a reference block 116 of a reference frame 118. As shown in Figure 7, bilateral ME is another solution (in MC-FRUC) that can be used to avoid the problems caused by overlaps and holes shown in Figure 6. Bilateral ME obtains MVs passing through the interpolated block 108 using temporal symmetry between blocks 112 and 116 of current frame 114 and reference frame 118, respectively. As a result, it does not generate overlaps and holes. Since the current block is assumed to be a block being processed, in a certain order, for example, as in the case of video encoding, a sequence of these blocks would cover the total intermediate image without overlap. For example, in the case of video encoding, blocks can be processed in decoding order.
[00155] De acordo com os aspectos desta revelação, a estimativa de movimento bilateral mostrada no exemplo da Figura 7 pode ser aproveitada para derivar informações de movimento. Por exemplo, conforme descrito em maiores detalhes em relação à Figura 9 abaixo, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode aplicar a correspondência bilateral como um modo de derivação de informações de movimento para derivar informações de movimento durante a codificação. Na correspondência bilateral, o codificador de vídeo pode realizar uma busca de movimento por um primeiro conjunto de dados de referência em uma primeira imagem de referência que corresponde a um segundo conjunto de dados de referência em uma segunda imagem de referência.[00155] In accordance with aspects of this disclosure, the bilateral motion estimation shown in the example of Figure 7 can be leveraged to derive motion information. For example, as described in greater detail with respect to Figure 9 below, a video encoder (such as video encoder 20 or video decoder 30) may apply bilateral correspondence as a mode of deriving motion information to derive motion information. during coding. In bilateral matching, the video encoder may perform a motion search for a first set of reference data in a first reference image that corresponds to a second set of reference data in a second reference image.
[00156] De acordo com outros aspectos desta revelação, um codificador de vídeo (como codificador de vídeo 20 e/ou decodificador de vídeo 30) pode gerar o quadro interpolado no ciclo de codificação ou decodificação com o uso da técnica de correspondência bilateral mostrada na Figura 7. Por exemplo, o codificador de vídeo pode usar FRUC de nível de imagem para interpolar a imagem interpolada como um preditor da imagem atual, com o uso da matriz de pixel reconstruída. Em alguns exemplos, essa imagem interpolada pode ser considerada como uma imagem de referência ou a reconstrução da imagem atual. Em outros exemplos, o codificador de vídeo pode estabelecer a imagem atual igual à imagem interpolada. Essa imagem pode ser marcada como uma imagem descartável e/ou imagem de não referência por elementos de sintaxe ou processos de decodificação.[00156] According to other aspects of this disclosure, a video encoder (such as video encoder 20 and/or video decoder 30) may generate the interpolated frame in the encoding or decoding cycle using the bilateral matching technique shown in Figure 7. For example, the video encoder can use image-level FRUC to interpolate the interpolated image as a predictor of the current image, using the reconstructed pixel matrix. In some examples, this interpolated image can be considered as a reference image or a reconstruction of the current image. In other examples, the video encoder may set the current image equal to the interpolated image. This image may be marked as a throwaway image and/or non-reference image by syntax elements or decoding processes.
[00157] A Figura 8 é um diagrama conceitual que ilustra um exemplo de derivação de vetor de movimento de lado de decodificador (DMVD) com base em correspondência de modelo. Com os codecs de vídeo avançados, a porcentagem de bit das informações de movimento em fluxo de bits se torna maior e maior. Em alguns casos, a DMVD pode reduzir o custo de bits das informações de movimento. A DMVD com base em correspondência de modelo pode exibir um aprimoramento de eficiência de codificação , conforme descrito, por exemplo, em S. Kamp, M. Wien, “Decoder-side motion vector derivation for block-based video coding”, IEEE transactions on circuits and systems for video technology, vol. 22, no 12, dezembro de 2012.[00157] Figure 8 is a conceptual diagram illustrating an example of decoder side motion vector derivation (DMVD) based on template matching. With advanced video codecs, the bit percentage of bitstream motion information becomes bigger and bigger. In some cases, DMVD can reduce the bit cost of motion information. Template matching-based DMVD can exhibit a coding efficiency improvement, as described, for example, in S. Kamp, M. Wien, “Decoder-side motion vector derivation for block-based video coding”, IEEE transactions on circuits and systems for video technology, vol. 22, no 12, December 2012.
[00158] No exemplo da Figura 8, uma imagem atual 120 inclui um alvo de predição 122 (por exemplo, um bloco atualmente sendo codificado) e um modelo 124. As imagens de referência 126 incluem um modelo colocalizado 128, uma melhor correspondência 130 e um vetor de deslocamento 132. Um codificador de vídeo (como codificador de vídeo 20 e/ou decodificador de vídeo 30) pode usar modelo 124 para buscar por uma melhor correspondência para alvo de predição 122 (por exemplo, ao invés de usar o próprio alvo de predição 122, que está ainda a ser codificado). Por exemplo, o codificador de vídeo pode realizar uma busca de movimento para identificar um primeiro conjunto de dados de referência (por exemplo, melhor correspondência 130) que corresponde a um segundo conjunto de dados de referência fora do alvo de predição 122 (por exemplo, modelo 124). Conforme notado acima, a correspondência pode ser determinada com base em uma quantidade de semelhança entre dados de referência, e pode ser referida no presente documento como determinando uma “correspondência” ou “melhor correspondência”.[00158] In the example of Figure 8, a current image 120 includes a prediction target 122 (e.g., a block currently being encoded) and a template 124. Reference images 126 include a co-located template 128, a best match 130, and a displacement vector 132. A video encoder (such as video encoder 20 and/or video decoder 30) may use model 124 to search for a best match for prediction target 122 (e.g., instead of using the target itself prediction code 122, which is still being coded). For example, the video encoder may perform a motion search to identify a first set of reference data (e.g., best match 130) that corresponds to a second set of reference data outside the prediction target 122 (e.g., model 124). As noted above, match may be determined based on an amount of similarity between reference data, and may be referred to herein as determining a “match” or “best match”.
[00159] No exemplo mostrado, o codificador de vídeo pode identificar o modelo colocalizado 128 nas imagens de referência 126. O codificador de vídeo pode, então, buscar pela melhor correspondência 130, que inclui valores de pixel que são semelhantes ao modelo 124. O codificador de vídeo pode determinar o vetor de deslocamento 132 com base no deslocamento do modelo colocalizado 128 e a melhor correspondência 130 em imagens de referência 126.[00159] In the example shown, the video encoder can identify the co-located model 128 in the reference images 126. The video encoder can then search for the best match 130, which includes pixel values that are similar to the model 124. video encoder may determine the displacement vector 132 based on the displacement of the co-located model 128 and the best match 130 in reference images 126.
[00160] Supondo que o modelo 124 e o alvo de predição 122 são provenientes do mesmo objeto, o vetor de movimento do modelo pode ser usado como o vetor de movimento do alvo de predição. Por conseguinte, no exemplo da Figura 8, o codificador de vídeo pode aplicar o vetor de deslocamento 132 para o alvo de predição 122. Visto que a correspondência de modelo é conduzida tanto em um codificador de vídeo quanto um decodificador de vídeo, o vetor de movimento pode ser derivado no lado de decodificador para evitar o custo de sinalização.[00160] Assuming that the model 124 and the prediction target 122 come from the same object, the motion vector of the model can be used as the motion vector of the prediction target. Therefore, in the example of Figure 8, the video encoder may apply the displacement vector 132 to the prediction target 122. Since template matching is conducted in both a video encoder and a video decoder, the displacement vector Motion can be derived on the decoder side to avoid signaling cost.
[00161] De acordo com os aspectos desta revelação, o codificador de vídeo pode aplicar a correspondência de modelo como um modo de derivação de informações de movimento. Por exemplo, o codificador de vídeo pode aplicar a correspondência de modelo para derivar informações de movimento de um bloco atual localizando-se uma melhor correspondência entre o modelo 124 da imagem atual e dados de referência correspondentes em imagens de referência 126. Embora o exemplo da Figura 8 ilustre o modelo 124 como um bloco de dados de vídeo em formato de L, deve ser compreendido que outros modelos podem ser usados. Por exemplo, o codificador de vídeo pode usar múltiplos blocos como um modelo, por exemplo, um ou mais blocos posicionados à esquerda do alvo de predição 122 e um ou mais blocos posicionados acima do alvo de predição 122.[00161] In accordance with aspects of this disclosure, the video encoder may apply template matching as a mode of deriving motion information. For example, the video encoder may apply template matching to derive motion information from a current block by finding a best match between the template 124 of the current image and corresponding reference data in reference images 126. Although the example of Figure 8 illustrates model 124 as an L-shaped block of video data, it should be understood that other models can be used. For example, the video encoder may use multiple blocks as a template, e.g., one or more blocks positioned to the left of the prediction target 122 and one or more blocks positioned above the prediction target 122.
[00162] De acordo com os aspectos desta revelação, o codificador de vídeo pode aplicar as técnicas de correspondência de modelo mostradas na Figura 8 com o uso de um ou mais vetores de movimento a partir de uma lista de candidatos de vetores de movimento. Por exemplo, o codificador de vídeo pode ser configurado para determinar um ou mais vetores de movimento candidatos com o uso de qualquer combinação das técnicas descritas no presente documento (por exemplo, candidatos de modo de mescla, candidatos de AMVP, um TMVP ou similares). O codificador de vídeo pode, então, ser configurado para aplicar um ou mais dos vetores de movimento candidatos ao modelo 124 para localizar o modelo colocalizado 128 (nesse exemplo, a localização do modelo colocalizado 128 é ditada pelo um ou mais vetores de movimento candidatos e não necessariamente estritamente colocalizado). O codificador de vídeo pode ser configurado para determinar quais dos vetores de movimento candidatos resultam em uma melhor correspondência entre o modelo 124 e o modelo colocalizado 128.[00162] In accordance with aspects of this disclosure, the video encoder may apply the template matching techniques shown in Figure 8 with the use of one or more motion vectors from a list of motion vector candidates. For example, the video encoder may be configured to determine one or more candidate motion vectors using any combination of the techniques described herein (e.g., blend mode candidates, AMVP candidates, a TMVP, or the like). . The video encoder can then be configured to apply one or more of the candidate motion vectors to model 124 to locate the co-located model 128 (in this example, the location of the co-located model 128 is dictated by the one or more candidate motion vectors and not necessarily strictly co-located). The video encoder may be configured to determine which of the candidate motion vectors result in a better match between the model 124 and the co-located model 128.
[00163] De acordo com os aspectos desta revelação, o codificador de vídeo pode, então, ser configurado para refinar o vetor de movimento candidato para derivar informações de movimento para o alvo de predição 122. Por exemplo, o codificador de vídeo pode buscar por uma melhor correspondência para o modelo 124 em uma região das imagens de referência 126 identificada pelo vetor de movimento candidato. Mediante a determinação de uma melhor correspondência, o codificador de vídeo pode determinar um deslocamento entre o modelo 124 e a correspondência com base em determinação. O codificador de vídeo pode designar o deslocamento como um vetor de movimento derivado para o alvo de predição 122.[00163] In accordance with aspects of this disclosure, the video encoder may then be configured to refine the candidate motion vector to derive motion information for the prediction target 122. For example, the video encoder may search for a best match for the model 124 in a region of the reference images 126 identified by the candidate motion vector. Upon determining a best match, the video encoder may determine an offset between the template 124 and the determination-based match. The video encoder may assign the displacement as a derived motion vector to the prediction target 122.
[00164] A Figura 9 é um diagrama conceitual que ilustra um exemplo de derivação de vetor de movimento bidirecional em DMVD. Outra categoria de DMVD é a derivação de MV bidirecional com base em espelho, conforme descrito, por exemplo, em Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, “Decoder-side Motion Estimation and Wiener filter for F£EVC”, Visual communications and Image Processing (VCIP), 2013. O conceito de derivação de vetor de movimento bidirecional em DMVD pode ser semelhante à ME bilateral em FRUC. Por exemplo, a derivação de MV com base em espelho pode ser aplicada pela estimativa de movimento centrossimétrica ao redor de centros de busca em precisão de amostra fracionária.[00164] Figure 9 is a conceptual diagram illustrating an example of bidirectional motion vector derivation in DMVD. Another category of DMVD is mirror-based bidirectional MV derivation, as described, for example, in Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, “Decoder-side Motion Estimation and Wiener filter for F£EVC”, Visual communications and Image Processing (VCIP), 2013. The concept of bidirectional motion vector derivation in DMVD may be similar to bilateral ME in FRUC. For example, mirror-based MV derivation can be applied by estimating centrosymmetric motion around search centers at fractional sample precision.
[00165] O exemplo da Figura 9 inclui a imagem atual 140 que tem o bloco atual 142 (em que o bloco é atualmente codificado), um primeiro vetor de movimento candidato PMV0 que identifica um primeiro bloco de modelo 144 de uma primeira imagem de referência 146 (ref L0), e um segundo vetor de movimento candidato PMV1 que identifica um segundo bloco de modelo 148 de uma segunda imagem de referência 150. O codificador de vídeo pode aplicar dMV como um desvio para localizar um primeiro bloco de referência 152 na janela de busca 154 da primeira imagem de referência 146 e para localizar um segundo bloco de referência 156 na janela de busca 158 da segunda imagem de referência 150.[00165] The example of Figure 9 includes the current image 140 that has the current block 142 (in which the block is currently encoded), a first candidate motion vector PMV0 that identifies a first model block 144 of a first reference image 146 (ref L0), and a second candidate motion vector PMV1 that identifies a second template block 148 of a second reference image 150. The video encoder may apply dMV as a bias to locate a first reference block 152 in the window search window 154 of the first reference image 146 and to locate a second reference block 156 in the search window 158 of the second reference image 150.
[00166] Por exemplo, o codificador de vídeo pode adicionar dMV a PMV0 e subtrair a dMV da PMV1 para gerar um par de MV, MV0 e MV1. O codificador de vídeo pode verificar todos os valores de dMV dentro da janela de busca 154 e 158 para determinar qual valor de dMV resulta na melhor correspondência entre o primeiro bloco de referência 152 (por exemplo, um primeiro conjunto de dados de referência) de ref L0 e o segundo bloco de referência 156 (por exemplo, um segundo conjunto de dados de referência) de ref L1. Em alguns exemplos, o codificador de vídeo pode determinar a melhor correspondência com base na Soma da Diferença Absoluta (SAD). Em outros exemplos, o codificador de vídeo pode usar outra métrica para determinar a melhor correspondência. O tamanho e localização das janelas de busca 154 e 158 podem ser predefinidas ou podem ser sinalizadas em um fluxo de bits.[00166] For example, the video encoder may add dMV to PMV0 and subtract dMV from PMV1 to generate a pair of MV, MV0 and MV1. The video encoder may check all dMV values within the search window 154 and 158 to determine which dMV value results in the best match between the first reference block 152 (e.g., a first reference data set) of ref. L0 and the second reference block 156 (e.g., a second set of reference data) of ref L1. In some examples, the video encoder may determine the best match based on the Sum of Absolute Difference (SAD). In other examples, the video encoder may use another metric to determine the best match. The size and location of search windows 154 and 158 may be predefined or may be signaled in a bit stream.
[00167] O codificador de vídeo pode selecionar o par de MV com a SAD mínima como a saída da estimativa de movimento centrossimétrica. Visto que essa técnica usa uma referência futura (referência em uma posição temporal posterior em relação ao quadro atual) e uma referência anterior (referência em uma posição temporal anterior em relação ao quadro atual) para a correspondência de SAD, não pode ser aplicada ao quadro P ou quadros B de baixo atraso em que apenas a última referência está disponível.[00167] The video encoder may select the MV pair with the minimum SAD as the output of the centrosymmetric motion estimation. Since this technique uses a future reference (reference at a later temporal position relative to the current frame) and a back reference (reference at an earlier temporal position relative to the current frame) for SAD matching, it cannot be applied to the current frame. Low delay P or B frames where only the last reference is available.
[00168] De acordo com os aspectos desta revelação, o codificador de vídeo pode aplicar as técnicas de derivação de vetor de movimento bidirecional como um modo de derivação de informações de movimento. Em alguns exemplos, o codificador de vídeo pode aplicar as técnicas mostradas na Figura 9 com o uso de um ou mais vetores de movimento a partir de uma lista de candidatos de vetores de movimento. Por exemplo, o codificador de vídeo pode ser configurado para determinar um ou mais vetores de movimento candidatos com o uso de qualquer combinação das técnicas descritas no presente documento (por exemplo, candidatos de modo de mescla, candidatos de AMVP, um TMVP ou similares). O codificador de vídeo pode, então, ser configurado para aplicar um ou mais dos vetores de movimento candidatos como PMV0 e/ou PMVl para localizar o primeiro bloco de modelo 144 e segundo bloco de modelo 148. O codificador de vídeo pode ser configurado para determinar qual dos vetores de movimento candidatos resulta em uma melhor correspondência entre o primeiro bloco de modelo 144 e o segundo bloco de modelo 148.[00168] In accordance with aspects of this disclosure, the video encoder may apply bidirectional motion vector derivation techniques as a mode of deriving motion information. In some examples, the video encoder may apply the techniques shown in Figure 9 using one or more motion vectors from a list of motion vector candidates. For example, the video encoder may be configured to determine one or more candidate motion vectors using any combination of the techniques described herein (e.g., blend mode candidates, AMVP candidates, a TMVP, or the like). . The video encoder may then be configured to apply one or more of the candidate motion vectors as PMV0 and/or PMVl to locate the first model block 144 and second model block 148. The video encoder may be configured to determine which of the candidate motion vectors results in a better match between the first model block 144 and the second model block 148.
[00169] De acordo com os aspectos desta revelação, o codificador de vídeo pode, então, ser configurado para refinar o vetor de movimento candidato para derivar informações de movimento para o bloco atual 142. Por exemplo, o codificador de vídeo pode buscar por uma melhor correspondência aplicando-se uma variedade de valores de dMV, do modo descrito acima. Desta forma, o codificador de vídeo pode derivar o par de MV MV0 e MV1.[00169] In accordance with aspects of this disclosure, the video encoder may then be configured to refine the candidate motion vector to derive motion information for the current block 142. For example, the video encoder may search for a best match by applying a range of dMV values as described above. In this way, the video encoder can derive the MV pair MV0 and MV1.
[00170] A Figura 11 é um diagrama conceitual que ilustra derivação de vetor de movimento com base em correspondência bilateral estendida. Uma desvantagem potencial da derivação de MV bidirecional com base em espelho (por exemplo, conforme mostrado na Figura 10) é que não funciona quando duas referências da imagem atual são ambas anteriores ou ambas posteriores em relação à imagem atual. As técnicas de correspondência bilateral estendida descrita no presente documento podem, em alguns casos, superar a desvantagem que em todas as imagens de referência da imagem atual estão no mesmo lado (na ordem de exibição) como a imagem atual.[00170] Figure 11 is a conceptual diagram illustrating motion vector derivation based on extended bilateral correspondence. A potential disadvantage of mirror-based bidirectional MV derivation (e.g., as shown in Figure 10) is that it does not work when two references of the current image are both earlier or both later than the current image. The extended bilateral matching techniques described in this document can, in some cases, overcome the disadvantage that all reference images of the current image are on the same side (in display order) as the current image.
[00171] O exemplo da Figura 11 inclui uma imagem atual 160 que inclui um bloco atual 162, uma primeira imagem de referência (Ref0) 164 que inclui um primeiro bloco de referência 166 e uma segunda imagem de referência (Ref1) 168 que inclui um segundo bloco de referência 170. Conforme mostrado na Figura 11, a primeira imagem de referência (Ref0) 164 e a segunda imagem de referência (Ref1) 168 estão ambas localizadas antes da imagem atual na direção temporal. Supondo que o primeiro bloco de referência 166, o segundo bloco de referência 170 e o bloco atual 162 estão ao longo da mesma trajetória de movimento, a razão entre MV0 e MV1 deverá ser igual à razão entre a distância temporal TDO e TD1. Em outras palavras, dadas as duas referências Ref0 e Ref1 com a distância temporal TDO e TD1 para a imagem atual, para qualquer MV0 em Ref0, MV1 em Ref1 podem ser determinados escalonando MV0.[00171] The example of Figure 11 includes a current image 160 that includes a current block 162, a first reference image (Ref0) 164 that includes a first reference block 166, and a second reference image (Ref1) 168 that includes a second reference block 170. As shown in Figure 11, the first reference image (Ref0) 164 and the second reference image (Ref1) 168 are both located before the current image in the temporal direction. Assuming that the first reference block 166, the second reference block 170 and the current block 162 are along the same movement path, the ratio between MV0 and MV1 should be equal to the ratio between the temporal distance TDO and TD1. In other words, given the two references Ref0 and Ref1 with the temporal distance TDO and TD1 for the current image, for any MV0 in Ref0, MV1 in Ref1 can be determined by scaling MV0.
[00172] O codificador de vídeo pode selecionar o par de MV0 e MV1 final como o par que minimiza o custo de correspondência entre o bloco par apontado por MV0 e MV1 (por exemplo, conforme descrito acima em relação à Figura 10). Teoricamente, o bloco atual 162 pode ser considerado como um bloco extrapolado com base em primeiro bloco de referência 166 e segundo bloco de referência 170. Deve ser notado que a correspondência bilateral estendida também funciona no caso bidirecional normal em que a imagem atual está temporariamente entre as duas referências. Nesse caso, o bloco atual 162 pode ser considerado como um bloco interpolado com base em primeiro bloco de referência 166 e segundo bloco de referência 170. Ademais, as técnicas de correspondência bilateral descritas no presente documento não exigem “relação de espelho” entre MV0 e MV1, até mesmo no caso bidirecional. A suposição de correspondência bilateral é que a razão entre MV0 e MV1 está na proporção à razão entre a distância temporal a partir de Ref0 para a imagem atual e aquela a partir de Ref1 para a imagem atual.[00172] The video encoder may select the final pair of MV0 and MV1 as the pair that minimizes the cost of matching between the even block pointed to by MV0 and MV1 (e.g., as described above in relation to Figure 10). Theoretically, the current block 162 can be considered as an extrapolated block based on first reference block 166 and second reference block 170. It should be noted that extended bilateral matching also works in the normal bidirectional case where the current image is temporarily between both references. In this case, the current block 162 can be considered as an interpolated block based on first reference block 166 and second reference block 170. Furthermore, the bilateral matching techniques described herein do not require a “mirror relationship” between MV0 and MV1, even in the bidirectional case. The bilateral correspondence assumption is that the ratio between MV0 and MV1 is in proportion to the ratio of the temporal distance from Ref0 to the current image and that from Ref1 to the current image.
[00173] Claramente, para blocos de referência além do primeiro bloco de referência 166 e segundo bloco de referência 170, o codificador de vídeo pode derivar um par de MV diferente. Em um exemplo, o decodificador de vídeo pode selecionar imagens de referência para realizar a correspondência bilateral de acordo com uma ordem em que as imagens de referência aparecem em uma lista de imagem de referência. Por exemplo, o codificador de vídeo pode selecionar a primeira referência na lista de referência 0 como Ref0 e a primeira referência na lista de referência 1 como Ref1. O codificador de vídeo pode, então, busca o par de MV (MV0, MV1). Em outro exemplo, o codificador de vídeo seleciona Ref0 com base em uma entrada em uma lista inicial (por exemplo, uma lista de candidatos de vetor de movimento inicial). O codificador de vídeo pode, então, estabelecer Ref1 como uma imagem de referência na outra lista de imagem de referência que está temporariamente mais próxima à imagem atual. Consequentemente, o codificador de vídeo pode buscar o par de MV (MV0, MV1) em Ref0 e Ref1.[00173] Clearly, for reference blocks other than the first reference block 166 and second reference block 170, the video encoder can derive a different MV pair. In one example, the video decoder may select reference images to perform bilateral matching according to an order in which the reference images appear in a reference image list. For example, the video encoder may select the first reference in reference list 0 as Ref0 and the first reference in reference list 1 as Ref1. The video encoder can then search for the MV pair (MV0, MV1). In another example, the video encoder selects Ref0 based on an entry in an initial list (e.g., a list of initial motion vector candidates). The video encoder can then establish Ref1 as a reference image in the other reference image list that is temporally closer to the current image. Consequently, the video encoder can search for the MV pair (MV0, MV1) in Ref0 and Ref1.
[00174] Por conseguinte, de acordo com aspectos desta revelação, o codificador de vídeo pode aplicar as técnicas de derivação de movimento bidirecional estendida ilustradas na Figura 11 como um modo de derivação de informações de movimento. Por exemplo, o codificador de vídeo pode usar a correspondência bilateral para derivar informações de movimento de bloco atual 162 encontrando-se a melhor correspondência entre dois blocos (por exemplo, como primeiro bloco de referência 166 e segundo bloco de referência 170) ao longo da trajetória de movimento do bloco atual em duas imagens de referência diferentes. Sob a suposição de trajetória de movimento contínua, os vetores de movimento MV0 e MV1 que apontam para os dois blocos de referência, o primeiro bloco de referência 166 e o segundo bloco de referência 170 deverão ser proporcionais ás distâncias temporais, isto é, TD0 e TD1, entre a imagem atual e as duas imagens de referência. Como um caso especial, quando a imagem atual 160 estiver temporariamente entre duas imagens de referência (conforme mostrado no exemplo da Figura 10) e a distância temporal da imagem atual para as duas imagens de referência é a mesma, a correspondência bilateral se torna derivação de MV bidirecional com base em espelho.[00174] Therefore, in accordance with aspects of this disclosure, the video encoder can apply the extended bidirectional motion derivation techniques illustrated in Figure 11 as a mode of deriving motion information. For example, the video encoder may use bilateral correspondence to derive motion information from current block 162 by finding the best match between two blocks (e.g., as first reference block 166 and second reference block 170) along the motion trajectory of the current block in two different reference images. Under the assumption of continuous motion path, the motion vectors MV0 and MV1 pointing to the two reference blocks, the first reference block 166 and the second reference block 170 should be proportional to the temporal distances, i.e., TD0 and TD1, between the current image and the two reference images. As a special case, when the current image 160 is temporarily between two reference images (as shown in the example of Figure 10) and the temporal distance from the current image to the two reference images is the same, the bilateral correspondence becomes derivation of Mirror-based bidirectional MV.
[00175] A Figura 11 é um fluxograma que ilustra um exemplo de decodificação de uma unidade de predição (PU) com o uso de DMVD. Em Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, “Decoder-side Motion Estimation and Wiener filter for HEVC”, Visual communications and Image Processing (VCIP), 2013, foi proposto adicionalmente combinar a derivação de MV bidirecional com base em espelho com modo de mescla em HEVC. Na técnica proposta, um sinalizador chamado de pu_dmvd_flag é adicionado a uma PU de fatias B para indicar se um modo de DMVD for aplicado à PU atual. Devido ao fato de que o modo de DMVD não transmite explicitamente quaisquer informações de MV no fluxo de bits, o elemento de sintaxe pu_dmvd_flag é integrado com a sintaxe de modo de mescla em HEVC (que usa um índice para os dados representativos de um vetor de movimento ao invés do próprio vetor de movimento).[00175] Figure 11 is a flowchart illustrating an example of decoding a prediction unit (PU) using DMVD. In Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, “Decoder-side Motion Estimation and Wiener filter for HEVC”, Visual communications and Image Processing (VCIP), 2013, it was further proposed to combine bidirectional MV derivation based on mirror with blend mode in HEVC. In the proposed technique, a flag called pu_dmvd_flag is added to a B-slice PU to indicate whether a DMVD mode is applied to the current PU. Because DMVD mode does not explicitly convey any MV information in the bitstream, the pu_dmvd_flag syntax element is integrated with the blend mode syntax in HEVC (which uses an index for the data representative of a vector motion rather than the motion vector itself).
[00176] No exemplo da Figura 11, um decodificador de vídeo (como decodificador de vídeo 30) pode começar a decodificação de uma PU (180). O decodificador de vídeo 30 pode determinar se o modo usado para decodificar a PU é o modo de mescla (182), por exemplo, com base na sintaxe inclusa em um fluxo de bits que inclui a PU. Se o modo de mescla não for usado (a ramificação “não” da etapa 182), o decodificador de vídeo 30 pode usar um processo regular para uma PU sem mescla para decodificar a PU (184) e acabar o processo (186).[00176] In the example of Figure 11, a video decoder (such as video decoder 30) may begin decoding a PU (180). The video decoder 30 may determine whether the mode used to decode the PU is blend mode (182), for example, based on the syntax included in a bitstream that includes the PU. If the blend mode is not used (the “no” branch of step 182), the video decoder 30 may use a regular process for an unmerged PU to decode the PU (184) and terminate the process (186).
[00177] Se o modo de mescla for usado (a ramificação “sim” da etapa 182), o decodificador de vídeo 30 pode determinar se DMVD for usada para determinar informações de movimento para a PU com base no valor do elemento de sintaxe pu_dmvd_flag (188). Se DMVD não for usada (a ramificação “não” da etapa 188), o decodificador de vídeo 30 pode usar um modo de mescla regular para decodificar a PU (190) e acabar o processo (186). Se DMVD for usada (a ramificação “sim” da etapa 188), o decodificador de vídeo 30 pode aplicar um processo de DMVD para determinar as informações de movimento para a PU (192) e acabar o processo (186).[00177] If blend mode is used (the “yes” branch of step 182), the video decoder 30 may determine whether DMVD is used to determine motion information for the PU based on the value of the syntax element pu_dmvd_flag ( 188). If DMVD is not used (the “no” branch of step 188), the video decoder 30 may use a regular blending mode to decode the PU (190) and terminate the process (186). If DMVD is used (the “yes” branch of step 188), video decoder 30 may apply a DMVD process to determine motion information for the PU (192) and terminate the process (186).
[00178] Em alguns casos, as técnicas de codificação de vídeo atuais podem ter determinadas limitações. Por exemplo, determinadas técnicas de DMVD podem ser consideradas como um subconjunto da tecnologia de FRUC. Embora DMVD tenha sido aplicada na codificação de vídeo, outras técnicas de FRUC eficazes não foram implantadas na codificação de vídeo, por exemplo, no ciclo de codificação de vídeo por um codificador de vídeo ou decodificador de vídeo. Além disso, embora técnicas diferentes de DMVD tenham sido propostas, a interação e sobreposição dessas técnicas não são exploradas no decodificador. Isto é, apenas um modo de DMVD foi usado em outros sistemas de codificação de vídeo. A forma em que usar uma pluralidade das técnicas DMVD para aprimorar adicionalmente a eficiência de codificação não foi estudada.[00178] In some cases, current video coding techniques may have certain limitations. For example, certain DMVD techniques can be considered as a subset of FRUC technology. Although DMVD has been applied in video coding, other effective FRUC techniques have not been deployed in video coding, for example, in the video coding cycle by a video encoder or video decoder. Furthermore, although different DMVD techniques have been proposed, the interaction and overlap of these techniques are not explored in the decoder. That is, only one DMVD mode has been used in other video coding systems. How to use a plurality of DMVD techniques to further improve coding efficiency has not been studied.
[00179] Como outra potencial limitação, a DMVD pode se aplicas apenas a blocos relativamente grandes de dados de vídeo e, portanto, podem não ser muito eficazes. Aplicar esses métodos para blocos menores pode levar a sobrecarga significativa devido ao custo de sinalização. Em alguns casos, a faixa de busca por técnicas de DMVD tradicionais pode ser relativamente pequena, e apenas diversos pontos são buscados, por exemplo, 16 pontos. Além disso, conforme notado acima, a derivação de MV bidirecional com base em espelho não pode ser aplicada no caso de B de baixo atraso, devido ao fato de que duas imagens de referência com ordem de exibição antes e após uma imagem atual precisam ser identificadas e essa não é possível no caso de baixo atraso.[00179] As another potential limitation, DMVD may only apply to relatively large blocks of video data and therefore may not be very effective. Applying these methods to smaller blocks can lead to significant overhead due to signaling cost. In some cases, the search range for traditional DMVD techniques may be relatively small, and only several points are searched, for example, 16 points. Furthermore, as noted above, mirror-based bidirectional MV derivation cannot be applied in the case of low-delay B due to the fact that two reference images with display order before and after a current image need to be identified and this is not possible in the case of low delay.
[00180] Outra limitação potencial pode ser que, no decodificador, o custo de correspondência das técnicas de DMVD tradicionais podem apenas considerar distorção. Entretanto, a magnitude de vetor de movimento ainda não foi considerada no custo de correspondência, que pode levar à otimização local ou resultado impreciso da correspondência, por exemplo, devido ao ruído no domínio de pixel. Ademais, a complexidade das técnicas de DMVD tradicionais pode ser relativamente alta, no que diz respeito tanto a largura de banda de memória quanto complexidade computacional, especialmente devido ao fato de que a interpolação é necessária para vetores de movimento de pel fracionários durante a busca no decodificador.[00180] Another potential limitation may be that, in the decoder, the matching cost of traditional DMVD techniques may only consider distortion. However, the magnitude of motion vector has not yet been considered in the matching cost, which may lead to local optimization or inaccurate matching result, for example, due to noise in the pixel domain. Furthermore, the complexity of traditional DMVD techniques can be relatively high, with respect to both memory bandwidth and computational complexity, especially due to the fact that interpolation is required for fractional pel motion vectors during search in the decoder.
[00181] As técnicas desta revelação podem abordar uma ou mais das limitações potenciais descritas acima. Em alguns exemplos, as técnicas para derivar informações de movimento podem ser aplicadas individualmente. Alternativamente, qualquer combinação das técnicas descritas no presente documento pode ser aplicada juntas. Conforme descrito no presente documento, as informações de índice de referência podem, em geral, ser consideradas como parte das informações de movimento. Em alguns casos, as informações de vetor de movimento e informações de índice de referência podem ser referidas como um conjunto de informações de movimento.[00181] The techniques of this disclosure may address one or more of the potential limitations described above. In some examples, techniques for deriving motion information can be applied individually. Alternatively, any combination of the techniques described herein can be applied together. As described herein, benchmark information can generally be considered as part of movement information. In some cases, the motion vector information and reference index information may be referred to as a motion information set.
[00182] Determinadas técnicas desta revelação incluem selecionar um modo de derivação de movimento a partir de uma pluralidade de modos de derivação de movimento potenciais. Por exemplo, de acordo com os aspectos desta revelação, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou decodificador de vídeo 30) pode usar duas ou mais técnicas de derivação de movimento para fornecer melhor predição das informações de movimento em um decodificador de vídeo para evitar a sinalização das informações de movimento no fluxo de bits. As duas ou mais técnicas de derivação de movimento podem incluir, mas não são limitadas a correspondência bilateral, correspondência de modelo e qualquer outro método de correspondência. Essas técnicas podem, em geral, ser referidas como modos de derivação de informações de movimento ou modos de FRUC. Por conseguinte, deve ser compreendido que em alguns casos uma técnica referida como um modo de FRUC pode ao invés disso ser usada para interpolar informações de movimento para um bloco atual (por exemplo, ao invés de interpolar um novo bloco de dados de vídeo).[00182] Certain techniques of this disclosure include selecting a motion derivation mode from a plurality of potential motion derivation modes. For example, in accordance with aspects of this disclosure, a video encoder (e.g., video encoder 20 or video decoder 30) may use two or more motion derivation techniques to provide better prediction of motion information in a video decoder to avoid signaling motion information in the bitstream. The two or more motion derivation techniques may include, but are not limited to, bilateral matching, template matching, and any other matching method. These techniques can generally be referred to as motion information derivation modes or FRUC modes. Therefore, it should be understood that in some cases a technique referred to as a FRUC mode may instead be used to interpolate motion information to a current block (e.g., instead of interpolating a new block of video data).
[00183] Em alguns exemplos, quando múltiplos métodos de derivação de movimento foram usados, ao invés de ter métodos de otimização diferentes para diferentes métodos de derivação, o processo para encontrar o melhor movimento para dois ou mais dos métodos de derivação de movimento podem ser alinhados, no que diz respeito à seleção dos pontos iniciais para buscar e como buscar ao redor dos pontos iniciais. Por exemplo, o codificador de vídeo pode construir uma lista de candidatos de vetor de movimento, selecionar um candidato inicial a partir da lista, e refinar o candidato com o uso das mesmas técnicas de correspondência e busca. Neste exemplo, a derivação de movimento bidirecional e derivação de movimento com base em correspondência de modelo pode ser usada de modo adaptativo no lado de decodificador.[00183] In some examples, when multiple motion derivation methods were used, rather than having different optimization methods for different derivation methods, the process for finding the best motion for two or more of the motion derivation methods may be aligned, with regard to selecting the starting points to search and how to search around the starting points. For example, the video encoder may construct a list of motion vector candidates, select an initial candidate from the list, and refine the candidate using the same matching and searching techniques. In this example, bidirectional motion derivation and template matching-based motion derivation can be used adaptively on the decoder side.
[00184] De acordo com os aspectos desta revelação, a sinalização adicional no nível de bloco é introduzida para identificar qual método de derivação de movimento é usado para codificar o bloco atual. Por exemplo, o codificador de vídeo pode codificar um ou mais elementos de sintaxe para indicar se a derivação de informações de movimento está habilitada. O codificador de vídeo também pode codificar um ou mais elementos de sintaxe para indicar um modo de derivação de informações de movimento particular a partir de uma pluralidade de modos potenciais. Em outros exemplos, a técnica de derivação de informações de movimento a ser usada pode não ser sinalizada, mas derivada no decodificador de vídeo, por exemplo, com base em um modo de predição ou outras informações disponíveis antes de o bloco atual ser decodificado. Ema inda outros exemplos, o codificador de vídeo pode realizar múltiplos modos de derivação de informações de movimento e determinar uma média ponderada das predições das duas ou mais técnicas de derivação para codificar o bloco atual.[00184] In accordance with aspects of this disclosure, additional block-level signaling is introduced to identify which motion derivation method is used to encode the current block. For example, the video encoder may encode one or more syntax elements to indicate whether derivation of motion information is enabled. The video encoder may also encode one or more syntax elements to indicate a mode of deriving particular motion information from a plurality of potential modes. In other examples, the motion information derivation technique to be used may not be signaled, but derived in the video decoder, for example, based on a prediction mode or other information available before the current block is decoded. In still other examples, the video encoder may perform multiple modes of deriving motion information and determine a weighted average of the predictions of the two or more deriving techniques to encode the current block.
[00185] Em um exemplo para fins de ilustração, um decodificador de vídeo, como decodificador de vídeo 30, pode primeiro identificar se deve aplicar um modo de interpolação de informações de movimento (por exemplo, com base em sintaxe no fluxo de bits). O decodificador de vídeo 30 pode, então, identificar qual modo de derivação de informações de movimento deve ser aplicado (por exemplo, com base em sintaxe no fluxo de bits). Em um exemplo, quando múltiplos métodos de derivação de movimento forem suportados simultaneamente, por exemplo, tanto correspondência bilateral estendida quanto modos de correspondência de modelo, um valor de índice pode ser sinalizado no fluxo de bits para indicar qual método de derivação de movimento está realmente em uso para um bloco atual. O índice pode ter três valores que incluem, correspondência bilateral e correspondência de modelo.[00185] In an example for purposes of illustration, a video decoder, such as video decoder 30, may first identify whether to apply a motion information interpolation mode (e.g., based on syntax in the bit stream). The video decoder 30 can then identify which motion information derivation mode should be applied (e.g., based on syntax in the bitstream). In an example, when multiple motion derivation methods are supported simultaneously, e.g., both extended bilateral matching and template matching modes, an index value may be signaled in the bitstream to indicate which motion derivation method is actually supported. in use for a current block. The index can have three values which include, two-sided matching and template matching.
[00186] Quando se usa a codificação de CABAC, dois receptáculos podem ser usados para representar o índice. Os dois receptáculos podem ambos usar vizinhos espaciais como contextos ou apenas um dos mesmos usam contextos de vizinhos espaciais. Alternativamente, um ou ambos receptáculos podem usar outras informações codificadas, como a profundidade de CU, conforme os contextos. A binarização do índice pode ser predefinida, como “0” para desativo, “10” para correspondência bilateral estendida e “11” para correspondência de modelo. Alternativamente, a binarização do índice pode ser sinalizada em um cabeçalho de fatia ou derivado das informações codificadas como tipo de fatia, nível temporal ou informações de QP.[00186] When using CABAC encoding, two receptacles can be used to represent the index. The two receptacles may both use spatial neighbors as contexts or only one of them may use spatial neighbor contexts. Alternatively, one or both receptacles may use other encoded information, such as CU depth, depending on the contexts. Index binarization can be predefined, such as “0” for off, “10” for extended two-sided matching, and “11” for template matching. Alternatively, index binarization can be signaled in a slice header or derived from encoded information such as slice type, temporal level, or QP information.
[00187] De acordo com os aspectos desta revelação, a sintaxe que indica um modo de derivação de informações de movimento pode estar inclusa com outro modo de codificação. Em um exemplo, um modo de derivação de informações de movimento pode ser considerado um candidato de mescla particular, assim indicado por um índice de mescla. Nesse caso, o tamanho da lista de candidatos de mescla pode ser aumentada para acomodar o índice adicional. O índice de candidato de mescla para o modo de derivação de informações de movimento pode ser predefinido ou sinalizado no fluxo de bits.[00187] According to aspects of this disclosure, the syntax indicating a mode of deriving motion information may be included with another mode of encoding. In an example, a mode of deriving motion information may be considered a particular blend candidate, as indicated by a blend index. In this case, the size of the merge candidate list can be increased to accommodate the additional index. The merge candidate index for the motion information derivation mode can be predefined or signaled in the bitstream.
[00188] Em alguns exemplos, a correspondência bilateral estendida e correspondência de modelo são ambas suportadas com o modo de mescla. Nesses exemplos, quando o sinalizador de mescla for igual a 1, uma nova derivação de informações de movimento sinalizador é sinalizada para indicar se as informações de movimento são derivadas para a PU atual. O sinalizador pode usar o mesmo sinalizador de seu vizinho espacial, como blocos de superior e esquerdo como contextos de codificação de CABAC. Quando esse sinalizador estiver ativado, um segundo sinalizador é sinalizado para indicar qual modo de derivação de informações de movimento (por exemplo, correspondência bilateral estendida ou correspondência de modelo) é usado para derivar as informações de movimento do bloco. Quando a derivação de movimento estiver ativada, até mesmo quando o modo atual for o modo de mescla, nenhum índice de mescla é sinalizado. Alternativa ou adicionalmente, uma derivação de informações de movimento particular (por exemplo, como correspondência de modelo) não é permitida se a PU não for a primeira PU de uma CU na ordem de decodificação. Nesse caso, apenas o sinalizador precisa ser sinalizado para indicar se a correspondência bilateral estendida por usada para a PU ou não.[00188] In some examples, extended bilateral matching and template matching are both supported with blend mode. In these examples, when the merge flag equals 1, a new derivation of motion information flag is flagged to indicate whether the motion information is derived for the current PU. The flag may use the same flag as its spatial neighbor, such as top and left blocks as CABAC encoding contexts. When this flag is on, a second flag is flagged to indicate which motion information derivation mode (for example, extended bilateral matching or template matching) is used to derive the block's motion information. When motion derivation is enabled, even when the current mode is blend mode, no blend index is signaled. Alternatively or additionally, a derivation of particular motion information (e.g., as template matching) is not permitted if the PU is not the first PU of a CU in the decoding order. In this case, only the flag needs to be flagged to indicate whether the two-sided correspondence extended by used for the PU or not.
[00189] Em outro exemplo, o modo de derivação de informações de movimento pode ser combinado com o modo de AMVP, por exemplo, no nível de PU. Em um exemplo, os elementos de sintaxe adicionais (por exemplo, um sinalizador adicional) pode ser sinalizado para indicar o modo de derivação de informações de movimento. Quando este modo estiver ativado, nenhum índice de AMVP pode ser sinalizado no fluxo de bits. De outro modo, um índice de AMVP regular pode ser sinalizado no fluxo de bits. Em outro exemplo, o modo de derivação de informações de movimento pode ser considerado como um candidato de AMVP particular, como o primeiro candidato de AMVP, em uma lista de candidatos de AMVP. Em alguns casos, quando combinado com o modo de AMVP, um vetor de movimento pode não ser derivado em um nível de sub-PU.[00189] In another example, the motion information derivation mode can be combined with the AMVP mode, for example, at the PU level. In an example, additional syntax elements (e.g., an additional flag) may be flagged to indicate the mode of deriving motion information. When this mode is enabled, no AMVP indexes can be signaled in the bitstream. Otherwise, a regular AMVP index can be signaled in the bitstream. In another example, the mode of deriving motion information may be considered as a particular AMVP candidate, as the first AMVP candidate, in a list of AMVP candidates. In some cases, when combined with AMVP mode, a motion vector may not be derived at a sub-PU level.
[00190] De acordo com outros aspectos, um codificador de vídeo pode, de modo inicial, condicionalmente codificar um sinalizador de nível de CU (por exemplo, para uma CU intercodificada) para indicar se todas as PUs dentro da CU atual usam o modo de derivação de informações de movimento. Em um exemplo, o sinalizador de nível de PU não é sinalizado. Em outro exemplo, quando o sinalizador de CU for igual a 0 (isto é, nem todas as PUs são codificadas com o modo), o sinalizador de nível de PU da primeira PU é sinalizado adicionalmente quando a segunda PU não inclui o sinalizador de nível de PU.[00190] According to other aspects, a video encoder may initially conditionally encode a CU level flag (e.g., for an intercoded CU) to indicate whether all PUs within the current CU use the derivation of motion information. In one example, the PU level flag is not flagged. In another example, when the CU flag is equal to 0 (that is, not all PUs are encoded with the mode), the PU level flag of the first PU is additionally signaled when the second PU does not include the level flag of PU.
[00191] Em alguns exemplos, o modo de derivação de informações de movimento pode ser desabilitado para tipos de fatia específicos, níveis temporais, tipos de bloco ou tamanhos de bloco. Em um exemplo, a derivação de informações de movimento não é permitida quando a fatia atual inclui apenas imagens de referência cujas posições temporais são todas antes ou após aquela da imagem atual. Em outro exemplo, a derivação de informações de movimento não é permitida para PUs diferentes de 2Nx2N. Quando se desabilita a derivação de informações de movimento, nenhuma sinalização de nível de bloco relacionada à derivação de informações de movimento é necessária.[00191] In some examples, the motion information derivation mode may be disabled for specific slice types, temporal levels, block types, or block sizes. In one example, derivation of motion information is not permitted when the current slice includes only reference images whose temporal positions are all before or after that of the current image. In another example, deriving motion information is not allowed for PUs other than 2Nx2N. When disabling motion information derivation, no block-level signaling related to motion information derivation is required.
[00192] De acordo com os aspectos desta revelação, habilitar ou desabilitar as técnicas de derivação de informações de movimento descritas no presente documento pode ser controlado por sintaxe de nível alto para fornecer uma troca de melhor complexidade versus eficiência de codificação e/ou flexibilidade de codificador/decodificador. Em um exemplo, um sinalizador pode ser sinalizado em um SPS, PPS, cabeçalho de fatia ou qualquer outro cabeçalho de sintaxe de nível alto para indicar o uso de um modo de derivação de informações de movimento. Quando esse sinalizador indicar que esse modo de codificação não está habilitado, os sinalizadores de nível de CU/PU podem não ser codificados no fluxo de bits.[00192] In accordance with aspects of this disclosure, enabling or disabling the motion information derivation techniques described herein can be controlled by high-level syntax to provide a trade-off of better complexity versus coding efficiency and/or flexibility of encoder/decoder. In an example, a flag may be flagged in an SPS, PPS, slice header, or any other high-level syntax header to indicate the use of a motion information derivation mode. When this flag indicates that this encoding mode is not enabled, the CU/PU level flags may not be encoded into the bitstream.
[00193] Em alguns casos, sintaxe de alto nível pode adicional ou alternativamente ser usada para indicar outros parâmetros de derivação de informações de movimento. Por exemplo, um índice do algoritmo de busca que deve ser usado para buscar pelo vetor de movimento de nível de PU pode ser codificado em um fluxo de bits dentro de um SPS, PPS ou cabeçalho de fatia. Em alguns casos, um índice do algoritmo de busca que é usado para buscar o vetor de movimento de nível de sub-bloco pode ser codificado no fluxo de bits dentro de um SPS, PPS ou cabeçalho de fatia. Em alguns exemplos, para manter a complexidade computacional baixa no lado de decodificador, os números máximos de correspondência de bloco/partição no nível de PU, os números máximos da correspondência de bloco/partição no subnível de PU e/ou o número de correspondência total de ambos níveis de PU e sub-PU podem ser restringidos. Em alguns casos, esses números máximos podem ser predefinidos ou sinalizados no fluxo de bits.[00193] In some cases, high-level syntax may additionally or alternatively be used to indicate other motion information derivation parameters. For example, a search algorithm index that should be used to search for the PU level motion vector may be encoded in a bit stream within an SPS, PPS, or slice header. In some cases, a search algorithm index that is used to search the sub-block level motion vector may be encoded into the bitstream within an SPS, PPS, or slice header. In some examples, to keep computational complexity low on the decoder side, the maximum block/partition match numbers at the PU level, the maximum block/partition match numbers at the PU sublevel, and/or the total match number of both PU and sub-PU levels can be restricted. In some cases, these maximum numbers may be predefined or signaled in the bitstream.
[00194] As técnicas desta revelação incluem uma variedade de técnicas para derivar informações de movimento. Em alguns exemplos, o codificador de vídeo pode determinar uma lista inicial (lista de candidatos inicial) de entradas que contêm vetores de movimento, e um melhor ponto inicial é identificado como uma entrada a partir da lista inicial. As entradas que contêm vetores de movimento podem ser vetores de movimento de vizinhos espaciais, vizinhos temporais e/ou vetores de movimento derivados por outros meios. Alternativamente, o melhor ponto inicial (ou índice do melhor ponto inicial) pode ser sinalizado ao decodificador.[00194] The techniques of this disclosure include a variety of techniques for deriving motion information. In some examples, the video encoder may determine a starting list (initial candidate list) of inputs that contain motion vectors, and a best starting point is identified as an entry from the initial list. Inputs containing motion vectors may be motion vectors of spatial neighbors, temporal neighbors, and/or motion vectors derived by other means. Alternatively, the best starting point (or index of the best starting point) can be signaled to the decoder.
[00195] Em alguns exemplos, a lista inicial pode conter os vetores de movimento dos vizinhos espaciais e/ou temporais. Cada entrada da lista inicial pode ser um conjunto de informações de movimento uni-preditivo, incluindo um vetor de movimento e seu índice de referência. Em um exemplo, a lista inicial pode ser gerada da mesma forma que a lista de candidatos de predição de movimento usada em outro modo de codificação, por exemplo, o mesmo que a lista de candidatos de mescla. Neste caso, até dois vetores de movimento de cada candidato de mescla podem ser usados para gerar até duas entradas na lista inicial. Em alguns casos, as entradas na lista inicial podem ser geradas a partir de um subconjunto de candidatos de predição de movimento em uma lista usada em outro modo de codificação, por exemplo, um subconjunto da lista de candidatos de mescla.[00195] In some examples, the initial list may contain the motion vectors of spatial and/or temporal neighbors. Each entry in the initial list can be a set of uni-predictive motion information, including a motion vector and its reference index. In an example, the initial list may be generated in the same way as the motion prediction candidate list used in another encoding mode, e.g., the same as the merge candidate list. In this case, up to two motion vectors from each merge candidate can be used to generate up to two entries in the initial list. In some cases, entries in the initial list may be generated from a subset of motion prediction candidates in a list used in another encoding mode, for example, a subset of the merge candidate list.
[00196] Em outro exemplo, vetores de movimento adicionais podem ser adicionados na lista inicial, além daqueles na lista de candidatos de predição de movimento usada em outro modo de codificação, por exemplo, além daqueles na lista de candidatos de mescla. Alternativa ou adicionalmente, os vetores de movimento dos vizinhos espaciais do bloco atual, como um bloco superior, um bloco esquerdo, um bloco direito superior, ou outro bloco pode ser adicionado à lista inicial. Em alguns casos, zero vetores de movimento com diferentes índices de imagem de referência também podem ser adicionados à lista.[00196] In another example, additional motion vectors may be added to the initial list in addition to those in the motion prediction candidate list used in another encoding mode, for example, in addition to those in the merge candidate list. Alternatively or additionally, the motion vectors of the spatial neighbors of the current block, such as a top block, a left block, a top right block, or another block can be added to the initial list. In some cases, zero motion vectors with different reference image indices can also be added to the list.
[00197] Alternativa ou adicionalmente, os vetores de movimento dos blocos do bloco atual temporalmente colocalizados (por exemplo, um TMVP para o bloco atual) e/ou vetores de movimento dos blocos temporalmente colocalizados à direita superior do bloco atual nas imagens de referência podem ser adicionados à lista inicial. Antes de adicionar um vetor de movimento candidato particular à lista, os vetores de movimento podem ser escalonados ou não com base na distância temporal.[00197] Alternatively or additionally, the motion vectors of the blocks of the current block temporally co-located (e.g., a TMVP for the current block) and/or motion vectors of the blocks temporally co-located to the upper right of the current block in the reference images may be added to the initial list. Before adding a particular candidate motion vector to the list, the motion vectors can be scaled or unscaled based on temporal distance.
[00198] De acordo com alguns aspectos, um vetor de movimento pode ser interpolado e/ou extrapolado de uma imagem de referência e pode ser adicionado na lista inicial. Por exemplo, antes da codificação de uma interimagem, um campo de movimento interpolado e/ou extrapolado da imagem pode ser gerado com base em suas imagens de referência com uma técnica similar a ME unilateral. O campo de movimento interpolado e/ou extrapolado de um bloco pode ser usado para a predição de MV ou usado como candidatos iniciais adicionais em uma busca de MV de um modo de derivação de informações de movimento. Observe que o campo de movimento interpolado e/ou extrapolado é salvo na unidade de 4 x 4 ou 8 x 8 ou qualquer outro nível de bloco predefinido/sinalizado, e uma PU pode conter múltiplos desses blocos de modo que os múltiplos MVs interpolados e/ou extrapolados possam ser usados.[00198] In some aspects, a motion vector may be interpolated and/or extrapolated from a reference image and may be added to the initial list. For example, before encoding an inter-image, an interpolated and/or extrapolated motion field of the image can be generated based on its reference images with a technique similar to unilateral EM. The interpolated and/or extrapolated motion field of a block can be used for MV prediction or used as additional initial candidates in a MV search of a motion information derivation mode. Note that the interpolated and/or extrapolated motion field is saved in the unit of 4 x 4 or 8 x 8 or any other predefined/flagged block level, and a PU can contain multiples of these blocks so that the multiple interpolated MVs and/or or extrapolated can be used.
[00199] Em um exemplo, o campo de movimento de cada uma das imagens de referência em ambas as listas de referência é cruzado pelo bloco NxN, em que N pode ser predefinido como 4, 8 ou 16, ou sinalizado. Para cada bloco, se o movimento associado ao bloco que passa através de um bloco NxN na imagem atual e o bloco não foi atribuído qualquer movimento interpolado, o movimento do bloco de referência é escalonado para a imagem atual da mesma forma que aquele do escalonamento de MV em TMVP e o movimento escalonado é atribuído ao bloco no quadro atual. Se nenhum MV escalonado for atribuído a um bloco NxN, o movimento do bloco é marcado como indisponível no campo de movimento interpolado. Em outro exemplo, um bloco NxN na imagem atual pode ser atribuído múltiplos vetores de movimento no campo de movimento interpolado.[00199] In one example, the motion field of each of the reference images in both reference lists is crossed by the NxN block, where N can be predefined as 4, 8 or 16, or flagged. For each block, if the movement associated with the block passes through an NxN block in the current image and the block has not been assigned any interpolated movement, the movement of the reference block is scaled to the current image in the same way as that of the reference block scaling. MV in TMVP and staggered motion is assigned to the block in the current frame. If no scaled MV is assigned to an NxN block, the block's motion is marked as unavailable in the interpolated motion field. In another example, an NxN block in the current image can be assigned multiple motion vectors in the interpolated motion field.
[00200] Em alguns casos, um codificador de vídeo pode remover um ou mais candidatos de uma lista de candidato. A remoção pode ser aplicada para remover entradas idênticas de uma lista inicial antes do processo de seleção de melhor ponto inicial, por exemplo, antes de calcular o custo de correspondência para cada candidato da lista.[00200] In some cases, a video encoder may remove one or more candidates from a candidate list. Pruning can be applied to remove identical entries from an initial list before the best starting point selection process, for example, before calculating the matching cost for each candidate on the list.
[00201] Em alguns casos, a primeira imagem em cada lista de referência pode ser usada como a imagem de referência, e candidatos de vetor de movimento são escalonados consequentemente se necessário. Nesse caso, o índice de referência de cada entrada da lista inicial pode ser modificado após o vetor de movimento ser escalonado com base, por exemplo, na distância de POC, semelhante ao TMVP. Em alguns casos, o índice de referência de cada entrada pode ser fixado a uma ou duas imagens e os vetores de movimento associados podem ser escalonados para essas imagens.[00201] In some cases, the first image in each reference list may be used as the reference image, and motion vector candidates are scaled accordingly if necessary. In this case, the reference index of each entry in the initial list can be modified after the motion vector is scaled based on, for example, the distance from POC, similar to TMVP. In some cases, the reference index of each input can be fixed to one or two images and the associated motion vectors can be scaled to those images.
[00202] Em um exemplo, para a correspondência bilateral, um par de vetor de movimento, que é um conjunto de informações de movimento completo que contém ambos os vetores de movimento e seus índices de referência associados à lista de referência 0 e lista 1, respectivamente, pode ser obtido com base em cada entrada de uma lista de candidatos inicial. Um codificador de vídeo pode, então, realizar a correspondência bilateral para todos os pares de MV gerados a partir de todas as entradas na lista inicial e selecionar o candidato que leva ao custo de correspondência mínimo.[00202] In an example, for bilateral matching, a motion vector pair, which is a complete motion information set that contains both motion vectors and their reference indices associated with reference list 0 and reference list 1, respectively, can be obtained based on each entry from an initial candidate list. A video encoder can then perform two-sided matching for all MV pairs generated from all entries in the initial list and select the candidate that leads to the minimum matching cost.
[00203] Para gerar o par de MV, o codificador de vídeo pode selecionar uma entrada da lista inicial como o primeiro vetor de movimento e gerar o segundo vetor de movimento. Por exemplo, suponha que uma entrada contém o primeiro vetor de movimento atual MVA e está associada a um índice de referência (com valor de POC POCA) para uma primeira imagem de referência na lista de imagem de referência A (com A sendo igual a 0 ou 1). Supondo que o valor de POC da imagem atual é POCC, o codificador de vídeo pode ser configurado para encontrar uma segunda imagem de referência a partir da lista de imagem de referência B (com B sendo igual a 1-A) de modo que seu valor de POC POCB seja igual a (2 X POCC - POCA). Se nenhuma imagem de referência na lista de imagem de referência B tiver valor de POC igual a (2 X POCC-POC0), o codificador de vídeo pode selecionar a segunda imagem de referência verificando-se todas as imagens de referência na lista B de modo que o POCB não seja a um POCA e o valor absoluto de POCC-POCB seja o mínimo. Em suma, o codificador de vídeo pode selecionar uma imagem localizada no outro lado da imagem atual (na ordem de exibição) que tem a mesma distância de POC. Se não estiver disponível, o codificador de vídeo pode selecionar uma imagem no outro lado que tem a menor distância para a imagem atual. Se todas as imagens de referência estiverem no mesmo lado temporal que a primeira referência com POCA em comparação à imagem atual, o codificador de vídeo pode selecionar a referência que está temporalmente mais próxima à imagem atual e tem um POC além de POCA- Sob as suposições supracitadas, o codificador de vídeo pode escalonar o primeiro vetor de movimento MVA para gerar o segundo vetor de movimento associado à segunda imagem de referência, por exemplo, com base na diferença de POC como em TMVP. Alternativamente, quaisquer técnicas com base na suposição de MV bilateral podem ser usadas para gerar a segunda imagem de referência e seu vetor de movimento.[00203] To generate the MV pair, the video encoder may select an entry from the initial list as the first motion vector and generate the second motion vector. For example, suppose an input contains the first current motion vector MVA and is associated with a reference index (with POC value POCA) to a first reference image in the reference image list A (with A being equal to 0 or 1). Assuming that the POC value of the current image is POCC, the video encoder can be configured to find a second reference image from the reference image list B (with B being equal to 1-A) so that its value of POC POCB is equal to (2 X POCC - POCA). If no reference picture in reference picture list B has a POC value equal to (2 X POCC-POC0), the video encoder can select the second reference picture by checking all reference pictures in list B so that the POCB is not a POCA and the absolute value of POCC-POCB is the minimum. In short, the video encoder can select an image located on the other side of the current image (in display order) that has the same POC distance. If not available, the video encoder may select an image on the other side that has the shortest distance to the current image. If all reference images are on the same temporal side as the first reference with POCA compared to the current image, the video encoder can select the reference that is temporally closest to the current image and has a POC other than POCA. aforementioned, the video encoder can scale the first MVA motion vector to generate the second motion vector associated with the second reference image, for example, based on the POC difference as in TMVP. Alternatively, any techniques based on the bilateral MV assumption can be used to generate the second reference image and its motion vector.
[00204] De acordo com alguns aspectos, dois vetores de movimento iniciais podem ser selecionados a partir da lista inicial. Cada um desses dois vetores de movimento é selecionado (no que diz respeito a um custo de correspondência mínimo) das entradas em dois subconjuntos da lista inicial. Cada subconjunto contém vetores de movimento associados ao índice de referência apenas à lista de imagem de referência 0 ou apenas à lista de imagem de referência 1.[00204] In some aspects, two initial motion vectors may be selected from the initial list. Each of these two motion vectors is selected (with respect to a minimum matching cost) from the entries in two subsets of the initial list. Each subset contains motion vectors associated with the reference index only reference image list 0 or only reference image list 1.
[00205] De acordo com os aspectos desta revelação, um codificador de vídeo pode ser configurado para selecionar um candidato a partir de um candidato com base em um custo de correspondência associado ao vetor de movimento. Além disso, após selecionar um candidato a partir de uma lista de candidato, o codificador de vídeo pode refinar o vetor de movimento candidato para derivar informações de movimento para um bloco. Por exemplo, o vetor de movimento candidato pode ser usado para indicar um ponto inicial de uma imagem de referência, que pode, então, ser buscada para encontrar uma melhor correspondência com base em um custo de correspondência.[00205] In accordance with aspects of this disclosure, a video encoder may be configured to select a candidate from a candidate based on a matching cost associated with the motion vector. Furthermore, after selecting a candidate from a candidate list, the video encoder can refine the candidate motion vector to derive motion information for a block. For example, the candidate motion vector can be used to indicate a starting point of a reference image, which can then be searched to find a best match based on a matching cost.
[00206] De acordo com os aspectos desta revelação, uma variedade de custos de correspondência pode ser usada, por exemplo, quando se determina uma melhor correspondência para um candidato de vetor de movimento inicial e/ou quando se refina o candidato de vetor de movimento inicial. Em um exemplo, quando se busca o movimento de um bloco, um custo de MV pode estar incluso no custo de correspondência para evitar impacto negativo por ruído. Por exemplo, a porção de refinamento do vetor de movimento (por exemplo, diferença entre o MV atual e o centro de busca), denotada como MVR pode ser usada para calcular o custo. Neste exemplo, o custo pode ser w*(|MVR[0]|+|MVR[1]|), em que w é um fator de ponderação que pode ser sinalizado ou predefinido e MVR[0] e MVR[1] são os dois componentes de MVR. Alternativamente, o vetor de movimento refinado MV pode ser usado para calcular o custo, por exemplo, como w*(|MV[0]|+|MV[1]|).[00206] In accordance with aspects of this disclosure, a variety of matching costs may be used, for example, when determining a best match for an initial motion vector candidate and/or when refining the motion vector candidate initial. In an example, when searching for the movement of a block, an MV cost may be included in the matching cost to avoid negative impact due to noise. For example, the refinement portion of the motion vector (e.g., difference between the current MV and the search center), denoted as MVR can be used to calculate the cost. In this example, the cost might be w*(|MVR[0]|+|MVR[1]|), where w is a weighting factor that can be signed or predefined and MVR[0] and MVR[1] are the two MVR components. Alternatively, the refined motion vector MV can be used to calculate the cost, for example as w*(|MV[0]|+|MV[1]|).
[00207] Em alguns exemplos, quando o bloco for relativamente pequeno, por exemplo, 4 x 4 ou menor, um bloco maior que cobre o bloco (por exemplo o bloco com limites estendidos) pode ser usado no cálculo de custo de correspondência a fim de suprimir o ruído. Por exemplo, quando se busca a melhor correspondência para um bloco 4 x 4, o custo de correspondência pode ser calculado com base no bloco 8 x 8 com um bloco de centro sendo o bloco.[00207] In some examples, when the block is relatively small, e.g., 4 x 4 or smaller, a larger block that covers the block (e.g., the block with extended boundaries) may be used in the matching cost calculation in order to to suppress noise. For example, when searching for the best match for a 4 x 4 block, the matching cost can be calculated based on the 8 x 8 block with a center block being the block.
[00208] Em alguns exemplos, o custo de correspondência pode ser qualquer tipo de distância/custo, como a soma de diferenças absolutas (SAD), soma de erros quadráticos de predição (SSE), ou soma de diferenças de transformada absolutas (SATD). Para reduzir a complexidade computacional a SAD, a SSE, ou outro custo pode ser calculado com resolução reduzida nas direções horizontal, vertical ou ambas. Por exemplo, para um bloco 8 x 8, a SAD pode ser calculada com base em apenas fileiras ímpares. Em outro exemplo, o custo de correspondência pode ser calculado com base em um subconjunto selecionado de um bloco, por exemplo, apenas uma região central de a pode ser usada.[00208] In some examples, the matching cost can be any type of distance/cost, such as sum of absolute differences (SAD), sum of squared prediction errors (SSE), or sum of absolute transform differences (SATD). . To reduce computational complexity the SAD, SSE, or other cost can be calculated with reduced resolution in the horizontal, vertical, or both directions. For example, for an 8 x 8 block, the SAD can be calculated based on odd rows only. In another example, the matching cost can be calculated based on a selected subset of a block, for example, only a central region of a can be used.
[00209] De acordo com os aspectos desta revelação, o processo de refinamento para a melhor correspondência (por exemplo, o candidato selecionado com base no custo de correspondência) pode ser realizado dentro de uma janela de busca predefinida ou sinalizada ao invés de sempre com o uso de uma janela pequena, por exemplo, dentro de uma janela de 2 x 2 (no presente contexto a unidade é pixel e vetores de movimento fracionários podem ser buscados dentro de uma janela) para alcançar uma busca de complexidade baixa porém eficaz. Neste exemplo, a faixa de uma janela de busca (por exemplo, com um tamanho de 16 x 16) pode ser predefinido ou sinalizado no fluxo de bits.[00209] In accordance with aspects of this disclosure, the refinement process for the best match (e.g., candidate selected based on matching cost) may be performed within a predefined or flagged search window rather than always with the use of a small window, for example, within a 2 x 2 window (in the present context the unit is pixel and fractional motion vectors can be searched within a window) to achieve a low complexity but effective search. In this example, the range of a search window (e.g., with a size of 16 x 16) may be predefined or signaled in the bitstream.
[00210] O algoritmo de busca para buscar pode ser predefinido, como uma busca completa, uma busca de três etapas, uma busca diamante, um algoritmo de busca descendente de gradiente com base em bloco (BBGDS) conforme descrito, por exemplo, em Lurng-Kuo Liu, Ephraim Feig, “A block-based gradient descent search algorithm for block motion estimation in video coding,” IEEE Trans. Circuits Syst. Video Technol. , vol. 6, páginas 419 a 422, agosto de 1996, ou um algoritmo busca diamante próximo ao centro não restrito (UCBDS) conforme descrito, por exemplo, em Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath, and Ashraf Ali Kassim, “A novel unrestricted center-biased diamond search algorithm for block motion estimation,” IEEE Trans. Circuits Syst. Video Technol. , vol. 8, páginas 369 a 377, agosto de 1998.[00210] The search algorithm for searching can be predefined, such as a full search, a three-step search, a diamond search, a block-based gradient descent search (BBGDS) algorithm as described, for example, in Lurng -Kuo Liu, Ephraim Feig, “A block-based gradient descent search algorithm for block motion estimation in video coding,” IEEE Trans. Circuits Syst. Video Technol. , vol. 6, pages 419 to 422, August 1996, or an unconstrained near-center diamond search (UCBDS) algorithm as described, for example, in Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath, and Ashraf Ali Kassim, “A novel unrestricted center-biased diamond search algorithm for block motion estimation,” IEEE Trans. Circuits Syst. Video Technol. , vol. 8, pages 369 to 377, August 1998.
[00211] Em alguns casos, diferentes técnicas de busca podem ser usadas em diferentes casos com base na sinalização ou critérios predefinidos. Por exemplo, para buscar uma PU inteira, uma busca diamante pode ser usada. Para buscar uma sub-PU, uma busca de diamante pequeno pode ser usada. Adicional ou alternativamente, a parada antecipada pode ser aplicada durante a busca, por exemplo, quando o custo de correspondência estiver abaixo de limites adaptativos ou predefinidos. Quando se usa a correspondência de modelo, uma restrição pode ser aplicada adicionalmente, a qual os dois vetores de movimento das duas listas de referência após o refinamento não apontarão para o mesmo bloco na mesma imagem de referência.[00211] In some cases, different search techniques may be used in different cases based on predefined flagging or criteria. For example, to search an entire PU, a diamond search can be used. To search for a sub-PU, a small diamond search can be used. Additionally or alternatively, early stopping can be applied during search, for example, when the matching cost is below adaptive or predefined thresholds. When using template matching, a constraint can be additionally applied that the two motion vectors of the two reference lists after refinement will not point to the same block in the same reference image.
[00212] Conforme notado acima, esta revelação descreve determinadas técnicas de otimização para processos de DMVD existentes. Por exemplo, conforme descrito acima em relação ao exemplo da Figura 10, as técnicas incluem estender a correspondência bilateral a partir da predição bidirecional para a predição unidirecional. A correspondência bilateral também pode ser aplicada quando as posições temporais de duas imagens de referência forem antes ou após a posição temporal da fatia atual (isto é, os valores de POC são menores ou maiores do que aquele da imagem atual). Essas técnicas podem ser referidas coletivamente no presente documento como correspondência bilateral estendida.[00212] As noted above, this disclosure describes certain optimization techniques for existing DMVD processes. For example, as described above in relation to the example in Figure 10, techniques include extending two-way matching from two-way prediction to one-way prediction. Bilateral matching can also be applied when the temporal positions of two reference images are before or after the temporal position of the current slice (i.e., the POC values are smaller or larger than that of the current image). These techniques may be collectively referred to herein as extended bilateral matching.
[00213] Outros aspectos desta revelação se referem às técnicas de interpolação. Por exemplo, de acordo com os aspectos desta revelação, as técnicas de interpolação podem ser simplificadas para reduzir a complexidade. Conforme notado acima em relação à Figura 2, a busca de movimento é tipicamente realizada com o uso da precisão de subpixel. Consequentemente, a interpolação é necessária para posições de pixel não inteiras. Para reduzir a complexidade computacional, de acordo com os aspectos desta revelação, um codificador de vídeo pode usar um filtro de interpolação com derivações mais curtas em comparação à interpolação de compensação de movimento normal. Em um exemplo, o codificador de vídeo pode usar um filtro de interpolação bilinear durante a busca de movimento, por exemplo, quando se aplica vetores de movimento candidatos iniciais ou se refina esses vetores de movimento. Em outro exemplo, o codificador de vídeo pode ser configurado para realizar inicialmente a busca de movimento com o uso das posições de pixel-inteiro, seguido pela realização de busca de movimento em posições de pixel fracionárias com a melhor correspondência de posição de pixel-inteiro como o ponto inicial.[00213] Other aspects of this disclosure relate to interpolation techniques. For example, in accordance with aspects of this disclosure, interpolation techniques can be simplified to reduce complexity. As noted above in relation to Figure 2, motion search is typically performed using subpixel precision. Consequently, interpolation is required for non-integer pixel positions. To reduce computational complexity, in accordance with aspects of this disclosure, a video encoder may use an interpolation filter with shorter taps compared to normal motion compensation interpolation. In one example, the video encoder may use a bilinear interpolation filter during motion search, for example, when applying initial candidate motion vectors or refining such motion vectors. In another example, the video encoder may be configured to initially perform motion search using integer-pixel positions, followed by performing motion search on fractional pixel positions with the best integer-pixel position match. as the starting point.
[00214] Outras técnicas desta revelação se referem à derivação de informações de movimento para sub- blocos. Por exemplo, de acordo com os aspectos desta revelação, um codificador de vídeo pode dividir um bloco/PU em (não sobreposto) sub-PUs/sub-blocos com base em qualquer técnica de derivação de movimento. Quando uma PU for dividida em múltiplas sub-PUs de tamanho menor, o codificador de vídeo pode derivar um conjunto de informações de movimento único para cada sub-PU.[00214] Other techniques of this disclosure relate to deriving motion information for subblocks. For example, according to aspects of this disclosure, a video encoder may divide a block/PU into (non-overlapping) sub-PUs/sub-blocks based on any motion derivation technique. When a PU is divided into multiple sub-PUs of smaller size, the video encoder can derive a set of motion information unique to each sub-PU.
[00215] Em um exemplo para fins de ilustração, uma PU 32x32 pode ser dividida em 16 sub-PUs 8 x 8. Neste exemplo, o codificador de vídeo pode determinar diferentes índices de referência e/ou vetores de movimento para cada uma das sub-PUs 8 x 8. Em outros exemplos, sub-PUs podem ter outros tamanhos, por exemplo, 4 x 4, 2 x 2 ou 1 x 1.[00215] In an example for illustration purposes, a 32x32 PU can be divided into 16 8 x 8 sub-PUs. In this example, the video encoder can determine different reference indices and/or motion vectors for each of the sub-PUs. -8 x 8 PUs. In other examples, sub-PUs can have other sizes, for example, 4 x 4, 2 x 2, or 1 x 1.
[00216] Em alguns casos, o tamanho do sub- bloco/sub-PU pode ser predefinido e fixo independentemente do tamanho do bloco/PU. Em outros exemplos, uma profundidade dividida D para PUs pode ser definida, a qual controla o número de vezes que uma PU pode ser dividida de acordo com uma estrutura de árvore quadrática. Em alguns exemplos, um tamanho de sub-PU/sub-bloco mínimo pode ser predefinido ou sinalizado para indicar o tamanho alvo do sub-bloco/sub-PU para o qual o bloco atual/PU deverá ser dividido. O tamanho alvo pode ser o maior entre o tamanho de sub-PU/sub-bloco mínimo e o tamanho obtido dividindo-se o bloco atual D vezes de acordo com uma estrutura de árvore quadrática.[00216] In some cases, the sub-block/sub-PU size may be predefined and fixed independently of the block/PU size. In other examples, a split depth D for PUs can be defined, which controls the number of times a PU can be split according to a quadratic tree structure. In some examples, a minimum sub-PU/sub-block size may be predefined or signaled to indicate the target sub-block/sub-PU size to which the current block/PU should be split. The target size can be the greater of the minimum sub-PU/sub-block size and the size obtained by dividing the current block D times according to a quadratic tree structure.
[00217] De acordo com os aspectos desta revelação, um codificador de vídeo pode aproveitar as informações de movimento derivadas para uma PU quando se deriva informações de movimento para sub-PUs da PU. Por exemplo, o codificador de vídeo pode, para cada sub-PU, buscar por respectivas informações de movimento únicas estabelecendo-se as informações de movimento do bloco inteiro como o centro de busca (ponto de busca inicial). O codificador de vídeo pode, então, refinar o movimento para cada sub-PU. Alternativamente, o centro de busca de cada sub-PU pode ser derivado de uma lista de candidatos de ponto inicial.[00217] According to aspects of this disclosure, a video encoder can take advantage of motion information derived for a PU when deriving motion information for sub-PUs of the PU. For example, the video encoder may, for each sub-PU, search for respective unique motion information by setting the motion information of the entire block as the search center (initial search point). The video encoder can then refine the motion for each sub-PU. Alternatively, the search center of each sub-PU can be derived from a list of starting point candidates.
[00218] Em outro exemplo, uma lista de candidatos de vetor de movimento pode ser gerada para a sub- PU com o uso de qualquer uma das técnicas descritas no presente documento. O codificador de vídeo pode, então, verificar cada candidato na lista após verificar o centro de busca (por exemplo, o ponto de busca inicial derivado da PU). De acordo com os aspectos desta revelação, sub-PUs podem ser refinadas com o uso de qualquer uma das técnicas descritas no presente documento como sendo aplicáveis a blocos regulares. Em outros exemplos, o refinamento pode ser sempre ou condicionalmente pulado para sub-PUs após verificar a lista de candidatos de vetor de movimento para uma melhor correspondência da forma descrita acima. Uma condição possível pode ser se a melhor correspondência permanece o candidato indicado pelas informações de movimento da PU (por exemplo, o ponto de busca inicial) após verificar a lista de candidato. Se for verdadeiro, o codificador de vídeo pode pular o refinamento. De outro modo, o codificador de vídeo pode realizar o refinamento.[00218] In another example, a list of motion vector candidates can be generated for the sub-PU using any of the techniques described herein. The video encoder can then check each candidate in the list after checking the search center (e.g., the initial search point derived from the PU). According to aspects of this disclosure, sub-PUs can be refined using any of the techniques described herein as being applicable to regular blocks. In other examples, refinement may always or conditionally be skipped for sub-PUs after checking the list of motion vector candidates for a better match in the manner described above. One possible condition may be whether the best match remains the candidate indicated by the PU movement information (e.g., the initial search point) after checking the candidate list. If true, the video encoder can skip refinement. Otherwise, the video encoder can perform the refinement.
[00219] Em alguns exemplos, a filtração de vetor de movimento pode ser realizada para sub-PU a fim de corrigir um vetor de movimento errado isolado. Por exemplo, um codificador de vídeo pode usar um filtro de mediana com o vetor de movimento da sub-PU atual e vetores de movimento de até quatro sub-PUs vizinhas. De acordo com os aspectos desta revelação, quando se aplica transformadas, o codificador de vídeo pode considerar a PU inteira como um bloco inteiro de modo que uma transformada possa cruzar os limites sub-PU. Em outros exemplos, o codificador de vídeo pode aplicar transformadas a cada sub-PU de modo que o tamanho de transformada não seja maior do que o tamanho de sub-PU. Em alguns casos, quando a correspondência de modelo for usada, um PU completo também pode ser dividido adicionalmente em sub-PUs menores. Para sub-PUs cujos vizinhos espaciais estão todos na PU atual (seus modelos não estão disponíveis), o codificador de vídeo pode estabelecer seus vetores de movimento aos vetores de movimento derivados para a PU inteira.[00219] In some examples, motion vector filtering may be performed for sub-PU in order to correct an isolated erroneous motion vector. For example, a video encoder may use a median filter with the motion vector of the current sub-PU and motion vectors of up to four neighboring sub-PUs. According to aspects of this disclosure, when applying transforms, the video encoder may consider the entire PU as an entire block so that a transform may cross sub-PU boundaries. In other examples, the video encoder may apply transforms to each sub-PU such that the transform size is not greater than the sub-PU size. In some cases, when template matching is used, a complete PU can also be further divided into smaller sub-PUs. For sub-PUs whose spatial neighbors are all in the current PU (their models are not available), the video encoder can set their motion vectors to the derived motion vectors for the entire PU.
[00220] Em alguns exemplos, um codificador de vídeo pode codificar elementos de sintaxe separados que indicam se um bloco particular é dividido. Em outro exemplo, todos os blocos 2Nx2N com modo de correspondência bilateral estendido são adicionalmente divididos em partições pequenas e nenhum sinalizador adicional é sinalizado. O tamanho do sub-bloco pode ser predefinido ou sinalizado. Alternativamente, o tamanho do sub-bloco pode se basear no tamanho do bloco atual. Por exemplo, o tamanho de sub-bloco pode ser derivado como o maior número dentre dois valores. O primeiro valor é um tamanho de sub-bloco predefinido ou sinalizado mínimo (por exemplo, como 4 x 4 ou 8 x 8). O segundo valor é um tamanho relativo ao bloco atual, como (S»d)x(S»d) em que SxS é o tamanho de bloco atual, enquanto d é um valor predefinido ou sinalizado para indicar a profundidade de árvore quadrática com a qual o bloco atual é dividido em sub-blocos. Nos exemplos acima, deve ser compreendido que o termo PU é usado de modo intercambiável com o termo bloco e o termo sub-PU é usado de modo intercambiável com o termo sub-bloco.[00220] In some examples, a video encoder may encode separate syntax elements that indicate whether a particular block is split. In another example, all 2Nx2N blocks with extended bilateral matching mode are additionally divided into small partitions and no additional flags are signaled. The subblock size can be predefined or signaled. Alternatively, the sub-block size can be based on the current block size. For example, the subblock size can be derived as the larger of two values. The first value is a predefined or minimum flagged subblock size (for example, such as 4x4 or 8x8). The second value is a size relative to the current block, such as (S»d)x(S»d) where SxS is the current block size, while d is a predefined or signed value to indicate the quadratic tree depth with the which the current block is divided into sub-blocks. In the above examples, it should be understood that the term PU is used interchangeably with the term block and the term sub-PU is used interchangeably with the term sub-block.
[00221] Conforme notado acima, as técnicas descritas no presente documento podem ser usadas de modo independente ou em combinação. Como um exemplo, um processo de derivação de informações de movimento associado a um modo de derivação de informações de movimento (por exemplo, um modo de correspondência bilateral estendido, um modo de correspondência de modelo ou qualquer outro modo) pode incluir três etapas, apesar de a terceira etapa poder ser condicionalmente realizada com base em tipo de fatia, nível temporal, tipo de bloco, tamanho de bloco, ou sintaxe definida no fluxo de bits.[00221] As noted above, the techniques described in this document can be used independently or in combination. As an example, a motion information derivation process associated with a motion information derivation mode (e.g., an extended bilateral matching mode, a template matching mode, or any other mode) may include three steps, although The third step can be conditionally performed based on slice type, time level, block type, block size, or syntax defined in the bitstream.
[00222] Em uma primeira etapa, um codificador de vídeo pode formar uma lista de candidatos inicial de conjuntos unipreditos de informações de movimento para um bloco atual. O codificador de vídeo pode selecionar o candidato que tem o melhor ponto inicial a partir da lista, por exemplo, com base em um custo de correspondência. Em uma segunda etapa, o codificador de vídeo pode refinar o candidato selecionado para derivar as informações de movimento para o bloco atual. O refinamento também pode se basear em um custo de correspondência, conforme descrito no presente documento. O codificador de vídeo pode, então, opcionalmente dividir mais o bloco atual em sub-blocos conforme descrito no presente documento, e refinar cada vetor de movimento para cada sub-bloco. Finalmente, o codificador de vídeo pode aplicar compensação de movimento para o bloco atual com o uso das informações de movimento derivadas. Se a divisão tiver sido realizada, o codificador de vídeo pode aplicar a compensação de movimento em um sub-bloco por base de sub-bloco.[00222] In a first step, a video encoder may form an initial candidate list of unipredicted sets of motion information for a current block. The video encoder can select the candidate who has the best starting point from the list, for example, based on a matching cost. In a second step, the video encoder can refine the selected candidate to derive the motion information for the current block. Refinement may also be based on a matching cost, as described herein. The video encoder may then optionally further divide the current block into sub-blocks as described herein, and refine each motion vector for each sub-block. Finally, the video encoder can apply motion compensation to the current block using the derived motion information. If division has been performed, the video encoder can apply motion compensation on a sub-block by sub-block basis.
[00223] Em um exemplo, o seguinte pseudocódigo pode ser usado para reconstruir um bloco com o uso de um modo de derivação de informações de movimento, em que as informações de movimento são derivadas por correspondência bilateral ou correspondência de modelo. Quando a correspondência bilateral for usada, o bloco é dividido adicionalmente em sub-blocos (observe que o MV no presente contexto inclui informações de referência): RECONSTRUIR BLOCO B (COM TAMANHO WXH) EM FRUC Construir lista inicial se B for correspondência bilateral { Encontrar a melhor correspondência (por exemplo, correspondência bilateral) na lista inicial como o ponto inicial com a medição de correspondência bilateral Refinar o MV com base no ponto inicial com correspondência bilateral para obter o vetor de movimento MVB para o bloco B para cada sub-bloco no bloco B { utilizar MVB como o ponto inicial, refinar MV para cada sub- bloco fazer compensação de movimento para o sub-bloco com as informações de MV derivadas } } senão // correspondência de modelo { Encontrar a melhor correspondência (por exemplo, correspondência de modelo) na lista inicial como o ponto inicial com a medição de correspondência de modelo Refinar o MV com base no ponto inicial com correspondência de modelo }[00223] In an example, the following pseudocode can be used to reconstruct a block using a motion information derivation mode, wherein the motion information is derived by bilateral matching or template matching. When two-sided matching is used, the block is further divided into sub-blocks (note that the MV in the present context includes reference information): RECONSTRUCT BLOCK B (WITH SIZE WXH) IN FRUC Build initial list if B is two-sided matching { Find the best match (e.g. two-sided match) in the starting list as the starting point with two-sided matching measurement Refine the MV based on the starting point with two-sided matching to obtain the MVB motion vector for block B for each sub-block in block B { use MVB as the starting point, refine MV for each sub-block do motion compensation for the sub-block with the derived MV information } } else // template match { Find the best match (e.g. template match) in the starting list as the starting point with template matching measurement Refine the MV based on the starting point with template matching }
[00224] Por conseguinte, de acordo com os aspectos desta revelação, o codificador de vídeo 20 ou decodificador de vídeo 30 pode determinar um modo de interpolação de informações de movimento para determinar informações de movimento para um bloco atual (um bloco atualmente sendo codificado ou decodificado). Com o uso do modo de interpolação de informações de movimento (por exemplo, correspondência bilateral, correspondência de modelo ou outra técnica), o codificador de vídeo 20 ou decodificador de vídeo 30 pode determinar o melhor vetor de movimento candidato em uma lista de candidatos de vetor de movimento, por exemplo, o vetor de movimento que identifica um bloco de referência que corresponde intimamente ao bloco atual. O codificador de vídeo 20 ou decodificador de vídeo 30 pode usar o vetor de movimento candidato para identificar uma janela de busca em uma imagem de referência.[00224] Therefore, in accordance with aspects of this disclosure, the video encoder 20 or video decoder 30 may determine a motion information interpolation mode to determine motion information for a current block (a block currently being encoded or decoded). Using motion information interpolation mode (e.g., bilateral matching, template matching, or other technique), video encoder 20 or video decoder 30 can determine the best candidate motion vector from a list of candidate motion vectors. motion vector, for example, the motion vector that identifies a reference block that closely corresponds to the current block. The video encoder 20 or video decoder 30 may use the candidate motion vector to identify a search window in a reference image.
[00225] O codificador de vídeo 20 ou decodificador de vídeo 30 pode refinar o vetor de movimento candidato com base em um bloco de referência na janela de busca que corresponde inteiramente ao bloco atual. Isto é, o codificador de vídeo 20 ou decodificador de vídeo 30 pode determinar um novo vetor de movimento interpolado para o bloco atual com base no movimento entre o bloco de referência na janela de busca que corresponde intimamente ao bloco atual e ao bloco atual. O codificador de vídeo 20 ou decodificador de vídeo 30 pode, então, realizar a compensação de movimento para o bloco atual com o uso do vetor de movimento interpolado.[00225] Video encoder 20 or video decoder 30 may refine the candidate motion vector based on a reference block in the search window that entirely matches the current block. That is, the video encoder 20 or video decoder 30 may determine a new interpolated motion vector for the current block based on the movement between the reference block in the search window that closely corresponds to the current block and the current block. The video encoder 20 or video decoder 30 may then perform motion compensation for the current block using the interpolated motion vector.
[00226] Em alguns casos, o codificador de vídeo 20 ou o decodificador de vídeo 30 pode dividir o bloco atual em mais de um sub-bloco para fins de predição. Ademais, em outros exemplos, o codificador de vídeo 20 ou o decodificador de vídeo 30 pode realizar mais, menos ou uma disposição diferente de técnicas para interpolar informações de movimento.[00226] In some cases, video encoder 20 or video decoder 30 may divide the current block into more than one sub-block for prediction purposes. Furthermore, in other examples, video encoder 20 or video decoder 30 may perform more, less, or a different arrangement of techniques for interpolating motion information.
[00227] Por conseguinte, determinadas técnicas desta revelação podem ser generalizadas como uma ferramenta de codificação de nível de bloco que aproveita determinados conceitos do FRUC, dada a suposição de que um bloco atual de uma imagem atual pode ser considerado como predito pelas imagens de referência de modo semelhante a uma imagem atual pode ser considerada como interpolada por imagens de referência em FRUC. Em um exemplo, apenas os processos com base em movimento são usados para a ferramenta de codificação de nível de bloco. Em outro exemplo, apenas os processos com base em pixel são usados para a ferramenta de codificação de nível de bloco. Em outro exemplo, os processos com base em movimento ou os processos com base em pixel são usados para um dado bloco. Em outro exemplo, tanto os processos com base em pixel quantos os processos com base em movimento são usados para a ferramenta de codificação de nível de bloco. Em outro exemplo, outra sintaxe pode ser reutilizada ou predita a partir dos outros quadros temporais e podem ser utilizados para a ferramenta de codificação, como informações da árvore de codificação, SAO, ALF, RQT.[00227] Therefore, certain techniques from this disclosure can be generalized as a block-level coding tool that takes advantage of certain FRUC concepts, given the assumption that a current block of a current image can be considered as predicted by the reference images similarly to how a current image can be considered as interpolated by reference images in FRUC. In one example, only motion-based processes are used for the block-level encoding tool. In another example, only pixel-based processes are used for the block-level encoding tool. In another example, motion-based processes or pixel-based processes are used for a given block. In another example, both pixel-based processes and motion-based processes are used for the block-level encoding tool. In another example, other syntax can be reused or predicted from the other time frames and can be used for the encoding tool, such as encoding tree information, SAO, ALF, RQT.
[00228] A Figura 12 é um fluxograma que ilustra um processo exemplificativo para determinar um modo de derivação de informações de movimento para codificar um bloco de dados de vídeo. O processo exemplificativo da Figura 12 é descrito em relação a um codificador de vídeo, que pode ser configurado como codificador de vídeo 20, decodificador de vídeo 30 ou outro processador.[00228] Figure 12 is a flowchart illustrating an exemplary process for determining a mode of deriving motion information for encoding a block of video data. The exemplary process of Figure 12 is described with respect to a video encoder, which may be configured as a video encoder 20, video decoder 30, or other processor.
[00229] No exemplo da Figura 12, o codificador de vídeo pode selecionar um modo de derivação de movimento a partir de uma pluralidade de modos de derivação de movimento (200). Em geral, cada um dos modos de derivação de movimento pode incluir realizar uma busca de movimento por um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual. Por exemplo, em relação à correspondência de modelo, o codificador de vídeo pode realizar uma busca de movimento para identificar um modelo em uma imagem atual (por exemplo, um primeiro conjunto de dados de referência) que corresponde ao modelo em uma imagem de referência (por exemplo, um segundo conjunto de dados de referência). Em outro exemplo, em relação à movimentação bilateral, o codificador de vídeo pode realizar uma busca de movimento para identificar um bloco de referência em uma primeira imagem de referência (por exemplo, um primeiro conjunto de dados de referência) que corresponde a um segundo bloco de referência em uma segunda imagem de referência (por exemplo, um segundo conjunto de dados de referência). Os modos de derivação de movimento exemplificativos podem incluir, um modo de estimativa de movimento unilateral, um modo de correspondência bilateral, um modo de correspondência de modelo ou um modo com base em espelho.[00229] In the example of Figure 12, the video encoder may select a motion derivation mode from a plurality of motion derivation modes (200). In general, each of the motion derivation modes may include performing a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block. For example, in connection with template matching, the video encoder may perform a motion search to identify a template in a current image (e.g., a first set of reference data) that matches the template in a reference image ( for example, a second set of reference data). In another example, in connection with bilateral motion, the video encoder may perform a motion search to identify a reference block in a first reference image (e.g., a first reference data set) that corresponds to a second block reference on a second reference image (e.g., a second reference dataset). Exemplary motion derivation modes may include, a unilateral motion estimation mode, a bilateral matching mode, a template matching mode, or a mirror-based mode.
[00230] De acordo com alguns aspectos, o codificador de vídeo pode selecionar o modo de derivação de informações de movimento de acordo com um ou mais elementos de sintaxe inclusos em um fluxo de bits. Por exemplo, um decodificador de vídeo pode analisar sintaticamente e decodificar o um ou mais elementos de sintaxe a partir do fluxo de bits e determinar o modo de derivação de informações de movimento com base na sintaxe. Um codificador de vídeo pode testar a pluralidade de modos de derivação de informações de movimento, selecionar o modo que tem o melhor custo de RD e codificar o um ou mais elementos de sintaxe no fluxo de bits que indica o modo selecionado.[00230] In some aspects, the video encoder may select the mode of deriving motion information according to one or more syntax elements included in a bit stream. For example, a video decoder may parse and decode the one or more syntax elements from the bit stream and determine how to derive motion information based on the syntax. A video encoder may test the plurality of motion information derivation modes, select the mode that has the best RD cost, and encode the one or more syntax elements in the bit stream indicating the selected mode.
[00231] O codificador de vídeo pode determinar informações de movimento para o bloco com o uso do modo de derivação de movimento selecionado, que pode incluir determinar informações de movimento inicial com o uso do modo selecionado (202) e usar um processo de otimização para refinar as informações de movimento inicial (204). Por exemplo, o codificador de vídeo pode construir uma lista de candidatos de vetor de movimento com candidatos para determinar informações de movimento iniciais. As informações de movimento inicial podem fornecer um ponto inicial para refinar as informações de movimento, conforme descrito no presente documento.[00231] The video encoder may determine motion information for the block using the selected motion derivation mode, which may include determining initial motion information using the selected mode (202) and using an optimization process to refine initial motion information (204). For example, the video encoder may construct a motion vector candidate list with candidates to determine initial motion information. The initial motion information may provide a starting point for refining the motion information as described herein.
[00232] O codificador de vídeo pode, então, codificar o bloco com o uso das informações de movimento determinadas e sem codificar a sintaxe representativa das informações de movimento (206). Por exemplo, em casos em que o codificador de vídeo compreende um decodificador de vídeo, o decodificador de vídeo pode determinar um bloco de referência em uma imagem de referência com base nas informações de movimento determinadas, decodificar dados residuais para cada sub-bloco a partir de um fluxo de bits codificado e combinar o bloco de referência determinado e residual decodificado para reconstruir o bloco atual. Em casos em que o codificador de vídeo compreende um codificador de vídeo, o codificador de vídeo pode codificar dados residuais para o bloco atual em um fluxo de bits codificado sem índices de referência de codificação ou vetores de movimento para os dados residuais.[00232] The video encoder can then encode the block using the determined motion information and without encoding the syntax representing the motion information (206). For example, in cases where the video encoder comprises a video decoder, the video decoder may determine a reference block in a reference image based on the determined motion information, decode residual data for each sub-block from of an encoded bitstream and combine the given reference block and decoded residual to reconstruct the current block. In cases where the video encoder comprises a video encoder, the video encoder may encode residual data for the current block into an encoded bit stream without coding reference indices or motion vectors for the residual data.
[00233] A Figura 13 é um fluxograma que ilustra um processo exemplificativo para derivar um vetor de movimento para codificar um bloco de dados de vídeo. O processo exemplificativo da Figura 13 é descrito em relação a um codificador de vídeo, que pode ser configurado como codificador de vídeo 20, decodificador de vídeo 30 ou outro processador.[00233] Figure 13 is a flowchart illustrating an exemplary process for deriving a motion vector for encoding a block of video data. The exemplary process of Figure 13 is described with respect to a video encoder, which may be configured as a video encoder 20, video decoder 30, or other processor.
[00234] O codificador de vídeo pode gerar uma lista de candidatos de vetor de movimento (210). A lista de vetores de movimento candidatos pode incluir um ou mais candidatos de vetor de movimento que podem ser usados para derivar informações de movimento para o bloco atual. Em alguns exemplos, os candidatos de vetor de movimento podem ser determinados a partir dos blocos espacialmente vizinhos, blocos temporais ou a partir de outros locais.[00234] The video encoder may generate a list of motion vector candidates (210). The list of candidate motion vectors may include one or more motion vector candidates that may be used to derive motion information for the current block. In some examples, motion vector candidates may be determined from spatially neighboring blocks, temporal blocks, or from other locations.
[00235] O codificador de vídeo pode determinar um candidato a partir da lista para derivar informações de movimento (212). Em alguns exemplos, o codificador de vídeo pode realizar um ou mais cálculos de custo para determinar o candidato com o uso de um modo de derivação de movimento particular. Por exemplo, o codificador de vídeo pode determinar um custo de correspondência para um primeiro conjunto de dados de referência e um segundo conjunto de dados de referência, que pode incluir um custo associado aos respectivos vetores de movimento, conforme descrito no presente documento.[00235] The video encoder may determine a candidate from the list to derive motion information (212). In some examples, the video encoder may perform one or more cost calculations to determine the candidate using a particular motion derivation mode. For example, the video encoder may determine a matching cost for a first set of reference data and a second set of reference data, which may include a cost associated with respective motion vectors, as described herein.
[00236] O codificador de vídeo pode, então, determinar o vetor de movimento derivado com base no candidato determinado (214). Por exemplo, o codificador de vídeo pode refinar o candidato determinado para determinar o vetor de movimento derivado com o uso do modo de derivação de movimento. O codificador de vídeo pode, então, codificar o bloco com o uso do vetor de movimento derivado (216). Por exemplo, em casos em que o codificador de vídeo compreende um decodificador de vídeo, o decodificador de vídeo pode determinar um bloco de referência em uma imagem de referência com base no vetor de movimento derivado, decodificar dados residuais para cada sub-bloco a partir de um fluxo de bits codificado e combinar o bloco de referência determinado e residual decodificado para reconstruir o bloco atual. Em casos em que o codificador de vídeo compreende um codificador de vídeo, o codificador de vídeo pode codificar dados residuais para o bloco atual em um fluxo de bits codificado sem codificar o vetor de movimento derivado.[00236] The video encoder can then determine the derived motion vector based on the determined candidate (214). For example, the video encoder may refine the given candidate to determine the derived motion vector using the motion derivation mode. The video encoder can then encode the block using the derived motion vector (216). For example, in cases where the video encoder comprises a video decoder, the video decoder may determine a reference block in a reference image based on the derived motion vector, decode residual data for each sub-block from of an encoded bitstream and combine the given reference block and decoded residual to reconstruct the current block. In cases where the video encoder comprises a video encoder, the video encoder may encode residual data for the current block into an encoded bitstream without encoding the derived motion vector.
[00237] A Figura 14 é um fluxograma que ilustra um processo exemplificativo para derivar informações de movimento para sub-blocos de um bloco de dados de vídeo. O processo exemplificativo da Figura 14 é descrito em relação a um codificador de vídeo, que pode ser configurado como codificador de vídeo 20, decodificador de vídeo 30 ou outro processador.[00237] Figure 14 is a flowchart illustrating an exemplary process for deriving motion information for sub-blocks of a video data block. The exemplary process of Figure 14 is described with respect to a video encoder, which may be configured as a video encoder 20, video decoder 30, or other processor.
[00238] O codificador de vídeo pode derivar informações de movimento para um bloco atual (220). Em alguns exemplos, o codificador de vídeo pode usar qualquer combinação de técnicas de derivação de informações de movimento descritas no presente documento para derivar as informações de movimento. Por exemplo, o codificador de vídeo pode qualquer uma das técnicas descritas no presente documento para realizar uma busca de movimento para um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora do bloco atual (por exemplo, correspondência de modelo, correspondência bilateral ou similares).[00238] The video encoder can derive motion information for a current block (220). In some examples, the video encoder may use any combination of motion information derivation techniques described herein to derive motion information. For example, the video encoder may use any of the techniques described herein to perform a motion search for a first set of reference data that corresponds to a second set of reference data outside the current block (e.g., model, bilateral correspondence or similar).
[00239] De acordo com os aspectos desta revelação, o codificador de vídeo também pode dividir o bloco em uma pluralidade de sub-blocos (222). O codificador de vídeo pode derivar separadamente informações de movimento para respectivos sub-blocos que compreendem uma busca de movimento para um primeiro conjunto de dados de referência que corresponde a um segundo conjunto de dados de referência fora de cada respectivo sub-bloco (224). Novamente, o codificador de vídeo pode usar quaisquer técnicas descritas no presente documento para derivar as informações de movimento como, por exemplo, correspondência de modelo, correspondência bilateral, ou similares. Por exemplo, o codificador de vídeo pode usar o vetor de movimento derivado como um ponto inicial para derivar informações de movimento para cada um dos sub-blocos, e pode refinar adicionalmente as informações de movimento derivadas com o uso de qualquer combinação das técnicas de derivação de informações de movimento descritas no presente documento.[00239] In accordance with aspects of this disclosure, the video encoder may also divide the block into a plurality of sub-blocks (222). The video encoder may separately derive motion information for respective sub-blocks comprising a motion search for a first set of reference data corresponding to a second set of reference data outside each respective sub-block (224). Again, the video encoder may use any techniques described herein to derive the motion information such as, for example, template matching, bilateral matching, or the like. For example, the video encoder may use the derived motion vector as a starting point to derive motion information for each of the sub-blocks, and may further refine the derived motion information using any combination of the derivation techniques. movement information described in this document.
[00240] O codificador de vídeo pode, então, codificar cada um dos sub-blocos com base em informações de movimento derivadas sem elementos de sintaxe de codificação representativos das informações de movimento (226). Por exemplo, em casos em que o codificador de vídeo compreende um decodificador de vídeo, o decodificador de vídeo pode determinar um bloco de referência em uma imagem de referência para cada sub-bloco com base nas informações de movimento determinadas, decodificar dados residuais para cada sub- bloco a partir de um fluxo de bits codificado e combinar o bloco de referência determinado e residual decodificado para reconstruir cada sub-bloco. Em casos em que o codificador de vídeo compreende um codificador de vídeo, o codificador de vídeo pode codificar dados residuais para cada sub-bloco em um fluxo de bits codificado sem índices de referência de codificação ou vetores de movimento para os dados residuais.[00240] The video encoder may then encode each of the sub-blocks based on motion information derived without coding syntax elements representative of the motion information (226). For example, in cases where the video encoder comprises a video decoder, the video decoder may determine a reference block in a reference image for each sub-block based on the determined motion information, decode residual data for each sub-block from an encoded bit stream and combine the given reference block and decoded residual to reconstruct each sub-block. In cases where the video encoder comprises a video encoder, the video encoder may encode residual data for each sub-block into an encoded bit stream without coding reference indices or motion vectors for the residual data.
[00241] Deve ser reconhecido que, dependendo do exemplo, determinadas ações ou eventos de quaisquer uma das técnicas descritas no presente documento pode ser realizada em uma sequência diferente, podem ser adicionados, mesclados ou deixados totalmente de fora (por exemplo, nem todos as ações e eventos descritos são necessários para a prática das técnicas). Ademais, em determinados exemplos, ações ou eventos podem ser realizados de modo concomitante, por exemplo, através de processamento de múltiplos threads, processamento interrupto ou em múltiplos processadores, em vez de sequencialmente.[00241] It should be recognized that, depending on the example, certain actions or events of any of the techniques described herein may be performed in a different sequence, may be added, merged, or left out entirely (e.g., not all actions and events described are necessary for the practice of the techniques). Furthermore, in certain examples, actions or events may be performed concurrently, for example, through multiple thread processing, interruptive processing or on multiple processors, rather than sequentially.
[00242] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Caso implantadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em uma mídia legível por computador e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível como mídias de armazenamento de dados ou mídias de comunicação que incluem qualquer mídia que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, as mídias legíveis por computador podem, em geral, corresponder a (1) mídias de armazenamento legíveis por computador tangíveis que são não transitórias ou (2) uma mídia de comunicação como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que possam ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de dados e/ou código para a implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.[00242] In one or more examples, the described functions can be implemented in hardware, software, firmware or any combination thereof. If implemented in software, functions can be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, which include any media that facilitate the transfer of a computer program from one place to another , for example, according to a communication protocol. In this way, computer-readable media can generally correspond to (1) tangible computer-readable storage media that are non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, data structures and/or code for implementing the techniques described in this disclosure. A computer program product may include computer-readable media.
[00243] A título de exemplo, e não de limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é denominada adequadamente como mídia legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de inscrição digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro-ondas, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio como infravermelho, rádio e micro-ondas estão incluídos na definição de mídia. Deve ser compreendido, entretanto, que as mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são, em vez disso, direcionadas para mídias de armazenamento não transitórias e tangíveis. Disco magnético e disco óptico, conforme usado no presente documento, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu- ray, em que os discos magnéticos reproduzem geralmente os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers. As combinações do supracitado também devem ser abrangidas pelo escopo das mídias legíveis por computador.[00243] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, memory flash, or any other media that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is appropriately termed as computer-readable media. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscription line (DSL), or wireless technologies such as infrared , radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. . Magnetic disc and optical disc, as used herein, include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc, where magnetic discs generally reproduce data in a magnetic, while optical discs reproduce data optically with lasers. Combinations of the above shall also fall within the scope of computer-readable media.
[00244] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para propósitos gerais, circuitos integrados específicos para aplicativo (ASICs), matrizes de porta programável em campo (FPGAs) ou outro conjunto de circuitos lógicos equivalentes integrados ou distintos. Consequentemente, o termo "processador", conforme usado no presente documento pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.[00244] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or another set of integrated or distinct equivalent logic circuits. Consequently, the term "processor" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured for encoding and decoding, or incorporated into a combined codec. Furthermore, the techniques can be fully implemented in one or more circuits or logic elements.
[00245] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em combinação com software e/ou firmware adequados.[00245] The techniques of this disclosure can be implemented in a wide variety of devices or apparatus, including a handset, an integrated circuit (IC), or a set of ICs (e.g., a chip set). Various components, modules or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require performance by different hardware units. Instead, as described above, multiple units may be combined into a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors, as described above, in combination with suitable software and/or firmware. .
[00246] Vários exemplos foram descritos. Esses e outros exemplos estão no escopo das reivindicações a seguir.[00246] Several examples have been described. These and other examples are within the scope of the following claims.
Claims (12)
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562139572P | 2015-03-27 | 2015-03-27 | |
US62/139,572 | 2015-03-27 | ||
US201562182367P | 2015-06-19 | 2015-06-19 | |
US62/182,367 | 2015-06-19 | ||
US15/080,480 | 2016-03-24 | ||
US15/080,480 US11330284B2 (en) | 2015-03-27 | 2016-03-24 | Deriving motion information for sub-blocks in video coding |
PCT/US2016/024323 WO2016160605A1 (en) | 2015-03-27 | 2016-03-25 | Deriving motion information for sub-blocks in video coding |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112017020632A2 BR112017020632A2 (en) | 2018-06-26 |
BR112017020632B1 true BR112017020632B1 (en) | 2024-05-07 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020207821B2 (en) | Motion vector derivation in video coding | |
BR112021005357A2 (en) | improvements to history-based motion vector predictor | |
BR112020014522A2 (en) | IMPROVED DERIVATION OF MOTION VECTOR ON THE DECODER SIDE | |
BR112019027821A2 (en) | template pairing based on partial reconstruction for motion vector derivation | |
BR112019013684A2 (en) | motion vector reconstructions for bi-directional (bio) optical flow | |
BR112018006266B1 (en) | ADVANCED BIDIRECTIONAL OPTICAL FLOW FOR VIDEO CODING | |
BR112016023406B1 (en) | METHOD AND DEVICE FOR ENCODING OR DECODING VIDEO DATA, AND COMPUTER READABLE MEMORY | |
BR112016006574B1 (en) | TEMPORAL MOTION VECTOR PREDICTION BASED ON SUB PREDICTION UNIT (PU) IN HEVC AND SUB-PU DESIGN IN 3D-HEVC | |
BR112017020632B1 (en) | METHODS AND DEVICE FOR PROCESSING VIDEO DATA AND COMPUTER READABLE MEMORY | |
BR112017020627B1 (en) | MOTION VECTOR DERIVATION IN VIDEO CODING | |
BR112017020635B1 (en) | METHOD FOR DECODING VIDEO DATA, METHOD AND APPARATUS FOR ENCODING VIDEO DATA, AND COMPUTER READABLE MEMORY |