BR112021008016A2 - codificador, decodificador e métodos correspondentes para modo de fusão - Google Patents

codificador, decodificador e métodos correspondentes para modo de fusão Download PDF

Info

Publication number
BR112021008016A2
BR112021008016A2 BR112021008016-3A BR112021008016A BR112021008016A2 BR 112021008016 A2 BR112021008016 A2 BR 112021008016A2 BR 112021008016 A BR112021008016 A BR 112021008016A BR 112021008016 A2 BR112021008016 A2 BR 112021008016A2
Authority
BR
Brazil
Prior art keywords
list
candidate
block
candidates
prediction
Prior art date
Application number
BR112021008016-3A
Other languages
English (en)
Inventor
Timofey Mikhailovich SOLOVYEV
Semih ESENLIK
Jianle Chen
Anand Meher KOTRA
Biao Wang
Han Gao
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021008016A2 publication Critical patent/BR112021008016A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA MODO DE FUSÃO. A presente divulgação fornece métodos e dispositivos de processamento de um bloco de acordo com uma lista de candidatos a fusão, o método compreendendo: construir uma primeira lista de acordo com informação de movimento de blocos adjacentes de um bloco atual; obter informação de predição do bloco atual; quando a informação de predição do bloco atual indicar que uma predição de sub-bloco é aplicada ao bloco atual, obter um candidato a unipredição para o bloco atual de acordo com a primeira lista; usar o candidato a unipredição para o bloco atual realizar interpredição do bloco atual. De acordo com modalidades da presente divulgação, a lista regular de fusão pode ser usada diretamente e não existe necessidade de gerar explicitamente a lista de candidatos a fusão de unipredição para predição de sub-blocos.

Description

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA MODO DE FUSÃO CAMPO TÉCNICO
[001] Modalidades do presente pedido de patente (divulgação) referem-se de modo geral ao campo de processamento de imagens e mais especificamente a modo de fusão.
FUNDAMENTOS
[002] Codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla gama de aplicações digitais de vídeo, por exemplo, difusão de TV digital, transmissão de vídeo pela internet e redes móveis, aplicações conversacionais em tempo real tais como conversas por vídeo, videoconferências, discos DVD e Blu-ray, sistemas de aquisição e edição de conteúdo de vídeo, e filmadoras de aplicações de segurança.
[003] A quantidade de dados de vídeo necessária para retratar mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou de outro modo comunicados por uma rede de comunicações com capacidade limitada de largura de banda. Portanto, dados de vídeo são geralmente comprimidos antes de serem comunicados através de redes de comunicações modernas atuais. O tamanho de um vídeo poderia também ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento, uma vez que recursos de memória podem ser limitados. Dispositivos de compressão de vídeo usam frequentemente software e/ou hardware na fonte para codificar os dados de vídeo antes de transmissão ou armazenamento, deste modo diminuindo a quantidade de dados necessários para representar imagens digitais de vídeo. Os dados comprimidos são em seguida recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos limitados de rede e demandas cada vez maiores de maior qualidade de vídeo, são desejáveis técnicas de compressão e descompressão aperfeiçoadas que melhoram a razão de compressão com pouco ou nenhum sacrifício na qualidade de imagem.
SUMÁRIO
[004] Modalidades do presente pedido de patente fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes.
[005] Os acima mencionados e outro objetivos são alcançados pelo assunto das reivindicações independentes. Formas adicionais de implementação são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[006] De acordo com um primeiro aspecto da presente divulgação, é divulgado um método de processamento de um bloco de acordo com uma lista de candidatos a fusão, o método compreendendo: construir uma primeira lista de acordo com informação de movimento de blocos adjacentes de um bloco atual; obter informação de predição do bloco atual; quando a informação de predição do bloco atual indicar que uma predição de sub-bloco é aplicada ao bloco atual, obter um candidato a unipredição para o bloco atual de acordo com a primeira lista; usar o candidato a unipredição para o bloco atual para executar interpredição do bloco atual.
[007] Neste método, a lista de candidatos a fusão regular é reutilizada para predição a fusão de partição de sub-blocos
(por exemplo, triângulo, ou não retangular etc.) sem poda extra de vetor de movimento.
[008] Em uma possível forma de implementação, o bloco atual compreende dois sub-blocos, e cada sub-bloco é correspondente a um candidato a unipredição.
[009] Em uma possível forma de implementação, um candidato a unipredição é gerado de acordo com um candidato a bipredição da primeira lista.
[010] Em uma possível forma de implementação, dois candidatos a unipredição são gerados de acordo com um candidato a bipredição da primeira lista.
[011] Em uma possível forma de implementação, um candidato a unipredição é a primeira parte do candidato a bipredição.
[012] Em uma possível forma de implementação, um candidato a unipredição é a segunda parte do candidato a bipredição.
[013] Em uma possível forma de implementação, a predição de sub-bloco é uma predição triangular.
[014] Em uma possível forma de implementação, a geração dos dois candidatos a unipredição de acordo com um candidato a bipredição da primeira lista compreende: determinar uma similaridade entre os dois candidatos a unipredição.
[015] Em uma possível forma de implementação, o candidato a unipredição é gerado de acordo com um candidato a bipredição da primeira lista baseado na ordem do candidato na primeira lista.
[016] De acordo com um segundo aspecto da presente divulgação, um codificador compreende circuitos de processamento para executar as modalidades de método.
[017] De acordo com um terceiro aspecto da presente divulgação, um decodificador compreende circuitos de processamento para executar as modalidades de método.
[018] De acordo com um quarto aspecto da presente divulgação, um produto de programa de computador compreende um código de programa para executar as modalidades de método.
[019] De acordo com um quinto aspecto da presente divulgação, um decodificador compreende: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e que armazena programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para executar as modalidades de método.
[020] De acordo com um sexto aspecto da presente divulgação, um codificador compreende: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e que armazena programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para executar as modalidades de método.
[021] De acordo com modalidades da presente divulgação, para maximizar as operações comuns compartilhadas por diferentes modos de fusão, a lista regular de fusão é construída e seus vetores de movimento são usados para predição de sub-bloco. Em um exemplo, para cada candidato a fusão na lista de candidatos a fusão regular, um e apenas um de seus vetores de movimento L0 ou L1 é usado para uma predição de sub-bloco. Além disso, a ordem de seleção do vetor de movimento L0 versus L1 é baseada na sua paridade de índice de fusão. A lista regular de fusão pode ser usada diretamente e não existe necessidade de gerar explicitamente a lista de candidatos a fusão de unipredição para a predição de sub-bloco.
[022] Em um exemplo, logo que a lista regular de fusão é construída, para cada candidato a fusão na lista de candidatos a fusão regular, um e apenas um de seus vetores de movimento L0 ou L1 é usado para uma predição de sub-bloco. Além disso, a ordem de seleção do vetor de movimento L0 versus L1 é baseada na sua paridade de índice de fusão. Em um exemplo, como mostrado na Tabela 1, para um candidato com um índice de valor par, o seu vetor de movimento L0 é primeiro escolhido para ser usado para predição de sub-bloco. Se o seu vetor de movimento L0 não estiver disponível, o seu vetor de movimento L1 seria usado ao invés do vetor de movimento L0. Para um candidato com um índice de valor ímpar, o seu vetor de movimento L1 é primeiro escolhido para ser usado para predição de triângulo. Se não estiver disponível, o seu vetor de movimento L0 seria usado em seu lugar. Na Tabela 1, correspondente a cada índice de fusão, o vetor de movimento marcado com “x” é primeiro selecionado para predição de sub- bloco. Tabela 1 Seleção de MV de unipredição para modo de predição de triângulo MV L0 MV L1 Índice de fusão x 0
1 x 2 x 3 x 4 x
[023] De acordo com modalidades da presente divulgação, a lista regular de fusão pode ser usada diretamente e não existe necessidade de gerar explicitamente a lista de candidatos a fusão de unipredição para predição de sub-bloco. No lado do decodificador, logo que um índice de fusão de sub-blocos é recebido, o candidato MV de unipredição pode ser facilmente localizado baseado no valor de índice de fusão sinalizado.
[024] Detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens tornar-se-ão evidentes a partir da descrição, desenhos e reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[025] As modalidades a seguir da presente divulgação são descritas em maior detalhe com referência às figuras e desenhos anexos, em que: a FIG. 1A é um diagrama de blocos que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da presente divulgação; a FIG. 1B é um diagrama de blocos que mostra outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades da presente divulgação; a FIG. 2 é um diagrama de blocos que mostra um configurador de vídeo configurado para implementar modalidades da presente divulgação; a FIG. 3 é um diagrama de blocos que mostra uma estrutura exemplificativa de um decodificador de vídeo configurado para implementar modalidades da presente divulgação; a FIG. 4 é um diagrama de blocos que ilustra um exemplo de um aparelho de codificação ou de um aparelho de decodificação; a FIG. 5 é um diagrama de blocos que ilustra outro exemplo de um aparelho de codificação ou de um aparelho de decodificação; a FIG. 6 é um fluxograma que mostra um exemplo da construção de segunda lista de candidatos a movimento baseada na primeira lista de candidatos a movimento; a FIG. 7a ilustra um exemplo de bloco colocalizado; a FIG. 7b ilustra um exemplo de blocos espaciais adjacentes; a FIG. 8 é um fluxograma que mostra outro exemplo da construção de segunda lista de candidatos a movimento baseada na primeira lista de candidatos a movimento; a FIG. 9 ilustra um exemplo de modo de predição triangular; a FIG. 10 é um fluxograma que mostra outro exemplo da construção de segunda lista de candidatos a movimento baseada na primeira lista de candidatos a movimento; a FIG. 11 ilustra alguns exemplos de modo de predição de Sub-bloco; a FIG. 12 mostra um exemplo de como candidatos a fusão são selecionados entre candidatos localizados nas posições; a FIG. 13 mostra um exemplo referente a candidatos a fusão; a FIG. 14 mostra um exemplo de como obter vetor de movimento escalado; a FIG. 15 mostra um exemplo referente a candidato temporal; a FIG. 16 é um diagrama de blocos que mostra uma estrutura exemplificativa de um sistema de suprimento de conteúdo 3100 que realiza um serviço de entrega de conteúdo; e a FIG. 17 é um diagrama de blocos que mostra uma estrutura de um exemplo de um dispositivo terminal.
[026] Os sinais de referência idênticos a seguir referem-se a recursos idênticos ou pelo menos funcionalmente equivalentes se não explicitamente especificado de outra forma.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[027] Na descrição a seguir é feita referência às figuras anexas, que formam parte da divulgação, e que mostram, como ilustração, aspectos específicos de modalidades da presente divulgação ou aspectos específicos nos quais modalidades da presente divulgação podem ser usadas. É entendido que modalidades da presente divulgação podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não retratadas nas figuras. A descrição detalhada a seguir, portanto, não deve ser considerada em um sentido limitativo, e o escopo da presente divulgação é definido pelas reivindicações anexas.
[028] Por exemplo, é entendido que uma divulgação em conexão com um método descrito pode também permanecer verdadeira para um correspondente dispositivo ou sistema configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas específicas de método é descrita, um correspondente dispositivo pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para executar a uma ou a pluralidade de etapas de método descritas (por exemplo, uma unidade executando a uma ou uma pluralidade de etapas, ou uma pluralidade de unidades cada uma executando uma ou mais da pluralidade de etapas), mesmo se tal uma ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico é descrito baseado em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para executar a funcionalidade da uma ou de uma pluralidade de unidades (por exemplo, uma etapa executando a funcionalidade da uma ou de uma pluralidade de unidades, ou uma pluralidade de etapas cada uma executando a funcionalidade da 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. Além disso, é entendido que os recursos das diversas modalidades exemplificativas e/ou aspectos descritos neste documento podem ser combinados entre si, a não ser que especificamente mencionado de outra forma.
[029] Codificação de vídeo refere-se tipicamente ao processamento de uma sequência de figuras, que formam o vídeo ou sequência de vídeo. Ao invés do termo “figura” o termo “quadro” ou “imagem” pode ser usado como sinônimo no campo de codificação de vídeo. Codificação de vídeo (ou codificação em geral) compreende duas partes, codificação de vídeo e decodificação de vídeo. Codificação de vídeo é executada no lado da fonte, tipicamente compreendendo processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessários para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficientes). Decodificação de vídeo é executada no lado do destino e compreende tipicamente o processamento inverso comparado ao codificador para reconstruir as imagens de vídeo. Modalidades que se referem a “codificação” de imagens de vídeo (ou imagens em geral) deverão ser entendidas referindo-se a “codificação” ou “decodificação” de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação é também referida como CODEC (Codificação e Decodificação).
[030] 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 das imagens de vídeo originais (assumindo transmissão sem perdas ou outras perdas de dados durante armazenamento ou transmissão). No caso de codificação de vídeo com perdas, compressão adicional, por exemplo por quantização, é executada, para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é menor ou pior comparada à qualidade das imagens de vídeo originais.
[031] Diversos padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinam predição espacial e temporal no domínio de amostra e codificação de transformação 2D para aplicar quantização no domínio de transformação). Cada imagem de uma sequência de vídeo é tipicamente particionada em um conjunto de blocos sem sobreposição e a codificação é tipicamente executada em um nível de bloco. Em outras palavras, no codificador o vídeo é tipicamente processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, mediante utilização de predição espacial (intraimagem) e/ou predição temporal (interimagem) para gerar um bloco de predição, subtração do bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformação do bloco residual e quantização do bloco residual no domínio de transformação para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto que no decodificador é aplicado o processamento inverso comparado ao codificador para o bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica a malha de processamento de decodificador de modo que ambos gerarão predições idênticas (por exemplo, intrapredição e interpredição) e/ou reconstruções para processar, isto é codificar, os blocos subsequentes.
[032] Nas modalidades a seguir de um sistema de codificação de vídeo 10, são descritos um codificador de vídeo 20 e um decodificador de vídeo 30 baseados nas figuras 1 a 3.
[033] A FIG. 1A é um diagrama de blocos esquemático que ilustra um sistema de codificação exemplificativo 10, por exemplo, um sistema de codificação de vídeo 10 (ou abreviado sistema de codificação 10) que pode utilizar técnicas do presente pedido de patente. O codificador de vídeo 20 (ou abreviado codificador 20) e decodificador de vídeo 30 (ou abreviado decodificador 30) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para executar técnicas de acordo com diversos exemplos descritos no presente pedido de patente.
[034] Como mostrado na FIG. 1A, o sistema de codificação 10 compreende um dispositivo fonte 12 configurado para fornecer dados de imagem codificada 21, por exemplo, a um dispositivo de destino 14 para decodificar os dados de imagem codificada 13. O dispositivo fonte 12 compreende um codificador 20, e pode adicionalmente, isto é, opcionalmente, compreender uma fonte de imagens 16, um pré- processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador 18 de imagens, e uma interface de comunicação ou unidade de comunicação 22.
[035] A fonte de imagens 16 pode compreender ou pode ser qualquer tipo de dispositivo de captura de imagens, por exemplo uma câmera para capturar uma imagem do mundo real, e/ou qualquer tipo de um dispositivo de geração de imagens, por exemplo um processador gráfico de computador para gerar uma imagem animada de computador, ou qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem gerada por computador (por exemplo, o teor de uma tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação destes (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagens pode ser qualquer tipo de memória ou de armazenamento que armazena qualquer das imagens acima mencionadas.
[036] Em distinção ao pré-processador 18 e ao processamento executado pela unidade de pré-processamento
18, a imagem ou dados de imagem 17 podem também ser referidos como imagem bruta ou dados de imagem brutos 17. O pré- processador 18 é configurado para receber os dados de imagem (brutos) 17 e para executar pré-processamento dos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré-processada 19. O pré-processamento executado pelo pré-processador 18 pode, por exemplo, compreender aparamento, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor, ou eliminação de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser um componente opcional.
[037] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processada 19 e fornecer dados de imagem codificada 21 (detalhes adicionais serão descritos abaixo, baseados na FIG. 2).
[038] A interface de comunicação 22 do dispositivo fonte 12 pode ser configurada para receber os dados de imagem codificada 21 e para transmitir os dados de imagem codificada 21 (ou qualquer versão processada adicional destes) pelo canal de comunicação 13 a outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[039] O dispositivo de destino 14 compreende um decodificador 30 (por exemplo, um decodificador de vídeo 30), e pode adicionalmente, isto é, opcionalmente, compreender uma interface de comunicação ou unidade de comunicação 28, um pós-processador 32 (ou unidade de pós- processamento 32) e um dispositivo de exibição 34.
[040] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificada 21 (ou qualquer versão processada adicional destes), por exemplo, diretamente do dispositivo fonte 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo um dispositivo de armazenamento de dados de imagem codificada, e fornecer os dados de imagem codificada 21 ao decodificador 30.
[041] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificada 21 ou dados codificados 13 por meio de um enlace direta de comunicação entre o dispositivo fonte 12 e o dispositivo de destino 14, por exemplo uma conexão direta com fio ou sem fio, ou por meio de qualquer tipo de rede, por exemplo uma rede com fio ou sem fio ou qualquer combinação destas, ou qualquer tipo de rede privada ou pública, ou qualquer tipo de combinação destas.
[042] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificada 21 em um formato adequado, por exemplo, pacotes, e/ou processar os dados de imagem codificada usando qualquer tipo de codificação de transmissão ou processamento para transmissão por um enlace de comunicação ou rede de comunicação.
[043] A interface de comunicação 28, que forma a contrapartida da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de correspondente de decodificação de transmissão ou processamento e/ou desempacotamento para obter os dados de imagem codificada 21.
[044] Ambas, a interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais como indicado pela seta para o canal de comunicação 13 na FIG. 1A que aponta do dispositivo fonte 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para configurar uma conexão, para reconhecer e trocar qualquer informação relacionada com o enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificada.
[045] O decodificador 30 é configurado para receber os dados de imagem codificada 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (detalhes adicionais serão descritos abaixo, por exemplo, baseados na FIG. 3 ou na FIG. 5).
[046] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também denominados dados de imagem reconstruídos), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processada 33, por exemplo, uma imagem pós-processada 33. O pós-processamento executado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo de YCbCr para RGB), correção de cor, aparamento, ou reamostragem, ou qualquer outro processamento, por exemplo para preparação dos dados de imagem decodificados 31 para exibição, por exemplo por dispositivo de exibição 34.
[047] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processada 33 para exibir a imagem, por exemplo a um usuário ou visualizador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de tela para representar a imagem reconstruída, por exemplo uma tela ou monitor integrado ou externo. As telas podem, por exemplo compreender telas de cristal líquido (LCD), telas de diodos emissores de luz orgânicos (OLED), telas de plasma, projetores, telas de micro LED, cristal líquido sobre silício (LCoS), processador digital de luz (DLP) ou qualquer outro tipo de tela.
[048] Embora a FIG. 1A retrate o dispositivo fonte 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos podem também compreender ambos ou ambas as funcionalidades, o dispositivo fonte 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades o dispositivo fonte 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separados ou qualquer combinação destes.
[049] Como será evidente para o técnico no assunto baseado na descrição, a existência e (exata) divisão de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo fonte 12 e/ou dispositivo de destino 14 como mostrado na FIG. 1A variam dependendo do dispositivo e aplicação reais.
[050] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou ambos o codificador 20 e o decodificador 30 podem ser implementados por meio de circuitos de processamento como mostrado na FIG. 1B, tal como um ou mais microprocessadores, processadores digitais de sinais (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis de campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou qualquer combinação destes.
O codificador 20 pode ser implementado por meio de circuitos de processamento 46 para incorporar os diversos módulos como discutido em relação ao codificador 20 da FIG. 2 e/ou qualquer outro sistema ou subsistema codificador descrito neste documento.
O decodificador 30 pode ser implementado por meio de circuitos de processamento 46 para incorporar os diversos módulos como discutido em relação ao decodificador 30 da FIG. 3 e/ou qualquer outro sistema ou subsistema decodificador descrito neste documento.
Os circuitos de processamento podem ser configurados para executar as diversas operações como discutido mais adiante.
Como mostrado na FIG. 5, se as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento não transitório legível por computador adequado e pode executar as instruções em hardware usando um ou mais processadores para executar as técnicas desta divulgação.
Qualquer do codificador de vídeo 20 e do decodificador de vídeo 30 pode estar integrado como parte de codificador/decodificador (CODEC) combinado em um único dispositivo, por exemplo, como mostrado na FIG. 1B.
O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores portáteis ou laptops, telefones móveis, smartphones, tablets ou computadores portáteis, câmeras, computadores de mesa, decodificadores, televisões, dispositivos de exibição, tocadores de mídia digital, consoles de videogame, dispositivos de streaming de vídeo (tais como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de difusão, dispositivo transmissor de difusão, ou similares e podem não usar ou usar qualquer tipo de sistema operacional. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Portanto, o dispositivo fonte e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[051] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na FIG. 1A é meramente um exemplo e as técnicas do presente pedido de patente podem aplicar-se a configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, dados são recuperados de uma memória local, transmitidos por uma rede, ou similares. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e a decodificação são executadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados da memória.
[052] Para conveniência de descrição, modalidades da presente divulgação são descritas neste documento, por exemplo, por referência a Codificação de Vídeo de Alta Eficiência (HEVC) ou ao software de referência de codificação de Vídeo Versátil (VVC), o padrão de codificação de vídeo de próxima geração desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) de ITU-T e Grupo de Especialistas em Imagens em Movimento (MPEG) de ISO/IEC. O técnico no assunto compreenderá que modalidades da presente divulgação não são limitadas a Codificador e Método de Codificação de HEVC ou VVC. Codificador e Método de Codificação
[053] A FIG. 2 mostra um diagrama de blocos esquemático de um codificador de vídeo exemplificativo 20 que é configurado para implementar as técnicas do presente pedido de patente. No exemplo da FIG. 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformação 206, uma unidade de quantização 208, uma unidade de quantização inversa 210, e unidade de processamento de transformação inversa 212, uma unidade de reconstrução 214, uma unidade de filtro de malha 220, um buffer de imagens decodificadas (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de interpredição 244, uma unidade de intrapredição 254 e uma unidade de particionamento 262. A unidade de interpredição 244 pode incluir uma unidade de estimação de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20 como mostrado na FIG. 2 pode também ser referido como um codificador de vídeo híbrido ou um codificador de vídeo de acordo com o codec de vídeo híbrido.
[054] A unidade de cálculo residual 204, a unidade de processamento de transformação 206, a unidade de quantização 208, a unidade de modo de seleção 260 podem ser referidas como formando um percurso de sinal para a frente do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformação inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro de malha 220, o buffer de imagens decodificadas (DPB) 230, a unidade de interpredição 244 e a unidade de intrapredição 254 podem ser referidas como formando um percurso de sinal para trás do codificador de vídeo 20, em que o percurso de sinal para trás do codificador de vídeo 20 corresponde ao percurso de sinal do decodificador (vide decodificador de vídeo 30 na FIG. 3). A unidade de quantização inversa 210, a unidade de processamento de transformação inversa 212, a unidade de reconstrução 214, o filtro de malha 220, o buffer de imagens decodificadas (DPB) 230, a unidade de interpredição 244 e a unidade de intrapredição 254 são também referidas como formando o “decodificador embutido” do codificador de vídeo 20. Imagens e Posicionamento de Imagens (Imagens e Blocos)
[055] O codificador 20 pode ser configurado para receber, por exemplo por meio da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo imagem de uma sequência de imagens que forma um vídeo ou sequência de vídeo. A imagem ou dados de imagem recebidos podem também ser uma imagem pré-processada 19 (ou dados de imagem pré-processada 19).
[056] Por razões de simplicidade a descrição a seguir refere-se à imagem 17. A imagem 17 pode também ser referida como imagem atual ou imagem a ser codificada (em particular em codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeo, isto é a sequência de vídeo que também compreende a imagem atual).
[057] Uma imagem (digital) é ou pode ser considerada como uma matriz bidimensional ou matriz de amostras com valores de intensidade. Uma amostra na matriz 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 matriz ou imagem define o tamanho e/ou resolução da imagem. Para representação de cor, são utilizadas tipicamente três componentes de cor, isto é, a imagem pode ser representada ou incluir três matrizes de amostras. Em formato RBG ou espaço de cor uma imagem compreende uma correspondente matriz de amostras vermelhas, verdes e azuis. Contudo, em codificação de vídeo cada pixel é tipicamente representado em um formato de luminância e crominância ou espaço de cor, por exemplo YCbCr, que compreende um componente de luminância indicado por Y (algumas vezes também L é usado em substituição) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou abreviado luma) Y representa o brilho ou intensidade de nível de cinza (por exemplo como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou abreviado croma) Cb e Cr representam a cromaticidade ou componentes de informação de cor. Consequentemente, uma imagem em formato YCbCr compreende uma matriz de amostras de luminância de valores de amostras de luminância (Y), e duas matrizes de amostras de crominância de valores de crominância (Cb e Cr). Imagens em formato RGB podem ser convertidas ou transformadas em formato YCbCr e vice-versa, o processo é também conhecido como transformação ou conversão de cores. Se uma imagem é monocromática, a imagem pode compreender apenas uma matriz de amostras de luminância. Consequentemente, uma imagem pode ser, por exemplo, uma matriz de amostras de lumas em formato monocromático ou uma matriz de amostras de lumas e duas correspondentes matrizes de amostras de cromas em formato de cor 4:2:0, 4:2:2 e 4:4:4.
[058] Modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não retratada na FIG. 2) configurada para particionar a imagem 17 em uma pluralidade de (tipicamente não sobrepostos) blocos de imagens 203. Estes blocos podem também ser referidos como blocos raiz, macroblocos (H.264/AVC) ou blocos de árvores de codificação (CTB) ou unidades de árvores de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e correspondente grade que define o tamanho de bloco, ou para mudar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[059] Em modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco de imagem 203 pode também ser referido como bloco de imagem atual ou bloco de imagem a ser codificada.
[060] Como na imagem 17, o bloco de imagem 203 novamente é ou pode ser considerado como uma matriz bidimensional ou matriz de amostras com valores de intensidade (valores de amostras), embora de menor dimensão que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, uma matriz de amostras (por exemplo uma matriz de lumas no caso de uma imagem monocromática 17, ou uma matriz de lumas ou cromas no caso de uma imagem colorida) ou três matrizes de amostras (uma matriz de lumas e duas matrizes de cromas no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de matrizes dependendo do formato de cor aplicado. O número de amostras na direção (eixo geométrico) horizontal e vertical do bloco 203 define o tamanho do bloco 203. Consequentemente, um bloco pode, por exemplo, ser uma matriz MxN (M colunas por N linhas) de amostras, ou uma matriz MxN de coeficientes de transformação.
[061] As modalidades do codificador de vídeo 20 como mostrado na FIG. 2 podem ser configuradas para codificar a imagem 17 bloco por bloco, por exemplo a codificação e a predição são executadas por bloco 203. Cálculo Residual
[062] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como residual 205) baseado no bloco de imagem 203 e em um bloco de predição 265 (detalhes adicionais referentes ao bloco de predição 265 são fornecidos mais adiante), por exemplo pela subtração de valores de amostras do bloco de predição 265 dos valores de amostras do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostras. Transformação
[063] A unidade de processamento de transformação 206 pode ser configurada para aplicar uma transformação, por exemplo uma transformação discreta de cossenos (DCT) ou transformação discreta de senos (DST), nos valores de amostras do bloco residual 205 para obter coeficientes de transformação 207 em um domínio de transformação. Os coeficientes de transformação 207 podem também ser referidos como coeficientes residuais de transformação e representam o bloco residual 205 no domínio de transformação.
[064] A unidade de processamento de transformação 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, tais como as transformações especificadas para H.265/HEVC. Comparadas com uma transformação DCT ortogonal, tais aproximações inteiras são tipicamente escaladas por um determinado fator. Com a finalidade de preservar a norma do bloco residual que é processado por transformações diretas e inversas, são aplicados fatores adicionais de escala como parte do processo de transformação. Os fatores de escala são tipicamente escolhidos baseados em determinadas restrições tais como os fatores de escala serem uma potência de dois para operações de deslocamento, profundidade de bit dos coeficientes de transformação, troca entre precisão e custos de implementação etc. Fatores de escala específicos são, por exemplo, especificados para a transformação inversa, pela unidade de processamento de transformação inversa 212 (e a correspondente transformação inversa, por exemplo pela unidade de processamento de transformação inversa 312 no decodificador de vídeo 30) e correspondentes fatores de escala para a transformação direta, por exemplo pela unidade de processamento de transformação 206, no codificador 20 podem ser adequadamente especificados.
[065] As modalidades do codificador de vídeo 20 (respectivamente unidade de processamento de transformação 206) podem ser configuradas para enviar parâmetros de transformação, por exemplo um tipo de transformação ou transformações, por exemplo diretamente ou codificados ou comprimidos por meio da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de transformação para decodificação. Quantização
[066] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformação 207 para obter coeficientes quantizados 209, por exemplo pela aplicação de quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 podem também ser referidos como coeficientes de transformação quantizados 209 ou coeficientes residuais quantizados 209.
[067] O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes de transformação 207. Por exemplo, um coeficiente de transformação de n bits pode ser arredondado para baixo para um coeficiente de transformação de m bits durante quantização, onde n é maior que m. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização (QP). Por exemplo para quantização escalar, diferentes escalas podem ser aplicadas para alcançar quantização mais fina ou mais grosseira. Menores tamanhos de etapas de quantização correspondem a quantização mais fina, enquanto maiores tamanhos de etapas de quantização correspondem a 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, parâmetros de quantização pequenos podem corresponder a quantização fina (tamanhos pequenos de etapas de quantização) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos grandes de etapas de quantização) ou vice-versa.
A quantização pode incluir divisão por um tamanho de etapa de quantização e uma correspondente e/ou a desquantização inversa, por exemplo pela unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de etapa de quantização.
As modalidades de acordo com alguns padrões, por exemplo HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização.
Geralmente, o tamanho de etapa de quantização pode ser calculado baseado em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação que inclui divisão.
Fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificado devido à escala usada na aproximação de ponto fixo da equação para tamanho de etapa de quantização e parâmetro de quantização.
Em uma implementação exemplificativa, a escala da transformação e desquantização inversas poderá ser combinada.
Alternativamente, podem ser usadas e sinalizadas tabelas de quantização customizadas 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 os tamanhos crescentes de etapas de quantização.
[068] As modalidades do codificador de vídeo 20 (respectivamente unidade de quantização 208) podem ser configuradas para enviar parâmetros de quantização (QP), por exemplo diretamente ou codificados por meio da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação. Quantização Inversa
[069] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 aos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo por aplicação do inverso do esquema de quantização aplicado pela unidade de quantização 208 baseado no ou usando o mesmo tamanho de etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 podem também ser referidos como coeficientes residuais desquantizados 211 e correspondentes – embora tipicamente não idênticos aos coeficientes de transformação devido à perda por quantização – aos coeficientes de transformação 207. Transformação Inversa
[070] A unidade de processamento de transformação inversa 212 é configurada para aplicar a transformação inversa da transformação aplicada pela unidade de processamento de transformação 206, por exemplo uma transformação discreta de cossenos (DCT) inversa ou transformação discreta de senos (DST) inversa ou outras transformações inversas, para obter um bloco residual reconstruído 213 (ou correspondentes coeficientes desquantizados 213) no domínio de amostra. O bloco residual reconstruído 213 pode também ser referido como um bloco de transformação 213. Reconstrução
[071] A unidade de reconstrução 214 (por exemplo adicionador ou somador 214) é configurada para adicionar o bloco de transformação 213 (isto é bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo pela adição – amostra por amostra – dos valores de amostras do bloco residual reconstruído 213 e dos valores de amostras do bloco de predição 265. Filtragem
[072] A unidade de filtro de malha 220 (ou abreviado “filtro de malha” 220) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221, ou no geral, para filtrar amostras reconstruídas para obter amostras filtradas. A unidade de filtro de malha é, por exemplo, configurada para suavizar transições de píxeis, ou de outro modo melhorar a qualidade de vídeo. A unidade de filtro de malha 220 pode compreender um ou mais filtros de malha tais como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo um filtro bilateral, um filtro de malha adaptativa (ALF), um filtro de nitidez, um filtro de suavização, um filtro colaborativo, ou qualquer combinação destes. Embora a unidade de filtro de malha 220 seja mostrada na FIG. 2 como sendo um filtro na malha, em outras configurações a unidade de filtro de malha 220 pode ser implementada como um filtro pós malha. O bloco filtrado 221 pode também ser referido como bloco reconstruído filtrado
221. As modalidades do codificador de vídeo 20 (respectivamente unidade de filtro de malha 220) podem ser configuradas para enviar parâmetros de filtro de malha (tais como informação de deslocamento adaptativo de amostra), por exemplo diretamente ou codificados por meio da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 possa receber e aplicar os mesmos parâmetros de filtro de malha ou respectivos filtros de malha para decodificação. Buffer de Imagens Decodificadas
[073] O buffer de imagens decodificadas (DPB) 230 pode ser uma memória que armazena imagens de referência, ou em geral dados de imagens de referência, para codificação de dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto- resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. O buffer de imagens decodificadas (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O buffer de imagens decodificadas 230 pode ser adicionalmente configurado para armazenar outros blocos previamente filtrados, por exemplo blocos previamente reconstruídos e filtrados 221, da mesma imagem atual ou de diferentes imagens, por exemplo imagens previamente reconstruídas, e pode fornecer imagens previamente reconstruídas, isto é decodificadas, (e correspondentes blocos e amostras de referência) e/ou uma imagem atual parcialmente reconstruída (e correspondentes blocos e amostras de referência), por exemplo para interpredição. O buffer de imagens decodificadas (DPB) 230 pode também ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215, ou em geral amostras reconstruídas não filtradas, por exemplo se o bloco reconstruído 215 não é filtrado pela unidade de filtro de malha 220, ou qualquer outra versão adicional processada dos blocos ou amostras reconstruídos. Seleção de Modo (Particionamento e Predição)
[074] A unidade de seleção de modo 260 compreende unidade de particionamento 262, unidade de interpredição 244 e unidade de intrapredição 254, e é configurada para receber ou obter dados de imagem original, por exemplo um bloco original 303 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo amostras ou blocos reconstruídos filtrados e/ou não filtrados da mesma (atual) imagem e/ou de uma ou de uma pluralidade de imagens previamente decodificadas, por exemplo a partir do buffer de imagens decodificadas 230 ou outros buffers (por exemplo buffer de linha, não mostrado). Os dados de imagem reconstruída são usados como dados de imagem de referência para predição, por exemplo interpredição ou intrapredição, para obter um bloco de predição 265 ou preditor 265.
[075] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo não particionamento) e um modo de predição (por exemplo um modo de interpredição ou intrapredição) e gerar um correspondente bloco de predição 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído
215. As modalidades da unidade de seleção de modo 260 podem ser configuradas para selecionar o particionamento e o modo de predição (por exemplo a partir daquelas suportadas por ou disponíveis para a unidade de seleção de modo 260), que fornece a melhor correspondência ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento) ou uma sobrecarga mínima de sinalização (sobrecarga mínima de sinalização significa melhor compressão para transmissão ou armazenamento), ou que considere ou equilibre ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o particionamento e modo de predição baseado na otimização de distorção de taxa (RDO), isto é selecionar o modo de predição que fornece uma mínima distorção de taxa. Termos como “melhor”, “mínima”, “ótima” etc. neste contexto não necessariamente se referem a “melhor”, “mínima”, “ótima” etc. globais, mas podem também se referir ao cumprimento de um critério de terminação ou seleção como um valor que excede ou cai abaixo de um limite ou outras restrições que levam potencialmente a uma “seleção subótima” mas que reduzem complexidade e tempo de processamento.
[076] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar o bloco 203 em menores partições de blocos ou sub-blocos (que formam novamente blocos), por exemplo usando iterativamente particionamento de árvore quaternária (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação destes, e para executar, por exemplo, a partição para cada uma das partições de blocos ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados a cada uma das partições de blocos ou sub- blocos. A seguir será explicado em maior detalhe o particionamento (por exemplo a unidade de particionamento 260) e processamento de predição (por unidade de interpredição 244 e unidade de intrapredição 254) executados por um codificador de vídeo exemplificativo 20. Particionamento
[077] A unidade de particionamento 262 pode particionar (ou dividir) um bloco atual 203 em partições menores, por exemplo menores blocos de tamanho quadrado ou retangular. Estes blocos menores (que podem também ser referidos como sub-blocos) podem ser adicionalmente particionados em partições ainda menores. Isto é também referido como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo uma árvore raiz nível 0 (hierarquia nível 0, profundidade 0), pode ser recursivamente particionada, por exemplo particionada em dois ou mais blocos de um nível inferior seguinte de árvore, por exemplo nós em nível de árvore 1 (hierarquia nível 1, profundidade 1), em que estes blocos podem ser novamente particionados em dois ou mais blocos de um nível inferior seguinte, por exemplo nível de árvore 2 (hierarquia nível 2, profundidade 2) etc. até o particionamento estar terminado, por exemplo porque um critério de terminação é satisfeito, por exemplo, uma profundidade máxima de árvore ou tamanho mínimo de bloco é alcançado. Blocos que não são mais particionados são também referidos como blocos de folha ou nós de folha da árvore. Uma árvore que usa particionamento em duas partições é referida como árvore binária (BT), uma árvore que usa particionamento em três partições é referida como árvore ternária (TT), e uma árvore que usa particionamento em quatro partições é referida como árvore quaternária (QT).
[078] Como mencionado acima, o termo “bloco” como usado neste documento pode ser uma porção, em particular, uma porção quadrada ou retangular, de uma imagem. Com referência, por exemplo, a HEVC e VVC, o bloco pode ser ou corresponder a uma unidade de árvore de codificação (CTU), uma unidade de codificação (CU), uma unidade de predição (PU), e unidade de transformação (TU) e/ou aos correspondentes blocos, por exemplo um bloco de árvore de codificação (CTB), um bloco de codificação (CB), um bloco de transformação (TB) ou bloco de predição (PB).
[079] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras luma, dois correspondentes CTBs de amostras croma de uma imagem que tem três matrizes de amostras, ou um CTB de amostras de uma imagem monocromática ou de uma imagem que é codificada usando três planos separados de cor e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N tal que a divisão de um componente em CTBs é um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras luma, dois correspondentes blocos de codificação de amostras croma de uma imagem que tem três matrizes de amostras, ou um bloco de codificação de amostras de uma imagem monocromática ou de uma imagem que é codificada usando três planos separados de cor e estruturas de sintaxe usados para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para algum valor de M e N tal que a divisão de um CTB em blocos de codificação é um particionamento.
[080] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs mediante utilização de uma estrutura de árvore quaternária representada como árvore de codificação. A decisão quanto a codificar uma área de imagem usando predição interimagem (temporal) ou intraimagem (espacial) é feita ao nível de CU. Cada CU pode ser adicionalmente dividida em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de uma PU, é aplicado o mesmo processo de predição e a informação relevante é transmitida ao decodificador em uma base de PU. Após obtenção do bloco residual pela aplicação do processo de predição baseado no tipo de divisão de PU, uma CU pode ser particionada em unidades de transformação (TUs) de acordo com outra estrutura de árvore quaternária similar à árvore de codificação para a CU.
[081] Em modalidades, por exemplo, de acordo com o último padrão de codificação de vídeo atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), é usado particionamento de árvore Quaternária e árvore binária (QTBT) para particionar um bloco de codificação. Na estrutura de blocos QTBT, uma CU pode ter uma forma tanto quadrada como retangular. Por exemplo, uma unidade de árvore de codificação (CTU) é primeiro particionada por uma estrutura de árvore quaternária. Os nós de folhas de árvore quaternária são adicionalmente particionados por uma estrutura de árvore binária ou árvore ternária (ou tripla). Os nós de folhas de árvore de particionamento são chamados unidades de codificação (CUs), e aquela segmentação é usada para predição e processamento de transformação sem qualquer particionamento adicional. Isto significa que a CU, PU e TU têm o mesmo tamanho de bloco na estrutura de blocos de codificação QTBT. Em paralelo, por exemplo, partição de árvore tripla foi também proposta para ser usada junto com a estrutura de blocos QTBT.
[082] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para executar qualquer combinação das técnicas de particionamento descritas neste documento.
[083] Como descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ótimo a partir de um conjunto de modos de predição (predeterminados). O conjunto de modos de predição pode compreender, por exemplo, modos de intrapredição e/ou modos de interpredição. Intrapredição
[084] O conjunto de modos de intrapredição pode compreender 35 diferentes modos de intrapredição, por exemplo modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo como definidos em HEVC, ou pode compreender 67 diferentes modos de intrapredição, por exemplo modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo como definidos para VVC. A unidade de intrapredição
254 é configurada para usar amostras reconstruídas de blocos adjacentes da mesma imagem atual para gerar um bloco de intrapredição 265 de acordo com um modo de intrapredição do conjunto de modos de intrapredição.
[085] A unidade de intrapredição 254 (ou em geral a unidade de seleção de modo 260) é adicionalmente configurada para enviar parâmetros de intrapredição (ou em geral informação indicativa do modo de intrapredição selecionado para o bloco) à unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificada 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de predição para decodificação. Interpredição
[086] O conjunto de (ou possíveis) modos de interpredição depende das imagens de referência disponíveis (isto é, anteriores pelo menos parcialmente às imagens decodificadas, por exemplo armazenadas em DBP 230) e de outros parâmetros de interpredição, por exemplo se toda a imagem de referência ou apenas uma parte, por exemplo uma área de janela de pesquisa ao redor da área do bloco atual, da imagem de referência é usada para pesquisar um bloco de referência de melhor correspondência, e/ou se é aplicada interpolação de píxeis, por exemplo interpolação de metade/semi-pel e/ou quarto de pel, ou não.
[087] Adicional aos modos de predição acima, pode ser aplicado modo de pular e/ou modo direto.
[088] A unidade de interpredição 244 pode incluir uma unidade de estimação de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na FIG.
2). A unidade de estimação de movimento pode ser configurada para receber ou obter o bloco de imagens 203 (bloco de imagens atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um de uma pluralidade de blocos previamente reconstruídos, por exemplo blocos reconstruídos de uma ou de uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimação de movimento.
Por exemplo uma sequência de vídeo pode compreender a imagem atual e as imagens previamente decodificadas 231, ou em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem ser parte de ou formar uma sequência de imagens que formam uma sequência de vídeo.
O codificador 20 pode, por exemplo, ser configurado para selecionar um bloco de referência a partir de uma pluralidade de blocos de referência da mesma ou de diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de interpredição à unidade de estimação de movimento.
Este deslocamento é também chamado vetor de movimento (MV). A unidade de compensação de movimento é configurada para obter, por exemplo receber, um parâmetro de interpredição e para executar interpredição baseada no ou usando o parâmetro de interpredição para obter um bloco de interpredição 265. Compensação de movimento, executada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição baseado no vetor de movimento/bloco determinado pela estimação de movimento, possivelmente executando interpolações para precisão de subpixel. Filtragem de interpolação pode gerar amostras adicionais de píxeis a partir de amostras conhecidas de píxeis, deste modo aumentando potencialmente o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagens. Após recepção do vetor de movimento para a PU do bloco de imagens atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[089] A unidade de compensação de movimento pode também gerar elementos de sintaxe associados aos blocos e à fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagens da fatia de vídeo. Codificação de Entropia
[090] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo um esquema de codificação de comprimento variável (VLC), um esquema VLC de contexto adaptativo (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária de contexto adaptativo (CABAC), codificação aritmética binária de contexto adaptativo baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) ou ignorar (sem compensação) os coeficientes quantizados 209, parâmetros de interpredição, parâmetros de intrapredição, parâmetros de filtro de malha e/ou outros elementos de sintaxe para obter dados de imagem codificada 21 que podem ser enviados por meio da saída 272, por exemplo na forma de um fluxo de bits codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para decodificação. O fluxo de bits codificados 21 pode ser transmitido ao decodificador de vídeo 30, ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[091] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador não baseado em transformação 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformação 206 para determinados blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade. Método de Codificação e Decodificação
[092] A FIG. 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas do presente pedido de patente. O decodificador de vídeo 30 é configurado para receber dados de imagem codificada 21 (por exemplo, fluxo de dados codificados 21), por exemplo codificados pelo codificador 20, para obter uma imagem decodificada 331. Os dados ou fluxo de bits de imagem codificados compreendem informação para decodificação dos dados de imagem codificada, por exemplo, dados que representam blocos de imagens de uma fatia de vídeo codificada e elementos de sintaxe associados. No exemplo da FIG. 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformação inversa 312, uma unidade de reconstrução 314 (por exemplo um somador 314), um filtro de malha 320, um buffer de imagens decodificadas (DBP) 330, uma unidade de interpredição 344 e uma unidade de intrapredição 354. A unidade de interpredição 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 100 da FIG. 2.
[093] Como explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformação inversa 212, a unidade de reconstrução 214, o filtro de malha 220, o buffer de imagens decodificadas (DBP) 230, a unidade de interpredição 344 e a unidade de intrapredição 354 são também referidas como formando o “decodificador embutido” do codificador de vídeo
20. Consequentemente, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformação inversa 312 pode ser idêntica em função à unidade de processamento de transformação inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro de malha 320 pode ser idêntico em função ao filtro de malha 220, e o buffer de imagens decodificadas 330 pode ser idêntico ao buffer de imagens decodificadas 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 aplicam-se correspondentemente às respectivas unidades e funções do decodificador de vídeo 30. Decodificação de Entropia
[094] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou em geral dados de imagem codificada 21) e executar, por exemplo, decodificação de entropia para os dados de imagem codificada 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação (não mostrados na FIG. 3), por exemplo qualquer ou todos os parâmetros de interpredição (por exemplo índice de imagem de referência e vetor de movimento), parâmetro de intrapredição (por exemplo modo ou índice de intrapredição), parâmetros de transformação, parâmetros de quantização, parâmetros de filtro de malha e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos de decodificação ou esquemas correspondentes aos esquemas de codificação como descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode adicionalmente ser configurada para fornecer parâmetros de interpredição, parâmetro de intrapredição e/ou outros elementos de sintaxe à unidade de seleção de modo 360 e outros parâmetros a outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe ao nível de fatia de vídeo e/ou ao nível de bloco de vídeo. Quantização Inversa
[095] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou em geral informação relacionada à quantização inversa) e coeficientes quantizados dos dados de imagem codificada 21 (por exemplo por análise e/ou decodificação, por exemplo por unidade de decodificação de entropia 304) e aplicar baseada nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que podem também ser referidos como coeficientes de transformação 311. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização determinado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deveria ser aplicado. Transformação Inversa
[096] A unidade de processamento de transformação inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformação 311, e aplicar uma transformação aos coeficientes desquantizados 311 com a finalidade de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 podem também ser referidos como blocos de transformação 313. A transformação pode ser uma transformação inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformação inteira inversa, ou um processo de transformação inversa conceitualmente similar. A unidade de processamento de transformação inversa 312 pode ser adicionalmente configurada para receber parâmetros de transformação ou correspondente informação dos dados de imagem decodificada 21 (por exemplo por análise e/ou decodificação, por exemplo por unidade de decodificação de entropia 304) para determinar a transformação a ser aplicada aos coeficientes desquantizados 311. Reconstrução
[097] A unidade de reconstrução 314 (por exemplo adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313 ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo pela adição dos valores de amostra do bloco residual reconstruído 313 e dos valores de amostras do bloco de predição 365. Filtragem
[098] A unidade de filtro de malha 320 (quer dentro da malha de codificação ou após a malha de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo para suavizar transições de píxeis, ou de outro modo melhorar a qualidade de vídeo. A unidade de filtro de malha 320 pode compreender um ou mais filtros de malha tais como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo um filtro bilateral, um filtro de malha adaptativa (ALF), um filtro de nitidez, filtros de suavização ou filtros colaborativos, ou qualquer combinação destes. Embora a unidade de filtro de malha 320 seja mostrada na FIG. 3 como sendo um filtro dentro da malha, em outra configurações, a unidade de filtro de malha 320 pode ser implementado como um filtro pós malha. Buffer de Imagens Decodificadas
[099] Os blocos de vídeo decodificados 321 de uma imagem são em seguida armazenados no buffer de imagens decodificadas 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para enviar exibição respectiva.
[100] O decodificador 30 é configurado para enviar a imagem decodificada 311, por exemplo por meio da saída 312, para apresentação ou visualização a um usuário.
Predição
[101] A unidade de interpredição 344 pode ser idêntica à unidade de interpredição 244 (em particular à unidade de compensação de movimento) e a unidade de intrapredição 354 pode ser idêntica à unidade de interpredição 254 em função, e executar decisões de divisão ou particionamento e predição baseadas nos parâmetros de particionamento e/ou predição ou respectiva informação recebida dos dados de imagem codificada 21 (por exemplo por análise e/ou decodificação, por exemplo por unidade de decodificação de entropia 304). A unidade de seleção de modo 360 pode ser configurada para executar a predição (intrapredição ou interpredição) por bloco baseada em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[102] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 354 da unidade de seleção de modo 360 é configurada para gerar bloco de predição 365 para um bloco de imagens da fatia de vídeo atual baseada em um modo de intrapredição sinalizado e dados de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia intercodificada (isto é, B ou P), a unidade de interpredição 344 (por exemplo unidade de compensação de movimento) da unidade de seleção de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual baseada nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para interpredição, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O codificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão baseadas em imagens de referência armazenadas em DPB 330.
[103] A unidade de seleção de modo 360 é configurada para determinar a informação de predição para um bloco de vídeo da fatia de vídeo atual por análise dos vetores de movimento e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de seleção de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intrapredição ou interpredição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagens de referência, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[104] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificada 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem de malha
320. Por exemplo, um decodificador não baseado em transformação 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformação inversa 312 para determinados blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformação inversa 312 combinadas em uma única unidade.
[105] Deverá ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de uma etapa atual pode ser adicionalmente processado e em seguida enviado à etapa seguinte. Por exemplo, após filtragem de interpolação, derivação de vetor de movimento ou filtragem de malha, uma operação adicional, tal como Grampo (Clip) ou deslocamento, pode ser executada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem de malha.
[106] Deverá ser observado que operações adicionais podem ser aplicadas aos vetores de movimento obtidos de bloco atual (incluindo vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afins, planares, ATMVP, vetores de movimento temporal etc., mas não limitadas a estes). Por exemplo, o valor de vetor de movimento é restrito a uma faixa predefinida de acordo com seu bit de representação. Se o bit de representação do vetor de movimento é Profundidade de bit, então a faixa é -2^(Profundidade de bit-1)~2^(Profundidade de bit-1)-1, onde “^” significa exponenciação. Por exemplo, se Profundidade de bit é definida igual a 16, a faixa é -32768~32767; se Profundidade de bit é definida igual a 18, a faixa é -131.072~131.071. Este documento fornece dois métodos para restringir o vetor de movimento.
[107] Método 1: remover o MSB (bit mais significativo) de excesso por operações seguintes ux=(mvx+2Profundidade de bit)% 2Profundidade de bit (1)
mvx=(ux>=2Profundidade de bit-1)?(ux-2Profundidade de bit):ux (2) uy=(mvy+2Profundidade de bit)% 2Profundidade de bit (3) mvy=(uy>=2Profundidade de bit-1)?(uy-2Profundidade de bit):uy (4).
[108] Por exemplo, se o valor de mvx é -32769, após aplicação das fórmulas (1) e (2), o valor resultante é 32767. Em sistema de computador, números decimais são armazenados como complemento de dois. O complemento de dois de -32769 é 1,0111,1111,1111,1111 (17 bits), em seguida o MSB é descartado, de modo que o complemento de dois resultante é 0111,1111,1111,1111 (número decimal é 32767), que é igual à saída pela aplicação das fórmulas (1) e (2); ux=(mvpx+mvdx+2Profundidade de bit)% 2Profundidade de bit (5) mvx=(ux>=2Profundidade de bit-1)?(ux-2Profundidade de bit):ux (6) uy=(mvpy+mvdy+2Profundidade de bit)% 2Profundidade de bit (7) mvy=(uy>=2Profundidade de bit-1)?(uy-2Profundidade de bit):uy (8).
[109] As operações podem ser aplicadas durante a soma de mvp e mvd, como mostrado nas fórmulas (5) a (8).
[110] Método 2: remover o MSB de excesso por grampeamento do valor vx=Grampo3(-2Profundidade de bit-1, 2Profundidade de bit-1 -1,vx) vy=Grampo3(-2Profundidade de bit-1, 2Profundidade de bit-1 -1,vy) onde a definição da função Grampo3 é como segue: x ; z<x Grampo3(x, y, z)= y ; z>y . z ; caso contrário
[111] A FIG. 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400 de acordo com uma modalidade da divulgação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades divulgadas como descritas neste documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador tal como o decodificador de vídeo 30 da FIG. 1A ou um codificador tal como o codificador de vídeo 20 da FIG. 1A.
[112] O dispositivo de decodificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entrada 410) e unidades de recepção (Rx) 420 para recepção de dados; um processador, unidade lógica, ou unidade de processamento central (CPU) 430 para processar os dados; unidades de transmissão (Tx) 440 e portas de egresso 450 (ou portas de saída 450) para transmissão dos dados; e uma memória 460 para armazenamento dos dados. O dispositivo de codificação de vídeo 400 pode também compreender componentes óticos para elétricos (OE) e componentes elétricos para óticos (EO) acoplados às portas de entrada 410, às unidades de recepção 420, às unidades de transmissão 440 e às portas de saída 450 para entrada ou saída de sinais óticos ou elétricos.
[113] O processador 430 é implementado por hardware e software. O processador 430 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de entrada 410, unidades de recepção 420, unidades de transmissão 440, portas de saída 450 e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades divulgadas descritas neste documento. Por exemplo, o módulo de codificação 470 implementa, processa, prepara, ou fornece as diversas operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece um melhoramento substancial à funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador
430.
[114] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados em excesso, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante execução dos programas. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória apenas de leitura (ROM), memória de acesso aleatório (RAM), memória ternária de conteúdo endereçável (TCAM), e/ou memória estática de acesso aleatório (SRAM).
[115] A FIG. 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como qualquer ou ambos do dispositivo fonte 12 e do dispositivo de destino 14 da FIG. 1 de acordo com uma modalidade exemplificativa.
[116] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente o processador 502 pode ser qualquer outro tipo de dispositivo, ou múltiplos dispositivos, capaz de manipular ou processar informação não existente ou futuramente desenvolvida. Embora as implementações divulgadas possam ser praticadas com um único processador como mostrado, por exemplo, o processador 502, podem ser obtidas vantagens em velocidade e eficiência usando mais do que um processador.
[117] A memória 504 no aparelho 500 pode ser um dispositivo de memória apenas de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo de dispositivo de armazenamento pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir adicionalmente um sistema operacional 508 e programas aplicativos 510, os programas aplicativos 510 incluindo pelo menos um programa que permite que o processador 502 execute os métodos descritos neste documento. Por exemplo, os programas aplicativos 510 podem incluir aplicativos 1 a N, que incluem adicionalmente um aplicativo de codificação de vídeo que executa os métodos descritos neste documento.
[118] O aparelho 500 pode também incluir um ou mais dispositivos de saída, tal como uma tela 518. A tela 518 pode ser, em um exemplo, uma tela sensível ao toque que combina uma tela com um elemento sensível ao toque que é operável para detectar entradas por toque. A tela 518 pode estar acoplada ao processador 502 por meio do barramento
512.
[119] Embora retratado neste documento como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode estar acoplado diretamente aos outros componentes do aparelho 500 ou pode ser acessado por meio de uma rede e pode compreender uma única unidade integrada tal como um cartão de memória ou múltiplas unidades tais como múltiplos cartões de memória. O aparelho 500 pode, portanto, ser implementado em uma ampla variedade de configurações.
Lista de candidatos a fusão
[120] O processo de construção da lista de candidatos a movimentos de fusão é introduzido pelo padrão ITU-T H.265. Em outra modalidade, a lista de candidatos a movimentos de fusão é usada por predição estendida a fusão de Codificação de Vídeo Versátil (VVC).
[121] Operação de fusão de blocos é um modo especial (também chamado como “modo de Fusão”) para codificação de dados de movimento. A operação de fusão de blocos permite que um bloco atual use a mesma informação de movimento de um bloco adjacente. A informação de movimento contém dados de movimento, e os dados de movimento incluem a informação de serem usadas uma ou duas listas de imagens de referência, assim como um índice de referência e um vetor de movimento para cada lista de imagens de referência. A operação de fusão de blocos é especialmente útil se dois blocos adjacentes correspondem a um mesmo objeto não deformável no quadro de imagem. Neste caso os dois blocos devem ser preditos usando os mesmos vetores de movimento e mesma imagem de referência, pelo que a informação de movimento é idêntica para ambos os blocos.
[122] Em uma implementação, após verificar se um bloco adjacente está disponível e contém informação de movimento, são realizadas algumas verificações de redundâncias adicionais antes de considerar todos os dados de movimento do bloco adjacente como um candidato a informação de movimento.
[123] Em uma implementação, a lista de candidatos a fusão é construída pela inclusão dos seguintes cinco tipos de candidatos em ordem:
1) MVP espacial de CUs adjacentes espaciais 2) MVP temporal de CUs colocalizadas 3) MVP baseado em histórico de uma tabela FIFO 4) MVP médio em pares 5) MVs zero.
[124] O tamanho da lista de fusão é sinalizado em cabeçalho de fatia e o tamanho máximo permitido da lista de fusão é 6, por exemplo. Para cada código de CU em modo de fusão, um índice de melhor candidato a fusão é codificado.
[125] É fornecido o processo de geração de cada categoria de candidatos a fusão. Derivação de candidatos espaciais
[126] Em uma implementação, um máximo de quatro candidatos a fusão é selecionado entre candidatos localizados nas posições retratadas na FIG. 12. A ordem de derivação é B1, A1, B0, A0 e B2. A posição B2 é considerada apenas quando qualquer CU de posição A0, B0, B1, A1 não está disponível (por exemplo porque pertence a outra fatia ou arquivo) ou está intracodificado. Após o candidato na posição B1 ser adicionado, a adição dos restantes candidatos é submetida a verificação que garante que candidatos com a mesma informação de movimento são excluídos da lista de modo que a eficiência de codificação é melhorada. Para reduzir complexidade computacional, nem todos os possíveis pares de candidatos são considerados na verificação de redundância mencionada. Ao invés, apenas os pares ligados por uma seta na FIG. 13 são considerados e um candidato é só adicionado à lista se o correspondente candidato usado para verificação de redundância não tiver a mesma informação de movimento.
[127] Durante a implementação, a ordem, a posição e o número de adjacentes espaciais que são considerados como mutáveis no exemplo acima não poderão ser considerados como restrições. Derivação de candidatos temporais
[128] Em uma implementação, apenas um candidato é adicionado à lista. Particularmente, na derivação deste candidato a fusão temporal, um vetor de movimento escalado é obtido baseado em CU colocalizada pertencente à imagem de referência colocada. A lista de imagens de referência a ser usada para derivação da CU colocalizada é explicitamente sinalizada no cabeçalho de fatia. O vetor de movimento escalado para candidato a fusão temporal é obtido como ilustrado pela linha pontilhada na FIG. 14, que é escalada a partir do vetor de movimento da CU colocalizada usando as distâncias POC, tb e td, onde tb é definido como sendo a diferença POC entre a imagem de referência da imagem atual e a imagem atual e td é definido como sendo a diferença POC entre a imagem de referência da imagem colocalizada e a imagem colocalizada. O índice de imagem de referência do candidato a fusão temporal é definido igual a zero.
[129] A posição para o candidato temporal é selecionada entre candidatos C0 e C1, como representado na FIG. 15. Se CU na posição C0 não está disponível, está intracodificada, ou está fora da linha atual de CTUs, a posição C1 é usada. Caso contrário, a posição C0 é usada na derivação do candidato a fusão temporal. Derivação de candidato a fusão baseado em histórico
[130] Os candidatos a fusão de MVP baseado em histórico (HMVP) são adicionados à lista de fusão após o MVP espacial e TMVP. Em uma implementação, a informação de movimento de um bloco previamente codificado é armazenada em uma tabela e usada como MVP para a CU atual. A tabela com múltiplos candidatos de HMVP é mantida durante o processo de codificação/decodificação. A tabela é reiniciada (esvaziada) quando uma nova linha de CTU é encontrada. Sempre que existe uma CU intercodificada não sub-bloco, a informação de movimento associada é adicionada à última entrada da tabela como um novo candidato de HMVP.
[131] O tamanho S da tabela de HMVP é definido como 5, que indica que até 5 candidatos de MVP baseado em Histórico (HMVP) podem ser adicionados à tabela, por exemplo. Quando inserindo um novo candidato a movimento à tabela, é utilizada uma regra restrita primeira entrada primeira saída (FIFO) em que verificação de redundância é primeiramente aplicada para encontrar se existe um HMVP idêntico na tabela. Se encontrado, o HMVP idêntico é removido da tabela e todos os outros candidatos de HMVP a seguir são movidos para diante.
[132] Candidatos de HMVP poderiam ser usados no processo de construção de lista de candidatos a fusão. Os últimos diversos candidatos de HMVP na tabela são verificados em ordem e inseridos na lista de candidatos após o candidato de TMVP. Verificação de redundância é aplicada aos candidatos de HMVP para o candidato a fusão espacial ou temporal.
[133] Para reduzir o número de operações de verificação de redundância, diferentes simplificações podem ser introduzidas. Geralmente, logo que o número total de candidatos a fusão disponíveis alcança os candidatos a fusão maximamente permitidos menos 1, o processo de construção de lista de candidatos a fusão a partir de HMVP termina. Derivação de candidatos a fusão médios em pares
[134] Candidatos médios em pares são gerados pelo cálculo da média de pares predefinidos de candidatos na lista de candidatos a fusão existentes, e o par predefinido é definido como (0, 1), por exemplo, onde os números representam os índices de fusão para a lista de candidatos a fusão. Os vetores de movimento médios são calculados separadamente para cada lista de referência. Se ambos os vetores de movimento estão disponíveis em uma lista, estes dois vetores de movimento são mediados mesmo quando apontam para diferentes imagens de referência; se apenas um vetor de movimento está disponível, usar aquele diretamente; se nenhum vetor de movimento está disponível, manter esta lista inválida.
[135] Em um exemplo referente à Construção de Lista de Candidatos a Fusão de acordo com ITU-T H.265, uma lista de candidatos é construída baseada nos seguintes candidatos:
1. até quatro candidatos espaciais que são obtidos a partir de cinco blocos espaciais adjacentes,
2. um candidato temporal é obtido a partir de dois blocos temporais colocalizados,
3. candidatos adicionais incluindo candidatos bipreditivos e,
4. candidatos de vetor de movimento zero. Candidatos espaciais
[136] As informações de movimento de blocos espaciais adjacentes são primeiro adicionadas na lista de candidatos a fusão (em um exemplo, a lista de candidatos a fusão pode ser uma lista vazia antes do primeiro vetor de movimento ser adicionado à lista de candidatos a fusão) como candidatos a informação de movimento. Neste documento, os blocos adjacentes que são considerados para ser inseridos na lita de fusão são ilustrados na FIG. 7b. Para fusão de blocos de interpredição, até quatro candidatos são inseridos na lista de fusão pela verificação sequencial de A1, B1, B0, A0 e B2, nesta ordem.
[137] Informação de movimento pode conter dados de movimento, incluindo a informação de serem usadas uma ou duas listas de imagens de referência assim como um índice de referência e um vetor de movimento para cada lista de imagens de referência.
[138] Em um exemplo, após verificar se um bloco adjacente está disponível e se o bloco adjacente contém informação de movimento, são realizadas algumas verificações de redundâncias adicionais antes de considerar todos os dados de movimento do bloco adjacente como um candidato a informação de movimento. Estas verificações de redundância podem ser divididas em duas categorias: categoria 1, evitar ter candidatos com dados de movimento redundantes na lista, categoria 2, evitar fundir duas partições que poderiam ser expressas por outro meio que criaria sintaxe redundante. Candidatos Temporais
[139] A FIG. 7a ilustra as coordenadas dos blocos de onde candidatos a informação de movimento temporal são recuperados. Bloco colocado é o bloco que tem as mesmas coordenadas -x, -y do bloco atual, mas está em uma imagem diferente (uma das imagens de referência). Os candidatos a informação de movimento temporal são adicionados à lista de imagens se a lista não estiver completa (em um exemplo, a lista de fusão não está completa quando uma quantidade de candidatos na lista de fusão é menor que um limite, por exemplo, o limite pode ser 4, 5, 6 etc.). Candidatos gerados
[140] Após inserção de candidatos a informação de movimento espacial e temporal, se a lista de fusão ainda não estiver completa, são adicionados candidatos gerados para completar a lista. Em um exemplo, um tamanho da lista de fusão é indicado no conjunto de parâmetros de sequência e é fixado por toda a sequência de vídeo codificado. Bipredição
[141] Um modo de interpredição é chamada “bipredição”, onde 2 vetores de movimento são usados para predizer um bloco. Os vetores de movimento podem apontar para a mesma imagem de referência ou diferentes imagens de referência, onde uma imagem de referência pode ser indicada por um ID de lista de imagens de referência e um índice de imagem de referência. Por exemplo, um primeiro vetor de movimento pode apontar para uma primeira imagem na lista de imagens de referência L0 e um segundo vetor de movimento pode apontar para uma primeira imagem na lista de imagens de referência L1. Duas listas de imagens de referência (por exemplo, L0 e L1) podem ser mantidas, a imagem apontada pelo primeiro vetor de movimento é selecionada da lista L0 e a imagem apontada pelo segundo vetor de movimento é selecionada da lista L1.
[142] Em um exemplo, se uma informação de movimento indica bipredição, então a informação de movimento inclui duas partes: • parte L0: um vetor de movimento e um índice de imagem de referência que aponta para uma entrada na lista de imagens de referência L0;
• parte L1: um vetor de movimento e um índice de imagem de referência que aponta para uma entrada na lista de imagens de referência L1.
[143] Contagem de Ordem de Imagens (POC): uma variável que está associada a cada imagem, identifica exclusivamente a imagem associada entre todas as imagens na CVS (Sequência de Vídeo Codificado). Quando a imagem associada estiver para ser emitida pelo buffer de imagens decodificadas, a POC é usada para indicar uma posição da imagem associada na ordem de entrada, que é relativa às posições de ordem de saída das outras imagens na mesma CVS que estão para ser emitidas pelo buffer de imagens decodificadas.
[144] As listas de imagens de referência L0 e L1 devem incluir uma ou mais imagens de referência, cada imagem de referência é identificada com uma POC. A associação com cada índice de referência e o valor de POC deve ser sinalizado em um fluxo de bits. Como um exemplo, as listas de imagens de referência L0 e L1 podem incluir as seguintes imagens de referência. Lista de Imagens de Referência Índice de Referência POC L0 0 12 L0 1 13 L1 0 13 L1 1 14
[145] No exemplo acima, a primeira entrada (indicada pelo índice de referência 0) na lista de imagens de referência L1 é uma imagem de referência com um valor de POC
13. A segunda entrada (indicada pelo índice de referência 1) na lista de imagens de referência L1 é uma imagem de referência com um valor de POC 14.
Modo de predição triangular
[146] O conceito do modo de predição triangular é uma partição triangular para predição compensada de movimento. Como um exemplo mostrado na FIG. 9, uma CU é dividida em duas unidades de predição triangular, em ambas as direções diagonal ou diagonal inversa. Cada unidade de predição triangular na CU é interpredita usando vetor de movimento de unipredição e índice de quadro de referência que são obtidos de uma lista de candidatos a unipredição. Um processo adaptativo de ponderação é executado na borda diagonal após predição das unidades de predição triangular. Em seguida, são aplicados processos de transformação e quantização a toda a CU. É observado que este modo é apenas aplicado para modos de pular e fusão.
[147] No modo de predição triangular, um bloco é dividido em duas partes triangulares (como na FIG. 9), e cada parte pode ser predita usando um vetor de movimento. Os vetores de movimento que são usados para predizer uma parte de triângulo (representada com PU1) pode ser diferente dos vetores de movimento que são usados para predizer a outra parte de triângulo (representada com PU2). É observado que cada parte pode ser predita apenas usando um único vetor de movimento (unipredição), com a finalidade de reduzir a complexidade da execução do modo de predição triangular. Em outras palavras, a PU1 e PU2 não podem ser preditas usando bipredição. Modo de predição de sub-blocos
[148] O modo de predição triangular é um caso especial de predição de sub-blocos, onde um bloco é dividido em dois blocos. No exemplo acima, duas direções de divisão de bloco são ilustradas (partições de 45 graus e 135 graus). Contudo,
é observado que são também possíveis outros ângulos de partição e proporções de partição (por exemplo, exemplos na FIG. 11).
[149] Em alguns exemplos, um bloco é dividido em duas partes de sub-blocos, e a cada parte é aplicada unipredição. Em comparação com o modo de predição triangular, a diferença é como o bloco é dividido em duas partes, portanto representa uma versão generalizada de predição triangular. Como um exemplo, os sub-blocos podem ser retangulares ou não retangulares dependendo do ângulo de partição. Em alguns exemplos, um bloco atual consiste em duas unidades de predição, e as duas unidades de predição são divididas por uma linha de divisão virtual. Neste caso, é dito que o bloco atual é predito por um modo de predição geométrico.
[150] O processo de construção de lista de fusão em ITU- T H.265 e VVC emite uma lista de candidatos a informação de movimento. O processo de construção de lista de fusão de VVC é descrito na seção “8.3.2.2 Processo de derivação para vetores de movimento luma para modo de fusão” do documento JVET-L1001_v2 Codificação de Vídeo Versátil (Projeto 3), que está publicamente disponível sob http://phenix.it- sudparis.eu/jvet/. O termo informação de movimento refere- se aos dados de movimento que são necessários para executar processo de predição compensada de movimento. A informação de movimento geralmente refere-se às seguintes informações: • se unipredição ou bipredição se aplicam ao bloco; • o ID da imagem de referência que é usada na predição (2 IDs se bipredição se aplica ao bloco); • vetor de movimento (2 vetores de movimento se bipredição se aplica ao bloco);
• informações adicionais.
[151] Em uma versão recente do texto de projeto de especificação de VVC, o processo de construção de lista de fusão é descrito na seção “8.3.2.2 Processo de derivação para vetores de movimento luma para modo de fusão” do documento JVET-L1001_v7 Codificação de Vídeo Versátil (Projeto 3).
[152] É observado que aspectos apresentados neste pedido de patente não são restritos aos três exemplos acima. Os processos de construção de lista de fusão descritos nos exemplos acima têm a comunalidade que uma lista de fusão construída é usada para obter uma predição de um bloco de codificação quando o modo de predição triangular não é aplicado ao bloco de codificação. Os presentes métodos de divulgação para gerar uma segunda lista de candidatos a informação de movimento usam os candidatos na lista de fusão (primeira lista), enquanto os candidatos na lista de fusão são gerados de acordo com algum método que poderia ser um método descrito em qualquer versão de VVC ou ITU-T H.265.
[153] Em VVC e H.265, a saída de um processo de construção de lista de fusão inclui informação de movimento de N candidatos. O número N está tipicamente incluído em um fluxo de bits e pode ser um número inteiro positivo tal como 5, 6 etc. Os candidatos que estão incluídos na lista de fusão construída podem incluir informação de unipredição ou informação de bipredição. Isto significa que o candidato que é selecionado a partir da lista de fusão deve indicar uma operação de bipredição.
[154] Se for aplicado modo de predição triangular a um bloco de codificação, cada parte de triângulo no bloco de codificação deve ser aplicada com unipredição e não ser aplicada com bipredição (devido a problemas de implementação de hardware). Isto significa que candidatos na lista regular de fusão que indicam bipredição não podem ser usados, o que provoca queda no desempenho.
[155] O problema pode ser reformulado como segue: • se um bloco aplica modo de predição triangular, uma indicação está incluída em um fluxo de bits e é usada para indicar uma informação de movimento usada para predizer cada parte triangular. A indicação, por exemplo, pode ser na forma de dois índices de fusão, onde o primeiro índice de fusão especifica uma entrada na lista de fusão que é aplicada para predizer uma primeira parte, e um segundo índice de fusão especifica uma entrada na lista de fusão que é aplicada para predizer a segunda parte; • é proibido aplicar bipredição a partes individuais, o que significa que informações de movimento que são indicadas para ser usadas em cada parte devem indicar unipredição; • na lista de fusão é impossível ter candidatos a informação de movimento de unipredição e de bipredição. Uma vez que é proibido selecionar candidatos a bipredição, isto provoca degradação. O tamanho da lista de candidatos é efetivamente reduzido, uma vez que apenas podem ser usados candidatos a unipredição.
[156] Em VVC, se um bloco tem tamanho específico (4 amostras em largura ou 4 amostras em altura), é proibido aplicar bipredição para predizer o bloco. Os blocos 8x4/4x8 são os menores blocos de interpredição possíveis que podem ser obtidos usando particionamento de bloco. Bipredição não é permitida para o menor bloco devido a problemas de complexidade de hardware, uma vez que as implementações de hardware necessitam considerar o menor bloco possível como seu pior caso de medida de complexidade. Portanto, a proibição da bipredição para o menor bloco reduz o pior caso de complexidade para implementações de hardware.
[157] No caso de VVC, se um bloco tem um tamanho 8x4/4x8, e se o bloco é codificado em modo de fusão, existe um problema similar àquele no caso do problema 1.
[158] Em uma modalidade da presente divulgação (modalidade 1), são usadas as etapas a seguir para construir uma lista de fusão.
[159] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[160] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em H.265 e VVC.
[161] Etapa 2: construir uma segunda lista usando os candidatos na primeira lista como segue: iniciar a partir do primeiro candidato da primeira lista.
[162] Etapa 2.1: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista; ou etapa 2.2: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição, e os dois candidatos a unipredição são adicionados na segunda lista de acordo com a ordem a seguir: • o primeiro candidato a informação de movimento inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0 (o candidato é definido como candidato a unipredição antes de inserção na segunda lista); • o segundo candidato a informação de movimento inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1 (o candidato é definido como candidato a unipredição antes de inserção na segunda lista).
[163] Etapa 2.3: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.1 ou Etapa 2.2 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[164] A primeira lista de fusão e a segunda lista de fusão podem ser usadas no processo de interpredição de um bloco atual.
[165] Em um exemplo, se for aplicada predição triangular ao bloco atual, são selecionados dois candidatos na segunda lista para executar predição triangular, um candidato é usado no processo de predição de uma primeira parte triangular, e o outro candidato é usado na predição de uma segunda parte triangular.
[166] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato na segunda lista é selecionado para executar interpredição do bloco atual. Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[167] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e um modo de predição triangular não for aplicado ao bloco atual, um candidato na primeira lista é selecionado para executar predição do bloco atual, este exemplo sendo o mesmo que o processo relatado divulgado em ITU-T H.265 ou VVC.
[168] Em um exemplo, a primeira lista de candidatos a movimento é a lista de fusão.
[169] É observado que uma vez que a lista de candidatos para a predição de triângulo (ou sub-bloco) é obtida a partir da lista de candidatos a modo de Fusão, em uma implementação viável, a lista de candidatos pode não ser uma lista independente. O candidato na segunda lista de candidatos pode ser representado pelos pontos indicadores para um candidato na lista de candidatos a modo de Fusão.
[170] A modalidade 1 divulga um método de construção de uma lista de candidatos a informação de movimento (segunda lista), a segunda lista compreendendo candidatos a unipredição.
[171] A primeira lista é usada na predição de um bloco, se predição triangular não for aplicada ao bloco. Em um exemplo, a primeira lista é usada para blocos de codificação que são indicados para aplicar modo de fusão, mas não indicados para aplicar modo de predição triangular.
[172] A segunda lista é construída baseada na primeira lista. Se uma predição triangular for aplicada a um bloco, os candidatos a informação de movimento (ou vetor de movimento) são selecionados a partir da segunda lista. A segunda lista compreende candidatos a unipredição, os candidatos podendo ser aplicados às primeira e segunda partes triangulares do bloco. Em um exemplo, 2 índices de fusão são codificados em um fluxo de bits se modo de fusão triangular for aplicado ao bloco. Os índices de fusão identificam que candidato na segunda lista é usado para a primeira ou para a segunda parte triangular do bloco.
[173] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na segunda lista é usado para predizer o bloco. Se um tamanho de bloco do bloco atual for maior que um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual não for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na primeira lista é usado para predizer o bloco.
[174] A FIG. 6 retrata o fluxograma de uma possível implementação da modalidade 1. O fluxograma mostra a construção da segunda lista de candidatos a movimento baseada na primeira lista de candidatos a movimento. De acordo com 602, se for aplicada predição triangular ao bloco, a segunda lista de candidatos a movimento é usada para predizer o bloco; se não for aplicada predição triangular ao bloco, a primeira lista de candidatos a movimento é usada para predizer o bloco. Em outro exemplo, a condição em 602 pode compreender uma verificação de tamanho de bloco. De acordo com o resultado da verificação de tamanho de bloco, a primeira lista de candidatos a movimento ou a segunda lista de candidatos a movimento deve ser usada para predizer o bloco.
[175] Em outro exemplo, se o bloco é determinado não aplicar predição triangular, outras condições podem ser verificadas para decidir se o bloco usa a primeira lista de candidatos a movimento ou não. Em um exemplo, se um bloco é determinado aplicar predição triangular, é adicionalmente determinado se o bloco aplica modo de fusão ou não. Se modo de fusão for aplicado, a primeira lista de candidatos a movimento é usada na predição do bloco; e se modo de fusão não for aplicado, outros métodos de predição do bloco atual (por exemplo intrapredição) podem ser aplicados.
[176] De acordo com a modalidade 1, uma segunda lista de candidatos a movimento é construída baseada na primeira lista de candidatos a movimento. A segunda lista pode compreender apenas candidatos a unipredição, portanto tendo a vantagem de não compreender candidatos não utilizáveis (por exemplo, candidatos a bipredição). Portanto o indicador para sinalizar que candidato é usado pode ser representado por menor número de bits, o que melhora a eficiência de compressão.
[177] Em uma modalidade da presente divulgação (modalidade 2), são usadas as etapas a seguir para construir uma lista de fusão.
[178] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[179] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em HEVC e VVC.
[180] Etapa 2: construir uma segunda lista usando os candidatos na primeira lista como segue: iniciar a partir do primeiro candidato da primeira lista.
[181] Etapa 2.1: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista; ou etapa 2.2: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição, e os dois candidatos a unipredição são adicionados na segunda lista de acordo com a ordem a seguir: • o primeiro candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0. O vetor de movimento é representado como mv_L0 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L0) é representado como POC_L0; • o segundo candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1. O vetor de movimento é representado como mv_L1 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L1) é representado como POC_L1. Se POC_L0 for igual a POC_L1, e mv_L0 for similar a mv_L1, então o segundo candidato não está compreendido na segunda lista. O seguinte candidato está incluído na segunda lista se POC_L0 não for igual a POC_L1 ou se mv_L0 não for similar a mv_L1.
[182] Etapa 2.3: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.1 ou Etapa 2.2 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[183] A primeira lista de fusão e a segunda lista de fusão podem ser usadas no processo de interpredição de um bloco atual.
[184] Em um exemplo, se for aplicada predição triangular (ou predição de sub-blocos) ao bloco atual, são selecionados dois candidatos na segunda lista para executar predição triangular (ou predição de sub-blocos), um candidato é usado no processo de predição de uma primeira parte triangular e o outro candidato é usado na predição de uma segunda parte triangular.
[185] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato a informação de movimento na segunda lista é selecionado para executar interpredição do bloco atual. Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[186] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e um modo de predição triangular não for aplicado ao bloco atual, um candidato na primeira lista é selecionado para executar predição do bloco atual, este exemplo sendo o mesmo que o processo relatado divulgado em ITU-T H.265 ou VVC.
[187] Em um exemplo, o segundo candidato na Etapa 2.2 não é adicionado à segunda lista se POC_L0 for igual a POC_L1 e se mv_L0 for idêntico a mv_L1.
[188] Em outro exemplo, o segundo candidato na Etapa 2.2 não é adicionado à segunda lista se o índice de imagem de referência da parte L0 for igual ao índice de imagem de referência da parte L1 e se mv_L0 for idêntico (ou alternativamente similar) a mv_L1.
[189] Em um exemplo, a similaridade de dois vetores de movimento pode ser determinada de acordo com as seguintes desigualdades: -K<(MV1.x-MV2.x)<K e -K<(MV1.y-MV2.y)<K, onde MV1.x representa o componente x do primeiro vetor de movimento (o significado de MV2.x é similar a MV1.x), MV1.y (o significado de MV2.y é similar a MV1.y) representa o componente y, K é um número positivo. Neste exemplo, se ambas as desigualdades se mantiverem, o vetor de movimento MV1 é considerado similar ao vetor de movimento MV2.
[190] Em outro exemplo, a similaridade pode ser determinada baseada nas seguintes igualdades: (MV1.x>>N)-(MV2.x>>N)==K e (MV1.x>>N)-(MV2.x>>N)==K.
[191] Onde x>>y representa deslocamento aritmético à direita de uma representação de dois números inteiros complementares de dígitos binários x por y. Esta função é definida apenas para valores inteiros não negativos de y. Bits deslocados para dentro dos bits mais significativos (MSBs) como resultado do deslocamento à direita têm um valor igual ao MSB de x antes da operação de deslocamento. “==” é a operação racional que é verdadeira quando cada lado do operador é idêntico. Neste exemplo se ambas as desigualdades se mantiverem, o vetor de movimento MV1 é considerado similar ao vetor de movimento MV2.
[192] Em um exemplo, a primeira lista de candidatos a movimento é a lista de fusão.
[193] É observado que uma vez que a lista de candidatos para a predição de triângulo (ou sub-bloco) é obtida a partir da lista de candidatos a modo de Fusão, em uma implementação viável, a lista de candidatos pode não ser uma lista independente. O candidato na segunda lista de candidatos pode ser representado pelos pontos indicadores para um candidato na lista de candidatos a modo de Fusão.
[194] O fluxograma para uma possível implementação da modalidade 2 é ilustrado na FIG. 8. A diferença para a modalidade 1 é na etapa 811. Na etapa 811, a parte L1 do candidato bipredito é comparada com a parte L0 (vetor de movimento da parte L0 é comparado com o vetor de movimento da parte L1, e a POC da imagem de referência da parte L0 é comparada com a POC da imagem de referência da parte L1). Se de acordo com uma medição de similaridade a parte L0 for similar à parte L1, então o candidato a unipredição que é gerado baseado na parte L1 não é inserido na segunda lista de candidatos a movimento.
[195] Na etapa 2.2, o segundo candidato (que é um candidato a unipredição que é gerado baseado na parte L1 do candidato a bipredição da primeira lista de candidatos a movimento) é adicionado à segunda lista de candidatos a movimento apenas se for suficientemente diferente do primeiro candidato (que é um candidato a unipredição que é gerado baseado na parte L0 do candidato a bipredição da primeira lista de candidatos a movimento).
[196] Uma vez que a parte L1 não é inserida na segunda lista quando for similar à parte L0 (ou idêntica), a eficiência de compressão é melhorada.
[197] Na FIG. 8, a etapa 2.2 é ilustrada por meio de 807, 811 e 808. Primeiro, de acordo com 807, a parte L1 do candidato a movimento de bipredição é inserida na segunda lista. Em seguida a última entrada (indicada pelo valor de índice última_entrada) na segunda lista é comparada com a entrada anterior (indicada pelo valor de índice última_entrada-1) na segunda lista de acordo com 811. Se o valor POC da última entrada for igual ao valor POC da entrada anterior e o vetor de movimento da última entrada for idêntico ao vetor de movimento da entrada anterior, a última entrada é removida da segunda lista de acordo com 808. É observado que a combinação de 807, 811 e 808 corresponde à etapa 2.2 da modalidade da presente divulgação.
[198] Em uma modalidade da presente divulgação (modalidade 3), são usadas as seguintes etapas para construir as listas de fusão.
[199] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[200] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em HEVC e em VVC.
[201] Etapa 2: A primeira lista é atualizada como segue, para todas as entradas na primeira lista: • verificar se o candidato é um candidato a bipredição ou não. Se o candidato for um candidato a bipredição, o vetor de movimento que pertence à parte L0 é representado como mv_L0, o índice de referência é representado como ref_idx_L0 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L0) é representado como POC_L0. O vetor de movimento que pertence à parte L1 é representado como mv_L1, o índice de referência é representado como ref_idx_L1 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L1) é representado como POC_L1; • se POC_L0 for igual a POC_L1, e mv_L0 for similar (ou idêntico em outro exemplo da modalidade) a mv_L1, o candidato é atualizado como candidato a unipredição com vetor de movimento definido como MV_L0, o conjunto de lista de imagens de referência para L0 e índice de referência definido como ref_idx_L0.
[202] Etapa 3: construir uma segunda lista usando os candidatos na primeira lista como segue: etapa 3.1: iniciar a partir do primeiro candidato da primeira lista atualizada.
[203] Etapa 3.2: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista; ou etapa 3.3: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição e os dois candidatos a unipredição são adicionados na segunda lista de acordo com a ordem a seguir: • o primeiro candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0; • o segundo candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1.
[204] Etapa 3.4: ir para o candidato seguinte na primeira lista e continuar com a Etapa 3.2 ou Etapa 3.3 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[205] Em um exemplo, se for aplicada predição triangular ao bloco atual, são selecionados dois candidatos na segunda lista para executar predição triangular, um candidato é usado no processo de predição de uma primeira parte triangular, e o outro candidato é usado na predição de uma segunda parte triangular.
[206] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato a informação de movimento na segunda lista é selecionado para executar interpredição do bloco atual. Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[207] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e o modo de predição triangular não for aplicado ao bloco atual (ou um tamanho de bloco for maior que um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual não tiver o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros), um candidato na primeira lista é selecionado para executar predição do bloco atual.
[208] Em uma modalidade da presente divulgação (modalidade 4), são usadas as etapas a seguir para construir listas de fusão.
[209] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição e bipredição.
[210] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em HEVC e em VVC.
[211] Etapa 2: construir uma segunda lista usando os candidatos na primeira lista como segue: etapa 2.1: iniciar a partir do primeiro candidato a informação de movimento da primeira lista.
[212] Etapa 2.2: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista.
[213] Etapa 2.3: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.2 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[214] Etapa 2.4: iniciar a partir do primeiro candidato da primeira lista.
[215] Etapa 2.5: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição e adicionados à segunda lista de acordo com a ordem a seguir: • o primeiro candidato a informação de movimento inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0. Adicionar o primeiro candidato à segunda lista; • o segundo candidato a informação de movimento inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1. Adicionar o segundo candidato à segunda lista se a segunda lista não estiver completa.
[216] Etapa 2.6: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.5 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[217] A primeira lista de fusão e a segunda lista de fusão podem ser usadas no processo de interpredição de um bloco atual.
[218] É observado que a lista de candidatos para a predição de triângulo (ou sub-bloco) é obtida a partir da lista de candidatos a modo de Fusão, em uma implementação viável, a lista de candidatos podendo não ser uma lista independente. O candidato na segunda lista de candidatos pode ser representado pelos pontos indicadores para um candidato na lista de candidatos a modo de Fusão.
[219] Em um exemplo, se for aplicada predição triangular ao bloco atual, são selecionados dois candidatos na segunda lista para executar predição triangular, um candidato é usado em processo de predição de uma primeira parte triangular e o outro candidato é usado na predição de uma segunda parte triangular.
[220] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato na segunda lista é selecionado para executar interpredição do bloco atual. Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[221] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e um modo de predição triangular não for aplicado ao bloco atual, um candidato na primeira lista é selecionado para executar predição do bloco atual, este exemplo sendo o mesmo que o processo relatado divulgado em ITU-T H.265 ou VVC.
[222] Em uma modalidade da presente divulgação (modalidade 5), um tamanho da segunda lista (lista de candidatos a movimento) é menor que ou igual ao tamanho da primeira lista.
[223] Por exemplo, um tamanho da segunda lista é definido igual a M, se M for determinado ser menor que ou igual a N, onde N é o tamanho (número de candidatos a movimento) da primeira lista. Caso contrário (se M for determinado ser maior que N) o tamanho da segunda lista é definido igual a N.
[224] Em outro exemplo, N pode ser obtido a partir de um indicador que é codificado em um fluxo de bits, e M pode ser um número predeterminado. M e N podem ser números inteiros positivos, por exemplo M pode ser igual a 5 e N igual a 6.
[225] Um exemplo desta modalidade é como segue: o valor de M (que descreve o tamanho máximo da segunda lista) deve ser 5, que é predeterminado. E o valor de N (tamanho da primeira lista) deve ser sinalizado no conjunto de parâmetros de sequência (SPS). Se o valor de N for sinalizado como 6, o tamanho da segunda lista é definido igual a 5, uma vez que o tamanho da primeira lista é maior que o tamanho da segunda lista. Em outro cenário, se N for sinalizado para ser 3 no SPS, então o tamanho da segunda lista é também definido igual a 3.
[226] Em outro exemplo, N pode ser obtido a partir de um indicador que é codificado em um fluxo de bits e M pode ser obtido a partir de um indicador que é também codificado no fluxo de bits. Neste exemplo, o indicador que é usado para obter o valor de M não pode indicar um valor que seja maior que N.
[227] Em outro exemplo, em ITU-T H.265, o tamanho da lista de fusão (primeira lista) é N, e N pode ser modificado baseado em um elemento de sintaxe que é codificado em um fluxo de bits. O valor de N pode ser um número inteiro positivo (por exemplo, o valor do número inteiro positivo é entre 2 e 5), e o valor do número inteiro positivo é sinalizado no SPS. O tamanho da lista de fusão é fixado para toda a sequência de vídeo.
[228] De acordo com a modalidade 5, um tamanho da segunda lista é menor que ou igual a um tamanho da primeira lista. Em alguns exemplos, o tamanho da segunda lista é também fixado, para fins de robustez de erro. De acordo com as modalidades 1 a 4 acima, a segunda lista é construída baseada na primeira lista. Um tamanho da segunda lista é menor que ou igual ao tamanho da primeira lista. Se todos os candidatos na primeira lista forem candidatos a unipredição, o número máximo de candidatos a movimento que podem ser inseridos na segunda lista é igual ao número de candidatos na primeira lista. Portanto, se o tamanho da segunda lista for definido igual a ou maior que a primeira lista, a segunda lista é garantida estar sempre completamente preenchida.
[229] De acordo com outra modalidade (modalidade 6), um tamanho da segunda lista é determinado baseado em um tamanho do bloco atual. Se o tamanho do bloco atual for menor que um limite, o tamanho da segunda lista é definido igual a K, e se o tamanho do bloco atual for maior que ou igual ao limite, o tamanho da segunda lista é definido igual a L. O tamanho do bloco pode ser determinado baseado na sua largura e peso (por exemplo, largura multiplicada por peso). K e L são números inteiros positivos com K<L.
[230] Por exemplo, se a largura multiplicada por peso de um bloco for maior que ou igual a 128, o tamanho da segunda lista pode ser definido igual a 5. Se a largura multiplicada por peso de um bloco for menor que 128, o tamanho da segunda lista pode ser definido igual a 3.
[231] Em outro exemplo, se a largura do bloco for menor que ou igual a 8 ou a altura do bloco for menor que ou igual a 8, então o tamanho da segunda lista é definido igual a 3. Se ambas a largura e a altura do bloco forem maiores que 8, o tamanho da segunda lista é definido igual a 5.
[232] Em uma modalidade da presente divulgação (modalidade 7), são usadas as etapas a seguir para construir as listas de fusão.
[233] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[234] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em H.265 e VVC.
[235] Etapa 2: construir uma segunda lista usando os candidatos na primeira lista como segue: etapa 2.1: iniciar a partir do primeiro candidato da primeira lista.
[236] Etapa 2.2: se o candidato a informação de movimento for um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista; ou etapa 2.3: se o candidato a informação de movimento for um candidato a bipredição, é gerado um candidato a unipredição baseado no candidato a bipredição e adicionado à segunda lista como segue: • o candidato a informação de movimento de unipredição gerado inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0 (o candidato é definido como candidato a unipredição antes de inserção na segunda lista).
[237] Etapa 2.4: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.2 ou Etapa 2.3 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[238] A primeira lista de fusão e a segunda lista de fusão podem ser usadas no processo de interpredição de um bloco atual.
[239] Em um exemplo, se for aplicada predição triangular ao bloco atual, são selecionados dois candidatos na segunda lista para executar predição triangular, um candidato é usado no processo de predição de uma primeira parte triangular, e o outro candidato é usado na predição de uma segunda parte triangular.
[240] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato na segunda lista é selecionado para executar interpredição do bloco atual. Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[241] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e um modo de predição triangular não for aplicado ao bloco atual, um candidato na primeira lista é selecionado para executar predição do bloco atual, este exemplo sendo o mesmo que o processo relatado divulgado em ITU-T H.265 ou VVC.
[242] Em um exemplo, a primeira lista de candidatos a movimento é a lista de fusão.
[243] É observado que uma vez que a lista de candidatos para a predição de triângulo (ou sub-bloco) é obtida a partir da lista de candidatos a modo de Fusão, em uma implementação viável, a lista de candidatos pode não ser uma lista independente. O candidato na segunda lista de candidatos pode ser representado pelos pontos indicadores para um candidato na lista de candidatos a modo de Fusão.
[244] A modalidade 7 divulga um método de construção de uma lista de candidatos a informação de movimento (segunda lista), a segunda lista compreendendo candidatos a unipredição.
[245] A primeira lista é usada na predição de um bloco, se predição triangular não for aplicada ao bloco. Em um exemplo, a primeira lista é usada para blocos de codificação que são indicados para aplicar modo de fusão, mas não indicados para aplicar modo de predição triangular.
[246] A segunda lista é construída baseada na primeira lista. Se uma predição triangular for aplicada a um bloco,
os candidatos a informação de movimento (ou vetor de movimento) são selecionados a partir da segunda lista. A segunda lista compreende candidatos a unipredição, os candidatos podendo ser aplicados às primeira e segunda partes triangulares do bloco. Em um exemplo, 2 índices de fusão são codificados em um fluxo de bits se modo de fusão triangular for aplicado ao bloco. Os índices de fusão identificam que candidato na segunda lista é usado para a primeira ou para a segunda parte triangular do bloco.
[247] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na segunda lista é usado para predizer o bloco. Se um tamanho de bloco do bloco atual for maior que um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual não for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na primeira lista é usado para predizer o bloco.
[248] De acordo com a modalidade 7, se o candidato a movimento na primeira lista for candidato a bipredição, o candidato é adicionado à segunda lista após o candidato a bipredição ser convertido em um candidato a unipredição. Um candidato a movimento de bipredição inclui 2 vetores de movimento e 2 índices de imagem de referência, um par correspondente à lista de imagens de referência L0 e o outro par correspondente à lista de imagens de referência L1. O candidato a unipredição convertido inclui o índice de imagem de referência e o vetor de movimento que correspondem à lista de imagens de referência L0. Na modalidade 7, os dados de movimento correspondentes à lista de imagens de referência L1 não são usados para gerar um segundo candidato a unipredição se o bloco é determinado aplicar predição triangular.
[249] A FIG. 10 ilustra o fluxograma da modalidade 7.
[250] Em uma modalidade da presente divulgação (modalidade 8), são usadas as etapas a seguir para construir listas de fusão.
[251] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[252] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em H.265 e VVC.
[253] Etapa 2: construir uma segunda lista e uma terceira lista usando os candidatos na primeira lista como segue: etapa 2.1: iniciar a partir do primeiro candidato da primeira lista.
[254] Etapa 2.2: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista e na terceira lista; ou etapa 2.3: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição, um candidato a unipredição é adicionado na segunda lista e um candidato a unipredição é adicionado na terceira lista de acordo com a ordem a seguir:
• o primeiro candidato a informação de movimento inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0 (o candidato é definido como candidato a unipredição antes de inserção na segunda lista); • o segundo candidato a informação de movimento inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1 (o candidato é definido como candidato a unipredição antes de inserção na terceira lista).
[255] Etapa 2.4: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.2 ou Etapa 2.3 até uma quantidade especificada de candidatos ser coletada na segunda lista e na terceira lista ou até todos os candidatos na primeira lista serem processados.
[256] A primeira lista de fusão, a segunda lista e a terceira lista de fusão de fusão podem ser usadas no processo de interpredição de um bloco atual.
[257] Em um exemplo, se for aplicada predição triangular ao bloco atual, são selecionados um candidato na segunda lista e um candidato na terceira lista para executar predição triangular, um candidato é usado no processo de predição de uma primeira parte triangular e o outro candidato é usado na predição de uma segunda parte triangular.
[258] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato na segunda lista é selecionado para executar interpredição do bloco atual.
Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[259] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e um modo de predição triangular não for aplicado ao bloco atual, um candidato na primeira lista é selecionado para executar predição do bloco atual, este exemplo sendo o mesmo que o processo relatado divulgado em ITU-T H.265 ou VVC.
[260] Em um exemplo, a primeira lista de candidatos a movimento é a lista de fusão.
[261] É observado que uma vez que a lista de candidatos para a predição de triângulo (ou sub-bloco) é obtida a partir da lista de candidatos a modo de Fusão, em uma implementação viável, a lista de candidatos pode não ser uma lista independente. O candidato na segunda lista de candidatos pode ser representado pelos pontos indicadores para um candidato na lista de candidatos a modo de Fusão.
[262] A modalidade 8 divulga um método de construção de duas listas de candidatos a informação de movimento (segunda lista e terceira lista), a segunda lista e a terceira lista compreendem candidatos a unipredição. A primeira lista é usada na predição de um bloco, se predição triangular não for aplicada ao bloco. Em um exemplo, a primeira lista é usada para blocos de codificação que são indicados para aplicar modo de fusão, mas não indicados para aplicar modo de predição triangular.
[263] A segunda lista e a terceira lista são construídas baseadas na primeira lista. Se uma predição triangular for aplicada a um bloco, os candidatos a informação de movimento (ou vetor de movimento) são selecionados a partir da segunda lista e a partir da terceira lista. A segunda lista e a terceira lista compreendem candidatos a unipredição, os candidatos podem ser aplicados às primeira e segunda partes triangulares do bloco. Em um exemplo, 2 índices de fusão são codificados em um fluxo de bits se for aplicado modo de fusão triangular ao bloco. O primeiro índice de fusão identifica que candidato na segunda lista é usado para a primeira parte triangular do bloco e que candidato na terceira lista é usado para a segunda parte triangular do bloco.
[264] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na segunda lista é usado para predizer o bloco. Se um tamanho de bloco do bloco atual for maior que um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual não for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na primeira lista é usado para predizer o bloco.
[265] Em outro exemplo, se o bloco é determinado não aplicar predição triangular, outras condições podem ser verificadas para decidir se o bloco usa a primeira lista de candidatos a movimento ou não. Em um exemplo, se um bloco é determinado não aplicar predição triangular, é adicionalmente determinado se aplicar ou não modo de fusão ao bloco. Se for aplicado modo de fusão, a primeira lista de candidatos a movimento é usada na predição do bloco, e se não for aplicado modo de fusão, podem ser aplicados outros métodos de predição ao bloco atual (por exemplo, intrapredição).
[266] De acordo com a modalidade 8, uma segunda e uma terceira listas de candidatos a movimento são construídas baseadas na primeira lista de candidatos a movimento. A segunda e a terceira listas podem compreender apenas candidatos a unipredição, portanto têm a vantagem de não compreender candidatos não utilizáveis (por exemplo, candidatos bipreditivos). Portanto, o indicador para sinalizar que candidato é usado pode ser representado por menor número de bits, o que melhora a eficiência de compressão.
[267] Em uma modalidade da presente divulgação (modalidade 9), são usadas as etapas a seguir para construir listas de fusão.
[268] Etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[269] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em H.265 e VVC.
[270] Etapa 1.1: iniciar um contador com um valor inteiro positivo N (o valor do contador é definido igual a N).
[271] Etapa 2: construir uma segunda lista usando os candidatos na primeira lista como segue: etapa 2.1: iniciar a partir do primeiro candidato da primeira lista.
[272] Etapa 2.2: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista; ou etapa 2.3: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição de acordo com o referido um candidato a bipredição, e os dois candidatos a unipredição são adicionados na segunda lista de acordo com a ordem a seguir: • o primeiro candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0. O vetor de movimento é representado como mv_L0 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L0) é representado como POC_L0; • o segundo candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1. O vetor de movimento é representado como mv_L1 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L1) é representado como POC_L1;  se todas as condições abaixo forem satisfeitas, segundo candidato é inserido na segunda lista; ▪ o valor do contador for maior que 0; ▪ se tanto POC_L0 não for igual a POC_L1 ou mv_L0 não for similar a mv_L1;  se o valor do contador for igual a zero, então o segundo candidato é inserido na segunda lista; • se o valor do contador for maior que zero, o valor do contador é decrementado por 1.
[273] Etapa 2.4: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.2 ou Etapa 2.3 até uma quantidade (número) especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[274] O número especificado de candidatos pode ser um valor predefinido ou um valor que é indicado em um fluxo de bits. Em uma implementação específica o número especificado é 5. Neste caso, os candidatos são adicionados à segunda lista até 5 candidatos serem preenchidos na segunda lista.
[275] Em uma possível implementação o valor de N pode ser um número predefinido, que é igual a 1. De acordo com a modalidade 9, o número de operações de comparação de vetores de movimento (dadas pela verificação condicional “se tanto POC_L0 não for igual a POC_L1 ou mv_L0 não for similar a mv_L1” na seção acima) é limitado a um valor máximo de N. Uma vez que as implementações de hardware têm restrições de tempo específicas, a redução e limitação do número de operações de comparação de vetores de movimento ajuda a melhorar o rendimento de processamento de implementações de hardware.
[276] De acordo com a Modalidade 9, a operação de comparação de vetores de movimento é necessária para os primeiros N candidatos a bipredição na primeira lista. No caso de N igual a 1, o primeiro candidato a bipredição na primeira lista exige operação de comparação de vetores de movimento antes dos dois candidatos a unipredição gerados serem inseridos na segunda lista. Após o primeiro candidato a bipredição na primeira lista ser processado de acordo com a etapa de 2.3, os restantes candidatos a bipredição não necessitam de operação de comparação de vetores de movimento.
[277] Alternativamente, a segunda lista de fusão pode ser construída de acordo com as segundas etapas: etapa 1: construir uma lista de candidatos a movimento (primeira lista) que inclui candidatos a informação de movimento com unipredição ou bipredição.
[278] A primeira lista poderia ser construída de acordo com os métodos em ITU-T H.265 e VVC, vide os exemplos e divulgações acima referentes ao processo de construção de lista de fusão em H.265 e VVC.
[279] Etapa 1.1: iniciar um contador com um valor inteiro positivo N (o valor do contador é definido igual a N).
[280] Etapa 2: construir uma segunda lista usando os candidatos na primeira lista como segue: etapa 2.1: iniciar a partir do primeiro candidato da primeira lista.
[281] Etapa 2.2: se o candidato é um candidato a unipredição, adicionar o candidato (candidato a informação de movimento) na segunda lista; ou etapa 2.3: se o candidato é um candidato a bipredição, são gerados dois candidatos a unipredição de acordo com o referido um candidato a bipredição, e os dois candidatos a unipredição são adicionados na segunda lista de acordo com a ordem a seguir: • o primeiro candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L0. O vetor de movimento é representado como mv_L0 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L0) é representado como POC_L0; • o segundo candidato inclui o vetor de movimento e o índice de imagem de referência correspondente à lista de imagens de referência L1. O vetor de movimento é representado como mv_L1 e o valor POC da imagem de referência (calculado baseado no índice de imagem de referência na lista L1) é representado como POC_L1;  se todas as condições abaixo forem satisfeitas, o segundo candidato é inserido na segunda lista; ▪ o valor do contador for maior que 0; ▪ se tanto POC_L0 não for igual a POC_L1 ou mv_L0 não for similar a mv_L1.  se o valor do contador for igual a zero, então segundo candidato é inserido na segunda lista.
[282] Etapa 2.4: se o valor do contador for maior que zero, o valor do contador é decrementado por 1.
[283] Etapa 2.5: ir para o candidato seguinte na primeira lista e continuar com a Etapa 2.2 ou Etapa 2.3 até uma quantidade especificada de candidatos ser coletada na segunda lista ou até todos os candidatos na primeira lista serem processados.
[284] O número especificado de candidatos pode ser um valor predefinido ou um valor que é indicado em um fluxo de bits. Em uma implementação específica o número especificado é 5. Neste caso, os candidatos são adicionados à segunda lista até 5 candidatos serem preenchidos na segunda lista.
[285] Em uma implementação específica o valor de N pode ser um número predefinido, que é igual a 1. De acordo com a alternativa da modalidade 9, o número de operações de comparação de vetores de movimento (descritas como a verificação condicional “se tanto POC_L0 não for igual a POC_L1 ou mv_L0 não for similar a mv_L1” na seção acima) é limitado a um valor máximo de N. Uma vez que as implementações de hardware têm restrições de tempo específicas, a redução e limitação do número de operações de comparação de vetores de movimento ajuda a melhorar o rendimento de processamento de implementações de hardware.
[286] De acordo com a alternativa da modalidade 9, a operação de comparação de vetores de movimento é necessária para os primeiros N candidatos na primeira lista. No caso de N igual a 1, o primeiro bicandidato na primeira lista exige operação de comparação de vetores de movimento se for um candidato a bipredição. Após o primeiro candidato na primeira lista ser processado de acordo com a etapa de 2.3, os restantes candidatos a bipredição não necessitam de operação de comparação de vetores de movimento.
[287] No primeiro exemplo, o contador é decrementado por 1, após o primeiro candidato a bipredição na primeira lista ser processado (pela geração de dois candidatos a unipredição e inserção na segunda lista). No segundo exemplo, o contador é decrementado por 1 após o primeiro candidato na primeira lista ser processado, independentemente do referido candidato ser candidato a unipredição ou bipredição.
[288] A primeira lista de fusão e a segunda lista de fusão podem ser usadas no processo de interpredição de um bloco atual. É observado que uma vez que a lista de candidatos para a predição de triângulo (ou sub-bloco) é obtida da lista de candidatos a modo de Fusão, em uma implementação viável, a lista de candidatos pode não ser uma lista independente. O candidato na segunda lista de candidatos pode ser representado pelos pontos indicadores para um candidato na lista de candidatos a modo de Fusão.
[289] Em um exemplo, se for aplicada predição triangular ao bloco atual, dois candidatos na segunda lista são selecionados para executar predição triangular, um candidato é usado no processo de predição de uma primeira parte triangular e o outro candidato é usado na predição de uma segunda parte triangular.
[290] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um candidato a informação de movimento na segunda lista é selecionado para executar interpredição do bloco atual. Neste exemplo, como o tamanho do bloco atual é pequeno, não é permitida bipredição para o bloco atual.
[291] Em outro exemplo, se for aplicado um modo de fusão ao bloco atual e um modo de predição triangular não for aplicado ao bloco atual, um candidato na primeira lista é selecionado para executar predição do bloco atual, este exemplo sendo o mesmo que o processo relatado divulgado em ITU-T H.265 ou VVC.
[292] Em um exemplo, o segundo candidato na Etapa 2.3 não é adicionado à segunda lista se POC_L0 for igual a POC_L1 e se mv_L0 for idêntico a mv_L1.
[293] Em outro exemplo, o segundo candidato na Etapa 2.3 não é adicionado à segunda lista se o índice de imagem de referência da parte L0 for igual ao índice de imagem de referência da parte L1 e se mv_L0 for idêntico (ou alternativamente similar) a mv_L1.
[294] Em um exemplo, a similaridade de dois vetores de movimento pode ser determinada de acordo com as seguintes desigualdades: -K<(MV1.x-MV2.x)<K e -K<(MV1.y-MV2.y)<K, onde o MV1.x representa o componente x do primeiro vetor de movimento (o significado de MV2.x é similar a MV1.x), MV1.y (o significado de MV2.y é similar a MV1.y) representa o componente y, K é um número positivo. Neste exemplo, se ambas as desigualdades se mantiverem, o vetor de movimento MV1 é considerado similar ao vetor de movimento MV2.
[295] Em outro exemplo, a similaridade pode ser determinada baseada nas seguintes desigualdades: (MV1.x>>N)-(MV2.x>>N)==K e (MV1.x>>N)-(MV2.x>>N)==K onde x>>y representa deslocamento Aritmético à direita de uma representação de dois números inteiros complementares de dígitos binários x por y. Esta função é definida apenas para valores inteiros não negativos de y. Bits deslocados para dentro dos bits mais significativos (MSBs) como resultado do deslocamento à direita têm um valor igual ao MSB de x antes da operação de deslocamento. “==” é a operação racional que é verdadeira quando cada lado do operador é idêntico. Neste exemplo se ambas as desigualdades se mantiverem, o vetor de movimento MV1 é considerado similar ao vetor de movimento MV2.
[296] Em um exemplo, a primeira lista de candidatos a movimento é a lista de fusão.
[297] Na Etapa 2.3 o segundo candidato (que é um candidato a unipredição que é gerado baseado na parte L1 do candidato a bipredição da primeira lista de candidatos a movimento) é adicionado à segunda lista de candidatos a movimento apenas se for suficientemente diferente do primeiro candidato (que é um candidato a unipredição que é gerado baseado na parte L0 do candidato a bipredição da primeira lista de candidatos a movimento).
[298] Uma vez que a parte L1 não é inserida na segunda lista quando é similar à parte L0 (ou idêntica), a eficiência de compressão é melhorada.
[299] A modalidade 9 divulga um método de construção de uma lista de candidatos a informação de movimento (segunda lista), a segunda lista compreendendo candidatos a unipredição.
[300] A primeira lista é usada na predição de um bloco, se não for aplicada predição triangular ao bloco. Em um exemplo, a primeira lista é usada para codificação de blocos que são indicados para aplicação do modo de fusão, mas não indicados para aplicar modo de predição triangular.
[301] A segunda lista é construída baseada na primeira lista. Se uma predição triangular for aplicada a um bloco, os candidatos a informação de movimento (ou vetor de movimento) são selecionados a partir da segunda lista. A segunda lista compreende candidatos a unipredição, os candidatos podem ser aplicados às primeira e segunda partes triangulares do bloco. Em um exemplo, 2 índices de fusão são codificados em um fluxo de bits se modo de fusão triangular for aplicado ao bloco. Os índices de fusão identificam que candidato na segunda lista é usado para a primeira ou a segunda parte triangular do bloco.
[302] Em outro exemplo, se um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na segunda lista é usado para predizer o bloco. Se um tamanho de bloco do bloco atual for maior que um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual não for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, um índice de fusão é codificado em um fluxo de bits para identificar que candidato na primeira lista é usado para predizer o bloco.
[303] Em outro exemplo, se o bloco é determinado não aplicar predição triangular, outras condições podem ser verificadas para decidir se o bloco usa a primeira lista de candidatos a movimento ou não. Em um exemplo, se um bloco é determinado não aplicar predição triangular, é adicionalmente determinado se aplicar ou não modo de fusão ao bloco. Se for aplicado modo de fusão, a primeira lista de candidatos a movimento é usada na predição do bloco, e se não for aplicado modo de fusão, podem ser aplicados outros métodos de predição ao bloco atual (por exemplo, intrapredição).
[304] De acordo com a modalidade 9, uma segunda lista de candidatos a movimento é construída baseada na primeira lista de candidatos a movimento. A segunda lista pode compreender apenas candidatos a unipredição, portanto tem a vantagem de não compreender candidatos não utilizáveis (por exemplo, candidatos bipreditivos). Portanto, o indicador para sinalizar que candidato é usado pode ser representado por menor número de bits, o que melhora a eficiência de compressão.
[305] É observado que nas modalidades 1-9, os aspectos são explicados usando os termos “primeira lista” e “segunda lista”, onde os candidatos a informação de movimento na segunda lista são usados para predizer o bloco de codificação se o bloco de codificação é usado com modos de predição de triângulo ou sub-bloco.
A presente divulgação pode também ser vista como uma modificação às regras para construção da primeira lista.
Uma vez que a primeira lista pode não apenas conter candidatos a unipredição, mas também conter candidatos a bipredição, não pode ser usada na predição de um bloco de codificação que é predito usar predição triangular (que requer que todos os candidatos selecionáveis tenham que ser candidatos a unipredição). Portanto, a presente divulgação pode ser vista como uma modificação às regras de construção de listas que são descritas por exemplo no padrão ITU-T H.265 ou no projeto de norma VVC.
Na verdade, os aspectos divulgados podem aplicar-se a qualquer lista de informação de movimento que inclua candidatos a unipredição e de bipredição, e o objetivo da presente divulgação é modificar as regras de construção de listas de tal modo que a lista de candidatos a informação de movimento resultante inclua apenas candidatos a unipredição.
Portanto as regras de construção de listas modificadas podem ser aplicadas para obter candidatos a informação de movimento que podem ser usados para predizer um bloco de codificação que é predito usando predição triangular (ou sub-bloco). Em outras palavras, as modalidades 1-9 descrevem modificações de regras que são necessárias para obter uma lista de candidatos a informação de movimento que compreenda apenas candidatos a unipredição, dado um conjunto de regras para construção de uma lista de fusão que compreenda ambos os candidatos a unipredição e de bipredição.
[306] Exemplo 1. Um método de processamento de um bloco de acordo com uma lista de candidatos a fusão, o método compreendendo: construir uma primeira lista de acordo com informação de movimento de blocos adjacentes do bloco atual; construir uma segunda lista de acordo com a primeira lista; obter informação de predição ou informação de tamanho de bloco do bloco atual; usar, de acordo com a informação de predição ou informação de tamanho de bloco do bloco atual, a primeira lista ou a segunda lista para executar interpredição do bloco atual.
[307] Exemplo 2. O método do exemplo 1, em que todos os candidatos da segunda lista são candidatos a unipredição.
[308] Exemplo 3. O método do exemplo 1 ou 2, em que a construção de uma segunda lista de acordo com a primeira lista compreende: gerar dois candidatos a unipredição de acordo com um candidato a bipredição da primeira lista; construir a segunda lista de acordo com os dois candidatos a unipredição.
[309] Exemplo 4. O método do exemplo 1 ou 2, em que a construção de uma segunda lista de acordo com a primeira lista compreende: gerar um candidato a unipredição de acordo com um candidato a bipredição da primeira lista; construir a segunda lista de acordo com o um candidato a unipredição.
[310] Exemplo 5. O método do exemplo 1 ou 2, em que a construção de uma segunda lista de acordo com a primeira lista compreende: gerar dois candidatos a unipredição de acordo com um candidato a bipredição da primeira lista; construir a segunda lista de acordo com pelo menos um candidato a unipredição da primeira lista e os dois candidatos a unipredição.
[311] Exemplo 6. O método do exemplo 1 ou 2, em que a construção de uma segunda lista de acordo com a primeira lista compreende: gerar dois candidatos a unipredição de acordo com um candidato a bipredição da primeira lista; determinar uma similaridade entre os dois candidatos a unipredição; construir a segunda lista de acordo com os dois candidatos a unipredição e o resultado da determinação de similaridade.
[312] Exemplo 7. O método de qualquer um dos exemplos 1 a 6, em que a construção de uma segunda lista de acordo com a primeira lista compreende: inserir pelo menos um candidato a unipredição da primeira lista na segunda lista de acordo com a divisão de um candidato a bipredição da primeira lista em dois candidatos a unipredição.
[313] Exemplo 8. O método de qualquer um dos exemplos 1 a 6, em que a construção de uma segunda lista de acordo com a primeira lista compreende: inserir pelo menos um candidato a unipredição da primeira lista na segunda lista de acordo com a ordem do pelo menos um candidato a unipredição na primeira lista de acordo com a divisão de um candidato a bipredição da primeira lista em dois candidatos a unipredição.
[314] Exemplo 9. O método de qualquer um dos exemplos 1 a 8, em que o método compreende adicionalmente: determinar uma similaridade entre dois componentes de um candidato a bipredição da primeira lista, atualizando a primeira lista de acordo com o resultado da determinação de similaridade; correspondentemente, a construção de uma segunda lista de acordo com a primeira lista compreende: construir a segunda lista de acordo com a primeira lista atualizada.
[315] Exemplo 10. O método de qualquer um dos exemplos 1 a 9, em que um tamanho da segunda lista é menor que ou igual a um tamanho da primeira lista.
[316] Exemplo 11. O método de qualquer um dos exemplos 1 a 9, em que um tamanho da segunda lista é determinado de acordo com um tamanho de bloco do bloco atual.
[317] Exemplo 12. O método de qualquer um dos exemplos 1 a 9, em que um tamanho da segunda lista é determinado de acordo com um comprimento de largura ou um comprimento de altura do bloco atual.
[318] Exemplo 13. O método de qualquer um dos exemplos 1 a 12, em que a utilização, de acordo com a informação de predição ou informação de tamanho de bloco do bloco atual, da primeira lista ou da segunda lista para executar interpredição compreende: quando uma predição triangular (ou predição de sub- blocos) é aplicada ao bloco atual, a segunda lista é usada para predizer o bloco atual;
ou quando uma predição triangular (ou predição de sub- blocos) não é aplicada ao bloco atual, a primeira lista é usada para predizer o bloco atual.
[319] Exemplo 14. O método de qualquer um dos exemplos 1 a 13, em que a utilização, de acordo com a informação de predição ou informação de tamanho de bloco do bloco atual, da primeira lista ou da segunda lista para executar interpredição compreende: quando um tamanho de bloco do bloco atual for menor que ou igual a um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, a segunda lista é usada para predizer o bloco atual; ou quando um tamanho de bloco do bloco atual for maior que um limite (por exemplo, o limite pode ser 16) ou um tamanho de bloco do bloco atual não for o menor tamanho que é predefinido ou sinalizado em um conjunto de parâmetros, a primeira lista é usada para predizer o bloco atual.
[320] Exemplo 15. Um codificador (20) que compreende circuitos de processamento para realizar o método de acordo com qualquer um dos exemplos 1 a 14.
[321] Exemplo 16. Um decodificador (30) que compreende circuitos de processamento para realizar o método de acordo com qualquer um dos exemplos 1 a 14.
[322] Exemplo 17. Um produto de programa de computador que compreende um código de programa para realizar o método de acordo com qualquer um dos exemplos 1 a 14.
[323] Exemplo 18. Um decodificador que compreende:
um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e que armazena programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método de acordo com qualquer um dos exemplos 1 a 14.
[324] Exemplo 19. Um codificador que compreende: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e que armazena programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método de acordo com qualquer um dos exemplos 1 a 14.
[325] Embora as modalidades da presente divulgação tenham sido principalmente descritas baseadas em codificação de vídeo, deverá ser observado que modalidades do sistema de codificação 10, codificador 20 e decodificador 30 (e correspondentemente o sistema 10) e as outras modalidades descritas neste documento podem também ser configuradas para processamento ou codificação de imagens estáticas, isto é, o processamento ou codificação de uma imagem individual independente de qualquer imagem precedente ou consecutiva como em codificação de vídeo. Em geral apenas unidades de interpredição 244 (codificador) e 344 (decodificador) podem não estar disponíveis no caso de a codificação de processamento de imagem ser limitada a uma única imagem 17. Todas as outras funcionalidades (também referidas como ferramentas ou tecnologias) do codificador de vídeo 20 e decodificador de vídeo 30 podem igualmente ser usadas para processamento de imagens estáticas, por exemplo, cálculo residual 204/304, transformação 206, quantização 208, quantização inversa 210/310, transformação (inversa) 212/312, particionamento 262/362, intrapredição 254/354, e/ou filtragem de malha 220, 320, e codificação de entropia 270 e decodificação de entropia 304.
[326] A seguir é dada uma explicação das aplicações do método de codificação assim como do método de decodificação como mostrado nas modalidades acima mencionadas, e de um sistema que as usa.
[327] A FIG. 16 é um diagrama de blocos que mostra um sistema de suprimento de conteúdo 3100 para realizar serviço de distribuição de conteúdo. Este sistema de suprimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e opcionalmente inclui tela 3126. O dispositivo de captura 3102 comunica-se com o dispositivo terminal 3106 pelo enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação destes, ou similares, mas não se limita a estas.
[328] O dispositivo de captura 3102 gera dados, e pode codificar os dados pelo método de codificação como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de streaming (não mostrado nas figuras), e o servidor codifica os dados e transmite os dados codificados ao dispositivo terminal 3106. O dispositivo de captura 3102 inclui câmera, smartphone ou tablet, computador de mesa ou portátil, sistema de videoconferência, PDA, dispositivo montado em veículo, ou uma combinação de quaisquer destes, ou similares, mas não é limitado a estes. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo fonte 12 como descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realmente executar processamento de codificação de vídeo. Quando os dados incluem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realmente executar processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de áudio e vídeo codificados multiplexando-os juntos. Para outros cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. O dispositivo de captura 3102 distribui os dados de áudio codificados e os dados de vídeo codificados ao dispositivo terminal 3106 separadamente.
[329] No sistema de suprimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 poderia ser um dispositivo com capacidade de recepção e recuperação de dados, tal como um smartphone ou um tablet 3108, computador de mesa ou portátil 3110, gravador de vídeo de rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, conversor (STB) 3116, sistema de videoconferência 3118, sistema de videovigilância 3120, assistente pessoal digital (PDA) 3122, dispositivo montado em veículo 3124, ou uma combinação de quaisquer destes, ou similares capazes de decodificar os dados codificados acima mencionados. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 como descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para executar decodificação de vídeo. Quando os dados codificados incluem áudio, o decodificador de áudio 30 incluído no dispositivo terminal é priorizado para executar processamento de decodificação de áudio.
[330] Para um dispositivo terminal com a sua tela, por exemplo, smartphone ou um tablet 3108, computador de mesa ou portátil 3110, gravador de vídeo de rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente pessoal digital (PDA) 3122, ou dispositivo montado em veículo 3124, o dispositivo terminal pode fornecer os dados decodificados à sua tela. Para um dispositivo terminal não equipado com tela, por exemplo, STB 3116, sistema de videoconferência 3118, ou sistema de videovigilância 3120, uma tela externa 3126 é conectada àquele para receber e exibir os dados decodificados.
[331] Quando cada dispositivo no sistema executa codificação ou decodificação, pode ser usado o dispositivo de codificação de imagens ou o dispositivo de decodificação de imagens, como mostrado nas modalidades acima mencionadas.
[332] A FIG. 17 é um diagrama que mostra uma estrutura de um exemplo do dispositivo terminal 3106. Após o dispositivo terminal receber fluxo do dispositivo de captura 3102, a unidade de procedimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui Protocolo de Streaming em Tempo Real (RTSP), Protocolo de Transferência de Hipertexto (HTTP), protocolo de streaming ao vivo de HTTP (HLS), MPEG-DASH, protocolo de Transporte em Tempo Real (RTP), Protocolo de Mensagem em Tempo Real (RTMP), ou qualquer tipo de combinação destes, ou similares, mas não limitado a estes.
[333] Após a unidade de procedimento de protocolo 3202 processar o fluxo, é gerado arquivo de fluxo. O arquivo é enviado a uma unidade de desmultiplexação 3204. A unidade de desmultiplexação 3204 pode separar os dados multiplexados nos dados de áudio codificados e nos dados de vídeo codificados. Como descrito acima, para alguns cenários práticos, por exemplo no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos ao decodificador de vídeo 3206 e ao decodificador de áudio 3208 sem passar pela unidade de desmultiplexação 3204. Por meio do processamento de desmultiplexação, são gerados fluxo elementar (ES) de vídeo, ES de áudio e, opcionalmente, subtítulo. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 como explicado nas modalidades acima mencionadas, decodifica o ES de vídeo pelo método de decodificação como mostrado nas modalidades acima mencionadas para gerar quadro de vídeo, e fornece estes dados à unidade síncrona 3212. O decodificador de áudio 3208, decodifica o ES de áudio para gerar quadro de áudio, e fornece estes dados à unidade síncrona 3212. Alternativamente, o quadro de vídeo pode ser armazenado em um buffer (não mostrado na FIG. 17) antes de ser fornecido à unidade síncrona 3212. Similarmente, o quadro de áudio pode ser armazenado em um buffer (não mostrado na FIG. 17) antes de ser fornecido à unidade síncrona 3212.
[334] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio, e fornece o vídeo/áudio a uma tela 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação das informações de vídeo e de áudio. As informações podem ser codificadas na sintaxe usando marcações de horário referentes à apresentação de dados visuais e de áudio codificados e marcações de horário referentes à entrega do próprio fluxo de dados.
[335] Se for incluído subtítulo no fluxo, o decodificador de subtítulo 3210 decodifica o subtítulo, e sincroniza-o com o quadro de vídeo e o quadro de áudio, e fornece o vídeo/áudio/subtítulo à tela de vídeo/áudio/ subtítulo 3216.
[336] A presente invenção não é limitada ao sistema acima mencionado, e tanto o dispositivo de codificação de imagens como o dispositivo de decodificação de imagens nas modalidades acima mencionadas podem ser incorporados em outro sistema, por exemplo, um sistema automotivo.
[337] Modalidades, por exemplo do codificador 20 e do decodificador 30, e funções descritas neste documento, por exemplo com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware, ou qualquer combinação destes. Se implementadas em software, as funções podem ser armazenadas em um meio legível por computador ou transmitidas por meios de comunicação como uma ou mais instruções ou código e executadas por uma unidade de processamento baseada em hardware. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível tal como meios de armazenamento de dados, ou meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios legíveis por computador geralmente podem corresponder a (1) meios de armazenamento tangíveis legíveis por computador que são não transitórios ou (2) um meio de comunicação tal como um sinal ou uma onda portadora. Meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[338] Como exemplo, e não limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou quaisquer outros meios que possam ser usados para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possam ser acessados por um computador. Além disso, qualquer conexão é adequadamente designada um meio legível por computador. Por exemplo, se instruções são transmitidas de um site da Internet, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha digital de assinante (DSL), ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL, ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deverá ser entendido,
contudo, que meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outros meios transitórios, mas são ao invés direcionados para meios de armazenamento tangíveis não transitórios. Discos e disquetes, como usado neste documento, incluem disco compacto (CD), disco a laser, disco ótico, disco digital versátil (DVD), disquete flexível e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto discos reproduzem dados oticamente com lasers. Combinações do acima deverão ser incluídas dentro do escopo dos meios legíveis por computador.
[339] Instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores digitais de sinais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), matrizes lógicas programáveis de campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo “processador”, como usado neste documento pode referir-se a qualquer das estruturas precedentes ou qualquer outra estrutura adequada para implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade descrita neste documento pode ser fornecida dentro de hardware dedicado e/ou módulos de software configurados para codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas poderiam ser totalmente incorporadas em um ou mais circuitos ou elementos lógicos.
[340] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um conjunto portátil sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Diversos componentes, módulos, ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas que não necessariamente exigem realização por diferentes unidades de hardware.
Ao invés, como descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequados.

Claims (13)

REIVINDICAÇÕES
1. Método de processamento de um bloco de acordo com uma lista de candidatos a fusão, o método caracterizado por compreender: construir uma primeira lista de acordo com informação de movimento de blocos adjacentes de um bloco atual; obter informação de predição do bloco atual; quando a informação de predição do bloco atual indicar que uma predição de sub-bloco é aplicada ao bloco atual, obter um candidato a unipredição para o bloco atual de acordo com a primeira lista; usar o candidato a unipredição para o bloco atual realizar interpredição do bloco atual.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco atual compreende dois sub-blocos, e cada sub-bloco corresponde a um candidato a unipredição.
3. Método de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que um candidato a unipredição é gerado de acordo com um candidato a bipredição da primeira lista.
4. Método de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que dois candidatos a unipredição são gerados de acordo com um candidato a bipredição da primeira lista.
5. Método de acordo com a reivindicação 3 ou 4, caracterizado pelo fato de que um candidato a unipredição é a primeira parte do candidato a bipredição.
6. Método de acordo com a reivindicação 3 ou 4, caracterizado pelo fato de que um candidato a unipredição é a segunda parte do candidato a bipredição.
7. Método de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que a predição de sub- bloco é uma predição triangular.
8. Método de acordo com a reivindicação 4, caracterizado pelo fato de que a geração dos dois candidatos a unipredição de acordo com o um candidato a bipredição da primeira lista compreende: determinar uma similaridade entre os dois candidatos a unipredição.
9. Método de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o candidato a unipredição é gerado de acordo com um candidato a bipredição da primeira lista baseado na ordem do candidato na primeira lista.
10. Codificador (20), caracterizado pelo fato de que compreende circuitos para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
11. Decodificador (30), caracterizado pelo fato de que compreende circuitos para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
12. Produto de programa de computador, caracterizado pelo fato de que compreende um código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
13. Decodificador, caracterizado pelo fato de que compreende: um ou mais processadores; e um meio de armazenamento não transitório legível por computador acoplado aos processadores e que armazena programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 9.
BR112021008016-3A 2018-11-20 2019-11-20 codificador, decodificador e métodos correspondentes para modo de fusão BR112021008016A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862770142P 2018-11-20 2018-11-20
US62/770,142 2018-11-20
US201962788487P 2019-01-04 2019-01-04
US62/788,487 2019-01-04
PCT/RU2019/050221 WO2020106189A1 (en) 2018-11-20 2019-11-20 An encoder, a decoder and corresponding methods for merge mode

Publications (1)

Publication Number Publication Date
BR112021008016A2 true BR112021008016A2 (pt) 2021-08-03

Family

ID=70773942

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021008016-3A BR112021008016A2 (pt) 2018-11-20 2019-11-20 codificador, decodificador e métodos correspondentes para modo de fusão

Country Status (15)

Country Link
US (2) US11909959B2 (pt)
EP (1) EP3864846B1 (pt)
JP (1) JP7457010B2 (pt)
KR (1) KR102622148B1 (pt)
CN (6) CN116800980A (pt)
AU (2) AU2019383290B2 (pt)
BR (1) BR112021008016A2 (pt)
CA (1) CA3112373A1 (pt)
HU (1) HUE064819T2 (pt)
IL (1) IL283310A (pt)
MX (1) MX2021005032A (pt)
PL (1) PL3864846T3 (pt)
PT (1) PT3864846T (pt)
SG (1) SG11202102020UA (pt)
WO (1) WO2020106189A1 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200075775A (ko) * 2018-12-18 2020-06-26 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
EP3884667B1 (en) 2018-12-25 2024-04-17 Beijing Dajia Internet Information Technology Co., Ltd. Video coding with triangular shape prediction units
CN111316646B (zh) * 2019-01-02 2023-06-23 北京大学 候选mv列表构建方法和装置
US11528504B2 (en) * 2019-07-11 2022-12-13 Qualcomm Incorporated Motion vector prediction with motion information collecting buffer
EP4158891A4 (en) * 2020-05-29 2024-02-21 Beijing Dajia Internet Information Tech Co Ltd METHODS AND APPARATUS FOR VIDEO CODING USING GEOMETRIC PARTITION
WO2021247906A1 (en) * 2020-06-03 2021-12-09 Beijing Dajia Internet Information Technology Co., Ltd. Geometric partition mode with motion vector refinement
KR20240021295A (ko) * 2021-06-14 2024-02-16 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 모션 벡터 세분화를 갖는 기하학적 파티션 모드를 위한 방법 및 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101014660B1 (ko) * 2003-10-24 2011-02-16 삼성전자주식회사 인트라 예측 방법 및 장치
US9648334B2 (en) * 2011-03-21 2017-05-09 Qualcomm Incorporated Bi-predictive merge mode based on uni-predictive neighbors in video coding
TWI580259B (zh) * 2012-01-18 2017-04-21 Jvc Kenwood Corp Dynamic image decoding device, dynamic image decoding method, and dynamic image decoding program
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9554150B2 (en) * 2013-09-20 2017-01-24 Qualcomm Incorporated Combined bi-predictive merging candidates for 3D video coding
CN107113424B (zh) * 2014-11-18 2019-11-22 联发科技股份有限公司 以帧间预测模式编码的块的视频编码和解码方法
SG11201703551VA (en) * 2014-12-09 2017-05-30 Mediatek Inc Method of motion vector predictor or merge candidate derivation in video coding
US10887597B2 (en) 2015-06-09 2021-01-05 Qualcomm Incorporated Systems and methods of determining illumination compensation parameters for video coding
US10721489B2 (en) * 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
WO2020053800A1 (en) * 2018-09-12 2020-03-19 Beijing Bytedance Network Technology Co., Ltd. How many hmvp candidates to be checked
CN117880493A (zh) 2018-11-13 2024-04-12 北京字节跳动网络技术有限公司 用于空域运动候选列表的构建方法
CN112970258B (zh) * 2018-11-13 2023-08-18 北京字节跳动网络技术有限公司 用于子块预测块的多假设
WO2020125752A1 (en) * 2018-12-21 2020-06-25 Mediatek Inc. Method and apparatus of simplified triangle merge mode candidate list derivation

Also Published As

Publication number Publication date
MX2021005032A (es) 2021-06-15
JP7457010B2 (ja) 2024-03-27
AU2023237109A1 (en) 2023-10-26
EP3864846A4 (en) 2021-12-15
CN116800980A (zh) 2023-09-22
HUE064819T2 (hu) 2024-04-28
WO2020106189A1 (en) 2020-05-28
CN116582681A (zh) 2023-08-11
CN116389766A (zh) 2023-07-04
SG11202102020UA (en) 2021-03-30
KR20210046758A (ko) 2021-04-28
CN112673633B (zh) 2023-04-04
PL3864846T3 (pl) 2024-04-08
AU2019383290B2 (en) 2023-07-06
PT3864846T (pt) 2024-03-06
CN112673633A (zh) 2021-04-16
JP2022504383A (ja) 2022-01-13
AU2019383290A1 (en) 2021-04-01
US20240137499A1 (en) 2024-04-25
US11909959B2 (en) 2024-02-20
EP3864846A1 (en) 2021-08-18
CA3112373A1 (en) 2020-05-28
KR102622148B1 (ko) 2024-01-05
EP3864846B1 (en) 2024-01-03
US20210274168A1 (en) 2021-09-02
CN116389767A (zh) 2023-07-04
CN116405696A (zh) 2023-07-07
IL283310A (en) 2021-07-29

Similar Documents

Publication Publication Date Title
ES2946909T3 (es) Método, aparato y producto de programa informático para interpredicción
JP7106744B2 (ja) ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法
BR112021006892A2 (pt) método e aparelho de predição inter
BR112021010416A2 (pt) Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto
BR112021008016A2 (pt) codificador, decodificador e métodos correspondentes para modo de fusão
WO2020238706A9 (en) An encoder, a decoder and corresponding methods using for ibc merge list
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
BR112021016677A2 (pt) Método e aparelho para predição inter baseada em afim de sub-blocos de croma
CN113660497B (zh) 编码器、解码器和使用ibc合并列表的对应方法
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
CN113597761A (zh) 帧内预测方法和装置
BR122023021045A2 (pt) Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
BR112021012708A2 (pt) Método e aparelho de modelagem linear de componente cruzado para predição intra
ES2946058T3 (es) Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
RU2817030C2 (ru) Кодер, декодер и соответствующие способы использования для списка объединения ibc
BR122023021074A2 (pt) Método de desblocagem, dispositivo para uso em um codificador e/ou um decodificador de imagem, codificador, decodificador, e meio legível por computador não transitório

Legal Events

Date Code Title Description
B15V Prolongation of time limit allowed

Free format text: TENDO EM VISTA A PORTARIA INPI PR NO 120 DE 16/03/2020, PORTARIA INPI PR NO 161 DE 13/04/2020; PORTARIA INPI PR NO 166 DE 27/04/2020 E PORTARIA INPI PR NO 179 DE 11/05/2020, QUANTO A SUSPENSAO DOS PRAZOS VENCIDOS ENTRE 16/03/2020 A 31/05/2020, E PORTARIA INPI NO 334 DE 24/09/2020, QUANTO AOS PRAZOS VENCIDOS ENTRE 16/09/2020 A 25/09/2020, DEVOLVE-SE O PRAZO NESSE PEDIDO COM RELACAO A SOLICITACAO DO PEDIDO DE EXAME.

B154 Notification of filing of divisional application [chapter 15.50 patent gazette]

Free format text: O PEDIDO FOI DIVIDIDO NO BR122023000838-3 PROTOCOLO 870230004303 EM 16/01/2023 16:46.O PEDIDO FOI DIVIDIDO NO BR122023000842-1 PROTOCOLO 870230004312 EM 16/01/2023 16:56.