BR112017001100B1 - METHOD AND APPARATUS FOR DERIVING MOTION VECTOR FOR BLOCKS OF AN IMAGE - Google Patents
METHOD AND APPARATUS FOR DERIVING MOTION VECTOR FOR BLOCKS OF AN IMAGE Download PDFInfo
- Publication number
- BR112017001100B1 BR112017001100B1 BR112017001100-0A BR112017001100A BR112017001100B1 BR 112017001100 B1 BR112017001100 B1 BR 112017001100B1 BR 112017001100 A BR112017001100 A BR 112017001100A BR 112017001100 B1 BR112017001100 B1 BR 112017001100B1
- Authority
- BR
- Brazil
- Prior art keywords
- block
- sub
- motion
- current
- affine
- Prior art date
Links
Abstract
MÉTODO DE DERIVAÇÃO DE VETOR DE MOVIMENTO PARA CODIFICAÇÃO DE VÍDEO. São divulgados um método e um aparelho para derivar um vetor de movimento de sub-bloco para o sub-bloco corrente com base em uma função de modelo de movimento dependendo da localização do sub-bloco corrente. O vetor de movimento do sub-bloco derivado é então usado para codificar ou decodificar o sub-bloco. A função de modelo de movimento pode corresponder a uma função afim de modelo de movimento ou a uma função bilinear de modelo de movimento. Em uma modalidade, um novo modo de Fusão pode ser usado para aplicar uma predição de um bloco corrente por aplicação de predição com base em sub-blocos, usando o vetor de movimento de sub-bloco derivado da função de modelo de movimento. Em uma outra modalidade, um modo de inter-predição adicional pode ser usado para aplicar a predição de um bloco corrente por aplicação de predição com base em sub-blocos usando o vetor de movimento de sub-bloco derivado da função do modelo de movimento.MOTION VECTOR DERIVATION METHOD FOR VIDEO CODING. A method and apparatus for deriving a sub-block motion vector for the current sub-block based on a motion model function depending on the location of the current sub-block are disclosed. The motion vector of the derived sub-block is then used to encode or decode the sub-block. The motion model function can correspond to an affine motion model function or a bilinear motion model function. In one embodiment, a new Fusion mode may be used to apply a prediction of a current block by applying prediction based on sub-blocks, using the sub-block motion vector derived from the motion model function. In another embodiment, an additional inter-prediction mode can be used to apply the prediction of a current block by applying prediction based on sub-blocks using the sub-block motion vector derived from the motion model function.
Description
[001]A presente invenção reivindica prioridade ao pedido de patente PCT No. PCT/CN2014/082523, depositado em 18 de julho de 2014. O pedido de patente PCT é pelo presente integralmente incorporado ao presente documento a título de referência.[001] The present invention claims priority to PCT patent application No. PCT/CN2014/082523, filed on July 18, 2014. The PCT patent application is hereby fully incorporated into this document by way of reference.
[002]A presente invenção refere-se a uma codificação de vídeo. Mais especificamente, a presente invenção refere-se a uma derivação de vetor de movimento de um sub-bloco com base em uma função de modelo de movimento para a codificação de vídeo.[002] The present invention relates to video coding. More specifically, the present invention relates to a motion vector derivation of a sub-block based on a motion model function for video coding.
[003]A estimativa de movimento é uma técnica de codificação inter-frame eficaz para explorar a redundância temporal nas sequências de vídeo. A codificação inter-frame com compensação de movimento tem sido amplamente utilizada em várias normas de codificação de vídeo internacionais. A estimativa de movimento adotada em vários padrões de codificação é frequentemente uma técnica baseada em blocos, em que as informações de movimento, tais como o modo de codificação e o vetor de movimento são determinadas para cada macrobloco ou bloco de configuração semelhante. Além disso, a intracodificação é também aplicada de modo adaptativo, sendo a imagem processada sem referência a qualquer outra imagem. Os resíduos inter-preditos ou intra- preditos geralmente são tratados posteriormente por transformação, quantização e codificação de entropia para gerar uma corrente de bits de vídeo comprimido.[003] Motion estimation is an effective inter-frame coding technique for exploiting temporal redundancy in video sequences. Motion-compensated inter-frame coding has been widely used in several international video coding standards. Motion estimation adopted in various coding standards is often a block-based technique, where motion information such as coding mode and motion vector are determined for each macroblock or block of similar configuration. Furthermore, intracoding is also applied adaptively, with the image being processed without reference to any other image. The inter-predicted or intra-predicted residues are usually further treated by transformation, quantization and entropy coding to generate a compressed video bitstream.
[004]A comparação de blocos é um meio eficiente para se determinar o deslocamento entre as duas imagens temporais, onde o movimento do conteúdo entre duas imagens temporais é determinado em uma base de bloco por bloco. A estimativa de movimento baseada em blocos tem sido usada em padrões de codificação como a Codificação Avançada de Vídeo (Advanced Video Coding (AVC)/H.264) e a nova Codificação de Vídeo de Alta Eficiência (High Efficiency Video Coding (HEVC)), por exemplo. Em HEVC, por exemplo, a predição de movimento é realizada com base em uma unidade de predição (PU). O deslocamento entre os dois blocos correspondentes em duas imagens temporais é definido como sendo o vetor de movimento (MV). Na codificação de vídeo em 3D, se a imagem de referência for uma imagem codificada de um ponto de vista diferente, o deslocamento é chamado de vetor de disparidade (DV). Sem se desviar da generalidade, na presente invenção, o deslocamento pode ser referido a um MV.[004] Block comparison is an efficient means of determining the displacement between two temporal images, where the movement of content between two temporal images is determined on a block-by-block basis. Block-based motion estimation has been used in coding standards such as Advanced Video Coding (AVC)/H.264 and the new High Efficiency Video Coding (HEVC) , for example. In HEVC, for example, motion prediction is performed based on a prediction unit (PU). The displacement between the two corresponding blocks in two temporal images is defined as the motion vector (MV). In 3D video coding, if the reference image is an image encoded from a different point of view, the offset is called a disparity vector (DV). Without deviating from the generality, in the present invention, the displacement can be referred to as an MV.
[005]A pressuposição da compensação de movimento baseada em blocos é que todos os píxels dentro de um bloco sofrem o mesmo deslocamento e têm o mesmo MV. No entanto, em uma sequência de vídeo típica, tal movimento de translação dificilmente pode descrever com precisão o movimento real complexo no conteúdo. Portanto, a estimativa de movimento baseada em blocos não pode capturar movimentos complexos, como a rotação, a aproximação, e a deformação de objetos em movimento. É muito desejável se desenvolver uma estimativa de movimento que seja capaz de derivar informações de movimento para unidades de vídeo inferiores a um bloco inteiro.[005] The assumption of block-based motion compensation is that all pixels within a block experience the same displacement and have the same MV. However, in a typical video sequence, such translational motion can hardly accurately describe the actual complex motion in the content. Therefore, block-based motion estimation cannot capture complex motions such as rotation, approach, and deformation of moving objects. It is very desirable to develop a motion estimate that is capable of deriving motion information for video units smaller than an entire block.
[006]São divulgados um método e um aparelho para derivar um vetor de movimento de sub-bloco para o sub-bloco corrente dentro de um bloco corrente baseado em uma função de modelo de movimento dependendo da localização do sub- bloco corrente. O vetor de movimento de sub-bloco derivado é então usado para a codificação ou decodificação do sub- bloco. A função de modelo de movimento pode corresponder a uma função afim de modelo de movimento ou a uma função bilinear de modelo de movimento.[006] A method and apparatus for deriving a sub-block motion vector for the current sub-block within a current block based on a motion model function depending on the location of the current sub-block are disclosed. The derived sub-block motion vector is then used for encoding or decoding the sub-block. The motion model function can correspond to an affine motion model function or a bilinear motion model function.
[007]Quando a função de modelo de movimento corresponde à função afim de modelo de movimento representado por F(x, y) = a x x + b x y + e, e em que (x, y) é a localização de sub-bloco corrente e a, b e e são parâmetros do modelo afins associados à função afim de modelo de movimento. Quando o tamanho do bloco corrente for MxN, três vetores de movimento de parâmetros afins, MV_0, MV_1 e MV_2 são determinados para os locais (0,0), (H,0) e (0,N) respectivamente. Neste caso, os parâmetros afins do modelo são determinados de acordo com e = MV_0, a = (MV_1 - MV_0)/M e b = (MV_2 - MV_0)/N, e em que M e N são números inteiros positivos.[007] When the motion model function corresponds to the affine motion model function represented by F(x, y) = a x x + b x y + e, and where (x, y) is the current sub-block location and a, b and e are parameters of the affine model associated with the affine motion model function. When the current block size is MxN, three motion vectors with related parameters, MV_0, MV_1 and MV_2, are determined for locations (0,0), (H,0) and (0,N) respectively. In this case, the model's affine parameters are determined according to e = MV_0, a = (MV_1 - MV_0)/M and b = (MV_2 - MV_0)/N, and where M and N are positive integers.
[008]Os três vetores de movimento de parâmetros afins podem ser derivados com base em blocos codificados vizinhos do bloco corrente. Neste caso pode ser habilitado um modo afim de Fusão usando os três vetores de movimento de parâmetros afins, e os três vetores de movimento de parâmetros afins são inseridos em uma lista de candidatos de Fusão para a codificação ou decodificação do bloco corrente. No modo afim de Fusão, um vetor de movimento de sub-bloco é derivado para cada sub-bloco do bloco corrente com base na função afim do modelo de movimento e os três vetores de movimento de parâmetros afins. Além disso, cada sub-bloco é predito como utilizando o vetor de movimento sub-bloco, se o modo de impressão em série afim for utilizado para o bloco corrente. A sintaxe de elemento de alto nível pode ser sinalizada no conjunto de parâmetros de sequência (SPS), no conjunto de parâmetros de vídeo (VPS), no conjunto de parâmetros de imagem (PPS) ou no cabeçalho de segmento para indicar se o modo afim de Fusão está habilitado. O bloco corrente pode corresponder a uma unidade de predição (PU) e o modo afim de Fusão pode ser habilitado somente quando a PU pertence a um conjunto de tipos de partição de PU selecionado, em que o conjunto de tipos de partição de PU selecionado consiste em um ou mais tipos de partição de PU selecionados de {2Nx2N, 2NxN, Nx2N, 2NxnU, 2NxnD, nLx2N, nRx2N}. Um elemento de sintaxe pode ser sinalizado para o bloco corrente para indicar se o modo afim de Fusão é utilizado para o bloco corrente. Um segundo elemento de sintaxe para posições dos três vetores de parâmetros de movimento afins na lista de candidatos de Fusão pode ser sinalizado. O elemento de sintaxe também pode ser derivado implicitamente de um lado do decodificador. O elemento de sintaxe pode ser implicitamente derivado de acordo com seleções de modos de codificação, por exemplo, de acordo com os parâmetros de movimento de blocos vizinhos do bloco corrente, ou de acordo com parâmetros de movimento de blocos de referência do bloco corrente.[008] The three motion vectors of related parameters can be derived based on coded blocks neighboring the current block. In this case, an affine Fusion mode can be enabled using the three affine parameter motion vectors, and the three affine parameter motion vectors are inserted into a list of Fusion candidates for encoding or decoding the current block. In Fusion affine mode, a sub-block motion vector is derived for each sub-block of the current block based on the affine function of the motion model and the three affine parameter motion vectors. Furthermore, each sub-block is predicted to use the sub-block motion vector if the affine merge mode is used for the current block. High-level element syntax can be flagged in the sequence parameter set (SPS), video parameter set (VPS), picture parameter set (PPS), or segment header to indicate whether the affine mode Fusion is enabled. The current block can correspond to a prediction unit (PU) and the affine Fusion mode can be enabled only when the PU belongs to a selected PU partition type set, of which the selected PU partition type set consists on one or more PU partition types selected from {2Nx2N, 2NxN, Nx2N, 2NxnU, 2NxnD, nLx2N, nRx2N}. A syntax element can be flagged for the current block to indicate whether the related Fusion mode is used for the current block. A second syntax element for positions of the three affine motion parameter vectors in the Fusion candidate list can be flagged. The syntax element can also be derived implicitly from one side of the decoder. The syntax element may be implicitly derived according to coding mode selections, for example, according to the movement parameters of neighboring blocks of the current block, or according to movement parameters of reference blocks of the current block.
[009]Em uma outra modalidade, um ou mais dos três vetores de movimento, MV_0, MV_1 e MV_2 pode ser determinado por refinação respectiva de um ou mais preditores de MV para formar um ou mais vetores de movimento refinados utilizando-se uma ou mais diferenças de vetores de movimento (MVDs) transmitidas. Se for habilitado um modo de inter-predição adicional, um vetor de movimento de sub-bloco pode ser derivado para cada sub-bloco do bloco corrente com base na função de modelo de movimento e os três vetores de movimento depois de um ou mais dos três vetores de movimento que estiver sendo refinado. Cada sub- bloco é, então, predito utilizando-se um vetor de movimento de sub-bloco, se o modo de inter-predição adicional for utilizado para o bloco corrente. Um elemento de sintaxe pode ser sinalizado para o bloco corrente para indicar se o modo de inter-predição adicional é utilizado para o bloco corrente. O elemento de sintaxe pode ser sinalizado depois de um segundo elemento de sintaxe para um sinalizador de Fusão para o bloco corrente em uma corrente de bits, em que o sinalizador de Fusão indica se o bloco corrente foi codificado utilizando-se um modo de Fusão. O elemento de sintaxe pode também ser derivado implicitamente de um lado do decodificador.[009] In another embodiment, one or more of the three motion vectors, MV_0, MV_1 and MV_2 can be determined by respectively refining one or more MV predictors to form one or more refined motion vectors using one or more transmitted motion vector differences (MVDs). If an additional inter-prediction mode is enabled, a sub-block motion vector can be derived for each sub-block of the current block based on the motion model function and the three motion vectors after one or more of the three motion vectors being refined. Each sub-block is then predicted using a sub-block motion vector, if the additional inter-prediction mode is used for the current block. A syntax element may be flagged for the current block to indicate whether additional inter-prediction mode is used for the current block. The syntax element may be signaled after a second syntax element to a Fusion flag for the current block in a bitstream, where the Fusion flag indicates whether the current block was encoded using a Fusion mode. The syntax element can also be implicitly derived from one side of the decoder.
[0010]Quando um vetor de movimento de sub-bloco for derivado utilizando-se a função de modelo de movimento, o vetor de movimento de sub-bloco derivado pode ser quantizado com uma precisão de 1/4, 1/8, 1/12, 1/16 ou 1/32 de píxel. Quando o bloco corrente corresponde a uma unidade de predição (PU), o tamanho da sub-bloco pode ser de 4x4, 8x8 ou 16x16.[0010] When a sub-block motion vector is derived using the motion model function, the derived sub-block motion vector can be quantized with an accuracy of 1/4, 1/8, 1/ 12, 1/16 or 1/32 pixel. When the current block corresponds to a prediction unit (PU), the size of the sub-block can be 4x4, 8x8 or 16x16.
[0011]A Figura 1 ilustra um exemplo de derivação de vetor de movimento de sub-bloco para um sub-bloco com base em uma função de modelo de movimento de acordo com uma modalidade da presente invenção, sendo o tamanho do bloco NxN.[0011] Figure 1 illustrates an example of deriving a sub-block motion vector for a sub-block based on a motion model function in accordance with an embodiment of the present invention, the block size being NxN.
[0012]A Figura 2 ilustra um fluxograma exemplar para um sistema de codificação de vídeo incorporando uma derivação de vetor de movimento de sub-bloco com base em uma função de modelo de movimento de acordo com uma modalidade da presente invenção.[0012] Figure 2 illustrates an exemplary flowchart for a video coding system incorporating a sub-block motion vector derivation based on a motion model function in accordance with an embodiment of the present invention.
[0013]A descrição que segue é da melhor modalidade da invenção. Esta descrição é dada com a finalidade de ilustrar os princípios gerais da invenção e não deve ser considerada como uma limitação. O âmbito da invenção será mais bem determinado consultando-se as reivindicações anexas.[0013] The following description is of the best embodiment of the invention. This description is given for the purpose of illustrating the general principles of the invention and should not be considered as a limitation. The scope of the invention will be best determined by referring to the appended claims.
[0014]Para proporcionar uma melhor descrição de movimento para um bloco, modalidades de acordo com a presente invenção dividem um bloco corrente (uma unidade de predição (PU), por exemplo, em HEVC) em sub-blocos (sub-PU, por exemplo). Um vetor de movimento (a que se refere também como “vetor de movimento (MV) de sub-bloco derivado”) é derivado para cada sub-bloco de acordo com um modelo de movimento. Por exemplo, cada PU pode ser dividida em várias sub-PUs e o MV para cada sub-PU é derivado de acordo com uma função de modelo de movimento F (x, y), em que (x,y) é a localização do sub-PU e F é uma função que representa o modelo de movimento.[0014] To provide a better description of movement for a block, embodiments according to the present invention divide a current block (a prediction unit (PU), e.g., in HEVC) into sub-blocks (sub-PU, e.g. example). A motion vector (also referred to as a “derived sub-block motion vector (MV)”) is derived for each sub-block according to a motion model. For example, each PU can be divided into multiple sub-PUs and the MV for each sub-PU is derived according to a motion model function F(x,y), where (x,y) is the location of the sub-PU and F is a function that represents the movement model.
[0015]Em uma modalidade, o vetor de movimento de sub- bloco derivado, MV_cur para uma sub-PU é derivado por um modelo afim de movimento: MV_cur = a*x+b*y+e, (1) em que (x,y) é a localização do sub-PU e os três parâmetros a, b e e são os parâmetros afins do modelo. Uma vez que MV_cur corresponde ao vetor de movimento de sub- bloco derivado, e x e y são unidades escalares que representam as posições horizontal e vertical de uma sub- PU, a, b e e são vetores tendo as mesmas dimensões que o vetor de movimento (ou seja, são bidimensionais). A Figura 1 ilustra um exemplo de modelo de movimento afim para uma sub-PU (120) em uma PU (110), de acordo com uma modalidade da presente invenção. O tamanho para a PU (110) é NxN e a sub-PU (120) corrente está localizada na posição (x,y) no presente exemplo. No entanto, a PU na outra modalidade também pode ser retangular, tal como MxN em que M e N são números inteiros positivos. A localização da sub-PU (120) pode corresponder ao canto superior esquerdo de coordenadas da sub-PU (120). No entanto, outras localizações (o ponto central, por exemplo) da sub-PU (120) também podem ser utilizadas como a localização de sub-PU.[0015] In one embodiment, the derived sub-block motion vector, MV_cur for a sub-PU is derived by an affine motion model: MV_cur = a*x+b*y+e, (1) where ( x,y) is the location of the sub-PU and the three parameters a, b and e are the related parameters of the model. Since MV_cur corresponds to the derived subblock motion vector, and x and y are scalar units representing the horizontal and vertical positions of a subPU, a, b, and e are vectors having the same dimensions as the motion vector (i.e., are two-dimensional). Figure 1 illustrates an example of an affine motion model for a sub-PU (120) in a PU (110), in accordance with an embodiment of the present invention. The size for the PU (110) is NxN and the current sub-PU (120) is located at position (x,y) in the present example. However, the PU in the other embodiment can also be rectangular, such as MxN where M and N are positive integers. The location of the sub-PU (120) may correspond to the upper left coordinates of the sub-PU (120). However, other locations (the center point, for example) of the sub-PU (120) can also be used as the sub-PU location.
[0016]No modelo de movimento afim, conforme foi mencionado acima, os três vetores a, b e e têm que ser determinados para se obter as informações de movimento para blocos de imagens granulares (isto é, sub-PU (120)). Em uma modalidade, os parâmetros afins são representados por três MVs (também denominados como três vetores de movimento de parâmetros afins) designados como MV_0, MV_1 e MV_2 em locais (0,0), (n,0) e (0,N) respectivamente e N é um número inteiro positivo. Em seguida, o vetor de movimento de sub- bloco derivado, MV_cur é derivado de acordo com: MV_cur = MV_0+x*(MV_1-MV_0)/N+y*(MV_2-MV_0)/N. (2)[0016] In the affine motion model, as mentioned above, the three vectors a, b and e have to be determined to obtain motion information for granular image blocks (i.e., sub-PU (120)). In one embodiment, the affine parameters are represented by three MVs (also referred to as three affine parameter motion vectors) designated as MV_0, MV_1 and MV_2 at locations (0,0), (n,0) and (0,N) respectively and N is a positive integer. Then, the derived subblock motion vector, MV_cur is derived according to: MV_cur = MV_0+x*(MV_1-MV_0)/N+y*(MV_2-MV_0)/N. (two)
[0017]Em outras palavras, os três parâmetros afins de modelo correspondentes com a equação acima são: a = (MV_1-MV_0)/N, b = (MV_2-MV_0)/N, e e = MV_0.[0017] In other words, the three model-related parameters corresponding to the above equation are: a = (MV_1-MV_0)/N, b = (MV_2-MV_0)/N, and e = MV_0.
[0018]Embora o exemplo acima demonstre a derivação dos três parâmetros para um modelo afim de PU de NxN, a derivação dos três parâmetros de modelo afins para outros tamanhos de PU pode ser feita de forma semelhante. Se o tamanho de PU for MxN, por exemplo, o parâmetro de vetor para a pode ser calculado como sendo: a = (MV_1-MV_0)/M e os parâmetros afins do modelo para b e e continuam iguais ao acima.[0018] Although the example above demonstrates the derivation of the three parameters for an NxN PU affine model, the derivation of the three affine model parameters for other PU sizes can be done in a similar way. If the PU size is MxN, for example, the vector parameter for a can be calculated as: a = (MV_1-MV_0)/M and the related model parameters for b and e remain the same as above.
[0019]Os três vetores de movimento de parâmetros afins, MV_0, MV_1 e MV_2 podem ser derivados com base em blocos codificados vizinhos. Deve ser observado que o número e a localização dos vetores de movimento de parâmetros afins na modalidade anterior são dados para fins de ilustração somente, não sendo o presente pedido de patente limitado a eles.[0019] The three motion vectors of related parameters, MV_0, MV_1 and MV_2 can be derived based on neighboring coded blocks. It should be noted that the number and location of motion vectors of related parameters in the above embodiment are given for illustration purposes only, and the present patent application is not limited to them.
[0020]Em uma outra modalidade, o vetor de movimento de uma sub-PU (isto é, MV_cur) é derivado pelo modelo de movimento bilinear. O modelo bilinear precisa de quatro parâmetros, a, b, c e d. O componente X (isto é, MV_x) do vetor de movimento para um sub-bloco no ponto (x,y) do bloco corrente, por exemplo, pode ser derivado de acordo com um modelo de movimento bilinear como sendo a*(N-x)*(N- y)+b*x*(N-y)+c*y*(N-x)+d*x*y, onde o tamanho do bloco é NxN. De modo análogo, para o componente Y (isto é, MV_y) do vetor de movimento para o sub-bloco no ponto (x,y) pode ser derivado usando-se quatro parâmetros. Os parâmetros do modelo de movimento bilinear podem ser derivados a partir de blocos codificados vizinhos.[0020] In another embodiment, the motion vector of a sub-PU (i.e., MV_cur) is derived by the bilinear motion model. The bilinear model needs four parameters, a, b, c and d. The X component (i.e. MV_x) of the motion vector for a sub-block at point (x,y) of the current block, for example, can be derived according to a bilinear motion model as being a*(N-x) *(N- y)+b*x*(N-y)+c*y*(N-x)+d*x*y, where the block size is NxN. Similarly, the Y component (i.e. MV_y) of the motion vector for the sub-block at point (x,y) can be derived using four parameters. The parameters of the bilinear motion model can be derived from neighboring coded blocks.
[0021]Como mencionado anteriormente, as informações de movimento derivadas de sub-PU podem ser usadas para a estimativa de movimento/compensação para derivar resíduos de predição para codificação ou decodificação. A derivação de vetor de movimento para blocos de imagens mais granulares (sub-PU, por exemplo), utilizando uma função de modelo de movimento pode ser aplicada a um novo modo de Fusão (a que se refere também como “modo de Fusão afim”). Em um modo de Fusão convencional, um bloco corrente compartilha as informações de movimento de um bloco vizinho. Um preditor de vetor de movimento do bloco corrente é selecionado de uma lista de candidatos de Fusão, que inclui um conjunto de candidatos dentre blocos vizinhos no sentido espacial, temporal ou visual. Para o novo modo de Fusão, os três vetores de movimento de parâmetros afins podem ser obtidos com base em blocos vizinhos. Os três vetores de movimento de parâmetros afins podem ser adicionados à lista de candidatos de Fusão como um candidato de Fusão adicional. O novo modo de Fusão pode ser aplicado para tipo simétrico de partição de PU como 2Nx2N, 2NxN, Nx2N ou quaisquer outras partições de PU (as partições 2NxnU, 2NxnD, nLx2N e nRx2N às quais se refere como partição de movimento assimétricas (AMP), por exemplo, em HEVC). Alternativamente, o novo modo de Fusão pode ser aplicado apenas para o tipo de partição de PU 2Nx2N. Em uma outra modalidade, o novo modo de Fusão é aplicado apenas para tipos de partição de PU 2Nx2N, 2NxN e Nx2N. Em ainda outra modalidade, o novo candidato de Fusão é aplicado apenas para um conjunto de tipos específicos de partição de PU. Quando o novo modo de Fusão for selecionado para um bloco (uma PU, por exemplo), são derivados vetores de movimento para sub-PUs da PU de acordo com uma função de modelo de movimento, conforme já descrito. Cada sub-PU é então predita de acordo com um sub-bloco de vetor de movimento correspondente.[0021] As mentioned previously, sub-PU derived motion information can be used for motion estimation/compensation to derive prediction residuals for encoding or decoding. Motion vector derivation for more granular image blocks (sub-PU, for example) using a motion model function can be applied to a new Fusion mode (also referred to as “affine Fusion mode”). ). In a conventional Fusion mode, a current block shares the movement information of a neighboring block. A motion vector predictor of the current block is selected from a list of Fusion candidates, which includes a set of candidates from neighboring blocks in spatial, temporal or visual sense. For the new Fusion mode, the three motion vectors of related parameters can be obtained based on neighboring blocks. The three motion vectors of related parameters can be added to the Fusion candidate list as an additional Fusion candidate. The new Fusion mode can be applied to symmetric type of PU partition such as 2Nx2N, 2NxN, Nx2N or any other PU partitions (the 2NxnU, 2NxnD, nLx2N and nRx2N partitions which are referred to as asymmetric moving partition (AMP), e.g. in HEVC). Alternatively, the new Merge mode can only be applied to the 2Nx2N PU partition type. In another embodiment, the new Merge mode is applied only to PU partition types 2Nx2N, 2NxN and Nx2N. In yet another embodiment, the new Fusion candidate is applied only to a set of specific PU partition types. When the new Fusion mode is selected for a block (a PU, for example), motion vectors for sub-PUs of the PU are derived according to a motion model function, as already described. Each sub-PU is then predicted according to a corresponding motion vector sub-block.
[0022]Em uma modalidade, um elemento de sintaxe para indicar se o novo modo de Fusão é permitido (isto é, habilitado) para dados de vídeo associados podem ser sinalizadas em um nível de sequência tal como um conjunto de parâmetros de sequência (SPS), um nível de vídeo, tal como um conjunto de parâmetros de vídeo (VPS), um nível de imagem, tal como um conjunto de parâmetros de imagem (PPS) ou um conjunto de parâmetros adaptativos (APS), ou um nível de segmento tal como o cabeçalho de segmento. Quando o novo modo de Fusão é habilitado, a posição dos três vetores de movimento de parâmetros afins pode ser fixada em 0, 1, e 2 (isto é, nas três principais posições na lista de Fusão) na lista de candidatos de Fusão. A posição 0 refere-se a uma posição inicial (ou seja, a primeira) na lista de candidatos. As posições dos vetores de movimento de parâmetros afins também podem ser sinalizadas usando-se um elemento de sintaxe em um nível de sequência, tal como um conjunto de parâmetros de sequência (SPS), um nível de vídeo, tal como um conjunto de parâmetros de vídeo (VPS), um nível de imagem, tal como um conjunto de parâmetros de imagem (PPS) ou o conjunto de parâmetros adaptativos (APS), ou um nível de segmento como o cabeçalho de segmento.[0022] In one embodiment, a syntax element to indicate whether the new Fusion mode is allowed (i.e., enabled) for associated video data may be signaled at a sequence level such as a sequence parameter set (SPS ), a video level, such as a video parameter set (VPS), an image level, such as a picture parameter set (PPS) or an adaptive parameter set (APS), or a segment level such as the segment header. When the new Fusion mode is enabled, the position of the three motion vectors of related parameters can be fixed to 0, 1, and 2 (that is, the top three positions in the Fusion list) in the Fusion candidate list. position 0 refers to an initial position (i.e. the first) in the list of candidates. The positions of related parameter motion vectors can also be signaled using a syntax element at a sequence level, such as a sequence parameter set (SPS), a video level, such as a video (VPS), an image level such as a picture parameter set (PPS) or adaptive parameter set (APS), or a segment level such as the segment header.
[0023]A posição dos vetores de movimento de parâmetros afins também pode ser derivada implicitamente de um lado do decodificador. A posição dos vetores de movimento de parâmetros afins, por exemplo, pode ser implicitamente derivada de acordo com seleções de modos de codificação, com os parâmetros de movimento das PUs vizinhas do bloco corrente, ou com os parâmetros de movimento dos blocos de referência do bloco corrente.[0023] The position of motion vectors of related parameters can also be implicitly derived from one side of the decoder. The position of the motion vectors of related parameters, for example, can be implicitly derived according to coding mode selections, the motion parameters of the neighboring PUs of the current block, or the motion parameters of the block's reference blocks. chain.
[0024]Conforme já mencionado, os vetores de movimento utilizados como os vetores de movimento de parâmetros afins podem ser calculados para os locais respectivos, podendo também ser derivados com base nas informações de movimento de blocos vizinhos do bloco corrente. Em uma outra modalidade, os vetores de movimento utilizados como os vetores de movimento de parâmetros afins podem ser refinados com base na diferença de vetor de movimento (MVD) transmitida onde a MVD corresponde à diferença entre um vetor de movimento e um vetor de movimento preditivo. Além disso, um ou mais dos vetores de movimento utilizados como parâmetro de parâmetro de movimento afim podem ser refinados de acordo com a MVD.[0024] As already mentioned, the motion vectors used as the motion vectors of related parameters can be calculated for the respective locations, and can also be derived based on the motion information of neighboring blocks of the current block. In another embodiment, the motion vectors used as the motion vectors of related parameters can be refined based on the transmitted motion vector difference (MVD) where the MVD corresponds to the difference between a motion vector and a predictive motion vector. . Furthermore, one or more of the motion vectors used as a parameter of affine motion parameter can be refined according to the MVD.
[0025]Os vetores de movimento de parâmetros afins podem ser utilizados em um modo de inter-predição adicional, em que, pelo menos, um vetor de movimento de parâmetro afim foi refinado de acordo com a MVD. Em outras palavras, se o modo de inter-predição adicional for utilizado para o bloco corrente (uma PU, por exemplo), cada sub-PU no bloco corrente pode ser predita utilizando-se o vetor de movimento de sub-bloco correspondente, sendo o vetor de movimento de sub-bloco correspondente derivado com base em um ou mais vetores de movimento de parâmetros refinados afins.[0025] The affine parameter motion vectors can be used in an additional inter-prediction mode, in which at least one affine parameter motion vector has been refined according to the MVD. In other words, if the additional inter-prediction mode is used for the current block (a PU, for example), each sub-PU in the current block can be predicted using the corresponding sub-block motion vector, being the corresponding sub-block motion vector derived based on one or more affine refined parameter motion vectors.
[0026]Em um sistema de codificação que permite que os vetores de movimento de parâmetros afins refinados sejam usados como um outro modo de inter-predição, um sinalizador pode ser utilizado para indicar se o modo de inter-predição adicional está habilitado ou não. Este sinalizador pode ser utilizado após o sinalizador de Fusão para o bloco corrente em uma corrente de bits, indicando o sinalizador se o bloco corrente está codificado utilizando um modo de Fusão. O elemento de sintaxe é sinalizado, por exemplo, no conjunto de parâmetros de sequência (SPS), no conjunto de parâmetros de vídeo (VPS), conjunto de parâmetros de imagem (PPS), no conjunto de parâmetros adaptativos (APS) ou no cabeçalho de segmento para indicar se o modo de inter-predição adicional está habilitado ou não. O elemento de sintaxe também pode ser derivado implicitamente de um lado do decodificador. O elemento de sintaxe pode ser implicitamente derivado, por exemplo, de acordo com as seleções de modos de codificação, com os parâmetros de movimento de blocos vizinhos do bloco corrente, ou com parâmetros de movimento de blocos de referência do bloco corrente.[0026] In a coding system that allows the motion vectors of refined affine parameters to be used as another inter-prediction mode, a flag can be used to indicate whether the additional inter-prediction mode is enabled or not. This flag can be used after the Fusion flag for the current block in a bitstream, the flag indicating whether the current block is encoded using a Fusion mode. The syntax element is signaled, for example, in the parameter set of sequence (SPS), video parameter set (VPS), picture parameter set (PPS), adaptive parameter set (APS), or segment header to indicate whether additional inter-prediction mode is enabled or no. The syntax element can also be derived implicitly from one side of the decoder. The syntax element may be implicitly derived, for example, according to coding mode selections, movement parameters of neighboring blocks of the current block, or movement parameters of reference blocks of the current block.
[0027]Conforme mostrado na equação (1), o vetor de movimento de sub-bloco derivado pode ser um número fracionário. De acordo com uma modalidade, o sub-bloco de vetor de movimento derivado é quantizado para uma precisão de 1/4, 1/8, 1/12, 1/16 ou 1/32 de píxel. Em uma modalidade, sub-blocos consecutivos com o mesmo vetor de movimento de sub-bloco são fundidos em um sub-bloco maior para a compensação de movimento.[0027]As shown in equation (1), the derived sub-block motion vector can be a fractional number. According to one embodiment, the derived motion vector subblock is quantized to an accuracy of 1/4, 1/8, 1/12, 1/16, or 1/32 of a pixel. In one embodiment, consecutive subblocks with the same subblock motion vector are merged into a larger subblock for motion compensation.
[0028]Os blocos aos quais se refere na descrição acima podem corresponder a unidades de predição (PUs), usadas no padrão de Codificação de Vídeo de Alta Eficiência (HEVC). Neste caso, o tamanho de sub-bloco (isto é, da sub-PU) pode corresponder a 4x4, 8x8 ou 16x16.[0028] The blocks referred to in the description above may correspond to prediction units (PUs), used in the High Efficiency Video Coding (HEVC) standard. In this case, the sub-block size (that is, the sub-PU) can correspond to 4x4, 8x8 or 16x16.
[0029]No presente pedido, as informações de movimento para as unidades de vídeo (sub-PU, por exemplo) mais granular do que um bloco inteiro deve resultar em uma descrição de movimento mais precisa para o bloco do que a estimativa de movimento convencional para a totalidade do bloco.[0029] In the present application, motion information for the video units (sub-PU, for example) more granular than an entire block should result in a more accurate motion description for the block than conventional motion estimation. for the entire block.
[0030]Figura 2 ilustra um fluxograma exemplar para um sistema de codificação de vídeo incorporando derivação de vetor de movimento de sub-bloco utilizando uma função de modelo de movimento de acordo com uma modalidade da presente invenção. Os dados de entrada associados com um bloco corrente são recebidos como mostrado na etapa 210. Os dados de entrada associados com o bloco corrente podem ser acessados a partir de meios, tais como uma RAM ou DRAM em um sistema. Os dados de entrada associados com o bloco corrente também podem ser recebidos diretamente de um processador (tal como de uma unidade central de processamento, de um controlador ou de um processador de sinal digital). De um lado do codificador, os dados de entrada correspondem aos dados de píxels a serem codificados. No lado do decodificador, os dados de entrada correspondem a dados codificados a serem decodificados. Um sub-bloco corrente localizado em uma localização sub-bloco corrente no bloco corrente é determinado na etapa 220. Um vetor de movimento de sub-bloco derivado para o sub-bloco corrente é calculado com base em uma função de modelo de movimento dependendo localização do sub-bloco corrente na etapa 230. O sub-bloco corrente é então codificado ou decodificado usando o sub-bloco de vetor de movimento derivado para o sub-bloco corrente na etapa 240.[0030] Figure 2 illustrates an exemplary flowchart for a video coding system incorporating sub-block motion vector derivation using a motion model function in accordance with an embodiment of the present invention. Input data associated with a current block is received as shown in step 210. Input data associated with the current block can be accessed from media such as a RAM or DRAM in a system. The input data associated with the current block may also be received directly from a processor (such as a central processing unit, a controller, or a digital signal processor). On one side of the encoder, the input data corresponds to the pixel data to be encoded. On the decoder side, input data corresponds to encoded data to be decoded. A current sub-block located at a current sub-block location in the current block is determined in step 220. A derived sub-block motion vector for the current sub-block is calculated based on a motion model function depending on location. of the current sub-block in step 230. The current sub-block is then encoded or decoded using the motion vector sub-block derived for the current sub-block in step 240.
[0031]O fluxograma exemplar mostrado na Figura 2 tem a finalidade de ilustração. Os versados na técnica poderão rearranjar, combinar as etapas ou dividir uma etapa para a prática da presente invenção sem que haja desvio do espírito da presente invenção.[0031] The exemplary flowchart shown in Figure 2 is for illustration purposes. Those skilled in the art may rearrange, combine steps or divide a step for practicing the present invention without deviating from the spirit of the present invention.
[0032]A descrição acima é apresentada para permitir que os versados na técnica coloquem em prática a presente invenção, tal como foi proposto no contexto de uma aplicação particular e de suas exigências. Diversas modificações para as modalidades descritas serão evidentes para os versados na técnica, e os princípios gerais definidos aqui podem ser aplicados a outras modalidades. Portanto, a presente invenção não se destina a ser limitada às modalidades específicas mostradas e descritas, mas deve ser dado o mais vasto âmbito consistente com os princípios e características inovadoras aqui descritos. Na descrição detalhada acima, são ilustrados diversos detalhes específicos, de modo a proporcionar uma compreensão total da presente invenção. No entanto, deve ficar subentendido pelos versados na técnica como a presente invenção pode ser implementada.[0032] The above description is presented to allow those skilled in the art to put into practice the present invention, as proposed in the context of a particular application and its requirements. Various modifications to the described embodiments will be apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments. Therefore, the present invention is not intended to be limited to the specific embodiments shown and described, but should be given the broadest scope consistent with the principles and innovative features described herein. In the above detailed description, several specific details are illustrated in order to provide a full understanding of the present invention. However, it should be understood by those skilled in the art how the present invention may be implemented.
[0033]A modalidade da presente invenção, conforme descrito acima, pode ser implementada em diversos hardwares, códigos de software, ou em uma combinação dos dois. Uma modalidade da presente invenção pode, por exemplo, consistir em um circuito integrado em um chip ou programa de compressão de vídeo integrado no código de software de compressão de vídeo para executar o processamento aqui descrito. Uma modalidade da presente invenção pode também consistir no código de programa a ser executado em um Processador de Sinal Digital (DSP) para executar o processamento aqui descrito. A presente invenção pode também envolver um número de funções a serem executadas por um processador de computador, um processador de sinal digital, um microprocessador, ou arranjo de portas programável em campo (FPGA). Esses processadores podem ser configurados para executar tarefas específicas de acordo com a invenção, por meio da execução de código de software de leitura ótica ou código de firmware que define os métodos específicos incorporados à presente invenção. O código de software ou código de firmware podem ser desenvolvidos em diferentes linguagens de programação e formatos ou estilos diferentes. O código de software também pode ser compilado para diferentes plataformas alvo. No entanto, diferentes formatos de códigos, estilos e linguagens de códigos de software e outros meios de código de configuração para a execução das tarefas de acordo com a invenção não deverá se desviar do espírito e do âmbito da invenção.[0033] The embodiment of the present invention, as described above, can be implemented on various hardware, software codes, or a combination of the two. An embodiment of the present invention may, for example, consist of an integrated circuit on a video compression chip or program integrated into the video compression software code to perform the processing described herein. An embodiment of the present invention may also consist of program code to be executed in a Digital Signal Processor (DSP) to perform the processing described herein. The present invention may also involve a number of functions to be performed by a computer processor, a digital signal processor, a microprocessor, or field programmable gate array (FPGA). These processors can be configured to perform specific tasks in accordance with the invention by executing optical scanning software code or firmware code that defines the specific methods embodied in the present invention. Software code or firmware code can be developed in different programming languages and different formats or styles. Software code can also be compiled for different target platforms. However, different code formats, software code styles and languages, and other means of configuring code for performing tasks in accordance with the invention shall not deviate from the spirit and scope of the invention.
[0034]A presente invenção pode ser implementada em outras formas específicas sem se afastar do seu espírito ou características essenciais. Os exemplos descritos devem ser considerados em todos os aspectos apenas como ilustrativos e não restritivos. O âmbito da invenção é, portanto, indicado pelas reivindicações anexas e não pela descrição anterior. Todas as mudanças que incidirem no significado e alcance de equivalência das reivindicações devem ser abrangidos pelo seu âmbito.[0034] The present invention can be implemented in other specific forms without departing from its spirit or essential characteristics. The examples described should be considered in all respects as illustrative and not restrictive only. The scope of the invention is therefore indicated by the appended claims and not by the previous description. All changes that affect the meaning and scope of equivalence of the claims must be covered by its scope.
Claims (17)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/082523 WO2016008157A1 (en) | 2014-07-18 | 2014-07-18 | Methods for motion compensation using high order motion model |
CNPCT/CN2014/082523 | 2014-07-18 | ||
PCT/CN2015/084042 WO2016008408A1 (en) | 2014-07-18 | 2015-07-15 | Method of motion vector derivation for video coding |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112017001100A2 BR112017001100A2 (en) | 2018-07-10 |
BR112017001100A8 BR112017001100A8 (en) | 2022-11-08 |
BR112017001100B1 true BR112017001100B1 (en) | 2023-08-22 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11109052B2 (en) | Method of motion vector derivation for video coding | |
US20240283940A1 (en) | Inter-Prediction Mode Based Image Processing Method, and Apparatus Therefor | |
JP6689499B2 (en) | Image prediction method and related apparatus | |
CN110249628B (en) | Video encoder and decoder for predictive partitioning | |
BR112020015246A2 (en) | accessible hardware restricted motion vector refinement | |
BR112021002967A2 (en) | affine motion prediction | |
BR112020014654A2 (en) | Affine motion compensation in video encoding | |
US20180242004A1 (en) | Inter prediction mode-based image processing method and apparatus therefor | |
WO2019244118A1 (en) | Component-dependent sub-block dividing | |
BR112021000698A2 (en) | MIXING CANDIDATES WITH MULTIPLE HYPOTHESES | |
WO2016055001A1 (en) | Method of block vector clipping and coding for screen content coding and video coding | |
BR112020020976A2 (en) | IMPLIED TRANSFORM ADJUSTMENTS | |
BR122015013889B1 (en) | APPARATUS TO DECODE AN IMAGE | |
BR112013022641B1 (en) | METHOD TO DERIVE A CANDIDATE MOVEMENT PREDICTION VECTOR | |
US10735726B2 (en) | Apparatuses and methods for encoding and decoding a video coding block of a video signal | |
WO2014008817A1 (en) | Method and apparatus of inter-view sub-partition prediction in 3d video coding | |
BR112020003938A2 (en) | motion compensation at a finer precision than the motion vector differential | |
WO2018219938A1 (en) | Method and apparatus for low-complexity bi-directional intra prediction in video encoding and decoding | |
WO2020173477A1 (en) | Regression-based motion vector field based sub-block motion vector derivation | |
US10298951B2 (en) | Method and apparatus of motion vector prediction | |
KR20200015783A (en) | Intra prediction mode based image processing method and apparatus therefor | |
CN110944203A (en) | Motion vector plane mode at block level | |
CN110832854B (en) | Method and apparatus for intra prediction using interpolation | |
WO2018219925A1 (en) | Method and apparatus for signalling bi-directional intra prediction in video encoding and decoding | |
CN113302935A (en) | End motion refinement in video encoding/decoding systems |