BR112021018447B1 - Predição inter de vídeo baseada em fluxo óptico - Google Patents
Predição inter de vídeo baseada em fluxo óptico Download PDFInfo
- Publication number
- BR112021018447B1 BR112021018447B1 BR112021018447-3A BR112021018447A BR112021018447B1 BR 112021018447 B1 BR112021018447 B1 BR 112021018447B1 BR 112021018447 A BR112021018447 A BR 112021018447A BR 112021018447 B1 BR112021018447 B1 BR 112021018447B1
- Authority
- BR
- Brazil
- Prior art keywords
- matrix
- reference frame
- horizontal
- vertical
- predicted sample
- Prior art date
Links
- 230000003287 optical effect Effects 0.000 title claims abstract description 111
- 230000033001 locomotion Effects 0.000 claims abstract description 308
- 239000013598 vector Substances 0.000 claims abstract description 138
- 239000011159 matrix material Substances 0.000 claims description 290
- 238000000034 method Methods 0.000 claims description 145
- 238000006073 displacement reaction Methods 0.000 claims description 109
- 238000012545 processing Methods 0.000 claims description 85
- 230000002457 bidirectional effect Effects 0.000 claims description 18
- 239000000523 sample Substances 0.000 description 321
- 238000013139 quantization Methods 0.000 description 79
- 230000008569 process Effects 0.000 description 41
- 238000000638 solvent extraction Methods 0.000 description 39
- 230000006854 communication Effects 0.000 description 36
- 238000004891 communication Methods 0.000 description 36
- 238000004364 calculation method Methods 0.000 description 29
- 241000023320 Luma <angiosperm> Species 0.000 description 23
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 23
- 230000006870 function Effects 0.000 description 22
- 230000002829 reductive effect Effects 0.000 description 22
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 239000000872 buffer Substances 0.000 description 18
- 238000005192 partition Methods 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 16
- 230000009467 reduction Effects 0.000 description 14
- 238000003491 array Methods 0.000 description 13
- 230000006835 compression Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 13
- 238000013459 approach Methods 0.000 description 10
- 238000001914 filtration Methods 0.000 description 9
- 230000036961 partial effect Effects 0.000 description 9
- 230000000295 complement effect Effects 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 8
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000011664 signaling Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 101150114515 CTBS gene Proteins 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 239000013074 reference sample Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
PREDIÇÃO INTER DE VÍDEO BASEADA EM FLUXO ÓPTICO. Em algumas modalidades, um codificador de vídeo ou um decodificador de vídeo obtém um par de vetores de movimento para um bloco de codificação atual de um sinal de vídeo em relação a dois quadros de referência. Predições do bloco atual são geradas usando o par de vetores de movimento a partir de quadros de referência respectivos. O codificador de vídeo ou decodificador de vídeo determina adicionalmente um fluxo óptico para o bloco de codificação atual com base em valores de amostras nas predições. Um componente do fluxo óptico é determinado com base no outro componente do fluxo óptico. Fluxo óptico bipreditivo (BPOF) pode ser realizado no bloco de codificação atual usando o fluxo óptico determinado.
Description
[0001] Este pedido reivindica prioridade ao Pedido Provisório Indiano No IN201931010751, intitulado “An Encoder, A Decoder and Corresponding Methods for Inter Prediction Based on Optical Flow”, depositado em 19 de março de 2019, o qual é integralmente incorporado no presente documento a título de referência.
[0002] Esta revelação refere-se a codificação e decodificação de vídeo, especialmente, refere-se a um método e aparelho para predição inter bipreditiva usando fluxo óptico.
[0003] A codificação de vídeo (codificação e decodificação de vídeo, video encoding and decoding) é usada em uma ampla faixa de aplicações de vídeo digital, por exemplo, transmissão por broadcast de TV digital, transmissão de vídeo pela internet e redes móveis, aplicações de conversação em tempo real, tais como bate-papo de vídeo, videoconferência, DVD e discos Blu-ray, aquisição de conteúdo de vídeo e sistemas de edição e câmeras de vídeo de aplicações de segurança. A quantidade de dados de vídeo necessária para representar um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou, de outro modo, comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo geralmente são comprimidos antes de serem comunicados através de redes de telecomunicações dos dias modernos. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento, pelo fato de que os recursos de memória podem ser limitados.
[0004] Os dispositivos de compressão de vídeo frequentemente usam software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo, desse modo, a quantidade de data necessária para representar imagens de vídeo digital. Os dados comprimidos são, em seguida, recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, técnicas de compressão e descompressão aprimoradas que melhoram a taxa de compressão com pouco ou nenhum sacrifício na qualidade da imagem são desejáveis.
[0005] Na compressão de vídeo, predição inter é um processo de uso de amostras reconstruídas de imagens de referência previamente decodificadas especificando vetores de movimento em relação a um bloco atual. Estes vetores de movimento podem ser codificados como um residual de predição por meio do uso de preditores de vetor de movimento espacial ou temporal. Os vetores de movimento podem ter uma precisão de sub-pixel. De modo a derivar os valores de pixel precisos de sub-pixel nos quadros de referência a partir de valores de posição inteira reconstruídos, um filtro de interpolação é aplicado.
[0006] Bipredição refere-se a um processo onde a predição para o bloco atual é derivada como uma combinação ponderada de dois blocos de predição derivados usando dois vetores de movimento de duas áreas de imagem de referência. Neste caso, além dos vetores de movimento, os índices de referência para as imagens de referência das quais os dois blocos de predição são derivados também precisam ser codificados. Os vetores de movimento para o bloco atual também podem ser derivados através de um processo de fusão onde vetores de movimento e índices de referência de um vizinho espacial são herdados sem codificar quaisquer resíduos do vetor de movimento. Além dos vizinhos espaciais, os vetores de movimento de quadros de referência previamente codificados também são armazenados e usados como opções de fusão temporal com escala apropriada dos vetores de movimento para cuidar da distância aos quadros de referência em relação à distância aos quadros de referência para o bloco atual.
[0007] O fluxo óptico bipreditivo (BPOF) é um refinamento de movimento da amostra que é realizado na parte superior da compensação de movimento em bloco para bipredição. Visto que a estimativa convencional do fluxo óptico tem problemas de complexidade ou uma lacuna de eficiência de compressão, há uma necessidade de dispositivos e métodos aprimorados para predição inter com base no fluxo óptico.
[0008] Os exemplos da presente revelação fornecem aparelhos e métodos de predição inter para codificar e decodificar uma imagem através de predição inter bipreditiva usando fluxo óptico que pode melhorar a eficiência de codificação de um sinal de vídeo. A revelação é elaborada nos exemplos e reivindicações contidos neste arquivo.
[0009] De acordo com um primeiro aspecto, a revelação refere-se a um método para em predição inter baseada em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo, compreendendo: determinar um deslocamento de movimento horizontal, vx e um deslocamento de movimento vertical, vy do bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência e, o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
[0010] É observado que o bloco atual pode ser um bloco de qualquer tamanho, tal como um bloco 4x4. O bloco atual pode ser um sub-bloco de um quadro do sinal de vídeo. Os pixels do bloco atual podem ser referidos usando posições absolutas dos pixels em relação ao canto superior esquerdo (por exemplo, o pixel superior esquerdo) do quadro, por exemplo, (x, y), ou posições relativas dos pixels em relação ao canto superior esquerdo (por exemplo, o pixel superior esquerdo) do bloco, por exemplo, (xBlock + i, yBlock+j). Neste relatório, (xBlock, yBlock) é a coordenada do canto superior esquerdo (por exemplo, o pixel superior esquerdo) do bloco em relação ao canto superior esquerdo (por exemplo, o pixel superior esquerdo) do quadro.
[0011] Pode ser entendido que os termos “valor de pixel de predição/valor de amostra de predição”, os termos “amostra/pixel” e “localização de amostra/localização de pixel” podem ser trocados uns com os outros na presente revelação.
[0012] A primeira matriz e a segunda matriz podem ser qualquer arranjo bidimensional que inclui linhas e colunas e um elemento do arranjo pode ser referido usando (i, j) onde x é um índice horizontal/linha e y é um índice vertical/coluna. A faixa de i e j pode ser, por exemplo, i = xBlock -1, ..., xBlock + 4 e j = yBlock -1, ..., yBlock + 4. A primeira e segunda matrizes correspondem ou são determinadas para o bloco atual. Em alguns exemplos, o tamanho da primeira matriz é o mesmo que o tamanho da segunda matriz que pode ser maior do que o tamanho do bloco atual. Por exemplo, o tamanho da primeira matriz e da segunda matriz pode ser 6x6, enquanto o bloco atual tem um tamanho de 4x4.
[0013] Um elemento da primeira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na primeira matriz, (x, y) for a mesmo que a posição do segundo elemento na segunda matriz, (p, q), isto é, (x, y) = (p, q). O primeiro gradiente de amostra predita horizontal corresponde a um primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita horizontal é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita horizontal corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita horizontal é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o primeiro gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz. Do mesmo modo, o segundo gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o segundo gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz.
[0014] O primeiro gradiente de amostra predita vertical corresponde ao primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita vertical é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita vertical corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita vertical é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o primeiro gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz. Do mesmo modo, o segundo gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o segundo gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz.
[0015] Cada elemento de uma matriz é obtido a partir de uma soma de dois termos, que significa que o elemento pode ser determinado como a soma de dois termos ou como um valor depois de processar a soma de dois termos. O processamento pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. Similarmente, um termo é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz significa que o termo pode assumir o valor do elemento da primeira matriz ou depois do elemento da primeira matriz ser processado e aplicar o sinal do elemento da segunda matriz. O processamento do elemento da primeira matriz pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. O sinal do elemento x pode ser determinado como
[0016] A tecnologia apresentada neste relatório ajusta os valores de amostra bipredita do bloco atual com base no deslocamento de movimento horizontal e no deslocamento de movimento vertical. O deslocamento de movimento vertical é calculado com base em uma quinta variável s5 que envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz. Aplicar um sinal de um elemento para outro elemento não envolve operações de multiplicação. Do mesmo modo, a soma também não envolve nenhuma multiplicação. Como um resultado, a tecnologia de predição inter om base em BDOF apresentada neste relatório, elimina as operações de multiplicação. Em comparação com as abordagens tradicionais, a profundidade de bits da quinta variável s5 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Isto leva à redução da profundidade de bits do deslocamento de movimento horizontal, vx e do deslocamento de movimento vertical, vy e também à redução significante na complexidade computacional da predição e do tamanho do multiplicador.
[0017] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto, o deslocamento de movimento vertical é derivado com base no deslocamento de movimento horizontal, em uma segunda variável s2, em uma quarta variável s4 e na quinta variável s5, em que a segunda variável s2 indica uma soma de valores absolutos de elementos da segunda matriz; e a quarta variável s4 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da segunda matriz e um elemento de uma terceira matriz, e o elemento da terceira matriz corresponde ao elemento da segunda matriz, e cada elemento da terceira matriz é uma diferença que é obtida a partir de uma primeira amostra predita do primeiro quadro de referência que corresponde ao elemento da terceira matriz e uma segunda amostra predita do segundo quadro de referência que corresponde ao elemento da terceira matriz.
[0018] É observado que um elemento da terceira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na terceira matriz, (k, l) for a mesma que a posição do segundo elemento na segunda matriz, (p, q), isto é, (k, l) = (p, q). A primeira amostra predita corresponde a um primeiro quadro de referência do bloco atual significa que a primeira amostra predita está no primeiro quadro de referência do bloco atual. A segunda amostra predita corresponde ao segundo quadro de referência do bloco atual significa que a segunda amostra predita está no segundo quadro de referência do bloco atual. A primeira amostra predita corresponde ao elemento da terceira matriz significa que a primeira amostra predita está na posição (k, l) do elemento na terceira matriz. Do mesmo modo, a segunda amostra predita corresponde ao elemento da terceira matriz significa que a segunda amostra predita está na posição (k, l) do elemento na terceira matriz.
[0019] Os valores adicionais, a segunda variável s2 e a quarta variável s4 envolvidos no cálculo do deslocamento de movimento vertical do bloco atual também não envolvem operações de multiplicação. Similar à quinta variável $5, o cálculo da quarta variável s4 envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma terceira matriz. Aplicar um sinal de um elemento ao outro elemento não envolve operações de multiplicação. Além disso, a soma também não envolve nenhuma multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quarta variável s4 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Similarmente, o cálculo da segunda variável s2 envolve assumir valores absolutos de elementos da segunda matriz e nenhuma multiplicação está envolvida. Como tal, a profundidade de bits de s2 também é reduzida. Consequentemente, ao calcular o deslocamento de movimento vertical, a profundidade de bits dos resultados também é reduzida e a complexidade computacional é significantemente reduzida.
[0020] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, o deslocamento de movimento horizontal é derivado com base em uma primeira variável s1 e em uma terceira variável s3; a primeira variável s1 indica uma soma de valores absolutos de elementos da primeira matriz; e a terceira variável s3 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da primeira matriz e um elemento da terceira matriz, e o elemento da terceira matriz corresponde ao elemento da primeira matriz.
[0021] O elemento da terceira matriz (terceiro elemento) corresponde ao elemento da primeira matriz (primeiro elemento) significa que a posição do primeiro elemento na primeira matriz, (x, y) é a mesma que a posição do terceiro elemento na terceira matriz, (k, l), isto é, (x, y) = (k, l).
[0022] Ao derivar o deslocamento de movimento horizontal com base na primeira variável s1 e em uma terceira variável s3, a redução de complexidade computacional adicional pode ser obtida. Tanto o cálculo da primeira variável s1 quanto de uma terceira variável s3 não envolvem multiplicações. Em vez disso, assumir apenas valores absolutos, assumir operações de sinal e operações de soma estão envolvidas.
[0023] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, o deslocamento de movimento horizontal é determinado, de acordo com em que vx representa o deslocamento de movimento horizontal.
[0024] Isto mostra uma possível maneira de determinar vx com base em termos de autocorrelação e correlação cruzada s1 e s3. s1 e s3 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vx. Como tal, ao calcular o deslocamento de movimento horizontal desta maneira, o deslocamento de movimento horizontal pode ser determinado de forma eficiente.
[0025] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, o deslocamento de movimento vertical vy é determinado, de acordo com em que: vx representa o deslocamento de movimento horizontal; e vy representa o deslocamento de movimento vertical.
[0026] Isto mostra uma possível maneira de determinar vy com base em termos de autocorrelação e correlação cruzadas s2, s4 e s5. s2, s4 e s5 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vy. Como tal, ao calcular o deslocamento de movimento vertical desta maneira, o deslocamento de movimento vertical pode ser determinado de forma eficiente.
[0027] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, s1, $2> 53, 54 e s5 são determinados como: e em que: I(0)é obtido a partir dos valores de amostra predita que correspondem ao primeiro quadro de referência, e I(i é obtido a partir dos valores de amostra predita que correspondem ao segundo quadro de referência; Gx0 e Gxi indicam um conjunto de gradientes de amostra predita horizontais que corresponde ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; Gy0 e Gyi indicam um conjunto de gradientes de amostra predita verticais que corresponde ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; e i e j são números inteiros, em que um valor de i varia de -1 a 4, e um valor de j varia de -1 a 4.
[0028] Em alguns exemplos, I(0) é um bloco incluindo amostras preditas no primeiro quadro de referência que estão em torno de um sub-bloco correspondente ao bloco atual. Por exemplo, se o bloco atual for o bloco 4x4, I(0) pode ser um bloco 6x6 no primeiro quadro de referência em torno do bloco 4x4 que corresponde ao bloco 4x4 atual. Similarmente, I(1) é um bloco incluindo amostras preditas no segundo quadro de referência que estão em torno de um sub-bloco correspondente ao bloco atual. Por exemplo, se o bloco atual for o bloco 4x4, I(1) pode ser um bloco 6x6 no segundo quadro de referência em torno do bloco 4x4 que corresponde ao bloco 4x4 atual.
[0029] Se o bloco atual for um bloco 4x4 e tanto I(0) quanto I(1) são os blocos 6x6, cada um de Gx0 e GX1 é um bloco 6x6.
[0030] Note que ao calcular os termos de autocorrelação e correlação cruzada s1, s2. s3, s4 e s5, o deslocamento pode ser aplicado para ajustar a precisão e/ou a profundidade de bits de s1, s2, s3, s4 e s5.
[0031] É observado adicionalmente que s1, s2, s3, s4 e s5 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vx e vy. vx e vy são derivados com base em termos de autocorrelação e correlação cruzada como mostrado acima em relação ao s1, s2, s3, s4 e s5. vx e vy podem ser determinados como se o termo (I(1) - I(0)) for alterado para (I(0) - I(1)).
[0032] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, o Gx0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal, e o Gy0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical.
[0033] Em alguns exemplos, as duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal têm as mesmas coordenadas verticais e coordenadas horizontais diferentes. As duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical têm as mesmas coordenadas horizontais e coordenadas verticais diferentes. As duas amostras preditas podem ser, cada uma, processadas antes que a diferença seja calculada, tal como deslocamento para a direita, deslocamento para a esquerda ou corte.
[0034] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, o GX1 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal, e o Gy1 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical.
[0035] Em alguns exemplos, as duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal têm as mesmas coordenadas verticais e coordenadas horizontais diferentes. As duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical têm as mesmas coordenadas horizontais e coordenadas verticais diferentes. As duas amostras preditas podem ser, cada uma, processadas antes que a diferença seja calculada, tal como deslocamento para a direita, deslocamento para a esquerda ou corte.
[0036] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, os valores de amostra de predição correspondentes ao primeiro quadro de referência e os valores de amostra de predição correspondentes ao segundo quadro de referência são obtidos partir do primeiro e segundo quadros de referência, respectivamente, usando um par de vetores de movimento para o bloco atual em relação ao primeiro e segundo quadros de referência.
[0037] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, os valores de amostra de predição para o bloco atual são valores de amostra bipredita com base em predição de fluxo óptico bidirecional (BDOF).
[0038] De acordo com um segundo aspecto, a revelação refere-se a um dispositivo para codificar dados de vídeo, compreendendo: uma memória de dados de vídeo; e um codificador de vídeo, em que o codificador de vídeo é configurado para: determinar um deslocamento de movimento horizontal, vx e um deslocamento de movimento vertical, vy de um bloco atual de um sinal de vídeo, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
[0039] É observado que o bloco atual pode ser um bloco de qualquer tamanho, tal como um bloco 4x4. O bloco atual pode ser um sub-bloco de um quadro do sinal de vídeo. Os pixels do bloco atual podem ser referidos usando posições absolutas dos pixels em relação ao canto superior esquerdo do quadro, por exemplo, (x, y), ou posições relativas dos pixels em relação ao canto superior esquerdo do bloco, por exemplo, (xBlock + i, yBlock+j). Neste relatório, (xBlock, yBlock) é a coordenada do canto superior esquerdo do bloco em relação ao canto superior esquerdo do quadro.
[0040] A primeira matriz e a segunda matriz podem ser qualquer arranjo bidimensional que inclui linhas e colunas e um elemento do arranjo pode ser referido usando (i, j) onde x é um índice horizontal/linha e y é um índice vertical/coluna. A faixa de i e j pode ser, por exemplo, i = xBlock -1, ..., xBlock + 4 e j = yBlock -1, ..., yBlock + 4. A primeira e segunda matrizes correspondem ou são determinadas para o bloco atual. Em alguns exemplos, o tamanho da primeira matriz é o mesmo que o tamanho da segunda matriz que pode ser maior do que o tamanho do bloco atual. Por exemplo, o tamanho da primeira matriz e da segunda matriz pode ser 6x6, enquanto o bloco atual tem um tamanho de 4x4.
[0041] Um elemento da primeira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na primeira matriz, (x, y) for a mesma que a posição do segundo elemento na segunda matriz, (p, q), isto é, (x, y) = (p, q). O primeiro gradiente de amostra predita horizontal corresponde a um primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita horizontal é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita horizontal corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita horizontal é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o primeiro gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz. Do mesmo modo, o segundo gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o segundo gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz.
[0042] O primeiro gradiente de amostra predita vertical corresponde ao primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita vertical é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita vertical corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita vertical é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o primeiro gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz. Do mesmo modo, o segundo gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o segundo gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz.
[0043] Cada elemento de uma matriz é obtido a partir de uma soma de dois termos significa que o elemento pode ser determinado como a soma de dois termos ou como um valor depois de processar a soma de dois termos. O processamento pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. Similarmente, um termo é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz significa que o termo pode assumir o valor do elemento da primeira matriz ou depois do elemento da primeira matriz ser processado e aplicar o sinal do elemento da segunda matriz. O processamento do elemento da primeira matriz pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. O sinal do elemento x pode ser determinado como
[0044] A tecnologia apresentada neste relatório ajusta os valores de amostra bipredita do bloco atual com base no deslocamento de movimento horizontal e no deslocamento de movimento vertical. O deslocamento de movimento vertical é calculado com base em uma quinta variável s5 que envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz. Aplicar um sinal de um elemento a outro elemento não envolve operações de multiplicação. Do mesmo modo, a soma também não envolve nenhuma multiplicação. Como um resultado, a tecnologia predição inter com base em BDOF apresentada neste relatório elimina as operações de multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quinta variável s5 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Isto leva à redução da profundidade de bits do deslocamento de movimento horizontal, vx e o deslocamento de movimento vertical, vy e também à redução significante na complexidade computacional da predição e do tamanho do multiplicador.
[0045] De acordo com um terceiro aspecto, a revelação refere-se a um dispositivo para decodificar dados de vídeo, compreendendo: uma memória de dados de vídeo; e um decodificador de vídeo, em que o decodificador de vídeo é configurado para: determinar um deslocamento de movimento horizontal, vx e um deslocamento de movimento vertical, vy de um bloco atual de um sinal de vídeo, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
[0046] É observado que o bloco atual pode ser um bloco de qualquer tamanho, tal como um bloco 4x4. O bloco atual pode ser um sub-bloco de um quadro do sinal de vídeo. Os pixels do bloco atual podem ser referidos usando posições absolutas dos pixels em relação ao canto superior esquerdo do quadro, por exemplo, (x, y), ou posições relativas dos pixels em relação ao canto superior esquerdo do bloco, por exemplo, (xBlock + i, yBlock+j). Neste relatório, (xBlock, yBlock) é a coordenada do canto superior esquerdo do bloco em relação ao canto superior esquerdo do quadro.
[0047] A primeira matriz e a segunda matriz podem ser qualquer arranjo bidimensional que inclui linhas e colunas e um elemento do arranjo pode ser referido usando (i, j) onde x é um índice horizontal/linha e y é um índice vertical/coluna. A faixa de i e j pode ser, por exemplo, i = xBlock -1, ..., xBlock + 4 e j = yBlock -1, ..., yBlock + 4. A primeira e segunda matrizes correspondem ou são determinadas para o bloco atual. Em alguns exemplos, o tamanho da primeira matriz é o mesmo que o tamanho da segunda matriz que pode ser maior do que o tamanho do bloco atual. Por exemplo, o tamanho da primeira matriz e a segunda matriz pode ser 6x6, enquanto o bloco atual tem um tamanho de 4x4.
[0048] Um elemento da primeira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na primeira matriz, (x, y) for a mesmo que a posição do segundo elemento na segunda matriz, (p, q), isto é, (x, y) = (p, q). O primeiro gradiente de amostra predita horizontal corresponde a um primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita horizontal é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita horizontal corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita horizontal é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o primeiro gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz. Do mesmo modo, o segundo gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o segundo gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz.
[0049] O primeiro gradiente de amostra predita vertical corresponde ao primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita vertical é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita vertical corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita vertical é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o primeiro gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz. Do mesmo modo, o segundo gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o segundo gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz.
[0050] Cada elemento de uma matriz é obtido a partir de uma soma de dois termos significa que o elemento pode ser determinado como a soma de dois termos ou como um valor depois de processar a soma de dois termos. O processamento pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. Similarmente, um termo é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz significa que o termo pode assumir o valor do elemento da primeira matriz ou depois do elemento da primeira matriz ser processado e aplicar o sinal do elemento da segunda matriz. O processamento do elemento da primeira matriz pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. O sinal do elemento x pode ser determinado como
[0051] A tecnologia apresentada neste relatório ajusta os valores de amostra bipredita do bloco atual com base no deslocamento de movimento horizontal e no deslocamento de movimento vertical. O deslocamento de movimento vertical é calculado com base em uma quinta variável s5 que envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz. Aplicar um sinal de um elemento a outro elemento não envolve operações de multiplicação. Do mesmo modo, a soma também não envolve nenhuma multiplicação. Como um resultado, a tecnologia de predição inter com base em BDOF apresentada neste relatório elimina as operações de multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quinta variável s5 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Isto leva à redução da profundidade de bits do deslocamento de movimento horizontal, vx e o deslocamento de movimento vertical, vy e também à redução significante na complexidade computacional da predição e do tamanho do multiplicador.
[0052] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, o deslocamento de movimento vertical é derivado com base no deslocamento de movimento horizontal, em uma segunda variável s2, em uma quarta variável s4 e na quinta variável $5, em que: a segunda variável s2 indica uma soma de valores absolutos de elementos da segunda matriz; e a quarta variável s4 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da segunda matriz e um elemento de um terceira matriz, e o elemento da terceira matriz corresponde ao elemento da segunda matriz, e cada elemento da terceira matriz é uma diferença que é obtida a partir de uma primeira amostra predita do primeiro quadro de referência que corresponde ao elemento da terceira matriz e uma segunda amostra predita do segundo quadro de referência que corresponde ao elemento da terceira matriz.
[0053] É observado que um elemento da terceira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na terceira matriz, (k, l) for a mesma que a posição do segundo elemento na segunda matriz, (p, q), isto é, (k, l) = (p, q). A primeira amostra predita corresponde a um primeiro quadro de referência do bloco atual significa que a primeira amostra predita está no primeiro quadro de referência do bloco atual. A segunda amostra predita corresponde ao segundo quadro de referência do bloco atual significa que a segunda amostra predita está no segundo quadro de referência do bloco atual. A primeira amostra predita corresponde ao elemento da terceira matriz significa que a primeira amostra predita está na posição (k, l) do elemento na terceira matriz. Do mesmo modo, a segunda amostra predita corresponde ao elemento da terceira matriz significa que a segunda amostra predita está na posição (k, l) do elemento na terceira matriz.
[0054] Os valores adicionais, segunda variável s2 e a quarta variável s4 envolvidos no cálculo do deslocamento de movimento vertical do bloco atual também não envolvem operações de multiplicação. Similar à quinta variável $5, o cálculo da quarta variável s4 envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de um terceira matriz. Aplicar um sinal de um elemento a outro elemento não envolve operações de multiplicação. Além disso, a soma também não envolve nenhuma multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quarta variável s4 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Similarmente, o cálculo da segunda variável s2 envolve assumir valores absolutos de elementos da segunda matriz e nenhuma multiplicação está envolvida. Como tal, a profundidade de bits de s2 também é reduzida. Consequentemente, ao calcular o deslocamento de movimento vertical, a profundidade de bits dos resultados também é reduzida e a complexidade computacional é significantemente reduzida.
[0055] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, o deslocamento de movimento horizontal é derivado com base em uma primeira variável s1 e em uma terceira variável s3; a primeira variável s1 indica uma soma de valores absolutos de elementos da primeira matriz; e a terceira variável s3 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da primeira matriz e um elemento da terceira matriz, e o elemento da terceira matriz corresponde ao elemento da primeira matriz.
[0056] O elemento da terceira matriz (terceiro elemento) corresponde ao elemento da primeira matriz (primeiro elemento) significa que a posição do primeiro elemento na primeira matriz, (x, y) é a mesma que a posição do terceiro elemento na terceira matriz, (k, l), isto é, (x, y) = (k, l).
[0057] Ao derivar o deslocamento de movimento horizontal com base na primeira variável s1 e em uma terceira variável $3, a redução de complexidade computacional adicional pode ser obtida. Tanto o cálculo da primeira variável s1 quanto de uma terceira variável s3 não envolvem multiplicação. Em vez disso, apenas assumir valores absolutos, assumir operações de sinal e operações de soma estão envolvidos.
[0058] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como horizontal é determinado, de acordo com em que: vx representa o deslocamento de movimento horizontal.
[0059] Isto mostra uma maneira possível de determinar vx com base em termos de autocorrelação e correlação cruzada s1 e s3. s1 e s3 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vx. Como tal, ao calcular o deslocamento de movimento horizontal desta maneira, o deslocamento de movimento horizontal pode ser determinado de forma eficiente.
[0060] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, o deslocamento de movimento vertical vy é determinado, de acordo com em que: vx representa o deslocamento de movimento horizontal; e vy representa o deslocamento de movimento vertical.
[0061] Isto mostra uma maneira de determinar vy com base em termos de autocorrelação e correlação cruzada s2, s4 e s5. s2, s4 e s5 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vy. Como tal, ao calcular o deslocamento de movimento vertical desta maneira, o deslocamento de movimento vertical pode ser determinado de forma eficiente.
[0062] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, s1, s2, s3, s4 e s5 são determinados como: e em que: I(0)é obtido a partir dos valores de amostra predita que correspondem ao primeiro quadro de referência, e I(1) é obtido a partir dos valores de amostra predita que correspondem ao segundo quadro de referência; Gxo e GX1 indicam um conjunto de gradientes de amostra predita horizontais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; Gy0 e Gy1 indicam um conjunto de gradientes de amostra predita verticais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; e i e j são números inteiros, em que um valor de i varia de -1 a 4, e um valor de j varia de -1 a 4.
[0063] Em alguns exemplos, I(0) é um bloco incluindo amostras preditas no primeiro quadro de referência que estão em torno de um sub-bloco correspondente ao bloco atual. Por exemplo, se o bloco atual for o bloco 4x4, I(0) pode ser um bloco 6x6 no primeiro quadro de referência em torno do bloco 4x4 que corresponde ao bloco 4x4 atual. Similarmente, I(1) é um bloco incluindo amostras preditas no segundo quadro de referência que estão em torno de um sub-bloco correspondente ao bloco atual. Por exemplo, se o bloco atual for o bloco 4x4, I(1) pode ser um bloco 6x6 no segundo quadro de referência em torno do bloco 4x4 que corresponde ao bloco 4x4 atual.
[0064] Se o bloco atual for um bloco 4x4 e tanto I(0) quanto I(1) forem os blocos 6x6, cada um de Gx0 e Gxl é um bloco 6x6.
[0065] Note que ao calcular os termos de autocorrelação e correlação cruzada s1, s2, s3, s4 e s5, o deslocamento pode ser aplicado para ajustar a precisão e/ou a profundidade de bits de s1, s2, s3, s4 e s5.
[0066] É observado adicionalmente que s1, s2, s3, s4 e s5 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vx e vy. vx e vy são derivados com base em termos de autocorrelação e correlação cruzada como mostrado acima em relação ao s1, s2, s3, s4 e s5. vx e vy podem ser determinados como se o termo (I(1) - I(0)) for alterado para (I(0) - I(1)).
[0067] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, o Gx0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal, e o Gy0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical.
[0068] Em alguns exemplos, as duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal têm as mesmas coordenadas verticais e coordenadas horizontais diferentes. As duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical têm as mesmas coordenadas horizontais e coordenadas verticais diferentes. As duas amostras preditas podem ser, cada uma, processadas antes que a diferença seja calculada, tal como deslocamento para a direita, deslocamento para a esquerda ou corte.
[0069] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, o GX1 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal, e o Gy1 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical.
[0070] Em alguns exemplos, as duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal têm as mesmas coordenadas verticais e coordenadas horizontais diferentes. As duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical têm as mesmas coordenadas horizontais e coordenadas verticais diferentes. As duas amostras preditas podem ser, cada uma, processadas antes que a diferença seja calculada, tal como deslocamento para a direita, deslocamento para a esquerda ou corte.
[0071] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, os valores de amostra de predição correspondentes ao primeiro quadro de referência e os valores de amostra de predição correspondentes ao segundo quadro de referência são obtidos a partir do primeiro e segundo quadros de referência, respectivamente, usando um par de vetores de movimento para o bloco atual em relação ao primeiro e segundo quadros de referência.
[0072] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do segundo e terceiro aspectos ou do segundo e terceiro aspectos como tal, os valores de amostra de predição para o bloco atual são valores de amostra bipredita com base em predição de fluxo óptico bidirecional (BDOF).
[0073] De acordo com um quarto aspecto, a revelação refere-se a um aparelho para realizar o predição inter com base em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo, compreendendo: uma unidade de determinação configurada para determinar um deslocamento de movimento horizontal, vx e um deslocamento de movimento vertical, vy do bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e uma unidade de processamento de predição configurada para predizer valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
[0074] É observado que o bloco atual pode ser um bloco de qualquer tamanho, tal como um bloco 4x4. O bloco atual pode ser um sub-bloco de um quadro do sinal de vídeo. Os pixels do bloco atual podem ser referidos usando posições absolutas dos pixels em relação ao canto superior esquerdo do quadro, por exemplo, (x, y), ou posições relativas dos pixels em relação ao canto superior esquerdo do bloco, por exemplo, (xBlock + i, yBlock+j). Neste relatório, (xBlock, yBlock) é a coordenada do canto superior esquerdo do bloco em relação ao canto superior esquerdo do quadro.
[0075] A primeira matriz e a segunda matriz pode ser qualquer arranjo bidimensional que inclui linhas e colunas e um elemento do arranjo pode ser referido usando (i, j) onde x é um índice horizontal/linha e y é um índice vertical/coluna. A faixa de i e j pode ser, por exemplo, i = xBlock -1, ..., xBlock + 4 e j = yBlock -1, ..., yBlock + 4. A primeira e segunda matrizes correspondem ou são determinados para o bloco atual. Em alguns exemplos, o tamanho da primeira matriz é o mesmo que o tamanho da segunda matriz que pode ser maior do que o tamanho do bloco atual. Por exemplo, o tamanho da primeira matriz e da segunda matriz pode ser 6x6, enquanto o bloco atual tem um tamanho de 4x4.
[0076] Um elemento da primeira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na primeira matriz, (x, y) for a mesma que a posição do segundo elemento na segunda matriz, (p, q), isto é, (x, y) = (p, q). O primeiro gradiente de amostra predita horizontal corresponde a um primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita horizontal é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita horizontal corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita horizontal é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o primeiro gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz. Do mesmo modo, o segundo gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o segundo gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz.
[0077] O primeiro gradiente de amostra predita vertical corresponde ao primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita vertical é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita vertical corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita vertical é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o primeiro gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz. Do mesmo modo, o segundo gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o segundo gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz.
[0078] Cada elemento de uma matriz é obtido a partir de uma soma de dois termos significa que o elemento pode ser determinado como a soma de dois termos ou como um valor depois de processar a soma de dois termos. O processamento pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. Similarmente, um termo é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz significa que o termo pode assumir o valor do elemento da primeira matriz ou depois do elemento da primeira matriz ser processado e aplicar o sinal do elemento da segunda matriz. O processamento do elemento da primeira matriz pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. O sinal do elemento x pode ser determinado como movimento vertical é calculado com base em uma quinta variável s5 que envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz. Aplicar um sinal de um elemento a outro elemento não envolve operações de multiplicação. Do mesmo modo, a soma também não envolve nenhuma multiplicação. Como um resultado, a tecnologia de predição inter com base em BDOF apresentada neste relatório elimina as operações de multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quinta variável s5 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Isto leva à redução da profundidade de bits do deslocamento de movimento horizontal, vx e do deslocamento de movimento vertical, vy e também à redução significante na complexidade computacional da predição e do tamanho do multiplicador.
[0080] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, a unidade de determinação é configurada para determinar o deslocamento de movimento vertical com base no deslocamento de movimento horizontal, em uma segunda variável s2, em uma quarta variável s4 e na quinta variável $5, em que: a segunda variável s2 indica uma soma de valores absolutos de elementos da segunda matriz; e a quarta variável s4 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da segunda matriz e um elemento de uma terceira matriz, e o elemento da terceira matriz corresponde ao elemento da segunda matriz, e cada elemento da terceira matriz é uma diferença que é obtida a partir de uma primeira amostra predita do primeiro quadro de referência que corresponde ao elemento da terceira matriz e uma segunda amostra predita do segundo quadro de referência que corresponde ao elemento da terceira matriz.
[0081] É observado que um elemento da terceira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na terceira matriz, (k, l) for a mesma que a posição do segundo elemento na segunda matriz, (p, q), isto é, (k, l) = (p, q). A primeira amostra predita corresponde a um primeiro quadro de referência do bloco atual significa que a primeira amostra predita está no primeiro quadro de referência do bloco atual. A segunda amostra predita corresponde ao segundo quadro de referência do bloco atual significa que a segunda amostra predita está no segundo quadro de referência do bloco atual. A primeira amostra predita corresponde ao elemento da terceira matriz significa que a primeira amostra predita está na posição (k, l) do elemento na terceira matriz. Do mesmo modo, a segunda amostra predita corresponde ao elemento da terceira matriz significa que a segunda amostra predita está na posição (k, l) do elemento na terceira matriz.
[0082] Os valores adicionais, segunda variável s2 e a quarta variável s4 envolvidos no cálculo de deslocamento de movimento vertical do bloco atual também não envolvem operações de multiplicação. Similar à quinta variável $5, o cálculo da quarta variável s4 envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma terceira matriz. Aplicar um sinal de um elemento a outro elemento não envolve operações de multiplicação. Além disso, a soma também não envolve nenhuma multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quarta variável s4 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Similarmente, o cálculo da segunda variável s2 envolve assumir valores absolutos de elementos da segunda matriz e nenhuma multiplicação está envolvida. Como tal, a profundidade de bits de s2 também é reduzida. Consequentemente, ao calcular o deslocamento de movimento vertical, a profundidade de bits dos resultados também é reduzida e a complexidade computacional é significantemente reduzida.
[0083] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, a unidade de determinação é configurada para determinar o deslocamento de movimento horizontal com base em uma primeira variável s1 e em uma terceira variável $3, em que a primeira variável s1 indica uma soma de valores absolutos de elementos da primeira matriz; e a terceira variável s3 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da primeira matriz e um elemento da terceira matriz, e o elemento da terceira matriz corresponde ao elemento da primeira matriz.
[0084] O elemento da terceira matriz (terceiro elemento) corresponde ao elemento da primeira matriz (primeiro elemento) significa que a posição do primeiro elemento na primeira matriz, (x, y) é a mesmo que a posição do terceiro elemento na terceira matriz, (k, l), isto é, (x, y) = (k, l).
[0085] Ao derivar o deslocamento de movimento horizontal com base na primeira variável s1 e em uma terceira variável $3, a redução de complexidade computacional adicional pode ser obtida. Tanto o cálculo da primeira variável s1 quanto de uma terceira variável s3 não envolvem multiplicação. Em vez disso, assumir apenas os valores absolutos, assumir operações de sinal e operações de soma estão envolvidos.
[0086] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, a unidade de determinação é configurada para determinar o deslocamento de movimento horizontal, de acordo com em que: vx representa o deslocamento de movimento horizontal.
[0087] Isto mostra uma maneira possível de determinar vx com base em termos de autocorrelação e correlação cruzada s1 e s3. s1 e s3 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vx. Como tal, ao calcular o deslocamento de movimento horizontal desta maneira, o deslocamento de movimento horizontal pode ser determinado de forma eficiente.
[0088] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, a unidade de determinação é configurada para determinar o deslocamento de movimento vertical vy, de acordo com em que: vx representa o deslocamento de movimento horizontal; e Vy representa o deslocamento de movimento vertical.
[0089] Isto mostra uma maneira possível de determinar vy com base em termos de autocorrelação e correlação cruzada s2, s4 e $5. s2, s4 e s5 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vy. Como tal, ao calcular o deslocamento de movimento vertical desta maneira, o deslocamento de movimento vertical pode ser determinado de forma eficiente.
[0090] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, s1, s2, s3, s4 e s5 são determinados como: e em que I(0) é obtido a partir dos valores de amostra predita que correspondem ao primeiro quadro de referência, e I(1)é obtido a partir dos valores de amostra predita que correspondem ao segundo quadro de referência; Gx0 e Gxi indicam um conjunto dos gradientes de amostra predita horizontais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; Gy0 e Gyi indicam um conjunto dos gradientes de amostra predita verticais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; e i e j são números inteiros, em que um valor de i varia de -1 a 4, e um valor de j varia de -1 a 4.
[0091] Em alguns exemplos, I(0) é um bloco incluindo amostras preditas no primeiro quadro de referência que estão em torno de um sub-bloco correspondente ao bloco atual. Por exemplo, se o bloco atual for o bloco 4x4, I(0) pode ser um bloco 6x6 no primeiro quadro de referência em torno do bloco 4x4 que corresponde ao bloco 4x4 atual. Similarmente, I(1) é um bloco incluindo amostras preditas no segundo quadro de referência que estão em torno de um sub-bloco correspondente ao bloco atual. Por exemplo, se o bloco atual for o bloco 4x4, I(1) pode ser um bloco 6x6 no segundo quadro de referência em torno do bloco 4x4 que corresponde ao bloco 4x4 atual.
[0092] Se o bloco atual for um bloco 4x4 e tanto I(0) quanto I(1) forem os blocos 6x6, cada um de Gx0 e GX1 é um bloco 6x6.
[0093] Note que ao calcular os termos de autocorrelação e correlação cruzada s1, s2, s3, s4 e s5, o deslocamento pode ser aplicado para ajustar a precisão e/ou a profundidade de bits de s1, s2, s3, s4 e s5.
[0094] É observado adicionalmente que s1, s2, s3, s4 e s5 são determinados sem operações de multiplicação, o que reduz significantemente a complexidade computacional do processo para determinar vx e vy. vx e vy são derivados com base em termos de autocorrelação e correlação cruzada como mostrado acima em relação ao s1, s2, s3, s4 e s5. vx e vy podem ser determinados comose o termo (I(1) - I(0)) for alterado para (I(0) - I(1)).
[0095] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, o Gx0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal, e o Gy0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical.
[0096] Em alguns exemplos, as duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal têm as mesmas coordenadas verticais e coordenadas horizontais diferentes. As duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical têm as mesmas coordenadas horizontais e coordenadas verticais diferentes. As duas amostras preditas podem ser, cada uma, processadas antes que a diferença seja calculada, tal como deslocamento para a direita, deslocamento para a esquerda ou corte.
[0097] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, o GX1 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal, e o Gy1 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical.
[0098] Em alguns exemplos, as duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal têm as mesmas coordenadas verticais e coordenadas horizontais diferentes. As duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical têm as mesmas coordenadas horizontais e coordenadas verticais diferentes. As duas amostras preditas podem ser, cada uma, processadas antes que a diferença seja calculada, tal como deslocamento para a direita, deslocamento para a esquerda ou corte.
[0099] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, os valores de amostra de predição correspondentes ao primeiro quadro de referência e os valores de amostra de predição correspondentes ao segundo quadro de referência são obtidos a partir do primeiro e segundo quadros de referência, respectivamente, usando um par de vetores de movimento para o bloco atual em relação ao primeiro e segundo quadros de referência.
[0100] Em uma forma de implementação possível do dispositivo, de acordo com qualquer implementação anterior do quarto aspecto ou do quarto aspecto como tal, os valores de amostra de predição para o bloco atual são valores de amostra bipredita com base em predição de fluxo óptico bidirecional (BDOF).
[0101] O método, de acordo com algum aspecto da invenção pode ser realizado pelo aparelho, de acordo com algum aspecto da invenção. As características adicionais e formas de implementação do método, de acordo com algum aspecto da invenção resultam diretamente da funcionalidade do aparelho, de acordo com algum aspecto da invenção e diferentes formas de implementação.
[0102] É observado que um dispositivo de codificação pode ser um dispositivo de codificação ou dispositivo de decodificação.
[0103] De acordo com outro aspecto, a invenção refere-se a um aparelho para decodificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que fazem com que o processador realize o método mostrado anteriormente.
[0104] De acordo com outro aspecto, a invenção refere-se a um aparelho para codificar um fluxo de vídeo que inclui um processador e uma memória. A memória armazena instruções que fazem com que o processador realiza o método mostrado anteriormente.
[0105] De acordo com outro aspecto, uma mídia de armazenamento legível por computador tendo instruções armazenadas que quando executadas fazem com que um ou mais processadores configurados para codificar dados de vídeo é proposta. As instruções fazem com que um ou mais processadores realizem um método mostrado anteriormente.
[0106] De acordo com outro aspecto, um produto de programa de computador com um código de programa para realizar o método mostrado anteriormente quando o programa de computador roda em um computador, é fornecido.
[0107] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[0108] Para o propósito de clareza, qualquer uma das modalidades anteriores pode ser combinada com qualquer uma ou mais de outras modalidades anteriores para criar uma nova modalidade dentro do escopo da presente revelação.
[0109] Estas e outras características serão mais claramente compreendidas a partir da seguinte descrição detalhada tomada em conjunto com os desenhos anexos e reivindicações.
[0110] As modalidades adicionais da invenção serão descritas em relação às seguintes figuras, em que:
[0111] A Fig. 1A mostra o diagrama de bloco que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar as modalidades apresentadas neste relatório;
[0112] A Fig. 1B mostra um diagrama de bloco que mostra outro exemplo de um sistema de codificação de vídeo configurado para implementar as modalidades;
[0113] A Fig. 2 mostra um diagrama de bloco que mostra um exemplo de um codificador de vídeo configurado para implementar as modalidades apresentadas neste relatório.
[0114] A Fig. 3 é um diagrama de bloco que mostra uma estrutura de exemplo de um decodificador de vídeo configurado para implementar as modalidades apresentadas neste relatório.
[0115] A Fig. 4 é um diagrama de bloco que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação.
[0116] A Fig. 5 é um diagrama de bloco que ilustra outro exemplo de um aparelho de codificação ou um aparelho de decodificação.
[0117] A Fig. 6 é um diagrama que ilustra a relação entre uma janela 6x6 para calcular a autocorrelação e a correlação cruzada de gradientes e um sub-bloco 4x4.
[0118] A Fig. 7 é um diagrama que mostra um exemplo de fluxo óptico bipreditivo.
[0119] A Fig. 8 é um fluxograma que ilustra um exemplo de um processo para predição inter com base em fluxo óptico, de acordo com uma modalidade.
[0120] A FIG. 9 é um fluxograma que ilustra um exemplo de um método para predição inter com base em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo.
[0121] A FIG. 10 é um diagrama de bloco que mostra uma estrutura de exemplo de um aparelho para o predição inter com base em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo.
[0122] A FIG. 11 é um diagrama de bloco que mostra uma estrutura de exemplo de um sistema de fornecimento de conteúdo que fornece um serviço de liberação de conteúdo.
[0123] A FIG. 12 é um diagrama de bloco que mostra uma estrutura de um exemplo de um dispositivo terminal.
[0124] Nas várias figuras, os sinais de referência idênticos serão usados para características idênticas ou funcionalmente equivalentes.
[0125] Na seguinte descrição, a referência será feita aos desenhos anexos, que fazem parte da revelação, e em que são mostrados, à título da ilustração, aspectos específicos em que a presente invenção pode ser colocada. É entendido que outros aspectos podem ser utilizados e alterações estruturais ou lógicas podem ser feitas sem se afastar do escopo da presente invenção. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante, como o escopo da presente invenção é definido pelas reivindicações anexas.
[0126] Por exemplo, é entendido que uma revelação em relação a um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas do método específicas forem descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a descrita ou a pluralidade etapas do método (por exemplo, uma unidade que realiza uma ou a pluralidade de etapas, ou uma pluralidade de unidades, cada uma, que realiza uma ou mais da pluralidade de etapas), mesmo se tal ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade de uma ou pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade de uma ou pluralidade de unidades, ou uma pluralidade de etapas, cada uma, que realiza a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal ou pluralidade de etapas não forem explicitamente descritas ou ilustradas nas figuras. Além disso, é entendido que as características das várias modalidades e/ou aspectos exemplares descritos neste relatório podem ser combinados, a menos que especificamente observado de outro modo.
[0127] A presente revelação fornece uma tecnologia que computa um segundo componente do fluxo óptico com base em um primeiro componente computado do fluxo óptico e sem exigir qualquer multiplicação cara. A tecnologia pode ser utilizada tanto nas extremidades de codificação quanto de decodificação quando BPOF está habilitado. Fornece dispositivos e métodos aprimorados para predição inter com base em fluxo óptico, de modo que a eficiência de compressão seja melhorada em comparação ao BPOF convencional sem aumentar a complexidade computacional de BPOF.
[0128] De modo a descrever a invenção em detalhes, os seguintes termos, abreviações e notações serão usados: POC Contagem de Ordem de Imagem em ordem de exibição MV Vetor de Movimento MCP Predição de Compensação de Movimento HEVC Codificação de Vídeo de Alta Eficiência BPOF Correção de lado de decodificador baseada em fluxo óptico bipreditivo para MCP BDOF Fluxo óptico bidirecional
[0129] Como usado neste relatório, um sinal de vídeo ou sequência de vídeos é um conjunto de quadros subsequentes que apresentam uma imagem em movimento. Em outras palavras, um sinal de vídeo ou sequência de vídeos consiste em uma pluralidade de quadros (também referidos como imagens ou fotografias).
[0130] Como usado neste relatório, unidade de árvore de codificação (CTU) denota a raiz de uma estrutura de codificação da sequência de vídeos de um tamanho predefinido, contendo uma parte de um quadro (por exemplo, 64x64 pixels). Uma CTU pode ser particionada em várias CUs.
[0131] Como usado neste relatório, unidade de codificação (CU) denota uma estrutura de codificação básico da sequência de vídeos de um tamanho predefinido, contendo uma parte de um quadro, que pertence a uma CTU. Uma CU pode ser particionada em Cus adicionais.
[0132] Como usado neste relatório, unidade de predição (PU) denota uma estrutura de codificação, que é o resultado do particionamento de uma CU.
[0133] Como usado neste relatório, o termo colocalizado no presente documento denota um bloco ou região em um segundo quadro, isto é, um quadro de referência, correspondente a um bloco ou região real em um primeiro quadro, isto é, um quadro atual.
[0134] A codificação de vídeo tipicamente refere-se ao processamento de uma sequência de imagens, que forma o vídeo ou sequência de vídeos. Em vez do termo “imagem”, o termo “quadro” ou “imagem” pode ser usado como sinônimo no campo da codificação de vídeo. A codificação de vídeo (ou codificação, em geral) compreende duas partes: codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, tipicamente compreendendo o processamento (por exemplo, por compressão) de imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficiente). A decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso em comparação ao codificador para reconstruir as imagens de vídeo. As modalidades que se referem à “codificação” de imagens de vídeo (ou imagens, em geral) devem ser entendidas como relacionadas à “codificação” ou “decodificação” de imagens de vídeo ou sequências de vídeos respectivas. A combinação da parte de codificação e da parte de decodificação também é referida como CODEC (Coding and Decoding).
[0135] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). Em caso de codificação de vídeo com perdas, a compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados representando as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é menor ou pior em comparação à qualidade das imagens de vídeo originais.
[0136] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbrido com perdas” (isto é, combinam predição espacial e temporal no domínio de amostra e codificação de transformada bidimensional para aplicar a quantização no domínio de transformada). Cada imagem de uma sequência de vídeos é tipicamente particionada em um conjunto de blocos não sobrepostos e a codificação é tipicamente realizada em um nível de bloco. Em outras palavras, no codificador, o vídeo é tipicamente processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, por meio do uso de predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformando o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a ser transmitida (compressão). No decodificador, o processamento inverso comparado ao codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o loop de processamento de decodificador, tal que ambos irão gerar predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processamento, isto é, codificação, de blocos subsequentes.
[0137] As modalidades de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritas em relação às Figs. 1A a 3.
[0138] A Fig. 1A é um diagrama de bloco esquemático que ilustra um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10, abreviado) que pode implementar as técnicas apresentadas neste relatório. O codificador de vídeo 20 (ou codificador 20, abreviado) e o decodificador de vídeo 30 (ou decodificador 30, abreviado) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar as técnicas, de acordo com vários exemplos descritos neste relatório.
[0139] Como mostrado na Fig. 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 21. O dispositivo de origem 12 inclui um codificador 20 e pode, adicionalmente, incluir uma fonte de imagem 16, um pré-processador (ou unidade de pré-processamento) 18, tal como um pré- processador de imagem 18, e uma interface de comunicação ou unidade de comunicação 22.
[0140] A fonte de imagem 16 pode incluir qualquer tipo de dispositivo de captura de imagem, tal como uma câmera para capturar uma imagem do mundo real, qualquer tipo de um dispositivo de geração de imagem, tal como um processador gráfico de computador para gerar uma imagem animada por computador. A fonte de imagem 16 também pode incluir qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem gerada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação dos mesmos (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento que armazene qualquer uma das imagens anteriormente mencionadas.
[0141] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também podem ser referidos como imagem bruta ou dados de imagem brutos 17. O pré-processador 18 é configurado para receber os dados de imagem (brutos) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré- processados 19. O pré-processamento realizado pelo pré-processador 18 pode incluir recorte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou redução de ruído.
[0142] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (os detalhes adicionais serão descritos abaixo, por exemplo, em relação à Fig. 2). A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta. O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e pode incluir adicionalmente uma interface de comunicação ou unidade de comunicação 28, um pós- processador 32 (ou unidade de pós-processamento 32) e um dispositivo de exibição 34. A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados , e fornecer os dados de imagem codificados 21 para o decodificador 30.
[0143] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 21 através de um enlace de comunicação direta entre o dispositivo de origem 12 e o dispositivo de destino 14, tal como uma conexão direta com fio ou sem fio, ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação da mesma, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0144] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação ou processamento de transmissão para transmissão através de um enlace de comunicação ou rede de comunicação. A interface de comunicação 28, que forma a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação e processamento de transmissão e/ou desempacotamento para obter os dados de imagem codificados 21.
[0145] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais como indicado pela seta para o canal de comunicação 13 na Fig. 1A apontando do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0146] O decodificador 30 do dispositivo de destino 14 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (os detalhes adicionais serão descritos abaixo, por exemplo, em relação à Fig. 3 ou Fig. 5). O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruída), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, recorte ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0147] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou observador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de display para representar a imagem reconstruída, por exemplo, um display ou monitor integrado ou externo. Os displays podem, por exemplo, compreender displays de cristal líquido (LCD), displays de diodos emissores de luz orgânica (OLED), displays de plasma, projetores, displays de micro LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer tipo de outro display.
[0148] Embora a Fig. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades dos dispositivos também podem compreender ambos ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separado ou qualquer combinação dos mesmos.
[0149] Como será evidente para o técnico no assunto com base na descrição, a existência e divisão (exata) das funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14 como mostrado na Fig. 1A podem variar dependendo do dispositivo e aplicação reais.
[0150] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou tanto o codificador 20 quanto o decodificador 30 podem ser implementados através de circuitos de processamento como mostrado na Fig. 1B, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos da aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou quaisquer combinações dos mesmos. O codificador 20 pode ser implementado através de circuitos de processamento 46 para incorporar os vários módulos como debatido em relação ao codificador 20 da FIG. 2 e/ou qualquer outro sistema de codificador ou sub-sistema descrito neste relatório. O decodificador 30 pode ser implementado através de circuitos de processamento 46 para incorporar os vários módulos como debatido em relação ao decodificador 30 da Fig. 3 e/ou qualquer outro sistema de decodificador ou sub-sistema descrito neste relatório. Os circuitos de processamento podem ser configurados para realizar as várias operações como debatido adiante. Como será mostrado na Fig. 5, se as técnicas forem implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser integrados como parte de um codificador/decodificador combinado (CODEC) em um dispositivo único, por exemplo, como mostrado na Fig. 1B.
[0151] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla faixa de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores notebook ou laptop, telefones móveis, smartphones, computadores tabletes ou tablet, câmeras, computadores de área de trabalho, set-top boxes, televisões, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão de vídeo (tais como servidores de serviços de conteúdo ou servidores de liberação de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou semelhantes, e podem usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para a comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser os dispositivos de comunicação sem fio.
[0152] O sistema de codificação de vídeo 10 ilustrado na Fig. 1A é meramente um exemplo e as técnicas apresentadas neste relatório podem se aplicar às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos em uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar dados para a memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e decodificação são realizadas pelos dispositivos que não se comunicam um com o outro, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados da memória.
[0153] Para conveniência da descrição, as modalidades são descritas neste relatório, por exemplo, por referência à Codificação de Vídeo de Alta Eficiência (HEVC) ou ao software de referência da Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo da próxima geração desenvolvido pela Equipe de Colaboração Conjunta na Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não são limitadas à HEVC ou VVC.
[0154] Codificador e Método de Codificação
[0155] A Fig. 2 mostra um diagrama de bloco esquemático de um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas apresentadas neste relatório. No exemplo da Fig. 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210, e unidade de processamento de transformada inversa 212, uma unidade reconstrução 214, uma unidade de filtro loop 220, um buffer de imagem decodificada (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de particionamento 262. A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20 como mostrado na Fig. 2 também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo, de acordo com um codec de vídeo híbrido.
[0156] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de seleção de modo 260 podem ser referidas como formando um trajetória de sinal direto do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidos como formando uma trajetória de sinal indireto do codificador de vídeo 20, em que a trajetória de sinal indireto do codificador de vídeo 20 corresponde à trajetória do sinal do decodificador (ver o decodificador de vídeo 30 na Fig. 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também referidos como formando o “decodificador embutido” do codificador de vídeo 20.
[0157] Imagens e Particionamento de Imagens (Imagens e Blocos)
[0158] O codificador 20 pode ser configurado para receber, por exemplo, através da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeos. A imagem recebida ou dados de imagem também podem ser um imagem pré-processada 19 (ou dados de imagem pré-processados 19). Por razões de simplicidade, a seguinte descrição refere-se à imagem 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular, na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, previamente codificadas e/ou imagens decodificadas da mesma sequência de vídeos, isto é, a sequência de vídeos que também compreende a imagem atual).
[0159] Uma imagem (digital) pode ser considerada como um arranjo bidimensional ou matriz de amostras com valores de intensidade. Uma amostra no arranjo também pode ser referida como um pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção horizontal e vertical (ou eixo) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para representação de cor, tipicamente três componentes de cor são utilizados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. No formato RGB ou espaço de cor, uma imagem compreende um arranjo de amostra vermelho, verde e azul correspondente. Entretanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato de luminância e crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes L também é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância Y (ou luma, abreviado) representa o brilho ou intensidade de nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância Cb e Cr (ou croma, abreviado) representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende um arranjo de amostra de luminância de valores de amostra de luminância (Y), e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cor. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, um arranjo de amostras de luma no formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma no formato de coloração 4:2:0, 4:2:2 e 4:4:4.
[0160] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não representada na Fig. 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (tipicamente não sobrepostos). Estes blocos também podem ser referidos como blocos raiz, macro blocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeos e a grade correspondente definindo o tamanho de bloco, ou para alterar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0161] Nas modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0162] Como a imagem 17, o bloco de imagem 203 também pode ser considerado como um arranjo bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma no caso de uma imagem monocromática 17, ou um arranjo de luma ou croma no caso de uma imagem colorida) ou três arranjos de amostra (por exemplo, um de luma e dois arranjos de croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203. Consequentemente, um bloco pode, por exemplo, ser um arranjo MxN (coluna M por linha N) de amostras ou um arranjo MxN de coeficientes de transformada.
[0163] As modalidades do codificador de vídeo 20 como mostrado na Fig. 2 podem ser configuradas para codificar a imagem 17, bloco por bloco, por exemplo, a codificação e a predição são realizadas por bloco 203. As modalidades do codificador de vídeo 20 como mostrado na Fig. 2 podem ser configuradas adicionalmente para particionar e/ou codificar a imagem por meio do uso de fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (tipicamente não sobrepostas), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0164] As modalidades do codificador de vídeo 20 como mostrado na Fig. 2 podem ser configuradas adicionalmente para particionar e/ou codificar a imagem por meio do uso de grupos de tiles (também referidos como grupos de tiles de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de tiles (tipicamente não sobrepostos), e cada grupo de tiles pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais tiles, em que cada tile, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou parciais.
[0165] Cálculo Residual
[0166] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como residual 205) com base no bloco de imagem 203 e em um bloco de predição 265 (os detalhes adicionais sobre o bloco de predição 265 são fornecidos adiante), por exemplo, subtraindo valores de amostra do bloco de predição 265 dos valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel), para obter o bloco residual 205 no domínio de amostra.
[0167] Transformada
[0168] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (DCT) ou transformada de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0169] A unidade de processamento de transformada 206 pode ser configurada para aplicar as aproximações inteiras de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Em comparação a uma transformada de DCT ortogonal, tais aproximações inteiras são tipicamente dimensionadas por um certo fator. De modo a preservar a norma do bloco residual que é processado pelas transformadas diretas e inversas, os fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são tipicamente escolhidos com base em certas restrições como fatores de escala sendo uma potência de dois para operações de deslocamento, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Os fatores de escala específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escala correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados consequentemente.
[0170] As modalidades do codificador de vídeo 20 (respectivamente, a unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de transformada para decodificação.
[0171] Quantização
[0172] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser referidos como coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0173] O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos dos coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, onde n é maior do que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, diferentes escalas podem ser aplicadas para obter quantização mais fina ou mais grosseira. Os tamanhos da etapa de quantização menores correspondem à quantização mais fina, enquanto os tamanhos da etapa de quantização maiores correspondem à quantização mais grosseira. O tamanho da etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode ser, por exemplo, um índice para um conjunto predefinido de tamanhos da etapa de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder à quantização fina (pequenos tamanhos da etapa de quantização) e grandes parâmetros de quantização podem corresponder à quantização grosseira (grandes tamanhos da etapa de quantização) ou vice-versa.
[0174] A quantização pode incluir divisão por um tamanho da etapa de quantização e uma desquantização correspondente e/ou a quantização inversa, por exemplo, pela unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho da etapa de quantização. As modalidades, de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho da etapa de quantização. Em geral, o tamanho da etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Os fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa da escala usada na aproximação de ponto fixo da equação para o tamanho da etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, a escala da transformada inversa e desquantização pode ser combinada. Alternativamente, as tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perda, em que a perda aumenta com o aumento dos tamanhos da etapa de quantização.
[0175] As modalidades do codificador de vídeo 20 (respectivamente, a unidade de quantização 208) podem ser configuradas para emitir os parâmetros de quantização (QP), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação.
[0176] Quantização Inversa
[0177] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho da etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada 207.
[0178] Transformada Inversa
[0179] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta (DCT) inversa ou transformada de seno discreta (DST) inversa ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou coeficientes desquantizados correspondentes 213) no domínio de amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213.
[0180] Reconstrução
[0181] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurado para adicionar o bloco de transformada 213 (isto é, o bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, pela adição - amostra por amostra - dos valores de amostra do bloco residual reconstruído 213 e dos valores de amostra do bloco de predição 265.
[0182] Filtragem
[0183] A unidade de filtro loop 220 (ou “filtro loop” 220, abreviado), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro loop é, por exemplo, configurada para suavizar transições de pixel ou, de outro modo, melhorar a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo à amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptativo (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo ou qualquer combinação dos mesmos. Embora a unidade de filtro loop 220 seja mostrada na Fig. 2 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 220 pode ser implementada como um filtro de post-loop. O bloco filtrado 221 também pode ser referido como o bloco reconstruído filtrado 221.
[0184] As modalidades do codificador de vídeo 20 (respectivamente, a unidade de filtro loop 220) pode ser configurada para emitir os parâmetros de filtro loop (tais como informações de deslocamento adaptativas à amostra), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 possa receber e aplicar os mesmos parâmetros de filtro loop ou filtros loop respectivos para decodificação.
[0185] Buffer de Imagem Decodificada
[0186] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência ou, em gera, dados de imagem de referência, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. O buffer de imagem decodificada (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O buffer de imagem decodificada 230 pode ser configurado adicionalmente para armazenar outros blocos previamente filtrados, por exemplo, previamente reconstruídos e blocos filtrados 221, da mesma imagem atual ou de imagens diferentes, por exemplo, imagem previamente reconstruídas, e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas (e, blocos e amostras de referência correspondentes) e/ou uma imagem atual parcialmente reconstruída (e, blocos e amostras de referência correspondentes), por exemplo, para a predição inter. O buffer de imagem decodificada (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215 ou, em geral, amostras não filtradas reconstruídas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro loop 220, ou qualquer outra versão processada adicional do bloco ou amostras reconstruídas.
[0187] Seleção de Modo (Particionamento e Predição)
[0188] A unidade de seleção de modo 260 compreende a unidade de particionamento 262, unidade de predição inter 244 e unidade de predição intra 254, e é configurada para receber ou obter dados de imagem originais, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo, amostras filtradas e/ou não filtradas reconstruídas ou blocos da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, do buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruída são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou preditor 265.
[0189] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição do bloco atual (incluindo nenhum particionamento) e um modo de predição (por exemplo, um modo de predição intra ou inter) e gerar um bloco de predição correspondente 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0190] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo, daquelas suportados ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor combinação ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o particionamento e modo de predição com base na otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma distorção de taxa mínima. Os termos como “melhor”, “mínimo”, “ideal” etc., neste contexto, não necessariamente referem-se a um “melhor”, “mínimo”, “ideal”, etc. geral, mas também podem se referir ao cumprimento de uma terminação ou critério de seleção como um valor excedendo ou caindo abaixo de um limite ou outras restrições levando potencialmente a uma “seleção sub-ideal” mas reduzindo a complexidade e o tempo de processamento.
[0191] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em menores partições de bloco ou sub-blocos (que formam novamente blocos), por exemplo, usando iterativamente particionamento de quadtree (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos e, para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[0192] No seguinte, o particionamento (por exemplo, pela unidade de particionamento 260) e o processamento de predição (pela unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes.
[0193] Particionamento
[0194] A unidade de particionamento 262 pode particionar (ou dividir) um bloco atual 203 em menores partições, por exemplo, menores blocos de tamanho quadrado ou retangular. Estes blocos menores (que também podem ser referidos como sub-blocos) podem ser particionados adicionalmente em menores partições. Isto também é referido como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível hierárquico 0, profundidade 0), pode ser recursivamente particionado, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível hierárquico 1, profundidade 1), em que estes blocos podem ser novamente particionados em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível hierárquico 2, profundidade 2), etc. até que o particionamento seja concluído, por exemplo, pelo fato de que um critério de terminação é atendido, por exemplo, uma profundidade de árvore máxima ou tamanho de bloco mínimo é alcançado. Os blocos que não são particionados adicionalmente também são referidos como blocos folha ou nós folha da árvore. Uma árvore usando o particionamento em duas partições é referida como árvore binária (BT), uma árvore usando o particionamento em três partições é referida como árvore ternária (TT), e uma árvore usando o particionamento em quatro partições é referida como quadtree (QT).
[0195] Como mencionado antes, o termo “bloco” como usado neste relatório pode ser uma parte, em particular, uma parte quadrada ou retangular de uma imagem. Com referência, por exemplo, à HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), unidade de predição (PU), e unidade de transformada (TU) e/ou aos blocos correspondentes, por exemplo, um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformada (TB) ou bloco de predição (PB).
[0196] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N, tal que a divisão de um componente em CTBs é um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra, ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N, tais que a divisão de um CTB em blocos de codificação é um particionamento.
[0197] Nas modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs por meio do uso de uma estrutura de quadtree denotada como árvore de codificação. A decisão de codificar uma imagem área usando predição imagem inter (temporal) ou imagem intra (espacial) for feita no nível CU. Cada CU pode ser dividida adicionalmente em uma, duas ou quatro PUs, de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador em uma base PU. Depois de obter o bloco residual aplicando o processo predição com base no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformada (TUs), de acordo com outra estrutura de quadtree similar à árvore de codificação para CU.
[0198] Nas modalidades, por exemplo, de acordo com o padrão de codificação de vídeo atualmente mais recente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), um particionamento de quadtree e árvore binária (QTBT) combinado é, por exemplo, usado para particionar um bloco de codificação. Na estrutura de bloco de QTBT, uma CU pode ter uma forma quadrada ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é particionada primeiro por uma estrutura de quadtree. Os nós de folha de quadtree são particionados adicionalmente por uma estrutura de árvore de árvore binária ou ternária (ou tripla). Os nós de folha de árvore de particionamento são chamados de unidades de codificação (CUs), e a segmentação é usada para o processamento de predição e transformada sem qualquer particionamento adicional. Isto significa que a CU, PU e TU têm o mesmo tamanho de bloco na estrutura de bloco de codificação de QTBT. Em paralelo, a partição múltipla, por exemplo, partição de árvore tripla pode ser usada junto com a estrutura de bloco de QTBT.
[0199] Em algumas modalidades, tais como no projeto de padrão VVC, de modo a facilitar uma tubulação de processamento no hardware com memória interna limitada em comparação à CTU, uma unidade de dados de tubulação virtual (VPDU) é definida. Uma VPDU é um particionamento virtual de uma CTU em sub-blocos uniformes de amostras de luminância e amostras de crominância correspondentes com uma ordem de processamento específica entre as partições dentro da CTU de tal maneira que o processamento de uma determinada VPDU não dependa do processamento de qualquer outra futura VPDU na ordem de processamento. Entretanto, certos elementos de sintaxe ainda podem ser sinalizados no fluxo de bits no nível de CTU e devem ser aplicados a todas as VPDUs nesta CTU. Certas restrições para o particionamento podem ser impostas para garantir que uma unidade de codificação abranja completamente uma ou mais VPDUs, mas não pode cobrir parcialmente uma VPDU. Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas neste relatório.
[0200] Como descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal de um conjunto de (por exemplo, predeterminado) modos de predição. O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter.
[0201] Predição intra
[0202] O conjunto de modos de predição intra pode compreender 35 diferentes modos de predição intra, por exemplo, modos não direcionais como DC (ou meio) e modo planar, ou modos direcionais, por exemplo, como definido em HEVC, ou pode compreender 67 diferentes modos de predição intra, por exemplo, modos não direcionais como DC (ou meio) e modo planar, ou modos direcionais, por exemplo, como definido para VVC.
[0203] A unidade de predição intra 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265, de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0204] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é configurada adicionalmente para emitir parâmetros de predição intra (ou, em geral, informações indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros predição para decodificar.
[0205] Predição inter
[0206] O conjunto de (ou possível) modos de predição inter depende das imagens de referência disponíveis (isto é, pelo menos imagens parcialmente decodificadas anteriormente, por exemplo, armazenadas em DPB 230) e outros parâmetros de predição inter, por exemplo, se toda a imagem de referência ou apenas uma parte, por exemplo, uma área de janela de pesquisa em torno da área do bloco atual, da imagem de referência é usada para pesquisar para uma melhor combinação do bloco de referência, e/ou por exemplo, se interpolação de pixel for aplicada, por exemplo, a interpolação de metade/semi-pel e/ou um quarto de pel ou não. Além dos modos de predição acima, o modo de salto e/ou o modo direto pode ser aplicado.
[0207] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Fig. 2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de uma ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimativa de movimento. Por exemplo, uma sequência de vídeos pode compreender a imagem atual e as imagens previamente decodificadas 231 ou, em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem ser parte ou formar uma sequência de imagens que forma uma sequência de vídeos.
[0208] O codificador 20 pode ser, por exemplo, configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência da mesma ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e da posição do bloco atual como parâmetros de predição inter para a unidade de estimativa de movimento. Este deslocamento também é chamado de vetor de movimento (MV).
[0209] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e para realizar predição inter com base ou usando o parâmetro de predição inter para obter um bloco de predição inter 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento/bloco determinado pela estimativa de movimento, possivelmente para realizar a interpolação para a precisão de sub-pixel. A filtragem de interpolação pode gerar amostras de pixel adicionais de amostras de pixel conhecidas, aumentando assim, potencialmente, o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Após o recebimento do vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[0210] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para o uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Em adição ou como uma alternativa às fatias e elementos de sintaxe respectivos, grupos de tiles e/ou tiles e elementos de sintaxe respectivos podem ser gerados ou usados.
[0211] Como será debatido em detalhes abaixo, as modalidades apresentadas neste relatório fornecem uma melhoria para a unidade de predição inter 244 ao fornecer predição de vetor de movimento mais precisa usada pela unidade de predição inter ao realizar a predição inter, por exemplo, a predição inter com base em fluxo óptico bidirecional (BDOF).
[0212] Codificação de Entropia
[0213] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema VLC adaptativo ao contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação entropia) ou desvio (sem compressão) nos coeficientes quantizados 209, parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro loop e/ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para decodificação. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0214] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador 20 não baseado em transformada pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade.
[0215] Decodificador e Método de Decodificação
[0216] A Fig. 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas deste presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificado por codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits compreendem informações para decodificar os dados de imagem codificados, por exemplo, dados que representam os blocos de imagem de uma fatia de vídeo codificada (e/ou grupos de tiles ou tiles) e elementos de sintaxe associados.
[0217] No exemplo da Fig. 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade reconstrução 314 (por exemplo, um somador 314), um filtro loop 320, um buffer de imagem decodificada (DPB) 330, uma unidade de aplicação de modo 360, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode realizar, em alguns exemplos, uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 100 da Fig. 2.
[0218] Como explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354 também são referidos como formando o “decodificador embutido” do codificador de vídeo 20. Consequentemente, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro loop 320 pode ser idêntico em função ao filtro loop 220, e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as unidades e funções respectivas do codificador de vídeo 20 aplicam-se, correspondentemente, às unidades e funções respectivas do decodificador de vídeo 30.
[0219] Decodificação de Entropia
[0220] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou, em geral, dados de imagem codificados 21) e realizar, por exemplo, a decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na Fig. 3), por exemplo, quaisquer ou todos dos parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de predição intra (por exemplo, modo ou índice de predição intra), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro loop e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos ou esquemas de decodificação correspondentes aos esquemas de codificação como descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser configurada adicionalmente para fornecer parâmetros de predição inter, parâmetros de predição intra e/ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou o nível de bloco de vídeo. Em adição ou como uma alternativa às fatias e elementos de sintaxe respectivos, grupos de tiles e/ou tiles e elementos de sintaxe respectivos podem ser recebidos e/ou usados.
[0221] Quantização Inversa
[0222] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou, em geral, informações relacionadas à quantização inversa) e coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar com base nos parâmetros de quantização, uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformada 311. O processo de quantização inverso pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo (ou tile ou grupo de tiles) para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa que deve ser aplicado.
[0223] Transformada Inversa
[0224] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 de modo a obter os blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformada 313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa ou um processo de transformada inverso conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ser configurada adicionalmente para receber parâmetros de transformada ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311.
[0225] Reconstrução
[0226] A unidade reconstrução 314 (por exemplo, adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313, ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, pela adição de valores de amostra do bloco residual reconstruído 313 e de valores de amostra do bloco de predição 365.
[0227] Filtragem
[0228] A unidade de filtro loop 320 (no loop de codificação ou depois do loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel ou, de outro modo, melhor a qualidade de vídeo. A unidade de filtro loop 320 pode compreender um ou mais filtros loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo à amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro bilateral, um filtro loop adaptativo (ALF), um filtro de nitidez, um filtro de suavização ou um filtro colaborativo, ou qualquer combinação dos mesmos. Embora a unidade de filtro loop 320 seja mostrada na Fig. 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implementada como um filtro de post-loop.
[0229] Buffer de Imagem Decodificada
[0230] Os blocos de vídeo decodificados 321 de uma imagem são, em seguida, armazenados em buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para exibição de saída, respectivamente. O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização para um usuário.
[0231] Predição
[0232] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular, à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição intra 254 em função, e realiza a divisão ou decisões de particionamento e predição com base nos parâmetros de particionamento e/ou predições ou informações respectivas recebidas dos dados de imagem codificados 21 (por exemplo, análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens reconstruídas, blocos ou amostras respectivas (filtradas ou não filtradas) para obter o bloco de predição 365.
[0233] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de aplicação de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e em dados de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, a unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para predição inter, os blocos de predição 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 a lista de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas em DPB 330. O mesmo ou similar pode ser aplicado para ou pelas modalidades usando grupos de tiles (por exemplo, grupos de tiles de vídeo) e/ou tiles (por exemplo, tiles de vídeo) em adição ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tiles e/ou tiles I, P ou B.
[0234] Como será debatido em detalhes abaixo, as modalidades apresentadas neste relatório fornecem uma melhoria para a unidade de predição inter 344 ao fornecer a predição de vetor de movimento mais precisa usada pela unidade de predição inter ao realizar a predição inter, por exemplo, a predição inter com base em fluxo óptico bidirecional (BDOF).
[0235] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual pela análise de vetores de movimento ou informações relacionadas e outros elementos de sintaxe, e usar as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usados para codificar blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, estado de predição inter para cada bloco de vídeo codificado de modo inter da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou similar pode ser aplicado para ou pelas modalidades usando grupos de tiles (por exemplo, grupos de tiles de vídeo) e/ou tiles (por exemplo, tiles de vídeo) em adição ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de tile e/ou tiles I, P ou B.
[0236] As modalidades do decodificador de vídeo 30 como mostrado na Fig. 3 podem ser configuradas para particionar e/ou decodificar a imagem por meio do uso de fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente não sobrepostas), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs).
[0237] As modalidades do decodificador de vídeo 30 como mostrado na Fig. 3 podem ser configuradas para particionar e/ou decodificar a imagem por meio do uso de grupos de tiles (também referidos como grupos de tiles de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou decodificada usando um ou mais grupos de tiles (tipicamente não sobrepostos), e cada grupo de tiles pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais tiles, em que cada tile, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou parciais.
[0238] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem loop 320. Por exemplo, um decodificador 30 não baseado em transformada pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos blocos ou quadro. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0239] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma atual pode ser processado adicionalmente e, em seguida, emitido para a próxima etapa. Por exemplo, depois da filtragem de interpolação, a derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como corte ou deslocamento, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0240] Deve ser observado que as operações adicionais podem ser aplicadas aos vetores de movimento derivados do bloco atual (incluindo mas não se limitando aos vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afins, planares, ATMVP, vetores de movimento temporais e assim por diante). Por exemplo, o valor do vetor de movimento é restrito a uma faixa predefinida, de acordo com seu bit de representação. Se o bit de representação do vetor de movimento para bitDepth, em seguida, a faixa é de -2A(bitDepth-1) ~ 2A(bitDepth-1)-1, onde “A” significa exponenciação. Por exemplo, se bitDepth for definido como igual a 16, a faixa é de -32768 ~ 32767; se bitDepth for definido como igual a 18, a faixa é de - 131072~131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restrito tal que a diferença máxima entre as partes inteiras dos quatro MVs de sub-bloco 4x4 não seja maior do que N pixels, tais como no máximo 1 pixel. Neste relatório, é fornecido dois métodos para restringir o vetor de movimento, de acordo com o bitDepth.
[0241] Método 1: remover o MSB de extravasamento (bit mais significante) pelas operações de fluxo ux = (mvx+2bitDepth) % 2bitDepth mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux uy = (mvy+2bitDepth) % 2bitDepth mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy onde mvx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco, mvy é um componente vertical de um vetor de movimento de um bloco de imagem ou um sub-bloco, e ux e uy indicam um valor intermediário.
[0242] Por exemplo, se o valor de mvx for -32769, depois de aplicar a fórmula (1) e (2), o valor resultante é 32767. No sistema computacional, os números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), em seguida, o MSB é descartado, de modo que o complemento de dois resultante é 0111,1111,1111,1111 (o número decimal é 32767), que é o mesmo que a saída aplicando a fórmula (1) e (2). ux = (mvpx + mvdx +2bitDepth) % 2bitDepth (5) mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux (6) uy = (mvpy + mvdy +2bitDepth) % 2bitDepth (7) mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy (8) As operações podem ser aplicadas durante a soma de mvp e mvd, como mostrado na fórmula (5) a (8).
[0243] Método 2: remover o MSB de extravasamento pelo corte do valor vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx) (9) vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy) (10) onde vx é um componente horizontal de um vetor de movimento de um bloco de imagem ou um sub-bloco, vy é um componente vertical de um vetor de movimento de um bloco de imagem ou um sub-bloco; x, y e z, respectivamente, correspondem aos três valores de entrada do processo de corte MV, e a definição da função Clip3 é como a seguir:
[0244] A Fig. 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400, de acordo com uma modalidade. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades reveladas como descrito neste relatório. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, tal como o decodificador de vídeo 30 da Fig. 1A ou um codificador, tal como o codificador de vídeo 20 da Fig. 1A.
[0245] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidade receptoras (Rx) 420 para dados de recebimento; um processador, unidade lógica, ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 410, às unidades receptoras 420, às unidades transmissoras 440, e às portas de egresso 450 para saída ou entrada de sinais ópticos ou elétricos.
[0246] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades receptoras 420, unidades transmissoras 440, portas de egresso 450 e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0247] A memória 460 pode compreender um ou mais discos, unidades de fita, e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de fluxo excessivo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternária (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0248] A Fig. 5 é um diagrama de bloco simplificado de um aparelho 500 que pode ser usado como tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 da Fig. 1A, de acordo com uma modalidade exemplar. Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações reveladas possam ser praticadas com um único processador como mostrado, por exemplo, o processador 502, as vantagens em velocidade e eficiência podem ser obtidas usando mais do que um processador.
[0249] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo de dispositivo de armazenamento adequado pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir adicionalmente um sistema operacional 508 e programas de aplicativo 510, os programas de aplicativo 510 incluindo pelo menos um programa que permite que o processador 502 realize os métodos descritos neste relatório. Por exemplo, os programas de aplicativo 510 podem incluir aplicações 1 através de N, que incluem adicionalmente uma aplicação de codificação de vídeo que realiza os métodos descritos neste relatório.
[0250] O aparelho 500 também pode incluir um ou mais dispositivos de saída, tal como um display 518. O display 518 pode ser, em um exemplo, um display sensível ao toque que combina um display com um elemento sensível ao toque que é operável para detectar entradas de toque. O display 518 pode ser acoplado ao processador 502 através do barramento 512.
[0251] Embora representado neste relatório como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado aos outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, tal como um cartão de memória ou múltiplas unidades, tais como múltiplos cartões de memória. O aparelho 500 pode ser, assim, implementado em uma ampla variedade de configurações.
[0252] Refinamento do vetor de movimento (MVR)
[0253] Os vetores de movimento são usualmente pelo menos parcialmente determinados no lado de codificador e sinalizados para o decodificador dentro do fluxo de bits codificado. Entretanto, os vetores de movimento também podem ser refinados no decodificador (e também no codificador) partindo de vetores de movimento iniciais indicados no fluxo de bits. Em tal caso, por exemplo, a similaridade entre as trajetórias dos pixels já decodificados apontados pelos vetores de movimento iniciais pode ser usada para melhorar a precisão dos vetores de movimento iniciais. Tal refinamento de movimento fornece uma vantagem de reduzir a sobrecarga de sinalização: a precisão dos vetores de movimento iniciais é melhorada da mesma maneira tanto no codificador quanto no decodificador e, assim, nenhuma sinalização adicional para o refinamento é necessária.
[0254] É observado que os vetores de movimento iniciais antes do refinamento podem não ser os melhores vetores de movimento que resultam na melhor predição. Visto que os vetores de movimento iniciais são sinalizados no fluxo de bits, pode não ser possível representar o vetor de movimento inicial com a precisão muito alta (o que aumentaria a taxa de bits), portanto, o processo de refinamento do vetor de movimento é utilizado para melhorar a precisão do vetor de movimento inicial. Os vetores de movimento iniciais podem ser, por exemplo, os vetores de movimento que são usados na predição de um bloco vizinho de um bloco atual. Neste caso, basta sinalizar uma indicação no fluxo de bits, indicando os vetores de movimento de qual bloco vizinho é usado pelo bloco atual. Tal mecanismo de predição é muito eficiente na redução do número de bits para representar os vetores de movimento iniciais. Entretanto, a precisão dos vetores de movimento iniciais pode ser baixa, visto que, em geral, não é esperado que os vetores de movimento de dois blocos vizinhos sejam idênticos.
[0255] De modo a melhorar adicionalmente a precisão de vetores de movimento sem aumentar adicionalmente a sobrecarga de sinalização, pode ser benéfico refinar adicionalmente os vetores de movimento derivados no lado de codificador e fornecidos (sinalizados) no fluxo de bits. O refinamento do vetor de movimento pode ser realizado no decodificador sem assistência do codificador. O codificador no loop do decodificador pode utilizar o mesmo refinamento para obter vetores de movimento refinados correspondentes que estariam disponíveis no decodificador. O refinamento para um bloco atual que está sendo reconstruído em uma imagem atual é realizado pela determinação de um modelo de amostras reconstruídas, determinação de um espaço de pesquisa em torno das informações de movimento iniciais para o bloco atual e encontrando no espaço de pesquisa uma parte da imagem de referência que melhor corresponda ao modelo. A melhor parte correspondente determina os vetores de movimento refinados para o bloco atual que são, em seguida, usados para obter as amostras preditas de modo inter para o bloco atual, isto é, o bloco atual sendo reconstruído. O refinamento de vetor de movimento é uma parte da unidade de predição inter (244) na Fig. 2 e 344 na Fig 3.
[0256] O refinamento do vetor de movimento pode ser realizado, de acordo com as seguintes etapas. Tipicamente, os vetores de movimento iniciais podem ser determinados com base em uma indicação no fluxo de bits. Por exemplo, um índice pode ser sinalizado no fluxo de bits que indica uma posição em uma lista de vetores de movimento candidatos. Em outro exemplo, um índice de preditor de vetor de movimento e valor de diferença de vetor de movimento podem ser sinalizados no fluxo de bits. Os vetores de movimento que são determinados com base em uma indicação no fluxo de bits são definidos como vetores de movimento iniciais. No caso de bipredição, a predição inter para o bloco atual é obtida como uma combinação ponderada do bloco predito de amostras determinadas, de acordo com dois vetores de movimento MV0 e MV1. Neste relatório, MV0 é o vetor de movimento inicial em uma primeira imagem de referência na lista L0 e MV1 é o vetor de movimento inicial na segunda imagem de referência na lista L1.
[0257] Usando os vetores de movimento iniciais, pares de vetor de movimento (MV) candidato de refinamento são determinados. Pelo menos, dois pares candidatos de refinamento precisam ser determinados. Tipicamente, os pares de vetor de movimento candidato de refinamento são determinados com base no par de vetores de movimento inicial (MV0, MV1). Além disso, os pares de MV candidatos são determinados adicionando pequenas diferenças de vetor de movimento ao MV0 e MV1. Por exemplo, os pares de MV candidatos podem incluir o seguinte: (MV0, MV1) (MV0 + (0,1), MV1 + (0,-1)) (MV0 + (1,0), MV1 + (-1,0)) (MV0 + (0,-1), MV1 + (0,1)) (MV0 + (-1,0), MV1 + (1,0)) … Neste relatório, (1,-1) denota um vetor que tem um deslocamento de 1 na direção horizontal (ou x) e um deslocamento de -1 na direção vertical (ou y). É observado que a lista acima de pares candidatos são apenas exemplos para explicação e a invenção não é limitada a uma lista específica de candidatos. Em alguns exemplos, o espaço de pesquisa do processo de refinamento do vetor de movimento processo inclui os pares de vetor de movimento (MV) candidato de refinamento.
[0258] Em uma bipredição do bloco atual, dois blocos de predição obtidos usando o primeiro vetor de movimento respectivo para a lista L0 e o segundo vetor de movimento para a lista L1, são combinados para um único sinal de predição, que pode fornecer uma melhor adaptação ao sinal original do que a uni-predição, resultando em menos informações residuais e possivelmente em uma compressão mais eficiente.
[0259] No refinamento do vetor de movimento, os dois blocos de predição obtidos usando o primeiro vetor de movimento e o segundo vetor de movimento respectivos de um par de MV candidato são comparados com base em uma métrica de similaridade para cada um dos pares de MV candidatos de refinamento. Um par de MV candidato que resulta na métrica de maior similaridade é selecionado como os vetores de movimento refinados. O vetor de movimento refinado para uma primeira imagem de referência na lista L0 e o vetor de movimento refinado para uma segunda imagem de referência na lista L1 são denotados MV0’ e MV1’, respectivamente. Em outras palavras, as predições são obtidas correspondentes à lista L0 de vetor de movimento e lista L1 de vetor de movimento do par de vetores de movimento candidato, que são, em seguida, comparadas com base em uma métrica de similaridade. O par de vetores de movimento candidato que tem a maior similaridade associada é selecionado como o par de MV refinado.
[0260] Tipicamente, a saída do processo de refinamento são MVs refinados. Os MVs refinados podem ser iguais aos MVs iniciais ou podem ser diferentes que os MVs iniciais, dependendo de qual par de MV candidato atinge a maior similaridade, o par de MV candidato formado pelos MVs iniciais também está entre os canditados do par de MV. Em outras palavras, se o par de MV candidato mais alto que atinge a maior similaridade for formado pelos MVs iniciais, os MVs refinados e os MVs iniciais são iguais.
[0261] Em vez de selecionar a posição que maximiza uma métrica de similaridade, outro método é selecionar uma posição que minimiza uma métrica de dissimilaridade. A medida de comparação de dissimilaridade pode ser SAD (soma de diferenças absolutas), MRSAD (significa soma removida de diferenças absolutas), SSE (Soma de Erro Quadrado) etc. A SAD entre dois blocos de predição pode ser obtida usando um par de MV candidato (CMV0, CMV1), a SAD pode ser computada como a seguir: onde nCbH e nCbW são a altura e a largura dos blocos de predição; a função abs(a) especifica o valor absoluto do argumento a; e predSAmplesL0 e predSAmplesL1 são amostras de bloco de predição obtidas, de acordo com um par de MV candidato que é denotado por (CMV0, CMV1).
[0262] Alternativamente, a medida de comparação de dissimilaridade pode ser obtida avaliando apenas um subconjunto de amostras em um bloco de predição, de modo a reduzir o número de cálculos. Um exemplo está abaixo, onde as linhas de amostras são alternativamente incluídas no cálculo da SAD (cada segunda linha é avaliada).
[0263] Um exemplo de refinamento do vetor de movimento é explicado no documento JVET-M1001-v3, “Versatile Video Coding (Draft 4)” de JVET (de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11) que está disponível ao público em http://phenix.it-sudparis.eu/jvet/”. A seção “8.4.3 Decoder side motion vector refinement process” no documento exemplifica o refinamento do vetor de movimento.
[0264] De modo a reduzir os requisitos da memória interna para refinamento, em algumas modalidades, o processo de refinamento do vetor de movimento pode ser realizado independentemente em blocos de amostras de luma. Os blocos de amostras de luma podem ser obtidos particionando o bloco codificado de amostras que excedem uma certa largura predeterminada ou altura predeterminada em amostras de luma em sub-blocos de amostras que são menores ou iguais à largura predeterminada e altura predeterminada em amostra de luma. O par de MV refinado para cada sub-bloco dentro de um bloco codificado particionado pode ser diferente. A predição inter tanto para luma quanto para croma é, em seguida, realizada para cada sub-bloco usando o par de MV refinado daquele sub-bloco.
[0265] Denotar a largura e altura de sub-bloco permitidas máximas como max_sb_width e max_sb_height, respectivamente. Uma unidade de codificação atual de tamanho cbWidth x cbHeight que é elegível para aplicar MVR é tipicamente particionada em vários sub-blocos numSbs cada um de tamanho sbWidth x sbHeight como a seguir: numSbs = numSbX * numSbY (14) numSbX = (cbWidth > max_sb_width) ? (cbWidth/max_sb_width) : 1 (15) numSbY = (cbHeight > max_sb_height) ? (cbHeight/max_sb_height) : 1 (16) sbWidth = (cbWidth > max_sb_width) ? max_sb_width: cbWidth (17) sbHeight = (cbHeight > max_sb_height) ? max_sb_height: cbHeight (18) onde a expressão (x>y)? a:b retorna o valor a se x>y for verdadeiro e retorna b se x>y for falso. Cada MV do par de MV inicial pode ter uma precisão de pixel parcial. Em outras palavras, o MV pode indicar um deslocamento entre um bloco atual de amostras e uma região de referência reamostrada. Este deslocamento pode apontar para uma posição parcial nas direções horizontal e vertical da grade inteira das amostras de referência reconstruída.
[0266] Tipicamente, uma interpolação bidimensional dos valores de grade de amostra inteiros de referência reconstruída é realizada para obter os valores de amostra na localização de deslocamento de amostra parcial. O processo de obtenção de amostras preditas das imagens de referência reconstruídas usando um par de MV candidato pode ser através de um dos seguintes métodos: • Arredondar a parte parcial do par de MV inicial para a localização inteira mais próxima e obter os valores de grade inteiros das imagens de referência reconstruídas. • Realizar uma interpolação bilinear separável de 2 torneiras (por exemplo, bilinear) para obter os valores de amostra predita na precisão de pixel parcial indicada pelo par de MV inicial. • Realizar uma interpolação separável de torneira superior (por exemplo, 8 torneiras ou 6 torneiras) para obter os valores de amostra predita na precisão de pixel parcial indicada pelo par de MV inicial.
[0267] Enquanto os pares de MV candidatos podem ter o deslocamento de sub-pixel arbitrário em relação ao par de MV inicial, em algumas modalidades, por uma questão de simplicidade de pesquisa, os pares de MV candidatos são escolhidos com a distância de pixel inteiro em relação ao par de MV inicial. Em tais casos, as amostras preditas através dos pares de MV candidatos podem ser obtidas para realizar uma predição para um bloco de amostras em torno do par de MV inicial para cobrir todas as posições de refinamento em torno do par de MV inicial.
[0268] Em algumas modalidades, depois que os valores de custo de dissimilaridade para os pares de MV candidatos que estão em uma distância inteira do par de MV inicial são avaliados, pares de MV candidatos adicionais nos deslocamentos de sub-pixel da melhor posição de valor de custo podem ser adicionados e avaliados. Amostras preditas são obtidas para cada uma destas posições usando um dos métodos descritos anteriormente e os custos de dissimilaridade são avaliados e comparados para obter a posição de dissimilaridade mais baixa. Em outras modalidades, para evitar este processo de predição computacionalmente caro para cada posição de distância de sub-pixel em torno da melhor posição de distância inteira de custo, os valores de custo de distância inteira avaliados são lembrados e uma superfície de erro paramétrica é ajustada nas proximidades da melhor posição de distância inteira. O mínimo desta superfície de erro é, em seguida, computado analiticamente e usado como a posição com a dissimilaridade mínima. Em tais casos, o valor de custo de dissimilaridade é derivado dos valores de custo de distância inteira computados.
[0269] A aplicação do refinamento do vetor de movimento para um determinado bloco codificado de amostras pode ser condicionada em certas propriedades de codificação do bloco codificado de amostras. Alguns exemplos de tais propriedades de codificação incluem a distância em número de imagens (quando experimentados em uma taxa de quadro uniforme) da imagem atual para as duas imagens de referência usadas para bipredição do bloco codificado de amostras são iguais e caem em lados opostos da imagem atual. As propriedades de codificação também podem incluir a dissimilaridade inicial entre os dois blocos preditos obtidos usando o par de MV inicial é menor do que um limite predeterminado por amostra.
[0270] Em algumas implementações, BPOF é aplicado aos blocos bipreditos quando as duas predições são de diferentes imagens de referência. BPOF não é aplicado aos casos de modo de fusão temporal avançado com base em sub-bloco, compensado de movimento bipreditivo ponderado e afim.
[0271] Refinamento de Fluxo Óptico Bipreditivo
[0272] O Refinamento de fluxo óptico bipreditivo é um processo de melhoria da precisão de bipredição de um bloco sem fornecer explicitamente sinais adicionais no fluxo de bits exceto os sinais para bipredição. O refinamento de fluxo óptico bipreditivo pode ser implementado na unidade de predição inter 244 na Fig 2 e na unidade de predição inter 344 na Fig. 3. A entrada do processo de refinamento de fluxo óptico é as amostras de predição de duas imagens de referência e a saída do refinamento de fluxo óptico é a predição combinada (predBIO) que é calculada, de acordo com a equação de fluxo óptico.
[0273] Na bipredição, duas predições inter são obtidas a partir de dois quadros de referência, de acordo com dois vetores de movimento, tais como os pares de vetor de movimento MV0 e MV1 ou o par de vetores de movimento refinado debatido acima. As duas predições podem ser combinadas, tais como através de média ponderada. A predição combinada pode resultar em uma energia residual reduzida pelo fato de que o ruído de quantização nas duas predições é cancelado, fornecendo, desse modo, mais eficiência de codificação comparado à unipredição (isto é, predição usando um vetor de movimento). Em um exemplo, a combinação ponderada na bipredição pode ser realizada como a seguir: Biprediction = Prediction1 * W1 + Prediction2 * W2 + K, (19) onde W1 e W2 são fatores de ponderação que podem ser sinalizados no fluxo de bits ou podem ser predefinidos. K é um fator aditivo que também pode se sinalizado ou predefinido. Como um exemplo, a bipredição pode ser obtida através de Biprediction = (Prediction1 + Prediction2)/2, (20) onde W1 e W2 são definidos como % e K é definido como 0.
[0274] A precisão da bipredição pode ser melhorada através do refinamento de fluxo óptico. Um fluxo óptico é o padrão do movimento aparente de objetos de imagem entre dois quadros causados pelo movimento do objeto ou câmera. O processo de refinamento de fluxo óptico melhora a precisão da bipredição ao determinar o fluxo óptico entre os dois quadros de referências e ajustar a bipredição com base no fluxo óptico determinado.
[0275] Considerar um pixel I (x, y, t) em um primeiro quadro com x e y correspondentes às coordenadas espaciais e t correspondente à dimensão de tempo. Ao se mover por uma distância (dx, dy) no próximo quadro obtido depois do tempo dt. Assumindo que os pixels nos dois quadros são iguais e a intensidade não é alterada dentro do tempo dt, a equação de fluxo óptico pode ser formulada como: I (x, y, t) = I (x+ vx, y+ vy, t+dt) (21) I (x, y, t) especifica a intensidade (isto é, o valor de amostra) de um pixel nas coordenadas de (x, y, t). Com base em uma suposição de que o movimento ou deslocamento do pixel é pequeno e outras suposições, tais como termos de ordem superior em uma expansão da série de Taylor podem ser ignoradas, as equações de fluxo óptico podem ser escritas como: onde são os gradientes de amostra espacial horizontal e vertical na posição (x, y) e é o temporal parcial derivado em (x, y). Em alguns exemplos, os gradientes de amostra podem ser obtidos por: ∂I(x, y, t)/∂x = I(x + 1, y, t) - I(x - 1, y, t), ∂I(x, y, t)/∂y = I(x, y + 1, t) - I(x, y - 1, t).
[0276] O refinamento de fluxo óptico utiliza o princípio mostrado em Eqn. (22) de modo a melhorar a qualidade de bipredição. Em algumas implementações, o refinamento de fluxo óptico é realizado ao calcular gradientes de amostra calculando a diferença entre a primeira predição e a segunda predição (I(0) - I(1)), e calculando o deslocamento de pixels ou grupo de pixels (vx, Vy). O deslocamento é calculado de modo que o erro Δ entre as amostras nos dois quadros de referência obtidos usando a equação de fluxo óptico seja minimizado. O erro Δ é definido como: onde I(0) representa um valor de amostra na primeira predição (por exemplo, amostras de predição no primeiro quadro de referência em L0), e I(1) é o valor de amostra na segunda predição (por exemplo, amostras de predição no segundo quadro de referência em L1) que corresponde ao I(0). vx e vy são os deslocamentos calculados na direção -x e -y, respectivamente. ∂I(0)/∂x e ∂I(0)/∂y são os gradientes de amostra no primeiro quadro de referência nas direções -x e -y, respectivamente. ∂I(1)/∂x e ∂I(1)/∂y são os gradientes de amostra no segundo quadro de referência nas direções -x e -y, respectivamente. v1 e T0 denotam as distâncias do quadro atual para o primeiro e segundo quadros de referência, respectivamente. A Fig. 7 ilustra a relação entre as várias variáveis envolvidas em Eqn. (23).
[0277] Para determinar o deslocamento (vx, vy) em Eqn. (23), um fragmento de amostras em torno de uma determinada posição (x, y) é utilizado para resolver o problema de minimização mencionado acima. Algumas abordagens minimizam a soma de erros quadrados para diferentes pixels em um fragmento dos quadros de referência. Outras abordagens minimizam a soma do erro absoluto. Depois que o deslocamento (vx, vy) é determinado, a predição combinada na determina posição (x, y) pode ser determinada como: onde predBIO é a predição modificada na posição (x, y) que é a saída do processo de refinamento de fluxo óptico.
[0278] A partir desta equação, pode ser determinado que o deslocamento determinado com base no BDOF é, assumindo 𝜏0 e 𝜏1 igual a 1.
[0279] Em algumas modalidades, de modo a simplificar a complexidade de estimativa do deslocamento para cada pixel, o deslocamento é estimado para um grupo de pixels. Por exemplo, o deslocamento pode ser estimado para um bloco de 4x4 pixels, tal como amostras de luma 4x4, em vez de um pixel individual. Nestes exemplos, para computar a bipredição melhorada para um bloco de amostras de luma 4x4, os deslocamentos são estimados usando valores de amostra perto do bloco de amostras de luma 4x4, tais como um bloco de amostras de luma 8x8 com o bloco 4x4 de amostras em seu centro. Uma unidade de codificação é particionada em sub-blocos quando a largura ou altura da unidade de codificação excede 16. No limite de um sub-bloco, os gradientes de amostra são computados usando valores de amostra de referência de grade inteira sem qualquer interpolação compensada de movimento separável 2-D. Depois disto, amostras estendidas e gradientes de amostra fora das posições de sub-bloco são obtidos pela extensão da amostra mais próxima e valores de gradiente de amostra do limite do sub-bloco.
[0280] A entrada do processo de refinamento de fluxo óptico é as amostras de predição de duas imagens de referência e a saída do refinamento de fluxo óptico é a predição combinada (predBIO) que é calculada, de acordo com a equação de fluxo óptico.
[0281] Em uma versão atualmente adotada de BDOF, as seguintes equações são usadas para computar o fluxo óptico (vx, vy) com base nos gradientes de amostra horizontais e verticais de um bloco 6x6 de amostras no centro de um bloco atual 4x4 de amostras.
[0282] O deslocamento de fluxo óptico (vx, vy) também é referido neste relatório como “fluxo óptico (vx, vy)”. A operação de divisão necessária para computar vx e vy é simplificada em detrimento da precisão pelo deslocamento para a direita do numerador com apenas a posição do bit mais significante no denominador. Em certas outras técnicas anteriores, a divisão é substituída por uma tabela de consulta de N bits contendo os valores recíprocos com um deslocamento de variável representando a posição do bit mais significante para melhorar a precisão. Entretanto, a tabela de consulta resulta em maior memória no chip. Uma tabela de consulta de N bits com uma precisão de M bits para o recíproco requer N*M bits de SRAM.
[0283] Um exemplo de refinamento de vetor de movimento é explicado na seção 8.4.7.4 “Bidirectional optical flow prediction process” do documento JVET-M1001, Codificação de Vídeo Versátil (Draft 4).
[0284] Como debatido acima, um fluxo óptico contém dois componentes: vx na direção horizontal e vy na direção vertical. Em comparação ao método mostrado em Eqns. (25) a (31), o cálculo apresentado neste relatório para os dois componentes: vx na direção horizontal e vy na direção vertical elimina operações de multiplicação e reduz a profundidade de bits dos termos.
[0285] Em particular, o fluxo óptico pode ser estimado como a seguir:
onde são gradientes de amostra predita horizontais no pixel (I, j) no primeiro e segundo quadros de referência, respectivamente, e são gradientes de amostra predita verticais no pixel (i.j) no primeiro e segundo quadros de referência, respectivamente. Neste relatório, i e j são inteiros e abrangem um conjunto de posições de amostra no centro de um bloco atual de posições de amostra. Em uma modalidade, para um bloco 4x4, um bloco 6x6 de posições de amostra no centro do bloco 4x4 é utilizado. Em um exemplo, o valor de i varia de -1 a 4, e o valor de j varia de -1 a 4.
[0286] Deve ser entendido que durante o cálculo dos termos de autocorrelação e correlação cruzada s1-s5 mostrados acima, um ou mais termos podem ser deslocados para ajustar a precisão e profundidade de bits dos valores.
[0287] Deve ser observado adicionalmente que Eqns. (32) a (38) listadas acima são apenas para propósito de ilustração e não devem ser interpretadas como limitantes. Vários termos nestas equações podem ser pré- processados antes de serem combinados com outros termos nestas equações. Por exemplo, o termo (Gy1(i. j)+Gy0(i. j)) ou Gx1(i. j)+Gx0(i. j) pode ser deslocado, invertido alterando seu sinal ou, de outro modo, processado antes de ser usado como mostrado nas equações acima para calcular -s5. Similarmente, o termo (I(1) – I(0)) também pode ser pré-processado antes de ser combinado com outros termos nas equações acima. Do mesmo modo, vários valores determinados nas equações acima também podem ser pós-processados antes de serem usados para calcular o valor para vx e vy. Por exemplo, sk (k = 1 a 5) determinado acima pode ser pós-processado ao adicionar os bits inferiores de seu valor aos bits superiores de seu valor para determinar a versão final de sk. Esta versão final pode ser, em seguida, usada como mostrado acima para determinar vx e vy.
[0288] Como pode ser observado a partir desta implementação, uma nova quantidade s5 é determinada para facilitar o cálculo do segundo componente do fluxo óptico, vy neste exemplo. s5 é determinado com base na soma do produto do sinal da soma de gradientes de amostra predita verticais através de dois quadros de referência e a soma de gradientes de amostra predita horizontais através de dois quadros de referência. O cálculo de s5 pode ser realizado sem operações de multiplicação. Por exemplo, o cálculo pode ser realizado adicionando ou subtraindo condicionalmente a soma de gradientes de amostra predita horizontais em uma determinada posição de amostra com base no sinal da soma dos gradientes de amostra predita verticais nesta posição de amostra. Em seguida, o componente vertical do fluxo óptico, vy, é modificado com base em vx, s5, e s2. Em algumas implementações, a divisão por s1 ou s2 em Eqns. (37) a (38) pode ser simplificada aplicando um deslocamento para a direita igual à posição da posição do bit mais significante em s1 e s2 respectivamente. Como um resultado, o cálculo dos componentes s1-s5, especialmente $5, para o fluxo óptico como especificado em Eqns. (32) a (44) tem reduzido a profundidade de bits pelo fato de que o cálculo é fundamentado na operação de sinal. Em particular, a profundidade de bits de vx é reduzida pelo fato de que o cálculo envolve apenas operação absoluta e operação de sinal, de modo que no cálculo de vy, a profundidade de bits do multiplicador para vx x s5 pode ser reduzida. Assim, a complexidade computacional do cálculo para vx e vy é significantemente reduzida.
[0289] Como pode ser observado acima, o BDOF requer muito menos cálculo, especialmente em termos de número de multiplicações e do tamanho do multiplicador. Em alguns exemplos, BDOF é usado para refinar o sinal de bipredição de uma CU no nível de sub-bloco 4x4 e é apenas aplicado ao componente de luma. O modo BDOF é fundamentado no conceito de fluxo óptico, que assume que o movimento de um objeto é suave. Para cada sub-bloco 4x4, um refinamento de movimento ou deslocamento de movimento (yx, vy) é calculado para minimizar a diferença entre as amostras de predição L0 e L1. O refinamento de movimento é, em seguida, usado para ajustar os valores de amostra bipredita no sub-bloco 4x4.
[0290] Como debatido acima, os gradientes horizontais e verticais,, podem ser calculados ao calcular a diferença entre duas amostras vizinhas nos quadros de referência correspondentes. As amostras podem ser deslocadas com base na profundidade de bits de luma antes de calcular a diferença. A autocorrelação e a correlação cruzada dos gradientes, s1, s2, s3, s4 e s5, são calculadas para uma janela 6x6 em torno do sub-bloco 4x4. A FIG. 6 mostra a relação entre a janela 6x6 e o sub-bloco 4x4. Como pode ser observado, de modo a derivar os valores de gradiente usados em s1, s2, s3, s4 e s5, algumas amostras de predição I(k)(i,j) na lista k (k = 0,1) fora do limite de CU atual (posições cinzas) precisam ser geradas. No exemplo mostrado na FIG. 6, o BDOF usa uma linha/coluna estendida em torno dos limites de CU. Estes valores de amostra estendidos são usados apenas no cálculo de gradiente. Paras as etapas remanescentes no processo BDOF, se qualquer amostra e valores de gradiente fora dos limites de CU forem necessários, elas serão atendidas (isto é, repetidas) a partir de seus vizinhos mais próximos.
[0291] O refinamento de movimento (vx, vy) é, em seguida, derivado usando os termos de autocorrelação e correlação cruzada usando o seguinte: onde S2,m = S2 » ns2, S2,s = S2&(2nS2 - 1), th'BI0 = 2max(5,BD -7). ⌊∙⌋ é a função floor, e ns2 = 12. Com base no refinamento de movimento e nos gradientes, o seguinte ajuste é calculado para cada amostra no sub-bloco 4x4: Finalmente, as amostras BDOF da CU são calculadas ajustando as amostras de bipredição como a seguir:
[0292] A Fig. 8 ilustra um exemplo de um processo 800 para realizar o refinamento de fluxo óptico bipreditivo com base no cálculo de fluxo óptico apresentado neste relatório. Um ou mais dispositivos de computação (por exemplo, o aparelho de codificação 200 ou o aparelho de decodificação 300) implementam operações representadas na Fig. 8 executando o código de programa adequado.
[0293] O bloco 810 corresponde à primeira etapa descrita acima. Neste bloco, dois vetores de movimento são obtidos como entrada. Os vetores de movimento iniciais podem ser determinados com base em informações de indicação no fluxo de bits. Por exemplo, um índice pode ser sinalizado no fluxo de bits, o índice indica uma posição em uma lista de vetores de movimento candidatos. Em outro exemplo, um índice de preditor de vetor de movimento e valor de diferença de vetor de movimento podem ser sinalizados no fluxo de bits. Em outro exemplo, estes vetores de movimento podem ser derivados como um vetor de movimento de refinamento usando o refinamento de vetor de movimento partindo de um par inicial de vetores de movimento que são indicados no fluxo de bits. Em outro exemplo, as indicações de quadros de referência podem ser obtidas a partir do fluxo de bits para indicar o quadro de referência com o qual um determinado vetor de movimento no par de vetores de movimento obtido está associado. Por exemplo, a indicação pode especificar que um quadro de uma primeira lista de quadros de referência L0 está associado com o vetor de movimento MV0 no par de vetores de movimento e um quadro de uma segunda lista de quadros de referência L1 está associada com o vetor de movimento MV1 no par de vetores de movimento.
[0294] O bloco 820 corresponde à segunda etapa descrita acima. Neste bloco, uma predição unidirecional pode ser obtida em cada um dos dois quadros de referência (isto é, amostras de luma reconstruídas), de acordo com o par de vetores de movimento obtido e um filtro de interpolação de K torneiras. Por exemplo, a predição obtém valores de amostra de referência reconstruída quando o vetor de movimento corresponde a uma posição inteira da amostra. Se o vetor de movimento tiver um componente horizontal diferente de zero, mas um componente vertical zero, realiza uma interpolação horizontal de K torneiras para obter os valores de amostra predita. Se o vetor de movimento tiver um componente vertical diferente de zero, mas um componente horizontal zero, realiza uma interpolação vertical de K torneiras para obter os valores de amostra predita. Se o vetor de movimento tiver valores diferentes de zero tanto para componentes horizontais quanto para verticais, uma interpolação de K torneiras separável 2-D é realizada com a interpolação horizontal realizada primeiramente seguido pela interpolação vertical para obter os valores de amostra predita. Desta maneira, uma primeira predição é gerada usando MV0 em um quadro de referência a partir da primeira lista de quadros de referência L0 e uma segunda predição é gerada usando MV1 em um quadro de referência a partir da segunda lista de quadros de referência L1.
[0295] O bloco 830 corresponde à terceira etapa descrita acima. Neste bloco, um fluxo óptico é estimado para cada sub-bloco em uma determinada unidade de codificação atual usando as predições obtidas na segunda etapa nos quadros de referência. Consistente com as notações debatidos acima, as amostras de predição na predição obtida no primeiro quadro de referência são denotadas como I(0) e as amostras de predição na predição obtida no segundo quadro de referência são denotadas como I(1). O gradiente de amostra horizontal em uma posição (í,j) pode ser computado assumindo a diferença entre o valor de amostra predita para a direita desta posição e o valor de amostra para a esquerda desta posição, isto é, dl/dx = I(x + 1, y) - I(x - 1, y). O gradiente de amostra vertical em uma posição (í,j) pode ser computado assumindo a diferença entre o valor de amostra predita abaixo desta posição e o valor de amostra acima desta posição, isto é, dl/dy = I(x, y+1)- I(x, y-1). Note que para uma imagem ou um quadro, a direção horizontal aponta da esquerda para a direita, e a direção vertical aponta de cima para baixo. Em alguns exemplos, 𝜕 I(0)/ 𝜕 x, 𝜕 l(0)/ 𝜕 y e 𝜕 l(1)/ 𝜕 x, 𝜕 l(1)/ 𝜕 y são computados para um conjunto de posições dentro do sub-bloco de codificação atual. Com base nos gradientes de amostra determinados, o fluxo óptico pode ser determinado usando o método descrito acima com Eqns. (31) a (40) respectivas ou o método de estimativa de fluxo óptico iterativo descrito acima com Eqns. (38) a (46) respectivas ou Eqns. (47) a (52).
[0296] O bloco 840 corresponde à quarta etapa descrita acima. Neste bloco, as amostras bipreditas de modo inter finais para o bloco de codificação atual podem ser calculadas, de acordo com Eqn. (24) que leva em conta, os valores de amostra predita, os gradientes de amostra determinados e o fluxo óptico estimado.
[0297] A FIG. 9 é um fluxograma de um método de exemplo 900 para a predição inter com base em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo.
[0298] Na etapa 910, o método 900 envolve determinar um deslocamento de movimento horizontal, vx e um deslocamento de movimento vertical, vy do bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável s5. A quinta variável s5 indica uma soma de uma pluralidade de termos. Cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz. O elemento da primeira matriz corresponde ao elemento da segunda matriz.
[0299] Cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz. Cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz.
[0300] Na etapa 920, o processo 900 envolve determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
[0301] É observado que o bloco atual pode ser um bloco de qualquer tamanho, tal como um bloco 4x4. O bloco atual pode ser um sub-bloco de um quadro do sinal de vídeo. Os pixels do bloco atual podem ser referidos usando posições absolutas dos pixels em relação ao canto superior esquerdo do quadro, por exemplo, (x, y), ou posições relativas dos pixels em relação ao canto superior esquerdo do bloco, por exemplo, (xBlock + i, yBlock+j). Neste relatório, (xBlock, yBlock) é a coordenada do canto superior esquerdo do bloco em relação ao canto superior esquerdo do quadro.
[0302] A primeira matriz e a segunda matriz podem ser qualquer arranjo bidimensional que inclui linhas e colunas e um elemento do arranjo pode ser referido usando (i, j) onde x é um índice horizontal/linha e y é um índice vertical/coluna. A faixa de i e j pode ser, por exemplo, i = xBlock -1, ..., xBlock + 4 e j = yBlock -1, ..., yBlock + 4. A primeira e segunda matrizes correspondem ou são determinadas para o bloco atual. Em alguns exemplos, o tamanho da primeira matriz é a mesma que o tamanho da segunda matriz que pode ser maior do que o tamanho do bloco atual. Por exemplo, o tamanho da primeira matriz e da segunda matriz pode ser 6x6, enquanto o bloco atual tem um tamanho de 4x4.
[0303] Um elemento da primeira matriz (primeiro elemento) corresponde a um elemento da segunda matriz (segundo elemento) se a posição do primeiro elemento na primeira matriz, (x, y) for a mesma que a posição do segundo elemento na segunda matriz, (p, q), isto é, (x, y) = (p, q). O primeiro gradiente de amostra predita horizontal corresponde a um primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita horizontal é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita horizontal corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita horizontal é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o primeiro gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz. Do mesmo modo, o segundo gradiente de amostra predita horizontal corresponde ao elemento da primeira matriz significa que o segundo gradiente de amostra predita horizontal é gerado para a posição (x, y) do elemento na primeira matriz.
[0304] O primeiro gradiente de amostra predita vertical corresponde ao primeiro quadro de referência do bloco atual significa que o primeiro gradiente de amostra predita vertical é gerado com base em amostras no primeiro quadro de referência do bloco atual. O segundo gradiente de amostra predita vertical corresponde ao segundo quadro de referência do bloco atual significa que o segundo gradiente de amostra predita vertical é gerado com base em amostras no segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o primeiro gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz. Do mesmo modo, o segundo gradiente de amostra predita vertical corresponde ao elemento da segunda matriz significa que o segundo gradiente de amostra predita vertical é gerado para a posição (p, q) do elemento na segunda matriz.
[0305] Cada elemento de uma matriz é obtido a partir de uma soma de dois termos significa que o elemento pode ser determinado como a soma de dois termos ou como um valor depois de processar a soma de dois termos. O processamento pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. Similarmente, um termo é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz significa que o termo pode assumir o valor do elemento da primeira matriz ou depois do elemento da primeira matriz ser processado e aplicar o sinal do elemento da segunda matriz. O processamento do elemento da primeira matriz pode incluir deslocamento para a esquerda, deslocamento para a direita, corte ou uma combinação dos mesmos. O sinal do elemento x pode ser determinado como
[0306] A tecnologia apresentada neste relatório ajusta os valores de amostra bipredita do bloco atual com base no deslocamento de movimento horizontal e no deslocamento de movimento vertical. O deslocamento de movimento vertical é calculado com base em uma quinta variável s5 que envolve apenas a soma de termos obtidos a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz. Aplicar um sinal de um elemento a outro elemento não envolve operações de multiplicação. Do mesmo modo, a soma também não envolve nenhuma multiplicação. Como um resultado, a tecnologia de predição inter com base em BDOF apresentada neste relatório elimina as operações de multiplicação. Em comparação às abordagens tradicionais, a profundidade de bits da quinta variável s5 é reduzida pelo fato de que as operações de multiplicação são substituídas com a determinação do sinal. Isto leva à redução da profundidade de bits do deslocamento de movimento horizontal, vx e do deslocamento de movimento vertical, vy e também à redução significante na complexidade computacional da predição e do tamanho do multiplicador.
[0307] A Fig. 10 ilustra um dispositivo 1000 para predição inter com base em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo. O dispositivo 1000 inclui:
[0308] uma unidade de determinação 1001 configurada para determinar um deslocamento de movimento horizontal, vx e um deslocamento de movimento vertical, vy do bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5. A quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; e
[0309] uma unidade de processamento de predição 1003 configurada para predizer valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
[0310] A unidade de determinação 1001 é configurada adicionalmente para obter cada elemento da primeira matriz de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz.
[0311] A unidade de determinação 1001 é configurada adicionalmente para obter cada elemento da segunda matriz de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual. O primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz.
[0312] Correspondentemente, em um exemplo, uma estrutura de exemplo do dispositivo 1000 pode ser correspondente ao codificador 200 na FIG. 2. Em outro exemplo, uma estrutura de exemplo do dispositivo 1000 pode ser correspondente ao decodificador 300 na FIG. 3. Em outro exemplo, uma estrutura de exemplo do dispositivo 1000 pode ser correspondente à unidade de predição inter 244 na FIG. 2. Em outro exemplo, uma estrutura de exemplo do dispositivo 1000 pode ser correspondente à unidade de predição inter 344 em FIG. 3.
[0313] A tecnologia apresentada neste relatório para calcular o fluxo óptico e as amostras bipreditas melhora a eficiência de codificação ao computar um segundo componente do fluxo óptico com base em um primeiro componente independentemente computado do fluxo óptico. A complexidade computacional é mantida baixo pelo fato de que o cálculo dependente também não requer quaisquer operações de multiplicação. A soma do produto do sinal da soma de gradientes na segundo direção e a soma de gradientes na primeira direção podem ser realizadas sem quaisquer multiplicações pela adição ou subtração de forma condicional da soma de gradientes na primeira direção com base no sinal da soma de gradientes na segunda direção. A tecnologia apresentada neste relatório também atinge uma eficiência de compressão similar aos métodos que usam operações de multiplicação.
[0314] A presente revelação fornece os seguintes aspectos adicionais.
[0315] De acordo com um primeiro aspecto, um método para predição inter com base em fluxo óptico, compreende: - determinar um fluxo óptico para um bloco de codificação atual, em que um segundo componente do fluxo óptico é determinado ou derivado com base em um primeiro componente do fluxo óptico (tal como, vy é fundamentado em vx ou vx é fundamentado em vy em bipredição inter baseada em fluxo óptico bipreditivo) por uma primeira formulação; e - obter ou derivar valores de amostra de predição (tais como valores de amostra bipredita) para o sub-bloco atual usando o fluxo óptico determinado para o bloco de codificação atual.
[0316] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, a etapa de determinar um fluxo óptico para um bloco de codificação atual, compreende: computar um fluxo óptico para um bloco de codificação atual, em que um segundo componente do fluxo óptico é computado usando - um primeiro componente computado do fluxo óptico, - sinal e valor absoluto de uma soma de gradientes de amostra predita correspondentes (tais como posições de amostra correspondentes nos dois blocos preditos) através de dois quadros de referência em uma direção correspondente ao segundo componente, e - a soma de gradientes de amostra predita correspondentes através de dois quadros de referência em uma direção correspondentes ao primeiro componente.
[0317] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, a etapa de obtenção ou derivação de valores de amostra de predição (tais como valores de amostra bipredita) para o sub-bloco atual usando o fluxo óptico determinado para o bloco de codificação atual, compreende: obter valores de amostra bipredita para o bloco de codificação atual usando um conjunto de valores de amostra predita, o fluxo óptico computado, e gradientes de amostra horizontais e verticais em dois quadros de referência, em que o conjunto de valores de amostra predita é obtido em cada um dos dois quadros de referência usando um par de vetores de movimento para o bloco de codificação atual em relação aos dois quadros de referência.
[0318] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do primeiro aspecto ou do primeiro aspecto como tal, o método compreende ainda: - computar um fluxo óptico para um bloco de codificação atual, em que um segundo componente do fluxo óptico é computado usando - um primeiro componente computado do fluxo óptico, - sinal e valor absoluto de uma soma de gradientes de amostra predita correspondentes através de dois quadros de referência em uma direção correspondente ao segundo componente, e - a soma de gradientes de amostra predita correspondentes através de dois quadros de referência em uma direção correspondentes ao primeiro componente; - obter valores de amostra bipredita para o bloco de codificação atual usando um conjunto de valores de amostra predita, o fluxo óptico computado, e gradientes de amostra horizontais e verticais nos dois quadros de referência, em que o conjunto de valores de amostra predita é obtido em cada um dos dois quadros de referência usando um par de vetores de movimento para o bloco de codificação atual em relação aos dois quadros de referência.
[0319] De acordo com um segundo aspecto, um método para predição inter com base em fluxo óptico compreende: - obter um par de vetores de movimento para um bloco de codificação atual em relação aos dois quadros de referência; - obter um conjunto de amostras preditas em cada quadro de referência usando o par de vetores de movimento obtido e os valores de amostra de luma reconstruída dos dois quadros de referência; - computar um fluxo óptico para o bloco de codificação atual usando as diferenças da primeira amostra predita entre as amostras correspondentes nos dois quadros de referência, e a soma de gradientes de amostra horizontal (sGx) e gradientes de amostra verticais (sGy) correspondentes nos dois quadros de referência; em que um segundo componente do fluxo óptico é computado usando - um primeiro componente computado do fluxo óptico, - sinal e valor absoluto da soma de gradientes de amostra predita correspondentes através de duas referências na direção correspondente ao segundo componente, e - a soma de gradientes de amostra predita correspondentes através de duas referências na direção correspondente ao primeiro componente; - obter os valores de amostra bipredita para o bloco de codificação atual usando os primeiros valores de amostra predita, o fluxo óptico computado, e os gradientes de amostra horizontais e verticais nas duas referências com base na equação de predição para BDOF (fluxo óptico bidirecional).
[0320] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do segundo aspecto ou do segundo aspecto como tal, os valores de amostra de luma referência reconstruída dos dois quadros de referência compreendem os valores de amostra de luma vizinhos reconstruída dos dois quadros de referência.
[0321] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do segundo aspecto ou do segundo aspecto como tal, um fluxo óptico é computado, de acordo com uma equação de fluxo óptico, como a seguir: onde I(0) corresponde ao valor de amostra em uma primeira predição, I(1) é o valor de amostra em uma segunda predição, vx e vy são os deslocamentos calculados na direção -x e -y, e ∂I(0)/∂x e ∂I(0)/∂y são os gradientes nas direções -x e -y, e T0 denotam as distâncias para as imagens de referência, onde a primeira predição e segunda predição são obtidas.
[0322] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do segundo aspecto ou do segundo aspecto como tal, o método é usado para predição bidirecional; correspondentemente, o par de vetores de movimento inclui um primeiro vetor de movimento que corresponde a uma primeira lista de quadros de referência e um segundo vetor de movimento que corresponde a uma segunda lista de quadros de referência; o conjunto de amostras preditas obtido compreende um primeiro conjunto de amostras preditas obtido, de acordo com o primeiro vetor de movimento e um segundo conjunto de amostras preditas obtido, de acordo com o segundo vetor de movimento; os gradientes de amostra horizontais e verticais compreendem um primeiro conjunto de gradientes de amostra horizontais e verticais computados usando o primeiro conjunto de amostras preditas, e um segundo conjunto de gradientes de amostra horizontais e verticais computados usando o segundo conjunto de amostras preditas; um deslocamento de movimento é obtido com base no primeiro e segundo conjunto de gradientes horizontais e verticais, e no primeiro e segundo conjunto de amostras preditas; e os valores de amostra de predição para o sub- bloco atual são obtidos usando o deslocamento de movimento.
[0323] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do segundo aspecto ou do segundo aspecto como tal, um segundo componente do fluxo óptico (tal como vy) é determinado ou derivado com base em um primeiro componente (tal como vx) do fluxo óptico e em um ou mais dentre um primeiro valor, um segundo valor, um terceiro valor, um quarto valor e um quinto valor; o primeiro componente (tal como vx) do fluxo óptico é determinado ou derivado com base em um ou mais dentre o primeiro valor, o segundo valor, o terceiro valor, o quarto valor e o quinto valor.
[0324] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do segundo aspecto ou do segundo aspecto como tal, vy é fundamentado em vx em bipredição inter baseada em fluxo óptico bipreditivo, como a seguir:
[0325] Em uma forma de implementação possível do método, de acordo com qualquer implementação anterior do segundo aspecto ou do segundo aspecto como tal,
[0326] De acordo com um quarto aspecto, um codificador (20) compreende circuitos de processamento para realizar o método, de acordo com qualquer um do primeiro e segundo aspectos.
[0327] De acordo com um quinto aspecto, um decodificador (30) compreende circuitos de processamento para realizar o método, de acordo com qualquer um do primeiro e segundo aspectos.
[0328] De acordo com um sexto aspecto, um produto de programa de computador compreende um código de programa para realizar o método, de acordo com qualquer um do primeiro e segundo aspectos.
[0329] De acordo com um sétimo aspecto, uma mídia legível por computador não transitória transporta um código de programa que, quando executado por um dispositivo de computador, faz com que o dispositivo de computador realize o método de qualquer um do primeiro e segundo aspectos.
[0330] De acordo com um oitavo aspecto, um decodificador compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e programação de armazenamento para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método, de acordo com qualquer um do primeiro e segundo aspectos.
[0331] De acordo com um nono aspecto, um codificador compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e programação de armazenamento para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método, de acordo com qualquer um do primeiro e segundo aspectos.
[0332] De acordo com um décimo aspecto, um aparelho para predição inter com base em fluxo óptico, compreende: - uma unidade de determinação, configurada para determinar um fluxo óptico para um bloco de codificação atual, em que um segundo componente do fluxo óptico é determinado ou derivado com base em um primeiro componente do fluxo óptico (tal como, em bipredição inter baseada em fluxo óptico bipreditivo); e - uma unidade de obtenção, configurada para obter ou derivar valores de amostra de predição (tais como valores de amostra bipredita) para o sub- bloco atual usando o fluxo óptico determinado para o bloco de codificação atual.
[0333] O seguinte é uma explicação das aplicações do método de codificação bem como o método de decodificação como mostrado nas modalidades mencionadas acima e um sistema que os utiliza.
[0334] A FIG. 11 é um diagrama de bloco que mostra um sistema de fornecimento de conteúdo 3100 para realizar o serviço de distribuição de conteúdo. Este sistema de fornecimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e, opcionalmente, inclui display 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 através do enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui mas não é limitado ao WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB, ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0335] O dispositivo de captura 3102 gera dados, e pode codificar os dados pelo método de codificação como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de transmissão (não mostrado nas Figuras), e o servidor codifica os dados e transmite os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui mas não é limitado à câmera, smartphone ou pad, computador ou laptop, Sistema de videoconferência, PDA, dispositivo montado em veículo, ou uma combinação de qualquer um deles ou semelhantes. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12 como descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realizar realmente o processamento de codificação de vídeo. Quando os dados incluem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realizar realmente o processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de vídeo e áudio codificados pela multiplexação deles juntos. Para outros cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. O dispositivo de captura 3102 distribui os dados de áudio codificados e os dados de vídeo codificados para o dispositivo terminal 3106 separadamente.
[0336] No sistema de fornecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com capacidade de recebimento e recuperação de dados, tal como smartphone ou pad 3108, computador ou laptop 3110, gravador de vídeo de rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, set top box (STB) 3116, sistema de videoconferência 3118, sistema de videovigilância 3120, assistente pessoal digital (PDA) 3122, dispositivo montado em veículo 3124, ou uma combinação de qualquer um deles ou semelhantes capazes de decodificar os dados codificados mencionado acima. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 como descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0337] Para um dispositivo terminal com seu display, por exemplo, smartphone ou pad 3108, computador ou laptop 3110, gravador de vídeo de rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente digital pessoal (PDA) 3122, ou dispositivo montado em veículo 3124, o dispositivo terminal pode alimentar os dados decodificados para seu display. Para um dispositivo terminal equipado sem nenhum display, por exemplo, STB 3116, sistema de videoconferência 3118, ou sistema de videovigilância 3120, um display externo 3126 é contatado para receber e mostrar os dados decodificados.
[0338] Quando cada dispositivo neste sistema realiza codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, como mostrado nas modalidades mencionadas acima, pode ser usado.
[0339] A FIG. 12 é um diagrama que mostra uma estrutura de um exemplo do dispositivo terminal 3106. Depois que o dispositivo terminal 3106 recebe o fluxo do dispositivo de captura 3102, a unidade de procedimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui mas não é limitado ao Protocolo de Transmissão em Tempo Real (RTSP), Protocolo de Transferência de Hiper Texto (HTTP), Protocolo de Transmissão Ao Vivo HTTP (HLS), MPEG-DASH, Protocolo de Transporte em Tempo Real (RTP), Protocolo de Mensagem em Tempo Real (RTMP), ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0340] Depois que a unidade de procedimento de protocolo 3202 processa o fluxo, o arquivo de fluxo é gerado. O arquivo é emitido para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados nos dados de áudio codificados e nos dados de vídeo codificados. Como descrito acima, para alguns cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o decodificador de vídeo 3206 e o decodificador de áudio 3208 sem ser através da unidade de demultiplexação 3204.
[0341] Através do processamento de demultiplexação, o fluxo elementar de vídeo (ES), ES de áudio e, opcionalmente, as legendas são geradas. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 como explicado nas modalidades mencionadas acima, decodifica o ES de vídeo pelo método de decodificação como mostrado nas modalidades mencionadas acima para gerar o quadro de vídeo, e alimenta os dados para a unidade síncrona 3212. O decodificador de áudio 3208, decodifica o ES de áudio para gerar o quadro de áudio, e alimenta estes dados para a unidade síncrona 3212. Alternativamente, o quadro de vídeo pode armazenar em um buffer (não mostrado na FIG. Y) antes de alimentação para a unidade síncrona 3212. Similarmente, o quadro de áudio pode armazenar em um buffer (não mostrado na FIG. Y) antes da alimentação para a unidade síncrona 3212.
[0342] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio, e suporta o vídeo/áudio para um display de vídeo/áudio 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação de informações de vídeo e áudio. As informações podem codificar na sintaxe usando carimbos de data e hora relativos à apresentação dos dados de áudio e visuais codificados e carimbos de data e hora relativos à liberação do fluxo de dados.
[0343] Se a legenda estiver incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda, e sincroniza com o quadro de vídeo e o quadro de áudio, e suporta o vídeo/áudio/legenda para um display de vídeo/áudio/legenda 3216.
[0344] A presente invenção não é limitada ao sistema mencionado acima, e o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem nas modalidades mencionadas acima podem ser incorporados em outro sistema, por exemplo, um sistema de carro.
[0345] Operadores Matemáticos
[0346] Os operadores matemáticos usados neste pedido são similares aos usados na linguagem de programação C. Entretanto, os resultados da divisão inteira e operações de deslocamento aritmético são definidos mais precisamente, e operações adicionais são definidas, tais como exponenciação e divisão com valor real. As convenções de numeração e contagem geralmente começam do 0, por exemplo, “o primeiro” é equivalente ao 0ésimo, “o segundo” é equivalente ao 1o, etc.
[0347] Operadores aritméticos
[0348] Os seguintes operadores aritméticos são definidos como a seguir: + Adição - Subtração (como um operador de argumento de dois) ou negação (como um operador de prefixo unário) * Multiplicação, incluindo multiplicação de matriz xy Exponenciação. Especifica x elevado a y. Em outros contextos, tal notação é usada para sobrescrito não pretendendo ser interpretado como exponenciação. / Divisão inteira com truncamento do resultado em direção a zero. Por exemplo, 7/4 e −7/−4 são truncados para 1 e −7/4 e 7/−4 são truncados para −1. ÷ Usado para denotar divisão nas equações matemáticas onde nenhum truncamento ou arredondamento é pretendido. Usado para denotar divisão nas equações matemáticas onde nenhum truncamento ou arredondamento é pretendido. A soma de f(i) com i assumindo todos os valores inteiros de x até e incluindo y. x % y Módulo. Restante de x dividido por y, definido apenas para inteiros x e y com x >= 0 e y > 0.
[0349] Operadores lógicos
[0350] Os seguintes operadores lógicos são definidos como a seguir: x && y Booleano lógico “e” de x e y x | | y Booleano lógico “ou” de x e y ! Booleano lógico “não” x ? y : z Se x for TRUE ou não for igual a 0, avalia o valor de y; de outro modo, avalia o valor de z.
[0351] Operadores relacionais
[0352] Os seguintes operadores relacionais são definidos como a seguir: > Maior do que >= Maior ou igual a < Menor do que <= Menor ou igual a = = Igual != Diferente de Quando um operador relacional é aplicado a um elemento de sintaxe ou variável que foi atribuída ao valor “na” (não aplicável), o valor “na” é tratado como um valor distinto para o elemento de sintaxe ou variável. O valor “na” não é considerado igual a nenhum outro valor.
[0353] Operadores de lógica binária
[0354] Os seguintes operadores de lógica binária são definidos como a seguir: & Bit-wise “e”. Ao operar com argumentos inteiros, operar com uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binária que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significantes iguais a 0. | Bit-wise “ou”. Ao operar com argumentos inteiros, operar com uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significantes iguais a 0. A Bit-wise “exclusivo ou”. Ao operar com argumentos inteiros, operar com uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significantes iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiro não negativos de y. Os bits deslocados nos bits mais significantes (MSBs) como um resultado do deslocamento para a direita têm um valor igual ao MSB de x antes da operação de deslocamento. x << y Deslocamento aritmético para a esquerda de uma representação inteira de complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados nos bits menos significante (LSBs) como um resultado do deslocamento para a esquerda têm um valor igual a 0.
[0355] Operadores de atribuição
[0356] Os seguintes operadores aritméticos são definidos como a seguir: = Operador de atribuição + + Incremento, isto é, x+ + é equivalente a x = x + 1; quando usado em um índice de arranjo, avalia o valor da variável antes da operação de incremento. - - Decremento, isto é, x- - é equivalente a x = x - 1; quando usado em um índice de arranjo, avalia o valor da variável antes da operação de decremento. += Incremento pela quantidade especificada, isto é, x += 3 é equivalente a x = x + 3 e x += (-3) é equivalente a x = x + (-3). -= Decremento pela quantidade especificada, isto é, x -= 3 é equivalente a x = x - 3, e x -= (-3) é equivalente a x = x - (-3).
[0357] Notação de faixa
[0358] A seguinte notação é usada para especificar uma faixa de valores: x = y..zx assume valores inteiros partindo de y para z, inclusive, com x, y e z sendo números inteiros e z sendo maior do que y.
[0359] Funções matemáticas
[0360] As seguintes funções matemáticas são definidas: Asin(x) a função de seno inversa trigonométrica, operando em um argumento x que está na faixa de -1,0 a 1,0, inclusive, com um valor de saída na faixa de -π-2 a π*2, inclusive, em unidades de radianos Atan(x) a função de tangente inversa trigonométrica, operando em um argumento x, com um valor de saída na faixa de -π*2 a π*2, inclusive, em unidades de radianos Ceil(x) o menor inteiro maior ou igual a x. Clip1Y(x) = Clip3(0, (1 << BitDepthY) - 1, x) Clip1C(x) = Clip3(0, (1 << BitDepthC) - 1, x) Cos(x) a função de cosseno trigonométrica operando em um argumento x em unidades de radianos. Floor(x) o maior inteiro menor ou igual a x. Ln(x) o logaritmo natural de x (o logaritmo de base e, onde e é a constante de base de logaritmo natural 2,718 281 828...). Log2(x) o logaritmo de base 2 de x. Log10(x) o logaritmo de base 10 de x. Rourd(x) = Sigr(x) * Floor(Abs(x) + 0,5) Sir(x) a furção de sero trigorométrica operardo com um argumerto x em uridades de radiaros Tar(x) a furção de targerte trigorométrica operardo com um argumerto x em uridade de radiaros
[0361] A irverção foi descrita em corjurto com várias modalidades reste relatório. Ertretarto, outras variações para as modalidades reveladas podem ser erterdidas e efetuadas pelos técricos ro assurto praticardo a irverção reivirdicada, a partir de um estudo dos deserhos, da revelação e das reivirdicações arexas. Nas reivirdicações, a palavra “compreerde” rão exclui outros elemertos ou etapas e o artigo irdefirido “a” ou “o” rão exclui uma pluralidade. Um úrico processador ou outra uridade pode aterder as furções de vários iters recitados ras reivirdicações. O mero fato de que certas medidas são recitadas usualmerte em diferertes reivirdicações deperdertes rão irdica que uma combiração destas medidas rão pode ser usada como vartagem. Um programa de computador pode ser armazenado/distribuído em uma mídia adequada, tal como uma mídia de armazenamento óptico ou uma mídia de estado sólido suportada junto ou como parte de outro hardware, mas também pode ser distribuído em outras formas, tal como através de internet ou outros sistemas de comunicação com fio ou sem fio.
[0362] O técnico no assunto entenderá que os “blocos” (“unidades”) das várias figuras (método e aparelho) representam ou descrevem funcionalidades das modalidades da invenção (em vez de “unidades” necessariamente individuais em hardware ou software) e, assim, descrevem igualmente funções ou características das modalidades do aparelho bem como modalidades do método (unidade = etapa).
[0363] A terminologia de “unidades” é meramente usada para propósitos ilustrativos da funcionalidade de modalidades do codificador/decodificador e não é destinada a limitar a revelação.
[0364] Nas várias modalidades fornecidas no presente pedido, deve ser entendido que o sistema, aparelho e método podem ser implementados de outras maneiras. Por exemplo, a modalidade do aparelho descrita é meramente exemplar. Por exemplo, a divisão de unidade é meramente a divisão de função lógica e pode ser outra divisão na implementação real. Por exemplo, uma pluralidade de unidades ou componentes pode ser combinada ou integrada em outro sistema, ou algumas características podem ser ignorada ou não realizadas. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou debatidos podem ser implementados por meio do uso de algumas interfaces. Os acoplamentos indiretos ou conexões de comunicação entre os aparelhos ou unidades podem ser implementados em formas eletrônicas, mecânicas ou outras formas.
[0365] As unidades descritas como partes separadas podem ou não podem ser fisicamente separadas, e as partes exibidas como unidades podem ou não podem ser unidades físicas, podem estar localizadas em uma posição, ou podem ser distribuídas em uma pluralidade de unidades de rede. Algumas ou todas as unidades podem ser selecionadas, de acordo com as necessidades reais para obter os objetivos das soluções das modalidades.
[0366] Além disso, as unidades funcionais nas modalidades da presente invenção podem ser integradas em uma unidade de processamento, ou cada uma das unidades pode existir fisicamente sozinhas, ou duas ou mais unidades são integradas em uma unidade.
[0367] As modalidades da invenção podem compreender adicionalmente um aparelho, por exemplo, codificador e/ou decodificador, que compreende circuitos de processamento configurados para realizar qualquer um dos métodos e/ou processos descritos neste relatório.
[0368] Embora as modalidades da invenção sejam descritas primeiramente com base na codificação de vídeo, deve ser observado que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e, correspondentemente, o sistema 10) e as outras modalidades descritas neste relatório também podem ser configuradas ainda para a processamento ou codificação de imagem, isto é, o processamento ou codificação de uma imagem individual independente de qualquer procedimento ou imagem consecutiva como na codificação de vídeo. Em geral, apenas as unidades de predição inter 244 (codificador) e 344 (decodificador) podem não estar disponíveis no caso de a codificação de processamento de imagem estar limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e decodificador de vídeo 30 podem igualmente ser usadas ainda para o processamento de imagem, por exemplo, cálculo residual 204/304, transformada 206, quantização 208, quantização inversa 210/310, transformada (inversa) 212/312, particionamento 262/362, predição intra 254/354, e/ou filtragem loop 220, 320, e codificação de entropia 270 e decodificação de entropia 304.
[0369] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas neste relatório, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas através da mídia de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir a mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, tal como mídia de armazenamento de dados, ou mídia de comunicação incluindo qualquer mídia que facilite a transferência de um programa de computador de uma placa para outro, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, a mídia legível por computador pode corresponder à (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) uma mídia de comunicação, tal como um sinal ou onda de portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0370] Através do exemplo e não limitando, tal mídia de armazenamento legível por computador pode 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 é apropriadamente denominada como uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas de um website, servidor ou outra fonte remota para um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, em seguida, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas são incluídas na definição de mídia. Deve ser entendido, entretanto, que a mídia de armazenamento legível por computador e mídia de armazenamento de dados não incluem conexões, ondas de portadora, sinais ou outra mídia transitória, mas são, em vez disso, direcionadas para a mídia de armazenamento tangível não transitória. Disquete e disco, como usado neste relatório, inclui disco compacto (CD), disco à laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os disquetes usualmente reproduzem magneticamente os dados, enquanto os discos reproduzem dados opticamente com lasers. As combinações do anterior também devem estar incluídas dentro do escopo da mídia legível por computador.
[0371] As instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados específicos da aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo “processador”, como usado neste relatório pode se referir a qualquer uma da estrutura anterior ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste relatório. Além disso, em alguns aspectos, a funcionalidade descrita neste relatório pode ser fornecida dentro dos módulos de hardware e/ou software dedicados configurados para codificação e decodificação ou incorporados em um codec combinado. Além disso, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0372] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone sem fio, 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 aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não necessariamente requer a realização de diferentes unidades de hardware. Em vez disso, como 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 como descrito acima, em conjunto com software e/ou firmware adequado.
Claims (26)
1. Método para predição inter baseada em fluxo óptico bidirecional (BDOF) para um bloco atual de um sinal de vídeo, CARACTERIZADO pelo fato de que compreende: determinar um deslocamento de movimento horizontal vx e um deslocamento de movimento vertical vy do bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o deslocamento de movimento vertical é derivado com base no deslocamento de movimento horizontal, em uma segunda variável s2, em uma quarta variável s4 e na quinta variável $5, em que: a segunda variável s2 indica uma soma de valores absolutos de elementos da segunda matriz; e a quarta variável s4 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da segunda matriz e um elemento de uma terceira matriz, e o elemento da terceira matriz corresponde ao elemento da segunda matriz, e cada elemento da terceira matriz é uma diferença que é obtida a partir de uma primeira amostra predita do primeiro quadro de referência que corresponde ao elemento da terceira matriz e uma segunda amostra predita do segundo quadro de referência que corresponde ao elemento da terceira matriz.
3. Método, de acordo com a reivindicação 2, CARACT ERIZADO pelo fato de que o deslocamento de movimento horizontal é derivado com base em uma primeira variável s1 e em uma terceira variável s3; a primeira variável indica uma soma de valores absolutos de elementos da primeira matriz; e a terceira variável $3 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da primeira matriz e um elemento da terceira matriz, e o elemento da terceira matriz corresponde ao elemento da primeira matriz.
4. Método, de acordo com a reivindicação 3, CARACT ERIZADO pelo fato de que o deslocamento de movimento horizontal é determinado de acordo com em que: vx representa o deslocamento de movimento horizontal.
5. Método, de acordo com a reivindicação 2, CARACT ERIZADO pelo fato de que o deslocamento de movimento vertical vy é determinado de acordo com em que: vx representa o deslocamento de movimento horizontal; e vy representa o deslocamento de movimento vertical.
6. Método, de acordo com a reivindicação 4 ou 5, CARACTERIZADO pelo fato de que s1, s2, s3, s4 e são determinados como: e em que: I(0) é obtido a partir dos valores de amostra predita que correspondem ao primeiro quadro de referência, e I(1) é obtido a partir dos valores de amostra predita que correspondem ao segundo quadro de referência; GX0 e GX1 indicam um conjunto dos gradientes de amostra predita horizontais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; Gy0 e Gy1 indicam um conjunto dos gradientes de amostra predita verticais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; e i e j são números inteiros, em que um valor de i varia de -1 a 4, e um valor de j varia de -1 a 4.
7. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que o Gx0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal, e o Gy0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical.
8. Método, de acordo com a reivindicação 6, CARACT ERIZADO pelo fato de que o Gxí é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal, e o G é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical.
9. Método, de acordo com qualquer uma das reivindicações 1 a 8, CARACT ERIZADO pelo fato de que os valores de amostra de predição correspondentes ao primeiro quadro de referência e os valores de amostra de predição correspondentes ao segundo quadro de referência são obtidos a partir do primeiro e segundo quadros de referência, respectivamente, usando um par de vetores de movimento para o bloco atual em relação ao primeiro e segundo quadros de referência.
10. Método, de acordo com qualquer uma das reivindicações 1 a 9, CARACT ERIZADO pelo fato de que os valores de amostra de predição para o bloco atual são valores de amostra bipredita com base em predição de fluxo óptico bidirecional (BDOF).
11. Dispositivo para codificar dados de vídeo, CARACT ERIZADO pelo fato de que compreende: uma memória de dados de vídeo; e um codificador de vídeo, em que o codificador de vídeo é configurado para: determinar um deslocamento de movimento horizontal vx e um deslocamento de movimento vertical v de um bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável $5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
12. Dispositivo para decodificar dados de vídeo, CARACT ERIZADO pelo fato de que compreende: uma memória de dados de vídeo; e um decodificador de vídeo, em que o decodificador de vídeo é configurado para: determinar um deslocamento de movimento horizontal vx e um deslocamento de movimento vertical vy de um bloco atual, e em que o deslocamento de movimento vertical é determinado com base no deslocamento de movimento horizontal e em uma quinta variável $5, em que: a quinta variável s5 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento de uma segunda matriz e um elemento de uma primeira matriz, e o elemento da primeira matriz corresponde ao elemento da segunda matriz; cada elemento da primeira matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita horizontal que corresponde a um primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita horizontal que corresponde a um segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita horizontal e o segundo gradiente de amostra predita horizontal correspondem ao elemento da primeira matriz; e cada elemento da segunda matriz é obtido a partir de uma soma de um primeiro gradiente de amostra predita vertical que corresponde ao primeiro quadro de referência do bloco atual e um segundo gradiente de amostra predita vertical que corresponde ao segundo quadro de referência do bloco atual, em que o primeiro gradiente de amostra predita vertical e o segundo gradiente de amostra predita vertical correspondem ao elemento da segunda matriz; e determinar valores de amostra de predição no bloco atual usando valores de amostra de predição correspondentes ao primeiro quadro de referência, valores de amostra de predição correspondentes ao segundo quadro de referência, e o deslocamento de movimento horizontal e o deslocamento de movimento vertical.
13. Dispositivo, de acordo com a reivindicação 11 ou 12, CARACT ERIZADO pelo fato de que o deslocamento de movimento vertical é derivado com base no deslocamento de movimento horizontal, em uma segunda variável s2, em uma quarta variável $4e na quinta variável $5, em que: a segunda variável s2 indica uma soma de valores absolutos de elementos da segunda matriz; e a quarta variável $4 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da segunda matriz e um elemento de uma terceira matriz, e o elemento da terceira matriz corresponde ao elemento da segunda matriz, e cada elemento da terceira matriz é uma diferença que é obtida a partir de uma primeira amostra predita do primeiro quadro de referência que corresponde ao elemento da terceira matriz e uma segunda amostra predita do segundo quadro de referência que corresponde ao elemento da terceira matriz.
14. Dispositivo, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o deslocamento de movimento horizontal é derivado com base em uma primeira variável s1 e em uma terceira variável s3; a primeira variável s1 indica uma soma de valores absolutos de elementos da primeira matriz; e a terceira variável s3 indica uma soma de uma pluralidade de termos, em que cada um dentre a pluralidade de termos é obtido a partir de um sinal de um elemento da primeira matriz e um elemento da terceira matriz, e o elemento da terceira matriz corresponde ao elemento da primeira matriz.
15. Dispositivo, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que o deslocamento de movimento horizontal é determinado de acordo com em que: vx representa o deslocamento de movimento horizontal.
16. Dispositivo, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o deslocamento de movimento vertical vy é determinado de acordo com em que: vx representa o deslocamento de movimento horizontal; e vy representa o deslocamento de movimento vertical.
17. Dispositivo, de acordo com a reivindicação 15 ou 16, CARACTERIZADO pelo fato de que s1, s2, s3, s4 e s5 são determinados como: e em que: I(0) é obtido a partir dos valores de amostra predita que correspondem ao primeiro quadro de referência, e I(1) é obtido a partir dos valores de amostra predita que correspondem ao segundo quadro de referência; Gx0 e Gxí indicam um conjunto dos gradientes de amostra predita horizontais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; G e G indicam um conjunto dos gradientes de amostra predita verticais que correspondem ao primeiro quadro de referência e ao segundo quadro de referência, respectivamente; e i e j são números inteiros, em que um valor de i varia de -1 a 4, e um valor de j varia de -1 a 4.
18. Dispositivo, de acordo com a reivindicação 17, CARACT ERIZADO pelo fato de que o G é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção horizontal, e o G0 é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao primeiro quadro de referência ao longo de uma direção vertical.
19. Dispositivo, de acordo com a reivindicação 17, CARACT ERIZADO pelo fato de que o G é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção horizontal, e o G é determinado como uma diferença obtida a partir de duas amostras preditas que correspondem ao segundo quadro de referência ao longo de uma direção vertical.
20. Dispositivo, de acordo com qualquer uma das reivindicações 11 a 19, CARACT ERIZADO pelo fato de que os valores de amostra de predição correspondentes ao primeiro quadro de referência e os valores de amostra de predição correspondentes ao segundo quadro de referência são obtidos a partir do primeiro e segundo quadros de referência, respectivamente, usando um par de vetores de movimento para o bloco atual em relação ao primeiro e segundo quadros de referência.
21. Dispositivo, de acordo com qualquer uma das reivindicações 11 a 20, CARACT ERIZADO pelo fato de que os valores de amostra de predição para o bloco atual são valores de amostra bipredita com base em predição de fluxo óptico bidirecional (BDOF).
22. Codificador (20), CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
23. Decodificador (30), CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
24. Mídia de armazenamento legível por computador não transitória, CARACT ERIZADA pelo fato de que armazena um conjunto de instruções que, quando executado por um dispositivo de computador, faz com que o dispositivo de computador realize o método conforme definido em qualquer uma das reivindicações 1 a 10.
25. Decodificador, CARACT ERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e que armazena um conjunto de instruções para execução pelos processadores, em que o conjunto de instruções, quando executado pelos processadores, configura o decodificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
26. Codificador, CARACT ERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e que armazena um conjunto de instruções para execução pelos processadores, em que o conjunto de instruções, quando executado pelos processadores, configura o codificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201931010751 | 2019-03-19 | ||
IN201931010751 | 2019-03-19 | ||
PCT/CN2020/080156 WO2020187284A1 (en) | 2019-03-19 | 2020-03-19 | Optical flow based video inter prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112021018447A2 BR112021018447A2 (pt) | 2021-11-23 |
BR112021018447B1 true BR112021018447B1 (pt) | 2024-08-20 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020276527B9 (en) | An encoder, a decoder and corresponding methods using IBC dedicated buffer and default value refreshing for luma and chroma component | |
WO2020253858A1 (en) | An encoder, a decoder and corresponding methods | |
BR112021009848A2 (pt) | codificador, decodificador e métodos correspondentes para predição inter | |
WO2020238706A1 (en) | An encoder, a decoder and corresponding methods using for ibc merge list | |
ES2965083T3 (es) | Terminación temprana para el refinamiento de flujo óptico | |
BR112020026818A2 (pt) | codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio | |
US11889109B2 (en) | Optical flow based video inter prediction | |
BR112021008016A2 (pt) | codificador, decodificador e métodos correspondentes para modo de fusão | |
CN113597761A (zh) | 帧内预测方法和装置 | |
BR112021016560A2 (pt) | Método e aparelho para predição intra usando modelo linear | |
BR112021001813A2 (pt) | método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador | |
BR112021009922A2 (pt) | Método de construir uma lista de mesclagens candidata para modo de cópia de intrabloco, codificador, decodificador, produto de programa de computador e dispositivo de decodificação de dados de vídeo | |
BR112021010286A2 (pt) | codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses | |
BR122023021045A2 (pt) | Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento | |
BR112021009833A2 (pt) | codificador, decodificador e métodos correspondentes para predição inter | |
BR112021012708A2 (pt) | Método e aparelho de modelagem linear de componente cruzado para predição intra | |
BR112021003946A2 (pt) | codificador de vídeo, decodificador de vídeo e métodos correspondentes | |
BR112021018447B1 (pt) | Predição inter de vídeo baseada em fluxo óptico | |
WO2021006773A1 (en) | Motion field storage optimization for the line buffer | |
BR122024001285A2 (pt) | Método de filtragem de um valor de amostra de uma imagem, aparelho de codificação de vídeo, codificador e meio legível por computador não transitório | |
BR112020025145B1 (pt) | Filtro de desblocagem para fronteiras de subpartição causadas por ferramenta de codificação de subpartição intra | |
BR122024001393A2 (pt) | Codificador, decodificador e métodos correspondentes para sinalização de subimagem em conjunto de parâmetros de sequência |