BR112021000569A2 - Método e dispositivo de interpolação de amostra de referência de intrapredição bidirecional - Google Patents
Método e dispositivo de interpolação de amostra de referência de intrapredição bidirecional Download PDFInfo
- Publication number
- BR112021000569A2 BR112021000569A2 BR112021000569-2A BR112021000569A BR112021000569A2 BR 112021000569 A2 BR112021000569 A2 BR 112021000569A2 BR 112021000569 A BR112021000569 A BR 112021000569A BR 112021000569 A2 BR112021000569 A2 BR 112021000569A2
- Authority
- BR
- Brazil
- Prior art keywords
- block
- sample
- samples
- image
- prediction
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
a presente invenção refere-se a aperfeiçoamento de métodos de interpredição bidirecional conhecidos, dispositivos (de codificação, decodificação, e associados). de acordo com a presente invenção, ao invés de interpolação de amostras de referência secundárias, para calcular amostras em intrapredição, um cálculo com base em valores de amostras de referência "primários" somente é utilizado. o resultado é então refinado adicionando um incremento o qual depende pelo menos da posição do pixel (amostra) dentro do bloco corrente e pode ainda depender da forma e tamanho do bloco e a direção de predição mas não depende de quaisquer valores de amostras de referência "secundários" adicionais. o processamento de acordo com a presente invenção é assim menos computacionalmente complexo porque este utiliza um único procedimento de interpolação ao invés de fazê-lo duas vezes: para amostras de referência primárias e secundárias.
Description
Relatório Descritivo da Patente de Invenção para "MÉTODO
[0001] A presente descrição refere-se ao campo técnico de codificação e decodificação de imagem e/ou vídeo, e especificamente a um método e um dispositivo de intrapredição.
[0002] O vídeo digital tem sido amplamente utilizado desde a introdução de discos DVD. Antes da transmissão o vídeo é codificado e transmitido utilizando um meio de transmissão. O espectador recebe o vídeo e utiliza um dispositivo de visualização para decodificar e exibir o vídeo. Ao longo dos anos a qualidade de vídeo aperfeiçoou, por exemplo, devido a resoluções, profundidades de cores e taxas de quadros mais altas. Isto levou a maiores fluxos de dados que são atualmente comumente transportados pela internet e redes de comunicação móvel.
[0003] Os vídeos de resolução mais alta, no entanto, tipicamente requerem mais largura de banda já que estes têm mais informações. De modo a reduzir os requisitos de largura de banda os padrões de codificação de vídeo que envolvem compressão do vídeo foram introduzidos. Quando o vídeo é codificado os requisitos de largura de banda (ou requisitos de memória correspondentes no caso de armazenamento) são reduzidos. Frequentemente esta redução vem com o custo da qualidade. Assim, os padrões de codificação de vídeo tentam encontrar um equilíbrio entre requisitos de largura de banda e qualidade.
[0004] A Codificação de Vídeo de Alta Eficiência (HEVC) é um exemplo de um padrão de codificação de vídeo que é comumente conhecido para pessoas versadas na técnica. Em HEVC, para dividir uma unidade de codificação (CU) em unidades de predição (PU) ou unidades de transformada (TUs). O padrão de próxima geração de Codificação de Vídeo Versátil (VVC) é o projeto de vídeo conjunto mais recente das organizações de padronização ITU-T Video Coding Experts Group (VCEG) e o ISO/IEC Moving Image Experts Group (MPEG), trabalhando juntos em uma parceria conhecida como Joint Video Exploration Team (JVET). A VVC também é também referida como padrão ITU-T H.266/VVC (Versatile Video Coding). Em VVC, esta remove os conceitos de múltiplos tipos de partição, isto é, esta remove a separação dos conceitos de CU, PU e TU, exceto como necessário para CUs que têm um tamanho muito grande para o comprimento de transformada máximo, e suporta mais flexibilidade para formas de partição de CU.
[0005] O processamento destas unidades de codificação (CUs) (também referidas como blocos) depende de seu tamanho, posição espacial e um modo de codificação especificado por um codificador. Os modos de codificação podem ser classificados em dois grupos de acordo com o tipo de predição: modos de intra e interpredição. Os modos intrapredição utilizam amostras da mesma imagem (também referida de quadro ou imagem) para gerar amostras de referência para calcular os valores de predição para as amostras do bloco que está sendo reconstruído. A intrapredição é também referida como predição espacial. Os modos de interpredição são projetados para predição temporal e utilizam amostras de referência de imagens anteriores ou seguintes para predizer amostras do bloco da imagem atual.
[0006] A intrapredição bidirecional (BIP) é um tipo de intrapredição. O procedimento de cálculo para BIP é complicado, o que leva a uma menor eficiência de codificação.
[0007] A presente invenção visa superar o problema acima e prover um dispositivo de intrapredição com uma complexidade reduzida de cálculos e uma eficiência de codificação aperfeiçoada, e um respectivo método.
[0008] Isto é conseguido pelas características das reivindicações independentes.
[0009] De acordo com um primeiro aspecto da presente invenção, um dispositivo de intrapredição de um bloco corrente de uma imagem está provido. O dispositivo inclui um circuito de processamento configurado para calcular a valor de amostra de predição preliminar de uma amostra do bloco corrente com base nos valores de amostras de referência de amostras de referência localizadas em blocos vizinhos reconstruídos do bloco corrente. O circuito de processamento está ainda configurado para calcular um valor de amostra de predição final da amostra adicionando um valor de incremento ao valor de amostra de predição preliminar, em que o valor de incremento depende da posição da amostra no bloco corrente.
[0010] De acordo com um segundo aspecto da presente invenção, um método de intrapredição de um bloco corrente de uma imagem está provido. O método inclui as etapas de calcular um valor de amostra de predição preliminar de uma amostra do bloco corrente com base nos valores de amostras de referência de amostras de referência localizadas em blocos vizinhos reconstruídos do bloco corrente e de calcular um valor de amostra de predição da amostra adicionando um valor de incremento ao valor de amostra de predição preliminar, em que o valor de incremento depende da posição da amostra no bloco corrente.
[0011] Na presente descrição, o termo "amostra" é utilizado como um sinônimo para "pixel". Especificamente, um "valor de amostra" significa qualquer valor que caracteriza um pixel, tal como um valor de luma ou croma.
[0012] Uma "imagem" na presente descrição significa qualquer tipo de imagem de imagem, e aplica, especificamente, a um quadro de sinal de vídeo. No entanto, a presente descrição não está limitada a codificação e decodificação de vídeo mas é aplicável a qualquer tipo de processamento de imagem que utiliza intrapredição.
[0013] É a proposta específica da presente invenção calcular a predição somente com base nas amostras de referência em blocos vizinhos que já estão reconstruídos, isto é, assim denominadas amostras de referência "primárias", sem a necessidade de gerar amostras de referência "secundárias" adicionais em blocos que estão correntemente indisponíveis por interpolação. De acordo com a presente invenção, um valor de amostra preliminar é aperfeiçoado adicionando um valor de incremento que é indeterminado dependendo da posição da amostra no bloco corrente. Este cálculo é executado por meio de edição incremental somente e evita a utilização de operações de multiplicação que consomem recursos, o que aperfeiçoa a eficiência de codificação.
[0014] De acordo com modalidades, as amostras de referência localizadas em uma linha de amostras diretamente acima do bloco corrente e em uma coluna de amostras à esquerda ou à direita do bloco corrente. Alternativamente, estas estão localizadas em uma linha de amostras diretamente abaixo do bloco corrente e em uma coluna de amostras à esquerda ou à direita do bloco corrente.
[0015] De acordo com modalidades, o valor de amostra de predição preliminar é calculado de acordo com intrapredição direcional da amostra do bloco corrente.
[0016] De acordo com modalidades, o valor de incremento é determinado ainda levando em conta um número de amostras do bloco corrente em largura e um número de amostras do bloco corrente é em altura.
[0017] De acordo com modalidades, o valor de incremento é determinado utilizando duas amostras de referência. De acordo com modalidades específicas, uma destas está localizada na coluna que é uma vizinha direita da coluna mais à direita do bloco corrente, por exemplo, a amostra vizinha direita superior, e outra está localizada na linha que é uma vizinha inferior da fila mais baixa do bloco corrente, por exemplo, a amostra vizinha esquerda inferior.
[0018] Em outras modalidades, uma destas pode estar localizada na coluna que é uma vizinha esquerda da coluna mais esquerda do bloco corrente, por exemplo, a amostra vizinha esquerda superior, e outra está localizada na linha que é uma vizinha inferior da fila mais baixa do bloco corrente, por exemplo, a amostra vizinha direita inferior.
[0019] Nas mesmas modalidades, o valor de incremento é determinado utilizando três ou mais amostras de referência.
[0020] De acordo com modalidades alternativas, o valor de incremento é determinado utilizando uma tabela de consulta os valores da qual especificam um incremento parcial ou tamanho de etapa de incremento do valor de incremento dependendo do índice do modo de intrapredição, em que, por exemplo, a tabela de consulta provê para cada índice de modo de intrapredição um incremento parcial ou tamanho de etapa de incremento do valor de incremento. Em uma modalidade da presente invenção, o incremento parcial ou tamanho de etapa de incremento do valor de incremento significa uma diferença entre valores de incremento para duas amostras horizontalmente adjacentes ou duas amostras verticalmente adjacentes.
[0021] De acordo com modalidades, o valor de incremento depende linearmente da posição dentro de uma linha de amostras predita no bloco corrente. Um seu exemplo específico está abaixo descrito com referência à Figura 10.
[0022] De acordo com modalidades alternativas, o valor de incremento depende linearmente em partes na posição dentro de uma linha de amostras preditas e do bloco corrente. Um exemplo específico de tal modalidade está abaixo descrito com referência à Figura 11.
[0023] De acordo com modalidades, um modo direcional é utilizado para calcular o valor de amostra de predição preliminar com base na intrapredição direcional. Isto inclui as direções horizontal e vertical, assim como todas as direções que são inclinadas com relação à horizontal e vertical, mas não inclui modos DC e planos.
[0024] De acordo com modalidades, o valor de incremento é determinado ainda levando em conta a forma do bloco e/ou a direção da predição.
[0025] Especificamente, de acordo com modalidades, o bloco corrente é dividido por pelo menos uma linha enviesada para obter pelo menos duas regiões do bloco e para determinar o valor de incremento de diferentemente para diferentes regiões. Mais especificamente, a linha enviesada tem uma inclinação que corresponde a um modo de intrapredição que é utilizado. Como uma "linha enviesada" é compreendido de modo a ser inclinada com referência às direções horizontal e vertical, em tais modalidades o modo de intrapredição não é nem vertical nem horizontal (e, é claro, também nem é plano nem DC).
[0026] De acordo com modalidades específicas adicionais, o bloco corrente é dividido em duas linhas enviesadas paralelas que cruzam cantos opostos do bloco corrente. Por meio disto, três regiões são obtidas. Isto é, o bloco é dividido em duas regiões triangulares e uma região de paralelogramo entre estas.
[0027] Em modalidades específicas alternativas, utilizando somente uma única linha enviesada para dividir o bloco corrente, duas regiões trapezoidais são geradas.
[0028] De acordo com modalidades, o valor de incremento linearmente depende da distância da amostra de um limite de bloco na direção vertical e linearmente depende da distância da amostra de um limite de um bloco na direção horizontal. Em outras palavras, a diferença entre os incrementos aplicados a duas amostras (pixels) que são adjacentes ao longo de uma paralela aos limites de bloco (isto é, na direção de "linha (x)" ou "coluna (y)") é a mesma.
[0029] De acordo com modalidades, a adição do valor de incremento é executada em procedimento iterativo, em que incrementos parciais são subsequentemente adicionados à predição preliminar. Especificamente, os ditos incrementos parciais representam as diferenças entre os incrementos aplicados a mostras horizontalmente ou verticalmente adjacentes, como introduzido no parágrafo acima.
[0030] De acordo com as modalidades, a predição do valor de amostra é calculada utilizando valores de amostras de referência somente de amostras de referência localizadas em blocos vizinhos reconstruídos (assim denominadas "amostras primárias"). Isto significa que nenhuma amostra (assim denominadas "amostras secundárias") é utilizada quando gerado por meio de interpolação utilizando amostras de referência primárias. Isto inclui tanto o cálculo da previsão preliminar quanto o cálculo do valor de amostra de predição final.
[0031] De acordo com um terceiro aspecto da presente invenção, um dispositivo de codificação para codificar um bloco corrente de uma imagem está provido. O dispositivo de codificação compreende um dispositivo de intrapredição de acordo com o primeiro aspecto para prover um bloco predito para o bloco corrente e um circuito de processamento configurado para codificar o bloco corrente com base no bloco predito.
[0032] O circuito de processamento pode, especificamente, ser o mesmo circuito de processamento como utilizado de acordo com o primeiro aspecto, mas pode também ser outro, especificamente um circuito de processamento dedicado.
[0033] De acordo com um quarto aspecto da presente invenção, um dispositivo de decodificação para decodificar o bloco codificado corrente de uma imagem está provido. O dispositivo de decodificação compreende um dispositivo de intrapredição de acordo com o primeiro aspecto da presente invenção para prover o bloco predito para o bloco codificado e o circuito de processamento configurado para restaurar o bloco corrente com base no bloco codificado e no bloco predito.
[0034] O circuito de processamento pode, especificamente, ser o mesmo como de acordo com o primeiro aspecto, mas este pode também ser um circuito de processamento separado.
[0035] De acordo com um quinto aspecto da presente invenção, um método para codificar um bloco corrente de uma imagem está provido. O método compreende as etapas de prover um bloco predito para o bloco corrente executando o método de acordo com o segundo aspecto para as amostras do bloco corrente e de codificar o bloco corrente com base no bloco predito.
[0036] De acordo com o sexto aspecto da presente invenção, um método de decodificar o bloco codificado corrente de uma imagem está provido codificado. O método compreende as etapas de prover um bloco predito para o bloco codificado executando o método de acordo com o segundo aspecto da invenção para as amostras do bloco corrente e de restaurar o bloco corrente com base no bloco codificado e no bloco predito.
[0037] De acordo com o sétimo aspecto da presente invenção, um meio legível por computador que armazena instruções, as quais quando executadas em um processador fazem com que o processador execute todas as etapas de um método de acordo com o segundo, quinto, ou sexto aspectos da invenção.
[0038] Vantagens e modalidades adicionais da invenção são o assunto das reivindicações dependentes e descritas na descrição abaixo.
[0039] O escopo de proteção é definido pelas reivindicações.
[0040] As seguintes modalidades estão descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais:
[0041] Figura 1 é um diagrama de blocos que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da invenção.
[0042] Figura 2 é um diagrama de blocos que mostra um exemplo de um codificador de vídeo configurado para implementar modalidades da invenção.
[0043] Figura 3 é um diagrama de blocos que mostra uma estrutura exemplar de um decodificador de vídeo configurado para implementar modalidades da invenção.
[0044] Figura 4 ilustra um exemplo do processo de obter valores de amostras preditos utilizando um procedimento de ponderação de distância.
[0045] Figura 5 mostra um exemplo de intrapredição vertical.
[0046] Figura 6 mostra um exemplo de intrapredição direcional enviesada.
[0047] Figura 7 é uma ilustração da dependência de um coeficiente de ponderação sobre o índice de coluna para uma dada linha.
[0048] Figura 8 é uma ilustração de pesos que são definidos para posições de amostra dentro de um bloco de 8×32 no caso de intrapredição diabolical.
[0049] Figura 9A é um fluxograma de dados de um processo de intrapredição de acordo com modalidades da presente invenção.
[0050] Figura 9B um fluxograma de dados de um processo de intrapredição acordo com modalidades alternativas da presente invenção.
[0051] Figura 10 é um fluxograma que ilustra o processamento para derivação de amostras de predição de acordo com modalidades da presente invenção.
[0052] Figura 11 é um fluxograma que ilustra o processamento para derivação de amostras de predição de acordo com modalidades adicionais da presente invenção.
[0053] Na seguinte descrição, referência é feita às figuras acompanhantes, as quais formam parte da descrição, e as quais mostram, por meio de ilustração, aspectos específicos de modalidades da invenção ou aspectos específicos nos quais as modalidades da presente invenção podem ser utilizadas. É compreendido que as modalidades da invenção podem ser utilizadas em outros aspectos e compreendem mudanças estruturais ou lógicas não apresentadas nas figuras. A descrição detalhada seguinte, portanto, não deve ser tomada em um sentido limitante, e o escopo da presente invenção é definido pelas reivindicações anexas.
[0054] Por exemplo, é compreendido que uma descrição em conexão com um método descrito pode também ser verdadeira para um dispositivo ou sistema correspondente configurado para executar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas de método específicas forem descritas, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para executar a uma ou uma pluralidade de etapas de método descritas (por exemplo, uma unidade executando uma ou uma pluralidade de etapas, ou uma pluralidade de unidades cada uma executando uma ou mais da pluralidade de etapas), mesmo se tais uma ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um dispositivo 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 executar a funcionalidade de uma ou uma pluralidade de unidades (por exemplo, uma etapa executando a funcionalidade de uma ou uma pluralidade de unidades, ou uma pluralidade de etapas, cada uma executando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou uma pluralidade de etapas não forem explicitamente descritas ou ilustradas nas figuras. Ainda, é compreendido que as características das várias modalidades exemplares e/ou aspectos aqui descritos podem ser combinadas umas com as outras, a menos que especificamente notado de outro modo.
[0055] A codificação de vídeo tipicamente refere-se ao processamento de uma sequência de imagens, as quais formam o vídeo ou sequência de vídeo. Ao invés do termo imagem, os termos quadro ou imagem podem ser utilizados como sinônimos no campo de codificação de vídeo. A codificação de vídeo compreende duas partes, codificação de vídeo e decodificação de vídeo. A codificação de vídeo é executada no lado da fonte, tipicamente compreendendo processar (por exemplo, por compressão) as imagens de vídeo originais para reduzir a quantidade de dados requerida para representar as imagens de vídeo (para um armazenamento e/ou transmissão mais eficiente). A decodificação de vídeo é executada no lado de destino e tipicamente compreende o processamento inverso comparado com o codificador para reconstruir as imagens de vídeo. As modalidades que referem à "codificação" de imagens de vídeo (ou imagens em geral, como será posteriormente explicado) deverão ser compreendidas referirem a tanto, "codificação" quanto "decodificação" de imagens de vídeo. A combinação da parte de codificação e da parte de decodificação é também referida como CODEC (COding e DECoding).
[0056] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). No caso de codificação de vídeo com perdas, uma compressão adicional, por exemplo, por quantização, é executada, para reduzir a quantidade de dados que representa as imagens de vídeo, as quais não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruída é mais baixa ou pior comparada com a qualidade das imagens de vídeo originais.
[0057] Diversos padrões de codificação de vídeo desde H.261 pertencem ao grupo de "codecs de vídeo híbridos com perdas" (isto é, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicar quantização no domínio da 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 executada em 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, utilizando predição espacial (intraimagem) e predição temporal (interimagem) para gerar um bloco de predição, subtrair o bloco de bloco de predição corrente (bloco correntemente processado / a ser processado) para obter um bloco residual, transformar o bloco residual e quantizar o bloco residual no domínio de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto que no decodificador o processamento inverso comparado com o codificador é aplicado no bloco codificado ou comprimido para reconstruir o bloco corrente para representação. Mais ainda, o codificador duplica o loop de processamento de decodificador de modo que ambos gerarão predições idênticas (por exemplo, intra e interpredições) e/ou reconstruções para processamento, isto é, codificação, dos blocos subsequentes.
[0058] Como processamento de imagem de vídeo (também referido como processamento de imagem móvel) e processamento de imagem estática (o termo processamento compreendendo codificação), compartilham muitos conceitos e tecnologias ou ferramentas, no seguinte o termo "imagem" ou "cena" e equivalente ao termo "dados de imagem" ou "dados de cena" é utilizado para referir a uma imagem de vídeo de uma sequência de vídeo (como acima explicado) e/ou a uma imagem estática para evitar repetições e distinções desnecessárias entre imagens de vídeo e imagens estáticas, onde não necessário. No caso da descrição referir-se a imagens estáticas (ou cenas estáticas) somente, o termo "imagem estática" deve ser utilizado.
[0059] Nas seguintes modalidades de um codificador 100, um decodificador 200 e um sistema de codificação 300 estão descritos com base nas Figuras 1 a 3.
[0060] A Figura 1 é um diagrama de blocos concepcional ou esquemático que ilustra uma modalidade de um sistema de codificação 300, por exemplo, um sistema de codificação de imagem 300, em que o sistema de codificação 300 compreende um dispositivo de fonte 310 configurado para prover dados codificados 330, por exemplo, uma imagem codificada 330, por exemplo, para um dispositivo de destino 320 para decodificar os dados codificados 330.
[0061] O dispositivo de fonte 310 compreende um codificador 100 ou unidade de codificação 100, e pode além disso, isto é, opcionalmente, compreender uma fonte de imagens 312, uma unidade de pré-processamento 314, por exemplo, uma unidade de pré- processamento de imagem 314, e uma interface de comunicação ou unidade de comunicação 318.
[0062] A fonte de imagens 312 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, para capturar uma imagem do mundo real, e/ou qualquer tipo de um dispositivo de geração de imagem, por exemplo, um processador de gráfico de computador para gerar uma imagem animada de computador, ou qualquer tipo de dispositivo para obter e/ou prover uma imagem do mundo real, uma imagem animada de computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer sua combinação (por exemplo, uma imagem de realidade aumentada (AR)). A seguir, todos estes tipos de imagens ou cenas e qualquer outro tipo de imagem ou cena serão referidos como "imagem" "cena" ou "dados de imagem" ou "dados de cena", a menos que de outro modo especificamente descrito, enquanto que as explicações anteriores com relação aos termos "imagem" ou "cena" que cobrem "imagens de vídeo" e "imagens estáticas", ainda são verdadeiras, a menos que explicitamente diferentemente especificado.
[0063] Uma imagem (digital) é ou pode ser considerada como uma rede ou matriz bidimensional de amostras com valores de intensidade. Uma amostra na rede pode também ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção (ou eixo geométrico) horizontal e vertical da rede ou imagem define o tamanho e/ou resolução da imagem. Para a representação de cor, tipicamente três componentes de cor são empregados, isto é, a imagem pode ser representada ou incluir três redes de amostra. No formato ou espaço de cor RGB, uma imagem compreende uma rede de amostras de vermelho, verde e azul correspondente. No entanto, em codificação de vídeo cada pixel está tipicamente representado em um formato ou espaço de cor de luminância / crominância, por exemplo, YCbCr, o qual compreende uma componente de luminância indicado por Y (algumas vezes também L é utilizado ao invés) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou abreviado luma) Y representa a luminosidade ou intensidade de nível de cinza (por exemplo, como em uma imagem de escala de cinza), enquanto os dois componentes de crominância (ou abreviado croma) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende uma rede de amostra de luminância de valores de amostras de luminância (Y), e duas redes de amostras de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas para o formato YCbCr e vice-versa, o processo é também conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender somente uma rede de amostras de luminância.
[0064] A fonte de imagens 312 pode ser, por exemplo, uma câmera para capturar uma imagem, uma memória, por exemplo, uma memória de imagem, que compreende ou armazena uma imagem anteriormente capturada ou gerada, e/ou qualquer tipo de interface (interna ou externa) para obter ou receber uma imagem. A câmera pode ser, por exemplo, uma câmera local ou integrada, integrada no dispositivo de fonte, a memória pode ser uma memória local ou integrada, por exemplo, integrada no dispositivo de fonte. A interface pode ser, por exemplo, uma interface externa para receber uma imagem de uma fonte de vídeo externa, por exemplo, um dispositivo de captura de imagem externo como uma câmera, uma memória externa, ou um dispositivo de geração de imagem externo, por exemplo, um processador, computador ou servidor de gráfico de computador externo. A interface pode ser qualquer tipo de interface, por exemplo, uma interface com fio ou sem fio, uma interface ótica, de acordo com um qualquer protocolo de interface de propriedade ou padronizado. A interface para obter os dados de imagem 313 pode ser a mesma interface que ou uma parte da interface de comunicação 318.
[0065] As interfaces entre unidades dentro de cada dispositivo incluem conexões de cabo, interfaces USB, interfaces de Comunicação 318 e 322 entre o dispositivo de fonte 310 e o dispositivo de destino 320 incluem conexões de cabo, interfaces USB, interfaces de rádio.
[0066] Em distinção à unidade de pré-processamento 314 e o processamento executado pela unidade de pré-processamento 314, a imagem ou dados de imagem 313 podem também ser referidos como imagem bruta ou dados de imagem brutos 313.
[0067] A unidade de pré-processamento 314 está configurada para receber os dados de imagem (brutos) 313 e executar pré- processamento nos dados de imagem 313 para obter uma imagem pré- processada 315 ou dados de imagem pré-processados 315. O pré- processamento executado pela unidade de pré-processamento 314 pode, por exemplo, compreender recortes, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor, ou eliminação de ruído.
[0068] O codificador 100 está configurado para receber os dados de imagem pré-processados 315 e prover dados de imagem codificados 171 (detalhes adicionais serão descritos, por exemplo, com base na Figura 2).
[0069] A interface de comunicação 318 do dispositivo de fonte 310 pode estar configurada para receber os dados de imagem codificados 171 e diretamente transmiti-los para outro dispositivo, por exemplo, o dispositivo de destino 320 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta, ou para processar os dados de imagem codificados 171 para respectivamente antes de armazenar os dados codificados 330 e/ou transmitir os dados codificados 330 para outro dispositivo, por exemplo, o dispositivo de destino 320 ou qualquer outro dispositivo para decodificação ou armazenamento.
[0070] O dispositivo de destino 320 compreende um decodificador 200 ou unidade de decodificação 200, e pode além, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 322, uma unidade de pós-processamento 326 e uma unidade de display 328.
[0071] A interface de comunicação 322 do dispositivo de destino 320 está configurada para receber os dados de imagem codificados 171 ou os dados codificados 330, por exemplo, diretamente do dispositivo de fonte 310 ou de qualquer outra fonte, por exemplo, uma memória, por exemplo, uma memória de dados de imagem codificados.
[0072] A interface de comunicação 318 e a interface de comunicação 322 podem estar configuradas para transmitir respectivamente receber os dados de imagem codificados 171 ou dados codificados 330 através de uma conexão de comunicação direta entre o dispositivo de fonte 310 e o dispositivo de destino 320, por exemplo, uma conexão com fios ou sem fio direta, incluindo uma conexão ótica ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer sua combinação, ou qualquer tipo de rede privada e pública, ou qualquer tipo de sua combinação.
[0073] A interface de comunicação 318 pode estar, por exemplo, configurada para empacotar os dados de imagem codificados 171 em um formato apropriado, por exemplo, pacotes, para transmissão através de uma conexão de comunicação ou rede de comunicação, e pode ainda compreender proteção de perda de dados.
[0074] A interface de comunicação 322, que forma a contraparte da interface de comunicação 318, pode estar, por exemplo, configurada para desempacotar os dados codificados 330 para obter os dados de imagem codificados 171 e pode ainda estar configurada para executar proteção de perda de dados e recuperação de perda de dados, por exemplo, compreendendo ocultação de erros.
[0075] Tanto a interface de comunicação 318 quanto a interface de comunicação 322 podem estar configuradas como interfaces de comunicação unidirecional como indicado pela seta para os dados de imagem codificados 330 na Figura 1 apontando do dispositivo de fonte 310 para o dispositivo de destino 320, ou interfaces de comunicação bidirecional, e podem estar configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e/ou reenviar dados perdidos ou retardados incluindo dados de imagem, e trocar quaisquer outras informações relativas à conexão de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0076] O decodificador 200 está configurado para receber os dados de imagem codificados 171 e prover dados de imagem decodificados 231 ou uma imagem decodificada 231.
[0077] O pós-processador 326 do dispositivo de destino 320 está configurado para pós-processar os dados de imagem decodificados 231, por exemplo, a imagem decodificada 231, para obter dados de imagem pós-processados 327, por exemplo, uma imagem pós- processada 327. O pós-processamento executado pela unidade de pós- processamento 326 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, recortes, ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 231 para exibição, por exemplo, pelo dispositivo de display 328.
[0078] O dispositivo de display 328 do dispositivo de destino 320 está configurado para receber os dados da imagem pós-processados 327 para exibir a imagem, por exemplo, para um usuário ou espectador. O dispositivo de display 328 pode ser ou compreender qualquer tipo de display para representar a imagem reconstruída, por exemplo, um display ou monitor integrado ou externo. Os displays podem, por exemplo, compreender tubos de raios catódicos (CRT), displays de cristal líquido (LCD), displays de plasma, displays de díodos de emissão de luz orgânicos (OLED) ou qualquer tipo de outro display, tal como projetores, displays holográficos, dispositivos para gerar hologramas ...
[0079] Apesar da Figura 1 apresentar o dispositivo de fonte 310 e o dispositivo de destino 320 como dispositivos separados, as modalidades de dispositivos podem também compreender ambas as funcionalidades, o dispositivo de fonte 310 ou a funcionalidade correspondente e o dispositivo de destino 320 ou a funcionalidade correspondente. Em tais modalidades, o dispositivo de fonte 310 ou funcionalidade correspondente e o dispositivo de destino 320 ou funcionalidade correspondente podem ser implementados utilizando o mesmo hardware e/ou software ou por hardware e/ou software separados ou qualquer sua combinação.
[0080] Como será aparente para a pessoa versada na técnica com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de fonte 310 e/ou dispositivo de destino 320 como mostrado na Figura 1 podem variar dependendo do dispositivo e aplicação reais.
[0081] A seguir, alguns exemplos não limitantes para o sistema de codificação 300, o dispositivo de fonte 310 e/ou dispositivo de destino 320, serão providos.
[0082] Vários produtos eletrônicos, tal como um smartphone, um tablet ou uma câmara portátil com display integrado podem ser vistos como exemplos para um sistema de codificação 300. Estes contêm um dispositivo de display 328 e a maioria destes contém uma câmara integrada, isto é, uma fonte de imagens 312, também. Os dados da imagem obtidos pela câmera integrada são processados e exibidos. O processamento pode incluir codificação e decodificação dos dados de imagem internamente. Além disso, os dados de imagem codificados podem ser armazenados em uma memória integrada.
[0083] Alternativamente, estes produtos eletrônicos podem ter interfaces com fio ou sem fio para receber dados de imagem de fontes externas, tal como a internet ou câmaras externas, ou transmitir os dados de imagem codificados para displays ou unidades de armazenamento externos.
[0084] Por outro lado, os decodificadores não contêm uma câmera ou um display integrado, mas executam processamento de imagem dos dados de imagem recebidos para exibição em um dispositivo de display externo. Tal decodificador pode ser incorporado por um chipset, por exemplo.
[0085] Alternativamente, um dispositivo similar a um decodificador pode estar incluído em um dispositivo de display, tal como um dispositivo de TV com display integrado.
[0086] Câmeras de vigilância sem um display integrado constituem um exemplo adicional. Estas representam um dispositivo de fonte com uma interface para a transmissão dos dados de imagem capturados e codificados para um dispositivo de display externo ou um dispositivo de armazenamento externo.
[0087] Ao contrário, dispositivos tais como óculos inteligentes ou óculos 3D, por exemplo, utilizados para AR ou VR, representam um dispositivo de destino 320. Estes recebem os dados de imagem codificados e os exibem.
[0088] Portanto, o dispositivo de fonte 310 e o dispositivo de destino 320, como mostrados na Figura 1, são apenas modalidades exemplares da invenção e as modalidades da invenção não estão limitadas a estas mostradas na Figura 1.
[0089] O dispositivo de fonte 310 e dispositivo de destino 320 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores notebook ou laptop, telefones móveis, smartphones, tablets ou computadores tablet , câmeras, computadores desktop, decodificadores, televisões, dispositivos de display, reprodutores de mídia digital, consoles de jogos de vídeo, dispositivos de fluxo de vídeo, dispositivo receptor de transmissão, ou similares. Para codificação e decodificação profissional de grande escala, o dispositivo de fonte 310 e/ou o dispositivo de destino 320 pode além disso compreender servidores e estações de trabalho, os quais podem estar incluídos em grandes redes. Estes dispositivos podem utilizar nenhum ou qualquer tipo de sistema operacional.
[0090] A Figura 2 mostra um diagrama de blocos esquemático / conceitual de uma modalidade de um codificador 100, por exemplo, uma codificador de imagem 100, o qual compreende uma entrada 102, uma unidade de cálculo residual 104, uma unidade de transformação 106, uma unidade de quantização 108, uma unidade de quantização inversa 110, e unidade de transformação inversa 112, uma unidade de reconstrução 114, um armazenamento temporário 116, um filtro de loop 120, um armazenamento temporário de imagens decodificadas (DPB) 130, uma unidade de predição 160, a qual inclui uma unidade de interestimação 142, uma unidade de interpredição 144, uma unidade de intraestimação 152, uma unidade de intrapredição 154 e uma unidade de seleção de modo 162, uma unidade de codificação de entropia 170 e uma saída 172. Um codificador de vídeo 100 como mostrado na Figura 8 pode também ser referido como codificador de vídeo híbrido ou codificador de vídeo de acordo com um codec de vídeo híbrido. Cada unidade pode consistir em um processador e uma memória não transitória para executar suas etapas de processamento executando um código armazenado na memória não transitória pelo processador.
[0091] Por exemplo, a unidade de cálculo residual 104, a unidade de transformação 106, a unidade de quantização 108 e a unidade de codificação de entropia 170 formam um percurso de sinal direto do codificador 100, enquanto que, por exemplo, a unidade de quantização inversa 110, a unidade de transformação inversa 112, a unidade de reconstrução 114, o armazenamento temporário 116, o filtro de loop 120, o armazenamento temporário de imagens decodificadas (DPB) 130, a unidade de interpredição 144, e a unidade de intrapredição 154 formam um percurso de sinal inverso do codificador, em que o percurso de sinal inverso do codificador corresponde ao percurso de sinal do decodificador para prover processamento inverso para reconstrução e predição idênticas (ver decodificador 200 na Figura 3).
[0092] O codificador está configurado para receber, por exemplo, pela entrada 102, uma imagem 101 ou um bloco de imagens 103 da imagem 101, por exemplo, uma imagem de uma sequência de imagens que formam um vídeo ou sequência de vídeo. O bloco de imagens 103 pode também ser referido como bloco de imagens corrente ou bloco de imagens a ser codificado, e a imagem 101 como imagem corrente ou imagem a ser codificada (especificamente em codificação de vídeo para distinguir a imagem corrente de outras imagens, por exemplo, imagens anteriormente codificadas e/ou descodificadas da mesma sequência de vídeo, isto é, a sequência de vídeo a qual também compreende a imagem corrente).
[0093] As modalidades do codificador 100 podem compreender uma unidade de particionamento (não apresentada na Figura 2), por exemplo, a qual também pode ser referida como unidade de particionamento de imagem, configurada para particionar a imagem 103 em uma pluralidade de blocos, por exemplo, blocos como o bloco 103, tipicamente em uma pluralidade de blocos não sobrepostos. A unidade de particionamento pode estar configurada para utilizar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a grade correspondente que define o tamanho do bloco, ou mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0094] Cada bloco da pluralidade de blocos pode ter dimensões quadradas ou dimensões retangulares mais gerais. Os blocos sendo áreas de imagem com formas não retangulares podem não aparecer.
[0095] Como a imagem 101, o bloco 103 novamente é ou pode ser considerado como uma rede ou matriz bidimensional de amostras com valores de intensidade (valores de amostras), apesar de menor dimensão do que a imagem 101. Em outras palavras, o bloco 103 pode compreender, por exemplo, uma rede de amostras (por exemplo, uma rede de luma no caso de uma imagem monocromática 101) ou três redes de amostras (por exemplo, uma rede de luma e duas redes croma no caso de uma imagem colorida 101) ou qualquer outro número e/ou tipo de redes dependendo do formato de cor aplicado. O número de amostras na direção (ou eixo geométrico) horizontal e vertical do bloco 103 define o tamanho do bloco 103.
[0096] O codificador 100 como mostrado na Figura 2 está configurado para codificar a imagem 101 bloco por bloco, por exemplo, a codificação e predição são executadas por bloco 103.
[0097] A unidade de cálculo residual 104 está configurada para calcular um bloco residual 105 com base no bloco de imagens 103 e um bloco de predição 165 (detalhes adicionais sobre o bloco de predição 165 estão posteriormente providos), por exemplo, subtraindo valores de amostras do bloco de predição 165 de valores de amostras do bloco de imagens 103, amostra por amostra (pixel por pixel) para obter o bloco residual 105 no domínio de amostra.
[0098] A unidade de transformação 106 está configurada para aplicar uma transformação, por exemplo, uma transformada de frequência espacial ou uma transformada espacial linear, por exemplo, uma transformada de cosseno discreta (DCT) ou uma transformada de seno discreta (DST), sobre os valores de amostras do bloco residual 105 para obter coeficientes transformados 107 em um domínio de transformada. Os coeficientes transformados 107 podem também ser referidos como coeficientes residuais transformados e representam o bloco residual 105 no domínio de transformada.
[0099] A unidade de transformação 106 pode estar configurada para aplicar aproximações de inteiro de DCT / DST, tal como as transformadas de núcleo especificadas para HEVC/H.265. Comparadas com uma transformada de DCT ortonormal, tais aproximações de inteiro são tipicamente escaladas por um certo fator. De modo a preservar a norma do bloco residual o qual é processado por transformadas diretas e inversas, fatores de escalagem adicionais são aplicados como parte do processo de transformada. Os fatores de escalagem são tipicamente escolhidos com base em certas restrições como fatores de escalagem sendo uma potência de dois para operação de deslocamento, profundidade de bits dos coeficientes transformados, compromisso entre precisão e custos de implementação, etc. Fatores de escalagem específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de transformação inversa 212, em um decodificador 200 (e a transformada inversa correspondente, por exemplo, pela unidade de transformação inversa 112 em um codificador 100) e fatores de escalagem correspondentes para a transformada direta, por exemplo, pela unidade de transformação 106, em um codificador 100 podem ser especificados consequentemente.
[0100] A unidade de quantização 108 está configurada para quantizar os coeficientes transformados 107 para obter coeficientes quantizados 109, por exemplo, aplicando quantização escalar ou quantização de vetor.
Os coeficientes quantizados 109 podem também ser referidos como coeficientes residuais quantizados 109. Por exemplo, para quantização escalar, diferentes escalagens podem ser aplicadas para conseguir uma quantização mais fina ou mais grosseira.
Tamanhos de etapa de quantização menores correspondem à quantização mais fina, enquanto que 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, por exemplo, ser um índice para um conjunto predefinido de tamanhos de etapas de quantização aplicáveis.
Por exemplo, pequenos parâmetros de quantização podem corresponder à quantização fina (pequenos tamanhos de etapas de quantização) e parâmetros de quantização grande podem corresponder à quantização grosseira (grandes tamanhos de etapas de quantização) ou vice-versa.
A quantização pode incluir uma divisão por um tamanho de etapa de quantização e desquantização correspondente ou inversa, por exemplo, por quantização inversa 110, pode incluir a multiplicação pelo tamanho de etapa de quantização.
As modalidades de acordo com HEVC (High- Efficiency Video Coding) podem ser configuradas para utilizar um parâmetro de quantização para determinar o tamanho de etapa de quantização.
Geralmente, o tamanho de etapa de quantificação pode ser calculado com base em um parâmetro de quantização que utiliza uma aproximação de ponto fixo de uma equação que inclui divisão.
Fatores de escalagem adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, o qual poderia ser modificado devido à escalagem utilizada na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização. Em uma implementação exemplar, a escalagem da transformada inversa e desquantização poderiam ser combinadas. Alternativamente, tabelas de quantização customizadas podem ser utilizadas e sinalizadas de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com tamanhos de etapas de quantização crescentes.
[0101] As modalidades do codificador 100 (ou respectivamente da unidade de quantização 108) podem ser configuradas para emitir os ajustes de quantização incluindo esquema de quantização e tamanho de etapa de quantização, por exemplo, por meio do parâmetro de quantização correspondente, de modo que um decodificador 200 possa receber e aplicar a quantização inversa correspondente. As modalidades do codificador 100 (ou unidade de quantização 108) podem estar configuradas para emitir o esquema de quantização e o tamanho de etapa de quantização, por exemplo, diretamente ou codificado em entropia através da unidade de codificação de entropia 170 ou qualquer outra unidade de codificação de entropia.
[0102] A unidade de quantização inversa 110 está configurada para aplicar a quantização inversa da unidade de quantização 108 sobre os coeficientes quantizados para obter coeficientes desquantizados 111, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 108 com base em ou utilizando o mesmo tamanho de etapa de quantização que a unidade de quantização 108. Os coeficientes desquantizados 111 podem também ser referidos como coeficientes residuais desquantizados 111 e correspondem - apesar de tipicamente não idênticos aos coeficientes transformados devido à perda por quantização - aos coeficientes transformados 108.
[0103] A unidade de transformação inversa 112 está configurada para aplicar a transformação inversa da transformação aplicada pela unidade de transformação 106, por exemplo, uma transformada de cosseno discreta inversa (DCT) ou transformada de seno discreta inversa (DST), para obter um bloco transformado inverso 113 no domínio de amostra. O bloco transformado inverso 113 pode também ser referido como bloco desquantizado transformado inverso 113 ou bloco residual transformado inverso 113.
[0104] A unidade de reconstrução 114 está configurada para combinar o bloco transformado inverso 113 e o bloco de predição 165 para obter um bloco reconstruído 115 no domínio de amostra, por exemplo, adicionando no sentido de amostra os valores de amostras do bloco residual decodificado 113 e os valores de amostras do bloco de predição 165.
[0105] A unidade de armazenamento temporário 116 (ou abreviado "armazenamento temporário" 116), por exemplo, um armazenamento temporário de linha 116, está configurado para armazenar temporário ou armazenar o bloco reconstruído e os respectivos valores de amostras, por exemplo, para intraestimação e/ou intrapredição. Em modalidades adicionais, o codificador pode estar configurado para utilizar blocos reconstruídos não filtrados e/ou os respectivos valores de amostras armazenados na unidade de armazenamento temporário 116 para qualquer tipo de estimação e/ou predição.
[0106] As modalidades do codificador 100 podem estar configuradas de modo que, por exemplo, a unidade de armazenamento temporário 116 não é somente utilizada para armazenar os blocos reconstruídos 115 para intraestimação 152 e/ou intrapredição 154, mas também para a unidade de filtro de loop 120, e/ou de modo que, por exemplo, a unidade de armazenamento temporário 116 e a unidade de armazenamento temporário de imagens decodificadas 130 formem um armazenamento temporário. Modalidades adicionais podem estar configuradas para utilizar blocos filtrados 121 e/ou blocos ou amostras do armazenamento temporário de imagens decodificadas 130 (ambos não mostrados na Figura 2) como entrada ou base para intraestimação 152 e/ou intrapredição 154.
[0107] A unidade de filtro de loop 120 (ou abreviado "filtro de loop" 120), está configurada para filtrar o bloco reconstruído 115 para obter um bloco filtrado 121, por exemplo, aplicando um filtro de deslocamento adaptável de amostra de bloqueio (SAO) ou outros filtros, por exemplo, filtros de aprimoramento ou suavização ou filtros colaborativos. O bloco filtrado 121 também pode ser referido como bloco reconstruído filtrado
121.
[0108] As modalidades da unidade de filtro de loop 120 podem compreender uma unidade de análise de filtro e a unidade de filtro real, em que a unidade de análise de filtro está configurada para determinar os parâmetros de filtro de loop para o filtro real. A unidade de análise de filtro pode estar configurada para aplicar parâmetros de filtro pré- determinados fixos no filtro de loop real, adaptavelmente selecionar parâmetros de filtro de um conjunto de parâmetros de filtro pré- determinados ou adaptavelmente calcular parâmetros de filtro para o filtro de loop real.
[0109] As modalidades da unidade de filtro de loop 120 podem compreender (não mostrado na Figura 2) um ou uma pluralidade de filtros (tais como componentes e/ou subfiltros de filtro de loop), por exemplo, um ou mais diferentes espécies ou tipos de filtros, por exemplo, conectados em série ou em paralelo ou em qualquer sua combinação, em que cada um dos filtros pode compreender individualmente ou juntamente com outros filtros da pluralidade de filtros uma unidade de análise de filtro para determinar os respectivos parâmetros de filtro de loop, por exemplo, como descrito no parágrafo anterior.
[0110] As modalidades do codificador 100 (respectivamente unidade de filtro de loop 120) podem estar configuradas para emitir os parâmetros de filtro de loop, por exemplo, diretamente ou codificados em entropia através da unidade de codificação de entropia 170 ou qualquer outra unidade de codificação de entropia, de modo que, por exemplo, um decodificador 200 possa receber e aplicar os mesmos parâmetros de filtro de loop para decodificação.
[0111] O armazenamento temporário de imagens decodificadas (DPB) 130 está configurado para receber e armazenar o bloco filtrado
121. O armazenamento temporário imagens decodificadas 130 pode estar ainda configurado para armazenar outros blocos anteriormente filtrados, por exemplo, blocos anteriormente reconstruídos e filtrados 121, da mesma imagem corrente ou de diferentes imagens, por exemplo, imagens anteriormente reconstruídas, e pode prover imagens anteriormente reconstruídas, isto é, descodificadas completas (e blocos e amostras de referência correspondentes) e/ou uma imagem corrente parcialmente reconstruída (e blocos e amostras de referência correspondentes), por exemplo, para interestimação e/ou interpredição.
[0112] Modalidades adicionais da invenção podem também estar configuradas para utilizar os blocos anteriormente filtrados e valores de amostras filtrados correspondente do armazenamento temporário de imagens decodificadas 130 para qualquer tipo de estimação ou predição, por exemplo, intraestimação e predição assim como interestimação e predição.
[0113] A unidade de predição 160, também referida como unidade de predição de bloco 160, está configurada para receber ou obter o bloco de imagens 103 (bloco de imagens corrente 103 da imagem corrente 101) e dados de imagem decodificados ou pelo menos reconstruída, por exemplo, amostras de referência da mesma imagem (corrente) do armazenamento temporário 116 e/ou dados de imagem decodificados 231 de uma ou uma pluralidade de imagens anteriormente decodificadas do armazenamento temporário de imagens decodificadas 130, e processar tais dados para predição, isto é, para prover um bloco de predição 165, o qual pode ser um bloco interpredito 145 ou um bloco intrapredito 155.
[0114] A unidade de seleção de modo 162 pode estar configurada para selecionar um modo de predição (por exemplo, um modo de intra ou interpredição) e/ou um bloco de predição correspondente 145 ou 155 para ser utilizado como o bloco de predição 165 para o cálculo do bloco residual 105 e para a reconstrução do bloco reconstruído 115.
[0115] As modalidades da unidade de seleção de modo 162 podem estar configuradas para selecionar o modo de predição (por exemplo, daqueles suportados pela unidade de predição 160), o qual provê a melhor coincidência ou em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou um excesso de sinalização mínimo (excesso de sinalização mínimo significa melhor compressão para transmissão ou armazenamento), ou o qual considera ou equilibra ambos. A unidade de seleção de modo 162 pode estar configurada para determinar o modo de predição com base em otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição o qual provenha uma otimização de distorção de taxa mínima ou o qual a taxa de distorção associada pelo menos atende um critério de seleção de modo predição.
[0116] A seguir o processamento de predição (por exemplo, unidade de predição 160) e seleção de modo (por exemplo, pela unidade de seleção de modo 162) executados por um codificador exemplar 100 serão explicados em mais detalhes.
[0117] Como acima descrito, o codificador 100 está configurado para determinar ou selecionar o melhor ou um ótimo modo de predição de um conjunto de modos de predição (pré-determinados). O conjunto de modos de predição pode compreender, por exemplo, modos intrapredição e/ou modos de interpredição.
[0118] O conjunto de modos intrapredição pode compreender 32 diferentes modos de intrapredição, por exemplo, modos não direcionais como modo DC (ou médio) e modo plano, ou modos direcionais, por exemplo, como definido em H.264, ou pode compreender 65 diferentes modos de intrapredição, por exemplo, modos não direcionais como modo DC (ou médio) e modo plano, ou modos direcionais, por exemplo, como definido em H.265.
[0119] O conjunto de (ou possíveis) modos de interpredição depende das imagens de referência disponíveis (isto é, imagens pelo menos parcialmente decodificadas anteriores, por exemplo, armazenadas no DPB 230) e outros parâmetros de interpredição, por exemplo, se toda a imagem de referência ou somente uma parte, por exemplo, uma área de janela de pesquisa ao redor da área do bloco corrente, da imagem de referência é utilizada para pesquisar por um bloco de referência de melhor coincidência, e/ou por exemplo, se interpolação de pixel é aplicada, por exemplo, interpolação half / semi- pel e/ou quarter-pel, ou não.
[0120] Ainda aos modos de predição acima, um modo de salto e/ou modo direto pode ser aplicado.
[0121] A unidade de predição 160 pode ainda estar configurada para particionar o bloco 103 em menores partições de bloco ou sub- blocos, por exemplo, iterativamente utilizando particionamento de árvore quádrupla (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer sua combinação, e executar, 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 103 e os modos de predição aplicados a cada uma das partições de blocos ou sub-blocos.
[0122] A unidade de interestimação 142, também referida como unidade de estimação de interimagem 142, está configurada para receber ou obter o bloco de imagens 103 (bloco imagens corrente 103 da imagem corrente 101) e uma imagem decodificada 231, ou pelo menos uma ou uma pluralidade de blocos anteriormente reconstruídos, por exemplo, blocos reconstruídos de uma ou uma pluralidade de outras / diferentes imagens anteriormente decodificadas 231, para interestimação (ou "estimação interimagem"). Por exemplo, uma sequência de vídeo pode compreender a imagem corrente e as imagens anteriormente decodificadas 231, em outras palavras, a imagem corrente e as imagens anteriormente decodificadas 231 podem ser parte de ou formar uma sequência de imagens que forma uma sequência de vídeo.
[0123] O codificador 100 pode, por exemplo, estar configurado para selecionar (obter / determinar) um bloco de referência de uma pluralidade de blocos de referência da mesma ou diferentes imagens da pluralidade de outras imagens e prover 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 corrente como parâmetros de interestimação 143 para a unidade de interpredição 144. Este deslocamento é também denominado de vetor movimento (MV). A interestimação é também referida como estimação de movimento (ME) e a interpredição também predição de movimento (MP).
[0124] A unidade de interpredição 144 está configurada para obter, por exemplo, receber, um parâmetro de interpredição 143 e para executar interpredição com base em ou utilizando o parâmetro de interpredição 143 para obter um bloco de interpredição 145.
[0125] Apesar da Figura 2 mostrar duas unidades (ou etapas) distintas para a intercodificação, a saber, interestimação 142 e interpredição 152, ambas as funcionalidades podem ser executadas como uma (a interestimação tipicamente requer / compreende calcular um/o bloco de interpredição, isto é, o ou um "tipo de" interpredição 154), por exemplo, testando todos possíveis ou subconjunto predeterminado de possíveis modos de interpredição iterativamente enquanto armazenando o modo de interpredição correntemente melhor e respectivo bloco de interpredição, e utilizando o modo de interpredição correntemente melhor e o respectivo bloco de interpredição como o parâmetro de interpredição (final) 143 e bloco de interpredição 145 sem executar outra vez a interpredição 144.
[0126] A unidade intraestimação 152 está configurada para obter, por exemplo, receber, o bloco de imagens 103 (bloco de imagens corrente) e um ou uma pluralidade de blocos anteriormente reconstruídos, por exemplo, blocos vizinhos reconstruídos, da mesma imagem para intraestimação. O codificador 100 pode, por exemplo, estar configurado para selecionar (obter / determinar) um modo de intrapredição de uma pluralidade de modos intrapredição e provê-lo como parâmetro de intraestimação 153 para a unidade intrapredição
154.
[0127] As modalidades do codificador 100 podem estar configuradas para selecionar o modo de intrapredição com base em um critério de otimização, por exemplo, residual mínimo (por exemplo, o modo de intrapredição provendo o bloco de predição 155 mais similar ao bloco de imagens corrente 103) ou distorção de taxa mínima.
[0128] A unidade intrapredição 154 está configurada para determinar com base no parâmetro de intrapredição 153, por exemplo, o modo de intrapredição selecionado 153, o bloco de intrapredição 155.
[0129] Apesar da Figura 2 mostrar duas unidades (ou etapas distintas) para a intracodificação, a saber, intraestimação 152 e intrapredição 154, ambas as funcionalidades podem ser executadas como uma (a intraestimação tipicamente requer / compreende calcular o bloco de intrapredição, isto é , o ou um "tipo de" intrapredição 154), por exemplo, testando todos os possíveis ou um subconjunto pré- determinado de possíveis modos intrapredição iterativamente enquanto armazenando o modo de intrapredição correntemente melhor e respectivo bloco de intrapredição, e utilizando o modo e intrapredição correntemente melhor e o respectivo bloco intrapredição como o parâmetro de intrapredição (final) 153 e bloco intrapredição 155 sem executar outra vez a intrapredição 154.
[0130] A unidade de codificação de entropia 170 está configurada para aplicar um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema de VLC adaptável a contexto (CALVC), um esquema de codificação aritmética, uma codificação aritmética binária adaptável a contexto (CABAC)) nos coeficientes residuais quantizados 109, parâmetros de interpredição 143, parâmetro de intrapredição 153, e/ou parâmetros de filtro de loop, individualmente ou juntamente (ou não de todo) para obter dados de imagem codificados 171 os quais podem ser emitidos pela saída 172, por exemplo, na forma de um fluxo de bits codificado 171.
[0131] A Figura 3 mostra um decodificador de vídeo exemplar 200 configurado para receber dados de imagem codificados (por exemplo, fluxo de bits codificado) 171, por exemplo, codificados pelo codificador 100, para obter uma imagem decodificada 231.
[0132] O decodificador 200 compreende uma entrada 202, uma unidade de decodificação de entropia 204, uma unidade de quantização inversa 210, uma unidade de transformação inversa 212, uma unidade de reconstrução 214, um armazenamento temporário 216, um filtro de loop 220, um armazenamento temporário de imagem decodificada 230, uma unidade de predição 260, a qual inclui uma unidade de interpredição 244, uma unidade de intrapredição 254, uma unidade de seleção de modo 260 e uma saída 232.
[0133] A unidade de decodificação de entropia 204 está configurada para executar a decodificação de entropia nos dados de imagem codificados 171 para obter, por exemplo, coeficientes quantizados 209 e/ou parâmetros de codificação decodificados (não mostrados na Figura 3), por exemplo, (decodificados) quaisquer ou todos os parâmetros de interpredição 143, parâmetro de intrapredição 153, e/ou parâmetros de filtro de loop.
[0134] Em modalidades do decodificador 200, a unidade de quantização inversa 210, a unidade de transformação inversa 212, a unidade de reconstrução 214, o armazenamento temporário 216, o filtro de loop 220, o armazenamento temporário de imagem decodificada 230, a unidade de predição 260 e a unidade de seleção de modo 260 estão configuradas para executar o processamento inverso do codificador 100 (e as respectivas unidades funcionais) para decodificar os dados de imagem codificados 171.
[0135] Especificamente, a unidade de quantização inversa 210 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de transformação inversa 212 pode ser idêntica em função à unidade de transformação inversa 112, a unidade de reconstrução 214 pode ser idêntica em função à unidade de reconstrução 114 , o armazenamento temporário 216 pode ser idêntico em função ao armazenamento temporário 116, o filtro de loop 220 pode ser idêntico em função ao filtro de loop 220 (em relação ao filtro de loop real, já que o filtro de loop 220 tipicamente não compreende uma unidade de análise de filtro para determinar os parâmetros de filtro com base na imagem original 101 ou bloco 103 mas recebe (explicitamente ou implicitamente) ou obtém os parâmetros de filtro utilizados para codificar, por exemplo, da unidade de decodificação de entropia 204), e o armazenamento temporário de imagem decodificada 230 pode ser idêntico em função ao armazenamento temporário de imagem decodificada 130.
[0136] A unidade de predição 260 pode compreender uma unidade de interpredição 244 e uma unidade de intrapredição 254, em que a unidade de interpredição 244 pode ser idêntica em função à unidade de interpredição 144, e a unidade de intrapredição 254 pode ser idêntica em função à unidade de intrapredição 154. A unidade de predição 260 e a unidade de seleção de modo 262 estão tipicamente configuradas para executar a predição de bloco e/ou obter o bloco predito 265 dos dados codificados 171 somente (sem nenhuma informação adicional sobre a imagem original 101) e receber ou obter (explicitamente ou implicitamente) os parâmetros de predição 143 ou 153 e/ou as informações sobre o modo de predição selecionado, por exemplo, da unidade de decodificação de entropia 204.
[0137] O decodificador 200 está configurado para emitir a imagem decodificada 231, por exemplo, através da saída 232, para apresentação ou visualização para um usuário.
[0138] Referindo de volta à Figura 1, a imagem decodificada 231 emitida do decodificador 200 pode ser pós-processada no pós- processador 326. A imagem pós-processada resultante 327 pode ser transferida para um dispositivo de display interno ou externo 328 e exibida.
[0139] De acordo com o padrão HEVC/H.265, 35 modos de intrapredição estão disponíveis. Este conjunto contém os seguintes modos: modo plano (o índice de modo de intrapredição é 0), modo DC (o índice do modo de intrapredição é 1), e modos direcionais (angulares) que cobrem a faixa de 180° e têm a faixa de valores de índice de modo de intrapredição 2 a 34. Para capturar as direções de borda arbitrárias presentes no vídeo natural, o número de modos intradirecionais pode ser estendido de 33, como utilizado em HEVC, para 65. Vale a pena notar que a faixa que é coberta pelos modos de intrapredição pode ser mais ampla do que 180°. Especificamente, 62 modos direcionais com valores de índice de 3 a 64 cobrem a faixa de aproximadamente 230°, isto é, diversos pares de modos têm direcionalidade oposta. No caso do Modelo de Referência HEVC (HM) e plataformas JEM, somente um par de modos angulares (a saber, modos 2 e 66) tem direcionalidade oposta. Para construir um preditor, modos angulares convencionais pegam amostras de referência e (se necessário) as filtram para obter um preditor de amostra. O número de amostras de referência requerido para construir um preditor depende do comprimento do filtro utilizado para interpolação (por exemplo, filtros bilineares e cúbicos têm comprimentos de 2 e 4, respectivamente).
[0140] De modo a aproveitar a disponibilidade de amostras de referência que são utilizadas no estágio de intrapredição, a intrapredição bidirecional (BIP) é introduzida. A BIP é um mecanismo de construir um preditor direcional gerando um valor de predição em combinação com dois tipos de modos de intrapredição dentro de cada bloco. Intrapredição de Direção Ponderada em Distância (DWDIP) é uma implementação específica de BIP. A DWDIP é uma generalização de intrapredição bidirecional que utiliza duas amostras de referência opostas para qualquer direção. Gerar um preditor por DWDIP inclui as seguintes duas etapas:
[0141] a) Inicialização onde as amostras de referência secundárias são geradas; e
[0142] b) Gerar um preditor utilizando um mecanismo de ponderado em distância.
[0143] Tanto amostras de referência primária quanto secundária podem ser utilizadas na etapa b). Amostras dentro do preditor são calculadas como uma soma ponderada de amostras de referência definidas pela direção de predição selecionada e colocadas em lados opostos. A predição de um bloco pode incluir etapas de gerar amostras de referência secundárias que estão localizadas nos lados do bloco que ainda não foram reconstruídos e a serem preditos, isto é, amostradas desconhecidas. Valores destas amostras de referência secundárias são derivados das amostras de referência primárias as quais são obtidos das amostras da parte anteriormente reconstruída da imagem, isto é, amostras conhecidas. Isto significa que amostras de referência primárias são retiradas de blocos reconstruídos adjacentes. Amostras de referência secundárias são geradas utilizando amostras de referência primárias. Pixels / amostras são preditos utilizando um mecanismo ponderado em distância.
[0144] Se DWDIP for habilitada, uma predição bidirecional é envolvida utilizando ou duas amostras de referência primárias (quando ambas as referências correspondentes pertencem a blocos vizinhos disponíveis) ou amostras de referência primárias e secundárias (de outro modo, quando uma das referências pertence a blocos vizinhos que não estão disponíveis).
[0145] A Figura 4 ilustra um exemplo do processo de obter valores de amostras preditos utilizando o procedimento de ponderação em distância. O bloco predito é adaptável à diferença entre as amostras de referência primárias e secundárias (𝑝rs1 − 𝑝rs0 ) ao longo de uma direção selecionada onde 𝑝rs0 representa um valor dos pixels / amostras de referência primários; 𝑝rs1 representa um valor dos pixels / amostras de referência secundários.
[0146] Na Figura 4, a amostra de predição poderia ser calculada diretamente, isto é: p i , j p rs0 wprim p rs1 wsec p rs0 wprim p rs1 1 wprim wprim wsec 1
[0147] As amostras de referência secundárias p rs1 são calculadas como uma soma ponderada de interpolação linear entre duas amostras de referência primárias posicionadas no canto ( p grad ) e interpolação direcional de amostras de referência primárias utilizando um modo intrapredição selecionado ( p rs0 ): p rs1 p rs0 winterp p grad wgrad p rs0 winterp p grad 1 winterp winterp wgrad 1 .
[0148] A combinação destas equações fornece o seguinte: p i , j p rs0 wprim p rs0 winterp p grad 1 winterp 1 wprim p i , j p rs0 wprim p rs0 winterp p grad 1 winterp p rs0 wprim winterp p grad 1 winterp wprim p i , j p rs0 wprim wprim winterp winterp p grad 1 winterp p grad 1 winterp wprim p i , j p rs0 wprim wprim winterp winterp p grad 1 winterp wprim winterp wprim
[0149] A última equação poderia ser simplificada denotando w 1 w prim w prim winterp winterp , em específico: p i , j p rs0 (1 w ) p grad w
[0150] Assim, um valor de pixel predito utilizando DWDIP é calculado como segue: p i , j p rs0 w p grad p rs0
[0151] Aqui, as variáveis i e j são índices de coluna / linha que correspondem a x e y utilizados na Figura 4. O peso w(i,j) = drs0/D que representa a razão de distância é derivado de valores tabulados em que 𝑑𝑟𝑠0 representa a distância da amostra predita para uma amostra de referência primária correspondente, D representa a distância da amostra de referência primária para a amostra de referência secundária. No caso, quando as amostras de referência primária e secundária são utilizadas, este peso compensa a interpolação direcional de amostras de referência primária utilizando um modo de intrapredição selecionado de modo que prs1 compreende somente a parte linearmente interpolada.
[0152] Consequentemente, p rs1 p grad , e portanto: p x , y p rs0 w p rs1 p rs0
[0153] Uma complexidade computacional significativa é requerida para calcular os coeficientes de ponderação w (i, j) que dependem da posição de um pixel dentro de um bloco a ser predito, isto é, as distâncias de ambos os lados de referência (limites de bloco) ao longo da direção selecionada. Para simplificar os cálculos, um cálculo direto das distâncias é substituído por estimativas implícitas de distâncias utilizando os índices de coluna ou/e linha do pixel. Como proposto no Pedido de Patente US, US 2014/0092980 A1 "Método e dispositivo de intrapredição direcional", os valores de coeficiente de ponderação selecionados de acordo com a direção de predição e o índice de coluna j do pixel corrente para direções de predição horizontal inclinadas.
[0154] Em exemplos de DWDIP, uma aproximação linear por partes foi utilizada que permite atingir uma precisão suficientemente alta sem uma complexidade computacional muito alta que é crucial para as técnicas de intrapredição. Detalhes sobre o processo de aproximação serão providos abaixo.
[0155] É ainda notado que para a direção vertical de intrapredição, o coeficiente de ponderação w = drs0/D terá o mesmo valor para todas as colunas de uma linha, isto é, não dependerá do índice de coluna i.
[0156] A Figura 5 ilustra um exemplo de intrapredição vertical. Na Figura 5, círculos representam centros de posições de amostras. Especificamente, aqueles hachurados cruzados 510 marcam as posições de amostras de referência primárias, aqueles diagonalmente hachurados 610 marcam as posições de amostras de referência secundárias e aqueles abertos 530 representam posições dos pixels preditos. O termo "amostra" nesta descrição é utilizado para incluir, mas não limitado a amostra, pixel, subpixel, etc. Para predição vertical, o coeficiente w muda gradualmente da linha mais superior para a linha mais inferior dentro da etapa: 1 210 𝑤row = ≈ , 𝐷 𝐻+1
[0157] Nesta expressão, D é a distância entre os pixels / amostras de referência primários / e os pixels / amostras de referência secundários; H é a altura de um bloco em pixels, 210 é um grau de precisão de uma representação de inteiro da etapa de linha de coeficiente de ponderação 𝑤row .
[0158] Para o caso de modos de intrapredição vertical, um valor de pixel predito é calculado como segue: 𝑝[𝑥, 𝑦] = 𝑝rs0 + (𝑤𝑦 ∙ (𝑝rs1 − 𝑝rs0 ) ≫ 10) = 𝑝rs0 + (𝑦 ∙ ∆𝑤row ∙ (𝑝rs1 − 𝑝rs0 ) ≫ 10)
[0159] onde 𝑝rs0 representa o valor dos pixels / amostras de referência primários; 𝑝rs1 representa o valor dos pixels / amostras de referência secundários, [𝑥, 𝑦] representa uma localização do pixel predito, 𝑤𝑦 representa um coeficiente de ponderação para a dada linha 𝑦. O símbolo ">>" significa "deslocamento à direita no sentido de bit".
[0160] A Figura 6 é um exemplo de intrapredição direcional enviesada. Os modos enviesados incluem um conjunto de modos de intrapredição angulares excluindo aqueles horizontal e vertical. Os modos de intrapredição direcional enviesados parcialmente utilizam um mecanismo similar do cálculo do coeficiente de ponderação. O valor do coeficiente de ponderação permanecerá o mesmo, mas somente dentro de uma faixa de colunas. Esta faixa é definida por duas linhas 500 que cruzam os cantos superior esquerdo e inferior direito do retângulo delimitador (ver Figura 6) e têm a inclinação como especificado pelo par (dx, dy) do modo intrapredição sendo utilizado.
[0161] Estas linhas enviesadas dividem o retângulo delimitador do bloco predito em três regiões: dois triângulos iguais (A, C) e um paralelogramo (B). Amostras com posições dentro do paralelogramo serão preditas utilizando pesos da equação de intrapredição vertical as quais, como acima explicado com referência à Figura 5, são independentes do índice de coluna (i). A predição do restante das amostras é executada utilizando coeficientes de ponderação que mudam gradualmente juntamente com o índice de coluna. Para uma dada linha, o peso depende da posição da amostra, como está mostrado na Figura 7. Uma linha enviesada é uma linha que exclui aquelas vertical e horizontal. Em outras palavras, a linha enviesada é uma linha não vertical ou uma linha não horizontal.
[0162] Um coeficiente de ponderação para uma amostra de uma primeira linha dentro do paralelogramo é o mesmo que um coeficiente de ponderação para outra amostra da primeira linha dentro do paralelogramo. A diferença de coeficiente de linha ∆𝑤row é uma diferença entre o coeficiente de ponderação para a primeira linha e um coeficiente de ponderação para uma segunda linha dentro do paralelogramo, em que a primeira linha e a segunda linha são vizinhas dentro do paralelogramo.
[0163] A Figura 7 é uma ilustração da dependência do coeficiente de ponderação sobre o índice de coluna para uma dada linha. Os lados esquerdo e direito dentro do paralelogramo são denotados como 𝑥left e 𝑥right , respectivamente. A etapa da mudança de coeficiente de ponderação dentro de uma forma triangular é denotada como ∆𝑤tri . ∆𝑤tri é também é referido como diferença de coeficiente de ponderação entre um coeficiente de ponderação de uma amostra e um coeficiente de ponderação de sua amostra vizinha. Como mostrado na Figura 7, uma primeira diferença de coeficiente de ponderação para uma primeira amostra dentro da região de triângulo é ∆𝑤tri , e uma segunda diferença de coeficiente de ponderação para uma segunda amostra dentro da região de triângulo é também ∆𝑤tri . Diferentes diferenças de coeficiente de ponderação têm um mesmo valor ∆𝑤tri no exemplo da Figura 8. A amostra e sua amostra vizinha estão dentro de uma mesma linha neste exemplo da Figura 8. Esta diferença de coeficiente de ponderação ∆𝑤tri é obtida com base na diferena de coeficiente de linha e um ângulo 𝛼 da intrapredição. Como um exemplo, ∆𝑤tri pode ser obtido como segue: 𝑠𝑖𝑛2𝛼 ∆𝑤tri = ∆𝑤row 2 dy
[0164] O ângulo da predição 𝛼 é definido como 𝛼 = arctan . A dx implementação utiliza valores tabulados para cada modo de intrapredição: 10 2 K tri round ( sin 2 ) round ( 512 sin 2 ) 2 .
[0165] Com isto, ∆𝑤tri = (𝐾tri ∆𝑤row + (1 ≪ 4)) ≫ 5
[0166] onde "<< " e " >> " são operadores de deslocamento binário esquerdo e direito, respectivamente.
[0167] Após a diferença de coeficiente de ponderação ∆𝑤tri ser obtida, um coeficiente de ponderação 𝑤(𝑖, 𝑗) pode ser obtido com base em ∆𝑤tri . Uma vez que o coeficiente de ponderação 𝑤(𝑖, 𝑗) é derivado, um valor de pixel 𝑝[𝑥, 𝑦] pode ser calculado com base em 𝑤(𝑖, 𝑗).
[0168] A Figura 7 é um exemplo. Como outro exemplo, a dependência do coeficiente de ponderação no índice de linha para uma dada coluna pode ser provida. Aqui, ∆𝑤tri é uma diferença de coeficiente de ponderação entre um coeficiente de ponderação de uma amostra e um coeficiente de ponderação de sua amostra vizinha. A amostra e sua amostra vizinha estão dentro da mesma coluna.
[0169] Aspectos dos exemplos acima estão descritos no documento de contribuição CE3.7.2 "Distance-Weighted Directional Intra Prediction (DWDIP)", by A. Filippov, V. Rufitskiy, and J. Chen, Contribution JVET- K0045 to the 11th meeting of the Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, Ljubljana,
Slovenia, July 2018. http://phenix.it- sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET- K0045-v2.zip.
[0170] A Figura 8 ilustra os pesos associados com as segundas amostras de referência para um bloco que tem uma largura igual a 8 amostras e uma altura igual a 32 amostras no caso quando a direção da intrapredição é diagonal e o ângulo de predição é 45° em relação ao canto superior esquerdo do bloco. Aqui, o tom mais escuro corresponde a um menor peso e o tom mais claro corresponde a maiores valores de peso. Os pesos mínimo e máximo estão localizados ao longo dos lados esquerdo e direito do bloco, respectivamente.
[0171] Nos exemplos acima, utilizando intrapredição com base em uma soma ponderada de valores de amostras de referência primária e secundária apropriados, ainda cálculos complicados são necessários, já para a geração dos valores de amostras de referência secundários por interpolação.
[0172] Por outro lado, como os valores de referência secundários prs1 compreendem somente a parte linearmente interpolada, a utilização de interpolação (especialmente um multi-derivado) e a ponderação é redundante. Amostras preditas apenas de prs1 também mudam gradualmente. Assim, é possível calcular os valores dos incrementos na direção vertical e horizontal sem cálculo explícito de prs1 utilizando apenas amostras de referência primárias localizadas nos blocos vizinhos reconstruídos próximos dos cantos superior direito (pTR) e inferior esquerdo (pBL) do bloco a ser predito.
[0173] A presente invenção propõe calcular um valor de incremento para uma dada posição (X, Y) dentro de um bloco a ser predito e aplicar o incremento correspondente apenas após a interpolação das amostras de referência primária ser completa.
[0174] Em outras palavras, a presente invenção completamente evita a necessidade de calcular amostras de referência secundárias que envolvem interpolação e ao invés gera predições de valores de pixel no bloco corrente adicionando valores de incremento que dependem pelo menos da posição de um pixel predito no bloco corrente. Especificamente, isto pode envolver repetidamente adicionar operações em um loop iterativo. Detalhes de modalidades serão descritos a seguir com referência às Figuras 9 a 11.
[0175] Duas variantes do fluxo de processamento total para privação de amostras de predição de acordo com as modalidades da presente invenção estão ilustradas nas Figuras 9A e 9B. Estas variantes diferem uma da outra pela entrada para a etapa de incrementos de computação para o componente gradual. O processamento na Figura 9A utiliza amostras vizinhas não filtradas, enquanto que a Figura 9B utiliza aquelas filtradas.
[0176] Mais especificamente, de acordo com o processamento ilustrado na Figura 9A, os valores de amostras de referência (resumidos aqui como Sp) sofrem uma filtragem de amostra de referência na etapa
900. Como acima indicado, esta etapa é opcional. Em modalidades da invenção, esta etapa pode ser omitida e os valores de amostras de referência "primários" vizinhos podem ser diretamente utilizados para a seguinte etapa 910. Na etapa 910, a predição preliminar dos valores de pixel é calculada com base nos valores de amostras de referência (opcionalmente filtrados) dos blocos vizinhos reconstruídos, Sp. Este processo, assim como o processo de filtragem opcional não é modificado se comparado com o respectivo processamento convencional. Especificamente, tais etapas de processamento são bem conhecidas dos padrões de codificação de vídeo existentes (por exemplo, H.264, HEVC etc.). O resultado deste processamento está aqui resumido como Sref.
[0177] Em paralelo, os valores de amostras de referência conhecidos do bloco vizinho são utilizados para computar componentes de incremento gradual na etapa 920. Os valores de componente de incremento gradual calculado, gx e gy, podem, especificamente, representar "incrementos parciais" a serem utilizados em um procedimento iterativo que será abaixo ilustrado em mais detalhes com referência às Figuras 10 e 11.
[0178] De acordo com modalidades exemplares aqui descritas, os valores gx e gy podem ser calculados como segue: Para um bloco a ser predito tendo tbW amostras em largura e tbH amostras em altura, os incrementos de componentes graduais poderiam ser computados utilizando as seguintes equações: p TR p BL g x 2 2 tbW p BL p TR g y 2 2 tbH
[0179] Como acima indicado, pBL e pTR representam valores de amostras de referência ("primários") em posições próximas do canto superior direito e inferior esquerdo do bloco corrente (mas dentro de blocos vizinhos reconstruídos). Tais posições estão indicadas na Figura
5.
[0180] Consequentemente, os valores de incremento de acordo com uma modalidade da presente invenção dependem somente de dois valores de amostras de referência fixos de blocos vizinhos disponíveis, isto é, conhecidos (reconstruídos), assim como os parâmetros de tamanho (largura e altura) do bloco corrente. Estes não dependem de quaisquer valores de amostras de referência "primários".
[0181] Na seguinte etapa 930, os valores de amostra de predição (finais) são calculados com base tanto nos valores de amostras de predição preliminares quanto nos valores de incremento computados. Esta etapa será abaixo descrita com referência às Figuras 10 e 11.
[0182] O processamento alternativo ilustrado na Figura 9B difere do processamento na Figura 9A em que os valores de incrementos parciais são criados com base em valores de amostras de referência filtrados. Portanto, a respectiva etapa foi projetada com um diferente número de referência, 920'. Similarmente, a etapa de derivação final das amostradas de predição (finais), a qual está baseada no valor de incremento é determinada na etapa 920', foi dado um numeral de referência 930', de modo a ser distinguido da respectiva etapa na Figura 9B.
[0183] Um possível processo para derivar as amostras de predição de acordo com as modalidades da presente invenção está mostrado na Figura 10.
[0184] De acordo com esta, um procedimento iterativo para gerar os valores de predição finais para a amostra nas posições (x, y) é explicado.
[0185] O fluxo de processamento começa na etapa 1000, em que valores iniciais do incremento são providos. Estes são os valores definidos acima gx e gy são considerados como os valores iniciais para o cálculo do incremento.
[0186] Na etapa seguinte 1010, a sua soma é formada, designada como parâmetro grow.
[0187] A etapa 1020 é a etapa de começo de um primeiro loop de iteração ("externo"), a qual é executada para cada posição de amostra (inteiro) na direção de altura, isto é, de acordo com o eixo geométrico "y" de acordo com a convenção adotada na presente descrição.
[0188] Na presente descrição, a convenção é utilizada, de acordo com a qual uma denotação como para x ∈ [x0; x1)
[0189] indica que o valor de x está sendo incrementado por 1, começando de x0 e terminando com x1. O tipo de colchete denota se um valor de limite de faixa está dentro ou fora da faixa de loop. Os colchetes retangulares "[" e "]" significam que um valor limite de faixa correspondente é a faixa de loop e deve ser processado dentro deste loop. Parênteses "(" e ")" denotam, que um valor limite de faixa correspondente está fora do escopo e deve ser pulado quando iterando sobre a faixa especificada. O mesmo se aplica mutatis mutandis a outras denotações deste tipo.
[0190] Na etapa seguinte 1030, o valor de incremento, g, é inicializado com o valor grow.
[0191] A etapa subsequente 1040 é a etapa de início de um segundo loop de iteração ("interno"), o qual é executado para cada posição de amostra (inteiro) na direção de largura, isto é, de acordo com o eixo geométrico "x" de acordo com a convenção adotada na presente descrição.
[0192] A seguinte etapa, 1050, a derivação das amostras de predição preliminares é executada, com base nos valores de amostras de referência ("primários") disponíveis somente. Como acima indicado, isto é feito em um modo convencional, e uma sua descrição detalhada está portanto aqui omitida. Esta etapa assim corresponde à etapa 910 da Figura 9.
[0193] O valor de incremento g é adicionado ao valor de amostra de predição preliminar, designado como predSamples[x, y] aqui, na etapa seguinte 1060.
[0194] Na etapa subsequente 1070, o valor de incremento é aumentado pelo valor de incremento parcial gx e utilizado como a entrada para a próxima iteração ao longo do eixo geométrico x, isto é, na direção de largura. Em um modo similar, após todas as posições de amostras na direção de largura terem sido processadas no modo descrito, o parâmetro grow é aumentado pelo valor de incremento parcial gy na etapa 1080.
[0195] Por meio disto é garantido que em cada iteração, isto é, para cada mudança da posição de amostra a ser predita por um valor inteiro na direção vertical (y) ou horizontal (x), o mesmo valor é adicionado ao incremento. O incremento total assim linearmente depende da distância vertical assim como da horizontal das bordas (x = 0 e y = 0, respectivamente).
[0196] De acordo com implementações alternativas, a presente invenção pode também considerar a forma de bloco e a direção de intrapredição, subdividindo um bloco corrente em regiões no mesmo modo como acima ilustrado com referência às Figuras 6 e 7. Um exemplo de tal processamento está ilustrado na Figura 11.
[0197] Aqui, é assumido que o bloco está subdividido em três regiões, como ilustrado na Figura 6, por duas linhas enviesadas 500. Como as posições de intersecção das linhas enviesadas de divisão 500 com as linhas de pixels, xleft e xright, são geralmente fracionárias, estas têm uma precisão de subpixel "prec". Em uma implementação prática, prec é 2k, com car sendo um número natural (inteiro positivo). No fluxograma da Figura 11, os valores fracionários xleft e xright são aproximados por valores inteiros pleft e pright como segue: x x p left left , p right right . prec prec
[0198] No fluxograma, uma linha de amostras preditas é processada dividindo-a em três regiões, isto é, a região triangular A à esquerda, a região de paralelogramo B no meio e a região triangular C à direita. Este processamento corresponde às três ramificações paralelas ilustradas na porção inferior da Figura 11, cada uma incluindo um loop "interno". Mais especificamente, a ramificação no lado esquerdo, que corre de x = 0 até pleft, corresponde à região esquerda, A da Figura 6. A ramificação no lado direito, que corre de pleft até pright corresponde ao processamento na região média, B. A ramificação no meio, que corre sobre os valores de x de pright até tbW corresponde ao processamento na região direita,
C. Como será abaixo visto, cada uma destas regiões utiliza seus próprios valores de incrementos pré-computados.
[0199] Para este propósito, na etapa de inicialização 1100, além de gx e gy, um valor adicional, gx_tri é inicializado.
[0200] O valor de g x_tri é obtido de g x utilizando o ângulo de intrapredição : sin( 2 ) g x_tri g x 2
[0201] Para evitar operações de ponto flutuante, e cálculos de função seno, uma tabela de consulta poderia ser utilizada. Esta poderia ser ilustrado pelo exemplo seguinte que assume o seguinte:
[0202] - Índices de modo intrapredição são mapeados para ângulos de direção de predição, como definido no software VVC/BMS para o caso de 65 modos intrapredição direcional.
[0203] - a tabela de consulta sin 2a_half é definida como segue: sin2a_half[16]= {512, 510, 502, 490, 473, 452, 426, 396, 362, 325, 284, 241, 196, 149, 100, 50, 0};
[0204] Para as suposições acima mencionadas, g x_tri poderia ser derivado como segue: g x_tri sign ( ) (( g x sin 2a_half [ ] 512 ) 10 ) .
[0205] Nesta equação é a diferença entre o índice de modo de intrapredição direcional e ou o índice de modo vertical ou o índice de modo horizontal. A decisão sobre qual modo é utilizado nesta diferença depende se o lado de predição principal é uma linha superior de amostras de referência primárias, ou é uma coluna esquerda de amostras de referência primárias. No primeiro caso m m VER , e no segundo caso m HOR m .
[0206] m é o índice de modo de intrapredição selecionado para o bloco sendo predito. m VER , m HOR são índices de modos de intrapredição vertical e horizontal, respectivamente.
[0207] No fluxograma, o parâmetro grow é inicializado e incrementado no mesmo modo que no fluxograma da Figura 10. Também, o processamento no loop "externo", na direção de altura (y), é o mesmo que na Figura 10. As respectivas etapas de processamento, 1010, 1020 e 1080 foram portanto designadas com os mesmos números de referência que na Figura 10 e a repetição de sua descrição está aqui omitida.
[0208] Uma diferença entre o processamento no loop "interno", na direção de largura (x) primeiramente reside em que cada uma das versões de loop indicadas em paralelo é somente executada na respectiva região. Isto está indicado pelos respectivos intervalos nas etapas de início 1140, 1145, e 1147.
[0209] Mais ainda, o valor de incremento real, g, é definido "localmente". Isto significa que a modificação do valor em uma das ramificações não afeta os respectivos valores da variável g utilizada nas outras ramificações.
[0210] Isto pode ser visto das respectivas etapas iniciais, antes do loop começar, assim como nas etapas finais dos loops iniciais, em que o valor variável g é incrementado. Na ramificação do lado direito, a qual é utilizada na região do paralelogramo B, o respectivo processamento é executado no mesmo modo que na Figura 10. Portanto, os respectivos números de referência 1030, 1050, 1060, e 1070 que indicam as etapas permanecem inalterados.
[0211] Na ramificação esquerda e na média para as duas regiões triangulares, a etapa de inicialização do parâmetro g é diferente. A saber, esta leva em conta o ângulo da direção de intrapredição, por meio do parâmetro gx_tri que foi introduzido acima. Isto está indicado pelas fórmulas nas respectivas etapas 1130 e 1135 na Figura 11.
Consequentemente, nestas duas ramificações, a etapa 1070 de incrementar o valor g é substituída pela etapa 1170, em que o parâmetro g é incrementado por gx_tri para cada iteração. O restante das etapas, 1050 e 1060, é novamente o mesmo como isto foi acima descrito com relação à Figura 10.
[0212] Implementações do assunto e as operações descritas nesta descrição podem ser implementadas em circuitos eletrônicos digitais, ou em software de computador, firmware, ou hardware, incluindo as estruturas descritas nesta descrição e seus equivalentes estruturais, ou em combinações de um ou mais destes. As implementações do assunto descrito nesta descrição podem ser implementadas como um ou mais programas de computador, isto é, um ou mais módulos de instruções de programa de computador, codificadas no meio de armazenamento de computador para execução por, ou para controlar a operação do dispositivo de processamento de dados. Alternativamente ou além disso, as instruções de programa podem ser codificadas em um sinal propagado artificialmente gerado, por exemplo, um sinal elétrico, ótico ou eletromagnético gerado por máquina que é gerado para codificar as informações para transmissão para um dispositivo receptor adequado para execução por um dispositivo de processamento de dados. Um meio de armazenamento de computador, por exemplo, o meio legível por computador, pode ser, ou pode estar incluído em, um dispositivo de armazenamento legível por computador, um substrato de armazenamento legível por computador, uma rede ou dispositivo de memória de acesso randômico ou serial, ou uma combinação de um ou mais destes. Mais ainda, apesar de um meio de armazenamento de computador não ser um sinal propagado, um meio de armazenamento de computador pode ser uma fonte ou destino de instruções de programa de computador codificadas em um sinal propagado artificialmente gerado. O meio de armazenamento de computador pode também ser, ou estar incluído em, um ou mais componentes ou meios físicos e/ou não transitórios separados (por exemplo, múltiplos CDs, discos, ou outros dispositivos de armazenamento).
[0213] É enfatizado que os exemplos específicos acima são dados para ilustração somente e a presente invenção como definida pelas reivindicações em anexo não está em nenhum modo limitada a estes exemplos. Por exemplo, de acordo com modalidades, o processamento poderia ser executado analogicamente, quando as direções horizontal e vertical são mudadas, isto é, o loop "externo" é executado ao longo da direção x e o loop "interno" é executado ao longo da direção y. Modificações adicionais são possíveis dentro do escopo das informações anexas.
[0214] Em resumo, a presente invenção refere-se a um aperfeiçoamento de métodos de interpredição bidirecional conhecidos. De acordo com a presente invenção, ao invés de interpolação de amostras de referência secundárias, para calcular amostras em intrapredição, um cálculo baseado em valores de amostras de referência "primários" somente é utilizado. O resultado é então refinado adicionando um incremento o qual depende pelo menos da posição do pixel (amostra) dentro do bloco corrente e pode ainda depender da forma e tamanho do bloco e da direção de predição mas não depende de nenhum valor de amostra de referência "secundário" adicional. O processamento de acordo com a presente invenção é assim menos computacionalmente complexo porque este utiliza um único procedimento de interpolação ao invés de fazê-lo duas vezes: para amostras de referência primárias e secundárias.
[0215] Note que este relatório descritivo provê explicações para imagens (quadros), mas campos substituídos como imagens no caso de um sinal de imagem entrelaçado.
[0216] Apesar de modalidades da invenção terem sido primariamente descritas com base em codificação de vídeo, deve ser notado que modalidades do codificador 100 e decodificador 200 (e correspondentemente o sistema 300) podem também 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 somente a interestimação 142, interpredição 144, 242 não estão disponíveis no caso de codificação de processamento de imagem ser limitado a uma única imagem 101. A maioria senão todas outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 100 e decodificador de vídeo 200 podem igualmente ser utilizadas para imagens estáticas, por exemplo, particionamento, transformação (escalagem) 106, quantização 108, quantização inversa 110, transformação inversa 112, intraestimação 142, intrapredição 154, 254 e/ou loop filtragem 120, 220, e codificação de entropia 170 e decodificação de entropia 204.
[0217] Sempre que as modalidades e a descrição referem ao termo "memória", o termo "memória" deverá ser compreendido e/ou deverá compreender um disco magnético, um disco ótico, uma unidade de estado sólido (SSD), uma memória somente de leitura (Read-Only Memory, ROM), uma memória de acesso randômico (Random Access Memory, RAM), uma unidade instantânea USB, ou qualquer outro tipo de memória adequado, a menos que explicitamente declarado de outro modo.
[0218] Sempre que as modalidades e a descrição referem ao termo "rede", o termo "rede" deverá ser compreendido e/ou deverá compreender qualquer tipo de rede sem fio ou com fio, tal como Rede de Área Local (LAN), LAN Sem Fio (WLAN) Rede de Área Ampla (WAN), uma Ethernet, a Internet, redes móveis etc., a menos que explicitamente declarado de outro modo.
[0219] A pessoa versada na técnica compreenderá que os "blocos" ("unidades" ou "módulos") das várias figuras (método e dispositivo) representam ou descrevem funcionalidades de modalidades da invenção (ao invés de necessariamente "unidades" individuais em hardware ou software) e assim descrevem igualmente funções ou características de modalidades de dispositivo assim como modalidades de método (unidade = etapa).
[0220] A terminologia de "unidades" é meramente utilizada para propósitos ilustrativos da funcionalidade de modalidades do codificador / decodificador e não pretende limitar a descrição.
[0221] Nas diversas modalidades providas no presente pedido, deve ser compreendido que o sistema, dispositivo, e método descritos podem ser implementados em outros modos. Por exemplo, a modalidade de dispositivo descrita é meramente exemplar. Por exemplo, a divisão de unidade é meramente uma divisão de função lógica e pode ser outra divisão em uma implementação real. Por exemplo, uma pluralidade de unidades ou componentes pode ser combinada ou integrada em outro sistema, ou algumas características podem ser ignoradas ou não executadas. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou discutidos podem ser implementados utilizando algumas interfaces. Os acoplamentos indiretos ou conexões de comunicação entre os dispositivos ou unidades podem ser implementados em uma forma eletrônica, mecânica, ou outras formas.
[0222] As unidades descritas como partes separadas podem ou não ser fisicamente separadas, e partes exibidas como unidades podem ou não ser unidades físicas, podem estar localizadas em uma posição ou podem estar distribuídas em uma pluralidade de unidades de rede. Algumas ou todas as unidades podem ser selecionadas de acordo com necessidades reais para atingir os objetivos das soluções das modalidades.
[0223] Além disso, unidades funcionais nas modalidades da presente invenção podem ser integradas em uma unidade de processamento, ou cada uma das unidades pode existir sozinha fisicamente, ou duas ou mais unidades são integradas em uma unidade.
[0224] As modalidades da invenção podem ainda compreender um dispositivo, por exemplo, codificador e/ou decodificador, o qual compreende um circuito de processamento configurado para executar qualquer um dos métodos e/ou processos aqui descritos.
[0225] As modalidades do codificador 100 e/ou decodificador 200 podem ser implementadas como hardware, firmware, software ou qualquer sua combinação. Por exemplo, a funcionalidade do codificador / codificação ou decodificador / decodificação pode ser executada por um circuito de processamento com ou sem firmware ou software, por exemplo, um processador, um microcontrolador, um processador de sinal digital (DSP), uma rede de portas programáveis no campo (FPGA), um circuito integrado de aplicação específica (ASIC), ou similares.
[0226] A funcionalidade do codificador 100 (e o método de codificação correspondente 100) e/ou decodificador 200 (e o método de decodificação correspondente 200) pode ser implementada por instruções de programa armazenadas em um meio legível por computador. As instruções de programa, quando executadas, fazem com que um circuito de processamento, computador, processador ou similares, execute as etapas dos métodos de codificação e/ou decodificação. O meio legível por computador pode ser qualquer meio, incluindo meios de armazenamento não transitórios, sobre os quais o programa é armazenado tal como um disco Blu ray, DVD, CD, unidade USB (instantânea), disco rígido, armazenamento de servidor disponível através de uma rede, etc.
[0227] Uma modalidade da invenção compreende ou é um programa de computador que compreende um código de programa para executar qualquer um dos métodos aqui descritos, quando executado em um computador.
[0228] Uma modalidade da invenção compreende ou é um meio legível por computador que compreende um código de programa que, quando executado por um processador, faz com que um sistema de computador execute qualquer um dos métodos aqui descritos.
[0229] Uma modalidade da invenção compreende ou é um chipset que executa qualquer um dos métodos aqui descritos.
Claims (21)
1. Dispositivo de intrapredição de um bloco corrente (520) de uma imagem, o dito dispositivo caracterizado pelo fato de que inclui um circuito de processamento configurado para: calcular um valor de amostra de predição preliminar de uma amostra (400, 530) do bloco corrente (520) com base nos valores de amostras de referência (prs0) de amostras de referência (510) localizadas em blocos vizinhos reconstruídos do bloco corrente (520); e calcular um valor de amostra de predição final da amostra adicionando um valor de incremento ao valor de amostra de predição preliminar, em que o dito valor de incremento depende da posição da dita amostra (400, 530) no bloco corrente (520).
2. Dispositivo de acordo com a reivindicação 1, caracterizado pelo fato de que as amostras de referência (510) estão localizadas em uma linha de amostras diretamente acima do bloco corrente (520) e em uma coluna de amostras para a esquerda ou a direita do bloco corrente, ou em que as amostras de referência (510) estão localizadas em uma linha de amostras diretamente abaixo do bloco corrente e em uma coluna de amostras para a esquerda ou a direita do bloco corrente (520).
3. Dispositivo de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o valor de amostra de predição preliminar é calculado de acordo com intrapredição direcional da amostra do bloco corrente (520).
4. Dispositivo de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o valor de incremento é determinado ainda levando em conta um número (tbW) de amostras do bloco corrente (520) em largura e um número (tbH) de amostras do bloco corrente (520) em altura.
5. Dispositivo de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o valor de incremento é determinado utilizando duas amostras de referência, uma das quais está localizada na coluna que é uma vizinha direita da coluna mais à direita do bloco corrente (520), por exemplo, a amostra vizinha direita superior (pTR), e outra está localizada na linha que é uma vizinha inferior da fila mais baixa do bloco corrente (520), por exemplo, a amostra vizinha esquerda inferior (pBL).
6. Dispositivo de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o valor de incremento é determinado utilizando uma tabela de consulta os valores da qual especificam um incremento parcial do valor de incremento dependendo do índice de modo de intrapredição, em que, por exemplo, a tabela de consulta provê para cada índice de modo de intrapredição um incremento parcial do valor de incremento.
7. Dispositivo de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o valor de incremento depende linearmente da posição (x) dentro de uma linha de amostras preditas no bloco corrente (520).
8. Dispositivo de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o valor de incremento depende linearmente no sentido de peça da posição dentro de uma linha (x) de amostras preditas no bloco corrente (520).
9. Dispositivo de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de ser configurado para utilizar um modo direcional para calcular o valor de amostra de predição preliminar com base em intrapredição direcional.
10. Dispositivo de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que o dito valor de incremento é determinado ainda levando em conta a forma de bloco e/ou a direção de predição.
11. Dispositivo de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que o dito circuito de processamento está ainda configurado para: dividir o bloco corrente (520) por pelo menos uma linha enviesada (500) para obter pelo menos duas regiões do bloco; e para determinar o dito valor de incremento diferentemente para diferentes regiões.
12. Dispositivo de acordo com a reivindicação 11, caracterizado pelo fato de que a dita linha enviesada (500) tem uma inclinação que corresponde a um modo de intrapredição sendo utilizado.
13. Dispositivo de acordo com a reivindicação 11 ou 12, caracterizado pelo fato de que o bloco corrente (520) está dividido por duas linhas enviesadas paralelas (500) que cruzam cantos opostos do bloco corrente, de modo a obter três regiões (A, B, C).
14. Dispositivo de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo fato de que o dito valor de incremento linearmente depende da distância (y) da dita amostra de um limite de bloco na direção vertical e linearmente depende da distância (x) da dita amostra de um limite de bloco na direção horizontal.
15. Dispositivo de acordo com qualquer uma das reivindicações 1 a 14, caracterizado pelo fato de que a adição do valor de incremento é executada em um procedimento interativo, em que incrementos parciais são subsequentemente adicionados à dita predição preliminar.
16. Dispositivo de acordo com qualquer uma das reivindicações 1 a 15, caracterizado pelo fato de que a predição do valor de amostra é calculada utilizando valores de amostras de referência somente de amostras de referência (510) localizadas em blocos vizinhos reconstruídos.
17. Dispositivo de codificação para codificar um bloco corrente de uma imagem, o dispositivo de codificação caracterizado pelo fato de que compreende: um dispositivo (154) de intrapredição como definido em qualquer uma das reivindicações precedentes para prover um bloco predito para o bloco corrente; e um circuito de processamento (104, 106, 108, 170) configurado para codificar o bloco corrente (520) com base no bloco predito.
18. Dispositivo de decodificação para decodificar um bloco codificado corrente de uma imagem, o dispositivo de decodificação caracterizado pelo fato de que compreende: um dispositivo (254) de intrapredição como definido em qualquer uma das reivindicações 1 a 16 para prover um bloco predito para o bloco codificado; e um circuito de processamento (204, 210, 212, 214) configurado para restaurar o bloco corrente (520) com base no bloco codificado e no bloco predito.
19. Método de intrapredição de um bloco corrente de uma imagem, caracterizado pelo fato de que inclui as etapas de: calcular (910, 1050) um valor de amostra de predição preliminar de uma amostra (400, 530) do bloco corrente com base nos valores de amostras de referência (prs0) de amostras de referência (510) localizadas em blocos vizinhos reconstruídos do bloco corrente (520); e calcular (920, 930, 920’, 930’, 1060, 1070, 1170, 1080, 1170) um valor de amostra de predição final da amostra adicionando um valor de incremento ao valor de amostra de predição preliminar, em que o dito valor de incremento depende da posição da dita amostra (400, 530) no bloco corrente (520).
20. Método de codificar um bloco corrente de uma imagem, caracterizado pelo fato de que compreende: prover um bloco predito para o bloco corrente (520)
executando o método como definido na reivindicação 19 para as amostras do bloco corrente (520); e codificar o bloco corrente (520) com base no bloco predito.
21. Método para decodificar um bloco codificado corrente de uma imagem, caracterizado pelo fato de que compreende: prover um bloco predito para o bloco codificado executando o método como definido na reivindicação 19 para as amostras do bloco corrente; e restaurar o bloco corrente (520) com base no bloco codificado e no bloco predito.
Dispositivo de fonte Dispositivo de destino
Petição 870210004223, de 13/01/2021, pág. 139/149 Fonte de imagem Dispositivo de display
Dados de imagem Imagem pós-processada 327
Pré-processador Pós-processador
Dados de imagem pré-processados 315 1/11
Imagem decodificada
Codificador Decodificador
Dados de imagem Dados codificados Dados de imagem codificados 171 codificados 171
Interface de Interface de comunicação comunicação
Bloco de Unidade de cálculo Imagem imagens 103 residual 104 Bloco residual 105
Petição 870210004223, de 13/01/2021, pág. 140/149 Bloco de Entrada predição 165 Predição Transformação Seleção (escalagem) Interes- de modo Coeficiente timação transformado 107
Quantização Interpre- Saída dição Coeficientes Codificação Dados de quantizados 109 de entropia imagem 2/11 codificados Intrapre- 171 dição Quantização inversa Coeficientes Intra- desquantizados 111 Imagem estimação decodificada 231 Transformação Amostras de inversa (escalagem) Armaze- referência 117 namento Filtro Armaze- temporário namento de imagens de loop temporário Bloco decodificadas transformado Unidade de inverso 113 Bloco Bloco reconstrução 114 filtrado 121 reconstruído 115
Dados de imagem codificados 171
Decodificação de entropia
Petição 870210004223, de 13/01/2021, pág. 141/149 Coeficientes Predição quantizados 209 Seleção de modo
Inter- Imagem predição Bloco de decodificada predição 265 3/11
Intra- predição Quantização inversa Coeficientes Amostras de desquantizados 211 referência 217
Transformação inversa (escalagem) Armaze- namento Armaze- Filtro de namento temporário Imagem de imagens loop temporário Bloco decodificada 231 decodificadas transformado inverso 213 Unidade de Saída Bloco Bloco reconstrução 214 filtrado 221 reconstruído 216
Decodificador 200
Petição 870210004223, de 13/01/2021, pág. 142/149 4/11
Amostras de referência primárias
Amostras de referência secundárias
Amostras de bloco predito
Amostra predita exemplar de bloco predito
Petição 870210004223, de 13/01/2021, pág. 143/149 Amostras de referência primárias 5/11
Amostras de referência secundárias
Amostras de bloco predito
Petição 870210004223, de 13/01/2021, pág. 144/149 Amostras de referência primárias
Amostras de bloco predito 6/11
Bloco predito
Filtro de Extensão de amostra de lado de referência referência principal
Petição 870210004223, de 13/01/2021, pág. 147/149 Amostras vizinhas Rede de amostras de referência
Incrementos de Derivação computação para de amostras componente de predição gradual 9/11
Filtro de Extensão de amostra de lado de referência referência principal
Rede de amostras Amostras de referência vizinhas
Incrementos de Derivação computação para de amostras componente de predição gradual
Início
Inicializar incrementos para componente gradual
Petição 870210004223, de 13/01/2021, pág. 148/149 Para 10/11
Para
Derivar
Fim
Início
Inicializar incrementos para componente gradual
Petição 870210004223, de 13/01/2021, pág. 149/149 Para 11/11
Para Para Para
Derivar Derivar Derivar
Fim
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2018/069849 WO2020015841A1 (en) | 2018-07-20 | 2018-07-20 | Method and apparatus of reference sample interpolation for bidirectional intra prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021000569A2 true BR112021000569A2 (pt) | 2021-04-06 |
Family
ID=63013026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021000569-2A BR112021000569A2 (pt) | 2018-07-20 | 2018-07-20 | Método e dispositivo de interpolação de amostra de referência de intrapredição bidirecional |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210144365A1 (pt) |
EP (1) | EP3808091A1 (pt) |
KR (1) | KR20210024113A (pt) |
CN (1) | CN112385232B (pt) |
BR (1) | BR112021000569A2 (pt) |
WO (1) | WO2020015841A1 (pt) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MX2020012688A (es) * | 2018-06-27 | 2021-02-15 | Kt Corp | Metodo y aparato para procesar se?ales de video. |
WO2023101524A1 (ko) * | 2021-12-02 | 2023-06-08 | 현대자동차주식회사 | 양방향 인트라 예측 모드를 이용하는 비디오 부호화/복호화 방법 및 장치 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2479940C2 (ru) * | 2007-10-15 | 2013-04-20 | Ниппон Телеграф Энд Телефон Корпорейшн | Устройство кодирования и декодирования изображения, способы кодирования и декодирования изображения, их программы и носитель записи, записанный программами |
KR101204385B1 (ko) * | 2011-04-01 | 2012-11-29 | 주식회사 아이벡스피티홀딩스 | 인트라 예측 모드에서의 영상 복호화 방법 |
WO2012175017A1 (en) | 2011-06-20 | 2012-12-27 | Mediatek Singapore Pte. Ltd. | Method and apparatus of directional intra prediction |
KR20130105114A (ko) * | 2012-03-16 | 2013-09-25 | 주식회사 아이벡스피티홀딩스 | 인트라 예측 모드에서의 영상 복호화 방법 |
US9813709B2 (en) * | 2012-09-28 | 2017-11-07 | Nippon Telegraph And Telephone Corporation | Intra-prediction encoding method, intra-prediction decoding method, intra-prediction encoding apparatus, intra-prediction decoding apparatus, program therefor and recording medium having program recorded thereon |
WO2016195460A1 (ko) * | 2015-06-05 | 2016-12-08 | 한양대학교 산학협력단 | 화면 내 예측에 대한 부호화/복호화 방법 및 장치 |
-
2018
- 2018-07-20 EP EP18745568.8A patent/EP3808091A1/en not_active Withdrawn
- 2018-07-20 BR BR112021000569-2A patent/BR112021000569A2/pt unknown
- 2018-07-20 WO PCT/EP2018/069849 patent/WO2020015841A1/en unknown
- 2018-07-20 KR KR1020217002529A patent/KR20210024113A/ko not_active Application Discontinuation
- 2018-07-20 CN CN201880095452.9A patent/CN112385232B/zh active Active
-
2021
- 2021-01-19 US US17/152,341 patent/US20210144365A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP3808091A1 (en) | 2021-04-21 |
CN112385232A (zh) | 2021-02-19 |
WO2020015841A1 (en) | 2020-01-23 |
US20210144365A1 (en) | 2021-05-13 |
CN112385232B (zh) | 2024-05-17 |
KR20210024113A (ko) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102628895B1 (ko) | 조인트 크로마 코딩을 사용하는 블록에 대해 크로마 디블로킹을 수행하기 위한 인코더, 디코더 및 대응 방법 | |
US11870986B2 (en) | Encoder, a decoder and corresponding methods using an adaptive loop filter | |
ES2965083T3 (es) | Terminación temprana para el refinamiento de flujo óptico | |
EP3868103A1 (en) | Devices and methods for coding a picture by partitioning it into slices comprising tiles | |
JP7414127B2 (ja) | 拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限 | |
BR112020023927A2 (pt) | método e aparelho para divisão de uma imagem, e um método e aparelho para codificação ou decodificação de uma imagem | |
US12108077B2 (en) | Method and apparatus of mode- and size-dependent block-level restrictions for position dependent prediction combination | |
AU2018415347B2 (en) | An image processing device and method for performing efficient deblocking | |
US20210144365A1 (en) | Method and apparatus of reference sample interpolation for bidirectional intra prediction | |
BR112020018410A2 (pt) | Método e aparelho para filtragem de imagem com coeficientes multiplicadores adaptivos | |
BR112020026248A2 (pt) | Dispositivo e método para intrapredição de um bloco de predição de uma imagem de vídeo, e meio de armazenamento | |
WO2019204672A1 (en) | Interpolation filter for an intra prediction apparatus and method for video coding | |
CN115349257B (zh) | 基于dct的内插滤波器的使用 | |
KR20220059549A (ko) | 향상된 보간 필터로써 하나의 블록 행의 처리 동안 페치되는 참조 라인의 수를 감소시키는 아핀 모션 모델 제약 | |
US11838508B2 (en) | Apparatus and method for chrominance quantization parameter derivation | |
BR112020026879A2 (pt) | Dispositivo e método para intra predição | |
CN112425165B (zh) | 基于邻块的帧内预测模式推导 | |
BR112021005561A2 (pt) | dispositivo de processamento de imagem e método para realizar desblocagem otimizada de qualidade | |
EP3977744A1 (en) | Method and apparatus for lossless still picture and video coding | |
US20210266603A1 (en) | Method and Apparatus for Hierarchical Signaling of Enabling and Disabling Prediction Mechanisms for Video Coding | |
EP4022901A1 (en) | Method and apparatus of still picture and video coding with shape-adaptive resampling of residual blocks |