BR112021011723A2 - Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits - Google Patents

Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits Download PDF

Info

Publication number
BR112021011723A2
BR112021011723A2 BR112021011723-7A BR112021011723A BR112021011723A2 BR 112021011723 A2 BR112021011723 A2 BR 112021011723A2 BR 112021011723 A BR112021011723 A BR 112021011723A BR 112021011723 A2 BR112021011723 A2 BR 112021011723A2
Authority
BR
Brazil
Prior art keywords
sample value
intra
block
intra prediction
prediction mode
Prior art date
Application number
BR112021011723-7A
Other languages
English (en)
Inventor
Alexey Konstantinovich Filippov
Vasily Alexeevich Rufitskiy
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021011723A2 publication Critical patent/BR112021011723A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Abstract

método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits. um método de predição intra de um bloco de uma imagem, que compreende para uma amostra a partir de uma pluralidade de amostras do bloco determinar um valor de amostra predita a partir de um ou mais valores de amostra de referência por predição intra usando um modo de predição intra selecionado a partir de um dentre um modo de predição intra dc, um modo de predição intra planar, e um modo de predição intra angular; determinar um primeiro peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; determinar um segundo peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; calcular um valor adicional como uma soma ponderada de um valor de amostra de referência de topo e um valor de amostra de referência à esquerda ponderando-se o valor de amostra de referência de topo com o primeiro peso e o valor de amostra de referência à esquerda com o segundo peso; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderado; adicionar o valor adicional ao valor de amostra predita ponderado, resultando em um valor de amostra predita modificado não normalizado; e normalizar o valor de amostra predita modificado não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita modificado não normalizado, resultando em um valor de amostra predita modificado normalizado.

Description

“MÉTODO E APARELHO DE PREDIÇÃO INTRA E CODIFICADOR, DECODIFICADOR, PROGRAMA DE COMPUTADOR, MÍDIA DE ARMAZENAMENTO NÃO TRANSITÓRIA, E FLUXO DE BITS” REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] Este pedido de patente reivindica prioridade do Pedido de Patente Provisório U.S. no 62/784,345, depositado em 21 de dezembro de 2018, a revelação do pedido de patente supramencionado é incorporada ao presente documento a título de referência em sua totalidade.
CAMPO DA TÉCNICA
[0002] As modalidades do presente pedido (revelação) referem-se, de modo geral, ao campo de processamento de imagem e, mais particularmente, à predição intra com uma combinação de predição dependente de posição.
ANTECEDENTES
[0003] A codificação de vídeo (codificação e decodificação de vídeo) é usada em uma variedade de aplicações de vídeo digital, por exemplo, TV digital de broadcast, transmissão de vídeo pela internet e redes móveis, aplicações de conversa em tempo real, tais como chat por vídeo, videoconferência, discos DVD e Blu-ray, sistemas de aquisição e edição de conteúdo de vídeo e camcorders de aplicações de segurança. A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, que pode resultar em dificuldades quando os dados precisam ser transmitidos ou comunicados de outro modo por uma rede de comunicações com capacidade de largura de banda limitada. Desse modo, os dados de vídeo são, de modo geral, comprimidos antes de serem comunicados por redes de telecomunicações atuais. O tamanho de um vídeo também pode ser uma questão quando o vídeo é armazenado em um dispositivo de armazenamento, visto que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo normalmente usam software e/ou hardware na origem para codificar os dados de vídeo antes de transmissão ou armazenamento, diminuindo, desse modo, a quantidade de dados necessária para representar imagens de vídeo digitais. Os dados comprimidos são, então, 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 crescentes por maior qualidade de vídeo, as técnicas de compressão e descompressão aperfeiçoadas que aperfeiçoam a razão de compressão com pouco ou nenhum comprometimento na qualidade de imagem são desejáveis.
SUMÁRIO
[0004] Tendo em vista os problemas discutidos acima, a presente revelação fornece uma solução para mitigar ou solucionar o problema mencionado acima.
[0005] As modalidades do presente pedido fornecem aparelhos e métodos para predizer de modo intra um bloco de uma imagem de acordo com as reivindicações independentes.
[0006] O objetivo anterior bem como outros objetivos são alcançados pela matéria das reivindicações independentes. As formas de implantação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0007] A presente revelação fornece: Um método de predição intra de um bloco de uma imagem, que compreende para uma amostra dentre uma pluralidade de amostras do bloco: determinar um valor de amostra predita a partir de um ou mais valores de amostra de referência por predição intra usando um modo de predição intra selecionado a partir de um dentre um modo de predição intra DC, um modo de predição intra planar e um modo de predição intra angular; determinar um primeiro peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; determinar um segundo peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; calcular um valor adicional como uma soma ponderada de um valor de amostra de referência de topo e um valor de amostra de referência à esquerda ponderando-se o valor de amostra de referência de topo com o primeiro peso e o valor de amostra de referência à esquerda com o segundo peso; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderado; adicionar o valor adicional ao valor de amostra predita ponderado, resultando em um valor de amostra predita modificado não normalizado; e normalizar o valor de amostra predita modificado não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita modificado não normalizado, resultando em um valor de amostra predita modificado normalizado.
[0008] Na presente invenção, em particular, o primeiro peso e o segundo peso podem ser diferentes.
[0009] Em uma possível forma de implantação do método de acordo com o aspecto anterior como tal, em que o método compreende predizer de modo intra o bloco para a imagem, que compreende cada amostra dentre a pluralidade de amostras do bloco.
[0010] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que determinar o primeiro peso e determinar o segundo peso compreende determinar um fator de escala com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; em que o primeiro peso e o segundo peso são determinados com base no fator de escala, respectivamente.
[0011] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal; em que determinar o primeiro peso compreende determinar um fator de escala vertical, denotado nScaleY, com base na altura do bloco e no modo de predição intra, em que o primeiro peso é determinado com base no fator de escala vertical, nScaleY; determinar o segundo peso compreende determinar um fator de escala horizontal, denotado, nScaleX, com base na largura do bloco e no modo de predição intra, em que o segundo peso é determinado com base no fator de escala horizontal, nScaleX.normalizar o valor de amostra predita não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita não normalizado, resultando em um valor de amostra predita normalizado.
[0012] Na presente invenção, a determinação do primeiro peso compreende determinar um fator de escala vertical, enquanto a determinação do segundo peso compreende determinar um fator de escala horizontal, em que se deve entender que, dependendo do tipo dos modos de predição intra, esses fatores podem ser diferentes.
[0013] Em uma possível forma de implantação do método, de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que nScaleX e nScaleY são derivados dependendo de um índice de classe de modo, respectivamente, em que o índice de classe de modo é derivado usando um grupo de modos de predição intra.
[0014] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que o índice de classe de modo é mapeado para o grupo específico de modos de predição intra de acordo com uma dentre as seguintes tabelas: Grupo de 2, Outros modos de VDIA_IDX DC_IDX, modos predição HOR_IDX, intra Índice de 1 2 0 classe ou Grupo de DC_IDX, 2, Outros modos de HOR_IDX, VDIA_IDX modos predição VER_IDX intra Índice de 1 2 0 classe ou Grupo de DC_IDX, 2, Outros modos de HOR_IDX, VDIA_IDX modos predição VER_IDX intra Índice de 2 1 0 classe ou Grupo de DC_IDX, Modos Outros modos de HOR_IDX, diagonais modos predição VER_IDX com etapa intra de subpixel de número inteiro: -14 -12 -10 -6, 2, VDIA_IDX, 72, 76, 78, 80 Índice de 2 1 0 classe em que DC_IDX significa modo DC que tem índice de modo de predição intra de 1, HOR_IDX e VER_IDX significam modos horizontal e vertical que têm índices de modo de predição intra de 18 e 50, respectivamente, VDIA_IDX significa modo diagonal que tem índice de modo de predição intra de
66.
[0015] Na presente invenção, diferentes mapeamentos de grupos de modos de predição intra para diferentes classes são mostrados.
[0016] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que nScaleX e nScaleY são derivados de acordo com o seguinte mapeamento: Índice de Método de derivação classe nScaleX = ( Log2( nTbW ) – 2 + 1 ) >> 1 0 nScaleY = ( Log2( nTbH ) – 2 + 1 ) >> 1 nScaleY = nScaleX = ( Log2( nTbH ) + Log2( nTbW ) ) > 6 ? 1: 1 0 nScaleX = Log2( nTbW ) > 3 ? 1 : 0 2 nScaleY = Log2( nTbH ) > 3 ? 1 : 0 em que, nTbW e nTbH denotam largura e altura do bloco predito, respectivamente, e “>>” denota uma operação de desvio para direita. em que Floor é a função floor, Log2 retorna o logaritmo natural de um número para a base 2, Min retorna o menor de seus argumentos, e “>>” denota uma operação de desvio para direita.
[0017] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que o índice de classe de modo é mapeado para o grupo específico de modos de predição intra de acordo com a seguinte tabela: Grupo predModeIntra<18 de && Outros modos predModeIntra>50 predModeIntra!=0 modos de && predição predModeIntra!=1 intra Índice de 1 2 0 classe
[0018] Em uma possível forma de implementação do método de acordo com qualquer implementação antecedente do aspecto anterior ou o aspecto anterior como tal, em que nScaleX e nScaleY são derivados de acordo com o seguinte mapeamento: Índice de Método de derivação classe 0 nScaleY = nScaleX = ( Log2( nTbH ) + Log2( nTbW ) - 2 ) >> 2 nScaleY = nScaleX = 1 Min( 2, Log2( nTbH ) − Floor( Log2( 3 * invAngle − 2 ) ) + 8 ) nScaleY = nScaleX = 2 Min( 2, Log2( nTbW ) − Floor( Log2( 3 * invAngle − 2 ) ) + 8 ) Log2( nTbH ) > 3 ? 1 : 0 em que, nTbW e nTbH denotam largura e altura do bloco predito, respectivamente, e “>>” denota uma operação de desvio para direita.
em que Floor é a função floor, Log2 retorna o logaritmo natural de um número para a base 2, Min retorna o menor de seus argumentos, e “>>” denota uma operação de desvio para direita; em que invAngle é o parâmetro de ângulo inverso que é derivado usando intraPredAngle da seguinte maneira: 512∗32 invAngle = Round(intraPredAngle); em que intraPredAngle é o parâmetro de ângulo que é derivado do modo de predição intra, fornecido pela variável predModeIntra, usando uma Tabela de consulta, LUT.
[0019] Em uma possível forma de implantação do método, de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que a LUT é fornecida pela seguinte Tabela - - - - - predMo 1 1 1 1 1 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 3 4 deIntra 4 3 2 1 0 5 3 2 1 1 1 intraPre 8 7 6 5 5 4 3 3 3 2 2 1 4 5 7 2 0 dAngle 6 3 4 7 1 5 9 5 2 9 6 2 1 6 1 8 2 predMo 1 1 1 1 1 1 1 1 1 1 2 2 5 6 7 8 9 deIntra 0 1 2 3 4 5 6 7 8 9 0 1 intraPre 2 2 1 1 1 1 1 - 8 6 4 3 2 1 0 -1 -2 dAngle 3 0 8 6 4 2 0 3 predMo 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 deIntra 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 - - - - - - - - - - - - - - intraPre - -6 -8 1 1 1 1 1 2 2 2 2 3 2 2 2 2 dAngle 4 0 2 4 6 8 0 3 6 9 2 9 6 3 0 predMo 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 deIntra 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - - - - - intraPre 1 1 1 1 1 -8 -6 -4 -3 -2 -1 0 1 2 3 4 6 dAngle 8 6 4 2 0 predMo 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 deIntra 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 intraPre 1 1 1 1 1 2 2 2 2 3 3 3 4 5 5 6 8 dAngle 0 2 4 6 8 0 3 6 9 2 5 9 5 1 7 4 predMo 7 7 7 7 7 7 7 8 deIntra 3 4 5 6 7 8 9 0 1 1 1 2 3 5 intraPre 7 8 0 2 7 5 4 1 dAngle 3 6 2 8 1 6 1 2
[0020] Em uma possível forma de implantação do método, de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que normalizar o valor de amostra predita modificado não normalizado compreende computar o valor de amostra predita como 𝑃(𝑥, 𝑦) = Clip1Cmp( (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 − 𝑤𝑇𝐿 × 𝑅−1,−1 + (64 − 𝑤𝑙 − 𝑤𝑇 + 𝑤𝑇𝐿 ) × 𝑃 (𝑥, 𝑦) + 32)) ≫ 6) em que 𝑃(𝑥, 𝑦) é o valor de amostra predita modificado não normalizado, Rx,-1, R-1,y representam os valores das amostras de referência mais próximas localizadas acima e à esquerda de cada amostra, wL = V >> ( ( x << 1 ) >> nScaleX ) é um fator de ponderação horizontal, wT = V >> ( ( y << 1 ) >> nScaleY ) é um fator de ponderação vertical, V é um valor base; x é uma coordenada horizontal de cada amostra, e y é uma coordenada vertical da amostra; em que clip1Cmp é definido da seguinte maneira: no caso de cIdx ser igual a 0, clip1Cmp é definido como igual a Clip1Y; de outro modo, clip1Cmp é definido como igual a Clip1C; em que cIdx é uma variável que especifica o componente de cor do bloco atual; e Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
x ; z<x Clip3( x, y, z ) = { y ; z>y z ; de outro modo em que BitDepthY é a profundidade de bit de amostras de luma. em que BitDepthC é a profundidade de bit de amostras de luma.
[0021] Em uma possível forma de implantação do método de acordo com o aspecto anterior como tal, em que para um modo planar, wTL = 0, enquanto para o modo horizontal wTL = wT e para modo vertical wTL = wL.
[0022] Em uma possível forma de implantação do método, de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que normalizar o valor de amostra predita modificado não normalizado compreende computar o valor de amostra predita modificado normalizado como 𝑃̂(𝑥, 𝑦) = (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6 em que 𝑃̂(𝑥, 𝑦) é o valor de amostra predita modificado normalizado, 𝑃(𝑥, 𝑦) é o valor de amostra predita modificado não normalizado, Rx,-1, R-1,y representam os valores das amostras de referência mais próximas localizadas acima e à esquerda de cada amostra, wL = V >> ( ( x << 1 ) >> nScaleX ) é um fator de ponderação horizontal, wT = V >> ( ( y << 1 ) >> nScaleY ) é um fator de ponderação vertical, x é uma coordenada horizontal de cada amostra, e y é uma coordenada vertical da amostra.
[0023] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que cada amostra não é atualizada se uma soma de uma largura do bloco e uma altura do bloco, fornecidas em amostras, respectivamente, for maior do que 64 amostras, e o modo de predição intra é oblíquo não diagonal ou o modo de predição intra é um modo de predição intra planar.
[0024] Em uma possível forma de implantação do método de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, em que intraPredMode é oblíquo não diagonal se intraPredMode não for igual a 2 ou VDIA_IDX e um dentre os seguintes for verdadeiro: intraPredMode não é menor do que VDIA_IDX – numModes ou intraPredMode não é maior do que 2 + numModes.
[0025] Em uma possível forma de implantação do método, de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, a imagem é parte de uma sequência de vídeo.
[0026] Em uma possível forma de implantação do método, de acordo com qualquer implantação antecedente do aspecto anterior ou o aspecto anterior como tal, que compreende, ainda adicionar um valor residual ao valor de amostra predita modificado normalizado, resultando em um valor de amostra reconstruída.
[0027] A presente revelação fornece, ainda, um codificador (20) que compreende circuitos de processamento para realizar o método de acordo com qualquer implantação antecedente de qualquer aspecto antecedente ou qualquer aspecto antecedente como tal.
[0028] A presente revelação fornece, ainda, um decodificador (30) que compreende circuitos de processamento para realizar o método de acordo com qualquer implantação antecedente de qualquer aspecto antecedente ou qualquer aspecto antecedente como tal.
[0029] A presente revelação fornece, ainda, um programa de computador que compreende um código de programa para realizar o método de acordo com qualquer implantação antecedente de qualquer aspecto antecedente ou qualquer aspecto antecedente como tal.
[0030] A presente revelação pode fornecer, ainda, um produto de programa de computador que compreende um código de programa para realizar o método de acordo com qualquer implantação antecedente de qualquer aspecto antecedente ou qualquer aspecto antecedente como tal.
[0031] A presente revelação fornece, ainda, um decodificador, 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 programação 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 implantação antecedente de qualquer aspecto antecedente ou qualquer aspecto antecedente como tal.
[0032] A presente revelação fornece, ainda, um codificador, 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 programação 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 implantação antecedente de qualquer aspecto antecedente ou qualquer aspecto antecedente como tal.
[0033] Os detalhes de uma ou mais modalidades são estabelecidos nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0034] A seguir, as modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, em que: A Figura 1A ilustra, de modo esquemático, um exemplo de um sistema de codificação de vídeo configurado para implantar as modalidades da invenção; A Figura 1B ilustra, de modo esquemático, outro exemplo de um sistema de codificação de vídeo configurado para implantar as modalidades da invenção; A Figura 2 ilustra, de modo esquemático, um exemplo de um codificador de vídeo configurado para implantar as modalidades da invenção; A Figura 3 ilustra, de modo esquemático, uma estrutura exemplificativa de um decodificador de vídeo configurado para implantar as modalidades da invenção; A Figura 4 ilustra, de modo esquemático, um exemplo de um aparelho de codificação ou um aparelho de decodificação; A Figura 5 ilustra, de modo esquemático, outro exemplo de um aparelho de codificação ou um aparelho de decodificação; A Figura 6 ilustra, de modo esquemático, direções de predição intra angulares e modos de predição intra associados em HEVC; A Figura 7 ilustra, de modo esquemático, direções de predição intra angulares e modos de predição intra associados em JEM; A Figura 8 ilustra, de modo esquemático, direções de predição intra angulares e modos de predição intra associados em especificação VTM-3.0 e VVC projeto v.3; A Figura 9 ilustra, de modo esquemático, direções de predição intra angulares e os modos de predição intra associados em especificação VTM-3.0 e VVC projeto v.3; A Figura 10 ilustra, de modo esquemático, um exemplo de pesos de PDPC de modo DC para posições (0, 0) e (1, 0) dentro de um bloco 4x4; A Figura 11 ilustra, de modo esquemático, um exemplo de predição intra de um bloco a partir de amostras de referência do lado de referência principal; A Figura 12 ilustra um exemplo de pesos de PDPC de modo DC para posições (0, 0) e (1, 0) dentro de um bloco 4x4; A Figura 13 ilustra, de modo esquemático, um exemplo de um método para determinar um fator de escala vertical e horizontal; A Figura 14 ilustra, de modo esquemático, um exemplo de um método para determinar um fator de escala vertical e horizontal; A Figura 15 ilustra, de modo esquemático, um exemplo alternativo de um método para determinar um fator de escala vertical e horizontal.
[0035] A seguir, referências numéricas idênticas se referem a recursos idênticos ou pelo menos funcionalmente equivalentes, caso não sejam especificados explicitamente de outro modo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0036] Na descrição a seguir, referência é feita às figuras anexas, que formam parte da revelação, e que mostram, a título de ilustração, aspectos específicos de modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. Entende-se que as modalidades da invenção podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não retratadas nas figuras. A descrição detalhada a seguir, portanto, não deve ser considerada em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0037] Por exemplo, entende-se que uma revelação, em conexão com 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 de método específicas for descrita, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a uma ou pluralidade de etapas de método descritas (por exemplo, uma unidade que realiza a uma ou pluralidade de etapas, ou uma pluralidade de unidades que realiza, cada uma, uma ou mais dentre a pluralidade de etapas), até mesmo se tal uma ou mais unidades não estiverem 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 da uma ou pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade da uma ou pluralidade de unidades, ou uma pluralidade de etapas que realiza, cada uma, a funcionalidade de uma ou mais dentre a pluralidade de unidades), até mesmo se tal uma ou pluralidade de etapas não estiver explicitamente descrita ou ilustrada nas figuras. Adicionalmente, entende-se que os recursos das várias modalidades e/ou aspectos exemplificativos, descritos no presente documento, podem ser combinados uns com os outros, a menos que estabelecido especificamente de outro modo.
[0038] A codificação de vídeo tipicamente se refere ao processamento de uma sequência de imagens, que forma o vídeo ou sequência de vídeo. Em vez do termo “imagem”, o termo “quadro” ou “foto” pode ser usado como sinônimo no campo de 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, que compreende, tipicamente, processamento (por exemplo, por compressão) das 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 eficientes). A decodificação de vídeo é realizada no lado de destino e tipicamente compreende o processamento inverso, quando comparado 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 se referir à “codificação” ou “decodificação” de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é denominada CODEC (Codificação e Decodificação).
[0039] Em caso de codificação de vídeo sem perda de dados, 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 (supondo nenhuma perda de transmissão ou perda de outros dados durante armazenamento ou transmissão). Em caso de codificação de vídeo com perda de dados, compressão adicional, por exemplo, por quantização, é realizada para reduzir a quantidade de dados que representam 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 quando comparado à qualidade das imagens de vídeo originais.
[0040] Diversos padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbrido com perda de dados” (isto é, combinam predição espacial e temporal no domínio de amostra e codificação de transformada 2D para aplicar quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é 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, usando-se 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), enquanto no decodificador, o processamento inverso, quando comparado ao codificador, é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o laço de processamento de decodificador de modo que ambos gerem predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processar, isto é, codificar os blocos subsequentes.
[0041] Nas modalidades a seguir 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 descritos com base nas Figuras 1 a 3.
[0042] A Figura 1A é um diagrama de blocos esquemático que ilustra um sistema de codificação exemplificativo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10, a título de concisão) que pode usar técnicas deste presente pedido. O codificador de vídeo 20 (ou codificador 20, a título de concisão) e o decodificador de vídeo 30 (ou decodificador 30, a título de concisão) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas em conformidade com vários exemplos descritos no presente pedido.
[0043] Conforme mostrado na Figura 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.
[0044] O dispositivo de origem 12 compreende um codificador 20, e pode compreender de modo adicional, isto é, de modo opcional, uma fonte de imagem 16, um pré-processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagem 18 e uma interface de comunicação ou unidade de comunicação 22.
[0045] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem do mundo real e/ou qualquer tipo de um dispositivo de geração de imagem, por exemplo, um processador de computação gráfica para gerar uma imagem animada em computador, ou qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem gerada em 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 armazena qualquer uma dentre as imagens supracitadas.
[0046] De forma distinta 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 denominados imagem crua ou dados de imagem crus 17.
[0047] O pré-processador 18 é configurado para receber os dados de imagem (crus) 17 e realizar 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 compreender, por exemplo, corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou redução de ruído. Pode-se entender que a unidade de pré- processamento 18 pode ser componente opcional.
[0048] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 2).
[0049] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e transmitir os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos) por 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.
[0050] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e pode compreender, de modo adicional, isto é, de modo opcional, 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.
[0051] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer outra versão processada 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 ao decodificador 30.
[0052] 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 por um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com ou sem fio, ou por qualquer tipo de rede, por exemplo, uma rede com ou sem fio ou qualquer combinação das mesmas, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0053] 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 de transmissão ou processamento para transmissão por um enlace de comunicação ou rede de comunicação.
[0054] 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 de transmissão correspondente ou processamento e/ou desempacotamento para obter os dados de imagem codificados 21.
[0055] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para o canal de comunicação 13 na Figura 1A que aponta 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 preparar uma conexão, para confirmar 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.
[0056] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (mais detalhes serão descritos abaixo, por exemplo, com base na Figura 3 ou na Figura 5).
[0057] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também denominados dados de imagem reconstruídos), 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, corte 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.
[0058] 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, a um usuário ou visualizador. 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 compreender, por exemplo, displays de cristal líquido (LCD), displays de diodos emissores de luz orgânicos (OLED), displays de plasma, projetores, displays de micro LED, cristal líquido em silício (LCoS), processador digital de luz (DLP) ou qualquer tipo de outro display.
[0059] Embora a Figura 1A retrate o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades de dispositivos também podem compreender uma 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 implantados usando o mesmo hardware e/ou software ou por hardware e/ou software separados ou qualquer combinação dos mesmos.
[0060] Conforme será evidente aos técnicos no assunto com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14, conforme mostrado na Figura 1A, podem variar dependendo do dispositivo real e aplicação.
[0061] 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 implantados através de circuitos de processamento, conforme mostrado na Figura 1B, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta 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 implantado através de circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao codificador 20 da Figura 2 e/ou qualquer outro sistema ou subsistema de codificador descrito no presente documento. O decodificador 30 pode ser implantado através de circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao decodificador 30 da Figura 3 e/ou qualquer outro sistema ou subsistema de decodificador descrito no presente documento. Os circuitos de processamento podem ser configurados para realizar as várias operações, conforme discutido posteriormente. Conforme mostrado na Figura 5, se as técnicas forem implantadas 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. Qualquer um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um único dispositivo, por exemplo, conforme mostrado na Figura 1B.
[0062] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma variedade de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores do tipo notebook ou laptop, telefones móveis, smartphones, tablets ou computadores do tipo tablet, câmeras, computadores do tipo desktop, decodificadores de sinais, televisores, 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 entrega de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou similares e podem não usar ou usar qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Desse modo, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0063] Em alguns casos, o sistema de codificação de vídeo 10, ilustrado na Figura 1A, é apenas um exemplo e as técnicas do presente pedido podem se aplicar a 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, dados são recuperados de uma memória local, transmitidos por uma rede ou similares. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na 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 a decodificação são realizadas por 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.
[0064] Por questão de conveniência de descrição, as modalidades da invenção são descritas no presente documento, por exemplo, a título de referência a Codificação de Vídeo de Alta Eficiência (HEVC) ou a referência a software de Codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo para próxima geração desenvolvido junto a Joint Collaboration Team em Codificação de Vídeo (JCT-VC) de ITU-T Grupo de Especialistas em Codificação de Vídeo (VCEG) e ISO/IEC Grupo de Especialistas em Imagem em Movimento (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não são limitadas a HEVC ou VVC.
[0065] Codificador e Método de Codificação
[0066] A Figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo exemplificativo 20 que é configurado para implantar as técnicas do presente pedido. No exemplo da Figura 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 de 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 estimação de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20, conforme mostrado na Figura 2, também pode ser denominado codificador de vídeo híbrido ou um codificador de vídeo, de acordo com um codec de vídeo híbrido.
[0067] 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 que formam uma trajetória de sinal de avanço do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de 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 referidas como que formam uma trajetória de sinal de regressão do codificador de vídeo 20, em que a trajetória de sinal de regressão do codificador de vídeo 20 corresponde à trajetória de sinal do decodificador (consulte o decodificador de vídeo 30 na Figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de 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 são referidos como que formam o “decodificador interno” do codificador de vídeo 20.
[0068] Imagens & Particionamento de Imagem (Imagens & Blocos)
[0069] O codificador 20 pode ser configurado para receber, por exemplo, por meio da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens que forma um vídeo ou sequência de vídeo. A imagem ou dados de imagem recebidos também podem ser uma imagem pré-processada 19 (ou dados de imagem pré-processados 19). Por questão de simplicidade, a descrição a seguir se refere à imagem 17. A imagem 17 também pode ser denominada imagem atual ou imagem a ser codificada (em particular, em codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeo, isto é, a sequência de vídeo que também compreende a imagem atual).
[0070] Uma imagem (digital) é ou pode ser considerada uma matriz ou arranjo bidimensional de amostras com valores de intensidade. Uma amostra no arranjo também pode ser denominada 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 empregados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. Em formato RBG ou espaço de cor, uma imagem compreende um arranjo de amostra de vermelho, verde e azul correspondente. Entretanto, em 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 (por vezes L também é usado no lugar de Y) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma, a título de concisão) Y representa o brilho ou intensidade de nível de cinza (por exemplo, assim como em uma imagem de escala de cinza), enquanto os dois componentes de crominância (ou croma, a título de concisão) Cb e Cr representam os componentes de informações de cor ou cromaticidade. Assim, uma imagem em 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 em formato RGB podem ser convertidas ou transformadas em 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. Assim, uma imagem pode ser, por exemplo, um arranjo de amostras de luma em formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma em formato de cor 4:2:0, 4:2:2 e 4:4:4.
[0071] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não retratada na Figura 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (tipicamente não sobrepostos). Esses blocos também podem ser denominados blocos raiz, macroblocos (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ídeo e a grade correspondente que define o tamanho de bloco, ou mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0072] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, diversos ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser denominado bloco de imagem atual ou bloco de imagem a ser codificado.
[0073] Assim como a imagem 17, o bloco de imagem 203 novamente é ou pode ser considerado uma matriz ou arranjo bidimensional 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 em caso de uma imagem monocromática 17, ou um arranjo de luma ou croma em caso de uma imagem a cores) ou três arranjos de amostra (por exemplo, um arranjo de luma e dois arranjos de croma no caso de uma imagem a cores 17) ou qualquer outro número e/ou tipo de arranjos dependendo do formato de cores aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203. Assim, um bloco pode ser, por exemplo, um arranjo MxN (M colunas por N linhas) de amostras, ou um arranjo MxN de coeficientes de transformada.
[0074] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas para codificar a imagem 17 bloco por bloco, por exemplo, a codificação e predição são realizadas por bloco 203. Cálculo Residual
[0075] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também denominado resíduo 205) com base no bloco de imagem 203 e em um bloco de predição 265 (mais detalhes sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo- se valores de amostra do bloco de predição 265 de 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. Transformada
[0076] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada discreta de cosseno (DCT) ou transformada discreta de seno (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 denominados coeficientes residuais de transformada e representar o bloco residual 205 no domínio de transformada.
[0077] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações de número inteiro de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Quando comparado a uma transformada de DCT ortogonal, tais aproximações de número inteiro são tipicamente escalonadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado por transformadas direta e inversa, fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são tipicamente escolhidos com base em determinadas restrições, tais como fatores de escala sendo uma potência de dois para operações de desvio, profundidade de bit dos coeficientes de transformada, equilíbrio entre acurácia e custos de implantaçã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 em conformidade.
[0078] As modalidades do codificador de vídeo 20 (respectivamente 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. Quantização
[0079] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando-se quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser denominados coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0080] O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os 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 quantização, em que n é maior do que m. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização (QP). Por exemplo, para quantização escalar, diferentes escalas podem ser aplicadas para alcançar quantização mais fina ou mais grosseira. Os tamanhos de etapa de quantização menores correspondem à quantização mais fina, enquanto tamanhos de etapa de quantização maiores correspondem à quantização mais grosseira. O tamanho de 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 de etapa de quantização aplicáveis. Por exemplo, parâmetros de quantização pequenos podem corresponder à quantização fina (tamanhos de etapa de quantização pequenos) e parâmetros de quantização grandes podem corresponder à quantização grosseira (tamanhos de etapa de quantização grandes) ou vice-versa. A quantização pode incluir divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou inversa, por exemplo, pela unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de 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 de etapa de quantização. De modo geral, o tamanho de 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 se modificar devido à escala usada na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização. Em uma implantação exemplificativa, a escala da transformada inversa e desquantização pode ser combinada. De modo alternativo, 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 de dados, em que a perda aumenta com tamanhos de etapa de quantização crescentes.
[0081] As modalidades do codificador de vídeo 20 (respectivamente unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio 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. Quantização Inversa
[0082] 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-se o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base em ou com o uso do mesmo tamanho de etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser denominados 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. Transformada Inversa
[0083] 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 inversa discreta de cosseno (DCT) ou transformada inversa discreta de seno (DST) 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 denominado bloco de transformada 213. Reconstrução
[0084] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, 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, adicionando-se – amostra por amostra - os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco predição 265. Filtragem
[0085] A unidade de filtro loop 220 (ou “filtro loop” 220, a título de concisão), é 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, aperfeiçoar 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 ao contexto (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 Figura 2 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 220 pode ser implantada como um filtro post-loop. O bloco filtrado 221 também pode ser denominado bloco reconstruído filtrado 221.
[0086] As modalidades do codificador de vídeo 20 (respectivamente unidade de filtro loop 220) podem ser configuradas para emitir parâmetros de filtro loop (tais como informações de deslocamento adaptativo de amostra), por exemplo, diretamente ou codificados pela 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 respectivos filtros loop para decodificação. Buffer de Imagem Decodificada
[0087] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência ou, em geral, dados de imagem de referência, para codificação de dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (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, ainda, para armazenar outros blocos previamente filtrados, por exemplo, blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de diferentes imagens, por exemplo, imagens 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 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 reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro loop 220, ou qualquer outra versão processada dos blocos ou amostras reconstruídos. Seleção de Modo (Particionamento & Predição)
[0088] A unidade de seleção de modo 260 compreende 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ídos, por exemplo, blocos ou amostras reconstruídas filtradas e/ou não filtradas da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, de buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruídos 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.
[0089] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de 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.
[0090] As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o modo de particionamento e predição (por exemplo, daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor compatibilidade ou, em outras palavras, o resíduo mínimo (resíduo 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 modo de particionamento e predição com base em otimização de taxa distorção (RDO), isto é, selecionar o modo de predição que fornece uma taxa distorção mínima. Termos como
“melhor”, “mínimo”, “ideal” etc. neste contexto não se referem, necessariamente, a um “melhor”, “mínimo”, “ideal”, etc. geral, mas também podem se referir à satisfação de um critério de término ou seleção, tal como um valor que excede ou está abaixo de um limiar ou outras restrições que levam potencialmente a uma “seleção inferior ao ideal” mas que reduzem a complexidade e o tempo de processamento.
[0091] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em partições de bloco menores ou sub-blocos (que formam novamente blocos), por exemplo, usando, de modo iterativo, particionamento de árvore 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.
[0092] A seguir, o particionamento (por exemplo, pela unidade de particionamento 260) e 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 exemplificativo 20 serão explicados em mais detalhes. Particionamento
[0093] A unidade de particionamento 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo, blocos menores de tamanho quadrangular ou retangular. Esses blocos menores (que também podem ser denominados sub-blocos) podem ser particionados em partições ainda menores. Isso também é denominado particionamento de árvore ou particionamento de árvore hierárquico, em que um bloco-raiz, por exemplo, no nível 0 de árvore-raiz (nível de hierarquia 0, profundidade 0), pode ser particionado de modo recursivo, 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 de hierarquia 1, profundidade 1), em que esses blocos podem ser particionados novamente em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento termine, por exemplo, visto que um critério de término é satisfeito, por exemplo, uma profundidade de árvore máxima ou tamanho de bloco mínimo é alcançado. Os blocos que não são particionados ainda mais também são denominados blocos-folha ou nós-folha da árvore. Uma árvore que usa particionamento em duas partições é denominada árvore binária (BT), uma árvore que usa particionamento em três partições é denominada árvore ternária (TT) e uma árvore que usa particionamento em quatro partições é denominada quadtree (QT).
[0094] Conforme mencionado antes, o termo “bloco”, conforme usado no presente documento, pode ser uma porção, em particular, uma porção quadrangular ou retangular, de uma imagem. Com referência, por exemplo, a 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).
[0095] 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 cores separados e estruturas de sintaxe usadas para codificar as amostras. De modo correspondente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja 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 cores separados e estruturas de sintaxe usadas para codificar as amostras. De modo correspondente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[0096] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando-se uma estrutura de quadtree denotada árvore de codificação. A decisão de codificar uma área de imagem com o uso de predição imagem inter (temporal) ou imagem intra (espacial) é feita no nível de CU. Cada CU pode ser dividida, de modo adicional, 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 com base em PU. Após obter o bloco residual aplicando-se o processo de 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 a CU.
[0097] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é denominado Codificação de Vídeo Versátil (VVC), um particionamento de árvore Quadtree e árvore binária (QTBT) é usado para particionar um bloco de codificação. Na estrutura de bloco de QTBT, uma CU pode ter um formato quadrangular ou retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura de quadtree. Os nós-folha quadtree são particionados, de modo adicional, por uma estrutura de árvore binária ou árvore ternária (ou tripla). Os nós-folha de árvore de particionamento são denominados unidades de codificação (CUs), e essa segmentação é usada para processamento de predição e transformada sem qualquer particionamento adicional. Isso 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, múltipla partição, por exemplo, partição de árvore tripla também foi proposta para ser usada em conjunto com a estrutura de bloco de QTBT.
[0098] 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 no presente documento.
[0099] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor modo de predição ou um modo de predição ideal a partir de um conjunto de modos de predição (pré- determinados). O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter. Predição intra
[0100] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais, como o modo DC (ou média) e modo planar, ou modos direcionais, por exemplo, conforme definido em HEVC, ou pode compreender 67 modos de predição intra diferentes, por exemplo, modos não direcionais, como o modo DC (ou média) e modo planar, ou modos direcionais, por exemplo, conforme definido para VVC.
[0101] O VTM (Modelo de Teste Versátil) versão 3.0 usa 93 modos de predição intra, e diversas ferramentas de suavização intra, incluindo filtragem interpolação intra de subpixel de quatro tap e combinação de predição dependente de posição (PDPC). PDPC é proposta como um mecanismo unificado de modificação de amostras preditas que são um resultado de predição intra usando modos de predição intra DC, PLANAR ou angular.
[0102] 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.
[0103] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é configurada, ainda, 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 de predição para decodificação. Predição inter
[0104] O conjunto de (ou possíveis) modos de predição inter depende das imagens de referência disponíveis (isto é, imagens prévias pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e de 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 busca ao redor da área do bloco atual, da imagem de referência é usada para buscar um bloco de referência de melhor compatibilidade, e/ou, por exemplo, se interpolação de pixel é aplicada, por exemplo, interpolação meia/semi-pel e/ou quarter-pel, ou não.
[0105] De modo adicional aos modos de predição acima, modo de omissão e/ou modo direto podem ser aplicados.
[0106] A unidade de predição inter 244 pode incluir uma unidade de estimação de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Figura 2). A unidade de estimação 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 um ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimação de movimento. Por exemplo, uma sequência de vídeo 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 de ou formar uma sequência de imagens que forma uma sequência de vídeo.
[0107] O codificador 20 pode ser configurado, por exemplo, para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência das mesmas imagens 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 a posição do bloco atual como parâmetros de predição inter para a unidade de estimação de movimento. Esse deslocamento também é denominado vetor de movimento (MV).
[0108] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e realizar predição inter com base em ou com o uso do 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 busca ou geração do bloco de predição com base no vetor de bloco/movimento determinado por estimação de movimento, possivelmente realizando interpolações com precisão de subpixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, aumentando potencialmente, desse modo, o número de blocos de predição candidatos que pode ser usado para codificar um bloco de imagem. Mediante recepção 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 imagem de referência.
[0109] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e à fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Codificação de Entropia
[0110] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um esquema ou algoritmo de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de 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 de 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 por meio 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.
[0111] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador com base em não transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para determinados blocos ou quadros. Em outra implantaçã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. Decodificador e Método de Decodificação
[0112] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implantar 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,
codificados pelo codificador 20, para obter uma imagem decodificada 331. O fluxo de bits ou dados de imagem codificados compreendem informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada e elementos de sintaxe associados.
[0113] No exemplo da Figura 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 de reconstrução 314 (por exemplo, um somador 314), um filtro loop 320, um buffer de imagem decodificada (DBP) 330, 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 passa de decodificação geralmente recíproca à passa de codificação descrita em relação ao codificador de vídeo 100 da Figura 2.
[0114] Conforme explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de 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 que formam o “decodificador interno” do codificador de vídeo 20. Assim, 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 de 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 respectivas unidades e funções do codificador de vídeo 20 se aplicam, de modo correspondente, às respectivas unidades e funções do decodificador de vídeo
30. Decodificação de Entropia
[0115] 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, decodificação de entropia nos dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na Figura 3), por exemplo, qualquer um ou todos os 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, índice ou modo 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 que correspondem aos esquemas de codificação, conforme 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, ainda, para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe à unidade de seleçã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 no nível de bloco de vídeo. Quantização Inversa
[0116] 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, por 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 denominados coeficientes de transformada 311. O processo de quantização inversa 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 para determinar um grau de quantização e, de modo similar, um grau de quantização inversa que devem ser aplicados. Transformada Inversa
[0117] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também denominados coeficientes de transformada 311, e para aplicar uma transformada aos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser denominados blocos de transformada
313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ser configurada, ainda, para receber parâmetros de transformada ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) para determinar que a transformada seja aplicada aos coeficientes desquantizados 311. Reconstrução
[0118] A unidade de 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, adicionando-se os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365. Filtragem
[0119] A unidade de filtro loop 320 (tanto no laço de codificação ou após o laço de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, suavizar transições de pixel ou, de outro modo, aperfeiçoar 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 ao contexto (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 Figura 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implantada como um filtro post-loop. Buffer de Imagem Decodificada
[0120] Os blocos de vídeo decodificados 321 de uma imagem são, então, 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 emitir respectivamente display.
[0121] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, por meio da saída 312, para apresentação ou visualização por um usuário. Predição
[0122] 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 inter 254 em função, e realiza decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e/ou predição ou respectivas informações recebidas dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304). A unidade de seleção de modo 360 pode ser configurada para realizar a predição (predição inter ou intra) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[0123] 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 seleção de modo 360 é configurada para gerar 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, unidade de compensação de movimento) da unidade de seleçã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 em 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 dentre as imagens de referência dentro de uma dentre as listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, com o uso de técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330.
[0124] A unidade de seleção de modo 360 é configurada para determinar informações de predição para um bloco de vídeo da fatia de vídeo atual analisando-se os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de seleção de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição inter ou intra) usado para codificar os 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 dentre as listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, status 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.
[0125] 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 com base em não transformada 30 pode quantizar de modo inverso o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para determinados blocos ou quadros. Em outra implantaçã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.
[0126] Deve-se entender que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser processado de modo adicional e, então, emitido para a próxima etapa. Por exemplo, após filtragem de interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como Clip ou desvio, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0127] Deve-se observar que operações adicionais podem ser aplicadas aos vetores de movimento derivados de bloco atual (incluindo, mas sem limitação, vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afim, planar, ATMVP, vetores de movimento temporal e assim por diante). Por exemplo, o valor de vetor de movimento é restrito a uma faixa predefinida de acordo com seu bit de representação. Se o bit de representação de vetor de movimento for bitDepth,
então, a faixa é -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, em que “^” significa exponenciação. Por exemplo, se bitDepth for definido como igual a 16, a faixa é -32768 ~ 32767; se bitDepth for definido como igual a 18, a faixa é - 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 de modo que a diferença máx entre partes de número inteiro dos MVs de quatro sub-blocos 4x4 não seja maior do que N pixels, tal como não maior do que 1 pixel. O presente documento fornece dois métodos para restringir o vetor de movimento de acordo com a bitDepth.
[0128] Método 1: remover o MSB de sobrefluxo (bit mais significativo) fluindo as operações ux= ( mvx+2bitDepth ) % 2bitDepth (1) mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ) : ux (2) uy= ( mvy+2bitDepth ) % 2bitDepth (3) mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ) : uy (4) em que 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; Por exemplo, se o valor de mvx for -32769, após a aplicação da fórmula (1) e (2), o valor resultante é 32767. Em sistema de computação, números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), então, o MSB é descartado, então, o complemento de dois resultante é 0111,1111,1111,1111 (número decimal é 32767), que é igual à saída aplicando-se 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, conforme mostrado na fórmula (5) a (8). Método 2: remover o MSB de sobrefluxo distorcendo de modo limitante o valor vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy) em que 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 correspondem, respectivamente, a três valores de entrada do processo de distorção limitante de MV, e a definição de função Clip3 é a seguinte: x ; z<x Clip3( x, y, z ) = {y ; z>y z ; de outro modo
[0129] A Figura 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400, de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implantar as modalidades reveladas, conforme descrito no presente documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, tal como decodificador de vídeo 30, da Figura 1A, ou um codificador, tal como codificador de vídeo 20, da Figura 1A.
[0130] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidades receptoras (Rx) 420 para receber dados; um processador, unidade lógica ou unidade central de processamento (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 egresso ou ingresso de sinais ópticos ou elétricos.
[0131] O processador 430 é implantado por hardware e software. O processador 430 pode ser implantado 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 implanta as modalidades reveladas descritas acima. Por exemplo, o módulo de codificação 470 implanta, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470 fornece, portanto, um aperfeiçoamento substancial à 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. De modo alternativo, o módulo de codificação 470 é implantado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0132] 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 sobrefluxo, 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 de programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente leitura (ROM), memória de acesso aleatório (RAM), memória ternária de conteúdo endereçável (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0133] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos dentre o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1A, de acordo com uma modalidade exemplificativa.
[0134] Um processador 502, no aparelho 500, pode ser uma unidade central de processamento. De modo alternativo, o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, com a capacidade de manipular ou processar informações já existentes ou posteriormente desenvolvidas. Embora as implantações reveladas possam ser colocadas em prática com um único processador conforme mostrado, por exemplo, o processador 502, as vantagens quanto à velocidade e eficiência podem ser alcançadas com o uso de mais de um processador.
[0135] Uma memória 504, no aparelho 500, pode ser um dispositivo de memória somente leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implantação. Qualquer outro tipo adequado de dispositivo de armazenamento 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 com o uso de um barramento 512. A memória 504 pode incluir, ainda, um sistema operacional 508 e programas de aplicativo 510, em que os programas de aplicativo 510 incluem pelo menos um programa que permite que o processador 502 realize os métodos descritos no presente documento. Por exemplo, os programas de aplicativo 510 podem incluir aplicações 1 a N, que incluem, ainda, um aplicativo de codificação de vídeo que realiza os métodos descritos no presente documento.
[0136] O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais 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 por toque. O display 518 pode ser acoplado ao processador 502 por meio do barramento 512.
[0137] Embora retratado no presente documento como um único barramento, o barramento 512 do aparelho 500 pode ser composto por múltiplos barramentos. De modo adicional, o armazenamento secundário 514 pode ser acoplado diretamente aos outros componentes do aparelho 500 ou pode ser acessado por 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 implantado, desse modo, em uma grande variedade de configurações.
[0138] Implantação particular de PDPC simplificada pode ser realizada de maneira diferente, dependendo do modo de predição intra:
[0139] Para modos de predição intra planar, DC, HOR/VER (denotados como 0, 1, 18, 50, respectivamente, na Figura 7 e na Figura 8), as seguintes etapas são realizadas:
[0140] A amostra predita 𝑃(𝑥, 𝑦) localizada em (x, y) é calculada da seguinte maneira: 𝑃(𝑥, 𝑦) = Clip1Cmp( (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 − 𝑤𝑇𝐿 × 𝑅−1,−1 + (64 − 𝑤𝑙 − 𝑤𝑇 + 𝑤𝑇𝐿 ) × 𝑃 (𝑥, 𝑦) + 32)) ≫ 6) (1) em que Rx,-1, R-1,y representam as amostras de referência localizadas no topo e à esquerda da amostra atual (x, y), e R -1,-1 representa a amostra de referência localizada na aresta topo-esquerda do bloco atual, a função clip1Cmp é definida da seguinte maneira: - Se cIdx for igual a 0, clip1Cmp é definido como igual a Clip1Y. - De outro modo, clip1Cmp é definido como igual a Clip1C
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) x ; z<x Clip3( x, y, z ) = { y ; z>y z ; de outro modo BitDepthY é a profundidade de bit de amostras de luma. BitDepthC é a profundidade de bit de amostras de luma. BitDepthY e BitDepthC podem ser sinalizados em conjunto de parâmetro de sequência (SPS) de um fluxo de bits.
[0141] Definições alternativas de Clip1Y( x ) e Clip1C( x ) são possíveis. Em particular, conforme descrito por F. Galpin, P. Bordes e F. Le Léannec em contribuição JVET-C0040 “Adaptive Clipping in JEM2.0”, 𝐶𝑙𝑖𝑝1𝐶𝑚𝑝(𝑥) = 𝐶𝑙𝑖𝑝3( 𝑚𝑖𝑛𝐶 , 𝑚𝑎𝑥𝐶 , 𝑥 ), em que 𝑚𝑖𝑛𝐶 é a delimitação de distorção limitante inferior usada em faia atual para ID de componente 𝐶, 𝑚𝑎𝑥𝐶 é a delimitação de distorção limitante superior usada em fatia atual para ID de componente 𝐶, C é um componente de cor (por exemplo, Y para luma, Cb e Cr para croma), “x >> y” é um desvio aritmético para direita de uma representação de número inteiro de complemento de dois de x por y dígitos binários. Essa função é definida apenas para valores de número inteiro não negativos de y. Bits desviados para os bits mais significativos (MSBs) como resultado do desvio para direita têm um valor igual ao MSB de x antes da operação de desvio.
[0142] Os pesos de modo DC são calculados da seguinte forma: 𝑤𝑇 = 32 ≫ ((𝑦 ≪ 1) ≫ 𝑠ℎ𝑖𝑓𝑡), 𝑤𝐿 = 32 ≫ ((𝑥 ≪ 1) ≫ 𝑠ℎ𝑖𝑓𝑡), 𝑤𝑇𝐿 = −(𝑤𝐿 ≫ 4) − (𝑤𝑇 ≫ 4), em que 𝑠ℎ𝑖𝑓𝑡 = (log 2(𝑤𝑖𝑑𝑡ℎ) + log 2(ℎ𝑒𝑖𝑔ℎ𝑡) + 2) ≫ 2.
[0143] Para o modo planar, wTL = 0, enquanto para o modo horizontal, wTL = wT e para o modo vertical, wTL = wL. Os pesos de PDPC de modo DC (wL, wT, wTL) para posições (0, 0) e (1, 0) dentro de um bloco 4x4 são mostrados na Figura 9. Para modos diagonal (denotado como 2 e 66 na Figura 7 e na Figura
8) e adjacente (modos direcionais não menores que 58 e não maiores do que 10 na Figura 7 ou na Figura 8) processamento é realizado conforme descrito abaixo usando a mesma fórmula (1).
[0144] A Figura 10A ilustra a definição de amostras de referência Rx,- 1, R-1,y e R-1,-1 para a extensão de PDPC para o modo diagonal topo-direita. A amostra de predição pred(x’, y’) é localizada em (x’, y’) dentro do bloco de predição. A coordenada x da amostra de referência Rx,-1 é fornecida por: x = x’ + y’ + 1, e a coordenada y da amostra de referência R-1,y é fornecida de modo similar por: y = x’ + y’ + 1.
[0145] Os pesos de PDPC para o modo diagonal topo-direita são: wT = 16 >> ( ( y’<<1 ) >> shift ), wL = 16 >> ( ( x’<<1 ) >> shift ), wTL = 0.
[0146] De modo similar, a Figura 10B ilustra a definição de amostras de referência Rx,-1, R-1,y e R-1,-1 para a extensão de PDPC para o modo diagonal inferior-esquerda. A coordenada x da amostra de referência Rx,-1 é fornecida por: x = x’ + y’ + 1, e a coordenada y da amostra de referência R-1,y é: y = x’ + y’ + 1.
[0147] Os pesos de PDPC para o modo diagonal inferior-esquerdo são: wT = 16 >> ( ( y’<<1 ) >> shift ), wL = 16 >> ( ( x’<<1 ) >> shift ), wTL = 0.
[0148] O caso de um modo diagonal topo-direita adjacente é ilustrado na Figura 10C. Os pesos de PDPC para um modo diagonal topo-direita adjacente são: wT = 32 >> ( ( y’<<1 ) >> shift ), wL = 0, wTL = 0.
[0149] De modo similar, o caso de um modo diagonal inferior- esquerdo adjacente é ilustrado na Figura 10D. Os pesos de PDPC para um modo diagonal inferior-esquerda adjacente são: wL = 32 >> ( ( x’<<1 ) >> shift ), wT =0, wTL = 0.
[0150] As coordenadas de amostra de referência para os últimos dois casos são computadas com o uso das Tabelas que já são usadas para predição intra de modo angular. A interpolação linear das amostras de referência é usada se coordenadas de amostra de referência fracionadas forem calculadas.
[0151] PDPC simplificada pode ser realizada conforme especificado na especificação VVC. Adicionalmente, as seguintes denotações são usadas: 256∗32 invAngle = Round(intraPredAngle), é o valor de ângulo inverso, Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 ), 1 ; x>0 Sign( x ) = { 0 ; x==0 −1 ; x<0 Floor( x ) é o maior número inteiro menor do que ou igual a x, Log2( x ) é o logaritmo de base 2 de x. intraPredAngle é o parâmetro de ângulo especificado na Tabela 6, A = C ? B : D é uma operação de atribuição ternária, em que A é definido igual a B se a condição C for verdadeira. De outro modo, se a condição C for falsa, A é definido igual a D. INTRA_PLANAR é um modo de predição intra planar (), INTRA_DC é um modo de predição intra DC, INTRA_ANGULARXX é um dentre modos de predição intra direcionais, em que XX denota seu número e direção correspondente mostrados na Figura 8.
[0152] Se um termo não for explicado na presente invenção, entende- se que sua definição pode ser encontrada na especificação VVC ou especificação padrão HEVC/H.265.
[0153] Em relação às denotações acima, as etapas de PDPC simplificada podem ser definidas da seguinte forma: Entradas para esse processo são: – o modo de predição intra predModeIntra, – uma variável nTbW que especifica a largura de bloco de transformada, – uma variável nTbH que especifica a altura de bloco de transformada, – uma variável refW que especifica a largura de amostras de referência, – uma variável refH que especifica a altura de amostras de referência, – as amostras preditas predSamples[ x ][ y ], com x = 0..nTbW − 1, y = 0..nTbH − 1, – as amostras vizinhas p[ x ][ y ], com x = −1, y = −1..refH − 1 e x = 0..refW − 1, y = −1, – uma variável cIdx que especifica o componente de cor do bloco atual. Saídas desse processo são as amostras preditas modificadas predSamples[ x ][ y ] com x = 0..nTbW − 1, y = 0..nTbH − 1.
[0154] Dependendo do valor de cIdx, a função clip1Cmp é definida da seguinte forma: – Se cIdx for igual a 0, clip1Cmp é definido igual a Clip1 Y. – De outro modo, clip1Cmp é definido igual a Clip1 C.
[0155] A variável nScale é definida para ( ( Log2( nTbW ) + Log2( nTbH ) − 2 ) >> 2 ).
[0156] Os arranjos de amostra de referência mainRef[ x ] e sideRef[ y ], com x = 0..refW − 1 e y = 0..refH − 1 são derivados da seguinte forma: mainRef[ x ] = p[ x ][ −1 ] sideRef[ y ] = p[ −1 ][ y ]
[0157] As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] com x = 0..nTbW − 1, y =0..nTbH − 1 são derivadas da seguinte forma: – Se predModeIntra for igual a INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR18 ou INTRA_ANGULAR50, o seguinte se aplica: refL[ x ][ y ] = p[ −1 ][ y ] refT[ x ][ y ] = p[ x ][ −1 ] wT[ y ] = 32 >> ( ( y << 1 ) >> nScale )
wL[ x ] = 32 >> ( ( x << 1 ) >> nScale ) wTL[ x ][ y ] = ( predModeIntra = = INTRA_DC ) ? ( ( wL[ x ] >> 4 ) + ( wT[ y ] >> 4 ) ) : 0 – De outro modo, se predModeIntra for igual a INTRA_ANGULAR2 ou INTRA_ANGULAR66, o seguinte se aplica: refL[ x ][ y ] = p[ −1 ][ x + y + 1 ] refT[ x ][ y ] = p[ x + y + 1 ][ −1 ] wT[ y ] = ( 32 >> 1 ) >> ( ( y << 1 ) >> nScale ) wL[ x ] = ( 32 >> 1 ) >> ( ( x << 1 ) >> nScale ) wTL[ x ][ y ] = 0 – De outro modo, se predModeIntra for menor do que ou igual a INTRA_ANGULAR10, as seguintes etapas ordenadas se aplicam:
1. As variáveis dXPos[ y ], dXFrac[ y ], dXInt[ y ] e dX[ x ][ y ] são derivadas conforme a seguir com o uso de invAngle: dXPos[ y ] = ( ( y + 1 ) * invAngle + 2 ) >> 2 dXFrac[ y ] = dXPos[ y ] & 63 dXInt[ y ] = dXPos [ y ] >> 6 dX[ x ][ y ] = x + dXInt[ y ]
2. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] são derivadas da seguinte forma: refL[ x ][ y ] = 0 refT[ x ][ y ] = ( dX[ x ][ y ] < refW − 1 ) ? ( ( 64 − dXFrac[ y ] ) * mainRef[ dX[ x ][ y ] ] + dXFrac[ y ] * mainRef[ dX[ x ][ y ] + 1 ] + 32 ) >> 6 : 0 (Eq. 1) wT[ y ] = ( dX[ x ][ y ] < refW − 1 ) ? 32 >> ( ( y << 1 ) >> nScale ) : 0 wL[ x ] = 0 wTL[ x ][ y ] = 0 – De outro modo, se predModeIntra for maior do que ou igual a INTRA_ANGULAR58 (consulte a Figura 8), as seguintes etapas ordenadas se aplicam:
1. As variáveis dYPos[ x ], dYFrac[ x ], dYInt[ x ] e dY[ x ][ y ] são derivadas do modo a seguir com o uso de invAngle, conforme especificado abaixo dependendo de intraPredMode: dYPos[ x ] = ( ( x + 1 ) * invAngle + 2 ) >> 2 dYFrac[ x ] = dYPos[ x ] & 63 dYInt[ x ] = dYPos[ x ] >> 6 dY[ x ][ y ] = y + dYInt[ x ]
2. As variáveis refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] são derivadas da seguinte forma: refL[ x ][ y ] = ( dY[ x ][ y ] < refH − 1 ) ? ( ( 64 − dYFrac[ x ] ) * sideRef[ dY[ x ][ y ] ] + + dYFrac[ x ] * sideRef[ dY[ x ][ y ] + 1 ] + 32 ) >> 6 : 0 (Eq. 2) refT[ x ][ y ] = 0 wT[ y ] = 0 wL[ x ] = ( dY[ x ][ y ] < refH − 1 ) ? 32 >> ( ( x << 1 ) >> nScale ) : 0 wTL[ x ][ y ] = 0 – De outro modo, refL[ x ][ y ], refT[ x ][ y ], wT[ y ], wL[ x ] e wTL[ x ][ y ] são todos definidos como iguais a 0.
[0158] Os valores das amostras preditas modificadas predSamples[ x ][ y ], com x = 0..nTbW − 1, y =0..nTbH − 1 são derivados da seguinte forma: predSamples[ x ][ y ] = clip1Cmp( ( refL[ x ][ y ] * wL[ x ] + refT[ x ][ y ] * wT[ y ] − p[ −1 ][ −1 ] * wTL[ x ][ y ] + ( 64 − wL[ x ] − wT[ y ] + wTL[ x ][ y ] ) * predSamples[ x ][ y ] + 32 ) >> 6 )
[0159] Na Equação de atribuição 1 acima, PDPC simplificada pode usar interpolação de vizinho mais próximo em vez de linear: refT[ x ][ y ] = ( dX[ x ][ y ] < refW − 1 ) ? mainRef[ dX[ x ][ y ] ] : 0
[0160] De modo similar, a Equação de atribuição 2 também pode usar interpolação de vizinho mais próximo: refL[ x ][ y ] = ( dY[ x ][ y ] < refH − 1 ) ? sideRef[ dY[ x ][ y ] ] : 0
[0161] Desse modo, em ambos os lados de codificador e decodificador, o método proposto usa o seguinte como os dados de entrada: modo de predição intra direcional (denotado mais adiante como predModeIntra, que é mostrado na Figura 7 e na Figura 8) parâmetro de tamanho de bloco nTbS, que é definido igual a (log2( nTbW) + Log2(nTbH) ) >> 1, em que nTbW e nTbH denotam largura e altura do bloco predito, respectivamente, e “>>” denota uma operação de desvio para direita.
[0162] A modificação da especificação de VVC que possibilita uso do método proposto pode compreender substituir “as amostras vizinhas p[ x ][ y ]” por “as amostras de referência p[ x ][ y ]” na seção que descreve PDPC simplificada.
[0163] O parâmetro de ângulo intraPredAngle denota o deslocamento de subpixel entre duas linhas adjacentes de amostras preditas em representação de ponto fixo que tem comprimento de parte fracionada igual a 5 bits. Esse parâmetro pode ser derivado do modo de predição intra é derivado de predModeIntra e. Uma derivação exemplificativa de intraPredAngle a partir de predModeIntra pode ser definida com uma LUT, por exemplo, conforme é mostrado na Tabela 1. Tabela 1. Uma LUT exemplificativa para derivar intraPredAngle a partir de predModeIntra. Modos de ângulo amplo para blocos NxM, M>N predMode -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 Intra intraPredA 512 341 256 171 128 102 86 73 64 57 51 45 39 35 ngle Modos na faixa de [2; HOR_IDX) predMode 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Intra intraPredA 32 29 26 23 20 18 16 14 12 10 8 6 4 3 2 1 ngle Modos na faixa de [HOR__IDX; DIA_IDX) predMode 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Intra intraPredA 0 -1 -2 -3 -4 -6 -8 -10 -12 -14 -16 -18 -20 -23 -26 -29 ngle Modos na faixa de [DIA_IDX; VER_IDX) predMode 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Intra intraPredA -32 -29 -26 -23 -20 -18 -16 -14 -12 -10 -8 -6 -4 -3 -2 -1 ngle Modos na faixa de [VER_IDX; VDIA_IDX] predMode 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 Intra intraPredA 0 1 2 3 4 6 8 10 12 14 16 18 20 23 26 29 32 ngle Modos de ângulo amplo para blocos NxM, M<N predMode 67 68 69 70 71 72 73 74 75 76 77 78 79 80 Intra intraPred 35 39 45 51 57 64 73 86 102 128 171 256 341 512 Angle
[0164] Nesta invenção, é proposto atualizar amostras preditas que foram obtidas a partir das amostras de referência usando modos de predição intra direcional, planar ou DC. As etapas do procedimento de atualização são mostradas na Figura 11. A primeira etapa 1101 é para calcular valores de escala nScaleX e nScaleY dependendo do formato e tamanho de bloco. Uma forma de implantação desse cálculo é descrita mais adiante na Figura 13.
[0165] As etapas 1103 e 1104 são realizadas dentro de um laço sobre todas as posições de amostras preditas. A inicialização dos iteradores loop x e y é realizada na etapa 1102, verificações de delimitação de iteradores são realizadas pelas etapas 1105 e 1107, incrementos de iterador são realizados nas etapas 1106 e 1108. A etapa 1108 redefine iteradores x e y para o início da próxima linha, isto é, x é definido como igual a zero e iterador de linha y é incrementado em 1.
[0166] A etapa 1103 consiste em calcular os valores de peso dependentes de posição wL[x] e wT[y]. Esses valores de peso são obtidos desviando-se para direita o valor base V. O valor V está conectado à operação de desvio para direita da etapa 4. Se esse desvio para direita for definido para s, o valor prático de V pode ser definido, por exemplo, para 2 s, 2s-1 ou 2s. Na modalidade exemplificativa mostrada na Figura 11, o valor de s é definido como igual a 6, e o valor de V é definido como igual a 32, isto é, 25.
[0167] Em contraste com os métodos do estado da técnica, wL[x] e wT[y] na etapa 1103 usam diferentes valores de escalas nScaleX e nScaleY, respectivamente. Esses valores de peso wL[x] e wT[y] são usados na etapa 1104 para calcular o valor modificado de amostras preditas.
[0168] A modalidade alternativa de atualização de amostras preditas é fornecida na Figura 12. Nesta modalidade, peso wT[y] é recalculado apenas uma vez por linha, isto é, quando iterador y é incrementado.
[0169] Devido ao particionamento de QTBT e MTT, blocos de predição podem ter formato não quadrangular (em geral, retangular). Entretanto, PDPC do estado da técnica não considera potencial não igualdade de largura e altura de um bloco de predição. O mecanismo de ponderação com base apenas em um valor de distância para os lados esquerdo e topo de bloco predito pode levar a amostras preditas sendo muito suaves se razão de aspecto de bloco predito for diferente de 1. Na presente revelação, é proposto equilibrar o efeito do tamanho de bloco e razão de aspecto de bloco usando modo de predição intra. Usando informações de direcionalidade fornecidas por modo de predição intra, é possível determinar a distância de propagação e direcionalidade do efeito de suavização de PDPC. Portanto, é proposto introduzir um grupo de modo de predição intra e aplicar adaptação de escala de peso dedicada para cada grupo. Neste caso, até mesmo blocos de predição oblongos usarão suavização em conformidade com o comprimento do lado em que é apropriado de acordo com o modo de predição intra e dimensões de bloco de predição.
[0170] Na invenção proposta, é sugerido usar valores de nScale separados ao derivar pesos wT[ y ] e wL[ x ]. Particularmente, na descrição acima (etapa 1103 ), as seguintes fórmulas serão usadas (valor de V é definido de acordo com 16 ou 32): wT[ y ] = V >> ( ( y << 1 ) >> nScaleY ) wL[ x ] = V >> ( ( x << 1 ) >> nScaleX )
[0171] O cálculo de escalas (etapa 1101) pode ser realizado conforme é mostrado na Figura 14. Esse é um cálculo alternativo em comparação ao mostrado na Figura 12. A primeira etapa 1301 é obter o valor do modo de predição intra intraPredAngle do bloco predito, por exemplo, analisando-se a partir do fluxo de bits. A etapa seguinte 1302 consiste em classificar o modo de predição intra em um dos grupos.
[0172] A definição adicional de modo de predição intra oblíquo não diagonal é usada a seguir: intraPredMode é oblíquo não diagonal se intraPredMode não for igual a 2 ou VDIA_IDX e um dentre os seguintes for verdadeiro: intraPredMode não é menor do que VDIA_IDX – numModes ou intraPredMode não é maior do que 2 + numModes
[0173] A classificação exemplificativa é fornecida na Tabela 2. Tabela 2. Derivação de índice de classe com base em modo de predição intra. Grupo de 2, Outros modos de VDIA_IDX DC_IDX, modos predição HOR_IDX, intra Índice de 1 2 0 classe
[0174] Dependendo do índice de classe de modo, a derivação de nScaleX e nScaleY pode ser diferente. As etapas 1303,...,1312 representam o mapeamento do índice de classe para as fórmulas de derivação mostradas na Tabela 3. Tabela 3. Mapeamento do índice de classe para o método de derivação de nScaleX e nScaleY. Índice de Método de derivação classe nScaleX = ( Log2( nTbW ) – 2 + 1 ) >> 1 0 nScaleY = ( Log2( nTbH ) – 2 + 1 ) >> 1 nScaleY = nScaleX = ( Log2( nTbH ) + Log2( nTbW ) ) > 6 ? 1 1: 0 nScaleX = Log2( nTbW ) > 3 ? 1 : 0 2 nScaleY = Log2( nTbH ) > 3 ? 1 : 0
[0175] Classificações alternativas são fornecidas nas Tabelas 4, 5 e
6. Tabela 4. Derivação de índice de classe alternativa com base em modo de predição intra.
Grupo de DC_IDX, 2, Outros modos de HOR_IDX, VDIA_IDX modos predição VER_IDX intra Índice de 1 2 0 classe Tabela 5. Derivação de índice de classe alternativa com base em modo de predição intra.
Grupo de DC_IDX, 2, Outros modos de HOR_IDX, VDIA_IDX modos predição VER_IDX intra Índice de 2 1 0 classe Tabela 6. Derivação de índice de classe alternativa com base em modo de predição intra.
Modos diagonais com etapa de subpixel Grupo de de DC_IDX, Outros modos de número HOR_IDX, modos predição inteiro: VER_IDX intra -14 -12 -10 -6, 2, VDIA_IDX, 72, 76, 78, 80
Índice de 2 1 0 classe
[0176] Na Tabela 6, Classe 1 é especificada não só para modos diagonais, mas para modos de ângulo amplo que têm valor de IntraPredAngle não fracionado (isto é, um múltiplo de 32 na Tabela 1).
[0177] A restrição adicional que pode ser mencionada nesta invenção é não aplicar etapas de atualização de amostra predita em caso das certas combinações de condições em tamanho de bloco e modo de predição intra (intraPredMode).
[0178] Presumindo um parâmetro predefinido numModes como igual a 8, a implantação particular pode compreender a seguinte condição de desabilitar PDPC, isto é, não realizar atualização de amostra predita: - uma soma de largura do bloco e uma altura do bloco é maior do que 64 amostras e intraPredMode é oblíquo não diagonal ou é igual a PLANAR_IDX.
[0179] As implantações particulares da invenção podem demonstrar aperfeiçoamento de desempenho de compressão. As modificações ao VTM-3.0 software descrito na Tabela 4 e na Tabela 3 resultam no aperfeiçoamento de desempenho de compressão a seguir (Tabela 7). Tabela 7. Aperfeiçoamento de desempenho de compressão alcançado por modificações no VTM-3.0 software Todos Intra Main10 Over VTM-3.0 Y U V EncT DecT Classe A1 -0,02% -0,13% 0,04% 100% 100% Classe A2 -0,08% -0,04% -0,05% 99% 100% Classe B -0,04% -0,06% -0,06% 99% 99% Classe C -0,05% -0,03% -0,23% 99% 99% Classe E -0,05% 0,01% -0,08% 99% 100% Total -0,05% -0,05% -0,08% 99% 99% Classe D -0,03% -0,16% 0,00% 99% 99% Classe F -0,02% -0,06% -0,04% 100% 100% Acesso Aleatório Main 10 Over VTM-3.0
Y U V EncT DecT Classe A1 0,01% -0,01% 0,08% 100% 99% Classe A2 -0,06% 0,02% 0,19% 99% 99% Classe B -0,03% 0,09% 0,03% 100% 99% Classe C -0,02% -0,14% 0,18% 99% 100% Classe E Total -0,03% -0,01% 0,11% 100% 99% Classe D -0,04% -0,40% -0,07% 99% 100% Classe F -0,03% -0,13% 0,04% 99% 99%
[0180] Em outras modalidades, o valor de nScale é definido como dependente do valor do ângulo inverso que é derivado do modo de predição intra. De acordo com a modalidade, as seguintes etapas são realizadas para obter o valor de fator nScale em conformidade com o valor de modo de predição intra (predModeIntra): - derivar o valor de parâmetro intraPredAngle com base no valor de modo de predição predModeIntra; - derivar o valor de ângulo inverso (invAngle) com base em parâmetro intraPredAngle; e - obter o valor de fator nScale com base no tamanho do bloco e no valor invAngle.
[0181] A derivação do valor de parâmetro intraPredAngle com base no valor de modo de predição predModeIntra pode ser implementada como busca a partir de uma tabela de consulta. Uma tabela de consulta exemplificativa é fornecida na Tabela 8. Tabela 8. Uma tabela de consulta exemplificativa para parâmetro intraPredAngle - - - - - predMode 1 1 1 1 1 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 3 4 Intra 4 3 2 1 0 5 3 2 1 1 1 intraPred 8 7 6 5 5 4 3 3 3 2 2 1 4 5 7 2 0 Angle 6 3 4 7 1 5 9 5 2 9 6 2 1 6 1 8 2 predMode 1 1 1 1 1 1 1 1 1 1 2 2 5 6 7 8 9 Intra 0 1 2 3 4 5 6 7 8 9 0 1 intraPred 2 2 1 1 1 1 1 8 6 4 3 2 1 0 -1 -2 -3 Angle 3 0 8 6 4 2 0 predMode 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 Intra 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 - - - - - - - - - - - - - - intraPred -4 -6 -8 1 1 1 1 1 2 2 2 2 3 2 2 2 2 Angle 0 2 4 6 8 0 3 6 9 2 9 6 3 0 predMode 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 Intra 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - - - - - intraPred 1 1 1 1 1 -8 -6 -4 -3 -2 -1 0 1 2 3 4 6 Angle 8 6 4 2 0 predMode 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 Intra 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 intraPred 1 1 1 1 1 2 2 2 2 3 3 3 4 5 5 6 8 Angle 0 2 4 6 8 0 3 6 9 2 5 9 5 1 7 4 predMode 7 7 7 7 7 7 7 8 Intra 3 4 5 6 7 8 9 0 1 1 1 2 3 5 intraPred 7 8 0 2 7 5 4 1 Angle 3 6 2 8 1 6 1 2
[0182] O parâmetro de ângulo inverso invAngle é derivado com base em intraPredAngle da seguinte forma: 512∗32 invAngle = Round(intraPredAngle) A Tabela 9 e a Tabela 10 são usadas para especificar o valor de nScale com base em valores de predModeIntra e invAngle. Tabela 9. Mapeamento do índice de classe para o método de derivação de nScaleX e nScaleY. Índice de Método de derivação classe 0 nScaleY = nScaleX = ( Log2( nTbH ) + Log2( nTbW ) - 2 ) >> 2 nScaleY = nScaleX = 1 Min( 2, Log2( nTbH ) − Floor( Log2( 3 * invAngle − 2 ) ) + 8 ) 2 nScaleY = nScaleX =
Min( 2, Log2( nTbW ) − Floor( Log2( 3 * invAngle − 2 ) ) + 8 ) Tabela 10. Derivação de índice de classe com base em modo de predição intra. Grupo predModeIntra<18 de && Outros modos predModeIntra>50 predModeIntra!=0 modos de && predição predModeIntra!=1 intra Índice de 1 2 0 classe
[0183] A Figura 15 mostra as etapas da invenção em conformidade com a classificação fornecida na Tabela 9 e na Tabela 10. A variável denotada na Figura 13 como “IntraPredAngle” é denotada na Figura 15 como “predModeIntra”. Essa variável indica um modo de predição intra que é para obter valores de amostra preditos que são inseridos no processo de filtragem de PDPC. A correspondência entre valores de predModeIntra e direções de predição intra é mostrada na Figura 8.
[0184] Embora as modalidades da invenção tenham sido essencialmente descritas com base em codificação de vídeo, deve-se observar que as modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e, de modo correspondente, o sistema 10) e as outras modalidades descritas no presente documento também podem ser configuradas para processamento ou codificação de imagem estática, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva como em 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 em caso de a codificação de processamento de imagem estar limitada a uma única imagem 17. Todas as outras funcionalidades (também denominadas ferramentas ou tecnologias) do codificador de vídeo 20 e decodificador de vídeo 30 podem ser igualmente usadas para processamento de imagem estática, 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.
[0185] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções descritas no presente documento, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implantadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas por mídias de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível, tal como mídias de armazenamento de dados, ou mídias de comunicação incluindo qualquer mídia que facilita a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, as mídias legíveis por computador podem corresponder, de modo geral, a (1) mídias de armazenamento legíveis por computador tangíveis que não são transitórias ou (2) uma mídia de comunicação, tal como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que podem ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0186] A título de exemplo, e não limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético, ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outra mídia que possa ser usada para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é denominada, de maneira apropriada, uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota usando 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, então, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro- ondas estão incluídos na definição de mídia. Deve-se entender, entretanto, que mídias de armazenamento legíveis por computador e mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas, em vez disso, se referem a mídias de armazenamento não transitórias, tangíveis. Disco magnético e disco óptico, conforme usado neste documento, incluem disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray em que discos magnéticos normalmente reproduzem dados magneticamente, enquanto discos ópticos reproduzem dados opticamente com lasers. Combinações dos mesmos também devem estar incluídas no escopo de mídias legíveis por computador.
[0187] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos discretos ou integrados equivalentes. Assim, o termo “processador”, conforme usado no presente documento, pode se referir a qualquer uma dentre a estrutura antecedente ou qualquer outra estrutura adequada para implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de 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 totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0188] As técnicas desta revelação podem ser implantadas em uma grande variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico 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 exigem, necessariamente, realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequado.
[0189] A presente revelação compreende os aspectos adicionais a seguir.
[0190] Um primeiro aspecto de um método para predizer de modo intra um bloco de uma imagem, que compreende para cada amostra de uma pluralidade de amostras do bloco: determinar um valor de amostra predita a partir de um ou mais valores de amostra de referência por predição intra usando um dentre um modo de predição intra DC, um modo de predição intra PLANAR e um modo de predição intra angular; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderado; determinar um fator de escala vertical (nScaleY) com base na altura do bloco e no modo de predição intra; determinar um fator de escala horizontal (nScaleX) com base na largura do bloco e no modo de predição intra; determinar um primeiro peso com base no fator de escala vertical (nScaleY); determinar um segundo peso com base no fator de escala horizontal (nScaleX); calcular um valor adicional como uma soma ponderada de um valor de amostra de referência de topo e um valor de amostra de referência à esquerda ponderando-se o valor de amostra de referência de topo com o primeiro peso e o valor de amostra de referência à esquerda com o segundo peso; adicionar o valor adicional ao valor de amostra predita ponderado, resultando em um valor de amostra predita não normalizado; e normalizar o valor de amostra predita não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita não normalizado, resultando em um valor de amostra predita normalizado.
[0191] Um segundo aspecto de um método de acordo com o primeiro aspecto, em que a imagem é parte de uma sequência de vídeo.
[0192] Um terceiro aspecto de um método de acordo com o primeiro ou segundo aspecto, em que normalizar o valor de amostra predita não normalizado compreende computar o valor de amostra predita normalizado como 𝑃̂(𝑥, 𝑦) = (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6 em que 𝑃̂(𝑥, 𝑦) é o valor de amostra predita normalizado, 𝑃(𝑥, 𝑦) é o valor de amostra predita não normalizado, Rx,-1, R-1,y representam os valores das amostras de referência mais próximas localizadas acima e à esquerda de cada amostra, wL = V >> ( ( x << 1 ) >> nScaleX ) é um fator de ponderação horizontal, wT = V >> ( ( y << 1 ) >> nScaleY ) é um fator de ponderação vertical, x é uma coordenada horizontal da amostra, e y é uma coordenada vertical da amostra.
[0193] Um quarto aspecto de um método de acordo com qualquer um dentre os aspectos anteriores, em que cada amostra não é atualizada se uma soma de uma largura do bloco e uma altura do bloco for maior do que 64 amostras e intraPredMode é oblíquo não diagonal ou é igual a PLANAR_IDX.
[0194] Um quinto aspecto de um codificador (20) compreende circuitos de processamento para realizar o método de acordo com qualquer um dentre o primeiro ao quarto aspectos.
[0195] Um sexto aspecto de um decodificador (30) compreende circuitos de processamento para realizar o método de acordo com qualquer um dentre o primeiro ao quarto aspectos.
[0196] Um sétimo aspecto de um produto de programa de computador compreende um código de programa para realizar o método de acordo com qualquer um dentre o primeiro ao quarto aspectos.
[0197] Um oitavo aspecto de um decodificador, 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 programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar o método, de acordo com qualquer um dentre o primeiro ao quarto aspectos.
[0198] Um nono aspecto de um codificador, 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 programação para a 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 dentre o primeiro ao quarto aspectos.

Claims (23)

REIVINDICAÇÕES
1. Método de predição intra de um bloco de uma imagem, CARACTERIZADO pelo fato de que compreende para uma amostra a partir de uma pluralidade de amostras do bloco: determinar um valor de amostra predita a partir de um ou mais valores de amostra de referência por predição intra usando um modo de predição intra selecionado a partir de um dentre um modo de predição intra DC, um modo de predição intra planar, e um modo de predição intra angular; determinar um primeiro peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; determinar um segundo peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; calcular um valor adicional como uma soma ponderada de um valor de amostra de referência de topo e um valor de amostra de referência à esquerda ponderando-se o valor de amostra de referência de topo com o primeiro peso e o valor de amostra de referência à esquerda com o segundo peso; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderado; adicionar o valor adicional ao valor de amostra predita ponderado, resultando em um valor de amostra predita modificado não normalizado; e normalizar o valor de amostra predita modificado não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita modificado não normalizado, resultando em um valor de amostra predita modificado normalizado.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o método compreende predizer de modo intra o bloco para a imagem, que compreende cada amostra dentre a pluralidade de amostras do bloco.
3. Método, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que determinar o primeiro peso e determinar o segundo peso compreende determinar um fator de escala com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; em que o primeiro peso e o segundo peso são determinados com base no fator de escala, respectivamente.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3; CARACTERIZADO pelo fato de que determinar o primeiro peso compreende determinar um fator de escala vertical, denotado nScaleY, com base na altura do bloco e no modo de predição intra, em que o primeiro peso é determinado com base no fator de escala vertical, nScaleY; determinar o segundo peso compreende determinar um fator de escala horizontal, denotado nScaleX, com base na largura do bloco e no modo de predição intra, em que o segundo peso é determinado com base no fator de escala horizontal, nScaleX; normalizar o valor de amostra predita não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita não normalizado, resultando em um valor de amostra predita normalizado.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que nScaleX e nScaleY são derivados dependendo de um índice de classe de modo, respectivamente, em que o índice de classe de modo é derivado usando um grupo de modos de predição intra.
6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que o índice de classe de modo é mapeado para o grupo específico de modos de predição intra de acordo com uma dentre as seguintes tabelas: Grupo de 2, Outros modos de VDIA_IDX DC_IDX, modos predição HOR_IDX, intra Índice de 1 2 0 classe ou Grupo de DC_IDX, 2, Outros modos de HOR_IDX, VDIA_IDX modos predição VER_IDX intra
Índice de 1 2 0 classe ou Grupo de DC_IDX, 2, Outros modos de HOR_IDX, VDIA_IDX modos predição VER_IDX intra Índice de 2 1 0 classe ou Modos diagonais com etapa de subpixel DC_IDX, de Outros Grupo de modos de HOR_ID número modos predição intra X, inteiro: VER_IDX -14 -12 -10 -6, 2, VDIA_IDX, 72, 76, 78, 80 Índice de classe 2 1 0 em que DC_IDX significa modo DC que tem índice de modo de predição intra de 1, HOR_IDX e VER_IDX significam modos horizontal e vertical que têm índices de modo de predição intra de 18 e 50, respectivamente, VDIA_IDX significa modo diagonal que tem índice de modo de predição intra de
66.
7. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que nScaleX e nScaleY são derivados de acordo com o seguinte mapeamento:
Índice de Método de derivação classe nScaleX = ( Log2( nTbW ) – 2 + 1 ) >> 1 0 nScaleY = ( Log2( nTbH ) – 2 + 1 ) >> 1 1 nScaleY = nScaleX = ( Log2( nTbH ) + Log2( nTbW ) ) > 6 ? 1: 0 nScaleX = Log2( nTbW ) > 3 ? 1 : 0 2 nScaleY = Log2( nTbH ) > 3 ? 1 : 0 em que, nTbW e nTbH denotam largura e altura do bloco predito, respectivamente, e “>>” denota uma operação de desvio para direita. em que Floor é a função floor, Log2 retorna o logaritmo natural de um número para a base 2, Min retorna o menor de seus argumentos, e “>>” denota uma operação de desvio para direita.
8. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que o índice de classe de modo é mapeado para o grupo específico de modos de predição intra de acordo com a seguinte tabela: predModeIntra<18 && Outros Grupo de modos de predModeIntra>50 predModeIntra!=0 modos predição intra && predModeIntra!=1 Índice de classe 1 2 0
9. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que nScaleX e nScaleY são derivados de acordo com o seguinte mapeamento: Índice de Método de derivação classe 0 nScaleY = nScaleX = ( Log2( nTbH ) + Log2( nTbW ) - 2 ) >> 2 nScaleY = nScaleX = 1 Min( 2, Log2( nTbH ) − Floor( Log2( 3 * invAngle − 2 ) ) + 8 ) nScaleY = nScaleX = 2 Min( 2, Log2( nTbW ) − Floor( Log2( 3 * invAngle − 2 ) ) + 8 )
Log2( nTbH ) > 3 ? 1 : 0 em que nTbW e nTbH denotam largura e altura do bloco predito, respectivamente, e “>>” denota uma operação de desvio para direita. em que Floor é a função floor, Log2 retorna o logaritmo natural de um número para a base 2, Min retorna o menor de seus argumentos, e “>>” denota uma operação de desvio para direita; em que invAngle é o parâmetro de ângulo inverso que é derivado usando intraPredAngle da seguinte maneira: 512∗32 invAngle = Round(intraPredAngle); em que intraPredAngle é o parâmetro de ângulo que é derivado do modo de predição intra, fornecido pela variável predModeIntra, usando uma Tabela de consulta, LUT.
10. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que a LUT é fornecida pela seguinte tabela predMode - - - - - - - - - - - - - - 2 3 4 Intra 14 13 12 11 10 9 8 7 6 5 4 3 2 1 intraPred 51 34 25 17 12 10 86 73 64 57 51 45 39 35 32 29 26 Angle 2 1 6 1 8 2 predMode 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Intra intraPred - - - 23 20 18 16 14 12 10 8 6 4 3 2 1 0 Angle 1 2 3 predMode 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Intra intraPred - - - - - - - - - - - - - - - - - Angle 4 6 8 10 12 14 16 18 20 23 26 29 32 29 26 23 20 predMode 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 Intra intraPred - - - - - - - - - - - 0 1 2 3 4 6 Angle 18 16 14 12 10 8 6 4 3 2 1 predMode 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 Intra intraPred 8 10 12 14 16 18 20 23 26 29 32 35 39 45 51 57 64 Angle predMode 73 74 75 76 77 78 79 80 Intra intraPred 10 12 17 25 34 51 73 86 Angle 2 8 1 6 1 2
11. Método, de acordo com qualquer uma das reivindicações 4 a 10, CARACTERIZADO pelo fato de que normalizar o valor de amostra predita modificado não normalizado compreende computar o valor de amostra predita como 𝑃(𝑥, 𝑦) = Clip1Cmp( (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 − 𝑤𝑇𝐿 × 𝑅−1,−1 + (64 − 𝑤𝑙 − 𝑤𝑇 + 𝑤𝑇𝐿) × 𝑃 (𝑥, 𝑦) + 32)) ≫ 6) em que 𝑃(𝑥, 𝑦) é o valor de amostra predita modificado não normalizado, Rx,-1, R-1,y representam os valores das amostras de referência mais próximas localizadas acima e à esquerda de cada amostra, wL = V >> ( ( x << 1 ) >> nScaleX ) é um fator de ponderação horizontal, wT = V >> ( ( y << 1 ) >> nScaleY ) é um fator de ponderação vertical, V é um valor base; x é uma coordenada horizontal de cada amostra, e y é uma coordenada vertical da amostra; em que clip1Cmp é definido da seguinte maneira: no caso de cIdx ser igual a 0, clip1Cmp é definido como igual a Clip1Y; de outro modo, clip1Cmp é definido como igual a Clip1C; em que cIdx é uma variável que especifica o componente de cor do bloco atual; e Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) x ; z<x Clip3( x, y, z ) = { y ; z>y z ; de outro modo em que BitDepthY é a profundidade de bit de amostras de luma. em que BitDepthC é a profundidade de bit de amostras de luma.
12. Método, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que para um modo planar, wTL = 0, enquanto para o modo horizontal wTL = wT e para modo vertical wTL = wL.
13. Método, de acordo com qualquer uma das reivindicações 4 a 10, CARACTERIZADO pelo fato de que normalizar o valor de amostra predita modificado não normalizado compreende computar o valor de amostra predita modificado normalizado como 𝑃̂(𝑥, 𝑦) = (𝑤𝐿 × 𝑅−1,𝑦 + 𝑤𝑇 × 𝑅𝑥,−1 + (64 − 𝑤𝐿 − 𝑤𝑇) × 𝑃(𝑥, 𝑦) + 32)) ≫ 6 em que
𝑃̂(𝑥, 𝑦) é o valor de amostra predita modificado normalizado, 𝑃(𝑥, 𝑦) é o valor de amostra predita modificado não normalizado, Rx,-1, R-1,y representam os valores das amostras de referência mais próximas localizadas acima e à esquerda de cada amostra, wL = V >> ( ( x << 1 ) >> nScaleX ) é um fator de ponderação horizontal, wT = V >> ( ( y << 1 ) >> nScaleY ) é um fator de ponderação vertical, V é um valor base; x é uma coordenada horizontal de cada amostra, e y é uma coordenada vertical da amostra.
14. Método, de acordo com qualquer uma das reivindicações anteriores, CARACTERIZADO pelo fato de que cada amostra não é atualizada se uma soma de uma largura do bloco e uma altura do bloco, fornecidas em amostras, respectivamente, for maior do que 64 amostras, e o modo de predição intra é oblíquo não diagonal ou o modo de predição intra é um modo de predição intra planar.
15. Método, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que intraPredMode é oblíquo não diagonal se intraPredMode não for igual a 2 ou VDIA_IDX e um dentre os seguintes for verdadeiro: intraPredMode não é menor do que VDIA_IDX – numModes ou intraPredMode não é maior do que 2 + numModes.
16. Método, de acordo com qualquer uma das reivindicações precedentes, CARACTERIZADO pelo fato de que compreende adicionalmente adicionar um valor residual ao valor de amostra predita modificado normalizado, resultando em um valor de amostra reconstruída.
17. 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 16.
18. 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 16.
19. Programa de computador, CARACTERIZADO pelo fato de que compreende um código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 16.
20. Decodificador, CARACTERIZADO 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 programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 16.
21. Codificador, CARACTERIZADO 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 programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 16.
22. Mídia de armazenamento não transitória, CARACTERIZADA pelo fato de que compreende um fluxo de bits que é codificado usando-se um método de predição intra, em que o método de predição intra compreende para uma amostra a partir de uma pluralidade de amostras do bloco: determinar um valor de amostra predita a partir de um ou mais valores de amostra de referência por predição intra usando um modo de predição intra selecionado a partir de um dentre um modo de predição intra DC, um modo de predição intra planar, e um modo de predição intra angular; determinar um primeiro peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; determinar um segundo peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; calcular um valor adicional como uma soma ponderada de um valor de amostra de referência de topo e um valor de amostra de referência à esquerda ponderando-se o valor de amostra de referência de topo com o primeiro peso e o valor de amostra de referência à esquerda com o segundo peso; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderado; adicionar o valor adicional ao valor de amostra predita ponderado, resultando em um valor de amostra predita modificado não normalizado; e normalizar o valor de amostra predita modificado não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita modificado não normalizado, resultando em um valor de amostra predita modificado normalizado.
23. Fluxo de bits de um vídeo, CARACTERIZADO pelo fato de que compreende: uma sequência codificada de quadros de um vídeo, em que a sequência de quadros é codificada no fluxo de bits com base em uma pluralidade de processos que compreende para uma amostra a partir de uma pluralidade de amostras do bloco: determinar um valor de amostra predita a partir de um ou mais valores de amostra de referência por predição intra usando um modo de predição intra selecionado a partir de um dentre um modo de predição intra DC, um modo de predição intra planar, e um modo de predição intra angular; determinar um primeiro peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; determinar um segundo peso com base no modo de predição intra e em uma dentre a altura do bloco, a largura do bloco, ou ambas; calcular um valor adicional como uma soma ponderada de um valor de amostra de referência de topo e um valor de amostra de referência à esquerda ponderando-se o valor de amostra de referência de topo com o primeiro peso e o valor de amostra de referência à esquerda com o segundo peso; multiplicar o valor de amostra predita por um fator de ponderação de amostra, resultando em um valor de amostra predita ponderado; adicionar o valor adicional ao valor de amostra predita ponderado, resultando em um valor de amostra predita modificado não normalizado; e normalizar o valor de amostra predita modificado não normalizado por um desvio aritmético para direita de uma representação de número inteiro do valor de amostra predita modificado não normalizado, resultando em um valor de amostra predita modificado normalizado.
Dispositivo de Dispositivo de origem ϭϮ destino ϭϰ Fonte de Dispositivo de imagem ϭϲ exibição ϯϰ Petição 870210054051, de 16/06/2021, pág. 183/272 dados de imagem dados de ϭϳ imagem pós- processados ϯϯ Pré-processador Pós-processador ϭϴ ϯϮ dados de ϭͬϭϲ imagem pré- dados de imagem processadosϭϵ decodificados ϯϭ Codificador Decodificador ϮϬ ϯϬ dados de imagem canal de dados de imagem codificadosϮϭ comunicação codificados Ϯϭ Interface de ϭϯ Interface de comunicação comunicação
ϮϮ Ϯϴ ϭϬ &/'͘ϭ
Dispositivo(s) de $QWHQD geração de imagem
Petição 870210054051, de 16/06/2021, pág. 184/272 Circuitos de processamento
Codificador Decodificador de Vídeo de Vídeo
SURFHVVadRUeV
Ϯͬϭϲ
Repositório(s) Dispositivo de em Memória Exibição
Sistema de Codificação deVídeo
&/'͘ϭ imagemϭϳ bloco de unidade de cálculo imagem ϮϬϯ bloco residualϮϬϱ residualϮϬϰ н
Ͳ Ϯϲ Petição 870210054051, de 16/06/2021, pág. 185/272 bloco de ϮϬϲ entrada ϮϬϭ Ϭ prediçãoϮϲϱ Unidade de Unidade de seleção de modo processamento de transformada coeficientes de transformadaϮϬϳ ϮϲϮ
ϮϬϴ Ϯϰϰ Unidade de Unidade de quantização predição ϮϳϬ saída ϮϳϮ inter Unidade de coeficientes Unidade de ϯͬϭϲ particionamento Ϯϱϰ quantizadosϮϬϵ codificação de Unidade de entropia dados de predição imagem intra Elementos de Unidade de ϮϭϬ codificados Ϯϭ sintaxe Ϯϲϲ quantização inversa coeficientes imagem desquantizados 211 decodificadaϮϯϭ Unidade de ϮϭϮ processamento de transformada inversa Buffer de Filtro Imagem н Decodificada Loop Bloco residual unidade de reconstruído Ϯϭϯ
ϮϮϬ ϮϯϬ bloco reconstruçãoϮϭϰ Codificador ϮϬ bloco filtrado ϮϮϭ reconstruído Ϯϭϱ &/'͘Ϯ dados de imagem codificados Ϯϭ ϯϬϰ ϯϬϮ Unidade de decodificação de entropia
Elementos de sintaxe ϯϲϲ coeficientes
Petição 870210054051, de 16/06/2021, pág. 186/272 quantizados ϯϰϰ ϯϬϵ
Unidade de predição imagem inter decodificada ϯϯϭ ϯϱϰ bloco de prediçãoϯϲϱ Unidade de ϰͬϭϲ predição intra ϯϭϬ Unidade de quantização inversa coeficientes desquantizadosϯϭϭ
Unidade de ϯϭϮ processamento de ϯϯϬ transformada inversa Buffer de Filtro Imagem н Loop Decodificada bloco residual unidade de imagem reconstruídoϯϭϯ ϯϮϬ reconstrução decodificadaϯϯϭ bloco bloco ϯϭϰ filtrado 321 DecodificadorϯϬ reconstruídoϯϭϱ saída ϯϯϮ &/'͘ϯ
Dispositivo de Codificação de Vídeo Petição 870210054051, de 16/06/2021, pág. 187/272
Processador
Módulo de Codificação 7[5[ ϱͬϭϲ 7[5[
0HPória Portas a Portas a Jusante Montante &/'͘ϰ
352&(66AD25 ',63/$< Petição 870210054051, de 16/06/2021, pág. 188/272
'$DOS ϲͬϭϲ APLICATIVO« APLICATIVO: CODIFICAÇÃO DE VÍDEO APLICATIVO«1
SISTEMA OPERACIONAL
&/'͘ϱ ϳͬϭϲ
&/'͘ϲ
ϴͬϭϲ
&/'͘ϳ ϵͬϭϲ
&/'͘ϴ
Ϯ ϯϮ Petição 870210054051, de 16/06/2021, pág. 192/272 ϰ ϯϮ ZͲϭ͕Ͳϭ Zdž͕Ͳϭ ZͲϭ͕Ͳϭ Zdž͕Ͳϭ ϯϮ ZͲϭ͕LJ ϴ ZͲϭ͕LJ ϭϬͬϭϲ pesos de PDPC de modo DC para posições (0,0) e (1,0) dentro de um bloco 4x4.
&/'͘ϵ
Z;dž͕ͲϭͿ Z;dž͕ͲϭͿ Z;Ͳϭ͕ͲϭͿ Z;Ͳϭ͕ͲϭͿ
Z;Ͳϭ͕LJͿ Z;Ͳϭ͕LJͿ
Petição 870210054051, de 16/06/2021, pág. 193/272 Predição
Amostras de referência
;ͿModo topo-direita diagonal ;ͿModo inferior-esquerda diagonal Z;dž͕ͲϭͿ Z;dž͕ͲϭͿ Z;Ͳϭ͕ͲϭͿ Z;Ͳϭ͕ͲϭͿ ϭϭͬϭϲ
Z;Ͳϭ͕LJͿ
Z;Ͳϭ͕LJͿ
;ͿModo topo-direita diagonal adjacente ;ͿModo inferior-esquerda diagonal adjacente Definição de amostras usadas por extensão de PDPC para modos intra angular adjacente e diagonal. &/'͘ϭϬ
Atualizar amostras preditas
Cálculo de nScaleX e ϭϭϬϭ nScaley
Petição 870210054051, de 16/06/2021, pág. 194/272 ϭϭϬϮ džсϬ͕LJсϬ
Z7>\@ V!!\
BR112021011723-7A 2018-12-21 2019-12-23 Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits BR112021011723A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862784345P 2018-12-21 2018-12-21
US62/784,345 2018-12-21
PCT/RU2019/050253 WO2020130889A1 (en) 2018-12-21 2019-12-23 Method and apparatus of mode- and size-dependent block-level restrictions

Publications (1)

Publication Number Publication Date
BR112021011723A2 true BR112021011723A2 (pt) 2021-08-31

Family

ID=71101526

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021011723-7A BR112021011723A2 (pt) 2018-12-21 2019-12-23 Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits

Country Status (12)

Country Link
US (1) US20220124368A1 (pt)
EP (2) EP3881549B1 (pt)
JP (2) JP7277586B2 (pt)
KR (1) KR20210091322A (pt)
CN (4) CN114885157A (pt)
AU (1) AU2019401170B2 (pt)
BR (1) BR112021011723A2 (pt)
CA (1) CA3122769A1 (pt)
IL (1) IL284220A (pt)
MX (1) MX2021007092A (pt)
WO (1) WO2020130889A1 (pt)
ZA (1) ZA202104005B (pt)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020149620A1 (ko) 2019-01-14 2020-07-23 삼성전자 주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
CN114071161B (zh) * 2020-07-29 2023-03-31 Oppo广东移动通信有限公司 图像编码方法、图像解码方法及相关装置
EP4315854A1 (en) * 2021-03-31 2024-02-07 Telefonaktiebolaget LM Ericsson (publ) Smooth surface prediction
WO2024043745A1 (ko) * 2022-08-25 2024-02-29 엘지전자 주식회사 Mrl(multi reference line)을 이용한 인트라 예측 모드에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003033B2 (en) * 2001-03-05 2006-02-21 Intervideo, Inc. Systems and methods for encoding redundant motion vectors in compressed video bitstreams
JP4050754B2 (ja) * 2005-03-23 2008-02-20 株式会社東芝 ビデオエンコーダ及び動画像信号の符号化方法
US8503536B2 (en) * 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US7995649B2 (en) * 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
JP5271271B2 (ja) * 2006-11-03 2013-08-21 サムスン エレクトロニクス カンパニー リミテッド 動きベクトル・トラッキングを利用した映像の符号化、復号化方法及び装置
EP2182732A1 (en) * 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
KR101503269B1 (ko) * 2010-04-05 2015-03-17 삼성전자주식회사 영상 부호화 단위에 대한 인트라 예측 모드 결정 방법 및 장치, 및 영상 복호화 단위에 대한 인트라 예측 모드 결정 방법 및 장치
CN102695061B (zh) * 2011-03-20 2015-01-21 华为技术有限公司 一种权重因子的确定方法和装置,以及一种帧内加权预测方法和装置
CN102291584B (zh) * 2011-09-01 2013-04-17 西安电子科技大学 帧内图像亮度块预测装置及方法
EP2806635A4 (en) * 2012-01-18 2015-12-02 Korea Electronics Telecomm METHOD AND DEVICE FOR ENCODING AND DECODING AN IMAGE
WO2017035831A1 (en) * 2015-09-06 2017-03-09 Mediatek Inc. Adaptive inter prediction
US10425648B2 (en) * 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
US10567759B2 (en) 2016-03-21 2020-02-18 Qualcomm Incorporated Using luma information for chroma prediction with separate luma-chroma framework in video coding
US10425640B2 (en) * 2016-06-16 2019-09-24 Peking University Shenzhen Graduate School Method, device, and encoder for controlling filtering of intra-frame prediction reference pixel point
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
CN107071417B (zh) * 2017-04-10 2019-07-02 电子科技大学 一种用于视频编码的帧内预测方法
US10491893B1 (en) * 2018-08-29 2019-11-26 Tencent America LLC Method and apparatus for multi-line intra prediction
GB2577337A (en) * 2018-09-24 2020-03-25 Sony Corp Image data encoding and decoding
US20200162737A1 (en) * 2018-11-16 2020-05-21 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
US11057622B2 (en) * 2018-12-13 2021-07-06 Qualcomm Incorporated Position dependent intra prediction combination with non-square block diagonals
US11363284B2 (en) * 2019-05-09 2022-06-14 Qualcomm Incorporated Upsampling in affine linear weighted intra prediction

Also Published As

Publication number Publication date
EP3881549B1 (en) 2024-03-06
AU2019401170B2 (en) 2023-03-30
US20220124368A1 (en) 2022-04-21
JP2022514885A (ja) 2022-02-16
CN114885159B (zh) 2023-10-20
AU2019401170A1 (en) 2021-06-24
EP3881549A1 (en) 2021-09-22
JP7277586B2 (ja) 2023-05-19
CN114885158A (zh) 2022-08-09
CN112889286A (zh) 2021-06-01
KR20210091322A (ko) 2021-07-21
CN114885158B (zh) 2023-10-20
EP4307673A3 (en) 2024-02-14
CN112889286B (zh) 2022-04-19
IL284220A (en) 2021-08-31
ZA202104005B (en) 2022-07-27
EP3881549A4 (en) 2022-06-22
CN114885159A (zh) 2022-08-09
MX2021007092A (es) 2021-08-11
WO2020130889A1 (en) 2020-06-25
JP2023100834A (ja) 2023-07-19
CA3122769A1 (en) 2020-06-25
EP4307673A2 (en) 2024-01-17
CN114885157A (zh) 2022-08-09

Similar Documents

Publication Publication Date Title
BR112021010416A2 (pt) Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto
BR112021011723A2 (pt) Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits
CA3132225A1 (en) An encoder, a decoder and corresponding methods of harmonizing matrix-based intra prediction and secondary transform core selection
BR112020027043A2 (pt) Método e decodificador para interpredição
BR112021016677A2 (pt) Método e aparelho para predição inter baseada em afim de sub-blocos de croma
EP4358511A1 (en) Method of intra predicting a block of a picture
US11589055B2 (en) Method and apparatus of mode- and size-dependent block-level restrictions for position dependent prediction combination
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
BR112021003999A2 (pt) relação entre elementos de restrição de partição
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
BR112021016270A2 (pt) Método de codificação de vídeo e codificador, decodificador, meio legível por computador
CN116744008A (zh) 图像重建方法和装置
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
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
AU2024201127A1 (en) Encoder, decoder and corresponding methods using dct2 enabled high level flag
WO2021061018A1 (en) Method and apparatus of combined intra-inter prediction
WO2020139173A1 (en) Method and apparatus for intra prediction
BR112020026183A2 (pt) Método de codificação de vídeo, codificador, decodificador e produto de programa de computador
BR112021012708A2 (pt) Método e aparelho de modelagem linear de componente cruzado para predição intra
BR112021002210A2 (pt) aparelho e método para realizar desblocagem
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
RU2786022C1 (ru) Устройство и способ для ограничений уровня блока в зависимости от режима и размера
BR122023021072A2 (pt) Método de desblocagem, dispositivo para uso em um codificador e/ou um decodificador de imagem, codificador, decodificador, e meio legível por computador não transitório

Legal Events

Date Code Title Description
B154 Notification of filing of divisional application [chapter 15.50 patent gazette]

Free format text: O PEDIDO FOI DIVIDIDO NO BR122022026251-1 PROTOCOLO 870220120661 EM 21/12/2022 16:51.