BR112021009833A2 - codificador, decodificador e métodos correspondentes para predição inter - Google Patents

codificador, decodificador e métodos correspondentes para predição inter Download PDF

Info

Publication number
BR112021009833A2
BR112021009833A2 BR112021009833-0A BR112021009833A BR112021009833A2 BR 112021009833 A2 BR112021009833 A2 BR 112021009833A2 BR 112021009833 A BR112021009833 A BR 112021009833A BR 112021009833 A2 BR112021009833 A2 BR 112021009833A2
Authority
BR
Brazil
Prior art keywords
search space
motion vector
fact
video
positions
Prior art date
Application number
BR112021009833-0A
Other languages
English (en)
Inventor
Semih ESENLIK
Han Gao
Anand Meher KOTRA
Biao Wang
Jianle Chen
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021009833A2 publication Critical patent/BR112021009833A2/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/57Motion estimation characterised by a search window with variable size or shape
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA PREDIÇÃO INTER. Um método de predição inter, compreendendo: obter um vetor de movimento inicial para um bloco atual; determinar posições de espaço de busca de acordo com o vetor de movimento inicial; verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo; e determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca alvo, em que uma posição de espaço de busca central é verificada primeiro de acordo com a ordem de verificação, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial.

Description

“CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA PREDIÇÃO INTER”
[0001] O presente pedido reivindica prioridades ao Pedido de Patente Provisório dos EUA No. de série 62/791,869, depositado em 13 de janeiro de 2019, e ao Pedido de Patente Provisório dos EUA No. de série 62/812,190, depositado em 28 de fevereiro de 2019, cujos conteúdos são aqui incorporados a título de referência em suas totalidades.
CAMPO TÉCNICO
[0002] As modalidades do presente pedido geralmente se referem ao campo de processamento de imagem e, mais particularmente, à predição inter.
FUNDAMENTOS
[0003] A codificação de vídeo (codificação e decodificação de vídeo) é usada em uma ampla gama de aplicações de vídeo digital, por exemplo, broadcast de TV digital, transmissão de vídeo pela Internet e redes móveis, aplicações de conversação em tempo real, como bate-papo de vídeo, videoconferência, 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.
[0004] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou de outra forma comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são geralmente comprimidos antes de serem comunicados pelas redes de telecomunicações dos dias modernos. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque os recursos de memória podem ser limitados. Dispositivos de compressão de vídeo frequentemente usam software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo assim a quantidade de dados necessária para representar imagens de vídeo digital. Os dados comprimidos são então recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas cada vez maiores de maior qualidade de vídeo, técnicas de compressão e descompressão aprimoradas que melhoram a taxa de compressão com pouco ou nenhum sacrifício na qualidade da imagem são desejáveis.
SUMÁRIO
[0005] Um esquema para construir um espaço de busca para refinamento de vetor de movimento é fornecido, várias ordens de verificação para verificar custos de correspondência das posições de espaço de busca no espaço de busca são ilustradas no presente pedido.
[0006] As modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação de acordo com as reivindicações independentes.
[0007] Em um primeiro aspecto do presente pedido, um método de predição inter, compreendendo: obter um vetor de movimento inicial para um bloco atual; determinar posições de espaço de busca de acordo com o vetor de movimento inicial; verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo; e determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca alvo, em que uma posição de espaço de busca central é verificada primeiro de acordo com a ordem de verificação, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial.
[0008] Em uma implementação viável, as posições de espaço de busca compreendem as posições de busca centrais e as posições de espaço de busca vizinhas, em que determinar as posições de espaço de busca de acordo com o vetor de movimento inicial, compreende: determinar a posição de espaço de busca central de acordo com o vetor de movimento inicial; e determinar as posições de espaço de busca vizinhas de acordo com um ou mais deslocamentos predefinidos e com a posição de espaço de busca central.
[0009] Em uma implementação viável, um espaço de busca consiste nas posições de espaço de busca, e um padrão do espaço de busca é um quadrado de posição de espaço de busca 5x5.
[0010] Em uma implementação viável, verificar custos de correspondência das posições de espaço de busca de acordo com a ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo, compreende: verificar um custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação; e selecionar uma posição de espaço de busca com o custo de correspondência mínimo entre as posições de espaço de busca como a posição de espaço de busca alvo.
[0011] Em uma implementação viável, verificar o custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação, compreende: comparar um custo de correspondência de uma dentre as posições de espaço de busca com um custo de correspondência mínimo temporário; definir o custo de correspondência da uma dentre as posições de espaço de busca como o custo de correspondência mínimo temporário quando o custo de correspondência da uma dentre as posições de espaço de busca for menor que o custo de correspondência mínimo temporário; e definir o custo de correspondência mínimo temporário como o custo de correspondência mínimo após a última das posições de espaço de busca ser verificada.
[0012] Em uma implementação viável, a posição de espaço de busca central é definida como (0, 0) de um sistema de coordenadas, horizontal direita é definida como uma direção positiva horizontal e vertical para baixo é definida como uma direção positiva vertical.
[0013] Em uma implementação viável, a ordem de verificação é (0, 0), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (-2, 0), (-1, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2).
[0014] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (-2, 1), (-2, 2), (- 1, 2), (0, 2), (1, 2), (2, 2), (2, 1), (2, 0), (2, -1), (2, -2), (1, -2), (0, -2), (-1, -2), (-2, - 2), (-2, -1).
[0015] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, - 1), (-2, 1), (-2, 2), (-1, 2), (1, 2), (2, 2), (2, 1), (2, -1), (2, -2), (1, -2), (-1, -2), (-2, -2).
[0016] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0,
-2), (-2, - 2), (-2, 2), (2, 2), (2, -2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2).
[0017] Em um segundo aspecto do presente pedido, o aparelho de predição inter, compreende: um módulo de obtenção, configurado para obter um vetor de movimento inicial para um bloco atual; um módulo de definição, configurado para determinar as posições de espaço de busca de acordo com o vetor de movimento inicial; um módulo de cálculo, configurado para verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo; e um módulo de predição, configurado para determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca alvo, em que uma posição de espaço de busca central é verificada primeiro de acordo com a ordem de verificação, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial.
[0018] Em uma implementação viável, as posições de espaço de busca compreendem as posições de busca centrais e as posições de espaço de busca vizinhas, em que o módulo de definição é configurado para: determinar a posição de espaço de busca central de acordo com o vetor de movimento inicial; e determinar as posições de espaço de busca vizinhas de acordo com um ou mais deslocamentos predefinidos e com a posição de espaço de busca central.
[0019] Em uma implementação viável, um espaço de busca consiste nas posições de espaço de busca, e um padrão do espaço de busca é um quadrado de posição de espaço de busca 5x5.
[0020] Em uma implementação viável, o módulo de cálculo é configurado para: verificar um custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação; e selecionar uma posição de espaço de busca com o custo de correspondência mínimo entre as posições de espaço de busca como a posição de espaço de busca alvo.
[0021] Em uma implementação viável, o módulo de cálculo é configurado para: comparar um custo de correspondência de uma dentre as posições de espaço de busca com um custo de correspondência mínimo temporário; definir o custo de correspondência da uma dentre as posições de espaço de busca como o custo de correspondência mínimo temporário quando o custo de correspondência da uma dentre as posições de espaço de busca for menor que o custo de correspondência mínimo temporário; e definir o custo de correspondência mínimo temporário como o custo de correspondência mínimo após a última das posições de espaço de busca ser verificada.
[0022] Em uma implementação viável, a posição de espaço de busca central é definida como (0, 0) de um sistema de coordenadas, horizontal direita é definida como uma direção positiva horizontal e vertical para baixo é definida como uma direção positiva vertical.
[0023] Em uma implementação viável, a ordem de verificação é (0, 0), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (-2, 0), (-1, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2).
[0024] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (-2, 1), (-2, 2), (- 1, 2), (0, 2), (1, 2), (2, 2), (2, 1), (2, 0), (2, -1), (2, -2), (1, -2), (0, -2), (-1, -2), (-2, - 2), (-2, -1).
[0025] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, - 1), (-2, 1), (-2, 2), (-1, 2), (1, 2), (2, 2), (2, 1), (2, -1), (2, -2), (1, -2), (-1, -2), (-2, -2).
[0026] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, - 2), (-2, 2), (2, 2), (2, -2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2).
[0027] Em um terceiro aspecto do presente pedido, um método para determinar um vetor de movimento a ser usado na predição inter de um bloco atual de uma imagem de vídeo (ou quadro), o método compreende: obter um vetor de movimento inicial; obter pelo menos dois grupos de pontos (em um exemplo, um grupo de pontos pode compreender apenas um ponto) de acordo com o vetor de movimento inicial; obter o vetor de movimento para o bloco atual de acordo com os pelo menos dois grupos de pontos e uma função de custo.
[0028] Em uma implementação viável, os pelo menos dois grupos de pontos compreendem todos os pontos que estão dentro de um quadrado, o quadrado é centralizado em um ponto correspondente ao vetor de movimento inicial.
[0029] Em uma implementação viável, os pelo menos dois grupos de pontos compreendem todos os pontos que estão dentro de um quadrado, os cantos do quadrado são determinados pelas coordenadas (-2, -2), (2, 2), (-2, 2) e (2, -2).
[0030] Em uma implementação viável, um primeiro grupo de pontos nos pelo menos dois grupos de pontos compreende o ponto central que é apontado pelo vetor de movimento inicial.
[0031] Em uma implementação viável, um segundo grupo de pontos nos pelo menos dois grupos de pontos compreende quatro pontos que são vizinhos esquerdo, superior, direito e inferior do ponto central, o ponto central é apontado pelo vetor de movimento inicial.
[0032] Em uma implementação viável, um terceiro grupo de pontos nos pelo menos dois grupos de pontos compreende quatro pontos que estão a 1 amostra de pixel de distância do ponto central e que não estão incluídos no segundo grupo.
[0033] Em uma implementação viável, um quarto grupo de pontos nos pelo menos dois grupos de pontos compreende pontos que estão a 2 amostras de pixel de distância do ponto central pelo menos em um eixo de coordenadas.
[0034] Em uma implementação viável, os pelo menos dois grupos de pontos são processados ordenadamente quando os pelo menos dois grupos de pontos são processados com a função de custo.
[0035] Em uma implementação viável, um quarto grupo de pontos nos pelo menos dois grupos de pontos compreende pontos que estão a 2 amostras de pixel de distância do ponto central em um eixo de coordenadas e 0 amostras de pixel de distância do ponto central no outro eixo de coordenadas.
[0036] Em uma implementação viável, um quinto grupo de pontos nos pelo menos dois grupos de pontos compreende pontos que estão a 2 amostras de pixel de distância do ponto central pelo menos em um eixo de coordenadas e que não estão incluídos no quarto grupo de pontos.
[0037] Em uma implementação viável, um quinto grupo de pontos nos pelo menos dois grupos de pontos compreende pontos que estão a 2 amostras de pixel de distância do ponto central em ambos os eixos de coordenadas –x e –y.
[0038] Em uma implementação viável, um sexto grupo de pontos nos pelo menos dois grupos de pontos compreende pontos que estão a 2 amostras de pixel de distância do ponto central pelo menos em um eixo de coordenadas e que não estão incluídos no quarto ou quinto grupo de pontos.
[0039] Em uma implementação viável, um quarto grupo de pontos nos pelo menos dois grupos de pontos compreende pontos que estão a 2 amostras de pixel de distância do ponto central apenas em um eixo de coordenadas e 0 amostras de pixel de distância do ponto central no outro eixo de coordenadas.
[0040] Em uma implementação viável, quando um grupo de pontos nos pelo menos dois grupos de pontos compreende pelo menos dois pontos, os pontos do grupo são ordenados de acordo com uma regra predefinida.
[0041] Em uma implementação viável, quando um grupo de pontos nos pelo menos dois grupos de pontos compreende pelo menos dois pontos, o ponto mais à esquerda entre o grupo de pontos é selecionado como o primeiro ponto entre o grupo de pontos.
[0042] Em uma implementação viável, quando um grupo de pontos nos pelo menos dois grupos de pontos compreende pelo menos dois pontos, e quando há mais de um ponto que são pontos mais à esquerda do grupo de pontos, o ponto que fica mais à esquerda do grupo e que possui um deslocamento de coordenada mais próximo de 0 na direção vertical (direção -y) é selecionado como o primeiro ponto entre o grupo de pontos.
[0043] Em uma implementação viável, quando um grupo de pontos nos pelo menos dois grupos de pontos compreende pelo menos dois pontos, e quando há mais de um ponto mais à esquerda no grupo de pontos e se os pontos têm o mesmo deslocamento na direção –y, então, o ponto mais à esquerda na direção superior é selecionado como o primeiro ponto do grupo de pontos.
[0044] Em uma implementação viável, quando um grupo de pontos nos pelo menos dois grupos de pontos compreende pelo menos dois pontos, e após o primeiro ponto no grupo de pontos ser determinado, os pontos restantes no mesmo grupo são ordenados com base na varredura no sentido horário ou sentido anti-horário dos pontos ao redor do ponto central.
[0045] Em uma implementação viável, o vetor de movimento inicial corresponde a um vetor de movimento que é derivado usando um índice sinalizado no fluxo de bits.
[0046] Em uma implementação viável, o vetor de movimento inicial e o obtido não são codificados no fluxo de bits.
[0047] Em um quarto aspecto do presente pedido, um produto de programa de computador que compreende código de programa para realizar o método de acordo com o primeiro ou terceiro aspecto quando executado em um computador ou processador.
[0048] Em um quinto aspecto do presente pedido, um decodificador, compreendendo: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando 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 o primeiro ou terceiro aspecto.
[0049] Em um sexto aspecto do presente pedido, um codificador, compreendendo: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando 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 o primeiro ou terceiro aspecto.
[0050] Em um sétimo aspecto do presente pedido, uma mídia legível por computador não transitória transportando um código de programa que, quando executado por um dispositivo de computador, faz o dispositivo de computador realizar o método do primeiro ou terceiro aspecto.
[0051] O anterior e outros objetos são alcançados pelo assunto das reivindicações independentes. Formas de implementação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0052] Modalidades particulares são descritas nas reivindicações independentes anexas, com outras modalidades nas reivindicações dependentes.
[0053] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0054] No seguinte, modalidades do pedido são descritas em mais detalhes com referência às figuras e desenhos anexos, nos quais:
[0055] A Figura 1A é um diagrama de blocos mostrando um exemplo de um sistema de codificação de vídeo configurado para implementar modalidades do pedido;
[0056] A Figura 1B é um diagrama de blocos mostrando outro exemplo de um sistema de codificação de vídeo configurado para implementar modalidades do pedido;
[0057] A Figura 2 é um diagrama de blocos mostrando um exemplo de um codificador de vídeo configurado para implementar modalidades do pedido;
[0058] A Figura 3 é um diagrama de blocos mostrando um exemplo de estrutura de um decodificador de vídeo configurado para implementar modalidades do pedido;
[0059] A Figura 4 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0060] A Figura 5 é um diagrama de blocos ilustrando outro exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0061] A Figura 6 é um diagrama de blocos ilustrando outro exemplo de um método de predição;
[0062] A Figura 7 é uma ilustração de uma ordem de verificação;
[0063] A Figura 8 é outra ilustração de uma ordem de verificação;
[0064] A Figura 9 é outra ilustração de uma ordem de verificação;
[0065] A Figura 10 é outra ilustração de uma ordem de verificação;
[0066] A Figura 11 é outra ilustração de uma ordem de verificação;
[0067] A Figura 12 é outra ilustração de uma ordem de verificação;
[0068] A Figura 13 é outra ilustração de uma ordem de verificação;
[0069] A Figura 14 é outra ilustração de uma ordem de verificação;
[0070] A Figura 15 é um diagrama de blocos mostrando um exemplo de um aparelho de predição configurado para implementar modalidades do pedido;
[0071] A Figura 16 é um diagrama de blocos ilustrando um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0072] A Figura 17 é um diagrama de blocos mostrando um exemplo de estrutura de um sistema de abastecimento de conteúdo 3100 que realiza um serviço de entrega de conteúdo;
[0073] A Figura 18 é um diagrama de blocos mostrando uma estrutura de um exemplo de um dispositivo terminal.
[0074] No seguinte, sinais de referência idênticos se referem a recursos idênticos ou pelo menos funcionalmente equivalentes, se não for explicitamente especificado de outra forma.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0075] Na descrição a seguir, é feita referência às figuras anexas, que fazem parte da divulgação e que mostram, a título de ilustração, aspectos específicos das modalidades do pedido ou aspectos específicos em que modalidades do presente pedido podem ser usadas. Entende-se que modalidades do pedido podem ser usadas em outros aspectos e compreendem mudanças estruturais ou lógicas não representadas nas figuras. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante, e o escopo do presente pedido é definido pelas reivindicações anexas.
[0076] Por exemplo, entende-se que uma divulgação em conexão com um método descrito também pode ser verdadeira para um dispositivo ou sistema correspondente configurado para executar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de passos de método específicos forem descritos, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar o descrito um ou a pluralidade de passos de método (por exemplo, uma unidade realizando a uma ou a pluralidade de passos, ou uma pluralidade de unidades, cada uma realizando uma ou mais da pluralidade de passos), mesmo se tais uma ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico é descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir um passo para realizar a funcionalidade de uma ou pluralidade de unidades (por exemplo, um passo realizando a funcionalidade de uma ou pluralidade de unidades, ou uma pluralidade de passos, cada realizando a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal uma ou pluralidade de passos não forem explicitamente descritos ou ilustrados nas figuras. Além disso, entende-se que os recursos das várias modalidades exemplares e/ou aspectos descritos neste documento podem ser combinados uns com os outros, a menos que especificamente indicado de outra forma.
[0077] A codificação de vídeo normalmente se refere ao processamento de uma sequência de imagens, que formam o vídeo ou a sequência de vídeo. Em vez do termo "imagem", o termo "quadro" ou "imagem" pode ser usado como sinônimos no campo da codificação de vídeo. A codificação de vídeo (ou codificação em geral) compreende duas partes de codificação de vídeo e decodificação de vídeo. A codificação de vídeo é realizada no lado de origem, geralmente compreendendo o processamento (por exemplo, por compressão) das imagens de vídeo originais para reduzir a quantidade de dados necessária para representar as imagens de vídeo (para armazenamento e/ou transmissão mais eficiente). A decodificação de vídeo é realizada no lado de destino e normalmente compreende o processamento inverso em comparação com o codificador para reconstruir as imagens de vídeo. As modalidades que se referem à "codificação" de imagens de vídeo (ou imagens em geral) devem ser entendidas como relacionadas à "codificação" ou "decodificação" de imagens de vídeo ou respectivas sequências de vídeo. A combinação da parte de codificação e da parte de decodificação também é conhecida como CODEC (Codificação e Decodificação).
[0078] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, ou seja, as imagens de vídeo reconstruídas têm a mesma qualidade das imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). Em caso de codificação de vídeo com perdas, compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados que representam as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, ou seja, a qualidade das imagens de vídeo reconstruídas é inferior ou pior comparada à qualidade das imagens de vídeo originais.
[0079] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (ou seja, combinam predição espacial e temporal no domínio da amostra e codificação de transformada 2D para aplicar a quantização no domínio de transformada). Cada imagem de uma sequência de vídeo é normalmente particionada em um conjunto de blocos não sobrepostos e a codificação é normalmente executada em um nível de bloco. Em outras palavras, no codificador, o vídeo é normalmente processado, ou seja, codificado, em um nível de bloco (bloco de vídeo), por exemplo, usando predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformando o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a serem transmitidos (compressão), enquanto no decodificador, o processamento inverso em comparação com o codificador é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o loop de processamento de decodificador de modo que ambos gerem previsões idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processamento, ou seja, codificação dos blocos subsequentes.
[0080] Nas seguintes modalidades de um sistema de codificação de vídeo 10, um codificador de vídeo 20 e um decodificador de vídeo 30 são descritos com base nas Figuras 1 a 3.
[0081] A Figura 1A é um diagrama de blocos esquemático que ilustra um exemplo de sistema de codificação 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação curto 10) que pode utilizar as técnicas do presente pedido. O codificador de vídeo 20 (ou codificador 20 curto) e o decodificador de vídeo 30 (ou decodificador curto 30) do sistema de codificação de vídeo 10 representa exemplos de dispositivos que podem ser configurados para executar técnicas de acordo com vários exemplos descritos no presente pedido.
[0082] Como mostrado na Figura 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para decodificar os dados de imagem codificados 13.
[0083] O dispositivo de origem 12 compreende um codificador 20 e pode, adicionalmente, isto é, opcionalmente, compreender uma fonte de imagem 16, um pré-processador (ou unidade de pré-processamento) 18, por exemplo, um pré-processador de imagem 18 e uma interface de comunicação ou unidade de comunicação 22
[0084] A fonte de imagem 16 pode compreender ou ser qualquer tipo de dispositivo de captura de imagem, por exemplo, uma câmera para capturar uma imagem do mundo real e/ou qualquer tipo de dispositivo de geração de imagem, por exemplo, um processador gráfico de computador para gerar uma imagem animada por computador, ou qualquer tipo de outro dispositivo para obter e/ou fornecer uma imagem do mundo real, uma imagem gerada por computador (por exemplo, um conteúdo de tela, uma imagem de realidade virtual (VR)) e/ou qualquer combinação das mesmas (por exemplo, uma imagem de realidade aumentada (AR)). A fonte de imagem pode ser qualquer tipo de memória ou armazenamento que armazene qualquer uma das imagens acima mencionadas.
[0085] Em distinção ao pré-processador 18 e ao processamento realizados pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também podem ser referidos como imagem bruta ou dados de imagem bruta 17.
[0086] O pré-processador 18 é configurado para receber os dados de imagem (brutos) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré- processados 19. Pré-processamento realizado pelo pré-processador 18 pode, por exemplo, compreender corte, conversão de formato de cor (por exemplo, de RGB em 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.
[0087] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer dados de imagem codificados 21 (detalhes adicionais serão descritos abaixo, por exemplo, com base na Figura 2).
[0088] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer outra versão processada dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0089] 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.
[0090] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos), por exemplo, diretamente a partir do dispositivo de origem 12 ou a partir de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados, e fornecer os dados de imagem codificados 21 para o decodificador 30.
[0091] A interface de comunicação 22 e a interface de comunicação 28 podem ser configuradas para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 13 através de um enlace de comunicação direto entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão direta com fio ou sem fio, ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação delas, ou qualquer tipo de rede privada e pública, ou qualquer tipo de combinação das mesmas.
[0092] A interface de comunicação 22 pode ser, por exemplo, configurada para empacotar os dados de imagem codificados 21 em um formato apropriado, por exemplo, pacotes, e/ou processar os dados de imagem codificados usando qualquer tipo de codificação de transmissão ou processamento para transmissão através de um enlace de comunicação ou rede de comunicação.
[0093] A interface de comunicação 28, formando a contraparte da interface de comunicação 22, pode ser, por exemplo, configurada para receber os dados transmitidos e processar os dados de transmissão usando qualquer tipo de decodificação ou processamento de transmissão correspondente e/ou desempacotamento para obter os dados de imagem codificados 21.
[0094] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, conforme indicado pela seta para o canal de comunicação 13 na Figura 1A apontando a partir do dispositivo de origem 12 para o dispositivo de destino 14, ou interfaces de comunicação bidirecionais, e podem ser configuradas, por exemplo, para enviar e receber mensagens, por exemplo, para estabelecer uma conexão, para reconhecer e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificada.
[0095] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (detalhes adicionais serão descritos abaixo, por exemplo, com base na Figura 3 ou Figura 5).
[0096] O pós-processador 32 do dispositivo de destino 14 é configurado para pós-processar os dados de imagem decodificados 31 (também chamados de dados de imagem reconstruída), por exemplo, a imagem decodificada 31, para obter dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, recorte ou reamostragem, ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0097] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para exibir a imagem, por exemplo, para um usuário ou visualizador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de visor para representar a imagem reconstruída, por exemplo, um visor ou monitor integrado ou externo. Os visores podem, por exemplo, compreender visores de cristal líquido (LCD), visores de diodos emissores de luz orgânica (OLED), visores de plasma, projetores, micro visores de LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de visor.
[0098] Embora a Figura 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, modalidades de dispositivos também podem compreender ambos ou ambas as funcionalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente. Em tais modalidades, o dispositivo de origem 12 ou funcionalidade correspondente e o dispositivo de destino 14 ou funcionalidade correspondente podem ser implementados usando o mesmo hardware e/ou software ou por hardware e/ou software separado ou qualquer combinação dos mesmos.
[0099] Como será evidente para o versado com base na descrição, a existência e a divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14, como mostrado na Figura 1A, podem variar dependendo do dispositivo e aplicação reais.
[0100] 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 codificador 20 e decodificador 30 podem ser implementados por meio de circuitos de processamento, como mostrado na Figura 1B, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou qualquer combinação dos mesmos. O codificador 20 pode ser implementado através do circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao codificador 20 da Figura 2 e/ou qualquer outro sistema ou subsistema de codificador aqui descrito. O decodificador 30 pode ser implementado através do circuitos de processamento 46 para incorporar os vários módulos, conforme discutido em relação ao decodificador 30 da Figura 3 e/ou qualquer outro sistema ou subsistema de decodificador aqui descrito. O circuitos de processamento pode ser configurado para executar as várias operações conforme discutido mais tarde. Conforme mostrado na Figura 5, se as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Tanto o codificador de vídeo 20 quanto o decodificador de vídeo 30 podem ser integrados como parte de um codificador/decodificador combinado (CODEC) em um único dispositivo, por exemplo, como mostrado na Figura 1B.
[0101] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla gama de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou fixos, por exemplo, notebooks ou laptops, telefones celulares, smartphones, tablets ou computadores tablet,
câmeras, computadores desktop, decodificadores, televisores, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão contínua (“streaming”) de vídeo (como servidores de serviços de conteúdo ou servidores de entrega de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou semelhantes, e podem usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0102] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na Figura 1A é apenas um exemplo e as técnicas do presente pedido podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos por meio de uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em alguns exemplos, a codificação e a decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados a partir da memória.
[0103] Por conveniência da descrição, as modalidades do pedido são descritas neste documento, por exemplo, por referência à 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 ITU-T Grupo de Especialistas de Codificação de Vídeo (VCEG) e Grupo de Especialistas de Imagem em Movimento ISO/IEC (MPEG). Um versado na técnica entenderá que as modalidades do pedido não estão limitadas a HEVC ou VVC. Codificador e Método de Codificação
[0104] A Figura 2 mostra um diagrama de blocos esquemático de um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da Figura 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, uma unidade de filtro loop 220, um buffer de imagem decodificada (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição intra 244, uma unidade de predição intra 254 e uma unidade de particionamento 262. A unidade de predição intra 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). Um codificador de vídeo 20, como mostrado na Figura 2, também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo de acordo com um codec de vídeo híbrido.
[0105] A unidade de cálculo residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de seleção de modo 260 podem ser referidas como formando um percurso de sinal direto do codificador 20, enquanto a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o buffer 216, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 podem ser referidos como formando um percurso de sinal inverso do codificador de vídeo 20, em que o percurso de sinal inverso do codificador de vídeo 20 corresponde ao percurso de sinal do decodificador (ver o decodificador de vídeo 30 na Figura 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 244 e a unidade de predição intra 254 também são referidas para formar o “decodificador embutido” do codificador de vídeo 20. Imagens e particionamento de imagens (imagens e blocos)
[0106] O codificador 20 pode ser configurado para receber, por exemplo, através da entrada 201, uma imagem 17 (ou dados de imagem 17), por exemplo, imagem de uma sequência de imagens formando um vídeo ou sequência de vídeo. A imagem recebida ou dados de imagem também podem ser uma imagem pré-processada 19 (ou dados de imagem pré-processados 19). Por razões de simplicidade, a seguinte descrição refere-se à imagem 17. A imagem 17 também pode ser referida como imagem atual ou imagem a ser codificada (em particular na codificação de vídeo para distinguir a imagem atual de outras imagens, por exemplo, imagens previamente codificadas e/ou decodificadas da mesma sequência de vídeo, ou seja, a sequência de vídeo que também inclui a imagem atual).
[0107] Uma imagem (digital) é ou pode ser considerada como um arranjo ou matriz bidimensional de amostras com valores de intensidade. Uma amostra na matriz também pode ser referida como pixel (forma abreviada de elemento de imagem) ou pel. O número de amostras na direção horizontal e vertical (ou eixo) da matriz ou imagem define o tamanho e/ou resolução da imagem. Para a representação da cor, normalmente três componentes de cor são empregados, ou seja, a imagem pode ser representada ou incluir três matrizes de amostra. No formato ou espaço de cor RBG, uma imagem compreende uma matriz de amostra vermelha, verde e azul correspondente. No entanto, na codificação de vídeo, cada pixel é tipicamente representado em um formato ou espaço de cor de luminância e crominância, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes também L é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma para abreviar) Y representa o brilho ou intensidade do nível de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma para abreviar) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende uma matriz de amostra de luminância de valores de amostra de luminância (Y) e duas matrizes de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice-versa, o processo também é conhecido como transformação ou conversão de cores. Se uma imagem for monocromática, a imagem pode compreender apenas uma matriz de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, uma matriz de amostras de luma em formato monocromático ou uma matriz de amostras de luma e duas matrizes correspondentes de amostras de croma em formato de cor 4: 2: 0, 4: 2: 2 e 4: 4:
4.
[0108] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não representada na Figura 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (normalmente não sobrepostos). Esses blocos também podem ser referidos como blocos raiz, macroblocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeo e a grade correspondente definindo o tamanho do bloco, ou para alterar o tamanho do bloco entre imagens ou subconjuntos ou grupos de imagens, e particionar cada imagem nos blocos correspondentes.
[0109] Em outras modalidades, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos os blocos que formam a imagem 17. O bloco de imagem 203 também pode ser referido como bloco de imagem atual ou bloco de imagem a ser codificado.
[0110] Como a imagem 17, o bloco de imagem 203 é ou pode ser considerado como uma matriz bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, uma matriz de amostra (por exemplo, uma matriz de luma no caso de uma imagem monocromática 17, ou uma matriz de luma ou croma no caso de uma imagem colorida) ou três matrizes de amostra (por exemplo, uma matriz de luma e duas de croma 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 horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203. Por conseguinte, um bloco pode, por exemplo, uma matriz MxN (coluna M por linha N) de amostras, ou um Matriz MxN de coeficientes de transformada.
[0111] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser configuradas para codificar a imagem 17 bloco a bloco, por exemplo, a codificação e a predição são realizadas por bloco 203.
[0112] As modalidades do codificador de vídeo 20, conforme mostrado na Figura 2, podem ser adicionalmente configuradas para particionar e/ou codificar a imagem usando fatias (também chamadas de fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (normalmente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, partes (H.265/HEVC e VVC) ou tijolos (VVC).
[0113] As modalidades do codificador de vídeo 20, como mostrado na Figura 2, podem ser adicionalmente configuradas para particionar e/ou codificar a imagem usando grupos de fatias/partes (também referidos como grupos de partes de vídeo) e/ou fatias/partes (também referidos como partes de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de partes (normalmente não sobrepostos), e cada grupos de fatias/partes pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais partes, em que cada parte, por exemplo, pode ter forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários. Cálculo Residual
[0114] A unidade de cálculo residual 204 pode ser configurada para calcular um bloco residual 205 (também referido como residual 205) com base no bloco de imagem 203 e em um bloco de predição 265 (detalhes adicionais sobre o bloco de predição 265 são fornecidos posteriormente), por exemplo, subtraindo valores de amostra do bloco de predição 265 a partir de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra. Transformada
[0115] A unidade de processamento de transformada 206 pode ser configurada para aplicar uma transformada, por exemplo, uma transformada de cosseno discreta (DCT) ou transformada de seno discreta (DST), nos valores de amostra do bloco residual 205 para obter coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes residuais de transformada e representam o bloco residual 205 no domínio de transformada.
[0116] A unidade de processamento de transformada 206 pode ser configurada para aplicar aproximações inteiras de DCT/DST, como as transformadas especificadas para H.265/HEVC. Comparado a uma transforma de DCT ortogonal, tais aproximações inteiras são tipicamente escalonadas por um determinado fator. A fim de preservar a norma do bloco residual que é processado pelas transformadas direta e inversa, fatores de escalonamento adicionais são aplicados como parte do processo de transformada. Os fatores de escalonamento são normalmente escolhidos com base em certas restrições, como fatores de escalonamento sendo uma potência de dois para operações de desvio, profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Fatores de escalonamento específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e fatores de escalonamento correspondentes para a transformação direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados em conformidade.
[0117] As modalidades do codificador de vídeo 20 (respectivamente unidade de processamento de transformada 206) podem ser configuradas para emitir parâmetros de transformada, por exemplo, um tipo de transformada ou transformadas, por exemplo, diretamente ou codificados ou comprimidos através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de transformada para decodificação. Quantização
[0118] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando quantização escalar ou quantização vetorial. Os coeficientes quantizados 209 também podem ser referidos como coeficientes de transformada quantizados 209 ou coeficientes residuais quantizados 209.
[0119] O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada 207. Por exemplo, um coeficiente de transformada de n bits pode ser arredondado para baixo para um coeficiente de transformada de m bits durante a quantização, onde n é maior que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, diferentes escalas podem ser aplicadas para alcançar uma quantização mais fina ou mais grosseira. Tamanhos de passo de quantização menores correspondem a quantização mais fina, enquanto tamanhos de passo de quantização maiores correspondem a quantização mais grosseira. O tamanho de passo 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 passos de quantização aplicáveis. Por exemplo, pequenos parâmetros de quantização podem corresponder a quantização fina (tamanhos de passos de quantização pequenos) e parâmetros de quantização grandes podem corresponder a quantização grosseira (tamanhos de passos de quantização grandes) ou vice-versa. A quantização pode incluir a divisão por um tamanho de passo de quantização e uma desquantização correspondente e/ou a desquantização inversa, por exemplo, por unidade de quantização inversa 210, pode incluir multiplicação pelo tamanho de passo 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 passo de quantização. Geralmente, o tamanho de passo de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Fatores de escalonamento adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa da escala usada na aproximação de ponto fixo da equação para o tamanho de passo de quantização e parâmetro de quantização. Em uma implementação de exemplo, o dimensionamento da transformada inversa e a desquantização podem ser combinados. Alternativamente, tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos dos passos de quantização.
[0120] As modalidades do codificador de vídeo 20 (respectivamente unidade de quantização 208) podem ser configuradas para emitir parâmetros de quantização (QP), por exemplo, diretamente ou codificados por meio da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação. Quantização Inversa
[0121] A unidade de quantização inversa 210 é configurada para aplicar a quantização inversa da unidade de quantização 208 nos coeficientes quantizados para obter coeficientes desquantizados 211, por exemplo, aplicando o inverso do esquema de quantização aplicado pela unidade de quantização 208 com base ou usando o mesmo tamanho de passo de quantização como a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora normalmente não sejam idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada
207. Transformada Inversa
[0122] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada de cosseno discreta inversa (DCT) ou transformada de seno discreta inversa (DST) ou outras transformadas inversas, para obter um bloco residual 213 (ou coeficientes desquantizados correspondentes 213) no domínio da amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213. Reconstrução
[0123] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, adicionando - amostra por amostra - os valores de amostra do bloco residual reconstruído 213 e os valores de amostra do bloco de predição 265. Filtragem
[0124] A unidade de filtro de circuito 220 (ou "filtro de circuito" para abreviar 220) é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter valores de amostra filtrados. A unidade de filtro loop é, por exemplo, configurada para suavizar as transições de pixel, ou de outra forma melhorar a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros loop, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF), ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desbloqueio, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desbloqueio, SAO e ALF. Em outro exemplo, um processo chamado mapeamento de luma com escala de croma (LMCS) (ou seja, o remodelador in-loop adaptativo) é adicionado. Este processo é realizado antes do desbloqueio. Em outro exemplo, o processo de filtro de desbloqueio também pode ser aplicado às bordas de sub-bloco internas, por exemplo, bordas de sub- blocos afins, bordas de sub-blocos ATMVP, bordas de transformada de sub- bloco (SBT) e bordas de subpartição intra (ISP). Embora a unidade de filtro de circuito 220 seja mostrada na Figura 2 como sendo um filtro loop, em outras configurações, a unidade de filtro loop 220 pode ser implementada como um filtro post-loop. O bloco filtrado 221 também pode ser referido como bloco reconstruído filtrado 221.
[0125] As modalidades do codificador de vídeo 20 (respectivamente unidade de filtro loop 220) podem ser configuradas para emitir parâmetros de filtro loop (tais como parâmetros de filtro SAO ou parâmetros de filtro ALF ou parâmetros LMCS), por exemplo, diretamente ou codificados através da unidade de codificação de entropia 270, de modo que, por exemplo, um decodificador 30 pode receber e aplicar os mesmos parâmetros de filtro loop ou respectivos filtros loop para decodificação. Buffer de imagem decodificada
[0126] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência, ou em dados de imagem de referência geral, para codificar dados de vídeo pelo codificador de vídeo 20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de imagem decodificada (DPB) 230 pode ser configurado para armazenar um ou mais blocos filtrados 221. O buffer de imagem decodificada 230 pode ser 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 podem fornecer imagens completas previamente reconstruídas, ou seja, imagens decodificadas (e blocos de referência e amostras correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos de referência e amostras correspondentes), por exemplo, para predição inter. O buffer de imagem decodificada (DPB) 230 também pode ser configurado para armazenar um ou mais blocos reconstruídos não filtrados 215 ou, em geral, amostras reconstruídas não filtradas, por exemplo, se o bloco reconstruído 215 não for filtrado pela unidade de filtro loop 220 ou qualquer outra versão processada adicional dos blocos reconstruídos ou amostras. Seleção de modo (particionamento e predição)
[0127] A unidade de seleção de modo 260 compreende unidade de particionamento 262, unidade de predição inter 244 e unidade de predição intra 254 e é configurada para receber ou obter dados de imagem original, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17), e dados de imagem reconstruída, por exemplo, amostras reconstruídas filtradas e/ou não filtradas ou blocos da mesma imagem (atual) e/ou de uma ou uma pluralidade de imagens previamente decodificadas, por exemplo, do buffer de imagem decodificada 230 ou outros buffers (por exemplo, buffer de linha, não mostrado). Os dados de imagem reconstruída são usados como dados de imagem de referência para predição, por exemplo, predição inter ou predição intra, para obter um bloco de predição 265 ou preditor 265.
[0128] A unidade de seleção de modo 260 pode ser configurada para determinar ou selecionar um particionamento para um modo de predição de bloco atual (incluindo nenhum particionamento) e um modo de predição (por exemplo, um modo de predição intra ou inter) e gerar um bloco de predição correspondente 265, que é usado para o cálculo do bloco residual 205 e para a reconstrução do bloco reconstruído 215.
[0129] 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, daqueles suportados por ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor combinação ou em outras palavras o residual mínimo (residual mínimo significa melhor compressão para transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o modo de particionamento e predição com base na otimização de distorção de taxa (RDO), ou seja, selecionar o modo de predição que fornece uma distorção de taxa mínima. Termos como "melhor", "mínimo", "ótimo" etc., neste contexto, não se referem necessariamente a um "melhor" geral, "mínimo", "ótimo", etc., mas também podem referir-se ao cumprimento de um critério de terminação ou seleção como um valor excedendo ou caindo abaixo de uma fronteira ou outras restrições levando potencialmente a uma "seleção subótima", mas reduzindo a complexidade e o tempo de processamento.
[0130] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar uma imagem a partir de uma sequência em uma sequência de unidades de árvore de codificação (CTUs), e a CTU 203 pode ser particionada em partições de bloco menores ou sub-blocos (que formam novamente blocos), por exemplo, iterativamente usando particionamento de árvore quádrupla (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos, e para realizar, por exemplo, a predição para cada uma dentre as partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e o os modos de predição são aplicados a cada uma dentre as partições de bloco ou sub-blocos.
[0131] A seguir, o particionamento (por exemplo, por unidade de particionamento 260) e processamento de predição (por unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes. Particionamento
[0132] A unidade de particionamento 262 pode ser configurada para particionar uma imagem a partir de uma sequência de vídeo em uma sequência de unidades de árvore de codificação (CTUs), e a unidade de particionamento
262 pode particionar (ou dividir) uma unidade de árvore de codificação (CTU) 203 em partições menores, por exemplo blocos menores de tamanho quadrado ou retangular.
Para uma imagem com três arranjos de amostra, uma CTU consiste em um bloco N × N de amostras de luma junto com dois blocos correspondentes de amostras de croma.
O tamanho máximo permitido do bloco de luma em uma CTU é especificado como 128 × 128 na codificação de vídeo versátil em desenvolvimento (VVC), mas pode ser especificado como outro valor em vez de 128x128 no futuro, por exemplo, 256x256. As CTUs de uma imagem podem ser aglomeradas/agrupadas como grupos de fatias/partes, partes ou tijolos.
Uma parte cobre uma região retangular de uma imagem, e uma parte pode ser dividida em um ou mais tijolos.
Um tijolo consiste em várias linhas de CTU dentro de uma parte.
Uma parte que não é particionada em vários tijolos pode ser referida como um tijolo.
No entanto, um tijolo é um verdadeiro subconjunto de uma parte e não é referido como uma parte.
Existem dois modos de grupos de partes com suporte no VVC, a saber, o modo de grupo de fatias/partes de varredura-raster e o modo de fatia retangular.
No modo de grupo de partes de varredura-raster, um grupo de fatias/partes contém uma sequência de partes na varredura-raster de uma imagem.
No modo de fatia retangular, uma fatia contém vários tijolos de uma imagem que, coletivamente, formam uma região retangular da imagem.
Os tijolos dentro de uma fatia retangular estão na ordem da varredura raster de tijolo da fatia.
Esses blocos menores (que também podem ser chamados de sub-blocos) podem ser particionados em partições ainda menores.
Isso também é referido como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore raiz 0 (nível de hierarquia 0, profundidade 0), pode ser particionado recursivamente, por exemplo, particionado em dois ou mais blocos de um próximo nível de árvore inferior, por exemplo, nós no nível de árvore 1 (nível de hierarquia 1, profundidade 1), em que esses blocos podem ser novamente particionados em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível de hierarquia 2, profundidade 2), etc. até que o particionamento seja encerrado, por exemplo, porque um critério de encerramento é atendido, por exemplo, uma profundidade máxima da árvore ou tamanho mínimo do bloco é alcançado.
Os blocos que não são particionados posteriormente também são chamados de blocos-folha ou nós-folha da árvore.
Uma árvore que usa particionamento em duas partições é chamada de árvore binária (BT), uma árvore que usa particionamento em três partições é chamada de árvore ternária (TT) e uma árvore que usa particionamento em quatro partições é chamada de árvore quádrupla (QT).
[0133] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três matrizes de amostra ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco NxN de amostras para algum valor de N de modo que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três matrizes de amostra ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cores e estruturas de sintaxe separados usados para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco MxN de amostras para alguns valores de M e N de modo que a divisão de um CTB em blocos de codificação seja um particionamento.
[0134] Em modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs usando uma estrutura de árvore quádrupla denotada como árvore de codificação. A decisão de codificar uma área de imagem usando predição de imagem inter (temporal) ou de imagem intra (espacial) é feita no nível de CU de folha. Cada CU de folha pode ser dividida em uma, duas ou quatro PUs de acordo com o tipo de divisão de PU. Dentro de uma PU, o mesmo processo de predição é aplicado e as informações relevantes são transmitidas para o decodificador com base na PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU de folha pode ser particionada em unidades de transformada (TUs) de acordo com outra estrutura de árvore quádrupla semelhante à árvore de codificação para a CU.
[0135] Em modalidades, por exemplo, de acordo com o padrão de codificação de vídeo mais recente atualmente em desenvolvimento, que é referido como Codificação de Vídeo Versátil (VVC), uma árvore multitipo aninhada de árvore quádrupla combinada usando binária e ternária divide estrutura de segmentação, por exemplo, usada para particionar um bloco de codificação.
Na estrutura de árvore de codificação dentro de uma unidade de árvore de codificação, uma CU pode ter ou uma forma quadrada ou retangular.
Por exemplo, a unidade de árvore de codificação (CTU) é primeiro particionada por uma árvore quaternária.
Então, os nós folha de árvore quaternária são adicionalmente particionados por uma estrutura de árvore multitipo.
Existem quatro tipos de divisão na estrutura de árvore multitipo, divisão binária vertical (SPLIT_BT_VER), divisão binária horizontal (SPLIT_BT_HOR), divisão ternária vertical (SPLIT_TT_VER) e divisão ternária horizontal (SPLIT_TT_HOR). Os nós folha de árvore multitipo são chamados de unidades de codificação (CUs) e, a menos que a CU seja muito grande para o comprimento máximo de transformada, essa segmentação é usada para predição e processamento de transformada sem qualquer particionamento adicional.
Isso significa que, na maioria dos casos, a CU, PU e TU têm o mesmo tamanho de bloco na árvore quádrupla com estrutura de bloco de codificação de árvore multitipo aninhada.
A exceção ocorre quando o comprimento máximo de transformada suportado for menor que a largura ou altura do componente de cor da CU.VVC desenvolve um mecanismo de sinalização exclusivo das informações de divisão de partição em árvore quádrupla com estrutura de árvore de codificação de árvore multitipo aninhada.
No mecanismo de sinalização, uma unidade de árvore de codificação (CTU) é tratada como a raiz de uma árvore quaternária e é primeiro particionada por uma estrutura de árvore quaternária.
Cada nó folha de árvore quaternária (quando suficientemente grande para permitir) é então particionado por uma estrutura de árvore multitipo.
Na estrutura de árvore multitipo, uma primeira bandeira (mtt_split_cu_flag) é sinalizada para indicar se o nó é particionado posteriormente; quando um nó é particionado adicionalmente, uma segunda bandeira (mtt_split_cu_vertical_flag) é sinalizada para indicar a direção da divisão e, em seguida, uma terceira bandeira (mtt_split_cu_binary_flag) é sinalizada para indicar se a divisão é binária ou ternária.
Com base nos valores de mtt_split_cu_vertical_flag e mtt_split_cu_binary_flag, o modo de corte de árvore multitipo (MttSplitMode) de uma CU pode ser derivado por um decodificador baseado em uma regra predefinida ou uma tabela. Deve-se observar, para um determinado projeto, por exemplo, bloco de luma 64 × 64 e projeto de segmentação de instruções (“pipelining”) de Croma 32 × 32 em decodificadores de hardware VVC, divisão TT é proibida quando a largura ou a altura de um bloco de codificação de luma for maior que 64, como mostrado na Figura 6. A divisão de TT também é proibida quando a largura ou a altura de um bloco de codificação de croma for maior que 32. O projeto de segmentação de instruções irá dividir uma imagem em unidades de dados de segmentação de instruções virtuais (VPDUs) que são definidas como unidades não sobrepostas em uma imagem. Nos decodificadores de hardware, VPDUs sucessivas são processadas por vários estágios de segmentação de instruções simultaneamente. O tamanho da VPDU é aproximadamente proporcional ao tamanho do buffer na maioria dos estágios de segmentação de instruções, portanto, é importante manter o tamanho da VPDU pequeno. Na maioria dos decodificadores de hardware, o tamanho da VPDU pode ser definido para o tamanho de bloco de transformada máximo (TB). No entanto, em VVC, a partição de árvore ternária (TT) e árvore binária (BT) pode levar ao aumento dos tamanhos das VPDUs.
[0136] Além disso, deve ser notado que, quando uma porção de um bloco de nó de árvore excede o limite de imagem inferior ou direito, o bloco de nó de árvore é forçado a ser dividido até que todas as amostras de cada CU codificada estejam localizadas dentro dos limites de imagem.
[0137] Como exemplo, a ferramenta SubPartições intra (ISP) pode dividir blocos preditos de modo intra de luma vertical ou horizontalmente em 2 ou 4 subpartições, dependendo do tamanho do bloco.
[0138] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento aqui descritas.
[0139] Conforme descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor ou um modo de predição ideal a partir de um conjunto de (por exemplo, pré-determinado) modos de predição. O conjunto de modos de predição pode compreender, por exemplo, modos de predição intra e/ou modos de predição inter. Predição intra
[0140] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido em HEVC, ou pode compreender 67 diferentes modos de predição intra, por exemplo, modos não direcionais como modo DC (ou médio) e modo planar, ou modos direcionais, por exemplo, conforme definido para VVC. Como um exemplo, vários modos de predição intra angular convencionais são substituídos de forma adaptativa por modos de predição intra de grande angular para os blocos não quadrados, por exemplo, conforme definido em VVC. Como outro exemplo, para evitar operações de divisão para predição de DC, apenas o lado mais longo é usado para calcular a média para blocos não quadrados. E, os resultados da predição intra do modo planar podem ser adicionalmente modificados por um método de combinação de predição intra dependente de posição (PDPC).
[0141] A unidade de predição intra 254 é configurada para usar amostras reconstruídas de blocos vizinhos da mesma imagem atual para gerar um bloco de predição intra 265 de acordo com um modo de predição intra do conjunto de modos de predição intra.
[0142] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é adicionalmente configurada para emitir parâmetros de predição intra (ou em informações gerais indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para inclusão nos dados de imagem codificados 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de predição para decodificação. Predição inter
[0143] O conjunto de (ou possíveis) modos de predição inter depende das imagens de referência disponíveis (ou seja, imagens anteriores pelo menos parcialmente decodificadas, por exemplo, armazenadas em DBP 230) e outros parâmetros de predição inter, por exemplo, se a imagem de referência inteira ou apenas uma parte, por exemplo, uma área de janela de busca em torno da área do bloco atual, da imagem de referência é usada para pesquisar o melhor bloco de referência correspondente, e/ou por exemplo, se a interpolação de pixel é aplicada, por exemplo, interpolação de meio/semi-pel, quarto de pel, e/ou 1/16 de pel, ou não.
[0144] Além dos modos de predição acima, o modo de salto, modo direto e/ou outro modo de predição inter podem ser aplicados.
[0145] Por exemplo, predição de mesclagem estendida, a lista de candidatos de mesclagem de tal modo é construída incluindo os seguintes cinco tipos de candidatos em ordem: MVP espacial a partir de CUs vizinhas espaciais, MVP temporal a partir de CUs colocalizadas, MVP baseada em histórico a partir de uma tabela FIFO, MVP média por par e MVs zero. E um refinamento de vetor de movimento lateral de decodificador (DMVR) com base em correspondência bilateral pode ser aplicado para aumentar a precisão dos MVs do modo de mesclagem. Modo de mesclagem com MVD (MMVD), que vem do modo de mesclagem com diferenças de vetor de movimento. Uma bandeira MMVD é sinalizada logo após o envio de uma bandeira de salto e uma bandeira de mesclagem para especificar se o modo MMVD é usado para uma CU. E um esquema de resolução de vetor de movimento adaptativo de nível de CU (AMVR) pode ser aplicado. AMVR permite que MVD da CU seja codificado com precisão diferente. Dependendo do modo de predição para a CU atual, os MVDs da CU atual podem ser selecionados de forma adaptativa. Quando uma CU é codificada no modo de mesclagem, o modo de predição intra/inter combinado (CIIP) pode ser aplicado à CU atual. A média ponderada dos sinais de predição intra e inter é realizada para obter a predição de CIIP. Predição compensada de movimento afim, o campo de movimento afim do bloco é descrito por informações de movimento de dois pontos de controle (4 parâmetros) ou três vetores de movimento de pontos de controle (6 parâmetros). Predição de vetor de movimento temporal baseada em sub-bloco (SbTMVP), que é semelhante à predição de vetor de movimento temporal (TMVP) em HEVC, mas prevê os vetores de movimento das sub-UCs dentro da CU atual. Fluxo ótico bidirecional (BDOF), anteriormente conhecido como BIO, é uma versão mais simples que requer muito menos computação, especialmente em termos de número de multiplicações e o tamanho do multiplicador. No modo de partição triangular, nesse modo, uma CU é dividida igualmente em duas partições em forma de triângulo, usando a divisão diagonal ou a divisão antidiagonal. Além disso, o modo de bipredição é estendido além da média simples para permitir a média ponderada dos dois sinais de predição.
[0146] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Figura 2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231, ou pelo menos um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de um ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para estimativa 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 fazer parte de ou formar uma sequência de imagens formando uma sequência de vídeo.
[0147] 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 das mesmas ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e a posição do bloco atual como parâmetros de predição inter para a unidade de estimativa de movimento. Este deslocamento também é chamado de vetor de movimento (MV).
[0148] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e realizar a predição inter com base em ou usando o parâmetro de predição inter para obter um bloco de predição inter 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento/de bloco determinado pela estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, aumentando assim potencialmente o número de blocos de predição candidatos que podem ser usados para codificar um bloco de imagem. Ao receber o vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagens de referência.
[0149] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Além ou como uma alternativa para fatias e respectivos elementos de sintaxe, grupos de partes e/ou partes e respectivos elementos de sintaxe podem ser gerados ou usados. Codificação de Entropia
[0150] 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 de VLC adaptativo de contexto (CAVLC), um esquema de codificação aritmética, uma binarização, um codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto 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 desvio (sem compressão) nos coeficientes quantizados 209, parâmetros de predição inter, parâmetros de predição intra, parâmetros de filtro loop e/ou outros elementos de sintaxe para obter dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 pode receber e usar os parâmetros de decodificação. O fluxo de bits codificado 21 pode ser transmitido para o decodificador de vídeo 30 ou armazenado em uma memória para transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0151] 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 transformada 20 pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para certos blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade. Método de decodificador e decodificação
[0152] A Figura 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas do presente pedido. O decodificador de vídeo 30 é configurado para receber dados de imagem codificados 21 (por exemplo, fluxo de bits codificado 21), por exemplo, codificado pelo codificador 20, para obter uma imagem decodificada 331. Os dados de imagem codificados ou fluxo de bits compreendem informações para decodificar os dados de imagem codificados, por exemplo, dados que representam blocos de imagem de uma fatia de vídeo codificada (e/ou grupos de partes ou partes) e elementos de sintaxe associados.
[0153] No exemplo da Figura 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro loop 320, uma buffer de imagem decodificada (DBP) 330, uma unidade de aplicação de modo 360, uma unidade de predição inter 344 e uma unidade de predição intra 354. A unidade de predição inter 344 pode ser ou incluir uma unidade de compensação de movimento. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 100 da Figura 2.
[0154] Conforme explicado no que diz respeito ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, o filtro loop 220, o buffer de imagem decodificada (DPB) 230, a unidade de predição inter 344 e a unidade de predição intra 354 também são referidos como formando o "decodificador embutido" do codificador de vídeo 20. Por conseguinte, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função à unidade de reconstrução 214, o filtro loop 320 pode ser idêntico em função ao filtro loop 220 e o buffer de imagem decodificada 330 pode ser idêntico em função ao buffer de imagem decodificada 230. Portanto, as explicações fornecidas para as respectivas unidades e funções do codificador de vídeo 20 se aplicam correspondentemente às respectivas unidades e funções do decodificador de vídeo 30. Decodificação de entropia
[0155] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou em dados de imagem codificados em geral 21) e realizar, por exemplo, decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na Figura 3), por exemplo, qualquer um ou todos os parâmetros de predição inter (por exemplo, índice de imagem de referência e vetor de movimento), parâmetro de predição intra (por exemplo, modo de predição intra ou índice), parâmetros de transformada, parâmetros de quantização, parâmetros de filtro loop e/ou outros elementos de sintaxe. A unidade de decodificação de entropia 304 pode ser configurada para aplicar os algoritmos de decodificação ou esquemas correspondentes aos esquemas de codificação, conforme descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser configurada adicionalmente para fornecer parâmetros de predição inter, parâmetro de predição intra e/ou outros elementos de sintaxe para a unidade de aplicação de modo 360 e outros parâmetros para outras unidades do decodificador 30. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou nível de bloco de vídeo. Além ou como uma alternativa às fatias e respectivos elementos de sintaxe, grupos de partes e/ou partes e respectivos elementos de sintaxe podem ser recebidos e/ou usados. Quantização Inversa
[0156] A unidade de quantização inversa 310 pode ser configurada para receber parâmetros de quantização (QP) (ou em informações gerais relacionadas à quantização inversa) e coeficientes quantizados a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304) e aplicar com base nos parâmetros de quantização uma quantização inversa nos coeficientes quantizados decodificados 309 para obter coeficientes desquantizados 311, que também podem ser referidos como coeficientes de transformada 311. O processo de quantização 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 (ou bloco ou grupos de partes) para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
Transformada Inversa
[0157] A unidade de processamento de transformada inversa 312 pode ser configurada para receber coeficientes desquantizados 311, também referidos como coeficientes de transformada 311, e para aplicar uma transformação aos coeficientes desquantizados 311 a fim de obter blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformada
313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa, ou um processo de transformada inversa conceitualmente semelhante. A unidade de processamento de transformada inversa 312 pode ainda ser configurada para receber parâmetros de transformada ou informações correspondentes a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311. Reconstrução
[0158] A unidade de reconstrução 314 (por exemplo, adicionador ou somador 314) pode ser configurada para adicionar o bloco residual reconstruído 313, ao bloco de predição 365 para obter um bloco reconstruído 315 no domínio de amostra, por exemplo, adicionando os valores de amostra do bloco residual reconstruído 313 e os valores de amostra do bloco de predição 365. Filtragem
[0159] A unidade de filtro loop 320 (quer no loop de codificação ou após o loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel ou de outra forma melhorar a qualidade do vídeo. A unidade de filtro de circuito 320 pode compreender um ou mais filtros de circuito, como um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um ou mais outros filtros, por exemplo, um filtro loop adaptativo (ALF), um filtro de supressão de ruído (NSF), ou qualquer combinação dos mesmos. Em um exemplo, a unidade de filtro loop 220 pode compreender um filtro de desbloqueio, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desbloqueio, SAO e ALF. Em outro exemplo, um processo chamado mapeamento de luma com escala de croma (LMCS) (ou seja, o remodelador in-
loop adaptativo) é adicionado. Este processo é realizado antes do desbloqueio. Em outro exemplo, o processo de filtro de desbloqueio também pode ser aplicado às bordas de sub-bloco internas, por exemplo, bordas de sub-blocos afins, bordas de sub-blocos ATMVP, bordas de transformada de sub-bloco (SBT) e bordas de subdivisão intra (ISP). Embora a unidade de filtro de circuito 320 seja mostrada na Figura 3 como sendo um filtro loop, em outras configurações, a unidade de filtro loop 320 pode ser implementada como um filtro post-loop. Buffer de imagem decodificada
[0160] Os blocos de vídeo decodificados 321 de uma imagem são então armazenados no buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para compensação de movimento subsequente para outras imagens e/ou para exibição de saída, respectivamente.
[0161] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização a um usuário. Predição
[0162] A unidade de predição inter 344 pode ser idêntica à unidade de predição inter 244 (em particular à unidade de compensação de movimento) e a unidade de predição intra 354 pode ser idêntica à unidade de predição inter 254 em função, e realiza decisões de divisão ou particionamento e predição com base nos parâmetros de particionamento e/ou predição ou respectivas informações recebidas dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, por unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base em imagens reconstruídas, blocos ou respectivas amostras (filtradas ou não filtradas) para obter o bloco de predição 365.
[0163] Quando a fatia de vídeo é codificada como uma fatia codificada de modo intra (I), a unidade de predição intra 354 da unidade de aplicação de modo 360 é configurada para gerar o bloco de predição 365 para um bloco de imagem da fatia de vídeo atual com base em um modo de predição intra sinalizado e em dados a partir de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe recebidos a partir da unidade de decodificação de entropia 304. Para predição inter, os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas no DPB 330. O mesmo ou semelhante pode ser aplicado para ou por modalidades usando grupos de partes (por exemplo, grupos de partes de vídeo) e/ou partes (por exemplo, blocos de vídeo) em adição ou alternativamente às fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando grupos de partes I, P ou B e/ou partes.
[0164] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual por analisar os vetores de movimento ou informações relacionadas e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de predição inter (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, status de predição inter para cada bloco de vídeo codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou semelhante pode ser aplicado para ou por modalidades usando grupos de partes (por exemplo, grupos de partes de vídeo) e/ou blocos (por exemplo, partes de vídeo), além ou alternativamente a fatias (por exemplo, fatias de vídeo), por exemplo, um vídeo pode ser codificado usando I, grupos de partes e/ou partes P ou B.
[0165] As modalidades do decodificador de vídeo 30, como mostrado na Figura 3, podem ser configuradas para particionar e/ou decodificar a imagem usando fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente sem sobreposição), e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, partes (H.265/HEVC e VVC) ou tijolos (VVC).
[0166] As modalidades do decodificador de vídeo 30, conforme mostrado na Figura 3, podem ser configuradas para particionar e/ou decodificar a imagem usando grupos de fatias/partes (também referidos como grupos de partes de vídeo) e/ou partes (também referidas como partes de vídeo), em que uma imagem pode ser particionada ou decodificada usando um ou mais grupos de fatias/partes (tipicamente não sobrepostos), e cada grupo de fatias/partes pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou um ou mais partes, em que cada parte, por exemplo, pode ser de forma retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou fracionários.
[0167] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem de loop 320. Por exemplo, um decodificador não baseado em transformada 30 pode quantizar inversamente o sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para certos 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 transformada inversa 312 combinadas em uma única unidade.
[0168] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado de processamento de um passo atual pode ser adicionalmente processado e, em seguida, enviado para o próximo passo. Por exemplo, após a filtragem de interpolação, derivação de vetor de movimento ou filtragem de loop, uma operação adicional, como Corte ou desvio, pode ser realizada no resultado de processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem de loop.
[0169] Deve ser notado que outras operações podem ser aplicadas aos vetores de movimento derivados do bloco atual (incluindo, mas não se limitando a vetores de movimento de ponto de controle de modo afim, vetores de movimento de sub-bloco em modos afins, planos, ATMVP, vetores de movimento temporais e assim por diante). Por exemplo, o valor do vetor de movimento é restrito a um intervalo predefinido de acordo com seu bit de representação. Se o bit de representação do vetor de movimento for bitDepth, então o intervalo é -2 ^ (bitDepth-1) ~ 2 ^ (bitDepth-1) -1, onde “^” significa exponenciação. Por exemplo, se bitDepth for definido igual a 16, o intervalo será -32768 ~ 32767; se bitDepth for definido igual a 18, o intervalo é -131072 ~ 131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub- blocos 4x4 dentro de um bloco 8x8) é restrito de tal forma que a diferença máxima entre as partes inteiras dos quatro MVs do sub-bloco 4x4 não é mais do que N pixels, como no máximo 1 pixel. Aqui estão dois métodos para restringir o vetor de movimento de acordo com o bitDepth.
[0170] A Figura 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 conforme descrito neste documento. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, como o decodificador de vídeo 30 da Figura 1A ou um codificador, como o codificador de vídeo 20 da Figura 1A.
[0171] O dispositivo de codificação de vídeo 400 compreende portas de entrada 410 (ou portas de entrada 410) e unidades de recepção (Rx) 420 para receber dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de saída 450 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes óticos-para-elétricos (OE) e componentes elétricos-para-óticos (EO) acoplados às portas de entrada 410, as unidades de recepção 420, as unidades transmissoras 440 e as portas de saída 450 para saída ou entrada de sinais óticos ou elétricos.
[0172] 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 multinúcleo), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de entrada 410, unidades de recepção 420, unidades transmissoras 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 acima. Por exemplo, o módulo de codificação 470 implementa, processa, prepara ou fornece as várias operações de codificação. A inclusão do módulo de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de codificação de vídeo 400 e efetua uma transformação do dispositivo de codificação de vídeo 400 para um estado diferente. Alternativamente, o módulo de codificação 470 é implementado como instruções armazenadas na memória 460 e executadas pelo processador 430.
[0173] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável por conteúdo ternária (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0174] A Figura 5 é um diagrama de blocos simplificado de um aparelho 500 que pode ser usado como um ou ambos o dispositivo de origem 12 e o dispositivo de destino 14 da Figura 1 de acordo com uma modalidade exemplar.
[0175] 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 dispositivos múltiplos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações divulgadas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, vantagens em velocidade e eficiência podem ser alcançadas usando mais de um processador.
[0176] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo adequado de dispositivo de armazenamento pode ser usado como a memória 504. A memória
504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir ainda um sistema operacional 508 e programas de aplicativo 510, os programas de aplicativo 510 incluindo pelo menos um programa que permite ao processador 502 executar os métodos descritos aqui. Por exemplo, os programas de aplicativo 510 podem incluir aplicativos de 1 a N, que incluem ainda um aplicativo de codificação de vídeo que executa os métodos descritos aqui.
[0177] O aparelho 500 também pode incluir um ou mais dispositivos de saída, como um visor 518. O visor 518 pode ser, em um exemplo, um visor sensível ao toque que combina um visor com um elemento sensível ao toque que é operável para detectar entradas de toque. O visor 518 pode ser acoplado ao processador 502 por meio do barramento 512.
[0178] Embora representado aqui como um único barramento, o barramento 512 do aparelho 500 pode ser composto de vários barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado a outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, como um cartão de memória, ou várias unidades, como vários cartões de memória. O aparelho 500 pode, assim, ser implementado em uma ampla variedade de configurações.
[0179] Os codecs de vídeo híbridos atuais empregam codificação preditiva. Uma imagem de uma sequência de vídeo é subdividida em blocos de pixels e esses blocos são então codificados. Em vez de codificar um bloco pixel por pixel, todo o bloco é previsto usando pixels previamente codificados na proximidade espacial ou temporal do bloco. O codificador processa posteriormente apenas as diferenças entre o bloco e sua predição. O processamento adicional inclui tipicamente uma transformação dos pixels de bloco em coeficientes em um domínio de transformação. Os coeficientes podem então ser adicionamento comprimidos (por exemplo, por meio de quantização) e adicionamento compactados (por exemplo, por codificação de entropia) para formar um fluxo de bits. O fluxo de bits pode adicionalmente incluir quaisquer informações de sinalização que permitem ao decodificador decodificar o vídeo codificado. Por exemplo, a sinalização pode incluir configurações relativas às definições relativas ao codificador, como tamanho da imagem de entrada, taxa de quadros, indicação do passo de quantização, predição aplicada aos blocos das imagens ou semelhantes.
[0180] As diferenças entre um bloco e sua predição são conhecidas como o resíduo do bloco. Mais especificamente, cada pixel do bloco possui um resíduo, que é a diferença entre um nível de intensidade daquele pixel e seu nível de intensidade previsto. O nível de intensidade de um pixel é conhecido como o valor de pixel ou valor do pixel. Os resíduos de todos os pixels de um bloco são chamados coletivamente de resíduos do bloco. Em outras palavras, o bloco possui um resíduo que é um conjunto ou matriz que compreende os resíduos de todos os pixels do bloco.
[0181] A predição temporal explora a correlação temporal entre imagens, também conhecida como quadros, de um vídeo. A predição temporal também é chamada de predição inter, pois é uma predição que utiliza as dependências entre diferentes quadros de vídeo (inter). Consequentemente, um bloco a ser decodificado, também denominado bloco atual, é previsto a partir de uma ou mais imagens previamente decodificadas denominadas imagens de referência. As uma ou mais imagens de referência não são necessariamente imagens que precedem a imagem atual na qual o bloco atual está localizado na ordem de exibição da sequência de vídeo. O codificador pode codificar as imagens em uma ordem de codificação diferente da ordem de exibição. Como uma predição do bloco atual, um bloco colocalizado (referido como um preditor) em uma imagem de referência pode ser determinado. O bloco colocalizado pode estar localizado na imagem de referência na mesma posição que o bloco atual na imagem atual. Essa predição é precisa para regiões de imagem sem movimento, isto é, regiões de imagem sem movimento de uma imagem para outra.
[0182] No codificador, a fim de obter um preditor que leva em conta o movimento, ou seja, um preditor de compensação de movimento, a estimativa de movimento é normalmente empregada. O bloco atual é previsto por um bloco localizado na imagem de referência em uma posição indicada por um vetor de movimento. O vetor de movimento aponta a partir da posição do bloco colocalizado para a posição do bloco atual (ou vice-versa, dependendo da convenção de sinal). A fim de permitir que um decodificador determine a mesma predição do bloco atual que o codificador, o vetor de movimento pode ser sinalizado no fluxo de bits. A fim de reduzir adicionalmente a sobrecarga de sinalização causada pela sinalização do vetor de movimento para cada um dos blocos, o próprio vetor de movimento pode ser estimado. A estimativa de vetor de movimento pode ser realizada com base nos vetores de movimento de blocos que são vizinhos do bloco atual no domínio espacial e/ou temporal.
[0183] A predição do bloco atual pode ser calculada usando uma imagem de referência ou ponderando predições obtidas a partir de duas ou mais imagens de referência. A imagem de referência pode ser uma imagem adjacente, isto é, uma imagem imediatamente anterior ou imediatamente posterior à imagem atual na ordem de exibição, uma vez que as imagens adjacentes são provavelmente semelhantes à imagem atual. A imagem de referência também pode ser qualquer imagem anterior ou posterior à imagem atual na ordem de exibição e precedendo a imagem atual no fluxo de bits (ordem de decodificação). Isso pode fornecer vantagens, por exemplo, no caso de oclusões e/ou movimento não linear no conteúdo de vídeo. A imagem de referência pode ser sinalizada no fluxo de bits.
[0184] Um modo especial de predição inter é uma chamada bipredição em que duas imagens de referência são usadas para gerar a predição do bloco atual. Em particular, duas predições determinadas nas respectivas duas imagens de referência são combinadas em um sinal de predição do bloco atual. A bipredição pode resultar em uma predição mais precisa do bloco atual do que a unipredição, ou seja, predição usando apenas uma única imagem de referência. A predição mais precisa leva a diferenças menores entre os pixels do bloco atual e a predição (ou seja, para resíduos menores), que podem ser codificados de forma mais eficiente, ou seja, menos bits de codificação.
[0185] A fim de fornecer uma estimativa de movimento mais precisa, a resolução da imagem de referência pode ser aumentada, por exemplo, por interpolar amostras entre pixels. A interpolação de pixels fracionária pode ser realizada pela média ponderada dos pixels mais próximos. Por exemplo, no caso de resolução de meio pixel, uma interpolação bilinear pode ser usada. Outros pixels fracionários podem ser calculados como uma média dos pixels mais próximos ponderados, por exemplo, pelo inverso da distância entre os respectivos pixels mais próximos ao pixel que está sendo previsto.
[0186] Um vetor de movimento pode ser estimado, por exemplo, por calcular uma similaridade entre o bloco atual e os blocos de predição correspondentes apontados por vetores de movimento candidatos na imagem de referência. A fim de reduzir a complexidade, o número de vetores de movimento candidatos pode ser reduzido por limitar os vetores de movimento candidatos a um determinado espaço de busca. O espaço de busca pode ser, por exemplo, definido por um número e/ou posições de pixels circundando a posição na imagem de referência correspondente à posição do bloco atual na imagem atual. Alternativamente, os vetores de movimento candidatos podem ser definidos por uma lista de vetores de movimento candidatos formados por vetores de movimento de blocos vizinhos.
[0187] Os vetores de movimento são geralmente determinados pelo menos parcialmente no lado do codificador e sinalizados para o decodificador dentro do fluxo de bits codificado. Os vetores de movimento também podem ser derivados no decodificador. Nesse caso, o bloco atual não está disponível no decodificador e não pode ser usado para calcular a similaridade entre o bloco atual e qualquer um dos blocos para os quais os vetores de movimento candidatos apontam na imagem de referência. Portanto, em vez do bloco atual, pode ser usado um modelo que pode ser construído a partir de pixels de blocos previamente decodificados. Por exemplo, pixels previamente decodificados adjacentes ao bloco atual podem ser usados. Tal estimativa de movimento fornece uma vantagem de reduzir a sinalização: o vetor de movimento é derivado da mesma maneira no codificador e no decodificador e, portanto, nenhuma sinalização é necessária. Por outro lado, a precisão de tal estimativa de movimento pode ser inferior.
[0188] A fim de fornecer uma compensação entre a precisão e a sobrecarga de sinalização, a estimativa do vetor de movimento pode ser dividida em duas etapas: derivação de vetor de movimento e refinamento de vetor de movimento. Por exemplo, uma derivação de vetor de movimento pode incluir a seleção de um vetor de movimento a partir da lista de candidatos. O vetor de movimento selecionado pode ser adicionalmente refinado, por exemplo, por uma busca dentro de um espaço de busca. A busca no espaço de busca é baseada no cálculo de uma função de custo para cada vetor de movimento candidato, ou seja, para cada posição candidata do bloco para o qual o vetor de movimento candidato aponta.
[0189] Documento JVET-D0029: Decoder-Side Motion Vector
Refinement Based on Bilateral Template Matching, X. Chen, J. An, J. Zheng (O documento pode ser encontrado em: http://phenix.it-sudparis.eu/jvet/ site) mostra o refinamento de vetor de movimento em que um primeiro vetor de movimento em resolução de pixel inteiro é encontrado e posteriormente refinado por uma busca com uma resolução de meio pixel em um espaço de busca em torno do primeiro vetor de movimento. Aqui, a resolução de pixel (por exemplo, inteiro ou meio inteiro) descreve a resolução do espaço de busca, ou seja, o deslocamento dos pontos pesquisados para o vetor de movimento não refinado que é inserido no processo. Como resultado, as coordenadas de busca do estágio de refinamento não coincidem necessariamente com as coordenadas de pixel reais no plano de imagem.
[0190] O refinamento de vetor de movimento pode ser realizado no decodificador sem assistência a partir do codificador. O loop de decodificador no codificador pode empregar o mesmo refinamento para obter as imagens de referência correspondentes. O refinamento pode ser realizado por determinar um modelo, determinar um espaço de busca e encontrar no espaço de busca a posição de uma porção de imagem de referência que melhor corresponde ao modelo. A melhor posição de porção de correspondência determina o melhor vetor de movimento que é então usado para obter o preditor do bloco atual, isto é, o bloco atual sendo reconstruído.
[0191] Em uma modalidade, como mostrado na Figura 6, um método de predição inter compreende:
[0192] S601: obter um vetor de movimento inicial para um bloco atual.
[0193] Um vetor de movimento inicial MV0, que pode ser visto como uma primeira estimativa ou aproximação do vetor de movimento exato, é obtido. Por exemplo, MV0 pode ser selecionado a partir de uma lista de vetores de movimento candidatos. A lista pode incluir vetores de movimento de pelo menos um bloco adjacente ao bloco atual. Alternativamente, MV0 pode ser obtido por combinação de blocos no lado de codificador e sinalizado para o lado de decodificador dentro do fluxo de bits. Correspondentemente, no lado de decodificador, o vetor de movimento inicial MV0 pode ser obtido a partir do fluxo de bits. Por exemplo, um índice para a lista de candidatos é extraído a partir do fluxo de bits e o vetor de movimento candidato identificado por esse índice é fornecido como o vetor de movimento inicial MV0.
[0194] Alternativamente, as coordenadas de MV0 são extraídas diretamente a partir do fluxo de bits. Deve ser notado que o presente pedido não está limitado a qualquer forma particular de obter o vetor de movimento inicial MV0. Por exemplo, o MV0 pode ser determinado pela correspondência de modelo da mesma forma no codificador e no decodificador. E, alternativamente, o vetor de movimento pode ser previsto como uma função dos vetores de movimento do bloco vizinho do bloco atual no domínio espacial ou temporal.
[0195] O vetor de movimento inicial MV0 é uma estimativa inicial de um vetor de movimento final MV0 '' a ser usado na predição inter de um bloco atual. Ele constitui a entrada para um processo de refinamento no final do qual o vetor de movimento final MV0'' é emitido.
[0196] S602: determinar as posições de espaço de busca de acordo com o vetor de movimento inicial.
[0197] Assumindo que as posições de espaço de busca compreendem as posições de busca centrais e as posições de espaço de busca vizinhas, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial. Em uma implementação viável, a etapa S602 compreende: determinar a posição de espaço de busca central de acordo com o vetor de movimento inicial; e determinar as posições de espaço de busca vizinhas de acordo com um ou mais deslocamentos predefinidos e com a posição de espaço de busca central.
[0198] Em uma implementação viável, um espaço de busca consiste nas posições de espaço de busca, e um padrão do espaço de busca é um quadrado de posição de espaço de busca 5x5.
[0199] Como exemplo, o espaço de busca é construído de acordo com o vetor de movimento inicial MV0 e um ou mais vetores de movimento candidatos se relacionam ao vetor de movimento inicial. Então, o vetor de movimento MV0'' (correspondendo às coordenadas de uma posição de espaço de busca) é selecionado de acordo com o custo de correspondência do vetor de movimento inicial MV0 e um ou mais vetores de movimento candidatos. (S603) É notado que para alguns vetores de movimento candidatos do espaço de busca, pode ser para todos os vetores de movimento candidatos dos respectivos espaços de busca parciais determinados em cada uma dentre as fases em diferentes modalidades do presente pedido, os custos podem ser calculados como uma parte e durante a construção do espaço de busca.
[0200] Em uma implementação viável, os vetores de movimento candidatos para o bloco atual apontam a partir do pixel superior esquerdo do bloco atual na imagem atual para os respectivos pixels superiores esquerdos dos blocos de predição candidatos na imagem de referência. Os pixels superiores esquerdos dos blocos de predição candidatos representam, portanto, o espaço de busca na imagem de referência. O pixel superior esquerdo de um bloco é considerado a posição do bloco. Note que qualquer outro pixel de um bloco pode ser considerado como a posição do bloco, em que se entende que a mesma convenção de posição se aplica a todos os blocos. Por exemplo, um vetor de movimento pode ser definido de forma equivalente como correndo a partir de um pixel central do bloco atual para o pixel central de um respectivo bloco candidato.
[0201] É notado que cada vetor de movimento candidato, incluindo o vetor de movimento inicial, aponta para um pixel na imagem de referência, que é uma posição de espaço de busca. E a relação de posição de coordenada entre os pixels apontados pelo vetor de movimento inicial e por outros vetores de movimento candidatos pode ser representada por um ou mais deslocamentos do vetor de movimento entre o vetor de movimento inicial e os outros vetores de movimento candidatos.
[0202] Os um ou mais deslocamentos do vetor de movimento podem ser predeterminados. Isso significa que a relação de localização entre as posições de busca centrais e as posições de espaço de busca vizinhas podem ser predeterminadas.
[0203] S603: verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo.
[0204] Em uma implementação viável, verificar um custo de correspondência de cada uma dentre as posições de espaço de busca de acordo com a ordem de verificação; e selecionar uma posição de espaço de busca com o custo de correspondência mínimo entre as posições de espaço de busca como a posição de espaço de busca alvo.
[0205] O custo de correspondência pode ser medido por uma função de custo que pode, por exemplo, ser uma soma das diferenças absolutas entre o modelo e a área de imagem de referência que corresponde ao modelo no local apontado pelo candidato de vetor de movimento. Depois de calcular a soma das diferenças absolutas (SAD) para todos os vetores de movimento candidatos, o candidato com a menor SAD é selecionado. Note que a SAD é apenas um exemplo. A função de custo pode ser SAD (soma das diferenças absolutas, sum of absolute differences), MRSAD (soma removida média das diferenças absolutas, Mean removed sum of absolute differences), SSE (Soma dos erros quadrados, Sum of squared errors), ou qualquer outra função de custo para representar uma semelhança. O melhor vetor de movimento é selecionado com base nas comparações entre os custos de correspondência das posições de espaço de busca.
[0206] Em uma implementação viável, comparar um custo de correspondência de uma dentre as posições de espaço de busca com um custo de correspondência mínimo temporário; definir o custo de correspondência da uma dentre as posições de espaço de busca como o custo de correspondência mínimo temporário quando o custo de correspondência da uma dentre as posições de espaço de busca for menor que o custo de correspondência mínimo temporário; e definir o custo de correspondência mínimo temporário como o custo de correspondência mínimo após a última das posições de espaço de busca ser verificada.
[0207] Em uma modalidade, o espaço de busca pode ser um padrão quadrado, como mostrado na Figura 7. Como um exemplo, o pixel apontado pelo vetor de movimento inicial é considerado como (0, 0) de um sistema de coordenadas. E no sistema de coordenadas, horizontal direita é considerada como uma direção positiva horizontal e vertical para baixo é considerada uma direção positiva vertical. O espaço de busca pode compreender 25 posições de espaço de busca. E pixels com as coordenadas (-2, -2), (2, 2), (-2, 2) e (2, -2) são cantos do padrão quadrado.
[0208] As 25 posições de espaço de busca são divididas em um ou mais grupos para definir a ordem de verificação. E deve ser notado que, de acordo com as diferentes modalidades, a etapa de divisão das posições de espaço de busca em um ou mais grupos pode não ser necessária, que é apenas para descrever claramente o projeto de um tipo de ordem de verificação é determinado.
[0209] Em uma primeira modalidade específica, as 25 posições de espaço de busca são divididas em dois grupos:
[0210] Grupo I: (0, 0);
[0211] Grupo II: todas as outras posições de espaço de busca.
[0212] Conforme mostrado na Figura 8, o número de cada posição de espaço de busca representa a ordem de cada posição de espaço de busca de acordo com a ordem de verificação, e uma posição marcada com o número menor é verificada antes de uma posição marcada com o número maior. A posição (0, 0) marcada como “1” é verificada primeiro, então outras posições de espaço de busca no Grupo II são verificadas de acordo com uma ordem de verificação horizontal (da esquerda para a direita, linha por linha). Portanto, a ordem de verificação é (0, 0), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (-2, 0), (-1, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2). Observa-se que as posições de espaço de busca no Grupo II também podem ser verificadas de acordo com outra ordem de verificação, como uma ordem de verificação vertical (de cima para baixo, coluna por coluna), uma ordem de verificação em zigue-zague e assim por diante.
[0213] Na modalidade atual, a posição central do espaço de busca é verificada primeiro, então outras posições de espaço de busca são verificadas com base em uma ordem de verificação predefinida. Também pode ser implementado com base em um espaço de busca de padrão não quadrado. Como um exemplo, pode ser um padrão em forma de cruz com 21 posições de espaço de busca, corresponde a uma ordem de verificação ilustrada como Figura
9. Como outro exemplo, pode ser um padrão de bandeira da União com 17 posições de espaço de busca, corresponde a uma ordem de verificação ilustrada na Figura 10.
[0214] Em uma segunda modalidade específica, o Grupo II pode ser adicionalmente dividido em mais grupos, por exemplo, as 25 posições de espaço de busca são divididas em quatro grupos:
[0215] Grupo I: (0, 0);
[0216] Grupo II: (-1, 0), (0, 1), (1, 0), (0, -1) (posições vizinhas da posição central na direção vertical ou horizontal);
[0217] Grupo III: (-1, -1), (-1, 1), (1, 1), (1, -1) (as posições estão a 1 amostra de pixel de distância da posição central e não estão incluídas no segundo grupo);
[0218] Grupo IV: todas as outras posições de espaço de busca.
[0219] Grupo I, II, III e IV são verificados em sua vez. Note que a ordem de verificação dentro de um mesmo grupo não é limitada, por exemplo, para o Grupo II, a ordem de verificação pode ser (-1, 0), (0, 1), (1, 0), (0, - 1) ou (-1, 0), (1, 0), (0, 1), (0, -1). Observa-se também que as posições de espaço de busca no Grupo IV também podem ser verificadas de acordo com diferentes ordens de verificação (como sentido horário ou anti-horário) e com pontos de verificação iniciais diferentes (como pixel superior esquerdo do espaço de busca ou outra posição no Grupo IV). Como exemplo da Figura 7, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (-2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2), (2, 1), (2, 0), (2, -1), (2, -2), (1, -2), (0, -2), (-1, -2), (-2, -2), (-2, -1).
[0220] Também pode ser implementado com base em outro espaço de busca de padrão. Por exemplo, pode ser um padrão de diamante com 13 posições de espaço de busca, correspondendo a uma ordem de verificação ilustrada na Figura 11.
[0221] Em uma terceira modalidade específica, o Grupo IV pode ser dividido em mais grupos, por exemplo, as 25 posições de espaço de busca são divididas em cinco grupos:
[0222] Grupo I: (0, 0);
[0223] Grupo II: (-1, 0), (0, 1), (1, 0), (0, -1) (posições vizinhas da posição central na direção vertical ou horizontal);
[0224] Grupo III: (-1, -1), (-1, 1), (1, 1), (1, -1) (as posições estão a 1 amostra de pixel de distância da posição central e não estão incluídas no segundo grupo);
[0225] Grupo IV: (-2, 0), (0, 2), (2, 0), (0, -2) (as posições estão a 2 amostras de pixel de distância da posição central em uma direção vertical/horizontal e a 0 amostras de pixel de distância da posição central na outra direção horizontal/vertical);
[0226] Grupo V: todas as outras posições de espaço de busca.
[0227] Conforme mostrado na Figura 12, a título de exemplo, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1),
(-2, 0), (0, 2), (2, 0), (0, -2), (-2, -1), (-2, 1), (-2, 2), (-1, 2), (1, 2), (2, 2), (2, 1), (2, -1), (2, -2), (1, -2), (-1, -2), (-2, -2).
[0228] Em uma quarta modalidade específica, o Grupo V pode ser dividido em mais grupos, por exemplo, as 25 posições de espaço de busca são divididas em seis grupos:
[0229] Grupo I: (0, 0);
[0230] Grupo II: (-1, 0), (0, 1), (1, 0), (0, -1) (posições vizinhas da posição central na direção vertical ou horizontal);
[0231] Grupo III: (-1, -1), (-1, 1), (1, 1), (1, -1) (as posições estão a 1 amostra de pixel de distância da posição central e não estão incluídas no segundo grupo);
[0232] Grupo IV: (-2, 0), (0, 2), (2, 0), (0, -2) (as posições estão a 2 amostras de pixel de distância da posição central em uma direção vertical/horizontal e a 0 amostras de pixel de distância da posição central na outra direção horizontal/vertical);
[0233] Grupo V: (-2, -2), (-2, 2), (2, 2), (2, -2) (as posições estão a 2 amostras de pixel de distância da posição central nas direções vertical e horizontal);
[0234] Grupo VI: todas as outras posições de espaço de busca.
[0235] Conforme mostrado na Figura 13, a título de exemplo, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, -2), (-2, 2), (2, 2), (2, -2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2).
[0236] Em uma quinta modalidade específica, as 25 posições de espaço de busca não são divididas. Elas são verificadas de acordo com uma ordem de verificação predefinida, por exemplo, uma ordem de verificação horizontal. Conforme mostrado na Figura 14, a título de exemplo, a ordem de verificação é (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (-2, -1), (-1, -1), (0, -1), (1, - 1), (2, -1), (-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (- 2, 2), (-1, 2), (0, 2), (1, 2), (2, 2).
[0237] S604: determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca alvo.
[0238] Um vetor de movimento de refinamento MV0'' é um vetor de movimento apontando para a posição de espaço de busca alvo. E o deslocamento entre a posição de espaço de busca alvo e a posição de espaço de busca central pode ser derivado primeiro, então o vetor de movimento de refinamento MV0'' também pode ser derivado por adicionar o vetor de movimento inicial e o deslocamento.
[0239] A Figura 15 mostra um aparelho de predição inter 1500 do presente pedido.
[0240] O aparelho de predição inter 1500, compreendendo: um módulo de obtenção 1501, configurado para obter um vetor de movimento inicial para um bloco atual; um módulo de definição 1502, configurado para determinar as posições de espaço de busca de acordo com o vetor de movimento inicial; um módulo de cálculo 1503, configurado para verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo; e um módulo de predição 1504, configurado para determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca de alvo, em que uma posição de espaço de busca central é verificada primeiro de acordo com a ordem de verificação, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial.
[0241] Em uma implementação viável, as posições de espaço de busca compreendem as posições de busca centrais e as posições de espaço de busca vizinhas, em que o módulo de definição 1502 é configurado para: determinar a posição de espaço de busca central de acordo com o vetor de movimento inicial; e determinar as posições de espaço de busca vizinhas de acordo com um ou mais deslocamentos predefinidos e com a posição de espaço de busca central.
[0242] Em uma implementação viável, um espaço de busca consiste nas posições de espaço de busca, e um padrão do espaço de busca é um quadrado de posição de espaço de busca 5x5.
[0243] Em uma implementação viável, o módulo de cálculo 1503 é configurado para: verificar um custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação; e selecionar uma posição de espaço de busca com o custo de correspondência mínimo entre as posições de espaço de busca como a posição de espaço de busca alvo.
[0244] Em uma implementação viável, o módulo de cálculo 1503 é configurado para: comparar um custo de correspondência de uma dentre as posições de espaço de busca com um custo de correspondência mínimo temporário; definir o custo de correspondência da uma dentre as posições de espaço de busca como o custo de correspondência mínimo temporário quando o custo de correspondência da uma dentre as posições de espaço de busca for menor que o custo de correspondência mínimo temporário; e definir o custo de correspondência mínimo temporário como o custo de correspondência mínimo após a última das posições de espaço de busca ser verificada.
[0245] Em uma implementação viável, a posição de espaço de busca central é definida como (0, 0) de um sistema de coordenadas, horizontal direita é definida como uma direção positiva horizontal e vertical para baixo é definida como uma direção positiva vertical.
[0246] Em uma implementação viável, a ordem de verificação é (0, 0), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (- 2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (-2, 0), (-1, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2).
[0247] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (-2, 1), (-2, 2), (- 1, 2), (0, 2), (1, 2), (2, 2), (2, 1), (2, 0), (2, -1), (2, -2), (1, -2), (0, -2), (-1, -2), (-2, - 2), (-2, -1).
[0248] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, - 1), (-2, 1), (-2, 2), (-1, 2), (1, 2), (2, 2), (2, 1), (2, -1), (2, -2), (1, -2), (-1, -2), (-2, -2).
[0249] Em uma implementação viável, a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, -1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, - 2), (-2, 2), (2, 2), (2, -2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2).
[0250] A Figura 16 mostra um aparelho de predição inter 1600 do presente pedido, o aparelho 1600 pode ser um decodificador ou um codificador. O aparelho 1600 compreendendo: um ou mais processadores 1601; e uma mídia de armazenamento legível por computador não transitória 1602 acoplada aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método na Figura 6.
[0251] Em outra modalidade, um produto de programa de computador que compreende código de programa para realizar o método na Figura 6 quando executado em um computador ou processador.
[0252] Em outra modalidade, uma mídia legível por computador não transitória transportando um código de programa que, quando executado por um dispositivo de computador, faz o dispositivo de computador realizar o método na Figura 6.
[0253] A seguir está uma explicação das aplicações do método de codificação, bem como do método de decodificação, conforme mostrado nas modalidades mencionadas acima, e um sistema que os usa.
[0254] A Figura 17 é um diagrama de blocos mostrando um sistema de abastecimento de conteúdo 3100 para realizar serviço de entrega de conteúdo. Este sistema de abastecimento de conteúdo 3100 inclui dispositivo de captura 3102, dispositivo terminal 3106 e, opcionalmente, inclui visor 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 através do enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui, mas não se limita a WIFI, Ethernet, cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0255] O dispositivo de captura 3102 gera dados e pode codificar os dados pelo método de codificação como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de transmissão contínua (“streaming”) (não mostrado nas Figuras), e o servidor codifica os dados e transmite os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas não se limita à câmera, smartphone ou smartpad, computador ou laptop, sistema de videoconferência, PDA, dispositivo montado em veículo ou uma combinação de qualquer um deles, ou semelhantes. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12, conforme descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de vídeo. Quando os dados incluem áudio (isto é, voz), um codificador de áudio incluído no dispositivo de captura 3102 pode realmente realizar o processamento de codificação de áudio. Para alguns cenários práticos, o dispositivo de captura 3102 distribui os dados de vídeo e áudio codificados 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 para o dispositivo terminal 3106 separadamente.
[0256] No sistema de abastecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com capacidade de recepção e recuperação de dados, como smartphone ou smartpad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, set-top box (STB) 3116, sistema de videoconferência 3118, sistema de videovigilância 3120, assistente digital pessoal (PDA) 3122, dispositivo montado em veículo 3124 ou uma combinação de qualquer um deles, ou semelhantes, capaz de decodificar os dados codificados acima mencionados. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14, conforme descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0257] Para um dispositivo terminal com sua exibição, por exemplo, smartphone ou smartpad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente digital pessoal (PDA) 3122 ou dispositivo montado em veículo 3124, o dispositivo terminal pode alimentar os dados decodificados para sua exibição. Para um dispositivo terminal equipado com nenhum visor, por exemplo, STB 3116, sistema de videoconferência 3118 ou sistema de videovigilância 3120, um visor externo 3126 é contatado no mesmo para receber e mostrar os dados decodificados.
[0258] Quando cada dispositivo neste sistema realiza codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, como mostrado nas modalidades mencionadas acima, podem ser usados.
[0259] A Figura 18 é um diagrama mostrando uma estrutura de um exemplo do dispositivo terminal 3106. Após o dispositivo terminal 3106 receber o fluxo do dispositivo de captura 3102, a unidade de processamento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não se limita a Protocolo de Transmissão Contínua em Tempo Real (Real Time Streaming Protocol, RTSP), Protocolo de Transferência de Hipertexto (Hyper Text Transfer Protocol, HTTP), Protocolo de transmissão contínua (“streaming”) ao Vivo HTTP (HTTP Live Streaming Protocol, HLS), MPEG-DASH, Protocolo de Transporte em Tempo Real (Real-time Transport protocol, RTP), Protocolo de Mensagens em Tempo Real (Real Time Messaging Protocol, RTMP), ou qualquer tipo de combinação dos mesmos, ou semelhantes.
[0260] Após a unidade de procedimento de protocolo 3202 processar o fluxo, o arquivo de fluxo é gerado. O arquivo é enviado para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados em dados de áudio codificados e dados de vídeo codificados. Conforme descrito acima, para alguns cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o decodificador de vídeo 3206 e decodificador de áudio 3208 sem passar pela unidade de demultiplexação 3204.
[0261] Por meio do processamento de demultiplexação, o fluxo elementar de vídeo (ES), o ES de áudio e, opcionalmente, a legenda são gerados. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30, conforme explicado nas modalidades mencionadas acima, decodifica o ES de vídeo pelo método de decodificação como mostrado nas modalidades mencionadas acima para gerar quadro de vídeo e alimenta esses dados para a unidade síncrona 3212. O decodificador de áudio 3208 decodifica o ES de áudio para gerar quadro de áudio, e alimenta esses dados para a unidade síncrona
3212. Alternativamente, o quadro de vídeo pode ser armazenado em um buffer (não mostrado na Figura 18) antes de alimentá-lo para a unidade síncrona 3212. Da mesma forma, o quadro de áudio pode ser armazenado em um buffer (não mostrado na Figura 20) antes de alimentá-lo para a unidade síncrona 3212.
[0262] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio, e fornece o vídeo/áudio a um visor de vídeo/áudio 3214. Por exemplo, a unidade síncrona 3212 sincroniza a apresentação das informações de vídeo e áudio. As informações podem codificar na sintaxe usando horodatas relativas à apresentação de dados de áudio e visuais codificados e horodatas relativas à entrega do próprio fluxo de dados.
[0263] Se a legenda for incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda, e a sincroniza com o quadro de vídeo e o quadro de áudio, e fornece o vídeo/áudio/legenda para um visor de vídeo/áudio/legenda
3216.
[0264] O presente pedido não está limitado ao sistema acima mencionado, e tanto o dispositivo de codificação de imagem quanto o dispositivo de decodificação de imagem nas modalidades mencionadas acima podem ser incorporados em outro sistema, por exemplo, um sistema de carro. Operadores matemáticos
[0265] Os operadores matemáticos usados neste pedido são semelhantes aos usados na linguagem de programação C. No entanto, os resultados das operações de divisão inteira e deslocamento aritmético são definidos com mais precisão, e operações adicionais são definidas, como exponenciação e divisão com valor real. As convenções de numeração e contagem geralmente começam em 0, por exemplo, "o primeiro" é equivalente ao 0º, "o segundo" é equivalente ao 1º, etc. Operadores aritméticos
[0266] Os seguintes operadores aritméticos são definidos da seguinte maneira: + Adição - Subtração (como um operador de dois argumentos) ou negação (como um operador de prefixo unário) * Multiplicação, incluindo multiplicação de matriz xy Exponenciação. Especifica x elevado a y. Em outros contextos, essa notação é usada para sobrescrito, não pretendendo ser interpretada como exponenciação. / Divisão de inteiro com truncamento do resultado em direção a zero.
Por exemplo, 7/4 e −7/−4 são truncados para 1 e −7/4 e 7/−4 são truncados para −1. ÷ Usado para denotar divisão em equações matemáticas onde nenhum truncamento ou arredondamento é pretendido. x/y Usado para denotar a divisão em equações matemáticas onde nenhum truncamento ou arredondamento é pretendido. y ∑i = x f( i) A soma de f (i) com i tomando todos os valores inteiros de x até y incluindo y. x% y Módulo. Restante de x dividido por y, definido apenas para inteiros x e y com x > = 0 e y> 0. Operadores lógicos
[0267] Os seguintes operadores lógicos são definidos da seguinte maneira: x && y Booleano lógico "e" de x e y x | | y Booleano lógico "ou" de x e y ! Booleano lógico "não" x? y: z Se x for TRUE ou diferente de 0, avalia o valor de y; caso contrário, avalia o valor de z. Operadores relacionais
[0268] Os seguintes operadores relacionais são definidos da seguinte maneira: > Maior que >= Maior ou igual a < Menor que <= Menor ou igual a = = Igual a ! = Diferente de
[0269] Quando um operador relacional é aplicado a um elemento ou variável de sintaxe ao qual foi atribuído o valor "na" (não aplicável), o valor "na" é tratado como um valor distinto para o elemento ou variável de sintaxe. O valor "na" não é considerado igual a nenhum outro valor. Operadores bit a bit
[0270] Os seguintes operadores bit a bit são definidos da seguinte maneira: & "e" bit a bit. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. | "ou" bit a bit. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido adicionando bits mais significativos iguais a 0. ^ "ou exclusivo" bit a bit. Ao operar com argumentos inteiros, opera em uma representação de complemento de dois do valor inteiro. Ao operar em um argumento binário que contém menos bits do que outro argumento, o argumento mais curto é estendido pela adição de bits mais significativos iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação inteira em complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits mais significativos (MSBs) como resultado do deslocamento à direita têm um valor igual ao MSB de x antes da operação de deslocamento. x << y Deslocamento à esquerda aritmético de uma representação inteira em complemento de dois de x por y dígitos binários. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits menos significativos (LSBs) como resultado do deslocamento à esquerda têm um valor igual a 0. Operadores de atribuição
[0271] Os seguintes operadores aritméticos são definidos da seguinte maneira: = Operador de atribuição + + Incremento, ou seja, x + + é equivalente a x = x + 1; quando usado em um índice de matriz, avalia o valor da variável antes da operação de incremento. - - Decremento, ou seja, x− − é equivalente a x = x - 1; quando usado em um índice de matriz, avalia o valor da variável antes da operação de decremento.
+ = Incremento pela quantidade especificada, ou seja, x + = 3 é equivalente a x = x + 3, e x + = (−3) é equivalente a x = x + (−3). - = Decremento pelo valor especificado, ou seja, x - = 3 é equivalente a x = x - 3, e x - = (−3) é equivalente a x = x - (−3). Notação de intervalo
[0272] A seguinte notação é usada para especificar um intervalo de valores: x = y..z x assume valores inteiros começando de y a z, inclusive, com x, y e z sendo números inteiros e z sendo maior que y. Funções matemáticas
[0273] As seguintes funções matemáticas são definidas: x ; x >= 0 Abs (x) = { −x ; x<0 Asin (x) a função seno trigonométrica inversa, operando em um argumento x que está no intervalo de -1,0 a 1,0, inclusive, com um valor de saída na faixa de −π ÷ 2 a π ÷ 2, inclusive, em unidades de radianos Atan (x) a função tangente inversa trigonométrica, operando em um argumento x, com um valor de saída no intervalo de −π ÷ 2 a π ÷ 2, inclusive, em unidades de radianos y Atan ( ) ; x>0 x y Atan ( ) + π ; x < 0 && y >= 0 x Atan ( ) − π ; x < 0 && y < 0 y Atan2 (y, x) = x π + ; x = = 0 && y >= 0 2 − π ; caso contrário { 2 Ceil (x) o menor inteiro maior ou igual a x. Clip1Y (x) = Clip3 (0, (1 << BitDepthY) - 1, x) Clip1C (x) = Clip3 (0, (1 << BitDepthC) - 1, x) x ; z<x Clip3 (x, y, z) = { y ; z>y z ; caso contrário Cos (x) a função cosseno trigonométrica operando em um argumento x em unidades de radianos. Floor (x) o maior número inteiro menor ou igual a x. c+d ; b − a >= d/2 GetCurrMsb (a, b, c, d) = { c − d ; a − b > d/2 c ; caso contrário Ln (x) o logaritmo natural de x (o logaritmo de base e, onde e é o logaritmo natural constante de base 2,718 281 828...). Log2 (x) o logaritmo de base 2 de x. Log10 (x) o logaritmo de base 10 de x. x ; x <= y Min (x, y) ={ y ; x>y x ; x >= y Max (x, y) = { y ; x<y Round (x) = Sign (x) * Floor (Abs (x) + 0,5) 1 ; x>0 Sign (x) = { 0 ; x==0 −1 ; x<0 Sin (x) a função seno trigonométrica operando em um argumento x em unidades de radianos Sqrt (x) = √x Swap (x, y) = (y, x) Tan (x) a função tangente trigonométrica operando em um argumento x em unidades de radianos Ordem de precedência de operação
[0274] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras se aplicam: - As operações de precedência superior são avaliadas antes de qualquer operação de precedência inferior. - As operações com a mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0275] A tabela abaixo especifica a precedência das operações da mais alta para a mais baixa; uma posição mais alta na tabela indica uma precedência mais alta.
[0276] Para os operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste Relatório Descritivo é a mesma usada na linguagem de programação C.
[0277] Tabela: precedência de operação a partir da mais alta (no topo da tabela) para a mais baixa (no fundo da tabela) operações (com operandos x, y e z) "x++", "x− −" "!x", "−x" (como um operador de prefixo unário) xy x "x * y", "x/y", "x ÷ y", "y", "x % y" "x + y", "x − y" (como um operador de dois y  f( i ) argumentos), " i=x " "x << y", "x >> y" "x < y", "x <= y", "x > y", "x >= y" "x = = y", "x != y" "x & y" "x | y" "x && y" "x | | y" "x ? y : z" "x..y" "x = y", "x += y", "x −= y" Descrição de texto das operações lógicas
[0278] No texto, uma declaração de operações lógicas como seriam descritas matematicamente da seguinte forma: se (condição 0) declaração 0 senão se (condição 1) declaração 1 ... senão /* observação informativa sobre a condição restante * / declaração n pode ser descrito da seguinte maneira: ... da seguinte forma /... aplica-se o seguinte:
- Se a condição 0, declaração 0 - Caso contrário, se a condição 1, declaração 1 -... - Caso contrário (observação informativa sobre a condição restante), declaração n Cada declaração "If... Caso contrário, if... Caso contrário,..." no texto é introduzida com "... como segue" ou "... O seguinte se aplica" imediatamente seguido por "If...". A última condição de "If... Caso contrário, se... Caso contrário,..." é sempre um "Caso contrário,...". As instruções intercaladas "If... Caso contrário, if... Caso contrário,..." podem ser identificadas pela correspondência de "... como segue" ou "... O seguinte se aplica" com a terminação "Caso contrário,...".
[0279] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma: se (condição 0a && condição 0b) declaração 0 senão se (condição 1a | | condição 1b) declaração 1 ... senão declaração n pode ser descrito da seguinte maneira: ... da seguinte forma /... aplica-se o seguinte: - Se todas as seguintes condições forem verdadeiras, afirmação 0: - condição 0a - condição 0b - Caso contrário, se uma ou mais das seguintes condições forem verdadeiras, declaração 1: - condição 1a - condição 1b -... - Caso contrário, declaração n
[0280] No texto, uma declaração de operações lógicas que seriam descritas matematicamente da seguinte forma:
se (condição 0) declaração 0 se (condição 1) declaração 1 pode ser descrito da seguinte maneira: Quando a condição 0, declaração 0 Quando a condição 1, declaração 1.
[0281] As modalidades, por exemplo, do codificador 20 e do decodificador 30, e funções aqui descritas, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas por meio de comunicação como uma ou mais instruções ou código, e executadas por uma unidade de processamento baseada em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer mídia que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, a mídia legível por computador geralmente pode corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) uma mídia de comunicação, como um sinal ou onda portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0282] A título de exemplo, e não limitação, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco ótico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outra mídia que pode ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada mídia legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, estão incluídos na definição de mídia. Deve ser entendido, no entanto, que as mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são direcionados para mídias de armazenamento tangíveis não transitórias. Disco (disk) e disco (disc), conforme usados aqui, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os discos (disks) geralmente reproduzem dados magneticamente, enquanto os discos (discs) reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo da mídia legível por computador.
[0283] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo "processador", conforme usado neste documento, pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0284] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um handset sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware.
Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.

Claims (26)

REIVINDICAÇÕES
1. Método de predição inter, CARACTERIZADO pelo fato de que compreende: obter um vetor de movimento inicial para um bloco atual; determinar posições de espaço de busca de acordo com o vetor de movimento inicial; verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo; e determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca alvo, em que uma posição de espaço de busca central é verificada primeiro de acordo com a ordem de verificação, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que posições de espaço de busca compreendem as posições de busca centrais e posições de espaço de busca vizinhas, em que determinar posições de espaço de busca de acordo com o vetor de movimento inicial, compreende: determinar a posição de espaço de busca central de acordo com o vetor de movimento inicial; e determinar as posições de espaço de busca vizinhas de acordo com um ou mais deslocamentos predefinidos e com a posição de espaço de busca central.
3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que um espaço de busca consiste nas posições de espaço de busca, e um padrão do espaço de busca é um quadrado de posição de espaço de busca 5x5.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que verificar custos de correspondência das posições de espaço de busca de acordo com a ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo, compreende: verificar um custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação; e selecionar uma posição de espaço de busca com o custo de correspondência mínimo entre as posições de espaço de busca como a posição de espaço de busca alvo.
5. Método, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que verificar o custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação, compreende: comparar um custo de correspondência de uma dentre as posições de espaço de busca com um custo de correspondência mínimo temporário; definir o custo de correspondência da uma dentre as posições de espaço de busca como o custo de correspondência mínimo temporário quando o custo de correspondência da uma dentre as posições de espaço de busca for menor que o custo de correspondência mínimo temporário; e definir o custo de correspondência mínimo temporário como o custo de correspondência mínimo após a última das posições de espaço de busca ser verificada.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, CARACTERIZADO pelo fato de que a posição de espaço de busca central é definida como (0, 0) de um sistema de coordenadas, horizontal direita é definida como uma direção positiva horizontal e vertical para baixo é definida como uma direção positiva vertical.
7. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, - 2), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (-2, 0), (-1, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2).
8. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, - 1), (-1, 1), (1, 1), (1, -1), (-2, 0), (-2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2), (2, 1), (2, 0), (2, -1), (2, -2), (1, -2), (0, -2), (-1, -2), (-2, -2), (-2, -1).
9. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, - 1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, -1), (-2, 1), (-2, 2), (-1, 2), (1, 2), (2, 2), (2, 1), (2, - 1), (2, -2), (1, -2), (-1, -2), (-2, -2).
10. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, - 1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, -2), (-2, 2), (2, 2), (2, - 2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2).
11. Aparelho de predição inter, CARACTERIZADO pelo fato de que compreende: um módulo de obtenção, configurado para obter um vetor de movimento inicial para um bloco atual; um módulo de definição, configurado para determinar posições de espaço de busca de acordo com o vetor de movimento inicial; um módulo de cálculo, configurado para verificar custos de correspondência das posições de espaço de busca de acordo com uma ordem de verificação para selecionar uma posição de espaço de busca alvo com um custo de correspondência mínimo; e um módulo de predição, configurado para determinar um vetor de movimento de refinamento do bloco atual com base no vetor de movimento inicial e na posição de espaço de busca alvo, em que uma posição de espaço de busca central é verificada primeiro de acordo com a ordem de verificação, e em que a posição de espaço de busca central é apontada pelo vetor de movimento inicial.
12. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que posições de espaço de busca compreendem as posições de busca centrais e posições de espaço de busca vizinhas, em que o módulo de definição é configurado para: determinar a posição de espaço de busca central de acordo com o vetor de movimento inicial; e determinar as posições de espaço de busca vizinhas de acordo com um ou mais deslocamentos predefinidos e com a posição de espaço de busca central.
13. Aparelho, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que um espaço de busca consiste nas posições de espaço de busca, e um padrão do espaço de busca é um quadrado de posição de espaço de busca 5x5.
14. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o módulo de cálculo é configurado para:
verificar um custo de correspondência de cada uma dentre as posições de espaço de busca em sua vez de acordo com a ordem de verificação; e selecionar uma posição de espaço de busca com o custo de correspondência mínimo entre as posições de espaço de busca como a posição de espaço de busca alvo.
15. Aparelho, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que o módulo de cálculo é configurado para: comparar um custo de correspondência de uma dentre as posições de espaço de busca com um custo de correspondência mínimo temporário; definir o custo de correspondência da uma dentre as posições de espaço de busca como o custo de correspondência mínimo temporário quando o custo de correspondência da uma dentre as posições de espaço de busca for menor que o custo de correspondência mínimo temporário; e definir o custo de correspondência mínimo temporário como o custo de correspondência mínimo após a última das posições de espaço de busca ser verificada.
16. Aparelho, de acordo com qualquer uma das reivindicações 12 a 15, CARACTERIZADO pelo fato de que a posição de espaço de busca central é definida como (0, 0) de um sistema de coordenadas, horizontal direita é definida como uma direção positiva horizontal e vertical para baixo é definida como uma direção positiva vertical.
17. Aparelho, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-2, -2), (-1, -2), (0, -2), (1, -2), (2, -2), (-2, -1), (-1, -1), (0, -1), (1, -1), (2, -1), (-2, 0), (-1, 0), (1, 0), (2, 0), (-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2).
18. Aparelho, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, - 1), (-1, 1), (1, 1), (1, -1), (-2, 0), (-2, 1), (-2, 2), (-1, 2), (0, 2), (1, 2), (2, 2), (2, 1), (2, 0), (2, -1), (2, -2), (1, -2), (0, -2), (-1, -2), (-2, -2), (-2, -1).
19. Aparelho, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, - 1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, -1), (-2, 1), (-2, 2), (-1, 2), (1, 2), (2, 2), (2, 1), (2, - 1), (2, -2), (1, -2), (-1, -2), (-2, -2).
20. Aparelho, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que a ordem de verificação é (0, 0), (-1, 0), (0, 1), (1, 0), (0, -1), (-1, - 1), (-1, 1), (1, 1), (1, -1), (-2, 0), (0, 2), (2, 0), (0, -2), (-2, -2), (-2, 2), (2, 2), (2, - 2), (-2, -1), (-2, 1), (-1, 2), (1, 2), (2, 1), (2, -1), (1, -2), (-1, -2).
21. Codificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
22. Decodificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
23. 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 10.
24. Decodificador, CARACTERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando 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 10.
25. Codificador, CARACTERIZADO pelo fato de que compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e armazenando programação para execução pelos processadores, em que a programação, quando executada pelos processadores, configura o codificador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
26. Dispositivo de decodificação de dados de vídeo, CARACTERIZADO pelo fato de que compreende: um repositório em memória não transitório, configurado para armazenar dados de vídeo em uma forma de um fluxo de bits; e um decodificador de vídeo, configurado para realizar o método conforme definido em qualquer uma das reivindicações 1 a 10.
BR112021009833-0A 2019-02-28 2019-12-20 codificador, decodificador e métodos correspondentes para predição inter BR112021009833A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962812190P 2019-02-28 2019-02-28
US62/812,190 2019-02-28
PCT/CN2019/126977 WO2020173196A1 (en) 2019-02-28 2019-12-20 An encoder, a decoder and corresponding methods for inter prediction

Publications (1)

Publication Number Publication Date
BR112021009833A2 true BR112021009833A2 (pt) 2021-08-17

Family

ID=72239055

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021009833-0A BR112021009833A2 (pt) 2019-02-28 2019-12-20 codificador, decodificador e métodos correspondentes para predição inter

Country Status (8)

Country Link
US (3) US11336916B2 (pt)
EP (1) EP3903494A4 (pt)
JP (2) JP7350857B2 (pt)
KR (1) KR102606880B1 (pt)
CN (6) CN116347103A (pt)
BR (1) BR112021009833A2 (pt)
MX (1) MX2021008788A (pt)
WO (1) WO2020173196A1 (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116347103A (zh) * 2019-02-28 2023-06-27 华为技术有限公司 编码器、解码器及相应的帧间预测方法
US20240137540A1 (en) * 2022-10-18 2024-04-25 Tencent America LLC Template matching refinement for affine motion

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100994771B1 (ko) * 2003-12-29 2010-11-16 삼성전자주식회사 블록정합에 의한 움직임 벡터 탐색방법 및 탐색장치
JP4139342B2 (ja) 2004-03-10 2008-08-27 日本電信電話株式会社 動きベクトル検出方法、動きベクトル検出装置、動きベクトル検出プログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN1787642A (zh) * 2005-12-19 2006-06-14 宁波大学 一种基于h.264的图像单元块的帧间快速搜索方法
US8675736B2 (en) 2009-05-14 2014-03-18 Qualcomm Incorporated Motion vector processing
JP5560009B2 (ja) * 2009-09-07 2014-07-23 株式会社日立国際電気 動画像符号化装置
US8358698B2 (en) * 2010-01-08 2013-01-22 Research In Motion Limited Method and device for motion vector estimation in video transcoding using full-resolution residuals
CN101815218B (zh) * 2010-04-02 2012-02-08 北京工业大学 基于宏块特征的快速运动估计视频编码方法
US9998750B2 (en) * 2013-03-15 2018-06-12 Cisco Technology, Inc. Systems and methods for guided conversion of video from a first to a second compression format
EP3180918A1 (en) 2014-08-12 2017-06-21 Intel Corporation System and method of motion estimation for video coding
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
CN105282557B (zh) * 2015-09-28 2018-05-18 天津大学 一种预测运动矢量的h.264快速运动估计方法
US10284875B2 (en) * 2016-08-08 2019-05-07 Qualcomm Incorporated Systems and methods for determining feature point motion
CN109997363B (zh) 2016-11-28 2023-12-05 英迪股份有限公司 图像编码/解码方法和装置以及存储有比特流的记录介质
CN108134939B (zh) * 2016-12-01 2020-08-07 北京金山云网络技术有限公司 一种运动估计方法及装置
CN108419082B (zh) * 2017-02-10 2020-09-11 北京金山云网络技术有限公司 一种运动估计方法及装置
CN110447227A (zh) 2017-03-10 2019-11-12 索尼公司 图像处理装置和方法
US10595035B2 (en) * 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US20190007699A1 (en) * 2017-06-28 2019-01-03 Futurewei Technologies, Inc. Decoder Side Motion Vector Derivation in Video Coding
CN109218733B (zh) * 2017-06-30 2022-03-29 华为技术有限公司 一种确定预测运动矢量预测的方法以及相关设备
JP2020526112A (ja) * 2017-06-30 2020-08-27 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 動きベクトルの改良のための探索領域
EP3794826A1 (en) * 2018-07-02 2021-03-24 Huawei Technologies Co., Ltd. An error surface based sub-pixel accurate refinement method for decoder side motion vector refinement
CN116347103A (zh) * 2019-02-28 2023-06-27 华为技术有限公司 编码器、解码器及相应的帧间预测方法

Also Published As

Publication number Publication date
CN116805970A (zh) 2023-09-26
CN112868233B (zh) 2023-03-21
MX2021008788A (es) 2021-08-24
WO2020173196A1 (en) 2020-09-03
KR102606880B1 (ko) 2023-11-24
US20220303573A1 (en) 2022-09-22
KR20210072093A (ko) 2021-06-16
CN116347103A (zh) 2023-06-27
US11736719B2 (en) 2023-08-22
EP3903494A4 (en) 2022-06-22
EP3903494A1 (en) 2021-11-03
JP7350857B2 (ja) 2023-09-26
JP2023126221A (ja) 2023-09-07
JP2022521561A (ja) 2022-04-11
CN112868233A (zh) 2021-05-28
US11336916B2 (en) 2022-05-17
CN116208777A (zh) 2023-06-02
US20210274216A1 (en) 2021-09-02
US20240031598A1 (en) 2024-01-25
CN116708827A (zh) 2023-09-05
CN116980621A (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
AU2020276527B9 (en) An encoder, a decoder and corresponding methods using IBC dedicated buffer and default value refreshing for luma and chroma component
BR112021009848A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
WO2020169114A1 (en) Method and apparatus for affine based inter prediction of chroma subblocks
CA3131311A1 (en) An encoder, a decoder and corresponding methods for inter prediction
BR112021016560A2 (pt) Método e aparelho para predição intra usando modelo linear
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021016270A2 (pt) Método de codificação de vídeo e codificador, decodificador, meio legível por computador
AU2023202927B2 (en) Separate merge list for subblock merge candidates and intra-inter techniques harmonization for video coding
JP7414127B2 (ja) 拡張補間フィルタのメモリ帯域幅削減のためのアフィン動きモデル制限
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
US20240031598A1 (en) Encoder, a decoder and corresponding methods for inter-prediction
BR112021009922A2 (pt) Método de construir uma lista de mesclagens candidata para modo de cópia de intrabloco, codificador, decodificador, produto de programa de computador e dispositivo de decodificação de dados de vídeo
BR122022009445A2 (pt) Codificador, decodificador e métodos correspondentes para simplificar sinalização de cabeçalho de imagem
CA3133984A1 (en) Optical flow based video inter prediction
US20230254485A1 (en) Encoder, a decoder, and corresponding methods for transform process in video coding
US20220345712A1 (en) Method and apparatus for intra prediction
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
ES2967903T3 (es) Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación
CA3128913A1 (en) An encoder, a decoder and corresponding methods using intra mode coding for intra prediction
US11997296B2 (en) Motion field storage optimization for a line buffer
US20220321888A1 (en) Method and apparatus of position dependent prediction combination for oblique directional intra prediction

Legal Events

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

Free format text: O PEDIDO FOI DIVIDIDO NO BR122023019785-2 PROTOCOLO 870230085529 EM 26/09/2023 16:20.O PEDIDO FOI DIVIDIDO NO BR122023019787-9 PROTOCOLO 870230085534 EM 26/09/2023 16:26.O PEDIDO FOI DIVIDIDO NO BR122023019793-3 PROTOCOLO 870230085546 EM 26/09/2023 16:32.