BR112021009848A2 - 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
BR112021009848A2
BR112021009848A2 BR112021009848-8A BR112021009848A BR112021009848A2 BR 112021009848 A2 BR112021009848 A2 BR 112021009848A2 BR 112021009848 A BR112021009848 A BR 112021009848A BR 112021009848 A2 BR112021009848 A2 BR 112021009848A2
Authority
BR
Brazil
Prior art keywords
index
prediction
block
sub
candidate
Prior art date
Application number
BR112021009848-8A
Other languages
English (en)
Inventor
Timofey Mikhailovich SOLOVYEV
Semih ESENLIK
Jianle Chen
Anand Meher KOTRA
Han Gao
Biao Wang
Roman Igorevich CHERNYAK
Alexander Alexandrovich KARABUTOV
Sergey Yurievich IKONIN
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 BR112021009848A2 publication Critical patent/BR112021009848A2/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA PREDIÇÃO INTER . Um método de predição para um bloco de imagem compreendendo um primeiro sub-bloco de predição e um segundo sub-bloco de predição, o método de predição compreendendo: analisar um primeiro índice a partir de um fluxo de bits, em que o primeiro índice é usado para obter informações de predição do primeiro sub-bloco de predição; analisar um segundo índice a partir do fluxo de bits; comparar o primeiro índice com o segundo índice; ajustar o segundo índice no evento que o segundo índice é igual a ou maior do que o primeiro índice; e obter informações de predição do segundo sub-bloco de predição de acordo com o segundo índice ajustado.

Description

“CODIFICADOR, DECODIFICADOR E MÉTODOS CORRESPONDENTES PARA PREDIÇÃO INTER”
[0001] A presente invenção reivindica prioridade ao Pedido de Patente Provisório U.S. No. de Série 62/770,826, depositado em 22 de novembro de 2018, Pedido de Patente Provisório U.S. No. de Série 62/787,678, depositado em 2 de janeiro de 2019, Pedido de Patente Provisório U.S. No. de Série 62/816,897, depositado em 11 de março de 2019, e Pedido de Patente Provisório U.S. No. de Série 62/905,367, depositado em 24 de setembro de 2019, cujos conteúdos são integralmente incorporados neste documento à título de referência.
CAMPO TÉCNICO
[0002] As modalidades do presente pedido em geral referem-se ao campo do 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 faixa de aplicações de vídeo digital, por exemplo, broadcast de TV digital, transmissão de vídeo pela internet e redes móveis, aplicativos de conversação em tempo real, tais como bate-papo de vídeo, videoconferência, DVD e discos Blu-ray, aquisição de conteúdo de vídeo e sistemas de edição, e filmadoras de aplicações de segurança.
[0004] A quantidade de dados de vídeo necessária para representar mesmo um vídeo relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados devem ser transmitidos ou, de outro modo, comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são em geral comprimidos antes de serem comunicados através de redes de telecomunicações dos dias modernos. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento, pelo fato de que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo, frequentemente, usam software e/ou hardware na fonte para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo, desse modo, a quantidade de dados necessária para representar imagens de vídeo digital. Os dados comprimidos são, em seguida, recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com os recursos de rede limitados e demandas cada vez maiores quanto à alta qualidade de vídeo, as técnicas de compressão e descompressão aprimoradas que melhoram a taxa de compressão com pouco ou nenhum sacrifício na qualidade de imagem são desejáveis.
SUMÁRIO
[0005] As modalidades do presente pedido fornecem aparelhos e métodos para codificação e decodificação, de acordo com as reivindicações independentes.
[0006] Em um primeiro aspecto do presente pedido, um método de predição para um bloco de imagem, em que um bloco atual compreende um primeiro sub-bloco de predição e um segundo sub-bloco de predição, o método de predição compreendendo: analisar um primeiro índice de um fluxo de bits, em que o primeiro índice é usado para obter as informações de predição do primeiro sub-bloco de predição; analisar um segundo índice do fluxo de bits; comparar o primeiro índice ao segundo índice; ajustar o segundo índice no caso em que o segundo índice é igual a ou maior do que o primeiro índice; e obter informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado.
[0007] Em uma implementação viável, em que ajustar o segundo índice compreende: incrementar o segundo índice em m, em que m é um número inteiro positivo.
[0008] Em uma implementação viável, em que m é 1.
[0009] Em uma implementação viável, em que antes de analisar um primeiro índice de um fluxo de bits, o método de predição compreende adicionalmente: analisar pelo menos um indicador para determinar um modo de predição do bloco atual, em que o modo de predição é um modo de predição triangular ou um modo de predição geométrico. O modo de predição pode ser outro sub-bloco com base no modo de predição, incluindo o modo retangular ou não retangular (trapezoidal). E o modo de predição triangular e o modo de predição geométrico podem ser unificados como um único modo de predição, que também pode estar envolvido na implementação viável.
[0010] Em uma implementação viável, em que o método de predição compreende adicionalmente: obter uma lista de candidatos para o bloco atual.
[0011] Em uma implementação viável, em que as informações de predição do primeiro sub-bloco de predição são obtidas a partir da lista de candidatos, de acordo com o primeiro índice.
[0012] Em uma implementação viável, em que as informações de predição do segundo sub-bloco de predição são obtidas a partir da lista de candidatos, de acordo com o segundo índice ajustado.
[0013] Em uma implementação viável, em que a lista de candidatos é uma lista de candidatos do Modo de Fusão.
[0014] Em uma implementação viável, em que o método de predição compreende adicionalmente: analisar um primeiro número para determinar um índice de candidato permitido máximo na lista de candidatos; e obter um índice máximo com base no índice de candidato permitido máximo, em que o primeiro índice não é maior do que o índice máximo.
[0015] Em uma implementação viável, em que a obtenção do índice máximo com base no índice de candidato permitido máximo, compreende: obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e um número predeterminado.
[0016] Em uma implementação viável, em que obter o índice máximo com base no índice de candidato permitido máximo, compreende: analisar um segundo número para derivar uma diferença entre o índice de candidato permitido máximo e o índice máximo; e obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e a diferença.
[0017] Em uma implementação viável, em que o método de predição compreende adicionalmente: analisar um terceiro número para determinar o índice máximo.
[0018] Em uma implementação viável, em que o índice de candidato permitido máximo não é menor do que o índice máximo.
[0019] Em uma implementação viável, em que depois de obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado, o método de predição compreende adicionalmente: obter um valor de predição do bloco atual com base nas informações de predição do primeiro sub-bloco de predição e nas informações de predição do segundo sub-bloco de predição.
[0020] Em uma implementação viável, em que o primeiro índice ou o segundo índice é binarizado, de acordo com um código unário truncado.
[0021] Em uma implementação viável, em que um primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando o modo de codificação regular de CABAC.
[0022] Em uma implementação viável, em que um não primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando modo de codificação bypass de CABAC.
[0023] Em uma implementação viável, em que o método de predição compreende adicionalmente: analisar um indicador de direção do fluxo de bits e em que o indicador de direção é usado para indicar uma direção de divisão do bloco atual.
[0024] Em um segundo aspecto do presente pedido, um método para a predição inter de um bloco de uma imagem, compreende: obter um indicador de predição; determinar se o indicador de predição indica que uma predição de sub-bloco deve ser aplicado no bloco; obter dois indicadores diferentes quando o indicador de predição indica que a predição de sub-bloco deve ser aplicada no bloco, em que os dois indicadores diferentes indicam separadamente duas entradas diferentes em uma lista de candidatos de informações de movimento para dois sub-blocos no bloco; e realizar a predição inter para o bloco com base nos dois indicadores diferentes.
[0025] Em uma implementação viável, em que a etapa de obtenção de dois indicadores diferentes compreende adicionalmente: obter dois indicadores iniciais compreendendo um primeiro indicador inicial e um segundo indicador inicial; comparar o segundo indicador inicial ao primeiro indicador inicial; ajustar o segundo indicador inicial para obter um segundo indicador atualizado quando o segundo indicador inicial é maior do que ou igual ao primeiro indicador inicial, em que o segundo indicador atualizado é diferente do primeiro indicador inicial; e determinar o primeiro indicador inicial e o segundo indicador atualizados como os dois indicadores diferentes.
[0026] Em uma implementação viável, em que a etapa de ajuste do segundo indicador inicial para obter um segundo indicador atualizado compreende adicionalmente: incrementar o segundo indicador inicial em m, em que m é 1 número predefinido e, preferivelmente, é definido como 1.
[0027] Em uma implementação viável, em que o método compreende adicionalmente: ajustar o valor máximo do primeiro indicador inicial como M e ajustar o valor máximo do segundo indicador inicial como M-m, em que M não é maior do que N e N é o tamanho da lista de candidatos de informações de movimento.
[0028] Em uma implementação viável, em que N é um número inteiro positivo que é determinado com base em um indicador sinalizado em um fluxo de bits recebido.
[0029] Em uma implementação viável, em que o método compreende adicionalmente: comparar o tamanho do bloco a um limite especificado; se o tamanho do bloco não for maior do que o limite especificado, ajustar o valor máximo do primeiro indicador inicial como M e ajustar o valor máximo do segundo indicador inicial como M-m, em que M não é maior do que N e N é o tamanho da lista de candidatos de informações de movimento; e se o tamanho do bloco for maior do que o limite especificado, ajustar o valor máximo do primeiro indicador inicial como P e ajustar o valor máximo do segundo indicador inicial como P-m, em que P é maior do que M e não maior do que N, e N é o tamanho da lista de candidatos de informações de movimento.
[0030] Em uma implementação viável, em que M e P são números inteiros predefinidos positivos.
[0031] Em uma implementação viável, em que se P for determinado como maior do que N, P é atualizado para ser igual a N, ou se M for determinado como maior do que N, M é atualizado para ser igual a N.
[0032] Em uma implementação viável, em que o método compreende adicionalmente: obter um único indicador quando o indicador de predição indica que a predição de sub-bloco não deve ser aplicada ao bloco, em que o único indicador indica uma entrada em uma lista de candidatos de fusão para o bloco; e realizar a predição inter para o bloco com base no único indicador.
[0033] Em uma implementação viável, em que o método compreende adicionalmente: ajustar o valor máximo do primeiro indicador inicial como M, em que N é o tamanho da lista de candidatos de fusão que não é idêntica à lista de candidatos de informações de movimento.
[0034] Em uma implementação viável, em que o método compreende adicionalmente: determinar um indicador de direção de divisão, em que o indicador de direção de divisão indica uma direção de divisão para o bloco.
[0035] Em uma implementação viável, em que a etapa de obtenção de dois indicadores diferentes compreende adicionalmente: ajustar o segundo indicador inicial para obter um segundo indicador atualizado quando o indicador de direção de divisão indica uma primeira direção de divisão, em que o segundo indicador atualizado é diferente do primeiro indicador inicial; e determinar o primeiro indicador inicial e o segundo indicador atualizados como os dois indicadores diferentes; ou ajustar o primeiro indicador inicial para obter um primeiro indicador atualizado quando o indicador de direção de divisão indica uma segunda direção de divisão, em que o primeiro indicador atualizado é diferente do segundo indicador inicial; e determinar o primeiro indicador atualizado e o segundo indicador inicial como os dois indicadores diferentes.
[0036] Em uma implementação viável, em que o método compreende adicionalmente: selecionar as informações de movimento a partir da lista de candidatos de informações de movimento com base nos dois indicadores diferentes; e realizar a predição de sub-bloco para o bloco atual com base nas informações de movimento selecionadas.
[0037] Em uma implementação viável, em que o método compreende adicionalmente: selecionar as primeiras informações de movimento e as segundas informações de movimento a partir da lista de candidatos de informações de movimento, de acordo com os dois indicadores diferentes; realizar a predição de sub-bloco para um primeiro sub-bloco com base nas primeiras informações de movimento; e realizar a predição de sub-bloco para um segundo sub-bloco com base nas segundas informações de movimento.
[0038] Em uma implementação viável, em que o primeiro sub-bloco é atribuído à parte cujo centro geométrico está mais próximo do limite esquerdo do bloco atual.
[0039] Em uma implementação viável, em que o método compreende adicionalmente: binarizar os dois indicadores diferentes, de acordo com um código unário truncado.
[0040] Em uma implementação viável, em que o método compreende adicionalmente: codificar o primeiro bin de um indicador dos dois indicadores diferentes usando o modo de codificação de uma codificação aritmética binária adaptativa ao contexto (CABAC); e codificar o outro bin do indicador dos dois indicadores diferentes usando modo de bypass de CABAC.
[0041] Em um terceiro aspecto do presente pedido, um método de decodificação para um bloco, em que um bloco atual inclui uma primeira sub- unidade e uma segunda sub-unidade, compreendendo: analisar um primeiro indicador, em que o primeiro indicador é usado para determinar um padrão de partição do bloco atual; analisar um segundo indicador e um terceiro indicador; determinar as informações de predição da primeira sub-unidade com base em um valor do segundo indicador; determinar um valor do terceiro indicador, em que em um caso onde o valor do terceiro indicador é igual a ou maior do que o segundo indicador, o valor do terceiro indicador é adicionado por um valor de destino; e determinar as informações de predição do segunda sub-unidade com base no valor determinado do terceiro indicador.
[0042] Em uma implementação viável, em que o valor permitido máximo do segundo indicador é M e o valor permitido máximo do terceiro indicador é M-m, e em que M é um número inteiro positivo e m é um número inteiro positivo pré-ajustado.
[0043] Em uma implementação viável, em que várias entradas em uma lista de candidatos de informações de predição é N.
[0044] Em uma implementação viável, em que M é igual a ou menor do que N.
[0045] Em uma implementação viável, em que M é maior do que ou igual a N.
[0046] Em uma implementação viável, em que compreende adicionalmente: analisar um quarto indicador, em que o quarto indicador é usado para indicar um valor de N.
[0047] Em uma implementação viável, em que N é um valor predeterminado.
[0048] Em uma implementação viável, em que compreende adicionalmente: analisar um quinto indicador, em que o quinto indicador é usado para indicar um valor de M.
[0049] Em uma implementação viável, em que o valor de M é determinado pelo valor de N.
[0050] Em um quarto aspecto do presente pedido, um aparelho para predição inter, em que um bloco atual compreendendo um primeiro sub-bloco de predição e um segundo sub-bloco de predição, o aparelho compreende: um módulo de análise configurado para analisar um primeiro índice de um fluxo de bits, em que o primeiro índice é usado para obter informações de predição do primeiro sub-bloco de predição; e analisar um segundo índice a partir do fluxo de bits; um módulo de localização configurado para comparar o primeiro índice ao segundo índice; e ajustar o segundo índice no caso em que o segundo índice é igual a ou maior do que o primeiro índice; e um módulo de obtenção, configurado para obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado.
[0051] Em uma implementação viável, em que o módulo de localização é configurado para: incrementar o segundo índice em m, em que m é um número inteiro positivo.
[0052] Em uma implementação viável, em que m é 1.
[0053] Em uma implementação viável, em que antes de analisar um primeiro índice de um fluxo de bits, o módulo de análise é adicionalmente configurado para: analisar pelo menos um indicador para determinar um modo de predição do bloco atual, em que o modo de predição é um modo de predição triangular ou um modo de predição geométrico. O modo de predição pode ser outro sub-bloco com base no modo de predição, incluindo o modo retangular ou não retangular (trapezoidal). E o modo de predição triangular e o modo de predição geométrico podem ser unificados como um único modo de predição, que também pode estar envolvido na implementação viável.
[0054] Em uma implementação viável, em que o módulo de localização é adicionalmente configurado para: obter uma lista de candidatos para o bloco atual.
[0055] Em uma implementação viável, em que as informações de predição do primeiro sub-bloco de predição são obtidas da lista de candidatos, de acordo com o primeiro índice.
[0056] Em uma implementação viável, em que as informações de predição do segundo sub-bloco de predição são obtidas a partir da lista de candidatos, de acordo com o segundo índice ajustado.
[0057] Em uma implementação viável, em que a lista de candidatos é uma lista de candidatos do Modo de Fusão.
[0058] Em uma implementação viável, em que o módulo de análise é configurado para: analisar um primeiro número para determinar um índice de candidato permitido máximo na lista de candidatos; e obter um índice máximo com base no índice de candidato permitido máximo, em que o primeiro índice não é maior do que o índice máximo.
[0059] Em uma implementação viável, em que o módulo de análise é configurado para: obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e um número predeterminado.
[0060] Em uma implementação viável, em que o módulo de análise é configurado para: analisar um segundo número para derivar uma diferença entre o índice de candidato permitido máximo e o índice máximo; e obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e a diferença.
[0061] Em uma implementação viável, em que o módulo de análise é configurado para: analisar um terceiro número para determinar o índice máximo.
[0062] Em uma implementação viável, em que o índice de candidato permitido máximo não é menor do que o índice máximo.
[0063] Em uma implementação viável, em que depois de obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado, o módulo de obtenção é adicionalmente configurado para: obter um valor de predição do bloco atual com base nas informações de predição do primeiro sub-bloco de predição e nas informações de predição do segundo sub-bloco de predição.
[0064] Em uma implementação viável, em que o primeiro índice ou o segundo índice é binarizado, de acordo com um código unário truncado.
[0065] Em uma implementação viável, em que um primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando o modo de codificação regular de CABAC.
[0066] Em uma implementação viável, em que um não primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando o modo de codificação bypass de CABAC.
[0067] Em uma implementação viável, em que o módulo de análise é configurado para analisar um indicador de direção do fluxo de bits, e em que o indicador de direção é usado para indicar uma direção de divisão do bloco atual.
[0068] Em um quinto aspecto do presente pedido, um produto de programa de computador compreendendo o código de programa para realizar o método, de acordo com qualquer um do primeiro aspecto ao quarto aspecto quando executados em um computador ou um processador.
[0069] Em um sexto aspecto do presente pedido, um decodificador, compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e 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 qualquer um do primeiro aspecto ao quarto aspecto.
[0070] Em um sétimo aspecto do presente pedido, um codificador, compreende: um ou mais processadores; e uma mídia de armazenamento legível por computador não transitória acoplada aos processadores e 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 qualquer um do primeiro aspecto ao quarto aspecto.
[0071] Em um oitavo aspecto do presente pedido, uma mídia legível por computador não transitória portando um código de programa que, quando executado por um dispositivo de computador, faz com que o dispositivo de computador realize o método de qualquer um do primeiro aspecto ao quarto aspecto.
[0072] O anterior e outros objetivos são obtidos pelo objeto de matéria das reivindicações independentes. As formas de implementação adicionais são evidentes a partir das reivindicações dependentes, da descrição e das figuras.
[0073] As modalidades particulares são esboçadas nas reivindicações independentes acopladas com outras modalidades nas reivindicações dependentes.
[0074] Os detalhes de uma ou mais modalidades são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[0075] É observado que no presente pedido, para um modo de predição triangular, visto que ao comparar ao modo de predição que todo o bloco tem informações de predição unificadas, o caso em que dois sub-blocos de predição no referido bloco têm as mesmas informações de predição é redundante. O presente pedido projeta um método de codificação de índice de predição para evitar o caso redundante. Os bits para a sinalização do índice de predição são salvos e a eficiência da codificação é melhorada. E a quantidade máxima de informações de predição de candidato para o modo de predição triangular é derivada com base na quantidade máxima de informações de predição de candidato para o Modo de Fusão. Os bits de codificação também são salvos, ao comparar à quantidade máxima de informações de predição de candidato para que o modo de predição triangular seja sinalizado independentemente.
BREVE DESCRIÇÃO DOS DESENHOS
[0076] As seguintes modalidades da invenção são descritas em mais detalhes com referência às figuras e desenhos anexos, em que:
[0077] A FIG. 1A é um diagrama de bloco que mostra um exemplo de um sistema de codificação de vídeo configurado para implementar as modalidades da invenção;
[0078] A FIG. 1B é um diagrama de bloco que mostra outro exemplo de um sistema de codificação de vídeo configurado para implementar as modalidades da invenção;
[0079] A FIG. 2 é um diagrama de bloco que mostra um exemplo de um codificador de vídeo configurado para implementar as modalidades da invenção;
[0080] A FIG. 3 é um diagrama de bloco que mostra uma estrutura de exemplo de um decodificador de vídeo configurado para implementar as modalidades da invenção;
[0081] A FIG. 4 é um diagrama de bloco que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0082] A FIG. 5 é um diagrama de bloco que ilustra outro exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0083] A FIG. 6 é um diagrama que mostra um exemplo de posições do candidato de fusão espacial;
[0084] A FIG. 7 é um diagrama que mostra um exemplo de pares candidatos considerados para a verificação de redundância dos candidatos de fusão espacial;
[0085] A FIG. 8 é um diagrama que mostra um exemplo da escala de vetor de movimento para o candidato de fusão temporal;
[0086] A FIG. 9 é um diagrama que mostra um exemplo de posições para o candidato temporal;
[0087] A FIG. 10A é uma ilustração de divisão de um bloco em duas unidades de predição triangulares;
[0088] A FIG. 10B é outra ilustração de divisão de um bloco em duas unidades de predição triangulares;
[0089] A FIG. 11 são exemplos de outros esquemas de partição de sub-bloco;
[0090] A FIG. 12 é uma ilustração de derivação do vetor de movimento de uni-predição da lista de candidatos de fusão;
[0091] A FIG. 13 é um exemplo de um bloco aplicando o filtro de mistura;
[0092] A FIG. 14 é um diagrama de bloco esquemático que ilustra o processo de CABAC;
[0093] A FIG. 15 é um diagrama de bloco que ilustra um exemplo de um método de predição;
[0094] A FIG. 16 é um diagrama de bloco que ilustra outro exemplo de um método de predição;
[0095] A FIG. 17 é um diagrama de bloco que mostra um exemplo de um aparelho de predição configurado para implementar as modalidades do pedido;
[0096] A FIG. 18 é um diagrama de bloco que ilustra um exemplo de um aparelho de codificação ou um aparelho de decodificação;
[0097] A FIG. 19 é um diagrama de bloco que mostra uma estrutura de exemplo de um sistema de fornecimento de conteúdo 3100 que realiza um serviço de liberação de conteúdo;
[0098] A FIG. 20 é um diagrama de bloco que mostra uma estrutura de um exemplo de um dispositivo terminal.
[0099] Os seguintes sinais de referência idênticos se referem às características idênticas ou, pelo menos, funcionalmente equivalentes, se não for explicitamente especificado de outro modo.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0100] Na seguinte descrição, a referência será feita às figuras anexas, que fazem parte da revelação e que mostram, através da ilustração,
aspectos específicos das modalidades da invenção ou aspectos específicos em que as modalidades da presente invenção podem ser usadas. É entendido que as modalidades da invenção podem ser usadas em outros aspectos e compreendem alterações 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 da presente invenção é definido pelas reivindicações anexas.
[0101] Por exemplo, é entendido que uma revelação em relação a um método descrito também pode ser verdadeira para um dispositivo correspondente ou sistema configurado para realizar o método e vice-versa. Por exemplo, se uma ou uma pluralidade de etapas do método específico for descrita, um dispositivo correspondente pode incluir uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, para realizar a descrita ou a pluralidade de etapas do método (por exemplo, uma unidade que realiza uma ou a pluralidade de etapas ou uma pluralidade de unidades, cada uma, que realiza uma ou mais da pluralidade de etapas), mesmo se tal ou mais unidades não forem explicitamente descritas ou ilustradas nas figuras. Por outro lado, por exemplo, se um aparelho específico for descrito com base em uma ou uma pluralidade de unidades, por exemplo, unidades funcionais, um método correspondente pode incluir uma etapa para realizar a funcionalidade de uma ou a pluralidade de unidades (por exemplo, uma etapa que realiza a funcionalidade de uma ou a pluralidade de unidades ou uma pluralidade de etapas, cada uma, que realiza a funcionalidade de uma ou mais da pluralidade de unidades), mesmo se tal ou a pluralidade de etapas não forem explicitamente descritas ou ilustradas nas figuras. Além disso, é entendido que as características das várias modalidades e/ou aspectos exemplares descritas neste relatório podem ser combinadas entre si, a menos que especificamente observado de outro modo.
[0102] A codificação de vídeo refere-se tipicamente ao processamento de uma sequência de imagens que formam o vídeo ou sequência de vídeos. Em vez do termo “fotografia”, o termo “quadro” ou “imagem” pode ser usado como sinônimo no campo da codificação de vídeo. A codificação de vídeo (ou codificação em general) 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, tipicamente 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 eficaz). A decodificação de vídeo é realizada no lado de destino e, tipicamente, compreende o processamento inverso comparado ao codificador para reconstruir as imagens de vídeo. As modalidades referindo-se à “codificação” de imagens de vídeo (ou as imagens em geral) devem ser entendidas para se referir à “codificação” ou “decodificação” de imagens de vídeo ou sequências de vídeos respectivas. A combinação da parte de codificação e a parte de decodificação também é referida como CODEC (Codificação e Decodificação).
[0103] No caso de codificação de vídeo sem perdas, as imagens de vídeo originais podem ser reconstruídas, isto é, as imagens de vídeo reconstruídas têm a mesma qualidade que as imagens de vídeo originais (assumindo nenhuma perda de transmissão ou outra perda de dados durante o armazenamento ou transmissão). No caso de codificação de vídeo com perdas, a compressão adicional, por exemplo, por quantização, é realizada, para reduzir a quantidade de dados representando as imagens de vídeo, que não podem ser completamente reconstruídas no decodificador, isto é, a qualidade das imagens de vídeo reconstruídas é menor ou pior comparada à qualidade das imagens de vídeo originais.
[0104] Vários padrões de codificação de vídeo pertencem ao grupo de “codecs de vídeo híbridos com perdas” (isto é, combinam a predição espacial e temporal no domínio de 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ídeos é tipicamente particionada em um conjunto de blocos não sobrepostos e a codificação é, tipicamente, realizada em um nível de bloco. Em outras palavras, no codificador o vídeo é, tipicamente, processado, isto é, codificado, em um nível de bloco (bloco de vídeo), por exemplo, por meio do uso de predição espacial (imagem intra) e/ou predição temporal (imagem inter) para gerar um bloco de predição, subtraindo o bloco de predição do bloco atual (bloco atualmente processado/a ser processado) para obter um bloco residual, transformando o bloco residual e quantizando o bloco residual no domínio de transformada para reduzir a quantidade de dados a ser transmitida (compressão), enquanto no decodificador, o processamento inverso comparado ao codificador, é aplicado ao bloco codificado ou comprimido para reconstruir o bloco atual para representação. Além disso, o codificador duplica o loop de processamento de decodificador, tal que ambos gerarão predições idênticas (por exemplo, predições intra e inter) e/ou reconstruções para processamento, isto é, codificação dos blocos subsequentes.
[0105] 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 Figs. 1 a 3.
[0106] A Fig. 1A é um diagrama de bloco esquemático que ilustra um sistema de codificação de exemplo 10, por exemplo, um sistema de codificação de vídeo 10 (ou sistema de codificação 10, abreviado) que pode utilizar técnicas deste presente pedido. O codificador de vídeo 20 (ou codificador 20, abreviado) e o decodificador de vídeo 30 (ou decodificador 30, abreviado) do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas, de acordo com vários exemplos descritos no presente pedido.
[0107] Como mostrado na FIG. 1A, o sistema de codificação 10 compreende um dispositivo de origem 12 configurado para fornecer dados de imagem codificados 21, por exemplo, para um dispositivo de destino 14 para a decodificação dos dados de imagem codificados 13.
[0108] 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.
[0109] 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 uma 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 anteriormente mencionadas.
[0110] Em distinção ao pré-processador 18 e ao processamento realizado pela unidade de pré-processamento 18, a imagem ou dados de imagem 17 também pode ser referida como imagem bruta ou dados de imagem bruta 17.
[0111] O pré-processador 18 é configurado para receber os dados de imagem (bruta) 17 e para realizar o pré-processamento nos dados de imagem 17 para obter uma imagem pré-processada 19 ou dados de imagem pré- processados 19. O pré-processamento realizado pelo pré-processador 18 pode, por exemplo, compreender corte, conversão de formato de cor (por exemplo, de RGB para YCbCr), correção de cor ou eliminação de ruído. Pode ser entendido que a unidade de pré-processamento 18 pode ser o componente opcional.
[0112] O codificador de vídeo 20 é configurado para receber os dados de imagem pré-processados 19 e fornecer os dados de imagem codificados 21 (detalhes adicionais serão descritos abaixo, por exemplo, com base na Fig. 2).
[0113] A interface de comunicação 22 do dispositivo de origem 12 pode ser configurada para receber os dados de imagem codificados 21 e para transmitir os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos) através do canal de comunicação 13 para outro dispositivo, por exemplo, o dispositivo de destino 14 ou qualquer outro dispositivo, para armazenamento ou reconstrução direta.
[0114] 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.
[0115] A interface de comunicação 28 do dispositivo de destino 14 é configurada para receber os dados de imagem codificados 21 (ou qualquer versão processada adicional dos mesmos), por exemplo, diretamente do dispositivo de origem 12 ou de qualquer outra fonte, por exemplo, um dispositivo de armazenamento, por exemplo, um dispositivo de armazenamento de dados de imagem codificados e fornecer os dados de imagem codificados 21 para o decodificador 30.
[0116] A interface de comunicação 22 e a interface de comunicação 28 podem ser configurada para transmitir ou receber os dados de imagem codificados 21 ou dados codificados 13 através de um enlace de comunicação direta entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, uma conexão com fio ou sem fio direta ou através de qualquer tipo de rede, por exemplo, uma rede com fio ou sem fio ou qualquer combinação da mesma ou, qualquer tipo de rede privada e pública ou qualquer tipo de combinação da mesma.
[0117] 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 a transmissão através de um enlace de comunicação ou rede de comunicação.
[0118] 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 de transmissão correspondente ou processamento e/ou desempacotamento para obter os dados de imagem codificados 21.
[0119] Tanto a interface de comunicação 22 quanto a interface de comunicação 28 podem ser configuradas como interfaces de comunicação unidirecionais, como indicado pela seta para o canal de comunicação 13 na Fig. 1A apontando 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 configurar uma conexão, para reconhecer e trocar quaisquer outras informações relacionadas ao enlace de comunicação e/ou transmissão de dados, por exemplo, transmissão de dados de imagem codificados.
[0120] O decodificador 30 é configurado para receber os dados de imagem codificados 21 e fornecer dados de imagem decodificados 31 ou uma imagem decodificada 31 (os detalhes adicionais serão descritos abaixo, por exemplo, com base na Fig. 3 ou Fig. 5).
[0121] 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ídos), por exemplo, a imagem decodificada 31, para obter os dados de imagem pós-processados 33, por exemplo, uma imagem pós-processada 33. O pós-processamento realizado pela unidade de pós-processamento 32 pode compreender, por exemplo, conversão de formato de cor (por exemplo, de YCbCr para RGB), correção de cor, corte ou, reamostragem ou qualquer outro processamento, por exemplo, para preparar os dados de imagem decodificados 31 para exibição, por exemplo, pelo dispositivo de exibição 34.
[0122] O dispositivo de exibição 34 do dispositivo de destino 14 é configurado para receber os dados de imagem pós-processados 33 para a exibição da imagem, por exemplo, para um usuário ou observador. O dispositivo de exibição 34 pode ser ou compreender qualquer tipo de display para representar a imagem reconstruída, por exemplo, um display ou monitor integrada ou externa. O display pode, por exemplo, compreender displays de cristal líquido (LCD), displays de diodos emissores de luz orgânicos (OLED), displays de plasma, projetores, displays de micro LED, cristal líquido em silício (LCoS), processador de luz digital (DLP) ou qualquer outro tipo de display.
[0123] Embora a Fig. 1A represente o dispositivo de origem 12 e o dispositivo de destino 14 como dispositivos separados, as modalidades dos dispositivos também podem compreender ambos ou ambas as funcionalidades, tanto o dispositivo de origem 12 ou funcionalidade correspondente quanto 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.
[0124] Como será evidente para o técnico no assunto com base na descrição, a existência e divisão (exata) de funcionalidades das diferentes unidades ou funcionalidades dentro do dispositivo de origem 12 e/ou dispositivo de destino 14, como mostrado na Fig. 1A, podem variar,, dependendo do dispositivo e aplicação reais.
[0125] O codificador 20 (por exemplo, um codificador de vídeo 20) ou o decodificador 30 (por exemplo, um decodificador de vídeo 30) ou tanto o codificador 20 quanto o decodificador 30 podem ser implementados através de circuitos de processamento, como mostrado na Fig. 1B, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos da aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware, codificação de vídeo dedicada ou quaisquer combinações dos mesmos. O codificador 20 pode ser implementado através de circuitos de processamento 46 para incorporar os vários módulos como discutido em relação ao codificador 20 da FIG. 2 e/ou qualquer outro sistema de codificador ou subsistema descrito neste relatório. O decodificador 30 pode ser implementado através de circuitos de processamento 46 para incorporar os vários módulos como discutido em relação ao decodificador 30 da FIG. 3 e/ou qualquer outro sistema de decodificador ou subsistema descrito neste relatório. Os circuitos de processamento podem ser configurados para realizar as várias operações como discutido adiante. Como mostrado na Fig. 5, se as técnicas são implementadas parcialmente no software, um dispositivo pode armazenar instruções para o software em uma mídia de armazenamento legível por computador não transitória adequada e pode executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta revelação. 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 Fig. 1B.
[0126] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla faixa de dispositivos, incluindo qualquer tipo de dispositivos portáteis ou estacionários, por exemplo, computadores notebook ou laptop, telefones móveis, smartphones, computadores tabletes ou tablet, câmeras, computadores de área de trabalho, set-top boxes, televisões, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão de vídeo (tais como servidores de serviço de conteúdo ou servidores de liberação de conteúdo), dispositivo receptor de broadcast, dispositivo transmissor de broadcast ou semelhantes e, podem usar nenhum ou qualquer tipo de sistema operacional. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para a comunicação sem fio. Assim, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio.
[0127] Em alguns casos, o sistema de codificação de vídeo 10 ilustrado na Fig. 1A é meramente um exemplo e as técnicas do presente pedido podem se aplicar às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem 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 através de uma rede ou semelhantes. Um dispositivo de codificação de vídeo pode codificar e armazenar os dados para a memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar os dados da memória. Em alguns exemplos, a codificação e a decodificação são realizadas pelos dispositivos que não se comunicam um com o outro, mas simplesmente codificam os dados para a memória e/ou recuperam e decodificam os dados da memória.
[0128] Por conveniência da descrição, as modalidades da invenção são descritas neste relatório, por exemplo, por referência à Codificação de Vídeo de Alta Eficiência (HEVC) ou ao software de referência da Codificação de Vídeo Versátil (VVC), à codificação de vídeo padrão da próxima geração desenvolvida pela Equipe de Colaboração Conjunta na Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um técnico no assunto entenderá que as modalidades da invenção não estão limitadas a HEVC ou VVC. Codificador e Método de Codificação
[0129] A Fig. 2 mostra um diagrama de bloco esquemático de um exemplo codificador de vídeo 20 que é configurado para implementar as técnicas do presente pedido. No exemplo da Fig. 2, o codificador de vídeo 20 compreende uma entrada 201 (ou interface de entrada 201), uma unidade de cálculo residual 204, uma unidade de processamento de transformada 206, uma unidade de quantização 208, uma unidade de quantização inversa 210 e unidade de processamento de transformada inversa 212, uma unidade de reconstrução 214, uma unidade de filtro loop 220, um buffer de imagem decodificada (DPB) 230, uma unidade de seleção de modo 260, uma unidade de codificação de entropia 270 e uma saída 272 (ou interface de saída 272). A unidade de seleção de modo 260 pode incluir uma unidade de predição inter 244, uma unidade de predição intra 254 e uma unidade de particionamento 262. A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostradas). Um codificador de vídeo 20, como mostrado na Fig. 2, também pode ser referido como codificador de vídeo híbrido ou um codificador de vídeo, de acordo com um codec de vídeo híbrido.
[0130] 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 caminho 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 caminho de sinal reverso do codificador de vídeo 20, em que o caminho de sinal indireto do codificador de vídeo 20 corresponde ao caminho de sinal do decodificador (ver o decodificador de vídeo 30 na Fig. 3). A unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade 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 como formando o “decodificador embutido” do codificador de vídeo 20. Imagens e Particionamento de Imagem (Imagens e Blocos)
[0131] 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, a imagem de uma sequência de imagens formando um vídeo ou sequência de vídeos. A imagem recebida ou dados de imagem também podem ser 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, previamente codificadas e/ou imagem decodificadas da mesma sequência de vídeos, isto é, a sequência de vídeos que também compreende a imagem atual).
[0132] Uma imagem (digital) é ou pode ser considerada um arranjo bidimensional ou matriz de amostras com valores de intensidade. Uma amostra no arranjo também pode ser referida como pixel (forma abreviada de elemento de imagem) ou um pel. O número de amostras na direção horizontal e vertical (ou eixo) do arranjo ou imagem define o tamanho e/ou resolução da imagem. Para a representação de cor, tipicamente, três componentes de cor são utilizados, isto é, a imagem pode ser representada ou incluir três arranjos de amostra. No formato RBG ou espaço de cor, uma imagem compreende um arranjo de amostra vermelho, verde e azul correspondente. Entretanto, na codificação de vídeo, cada pixel é, tipicamente, representado em um formato de luminância e crominância ou espaço de cor, por exemplo, YCbCr, que compreende um componente de luminância indicado por Y (às vezes, L também é usado no lugar) e dois componentes de crominância indicados por Cb e Cr. O componente de luminância (ou luma, abreviado) Y representa o brilho ou nível de intensidade de cinza (por exemplo, como em uma imagem em escala de cinza), enquanto os dois componentes de crominância (ou croma, abreviado) Cb e Cr representam a cromaticidade ou componentes de informações de cor. Consequentemente, uma imagem no formato YCbCr compreende um arranjo de amostra de luminância dos valores de amostra de luminância (Y) e dois arranjos de amostra de crominância de valores de crominância (Cb e Cr). As imagens no formato RGB podem ser convertidas ou transformadas no formato YCbCr e vice- versa, o processo também é conhecido como transformação ou conversão de cor. Se uma imagem for monocromática, a imagem pode compreender apenas um arranjo de amostra de luminância. Consequentemente, uma imagem pode ser, por exemplo, um arranjo de amostras de luma no formato monocromático ou um arranjo de amostras de luma e dois arranjos correspondentes de amostras de croma no formato de coloração 4:2:0, 4:2:2 e 4:4:4.
[0133] As modalidades do codificador de vídeo 20 podem compreender uma unidade de particionamento de imagem (não representada na Fig. 2) configurada para particionar a imagem 17 em uma pluralidade de blocos de imagem 203 (tipicamente não sobrepostos). Estes blocos também podem ser referidos como blocos raiz, macro blocos (H.264/AVC) ou blocos de árvore de codificação (CTB) ou unidades de árvore de codificação (CTU) (H.265/HEVC e VVC). A unidade de particionamento de imagem pode ser configurada para usar o mesmo tamanho de bloco para todas as imagens de uma sequência de vídeos e a grade correspondente definindo o tamanho de bloco ou para alterar o tamanho de bloco entre imagens ou subconjuntos ou grupos de imagens e particionar cada imagem nos blocos correspondentes.
[0134] Nas modalidades adicionais, o codificador de vídeo pode ser configurado para receber diretamente um bloco 203 da imagem 17, por exemplo, um, vários ou todos blocos formando 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.
[0135] Como a imagem 17, o bloco de imagem 203 novamente é ou pode ser considerado como um arranjo bidimensional ou matriz de amostras com valores de intensidade (valores de amostra), embora de menor dimensão do que a imagem 17. Em outras palavras, o bloco 203 pode compreender, por exemplo, um arranjo de amostra (por exemplo, um arranjo de luma no caso de uma imagem monocromática 17 ou um arranjo de luma ou croma no caso de uma imagem colorida) ou três arranjos de amostra (por exemplo, um luma e dois arranjos de croma no caso de uma imagem colorida 17) ou qualquer outro número e/ou tipo de arranjos, dependendo do formato de cor aplicado. O número de amostras na direção horizontal e vertical (ou eixo) do bloco 203 define o tamanho do bloco 203. Consequentemente, um bloco pode, por exemplo, um arranjo de amostras MxN (coluna M pela linha N) ou um arranjo MxN de coeficientes de transformada.
[0136] As modalidades do codificador de vídeo 20, como mostrado na Fig. 2, podem ser configuradas para codificar a imagem 17, bloco por bloco, por exemplo, a codificação e predição são realizadas por bloco 203.
[0137] As modalidades do codificador de vídeo 20, como mostrado na Fig. 2, podem ser adicionalmente configuradas para particionar e/ou codificar a imagem por meio do uso de fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou codificada usando uma ou mais fatias (tipicamente não sobrepostas) e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0138] As modalidades do codificador de vídeo 20, como mostrado na Fig. 2, podem ser adicionalmente configuradas para particionar e/ou codificar a imagem por meio do uso de grupos de fatias/tiles (também referidos como grupos de tile de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou codificada usando um ou mais grupos de fatias/tile (tipicamente não sobrepostos) e cada grupo de fatia/tile pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais tiles, em que cada tile, por exemplo, pode ser de formato retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou parciais. Cálculo Residual
[0139] 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 um bloco de predição 265 (os detalhes adicionais sobre o bloco de predição 265 são fornecidos adiante), por exemplo, pela subtração de valores de amostra do bloco de predição 265 de valores de amostra do bloco de imagem 203, amostra por amostra (pixel por pixel) para obter o bloco residual 205 no domínio de amostra. Transformada
[0140] 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 os coeficientes de transformada 207 em um domínio de transformada. Os coeficientes de transformada 207 também podem ser referidos como coeficientes de transformada residual e representam o bloco residual 205 no domínio de transformada.
[0141] A unidade de processamento de transformada 206 pode ser configurada para aplicar as aproximações inteiras de DCT/DST, tais como as transformadas especificadas para H.265/HEVC. Comparado a uma transformada DCT ortogonal, tais aproximações inteiras são, tipicamente, dimensionadas por um determinado fator. De modo a preservar a norma do bloco residual que é processado pelas transformadas diretas e inversas, os fatores de escala adicionais são aplicados como parte do processo de transformada. Os fatores de escala são, tipicamente, escolhidos com base em determinadas restrições como os fatores de escala sendo uma potência de dois para operações de deslocamento, a profundidade de bits dos coeficientes de transformada, compensação entre precisão e custos de implementação, etc. Os fatores de escala específicos são, por exemplo, especificados para a transformada inversa, por exemplo, pela unidade de processamento de transformada inversa 212 (e a transformada inversa correspondente, por exemplo, pela unidade de processamento de transformada inversa 312 no decodificador de vídeo 30) e os fatores de escala correspondentes para a transformada direta, por exemplo, pela unidade de processamento de transformada 206, em um codificador 20 podem ser especificados consequentemente.
[0142] 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, codificada ou comprimida, através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros de transformada para decodificação. Quantização
[0143] A unidade de quantização 208 pode ser configurada para quantizar os coeficientes de transformada 207 para obter coeficientes quantizados 209, por exemplo, aplicando a 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.
[0144] 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 do que m. O grau de quantização pode ser modificado ajustando um parâmetro de quantização (QP). Por exemplo, para a quantização escalar, diferentes escalas podem ser aplicadas para obter a quantização mais fina ou mais grosseira. Os menores tamanhos da etapa de quantização correspondem à quantização mais fina, enquanto os maiores tamanhos da etapa de quantização correspondem à quantização mais grosseira. O tamanho da etapa de quantização aplicável pode ser indicado por um parâmetro de quantização (QP). O parâmetro de quantização pode ser, por exemplo, um índice para um conjunto predefinido de tamanhos de etapa de quantização aplicáveis. Por exemplo,
pequenos parâmetros de quantização podem corresponder à quantização fina (pequenos tamanhos de etapa de quantização) e maiores parâmetros de quantização podem corresponder à quantização mais grosseira (maiores tamanhos de etapa de quantização) ou vice-versa. A quantização pode incluir a divisão por um tamanho de etapa de quantização e uma desquantização correspondente e/ou inversa, por exemplo, pela unidade de quantização inversa 210, pode incluir a multiplicação pelo tamanho de etapa de quantização. As modalidades, de acordo com alguns padrões, por exemplo, HEVC, podem ser configuradas para usar um parâmetro de quantização para determinar o tamanho de etapa de quantização. Em geral, o tamanho de etapa de quantização pode ser calculado com base em um parâmetro de quantização usando uma aproximação de ponto fixo de uma equação incluindo divisão. Os fatores de escala adicionais podem ser introduzidos para quantização e desquantização para restaurar a norma do bloco residual, que pode ser modificada por causa da escala usada na aproximação de ponto fixo da equação para o tamanho de etapa de quantização e parâmetro de quantização. Em uma implementação de exemplo, a escala da transformada inversa e desquantização podem ser combinadas. Alternativamente, as tabelas de quantização personalizadas podem ser usadas e sinalizadas a partir de um codificador para um decodificador, por exemplo, em um fluxo de bits. A quantização é uma operação com perdas, em que a perda aumenta com o aumento dos tamanhos de etapa de quantização.
[0145] As modalidades do codificador de vídeo 20 (respectivamente, a unidade de quantização 208) podem ser configuradas para emitir os parâmetros de quantização (QP), por exemplo, diretamente ou codificado através da unidade de codificação de entropia 270, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e aplicar os parâmetros de quantização para decodificação. Quantização Inversa
[0146] 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 os 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 etapa de quantização que a unidade de quantização 208. Os coeficientes desquantizados 211 também podem ser referidos como coeficientes residuais desquantizados 211 e correspondem - embora tipicamente não idênticos aos coeficientes de transformada devido à perda por quantização - aos coeficientes de transformada
207. Transformada Inversa
[0147] A unidade de processamento de transformada inversa 212 é configurada para aplicar a transformada inversa da transformada aplicada pela unidade de processamento de transformada 206, por exemplo, uma transformada inversa de cosseno discreta (DCT) ou transformada inversa de seno discreta (DST) ou outras transformadas inversas, para obter um bloco residual reconstruído 213 (ou coeficientes desquantizados correspondentes 213) no domínio de amostra. O bloco residual reconstruído 213 também pode ser referido como bloco de transformada 213. Reconstrução
[0148] A unidade de reconstrução 214 (por exemplo, adicionador ou somador 214) é configurada para adicionar o bloco de transformada 213 (isto é, o bloco residual reconstruído 213) ao bloco de predição 265 para obter um bloco reconstruído 215 no domínio de amostra, por exemplo, pela adição - amostra por amostra - de valores de amostra do bloco residual reconstruído 213 e de valores de amostra do bloco de predição 265. Filtragem
[0149] A unidade de filtro loop 220 (ou “filtro loop” 220, abreviado), é configurada para filtrar o bloco reconstruído 215 para obter um bloco filtrado 221 ou, em geral, para filtrar amostras reconstruídas para obter os valores de amostra filtrados. A unidade de filtro loop é, por exemplo, configurada para suavizar as transições de pixel ou, de outro modo, melhorar a qualidade de vídeo. A unidade de filtro loop 220 pode compreender um ou mais filtros loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo da 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 desblocagem, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desblocagem, SAO e ALF. Em outro exemplo, um processo chamado de mapeamento de luma com escala de croma (LMCS) (isto é, o remodelador no loop adaptativo) é adicionado. Este processo é realizado antes da desblocagem. Em outro exemplo, o processo de filtro de desblocagem também pode ser aplicado às extremidades de sub-bloco internas, por exemplo, extremidades de sub-blocos afins, extremidades de sub-blocos ATMVP, extremidades de transformada de sub-bloco (SBT) e extremidades de sub- partição intra (ISP). Embora a unidade de filtro loop 220 seja mostrada na FIG. 2 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 220 pode ser implementada como um filtro de post-loop. O bloco filtrado 221 também pode ser referido como o bloco filtrado reconstruído 221.
[0150] As modalidades do codificador de vídeo 20 (respectivamente, a unidade de filtro loop 220) podem ser configuradas para emitir os 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 possa receber e aplicar os mesmos parâmetros de filtro loop ou filtros loop respectivos para decodificação. Buffer de Imagem Decodificada
[0151] O buffer de imagem decodificada (DPB) 230 pode ser uma memória que armazena imagens de referência ou, em geral, dados de imagem de referência, para a codificação de dados de vídeo pelo codificador de vídeo
20. O DPB 230 pode ser formado por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O buffer de 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, previamente reconstruídos e blocos filtrados 221, da mesma imagem atual ou de diferentes imagens, por exemplo, imagens previamente reconstruídas e pode fornecer imagens completas previamente reconstruídas, isto é, decodificadas, (e blocos e amostras de referência correspondentes) e/ou uma imagem atual parcialmente reconstruída (e blocos e amostras de referência correspondentes), por exemplo, para predição inter. O buffer de imagem decodificada (DPB) 230 também pode ser configurado para armazenar um ou mais blocos não filtrados reconstruídos 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 ou amostras reconstruídas. Seleção de Modo (Particionamento e Predição)
[0152] A unidade de seleção de modo 260 compreende a unidade de particionamento 262, a unidade de predição inter 244 e a unidade de predição intra 254 e, é configurada para receber ou obter dados de imagem originais, por exemplo, um bloco original 203 (bloco atual 203 da imagem atual 17) e, dados de imagem reconstruídos, por exemplo, amostras ou blocos reconstruídos filtrados e/ou não filtrados 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ídos são usados como os 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.
[0153] 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 sem 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.
[0154] 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 ou disponíveis para a unidade de seleção de modo 260), que fornecem a melhor correspondência ou, em outras palavras, o residual mínimo (residual mínimo significa melhor compressão para a transmissão ou armazenamento), ou uma sobrecarga de sinalização mínima (sobrecarga de sinalização mínima significa melhor compressão para a transmissão ou armazenamento), ou que considera ou equilibra ambos. A unidade de seleção de modo 260 pode ser configurada para determinar o particionamento e o modo de predição com base na otimização de distorção de taxa (RDO), isto é, selecionar o modo de predição que fornece uma distorção de taxa mínima. Os termos como “melhor”, “mínimo”, “ideal” etc., neste contexto, não necessariamente referem-se a um “melhor”, “mínimo”, “ideal”, etc. global, mas também podem se referir ao preenchimento de um critério de terminação ou seleção como um valor que excede ou está abaixo de um limite ou outras restrições levando potencialmente a uma “seleção sub-ideal”, mas reduzindo a complexidade e o tempo de processamento.
[0155] Em outras palavras, a unidade de particionamento 262 pode ser configurada para particionar uma imagem a partir de uma sequência de vídeos em uma sequência de unidades de árvore de codificação (CTUs) e, a CTU 203 pode ser adicionalmente particionada em menores partições de bloco ou sub-blocos (que formam novamente blocos), por exemplo, iterativamente usando o particionamento de quadtree (QT), particionamento binário (BT) ou particionamento de árvore tripla (TT) ou qualquer combinação dos mesmos e, para realizar, por exemplo, a predição para cada uma das partições de bloco ou sub-blocos, em que a seleção de modo compreende a seleção da estrutura de árvore do bloco particionado 203 e os modos de predição são aplicados a cada uma das partições de bloco ou sub-blocos.
[0156] No seguinte, o particionamento (por exemplo, pela unidade de particionamento 260) e o processamento de predição (pela unidade de predição inter 244 e unidade de predição intra 254) realizados por um codificador de vídeo de exemplo 20 serão explicados em mais detalhes. Particionamento
[0157] A unidade de particionamento 262 pode ser configurada para particionar uma imagem a partir de uma sequência de vídeos 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 menores partições, por exemplo, menores blocos de tamanho quadrado ou retangular. Para uma imagem que tem 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 para ser 128×128 na codificação de vídeo versátil em desenvolvimento (VVC), mas pode ser especificado para ser o valor em vez de 128x128 no futuro, por exemplo, 256x256. As CTUs de uma imagem podem ser aglomeradas/agrupadas como grupos de fatias/tiles, tiles ou bricks.
Uma tile cobre uma região retangular de uma imagem, e uma tile pode ser dividida em um ou mais bricks. Um brick consiste em várias linhas CTU dentro de uma tile. Uma tile que não é particionada em múltiplos bricks pode ser referida como um brick. Entretanto, um brick é um subconjunto verdadeiro de uma tile e não é referido como uma tile. Existem dois modos de grupos de tile suportados em VVC, isto é, o modo de grupo de fatia/tile de varredura raster e o modo de fatia retangular. No modo de grupo de tile de varredura raster, um grupo de fatia/tile contém uma sequência de tiles na varredura raster de tile de uma imagem. No modo de fatia retangular, uma fatia contém vários bricks de uma imagem que forma coletivamente uma região retangular da imagem. Os bricks dentro de uma fatia retangular estão na ordem de varredura raster de brick da fatia. Estes blocos menores (que também podem ser referidos como sub-blocos) podem ser adicionalmente particionados mesmo em partições menores. Estas também são referidas como particionamento de árvore ou particionamento de árvore hierárquica, em que um bloco raiz, por exemplo, no nível de árvore de raiz 0 (nível hierárquico 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 hierárquico 1, profundidade 1), em que estes blocos podem ser novamente particionados em dois ou mais blocos de um próximo nível inferior, por exemplo, nível de árvore 2 (nível hierárquico 2, profundidade 2), etc., até que o particionamento seja concluído, por exemplo, pelo fato de que um critério de terminação é preenchido, por exemplo, uma profundidade de árvore máxima ou tamanho de bloco mínimo é alcançado. Os blocos que não são adicionalmente particionados também são referidos como blocos de folha ou nós de folha da árvore. Uma árvore usando o particionamento nas duas partições é referida como árvore binária (BT), uma árvore usando o particionamento nas três partições é referida como árvore ternária (TT) e uma árvore usando o particionamento em quatro partições é referida como quadtree (QT).
[0158] Por exemplo, uma unidade de árvore de codificação (CTU) pode ser ou compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra ou um CTB de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de árvore de codificação (CTB) pode ser um bloco de amostras NxN para algum valor de N, tal que a divisão de um componente em CTBs seja um particionamento. Uma unidade de codificação (CU) pode ser ou compreender um bloco de codificação de amostras de luma, dois blocos de codificação correspondentes de amostras de croma de uma imagem que tem três arranjos de amostra ou um bloco de codificação de amostras de uma imagem monocromática ou uma imagem que é codificada usando três planos de cor separados e estruturas de sintaxe usadas para codificar as amostras. Correspondentemente, um bloco de codificação (CB) pode ser um bloco de amostras MxN para alguns valores de M e N, tal que a divisão de um CTB em blocos de codificação seja um particionamento.
[0159] Nas modalidades, por exemplo, de acordo com HEVC, uma unidade de árvore de codificação (CTU) pode ser dividida em CUs por meio do uso de uma estrutura de quadtree denotada como árvore de codificação. A decisão de codificar uma área de imagem usando a predição de imagem inter (temporal) ou imagem intra (espacial) é feita no nível da CU de folha. Cada CU de folha pode ser adicionalmente 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 no 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 nas unidades de transformada (TUs), de acordo com outra estrutura de quadtree similar à árvore de codificação para a CU.
[0160] Nas 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 de múltiplos tipos aninhada de quadtree usando a estrutura de segmentação de divisões binária e ternária, por exemplo, usada para particionar uma unidade de árvore de codificação. Na estrutura de árvore de codificação dentro de uma unidade de árvore de codificação, uma CU pode ter um formato quadrado ou retangular. Por exemplo, a unidade de árvore de codificação (CTU) é primeiramente particionada por uma árvore quaternária. Em seguida, os nós de folha da árvore quaternária podem ser adicionalmente particionados por uma estrutura de árvore de múltiplos tipos.
Existem quatro tipos de divisão na estrutura de árvore de múltiplos tipos, 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 de folha de árvore de múltiplos tipos são chamados de unidades de codificação (CUs) e, a menos que a CU seja muito grande para o comprimento de transformada máximo, esta segmentação é usada para o processamento de predição e transformada sem qualquer particionamento adicional.
Isto significa que, na maioria dos casos, a CU, PU e TU têm o mesmo tamanho de bloco na quadtree com a estrutura do bloco de codificação de árvore de múltiplos tipos aninhada.
A exceção ocorre quando o comprimento de transformada suportado máximo é menor do que a largura ou altura do componente de coloração da CU.VVC desenvolve um único mecanismo de sinalização das informações de divisão de partição na quadtree com a estrutura de árvore de codificação de árvore de múltiplos tipos aninhada.
No mecanismo de sinalização, uma unidade de árvore de codificação (CTU) é tratada como a raiz de uma árvore quaternária e é particionada primeiro por uma estrutura de árvore quaternária.
Cada nó de folha de árvore quaternária (quando suficientemente grande para permitir) é, em seguida, adicionalmente particionado por uma estrutura de árvore de múltiplos tipos.
Na estrutura de árvore de múltiplos tipos, um primeiro sinalizador (mtt_split_cu_flag) é sinalizado para indicar se o nó foi adicionalmente particionado; quando um nó é adicionalmente particionado, um segundo sinalizador (mtt_split_cu_vertical_flag) é sinalizado para indicar a direção de divisão e, em seguida, um terceiro sinalizador (mtt_split_cu_binary_flag) é sinalizado para indicar se a divisão é uma divisão binária ou uma divisão ternária.
Com base nos valores de mtt_split_cu_vertical_flag e mtt_split_cu_binary_flag, o modo de divisão de árvore de múltiplos tipos (MttSplitMode) de uma CU pode ser derivado por um decodificador com base em uma regra predefinida ou uma tabela.
Deve ser observado, para um determinado projeto, por exemplo, bloco de luma 64×64 e projeto de tubulação de croma 32×32 nos decodificadores de hardware VVC, a divisão TT é proibida quando a largura ou altura de um bloco de codificação de luma é maior do que 64, como mostrado na Fig. 6. A divisão TT também é proibida quando a largura ou altura de um bloco de codificação de croma é maior do que 32. O projeto de tubulação dividirá uma imagem em unidades de dados de tubo virtual (VPDUs) que são definidas como unidades não sobrepostas em uma imagem. Nos decodificadores de hardware, VPDUs sucessivas são processadas por estágios de tubo múltiplos simultaneamente. O tamanho de VPDU é aproximadamente proporcional ao tamanho de buffer na maioria dos estágios de tubo, portanto, é importante manter o tamanho e VPDU pequeno. Na maioria dos decodificadores de hardware, o tamanho de VPDU pode ser definido para o tamanho de bloco de transformada máximo (TB). Entretanto, em VVC, a partição de árvore ternária (TT) e árvore binária (BT) pode levar ao aumento dos tamanhos de VPDUs.
[0161] Além disso, deve ser observado que, quando uma parte de um bloco de nó de árvore excede o limite inferior ou direito da imagem, 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 da imagem.
[0162] Como um exemplo, a ferramenta de Sub-Partições Intra (ISP) pode dividir blocos preditos de modo intra de luma vertical ou horizontalmente em 2 ou 4 sub-partições, dependendo do tamanho do bloco.
[0163] Em um exemplo, a unidade de seleção de modo 260 do codificador de vídeo 20 pode ser configurada para realizar qualquer combinação das técnicas de particionamento descritas neste relatório.
[0164] Como descrito acima, o codificador de vídeo 20 é configurado para determinar ou selecionar o melhor modo de predição ou ideal de um conjunto de (por exemplo, predeterminado) de 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
[0165] O conjunto de modos de predição intra pode compreender 35 modos de predição intra diferentes, por exemplo, modos não direcionais como o modo DC (ou meio) e modo planar ou, modos direcionais, por exemplo, como definido em HEVC ou, pode compreender 67 modos de predição intra diferentes, por exemplo, modos não direcionais como o modo DC (ou meio) e modo planar ou modos direcionais, por exemplo, como definido para VVC. Como um exemplo, vários modos de predição intra angulares convencionais são adaptativamente substituídos por modos de predição intra de grande angular para os blocos não quadrados, por exemplo, como definido em VVC. Como outro exemplo, para evitar as operações de divisão para a predição de DC, apenas o lado mais longo é usado para calcular a média para os 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).
[0166] 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.
[0167] A unidade de predição intra 254 (ou, em geral, a unidade de seleção de modo 260) é adicionalmente configurada para emitir os parâmetros de predição intra (ou, em geral, informações indicativas do modo de predição intra selecionado para o bloco) para a unidade de codificação de entropia 270 na forma de elementos de sintaxe 266 para a 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
[0168] O conjunto de (ou possível) modos de predição intra depende das imagens de referência disponíveis (isto é, 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 pesquisa em torno da área do bloco atual, da imagem de referência for usada para procurar por um melhor bloco de referência de correspondência e/ou, por exemplo, se a interpolação de pixel for aplicada, por exemplo, meio/semi-pel, um quarto de pel e/ou 1/16 de interpolação de pel ou não.
[0169] Além dos modos de predição acima, o modo de salto, o modo direto e/ou outro modo de predição inter pode ser aplicado.
[0170] Por exemplo, a predição de fusão estendida, a lista de candidatos de fusão de tal modo é construída incluindo os seguintes cinco tipos de candidates em ordem: MVP espacial das Cus vizinhas espaciais, MVP temporal das Cus colocalizadas, MVP com base em histórico de uma tabela FIFO, MVP médio pareado e MVs zero. E um refinamento de vetor de movimento lateral de decodificador com base na correspondência bilateral (DMVR) pode ser aplicado para aumentar a precisão dos MVs do modo de fusão. O modo de fusão com MVD (MMVD), que vem do modo de fusão com diferenças de vetor de movimento. Um sinalizador MMVD é sinalizado bem depois do envio de um sinalizador de salto e sinalizador de fusão para especificar se o modo MMVD é usado para uma CU. E um esquema de resolução de vetor de movimento adaptativo ao nível de CU (AMVR) pode ser aplicado. AMVR permite que MVD da CU seja codificada com precisão diferente., dependendo do modo de predição para a CU atual, as MVDs da CU atual podem ser selecionadas de forma adaptativa. Quando uma CU é codificada no modo de fusão, o modo de predição inter/intra combinado (CIIP) pode ser aplicado a CU atual. A média ponderada dos sinais de predição inter e intra é realizada para obter a predição de CIIP. A predição de compensação de movimento afim, o campo de movimento afim do bloco é descrito por informações de movimento de dois pontos de controle (parâmetro 4) ou três vetores de movimento de ponto de controle (parâmetro 6). A predição de vetor de movimento temporal com base em sub-bloco (SbTMVP), que é similar à predição de vetor de movimento temporal (TMVP) em HEVC, mas prevê os vetores de movimento das sub-CUs dentro da CU atual. O fluxo óptico bidirecional (BDOF), previamente referido como BIO, é uma versão mais simples que exige muito menos computação, especialmente em termos de número de multiplicações e do tamanho do multiplicador. O modo de partição triangular, em tal modo, uma CU é dividida igualmente em duas partições no formato 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.
[0171] A unidade de predição inter 244 pode incluir uma unidade de estimativa de movimento (ME) e uma unidade de compensação de movimento (MC) (ambas não mostradas na Fig,2). A unidade de estimativa de movimento pode ser configurada para receber ou obter o bloco de imagem 203 (bloco de imagem atual 203 da imagem atual 17) e uma imagem decodificada 231 ou, pelo menos, um ou uma pluralidade de blocos previamente reconstruídos, por exemplo, blocos reconstruídos de uma ou uma pluralidade de outras/diferentes imagens previamente decodificadas 231, para a estimativa de movimento. Por exemplo, uma sequência de vídeos pode compreender a imagem atual e as imagens previamente decodificadas 231 ou, em outras palavras, a imagem atual e as imagens previamente decodificadas 231 podem fazer parte ou formar uma sequência de imagens que forma uma sequência de vídeos.
[0172] O codificador 20 pode ser, por exemplo, configurado para selecionar um bloco de referência de uma pluralidade de blocos de referência da mesma ou diferentes imagens da pluralidade de outras imagens e fornecer uma imagem de referência (ou índice de imagem de referência) e/ou um deslocamento (deslocamento espacial) entre a posição (coordenadas x, y) do bloco de referência e 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).
[0173] A unidade de compensação de movimento é configurada para obter, por exemplo, receber, um parâmetro de predição inter e para realizar a predição inter com base ou usando o parâmetro de predição inter para obter um bloco de predição inter 265. A compensação de movimento, realizada pela unidade de compensação de movimento, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento/bloco determinado pela estimativa de movimento, que realiza possivelmente interpolações para a precisão de sub- pixel. A filtragem de interpolação pode gerar amostras de pixel adicionais a partir de amostras de pixel conhecidas, assim, aumentando potencialmente o número de blocos de predição de candidato que pode ser usado para codificar um bloco de imagem. Após o recebimento do vetor de movimento para a PU do bloco de imagem atual, a unidade de compensação de movimento pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência.
[0174] A unidade de compensação de movimento também pode gerar elementos de sintaxe associados aos blocos e fatias de vídeo para o uso pelo decodificador de vídeo 30 na decodificação dos blocos de imagem da fatia de vídeo. Em adição ou como uma alternativa às fatias e elementos de sintaxe respectivos, os grupos de tile e/ou tiles e os elementos de sintaxe respectivos podem ser gerados ou usados. Codificação de Entropia
[0175] A unidade de codificação de entropia 270 é configurada para aplicar, por exemplo, um algoritmo ou esquema de codificação de entropia (por exemplo, um esquema de codificação de comprimento variável (VLC), um esquema VLC adaptativo ao contexto (CAVLC), um esquema de codificação aritmética, uma binarização, uma codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia) ou bypass (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 os dados de imagem codificados 21 que podem ser emitidos através da saída 272, por exemplo, na forma de um fluxo de bits codificado 21, de modo que, por exemplo, o decodificador de vídeo 30 possa receber e usar os parâmetros para a 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 a transmissão ou recuperação posterior pelo decodificador de vídeo 30.
[0176] Outras variações estruturais do codificador de vídeo 20 podem ser usadas para codificar o fluxo de vídeo. Por exemplo, um codificador 20 não baseado em transformada pode quantizar o sinal residual diretamente sem a unidade de processamento de transformada 206 para determinados blocos ou quadros. Em outra implementação, um codificador 20 pode ter a unidade de quantização 208 e a unidade de quantização inversa 210 combinadas em uma única unidade. Decodificador e Método de Decodificação
[0177] A Fig. 3 mostra um exemplo de um decodificador de vídeo 30 que é configurado para implementar as técnicas deste presente pedido. O decodificador de vídeo 30 é configurado para receber os dados de imagem codificados 21 (por exemplo, o fluxo de bits codificado 21), por exemplo, codificados 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 os blocos de imagem de uma fatia de vídeo codificada (e/ou grupos de tile ou tiles) e os elementos de sintaxe associados.
[0178] No exemplo da Fig. 3, o decodificador 30 compreende uma unidade de decodificação de entropia 304, uma unidade de quantização inversa 310, uma unidade de processamento de transformada inversa 312, uma unidade de reconstrução 314 (por exemplo, um somador 314), um filtro loop 320, um 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 em geral recíproca à passagem de codificação descrita em relação ao codificador de vídeo 100 da FIG. 2.
[0179] Como explicado em relação ao codificador 20, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade 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. Consequentemente, a unidade de quantização inversa 310 pode ser idêntica em função à unidade de quantização inversa 110, a unidade de processamento de transformada inversa 312 pode ser idêntica em função à unidade de processamento de transformada inversa 212, a unidade de reconstrução 314 pode ser idêntica em função para a 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 aplicam-se, correspondentemente, às unidades e funções respectivas do decodificador de vídeo 30. Decodificação de Entropia
[0180] A unidade de decodificação de entropia 304 é configurada para analisar o fluxo de bits 21 (ou, em geral, os dados de imagem codificados 21) e, realizar, por exemplo, a decodificação de entropia para os dados de imagem codificados 21 para obter, por exemplo, os coeficientes quantizados 309 e/ou parâmetros de codificação decodificados (não mostrados na Fig. 3), por exemplo, quaisquer 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 ou esquemas de decodificação correspondentes aos esquemas de codificação como descrito em relação à unidade de codificação de entropia 270 do codificador 20. A unidade de decodificação de entropia 304 pode ser adicionalmente configurada para fornecer os 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 no nível de bloco de vídeo. Em adição ou como uma alternativa às fatias e elementos de sintaxe respectivos, os grupos de tile e/ou tiles e os elementos de sintaxe respectivos podem ser recebidos e/ou usados. Quantização Inversa
[0181] A unidade de quantização inversa 310 pode ser configurada para receber os parâmetros de quantização (QP) (ou, em geral, as informações relacionadas à quantização inversa) e os coeficientes quantizados dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) e para aplicar com base nos parâmetros de quantização, uma quantização inversa nos coeficientes quantizados decodificados 309 para obter os 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 tile ou grupo de tile) para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa que deve ser aplicado. Transformada Inversa
[0182] A unidade de processamento de transformada inversa 312 pode ser configurada para receber os coeficientes desquantizados 311, também referidos como coeficientes de transformada 311 e para aplicar uma transformada aos coeficientes desquantizados 311, de modo a obter os blocos residuais reconstruídos 213 no domínio de amostra. Os blocos residuais reconstruídos 213 também podem ser referidos como blocos de transformada
313. A transformada pode ser uma transformada inversa, por exemplo, uma DCT inversa, uma DST inversa, uma transformada inteira inversa ou um processo de transformada inversa conceitualmente similar. A unidade de processamento de transformada inversa 312 pode ser adicionalmente configurada para receber os parâmetros de transformada ou informações correspondentes dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304) para determinar a transformada a ser aplicada aos coeficientes desquantizados 311. Reconstrução
[0183] 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
[0184] A unidade de filtro loop 320 (no loop de codificação ou depois do loop de codificação) é configurada para filtrar o bloco reconstruído 315 para obter um bloco filtrado 321, por exemplo, para suavizar as transições de pixel, ou, de outro modo, melhorar a qualidade de vídeo. A unidade de filtro loop 320 pode compreender um ou mais filtros loop, tais como um filtro de desblocagem, um filtro de deslocamento adaptativo da 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 desblocagem, um filtro SAO e um filtro ALF. A ordem do processo de filtragem pode ser o filtro de desblocagem, SAO e ALF. Em outro exemplo, um processo chamado de mapeamento de luma com escala de croma (LMCS) (isto é, o remodulador in-loop adaptativo) é adicionado. Este processo é realizado antes da desblocagem. Em outro exemplo, o processo de filtro de desblocagem também pode ser aplicado às extremidades de sub-bloco internas, por exemplo, extremidades de sub-blocos afins, extremidades de sub-blocos ATMVP, extremidades de transformada de sub-bloco (SBT) e extremidades de sub-partição intra (ISP). Embora a unidade de filtro loop 320 seja mostrada na FIG. 3 como sendo um filtro in-loop, em outras configurações, a unidade de filtro loop 320 pode ser implementada como um filtro de post-loop. Buffer de Imagem Decodificada
[0185] Os blocos de vídeo decodificados 321 de uma imagem são, em seguida, armazenados no buffer de imagem decodificada 330, que armazena as imagens decodificadas 331 como imagens de referência para a compensação de movimento subsequente para outras imagens e/ou para exibição de saída, respectivamente.
[0186] O decodificador 30 é configurado para emitir a imagem decodificada 311, por exemplo, através da saída 312, para apresentação ou visualização para um usuário. Predição
[0187] 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 a divisão ou decisões de particionamento e predição com base no particionamento e/ou parâmetros de predição ou respectivas informações recebidas a partir dos dados de imagem codificados 21 (por exemplo, por análise e/ou decodificação, por exemplo, pela unidade de decodificação de entropia 304). A unidade de aplicação de modo 360 pode ser configurada para realizar a predição (predição intra ou inter) por bloco com base nas imagens reconstruídas, blocos ou amostras respectivas (filtradas ou não filtradas) para obter o bloco de predição 365.
[0188] 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 dados de blocos previamente decodificados da imagem atual. Quando a imagem de vídeo é codificada como uma fatia codificada de modo inter (isto é, B ou P), a unidade de predição inter 344 (por exemplo, a unidade de compensação de movimento) da unidade de aplicação de modo 360 é configurada para produzir os blocos de predição 365 para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 304. Para a 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 imagem de referência. O decodificador de vídeo 30 pode construir a lista de quadro de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas em DPB 330. O mesmo ou similar pode ser aplicado para ou pelas modalidades usando os grupos de tile (por exemplo, grupos de tile de vídeo) e/ou tiles (por exemplo, tiles de vídeo tiles) em adição ou alternativamente às fatias (por exemplo, as fatias de vídeo), por exemplo, um vídeo pode ser codificado usando os grupos de tile e/ou tiles I, P ou B.
[0189] A unidade de aplicação de modo 360 é configurada para determinar as informações de predição para um bloco de vídeo da fatia de vídeo atual pela análise dos vetores de movimento ou informações relacionadas e outros elementos de sintaxe e usar as informações de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de aplicação de modo 360 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, predição intra ou inter) usados para codificar 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 imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo codificado de modo inter da fatia, estado de predição inter para cada bloco de vídeo codificado de modo inter da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. O mesmo ou similar pode ser aplicado para ou pelas modalidades usando os grupos de tile (por exemplo, os grupos de tile de vídeo) e/ou tiles (por exemplo, tiles de vídeo) em adição ou alternativamente às fatias (por exemplo, as fatias de vídeo), por exemplo, um vídeo pode ser codificado usando os grupos de tile e/ou tiles I, P ou B.
[0190] As modalidades do decodificador de vídeo 30, como mostrado na Fig. 3, podem ser configuradas para particionar e/ou decodificar a imagem por meio do uso de fatias (também referidas como fatias de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias (tipicamente não sobrepostas) e cada fatia pode compreender um ou mais blocos (por exemplo, CTUs) ou um ou mais grupos de blocos (por exemplo, tiles (H.265/HEVC e VVC) ou bricks (VVC)).
[0191] As modalidades do decodificador de vídeo 30, como mostrado na Fig. 3, podem ser configuradas para particionar e/ou decodificar a imagem por meio do uso de fatias/grupos de tile (também referidos como grupos de tile de vídeo) e/ou tiles (também referidas como tiles de vídeo), em que uma imagem pode ser particionada ou decodificada usando uma ou mais fatias/grupos de tile (tipicamente não sobrepostos) e cada fatia/grupo de tile pode compreender, por exemplo, um ou mais blocos (por exemplo, CTUs) ou uma ou mais tiles, em que cada tile, por exemplo, pode ser de formato retangular e pode compreender um ou mais blocos (por exemplo, CTUs), por exemplo, blocos completos ou parciais.
[0192] Outras variações do decodificador de vídeo 30 podem ser usadas para decodificar os dados de imagem codificados 21. Por exemplo, o decodificador 30 pode produzir o fluxo de vídeo de saída sem a unidade de filtragem loop 320. Por exemplo, um decodificador 30 não baseado em transformada pode quantizar inversamente os sinal residual diretamente sem a unidade de processamento de transformada inversa 312 para determinados blocos ou quadros. Em outra implementação, o decodificador de vídeo 30 pode ter a unidade de quantização inversa 310 e a unidade de processamento de transformada inversa 312 combinadas em uma única unidade.
[0193] Deve ser entendido que, no codificador 20 e no decodificador 30, um resultado do processamento de uma etapa atual pode ser adicionalmente processado e, em seguida, emitido para a próxima etapa. Por exemplo, depois da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop, uma operação adicional, tal como corte ou deslocamento, pode ser realizada no resultado do processamento da filtragem de interpolação, derivação de vetor de movimento ou filtragem loop.
[0194] Deve ser observado que as operações adicionais podem ser aplicadas aos vetores de movimento derivados do bloco atual (incluindo, mas não limitados ao modo de vetores de movimento de ponto de controle afim, vetores de movimento de sub-bloco em modos afins, planares, ATMVP, vetores de movimento temporais e assim por diante). Por exemplo, o valor de vetor de movimento é restrito a uma faixa predefinida, de acordo com seu bit de representação. Se o bit de representação do vetor de movimento for bitDepth, em seguida, a faixa é -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, onde “^” significa exponenciação. Por exemplo, se bitDepth for definido igual a 16, a faixa é -32768 ~ 32767; se bitDepth for definido igual a 18, a faixa é -131072~131071. Por exemplo, o valor do vetor de movimento derivado (por exemplo, os MVs de quatro sub-blocos 4x4 dentro de um bloco 8x8) é restrito, tal que a diferença máxima entre as partes inteiras dos quatro sub-blocos 4x4 MVs não é maior do que N pixels, tal como não é maior do que 1 pixel. Neste relatório, é fornecido dois métodos para restringir o vetor de movimento, de acordo com a bitDepth.
[0195] A FIG. 4 é um diagrama esquemático de um dispositivo de codificação de vídeo 400, de acordo com uma modalidade da revelação. O dispositivo de codificação de vídeo 400 é adequado para implementar as modalidades divulgadas como descrito neste relatório. Em uma modalidade, o dispositivo de codificação de vídeo 400 pode ser um decodificador, tal como o decodificador de vídeo 30 da FIG. 1A ou um codificador, tal como o codificador de vídeo 20 da FIG. 1A.
[0196] O dispositivo de codificação de vídeo 400 compreende portas de ingresso 410 (ou portas de entradas 410) e unidades receptoras (Rx) 420 para o recebimento de dados; um processador, unidade lógica ou unidade de processamento central (CPU) 430 para processar os dados; unidades transmissoras (Tx) 440 e portas de egresso 450 (ou portas de saída 450) para transmitir os dados; e uma memória 460 para armazenar os dados. O dispositivo de codificação de vídeo 400 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 410, às unidades receptoras 420, às unidades transmissoras 440 e às portas de egresso 450 para a saída ou entrada de sinais ópticos ou elétricos.
[0197] 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 com múltiplos núcleos), FPGAs, ASICs e DSPs. O processador 430 está em comunicação com as portas de ingresso 410, unidades receptoras 420, unidades transmissoras 440, portas de egresso 450 e memória 460. O processador 430 compreende um módulo de codificação 470. O módulo de codificação 470 implementa as modalidades 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 melhora 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.
[0198] A memória 460 pode compreender um ou mais discos, unidades de fita e unidades de estado sólido e pode ser usada como um dispositivo de armazenamento de dados de fluxo excessivo, para armazenar programas quando tais programas são selecionados para execução e para armazenar instruções e dados que são lidos durante a execução do programa. A memória 460 pode ser, por exemplo, volátil e/ou não volátil e pode ser uma memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável de conteúdo ternário (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[0199] A Fig. 5 é um diagrama de bloco simplificado de um aparelho 500 que pode ser usado como como um ou tanto o dispositivo de origem 12 quanto o dispositivo de destino 14 da Fig. 1, de acordo com uma modalidade exemplar.
[0200] Um processador 502 no aparelho 500 pode ser uma unidade de processamento central. Alternativamente, o processador 502 pode ser qualquer outro tipo de dispositivo ou múltiplos dispositivos, capazes de manipular ou processar informações agora existentes ou desenvolvidas no futuro. Embora as implementações divulgadas possam ser praticadas com um único processador, como mostrado, por exemplo, o processador 502, as vantagens na velocidade e eficiência podem ser obtidas usando mais do que um processador.
[0201] Uma memória 504 no aparelho 500 pode ser um dispositivo de memória somente de leitura (ROM) ou um dispositivo de memória de acesso aleatório (RAM) em uma implementação. Qualquer outro tipo de dispositivo de armazenamento adequado pode ser usado como a memória 504. A memória 504 pode incluir código e dados 506 que são acessados pelo processador 502 usando um barramento 512. A memória 504 pode incluir adicionalmente um sistema operacional 508 e programas de aplicativo 510, os programas de aplicativo 510 incluindo pelo menos um programa que permite que o processador 502 realize os métodos descritos neste relatório. Por exemplo, os programas de aplicativo 510 podem incluir aplicativos 1 através de N, que incluem adicionalmente um aplicativo de codificação de vídeo que realiza os métodos descritos neste relatório.
[0202] O aparelho 500 também pode incluir um ou mais dispositivos de saída, tais como um display 518. O display 518 pode ser, em um exemplo, um display sensível ao toque que combina um display com um elemento sensível ao toque que é operável para detectar entradas de toque. O display 518 pode ser acoplado ao processador 502 através do barramento 512.
[0203] Embora representado neste relatório como um único barramento, o barramento 512 do aparelho 500 pode ser composto de múltiplos barramentos. Além disso, o armazenamento secundário 514 pode ser diretamente acoplado aos outros componentes do aparelho 500 ou pode ser acessado através de uma rede e pode compreender uma única unidade integrada, tal como um cartão de memória ou múltiplas unidades, tais como múltiplos cartões de memória. O aparelho 500 pode, assim, ser implementado em uma ampla variedade de configurações.
[0204] Algumas técnicas que podem ser implementadas com a solução atual deste pedido são introduzidas, a seguir: Lista de candidatos de Fusão
[0205] O processo de construção da lista de candidatos de movimento de fusão é introduzido pelo padrão ITU-T H.265. Em outra modalidade, a lista de candidatos de movimento de fusão é usada pela predição de fusão estendida da Codificação de Vídeo Versátil (VVC).
[0206] A operação de fusão de bloco é um modo especial (também chamado de “Modo de fusão”) para a codificação de dados de movimento. A operação de fusão de bloco permite que um bloco atual use as mesmas informações de movimento de um bloco vizinho. As informações de movimento contêm dados de movimento e os dados de movimento incluem as informações se uma ou duas listas de imagens de referência são usadas, bem como um índice de referência e um vetor de movimento para cada lista de imagem de referência. A operação de fusão de bloco é especialmente útil se dois blocos vizinhos corresponderem a um mesmo objeto não deformável no quadro de imagem. Neste caso, os dois blocos podem ser preditos usando os mesmos vetores de movimento e a mesma imagem de referência, consequentemente, todas as informações de movimento são idênticas para ambos os blocos.
[0207] Em uma implementação, depois de verificar se um bloco vizinho está disponível e contém informações de movimento, algumas verificações de redundância adicionais são realizadas antes de tomar todos os dados de movimento do bloco vizinho como um candidato de informações de movimento.
[0208] Em uma implementação, a lista de candidatos de fusão é construída incluindo os seguintes cinco tipos de candidatos em ordem: 1) MVP espacial de Cus vizinhas espaciais 2) MVP temporal de Cus colocalizadas 3) MVP com base em histórico de uma tabela FIFO 4) MVP média pareada 5) MVs zero.
[0209] O tamanho da lista de fusão é sinalizado no cabeçalho de fatia e o tamanho permitido máximo da lista de fusão é 6, por exemplo. Para cada código de CU no modo de fusão, um índice do melhor candidato de fusão é codificado.
[0210] O processo de geração de cada categoria dos candidatos de fusão é fornecido: Derivação de Candidato Espacial
[0211] Em uma implementação, um máximo de quatro candidatos de fusão são selecionados entre os candidatos localizados nas posições representadas na Fig. 6. A ordem de derivação é B1, A1, B0, A0 e B2. A posição B2 é considerada apenas quando qualquer CU de posição A0, B0, B1, A1 não está disponível (por exemplo, pelo fato de que pertence a outra fatia ou tile) ou é codificada de modo intra. Depois do candidato na posição B1 ser adicionado, a adição dos candidatos remanescentes está sujeita a uma verificação de redundância que garante que os candidatos com as mesmas informações de movimento sejam excluídos da lista, de modo que a eficiência da codificação seja melhorada. Para reduzir a complexidade computacional, nem todos os pares candidatos possíveis são considerados na verificação de redundância mencionada. Em vez disso, apenas os pares acoplados a uma seta na Fig. 7 são considerados e um candidato é apenas adicionado à lista se o candidato correspondente usado para a verificação de redundância não tiver as mesmas informações de movimento.
[0212] Durante as implementações, a ordem, a posição e o número de vizinhos espaciais que são considerados como mutáveis, o exemplo acima não pode ser considerado como restrição.
Derivação de Candidato Temporal
[0213] Em uma implementação, apenas um candidato é adicionado à lista. Particularmente, na derivação deste candidato de fusão temporal, um vetor de movimento dimensionado é derivado com base na CU colocalizada pertencente à imagem de referência colocalizada. A lista de imagem de referência a ser usada para a derivação da CU colocalizada é explicitamente sinalizada no cabeçalho de fatia. O vetor de movimento dimensionado para o candidato de fusão temporal é obtido como ilustrado pela linha pontilhada na Fig. 8, que é dimensionado a partir do vetor de movimento da CU colocalizada usando as distâncias POC, tb e td, onde tb é definido para ser a diferença POC entre a imagem de referência da imagem atual e a imagem atual e td é definido para ser a diferença POC entre a imagem de referência da imagem colocalizada e a imagem colocalizada. O índice de imagem de referência do candidato de fusão temporal é definido como igual a zero.
[0214] A posição para o candidato temporal é selecionada entre os candidatos C0 e C1, como representado na Fig. 9. Se CU na posição C0 não estiver disponível, for codificada de modo intra ou estiver for a da linha atual das CTUs, a posição C1 é usada. De outro modo, a posição C0 é usada na derivação do candidato de fusão temporal. Derivação de Candidato de Fusão com base em Histórico
[0215] Os candidatos de fusão MVP com base em histórico (HMVP) são adicionados à lista de fusão depois da MVP e TMVP espaciais. Em uma implementação, as informações de movimento de um bloco previamente codificado são armazenadas em uma tabela e usadas como MVP para a CU atual. A tabela com múltiplos candidatos HMVP é mantida durante o processo de codificação/decodificação. A tabela é redefinida (esvaziada) quando uma nova linha de CTU é encontrada. Sempre que houver uma CU codificada de modo inter não sub-bloco, as informações de movimento associadas são adicionadas à última entrada da tabela como um novo candidato HMVP.
[0216] O tamanho da tabela de HMVP S é definido como 5, o que indica que até 5 candidatos MVP com base em histórico (HMVP) podem ser adicionados à tabela, por exemplo. Ao inserir um novo candidato de movimento à tabela, uma regra restrita primeiro a entrar, primeiro a sair (FIFO) é utilizada em que a verificação de redundância é aplica primeiro para descobrir se existe uma HMVP idêntica na tabela. Se encontrado, a HMVP idêntica é removida da tabela e todos os candidatos HMVP posteriormente são movidos para frente.
[0217] Os candidatos HMVP podem ser usados no processo de construção da lista de candidatos de fusão. Os vários candidatos HMVP na tabela são verificados em ordem e inseridos na lista de candidatos depois do candidato TMVP. A verificação de redundância é aplicada nos candidatos HMVP para o candidato de fusão espacial ou temporal.
[0218] Para reduzir o número de operações de verificação de redundância, diferentes simplificações podem ser introduzidas. Em geral, uma vez que o número total de candidatos de fusão disponíveis atinge o máximo permitido de candidatos de fusão menos 1, o processo de construção da lista de candidatos de fusão da HMVP é concluído. Derivação de candidato de fusão média pareada
[0219] Os candidatos de média pareada são gerados calculando a média de pares predefinida de candidatos na lista de candidatos de fusão existente e, o par predefinido é definido como (0, 1), por exemplo, onde os números denotam os índices de fusão para a lista de candidatos de fusão. Os vetores de movimento médios são calculados separadamente para cada lista de referência. Se ambos vetores de movimento estiverem disponíveis em uma lista, estes dois vetores de movimento terão a média calculada mesmo quando apontarem para diferentes imagens de referência; se apenas um vetor de movimento estiver disponível, usar diretamente; se nenhum vetor de movimento estiver disponível, manter esta lista inválida.
[0220] Uma lista de candidatos de informações de movimento é emitida durante um processo de construção de lista de candidatos de fusão. O termo “informações de movimento” refere-se às informações coletadas que são necessárias para realizar o processo de predição inter. As informações de movimento usualmente referem-se às seguintes informações: 1) Se o bloco aplicar a uni-predição ou bipredição (direção de predição). 2) Vetor de movimento (2 vetores de movimento se o bloco aplicar a bipredição) 3) O índice de imagem de referência que é usado na predição. (2 índices se o bloco aplicar a bipredição, cada índice corresponde a uma lista de imagem de referência, a primeira lista de imagem de referência (L0) ou a segunda lista de imagem de referência (L1)).
[0221] Em alguma implementação viável, as informações de movimento também podem se referir ao índice de filtro de interpolação comutável, que é usado para indicar um filtro de interpolação específico para a compensação de movimento de uma unidade de predição inter.
[0222] No presente pedido, as informações de movimento podem ser um ou mais itens acima ou quaisquer outras informações que são necessárias para realizar o processo de predição inter, de acordo com as diferentes modalidades.
[0223] O índice de imagem de referência é usado para indicar a entrada na lista de imagem de referência que é usada no processo de predição de um bloco de codificação. Por exemplo, o primeiro vetor de movimento pode apontar para uma primeira imagem em L0 e o segundo vetor de movimento pode apontar para a primeira imagem em L1. Duas listas de imagens de referência podem ser mantidas e a imagem apontada pelo primeiro vetor de movimento é selecionada a partir de L0 e a imagem apontada pelo segundo vetor de movimento é selecionada a partir de L1.
[0224] Cada uma das listas de imagens de referência L0 e L1 pode incluir uma ou mais imagens de referência, cada uma das quais é identificada com uma contagem de ordem imagem (POC). A associação com cada índice de referência e o valor POC pode ser sinalizada no fluxo de bits. Como um exemplo, as listas de imagens de referência L0 e L1 podem incluir as seguintes imagens de referência: Lista de imagem Índice de POC de referência referência L0 0 12 L0 1 13 L1 0 13 L1 1 14
[0225] No exemplo acima, a primeira entrada (indicada pelo índice de referência 0) na lista de imagem de referência L1 é a imagem de referência com o valor POC 13.
[0226] POC é uma variável que associada com cada imagem, de maneira única, identifica a imagem associada entre todas as imagens na Sequência de Vídeos Codificada (CVS) e, quando a imagem associada deve ser emitida a partir do buffer de imagem decodificada, indica a posição da imagem associada na ordem de saída em relação às posições de ordem de saída das outras imagens na mesma CVS que deve ser emitida a partir do buffer de imagem decodificada. Modo de Predição Triangular
[0227] Quando o modo de predição triangular (TPM) é usado, uma CU é dividida uniformemente em duas partições em forma de triângulo, usando a divisão diagonal ou a divisão antidiagonal, como mostrado na Fig. 10A ou Fig. 10B. É observado que a Fig. 10A ou a Fig. 10B é um exemplo. As posições de PU1 e PU2 não são limitadas no presente pedido. Cada partição triangular na CU é predita de modo inter usando seu próprio movimento; apenas uni-predição é permitida para cada partição, isto é, cada partição tem um vetor de movimento e um índice de referência. A restrição de movimento de uni-predição é aplicada para garantir que mesmo como a bipredição convencional, apenas duas predições compensadas de movimento são necessárias para cada CU. O movimento de uni-predição para cada partição é derivado diretamente da lista de candidatos de fusão construída para a predição de fusão estendida descrita acima.
[0228] Se o modo de partição triangular for usado para uma CU atual, em seguida, um sinalizador indicando a direção da partição triangular (diagonal ou antidiagonal) e dois índices de fusão (um para cada partição) é adicionalmente sinalizado. Depois de predizer cada uma das partições triangulares, os valores de amostra ao longo da extremidade diagonal ou antidiagonal são ajustados usando um processamento de mistura com pesos adaptativos. Este é o sinal de predição para toda a CU e o processo de transformada e de quantização será aplicado à toda a CU como em outros modos de predição. Finalmente, o campo de movimento de uma CU predita usando o modo de partição triangular é armazenado em unidades 4x4.
[0229] TPM é um caso especial de particionamento de sub-bloco, onde um bloco é dividido em dois blocos. No exemplo acima, as direções de divisão de bloco são ilustradas (partições de 45 graus e 135 graus). Entretanto, é observado que outros ângulos de partição e proporções de partição também são possíveis, como exemplificado na Fig. 11. Como um exemplo, os sub-blocos podem ser retangulares (por exemplo, as figuras do meio e da direita da Fig. 11) ou não retangulares (trapezoidal, por exemplo, a figura da esquerda da Fig. 11), dependendo do ângulo de partição. Em alguns exemplos, um bloco atual consiste em duas unidades de predição e as duas unidades de predição são divididas por uma linha de divisão virtual. Neste caso, é chamado de que o bloco atual é predito por um modo de predição geométrico. E para um exemplo, a linha de divisão virtual pode ser uma linha reta, que é um limite entre o primeiro sub- bloco e o segundo sub-bloco.
[0230] Mais especificamente, o procedimento de predição usando o TPM, compreende: Construção da lista de candidatos de uni-predição
[0231] Dado um índice de candidato de fusão, o vetor de movimento de uni-predição é derivado da lista de candidatos de fusão construída para a predição de fusão estendida, como exemplificado na Fig. 12. Para um candidato na lista, seu vetor de movimento LX com X igual à paridade do valor do índice de candidato de fusão, é usado como o vetor de movimento de uni-predição para o modo de partição triangular. Estes vetores de movimento são marcados com “x” na Fig. 12. No caso de um vetor de movimento LX correspondente não existir, o vetor de movimento L(1-X) do mesmo candidato na lista de candidatos de predição de fusão estendida é usado como o vetor de movimento de uni-predição para o modo de partição triangular.
[0232] É observado que em uma implementação viável, o vetor de movimento de uni-predição pode ser derivado da lista de candidatos de fusão, que é usada para o modo de fusão regular (Modo de Fusão), diretamente, sem a construção explícita de uma lista de candidatos de uni-predição especial separada. Mistura ao longo da extremidade de partição triangular
[0233] Depois de predizer cada partição triangular usando seu próprio movimento, a mistura é aplicada aos dois sinais de predição para derivar amostras em torno da extremidade diagonal ou antidiagonal. Os seguintes pesos são usados no processo de mistura:
[0234] {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} para luma e {6/8, 4/8, 2/8} para croma, como mostrado na Fig. 13.
[0235] Comparando ao modo de predição regular, as informações de movimento dos diferentes sub-blocos precisam ser sinalizadas para um bloco. Consequentemente, a sobrecarga das informações laterais, que é usada para representar as informações de movimento, no modo de predição de sub-bloco é maior. Para melhorar a eficiência da codificação nas informações laterais para o modo de predição de sub-bloco, diferentes modalidades são introduzidas no presente pedido. Modalidade 1:
[0236] Se uma predição de sub-bloco for determinada para se aplicar a um bloco:
1. Um primeiro índice inicial é incluído no fluxo de bits (no lado do codificador) que pode ter um valor máximo de M (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento).
2. Um segundo índice inicial é incluído no fluxo de bits (no lado do codificador) que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
3. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
4. A primeira parte de sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
5. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice atualizado.
[0237] Em uma implementação viável, o primeiro índice inicial e o segundo índice inicial podem ser incluídos no fluxo de bits pelo codificador e podem ser analisados pelo decodificador.
[0238] Em uma implementação viável, a operação de incrementar o segundo índice inicial em m é realizada tanto no lado do codificador quanto no lado do decodificador, esta operação visa manter consistência entre o lado do codificador e o lado do decodificador.
[0239] Em uma implementação viável, o primeiro índice inicial e o segundo índice atualizado são usados para selecionar entradas em uma lista de candidatos de informações de movimento (com base no primeiro índice inicial e no segundo índice atualizado como entradas, as informações correspondentes de movimento candidatos podem ser selecionadas) e os candidatos de informações de movimento selecionados são usadas para a primeira parte do sub-bloco (por exemplo, PU1 na Fig. 10A ou Fig. 10B) e a segunda parte do sub- bloco (por exemplo, PU2 na Fig. 10A ou Fig. 10B) de um bloco para realizar a predição.
[0240] Em uma implementação viável, a lista de candidatos de informações de movimento pode ser composta apenas de candidatos de informações de movimento de uni-predição. É observado que a lista de candidatos de fusão (tal como a lista de candidatos de fusão de ITU-T H.265) pode ser composta de candidatos de informações de movimento de uni-predição e bipredição. Portanto, a lista de candidatos de informações de movimento usada na modalidade pode ser diferente da lista de candidatos de fusão de ITU-T H.265.
[0241] A lista de candidatos de informações de movimento pode não ser idêntica à lista de candidatos de fusão, visto que a lista de candidatos de fusão pode incluir candidatos de bipredição, que são proibidos de serem usados quando um bloco é determinado para aplicar a predição de sub-bloco (por exemplo, triangular). Neste caso, cada sub-bloco deve aplicar informações de movimento de uni-predição, consequentemente, o primeiro índice inicial e o segundo índice atualizado apontam para as entradas em uma lista de candidatos de informações de movimento que apenas incluem candidatos de uni-predição. A lista de candidatos de informações de movimento pode ser construída por meio do uso dos mesmos blocos vizinhos espaciais e temporais que são usados na construção da lista de candidatos de fusão. Em outro exemplo, a lista de candidatos de informações de movimento pode ser construída com base na lista de candidatos de fusão convertendo os candidatos de bipredição na lista de candidatos de fusão em candidatos de uni-predição.
[0242] É observado que o primeiro índice inicial e o segundo índice inicial não precisam seguir uma ordem particular na estrutura de fluxo de bits.
[0243] É observado que as operações de comparação entre o primeiro índice inicial e o segundo índice inicial são realizadas tanto no codificador quanto no decodificador. Para o lado do codificador, os indicadores (por exemplo, o primeiro índice inicial e o segundo índice inicial) são incluídos no fluxo de bits. Para o lado do decodificador, os indicadores (por exemplo, o primeiro índice inicial e o segundo índice inicial) são analisados a partir do fluxo de bits.
[0244] O valor do segundo índice inicial é incrementado em um número predefinido (por exemplo, um) se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial. Em geral, uma mesma lista de candidatos de informações de movimento (composta de candidatos de informações de movimento) é usada e se os dois índices apontarem para as mesmas informações de movimento na lista de candidatos de informações de movimento, isto corresponderia a ter uma única informação de movimento para todo o bloco. Portanto, o segundo índice inicial é incrementado em um para evitar a obtenção do mesmo índice. Se o segundo índice inicial não for incrementado, o primeiro e o segundo índice podem apontar para o mesmo candidato de movimento na lista de candidatos de informações de movimento (visto que a mesma lista é usada para selecionar as informações de movimento de ambas as partes do sub-bloco). Neste caso, cada parte do sub-bloco aplicaria as mesmas informações de movimento para a predição, o que significa que não há ponto de dividir um bloco em dois sub-blocos. A representação redundante incrementando o segundo índice inicial é evitada se o valor do segundo índice inicial for o mesmo ou maior do que o primeiro índice inicial. Consequentemente, é observado que a lista de candidatos de informações de movimento inclui pelo menos dois conjuntos de informações de movimento. Como um resultado de eliminação da representação de informações de movimento redundantes dos sub-blocos por meio da invenção, a eficiência de compressão é melhorada.
[0245] É observado que o segundo índice inicial pode ser incrementado em um número predefinido (por exemplo, um, dois, três e assim por diante) mesmo se o resultado da operação de incremento não exceder a quantidade de candidatos na lista de candidatos de informações de movimento.
[0246] Em uma implementação específica da primeira modalidade, assumindo uma lista de candidatos de informações de movimento inclui candidato de informações de movimentos com 6 entradas. Além disso,
assumindo que o primeiro candidato de movimento na lista de candidatos de informações de movimento é aplicado a primeira parte do sub-bloco do bloco para a predição e o quinto candidato de movimento na lista de candidatos de informações de movimento é aplicado a segunda parte do sub-bloco do bloco para a predição.
[0247] No lado do codificador:
1. Um valor de 0 é incluído (ou sinalizado) no fluxo de bits para indicar o valor do primeiro índice inicial. (O valor de índice 0 corresponde a primeira entrada na lista de candidatos de informações de movimento, o valor 1 corresponde a segunda entrada e assim por diante).
2. Um valor de 3 é incluído (ou sinalizado) no fluxo de bits para indicar o valor do segundo índice inicial.
3. O valor do segundo índice atualizado é calculado incrementando o valor do segundo índice inicial em, por exemplo, um, consequentemente o valor 4 é obtido.
4. O primeiro índice inicial é determinado para apontar para o primeiro candidato de movimento em uma lista de candidatos de informações de movimento. É aplicado para prever a primeira parte do sub-bloco do bloco.
5. O segundo índice atualizado é determinado para apontar para o quinto candidato de movimento na lista de candidatos de informações de movimento. É aplicado para prever a segunda parte do sub-bloco do bloco.
[0248] No lado do decodificador:
1. Um valor de 0 é analisado a partir do fluxo de bits para indicar o valor do primeiro índice inicial.
2. Um valor de 3 é analisado a partir do fluxo de bits para indicar o valor do segundo índice inicial.
3. O valor do segundo índice atualizado é calculado incrementando seu valor em, por exemplo, um (visto que 3 é maior do que 0), consequentemente, o valor 4 é obtido.
4. O primeiro índice inicial é determinado para apontar para o primeiro candidato de movimento na lista de candidatos de informações de movimento. É aplicado para prever a primeira parte do sub-bloco do bloco.
5. O segundo índice atualizado é determinado para apontar para o candidato de movimento na lista de candidatos de informações de movimento. É aplicado para prever a segunda parte do sub-bloco do bloco.
[0249] A partir desta implementação, no lado do codificador, o segundo índice inicial também é atualizado incrementando em um, esta operação visa manter consistência com a operação similar no lado do decodificador.
[0250] É compreensível que o número de incremento pode ser um número predefinido, por exemplo, 1, 2, 3 e assim por diante, mesmo se o resultado da operação de incremento não exceda a quantidade de candidatos na lista de candidatos de informações de movimento.
[0251] Em outra implementação específica da primeira modalidade, assumindo a lista de candidatos de informações de movimento, compreende 3 entradas que são, a seguir: (1) Primeiro candidato de informações de movimento (1o candidato) (2) Segundo candidato de informações de movimento (2o candidato) (3) Terceiro candidato de informações de movimento (3o candidato)
[0252] Os valores do primeiro e do segundo índices são, a seguir: Valor do índice Y Valor do índice Z que é Informações de que está incluído usado para selecionar a movimento aplicadas (analisado) no fluxo entrada na lista de pela parte do sub-bloco X de bits candidatos de informações de movimento Y= Y= Z= Z = Segundo X= X= Primeiro Segundo Primeiro índice Primeira Segunda índice índice índice parte do parte do sub-bloco sub-bloco 0 0 0 1 1o 2o (incrementado) candidato candidato 0 1 0 2(incrementado) 1o 3o candidato candidato 1 1 1 2(incrementado) 2o 3o candidato candidato 1 0 1 0 2o 1o candidato candidato
2 0 2 0 3o 1o candidato candidato 2 1 2 1 3o 2o candidato candidato
[0253] A partir da tabela acima, o valor máximo para o primeiro índice é 3 e o valor máximo para o segundo índice é 2. A partir da tabela, se o segundo índice inicial for maior do que o primeiro índice inicial, o segundo índice inicial ainda é incrementado em 1. Isto é para manter uma operação unificada (por exemplo, incrementando em um) para os cenários quando o segundo índice inicial é maior ou igual ao primeiro índice inicial. Pegar a primeira à terceira linhas na tabela acima, por exemplo, para a primeira e terceira linhas, o primeiro índice inicial e o segundo índice inicial são iguais, para torná-los diferentes, o segundo índice inicial é incrementado em 1. Para a segunda linha, o segundo índice inicial é maior do que o primeiro índice inicial, se nenhuma operação de incremento for realizada, isto será uma exceção e aumentará a complexidade. Para simplificar, ao determinar o segundo índice inicial é maior do que o primeiro índice inicial, o segundo índice inicial ainda é incrementado em 1. Modalidade 2:
[0254] Se uma predição de sub-bloco for determinada para se aplicar a um bloco:
1. Um indicador que indica a direção de divisão é incluído no fluxo de bits.
2. Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento).
3. Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
4. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
5. A primeira parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
6. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice atualizado.
[0255] É observado que a indicação de direção de divisão, o primeiro índice inicial e o segundo índice inicial não precisam seguir uma ordem particular na estrutura de fluxo de bits.
[0256] Em uma implementação viável, pode haver duas direções de divisão que podem ser: (1) Divisão do canto superior esquerdo ao canto inferior direito do bloco (ver a figura esquerda na Fig. 10A ou Fig. 10B) (2) Divisão do canto superior direito ao canto inferior esquerdo do bloco (ver a figura direita na Fig. 10A ou Fig. 10B)
[0257] Em uma implementação viável, pode haver quatro direções de divisão que podem ser (1) Divisão do canto superior esquerdo ao canto inferior direito do bloco (2) Divisão do canto superior direito ao canto inferior esquerdo do bloco (3) Divisão do ponto central superior ao ponto central inferior do bloco (4) Divisão do ponto central direito ao ponto central esquerdo do bloco Modalidade 3:
[0258] Se uma predição de sub-bloco for determinada para se aplicar a um bloco:
1. Um indicador que indica a direção de divisão é incluído no fluxo de bits.
2. Se o indicador indicar uma direção de divisão específica (por exemplo, divisão do canto superior esquerdo ao canto inferior direito do bloco, ver a figura esquerda na Fig. 10A ou Fig. 10B)
2.1 Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento).
2.2 Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
2.3. Se valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
3. De outro modo (Se o indicador indicar uma direção de divisão diferente, por exemplo, Divisão do canto superior direito ao canto inferior esquerdo do bloco (ver a figura direita na Fig. 10A ou Fig. 10B)
3.1 Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
3.2 Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento).
3.3. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
4. A primeira parte do sub-bloco do bloco é predita pela aplicação do candidato de informações de movimento que são determinadas com base no primeiro índice.
5. A segunda parte do sub-bloco do bloco é predita pela aplicação do candidato de informações de movimento que são determinadas com base no segundo índice.
[0259] Em uma implementação viável, pode haver duas direções de divisão que podem ser (1) Divisão do canto superior esquerdo ao canto inferior direito do bloco (2) Divisão do canto superior direito ao canto inferior esquerdo do bloco
[0260] Em uma implementação viável, pode haver quatro direções de divisão que podem ser (1) Divisão do canto superior esquerdo ao canto inferior direito do bloco
(2) Divisão do canto superior direito ao canto inferior esquerdo do bloco (3) Divisão do ponto central superior ao ponto central inferior do bloco (4) Divisão do ponto central direito ao ponto central esquerdo do bloco Modalidade 4:
[0261] Se uma predição de sub-bloco for determinada para se aplicar a um bloco,
1. Um indicador que indica a direção de divisão é incluído no fluxo de bits.
2. Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento).
3. Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
4. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
5. A primeira parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
6. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice atualizado.
[0262] Onde a primeira parte do sub-bloco é atribuída à parte cujo centro geométrico está mais próximo do limite esquerdo do bloco. Tomar a Fig. 10A ou Fig. 10B como um exemplo, PU1 denota a primeira parte do sub-bloco enquanto a PU2 denota a segunda parte do sub-bloco.
[0263] Na modalidade 4, o índice correspondente à parte do sub-bloco que tem um centro geométrico mais próximo do limite esquerdo do bloco é incluído no primeiro fluxo de bits. A construção da lista de candidatos de informações de movimento tipicamente considera as informações de movimento dos blocos vizinhos na seguinte ordem: Informações de movimento do bloco esquerdo, Informações de movimento do bloco superior, Informações de movimento do bloco superior direito…A ordem vizinha espacial é tomada a partir de HEVC como um exemplo. Visto que as informações de movimento do vizinho esquerdo são consideradas primeiro, o índice que indica as informações de movimento do vizinho esquerdo tipicamente tem menos bits. Visto que a parte do sub-bloco que está mais próxima (no sentido geométrico) do vizinho esquerdo é codificada primeiro, e o segundo índice não pode apontar para as mesmas informações de movimento (isto é, a mesma entrada na lista de fusão), o número total de bits para representar o primeiro índice e o segundo índice é tipicamente menor. Em outra implementação viável, o índice correspondente à parte do sub- bloco que tem um centro geométrico mais próximo do limite superior do bloco é incluído primeiro no fluxo de bits. A ordem não é limitada pelo presente pedido.
[0264] Em uma modalidade específica, assumindo que a lista de candidatos de informações de movimento tem um tamanho de 3 e inclui os seguintes candidatos de informações de movimento: Informações de movimento do bloco vizinho esquerdo (primeira entrada), Informações de movimento do bloco vizinho superior (segunda entrada) e Informações de movimento do bloco colocalizado (terceira entrada, bloco vizinho temporal).
[0265] Além disso, assumindo que a direção de divisão e o primeiro sub-bloco (PU1) e o segundo sub-bloco (PU2) são determinados como a figura esquerda na Fig. 10A ou Fig. 10B. Em geral, é mais provável que a PU1 seja predita com base na primeira entrada na lista de candidatos de informações de movimento (que corresponde às informações de movimento do bloco vizinho esquerdo) e a PU2 seja predita com base na segunda entrada na lista de candidatos de informações de movimento (que corresponde às informações de movimento do bloco vizinho superior) devido à proximidade espacial.
[0266] De acordo com a invenção, o valor de 0 é incluído (analisado no decodificador) no fluxo de bits para representar o primeiro índice e, o valor de 0 é incluído (analisado no decodificador) no fluxo de bits para representar o segundo índice (que são os menores valores que um índice pode assumir) visto que o segundo índice é igual ao primeiro índice, o segundo índice é incrementado em um antes de selecionar o candidato de movimento a partir da lista de candidatos de informações de movimento. Em um caso, o primeiro e o segundo índice têm os menores valores possíveis, de acordo com a invenção, o que exigiria o menor número de bits totais para representar o primeiro índice e o segundo índice no fluxo de bits.
[0267] É observado que a indicação de direção de divisão, o primeiro índice e o segundo índice não precisam seguir uma ordem particular na estrutura de fluxo de bits.
[0268] Em uma implementação específica, o modo de predição de sub-bloco é o modo de predição triangular.
[0269] O primeiro índice (por exemplo, o primeiro índice inicial) e o segundo índice (por exemplo, o segundo índice atualizado) são usados para selecionar as informações de movimento a serem aplicadas ao primeiro sub- bloco e ao segundo sub-bloco. As informações de movimento são selecionadas a partir da mesma lista de candidatos de informações de movimento. De modo a evitar a seleção das mesmas informações de movimento para ambas as partes do sub-bloco (o que seria idêntico a não ter partições de sub-bloco), o segundo índice é incrementado em um número predefinido (por exemplo, um) se for maior ou igual ao primeiro índice.
[0270] As modalidades de 1 a 4 fornecem diferentes métodos eficazes de sinalização das informações de movimento para cada sub-bloco de um bloco que aplica a predição de sub-bloco. Modalidade 5:
[0271] O valor máximo do primeiro índice e segundo índice (denotados como M nas modalidades de 1 a 4) é menor ou igual ao tamanho da lista de candidatos de informações de movimento, N.
[0272] É observado que o valor máximo do primeiro e do segundo índices também descreve o número de entradas na lista de candidatos de informações de movimento. Por exemplo, se o valor máximo do primeiro índice for 6 (assumindo que a contagem inicia a partir de 1, o índice pode assumir os valores de 1, 2, 3, 4, 5 e 6), o tamanho da lista de candidatos de informações de movimento é 6.
[0273] A lista de candidatos de fusão pode ser construída, de acordo com os métodos em ITU-T H.265 e na VVC, ver os exemplos e revelações acima sobre o processo de construção da lista de fusão em HEVC e em VVC.
[0274] O valor máximo do primeiro índice e do segundo índice (determinado por M e que é equivalente ao tamanho da lista de candidatos de informações de movimento) é menor ou igual ao tamanho da lista de candidatos de fusão N. É observado que se um bloco for determinado para não aplicar um modo de predição de sub-bloco, o bloco pode ser predito com base em uma das entradas na lista de candidatos de fusão. Entretanto, se o bloco for predito usando o modo de predição de sub-bloco, as entradas da lista de candidatos de informações de movimento são usadas para prever o bloco.
[0275] Por exemplo, quando um indicador de predição analisado a partir do fluxo de bits indica que uma predição de sub-bloco não deve ser aplicada a um bloco, dois indicadores diferentes são obtidos e, estes dois indicadores diferentes indicam separadamente duas entradas diferentes em uma lista de candidatos de informações de movimento para dois sub-blocos no bloco e a predição inter é realizada para o bloco com base nos dois indicadores diferentes. Quando o indicador de predição analisado a partir do fluxo de bits indica que a predição de sub-bloco não deve ser aplicada ao bloco, um único indicador é obtido e o único indicador indica uma entrada em uma lista de candidatos de fusão (por exemplo, pode ser construído, de acordo com os métodos em ITU-T H.265 e na VVC) para o bloco; e a predição inter (por exemplo, predição de não sub-bloco) é realizada para o bloco com base no único indicador.
[0276] O valor máximo do primeiro índice é definido como igual a M, se M for menor ou igual a N, onde N é o tamanho (número de candidatos) da lista de candidatos de fusão. De outro modo (se N for menor do que M) o valor máximo do primeiro índice de fusão é definido como igual a N.
[0277] Em uma implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser um número predefinido.
[0278] Para um exemplo, o valor M (descrevendo o valor máximo do primeiro índice) pode ser 5, que é predeterminado. E o valor de N (lista de candidatos de fusão de tamanho) pode ser sinalizado no conjunto de parâmetros de sequência (SPS). Se o valor de N for sinalizado como 6, o valor máximo do primeiro índice é igual a 5 (4 se a contagem iniciar a partir de 0), visto que N é maior do que M. Em outro cenário, se N for sinalizado como 3 no SPS, em seguida, o valor máximo do primeiro índice é igual a 3 (2 se a contagem iniciar a partir de 0).
[0279] É observado que N é o tamanho da lista de candidatos de fusão, que pode ser construída, de acordo com os métodos em ITU-T H.265 e na VVC. O primeiro índice e o segundo índice que são usados nas modalidades apontam para uma lista diferente, isto é, a lista de candidatos de informações de movimento que é composta apenas de candidatos de uni-predição. A lista de candidatos de informações de movimento pode não ser idêntica à lista de candidatos de fusão, visto que a lista de candidatos de fusão podem incluir candidatos de bipredição, que são proibidos de serem usados quando um bloco é determinado para aplicar a predição de sub-bloco (ou triangular). Neste caso, cada sub-bloco deve aplicar informações de movimento de uni-predição, consequentemente, o primeiro índice e o segundo índice apontam para as entradas em uma lista de candidatos de informações de movimento que podem incluir os candidatos de uni-predição. A lista de candidatos de informações de movimento pode ser construída por meio do uso dos mesmos blocos vizinhos espaciais e temporais que são usados na construção da lista de candidatos de fusão. Alternativamente, a lista de candidatos de informações de movimento pode ser construída com base nas entradas da lista de candidatos de fusão. Em uma implementação viável, a lista de candidatos de informações de movimento pode não ser construída explicitamente, por exemplo, os candidatos de uni- predição podem ser derivados diretamente da lista de candidatos de fusão.
[0280] Para o bloco com base predição, apenas um conjunto de informações de movimento é sinalizado (na forma de índice de fusão em uma implementação). Visto que no caso de predição de sub-bloco, dois conjuntos de informações de movimento são necessários (aumentando a sobrecarga de sinalização), espera-se que os valores dos índices não sejam maiores do que o valor máximo do índice de fusão (o valor máximo do índice de fusão é equivalente ao tamanho da lista de candidatos de fusão).
[0281] Visto que, espera-se que a lista de candidatos de informações de movimento seja construída com base nos candidatos que são usados para construir a lista de candidatos de fusão ou com base nas entradas da lista de candidatos de fusão, a lista de candidatos de informações de movimento não teria um tamanho maior do que o tamanho da lista de candidatos de fusão.
[0282] Portanto, o tamanho da lista de candidatos de informações de movimento (e, consequentemente, os valores máximos do primeiro e do segundo índices) é definido como igual a ou menor do que a lista de candidatos de fusão.
[0283] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de um indicador que é incluído no fluxo de bits. Neste caso, o indicador que é usado para derivar o valor de M não pode indicar um valor de M que seja maior do que N.
[0284] Em HEVC, o tamanho da lista de candidatos de informações de movimento é N e N pode ser modificado com base em um elemento de sintaxe que é incluído no fluxo de bits. O valor de N pode ser um número inteiro positivo (tipicamente entre 2 a 5) e é sinalizado no SPS. O tamanho da lista de fusão é fixado para toda a sequência de vídeos.
[0285] O valor máximo do primeiro índice e do segundo índice não pode ser maior do que o tamanho da lista de candidatos de informações de movimento. Embora o primeiro índice e o segundo índice sejam usados para selecionar as informações de movimento de uma lista diferente (lista de candidatos de informações de movimento que não é a mesma que a lista de candidatos de fusão), a lista de candidatos de informações de movimento pode ser tipicamente construída usando os mesmos blocos vizinhos espaciais e temporais (mas aplicando regras de construção diferentes do que as da lista de candidatos de informações de movimento).
[0286] Em uma implementação particular, a lista de candidatos de informações de movimento pode ser construída convertendo os candidatos de bipredição na lista de candidatos de fusão em candidatos de uni-predição. Consequentemente, definir o valor máximo do primeiro e do segundo índice para ser menor do que o tamanho da lista de candidatos de fusão garante que uma lista de candidatos de informações de movimento que foi construída com base na lista de candidatos de fusão possa ser usada para selecionar as informações de movimento de cada sub-bloco do bloco atual. Modalidade 6:
[0287] O primeiro e segundo índices são binarizados (convertidos de representação decimal para binária) usando o código binário unário truncado e com base no valor máximo do índice. O valor máximo dos índices, são usados no processo de mapeamento do valor decimal do índice para a representação binária. A atribuição da palavra-código de valor para o código binária unário truncado (código unário truncado com o valor decimal máximo sendo 4) é determinada abaixo: Valor Representação binária Representação binária decimal alternativa 1 alternativa 2 0 0 1 1 10 01 2 110 001 3 1110 0001 4 1111 0000
[0288] Na tabela acima, cada valor decimal exige um bit a mais na representação binária comparada ao valor decimal anterior (que é um a menor em decimal), exceto para o último valor decimal que corresponde ao valor máximo do índice. Neste caso (quando o valor do índice é 4, que é o valor máximo), é representado com a mesma quantidade de bits na representação binária com o valor decimal anterior (que é 3).
[0289] Se o primeiro índice tiver um valor máximo de 4 (=M) e o segundo índice tiver um valor máximo de 3 (=M-1), as seguintes representações binárias são aplicadas: Valor Representação binária do Representação binária do decimal primeiro índice segundo índice 0 0 0 1 10 10 2 110 110 3 1110 111 4 1111 Modalidade 7:
[0290] O primeiro bin do primeiro índice é codificado usando o modo de codificação regular da Codificação Aritmética Binária Adaptativa com base em Contexto (CABAC) (usando a estimativa de probabilidade que é atualizada depois da codificação de cada ocorrência do primeiro índice), enquanto os outros bins são codificados usando o modo de bypass de CABAC (usando probabilidades iguais que não são atualizadas). O modo de codificação regular da CABAC é ilustrado pelo ramo “Codificador Aritmético Regular” da Fig. 14. O modo de bypass é ilustrado pelo ramo “Codificador Aritmético de Bypass” da Fig.
14.
[0291] Como um exemplo, o primeiro bin do segundo índice é codificado usando o modo de codificação regular de CABAC (usando a estimativa de probabilidade que é atualizada depois da codificação de cada ocorrência do segundo índice), enquanto os outros bins são codificados usando o modo de bypass de CABAC (usando probabilidades iguais que não são atualizadas). Neste caso, o primeiro índice é incluído no fluxo de bits (ou analisado pelo decodificador a partir do fluxo de bits) por CABAC, onde o primeiro bin do primeiro índice binarizado é codificado por CABAC usando um primeiro modelo de estimativa de probabilidade usando o modo de codificação do modo regular de CABAC. Os bins remanescentes do primeiro índice binarizado são codificados usando o modo de bypass de CABAC. O segundo índice é incluído no fluxo de bits (ou analisado pelo decodificador a partir do fluxo de bits) por CABAC, onde o primeiro bin do segundo índice binarizado é codificado por CABAC usando um segundo modelo de estimativa de probabilidade usando o modo de codificação do modo regular de CABAC. Os bins remanescentes do segundo índice binarizado são codificados usando o modo de bypass de CABAC.
[0292] Como outro exemplo, o primeiro bin do primeiro índice e o primeiro bin do segundo índice são codificados usando o modo de codificação regular de CABAC e o mesmo modelo de estimativa de probabilidade é usado. O modelo de estimativa de probabilidade é atualizado depois de codificar o primeiro índice e depois de codificar o segundo índice. Neste caso, o primeiro índice é incluído no fluxo de bits (ou analisado pelo decodificador a partir do fluxo de bits) por CABAC, onde o primeiro bin do primeiro índice binarizado é codificado por CABAC usando um primeiro modelo de estimativa de probabilidade usando o modo de codificação de modo regular de CABAC. Os bins remanescentes do primeiro índice binarizado são codificados usando o modo de bypass de CABAC. O segundo índice é incluído no fluxo de bits (ou analisado pelo decodificador a partir do fluxo de bits) por CABAC, onde o primeiro bin do segundo índice binarizado é codificado por CABAC usando o primeiro modelo de estimativa de probabilidade usando o modo de codificação de modo regular de CABAC. Os bins remanescentes do segundo índice binarizado são codificados usando o modo de bypass de CABAC.
[0293] O modelo de estimativa de probabilidade descreve a probabilidade de um bin tendo o valor de um “1” em vez de “0”. O modelo de estimativa de probabilidade é atualizado de modo a se adaptar às estatísticas, por exemplo, se a probabilidade de observar um “1” for 0,8 (o que significa que “0” é 0,2), em seguida, um bin que tem um valor de “1” é codificado usando menos bits reais do que “0” por CABAC.
[0294] O primeiro bin é o primeiro símbolo da representação binária, o exemplo é mostrado na tabela, a seguir: Valor Representação binária do Primeiro bin do primeiro decimal primeiro índice índice 0 0 0 1 10 1 2 110 1 3 1110 1 4 1111 1 Modalidade 8:
[0295] Se uma predição de sub-bloco for determinada a se aplicar a um bloco,
1. Um indicador que indica a direção de divisão é incluído no fluxo de bits.
2. Se o tamanho do bloco for menor ou igual a um limite especificado
2.1 Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M (M é um número inteiro positivo e M≤N, N é a quantidade de candidatos na lista de candidatos de fusão).
2.2 Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro positivo e m<M, m é um valor predefinido).
3. De outro modo (se o tamanho do bloco for maior do que um limite especificado)
3.1 Um primeiro índice é incluído no fluxo de bits que pode ter um valor máximo de P (P é um número inteiro positivo e M<P≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento).
3.2 Um segundo índice é incluído no fluxo de bits que pode ter um valor máximo de P-m (m é um número inteiro positivo e m<P, m é um valor predefinido).
4. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice inicial, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
5. A primeira parte do sub-bloco do bloco é predita pela aplicação do candidato de informações de movimento que são determinadas com base no primeiro índice inicial.
6. A segunda parte do sub-bloco do bloco é predita pela aplicação do candidato de informações de movimento que são determinadas com base no segundo índice atualizado.
[0296] Onde P e M são valores inteiros positivos e M<P≤N.
[0297] O primeiro índice inicial e o segundo índice inicial podem ser binarizados, a seguir:
[0298] Se o tamanho do bloco for menor ou igual a um limite especificado: (1) O primeiro índice é convertido a partir do decimal para a representação binária com base no valor máximo M e pela aplicação de codificação binária truncada; (2) O segundo índice é convertido a partir do decimal para a representação binária com base no valor máximo M-1 e pela aplicação da codificação binária truncada.
[0299] Se o tamanho do bloco for maior do que um limite especificado: (1) O primeiro índice é convertido a partir do decimal para a representação binária com base no valor máximo P e pela aplicação da codificação binária truncada; (2) O segundo índice é convertido a partir do decimal para a representação binária com base no valor máximo P-1 e pela aplicação da codificação binária truncada.
[0300] O limite pode ser um número inteiro positivo que é sinalizado no fluxo de bits ou pode ser um número predefinido.
[0301] De modo a determinar se um bloco é maior do que um limite, a multiplicação da largura e altura do bloco pode ser comparada ao limite (largura x altura > limite). Em outro exemplo, tanto a largura e altura podem ser comparadas a um limite e se ambos forem maiores do que o limite (largura > limite E altura > limite), o bloco pode ser considerado como sendo maior do que o limite. Em outro exemplo, se qualquer largura e altura forem maiores do que o limite (largura > limite OU altura > limite), o bloco pode ser considerado como sendo maior do que o limite.
[0302] É observado que a indicação de direção de divisão, o primeiro índice e o segundo índice não precisam seguir uma ordem particular na estrutura de fluxo de bits.
[0303] Em uma implementação viável, pode haver duas direções de divisão que podem ser (1) Divisão do canto superior esquerdo ao canto inferior direito do bloco (2) Divisão do canto superior direito ao canto inferior esquerdo do bloco
[0304] Em outra implementação viável, pode haver quatro direções de divisão que podem ser (1) Divisão do canto superior esquerdo ao canto inferior direito do bloco (2) Divisão do canto superior direito ao canto inferior esquerdo do bloco (3) Divisão do ponto central superior ao ponto central inferior do bloco (4) Divisão do ponto central direito ao ponto central esquerdo do bloco
[0305] É observado que em uma implementação viável, a indicação de direção de divisão não é incluída (ou analisada) no fluxo de bits. Modalidade 9:
[0306] Se uma predição de sub-bloco for determinada a se aplicar a um bloco,
1. Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M. (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento)
2. Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M.
3. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
4. A primeira parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
5. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice atualizado.
[0307] O valor máximo do primeiro índice inicial e do segundo índice é definido como igual a M, se M for menor ou igual a N-1, onde N é o tamanho (número de candidatos de movimento) da lista de candidatos de informações de movimento. De outro modo, o valor máximo do primeiro índice e do segundo índice é definido como igual a N-1.
[0308] É observado que N é o tamanho da lista de candidatos de fusão, que pode ser construída, de acordo com os métodos em ITU-T H.265 e na VVC. O primeiro índice e o segundo índice que são usados nas modalidades apontam para uma lista de candidatos de informações de movimento diferente que é composta apenas de candidatos de uni-predição. A lista de candidatos de informações de movimento não é idêntica à lista de candidatos de fusão, visto que a lista de candidatos de fusão pode incluir os candidatos de bipredição, que são proibidos de serem usados quando um bloco é determinado para aplicar a predição de sub-bloco (ou triangular). Neste caso, cada sub-bloco deve aplicar informações de movimento de uni-predição, consequentemente, o primeiro índice e o segundo índice apontam para as entradas em uma lista de candidatos de informações de movimento que compreendem apenas os candidatos de uni- predição. A lista de candidatos de informações de movimento pode ser construída por meio do uso dos mesmos blocos vizinhos espaciais e temporais que são usados na construção da lista de candidatos de fusão. Em outro exemplo, a lista de candidatos de informações de movimento pode ser construída com base na lista de candidatos de fusão convertendo os candidatos de bipredição na lista de candidatos de fusão em candidatos de uni-predição.
[0309] Em uma implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser um número predefinido.
[0310] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de um indicador que é incluído no fluxo de bits. Neste caso, o indicador que é usado para derivar o valor de M não pode indicar um M valor que é maior do que N-1.
[0311] Em um exemplo específico, assumir que a lista de candidatos de informações de movimento compreende 3 entradas que são o primeiro candidato de informações de movimento (1o candidato), o segundo candidato de informações de movimento (2o candidato) e o terceiro candidato de informações de movimento (3o candidato).
[0312] Os valores do primeiro e do segundo índices são mostrados como exemplos na tabela abaixo, a seguir: Valor do índice Y Valor do índice Z que é Informações de que está incluído usado para selecionar a movimento aplicadas pela (analisado) no fluxo entrada na lista de parte do sub-bloco X de bits candidatos de informações de movimento Y= Y= Z= Z = Segundo X= X= Primeiro Segundo Primeiro índice Primeira Segunda índice índice índice parte do parte do sub-bloco sub-bloco 0 0 0 1 1o 2o (incrementado) candidato candidato 0 1 0 2(incrementado) 1o 3o candidato candidato 1 1 1 2(incrementado) 2o 3o candidato candidato 1 0 1 0 2o 1o candidato candidato
[0313] É observado que o 3o candidato de informações de movimento não pode ser selecionado para ser aplicado no primeiro sub-bloco do bloco. A vantagem é que os valores máximos do primeiro índice e do segundo índice que são incluídos no fluxo de bits são os mesmos (1 no exemplo acima). Consequentemente, o mesmo esquema de binarização (codificação binária truncada com base no valor máximo de 1) pode ser aplicado para binarizar tanto o primeiro índice quanto o segundo índice.
[0314] O valor máximo do primeiro e do segundo índices é igual. Esta característica tem um benefício adicional de usar o mesmo esquema de binarização tanto para o primeiro quanto para o segundo índices de fusão quando a codificação binária truncada é usada.
[0315] Modalidade 10:
[0316] Se uma predição de sub-bloco for determinada a se aplicar a um bloco,
1. Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M. ((M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento)
2. Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M.
3. A primeira parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
4. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice inicial.
[0317] Em uma implementação viável, o primeiro índice e o segundo índice são usados para selecionar as entradas em uma lista de candidatos de informações de movimento (a mesma lista é usada para selecionar as informações de movimento pelo primeiro índice e segundo índice) e os candidatos de informações de movimento selecionados são aplicados ao primeiro sub-bloco e ao segundo sub-bloco de um bloco para prever o bloco. Em uma implementação viável, a lista de candidatos de informações de movimento pode ser composta apenas pelos candidatos de informações de movimento de uni-predição. É observado que a lista de candidatos de fusão (tal como lista de candidatos de fusão de ITU-T H.265) pode ser composta de candidatos de informações de movimento de uni-predição e bipredição. Portanto, a lista de candidatos de informações de movimento usada na modalidade pode ser diferente da lista de candidatos de fusão de ITU-T H.265.
[0318] A lista de candidatos de informações de movimento não é idêntica à lista de candidatos de fusão, visto que a lista de candidatos de fusão pode incluir os candidatos de bipredição, que são proibidos de serem usados quando um bloco é determinado para aplicar a predição de sub-bloco (ou triangular). Neste caso, cada sub-bloco deve aplicar as informações de movimento de unipredição, consequentemente, o primeiro índice e o segundo índice apontam para as entradas em uma lista de candidatos de informações de movimento que incluem apenas os candidatos de uni-predição. A lista de candidatos de informações de movimento pode ser construída por meio do uso dos mesmos blocos vizinhos espaciais e temporais que são usados na construção da lista de candidatos de fusão. Em outro exemplo, a lista de candidatos de informações de movimento pode ser construída com base na lista de candidatos de fusão convertendo os candidatos de bipredição na lista de candidatos de fusão em candidatos de uni-predição.
[0319] É observado que o primeiro e o segundo índice não precisam seguir uma ordem particular na estrutura de fluxo de bits.
[0320] É observado que as operações idênticas são realizadas no codificador e decodificador exceto para a inclusão do indicador (índice) no fluxo de bits. No decodificador, o indicador é analisado a partir do fluxo de bits, enquanto o indicador é incluído no fluxo de bits pelo codificador.
[0321] Em um exemplo específico, assumir uma lista de candidatos de informações de movimento que inclui os candidatos de informações de movimento com 6 entradas. Além disso, assumir que o primeiro candidato de movimento na lista de candidatos de informações de movimento é aplicado ao primeiro sub-bloco para a predição e o quinto candidato de movimento na lista de candidatos de informações de movimento é aplicado ao segundo sub-bloco para a predição.
[0322] No lado do codificador:
1. Um valor de 0 é incluído no fluxo de bits para indicar o valor do primeiro índice. (O valor de índice 0 corresponde a primeira entrada na lista de candidatos de informações de movimento, o valor 1 corresponde a segunda entrada e assim por diante).
2. Um valor de 3 é incluído no fluxo de bits para indicar o valor do segundo índice.
3. O primeiro índice é determinado para apontar para o primeiro candidato de movimento em uma lista de candidatos de informações de movimento. É aplicado para prever a primeira parte do sub-bloco.
4. O segundo índice é determinado para apontar para o quarto candidato de movimento na lista de candidatos de informações de movimento. É aplicado para prever a segunda parte do sub-bloco.
[0323] No lado do decodificador:
1. Um valor de 0 é analisado a partir do fluxo de bits para indicar o valor do primeiro índice.
2. Um valor de 3 analisado a partir do fluxo de bits para indicar o valor do segundo índice.
3. O primeiro índice é determinado para apontar para o primeiro candidato de movimento na lista de candidatos de informações de movimento. É aplicado para prever a primeira parte do sub-bloco.
4. O segundo índice é determinado para apontar para o quarto candidato de movimento na lista de candidatos de informações de movimento. É aplicado para prever a segunda parte do sub-bloco.
[0324] Em outro exemplo específico, assumir a lista de candidatos de informações de movimento compreende 3 entradas que são o primeiro candidato de informações de movimento (1o candidato), segundo candidato de informações de movimento (2o candidato) e terceiro candidato de informações de movimento (3o candidato).
[0325] Os valores do primeiro e do segundo índice são, a seguir: Valor do índice Y Valor do índice Z que Informações de movimento que está incluído é usado para aplicadas pela parte do sub- (analisado) no fluxo selecionar a entrada bloco X de bits na lista de candidatos de informações de movimento Y= Y= Z= Z= X = Primeira X = Segunda Primeiro Segundo Primeiro Segundo parte do sub- parte do sub- índice índice índice índice bloco bloco 0 1 0 1 1o candidate 2o candidate 0 2 0 2 1o candidato 3o candidato
1 2 1 2 2o candidato 3o candidato 1 0 1 0 2o candidato 1o candidato 2 0 2 0 3o candidato 1o candidato 2 1 2 1 3o candidato 2o candidato 0 0 0 0 1o candidato 1o candidato 1 1 1 1 2o candidato 2o candidato 2 2 2 2 3o candidato 3o candidato Modalidade 11:
[0326] Se uma predição de sub-bloco for determinada a se aplicar a um bloco,
1. Um indicador que indica a direção de divisão é incluído no fluxo de bits.
2. Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M. (M é um número inteiro e M≤N, N é a quantidade de candidatos na lista de candidatos de informações de movimento)
3. Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
4. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
5. A primeira parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
6. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice atualizado.
[0327] É observado que N é o tamanho da lista de candidatos de fusão, que pode ser construída, de acordo com os métodos em ITU-T H.265 e na VVC. O primeiro índice e o segundo índice que são usados nas modalidades, apontam para uma lista de candidatos de informações de movimento diferente que é composta apenas de candidatos de uni-predição. A lista de candidatos de informações de movimento não é idêntica à lista de candidatos de fusão, visto que a lista de candidatos de fusão pode incluir os candidatos de bipredição, que são proibidos de serem usados quando um bloco é determinado para aplicar a predição de sub-bloco (ou triangular). Neste caso, cada sub-bloco deve aplicar informações de movimento de uni-predição, consequentemente, o primeiro índice e o segundo índice apontam para as entradas em uma lista de candidatos de informações de movimento que compreendem apenas os candidatos de uni- predição. A lista de candidatos de informações de movimento pode ser construída por meio do uso dos mesmos blocos vizinhos espaciais e temporais que são usados na construção da lista de candidatos de fusão. Em outro exemplo, a lista de candidatos de informações de movimento pode ser construída com base na lista de candidatos de fusão convertendo os candidatos de bipredição na lista de candidatos de fusão em candidatos de uni-predição.
[0328] O valor máximo do primeiro índice inicial é definido como igual a M.
[0329] Em uma implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser um número predefinido.
[0330] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de um indicador que é incluído no fluxo de bits. Neste caso, o indicador que é usado para derivar o valor de M não pode indicar um valor de M que é maior do que N-1.
[0331] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de N. Por exemplo, M pode ser derivado de N, a seguir:
[0332] Se N for igual a 1, M é igual a zero (a predição de sub-bloco não é usada e os elementos de sintaxe correspondentes à predição sub-bloco não são sinalizados);
[0333] Se N ≥ 2, M é igual a N.
[0334] Por exemplo, M pode ser derivado de N, de acordo com a seguinte tabela:
N M 1 0 (a predição de sub-bloco não é usada)
[0335] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de N. Por exemplo, M pode ser derivado de N, a seguir:
[0336] Se N for igual a 1, M é igual a zero (a predição de sub-bloco não é usada e os elementos de sintaxe correspondentes à predição de sub-bloco não são sinalizados);
[0337] Se N ≥ 2 e N≤K, M é igual a N, onde K é o valor inteiro predefinido (por exemplo, K pode ser igual a 5);
[0338] Se N > K, M é igual a K.
[0339] Por exemplo, M pode ser derivado de N, de acordo com a seguinte tabela (K é igual a 5):
N M 1 0 (a predição de sub-bloco não é usada) 2 2 3 3 4 4 5 5 6 5 Modalidade 12:
[0340] Se uma predição de sub-bloco for determinada a se aplicar a um bloco,
1. Um indicador que indica a direção de divisão é incluído no fluxo de bits.
2. Um primeiro índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M. (M é um número inteiro)
3. Um segundo índice inicial é incluído no fluxo de bits que pode ter um valor máximo de M-m (m é um número inteiro e m<M, m é um valor predefinido).
4. Se o valor do segundo índice inicial for maior ou igual ao valor do primeiro índice, o valor do segundo índice inicial é incrementado em um número predefinido para obter um segundo índice atualizado (por exemplo, o número predefinido pode ser um).
5. A primeira parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no primeiro índice inicial.
6. A segunda parte do sub-bloco do bloco é predita pela aplicação das informações de candidato de movimento que são determinadas com base no segundo índice atualizado.
[0341] O primeiro índice e o segundo índice que são usados nas modalidades apontam para uma lista de candidatos de informações de movimento diferente que é composta apenas de candidatos de uni-predição. A lista de candidatos de informações de movimento não é idêntica à lista de candidatos de fusão, visto que a lista de candidatos de fusão pode incluir candidatos de bipredição, que são proibidos de serem usados quando um bloco é determinado para aplicar a predição de sub-bloco (ou triangular). Neste caso, cada sub-bloco deve aplicar as informações de movimento de uni-predição, consequentemente, o primeiro índice e o segundo índice apontam para as entradas em uma lista de candidatos de informações de movimento que compreendem apenas os candidatos de uni-predição. A lista de candidatos de informações de movimento pode ser construída por meio do uso dos mesmos blocos vizinhos espaciais e temporais que são usados na construção da lista de candidatos de fusão. Em outro exemplo, a lista de candidatos de informações de movimento pode ser construída com base na lista de candidatos de fusão convertendo os candidatos de bipredição na lista de candidatos de fusão em candidatos de uni-predição.
[0342] O valor máximo do primeiro índice inicial é M.
[0343] Em uma implementação viável, M pode ser derivado de um indicador que é incluído no fluxo de bits.
[0344] M pode depender de valor inteiro de N que é o tamanho da lista de candidatos de fusão, que pode ser construída, de acordo com os métodos em
ITU-T H.265 e na VVC.
[0345] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser um número predefinido.
[0346] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de N. Por exemplo, M pode ser derivado de N, a seguir:
[0347] Se N for igual a 1, M é igual a 2 (para alguns exemplos, o modo de sub-bloco pode exigir o primeiro índice inicial diferente do segundo índice atualizado);
[0348] Se N ≥ 2, M é igual a N.
[0349] Por exemplo, M pode ser derivado de N, de acordo com a seguinte tabela:
N M 1 2 2 2 3 3 4 4 5 5 6 6
[0350] Em outra implementação viável, N pode ser derivado de um indicador que é incluído no fluxo de bits e M pode ser derivado de N. Por exemplo, M pode ser derivado de N, a seguir:
[0351] Se N for igual a 1, M é igual a 2 (para alguns exemplos, o modo de sub-bloco pode exigir o primeiro índice inicial diferente do segundo índice atualizado);
[0352] Se N ≥ 2 e N ≤ K, M é igual a N, onde K é valor inteiro predefinido (por exemplo, K pode ser igual a 5);
[0353] Se N > K, M é igual a K.
[0354] Por exemplo, M pode ser derivado de N, de acordo com a seguinte tabela (K é igual a 5):
N M 1 2 2 2
[0355] É observado que o valor de N (tamanho da lista de candidatos de fusão) pode ser menor do que valor de M (um valor máximo do primeiro índice inicial).
[0356] A Fig. 15 mostra um método de predição inter do presente pedido. O método de predição inter é realizado para um bloco de imagem em um sub-bloco com base no método de predição, por exemplo, um modo de predição triangular.
[0357] Em um modo de predição triangular, um bloco atual compreende um primeiro sub-bloco de predição e um segundo sub-bloco de predição, por exemplo, PU1 e PU2 na Fig. 10A ou Fig. 10B. É observado que o presente pedido também pode ser implementado com base no sub-bloco diferente com base no método de predição, por exemplo, os modos de predição mostrados na Fig. 11.
[0358] S1501: Analisar pelo menos um indicador para determinar um modo de predição do bloco atual.
[0359] Em geral, a predição inter inclui vários modos de predição inter. O modo de predição inter principal é selecionado no lado do codificador usando diferentes critérios, por exemplo, procedimento RDO e codificado em um fluxo de bits como um ou mais indicadores. O lado do decodificador analisa o fluxo de bits para obter o valor de um ou mais indicadores e determinar o modo de predição inter principal, de acordo com o valor de um ou mais indicadores.
[0360] Em uma implementação viável, o indicador pode ser um índice de modo de predição.
[0361] Em outra implementação viável, vários indicadores são combinados para decidir um modo de predição.
[0362] No caso em que o modo de predição determinado do bloco atual é um modo de predição triangular, o procedimento do presente método continua.
[0363] S1502: Obter uma lista de candidatos para o bloco atual.
[0364] A lista de candidatos é obtida a partir de uma lista de candidatos do Modo de fusão. Como um exemplo, a construção do modo de fusão lista de candidatos e a construção da lista de candidatos de uni-predição para a predição triangular do bloco atual, podem se referir às seções acima.
[0365] É observado que, visto que a lista de candidatos para a predição triangular é derivada da lista de candidatos de modo de fusão. Em uma implementação viável, a lista de candidatos não pode ser uma lista independente. O candidato na lista de candidatos pode ser representado pelo indicador que aponta para um candidato na lista de candidatos de modo de fusão.
[0366] É observado que a etapa S1502 pode ser implementada depois de analisar os índices das informações de predição do primeiro sub-bloco de predição e/ou do segundo sub-bloco de predição. Não é limitada no presente pedido.
[0367] S1503: Analisar um primeiro índice de um fluxo de bits.
[0368] O primeiro índice é usado para obter as informações de predição do primeiro sub-bloco de predição.
[0369] Como um exemplo, analisar um elemento de sintaxe que representa o primeiro índice do fluxo de bits; localizar um item na lista de candidatos, de acordo com o primeiro índice; e obter o item como as informações de predição do primeiro sub-bloco de predição.
[0370] S1504: Analisar um segundo índice do fluxo de bits.
[0371] O segundo índice é usado para obter informações de predição do segundo sub-bloco de predição.
[0372] Como um exemplo, analisar outro elemento de sintaxe que representa o segundo índice do fluxo de bits.
[0373] S1505: Comparar o primeiro índice ao segundo índice.
[0374] S1506A: No caso em que o segundo índice é menor do que o primeiro índice, localizar um item na lista de candidatos, de acordo com o segundo índice; e obter o item como as informações de predição do segundo sub-bloco de predição.
[0375] S1506B: No caso em que o segundo índice é igual a ou maior do que o primeiro índice, ajustar o segundo índice, então obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado.
[0376] Similar à etapa S1506A, obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado, compreende: localizar um item na lista de candidatos, de acordo com o segundo índice ajustado; e obter o item como as informações de predição do segundo sub-bloco de predição.
[0377] Em uma implementação viável, ajustar o segundo índice pode ser incrementar o segundo índice em m, em que m é um número inteiro positivo.
[0378] Em uma implementação viável, m pode ser 1.
[0379] Em outra implementação viável, ajustar o segundo índice pode ser outro cálculo com base no valor analisado do segundo índice e o valor ajustado do segundo índice é diferente do valor analisado.
[0380] Em uma implementação específica, as etapas S1505, S1506A e S1506B podem ser descritas como: Assumindo as variáveis idxm e idxn, sendo o primeiro índice e o segundo índice (ajustados), para o primeiro sub-bloco de predição e o segundo sub-bloco de predição, respectivamente, são derivadas usando o valor analisado do primeiro índice (merge_triangle_idx0) e o valor analisado do segundo índice (merge_triangle_idx1), a seguir: idxm = merge_triangle_idx0 idxn = merge_triangle_idx1 + (merge_triangle_idx1 >= idxm)? 1: 0
[0381] É observado que em outra implementação, idxn também pode ser derivado como merge_triangle_idx1 + (merge_triangle_idx1 > idxm)? 1: 0. Similarmente, no caso em que o segundo índice é igual ao primeiro índice, a ação em S1506A ou S1506B pode ser alternativamente executada com base nas diferentes modalidades, que não são limitadas no presente pedido.
[0382] Em uma implementação viável, em que o primeiro índice é binarizado, de acordo com um código unário truncado, o segundo índice é binarizado, de acordo com o código unário truncado.
[0383] Em uma implementação viável, em que um primeiro bin do primeiro índice binarizado é codificado usando o modo de codificação regular de CABAC, um primeiro bin do segundo índice binarizado é codificado usando o modo de codificação regular de CABAC.
[0384] Em uma implementação viável, em que um não primeiro bin do primeiro índice binarizado é codificado usando o modo de codificação bypass de CABAC, um não primeiro bin do segundo índice binarizado é codificado usando o modo de codificação bypass de CABAC. O não primeiro bin significa qualquer outro bin do primeiro índice binarizado (ou segundo índice binarizado), exceto para o primeiro bin.
[0385] S1507: obter um valor de predição do bloco atual com base nas informações de predição do primeiro sub-bloco de predição e nas informações de predição do segundo sub-bloco de predição.
[0386] Depois de obter as informações de predição do primeiro sub- bloco de predição e as informações de predição do segundo sub-bloco de predição, o valor de predição do bloco atual pode ser obtido com base no método de construção do método de predição triangular como descrito nas seções acima.
[0387] Em uma implementação viável, o método de predição compreende adicionalmente: analisar um indicador de direção a partir do fluxo de bits e em que o indicador de direção é usado para indicar uma direção de divisão do bloco atual. Por exemplo, quando o indicador de direção é 0, PU1 e PU2 são divididas por uma direção de divisão mostrada como a figura esquerda da Fig. 10A ou Fig. 10B, quando o indicador de direção é 1, PU1 e PU2 são divididas por uma direção de divisão mostrada como a figura direita da Fig. 10A ou Fig. 10B.
[0388] É observado que analisar um indicador de direção do fluxo de bits antes de analisar o primeiro índice de um fluxo de bits em uma implementação viável e analisar um indicador de direção do fluxo de bits depois de derivar o segundo índice ajustado em outra implementação viável. A ordem de implementação não é limitada no presente pedido, o que significa que o indicador de direção pode ser portado nas diferentes posições pelo fluxo de bits.
[0389] A Fig. 16 mostra outro método de predição inter do presente pedido. É observado que a o projeto da palavra-código do primeiro índice e/ou do segundo índice com base no valor permitido máximo do primeiro índice e/ou do segundo índice. Um lado do decodificador não pode analisar o primeiro índice e/ou o segundo índice com sucesso sem obter o valor permitido máximo do primeiro índice e/ou do segundo índice.
[0390] Em uma implementação viável, o valor permitido máximo do primeiro índice e/ou do segundo índice é obtido tanto pelo lado do codificador quanto pelo lado do decodificador, de acordo com um protocolo pré-ajustado,
por exemplo, um valor pré-ajustado em um padrão. Neste caso, nenhum indicador ou para representar o valor permitido máximo é sinalizado.
[0391] Em outra implementação viável, um ou mais indicadores para representar o valor permitido máximo são sinalizados no fluxo de bits. De modo que, o lado do decodificador pode obter um mesmo valor que o do lado do codificador analisando o fluxo de bits.
[0392] É observado que como um exemplo, o primeiro sub-bloco de predição e o segundo sub-bloco de predição compartilham uma mesma lista de candidatos, o valor permitido máximo do primeiro índice e/ou do segundo índice pode ser considerado como um comprimento da lista de candidatos.
[0393] É observado que o comprimento da lista de candidatos pode ser codificado no fluxo de bits como sintaxe de alto nível, por exemplo, pode ser incluído no conjunto de parâmetros de sequência, conjunto de parâmetros de imagem, cabeçalho de imagem ou cabeçalho de fatia e assim por diante. Neste caso, o comprimento da lista de candidatos pode ser determinado antes da etapa S1501.
[0394] O comprimento da lista de candidatos também pode ser codificado no bloco ou nível de PU. Neste caso, o comprimento da lista de candidatos pode ser determinado entre a etapa S1502 e a etapa S1501.
[0395] O comprimento da lista de candidatos é determinado como o seguinte:
[0396] S1508: Analisar um primeiro número para determinar um primeiro comprimento da lista de candidatos.
[0397] Em uma implementação viável, o primeiro número é analisado a partir do fluxo de bits diretamente.
[0398] Em outra implementação viável, várias sintaxes são analisadas a partir do fluxo de bits e as sintaxes analisadas são combinadas para determinar o primeiro número.
[0399] Como um exemplo, o primeiro comprimento é uma quantidade máxima de informações de predição de candidato para o Modo de Fusão na lista de candidatos.
[0400] Como descrito nas seções acima, a lista de candidatos para o modo de predição triangular é derivada da lista de candidatos para o Modo de Fusão. O índice de modo de Fusão também pode ser usado como o primeiro índice e/ou o segundo índice. Neste caso, a lista de candidatos para o modo de predição triangular pode ser considerada parte da lista de candidatos para o Modo de Fusão, por exemplo, como mostrado na Fig. 12, cada candidato na lista de candidatos para o modo de predição triangular corresponde às informações de movimento de uni-predição na lista de candidatos para o Modo de Fusão. E a quantidade máxima de informações de predição de candidato para o Modo de Fusão e para o modo de predição triangular pode ser diferente.
[0401] S1509: Derivar um segundo comprimento da lista de candidatos com base no primeiro número.
[0402] O segundo comprimento é uma quantidade máxima de informações de predição de candidato para um sub-bloco com base no modo de predição na lista de candidatos, em que o sub-bloco com base no modo de predição é o modo de predição triangular ou o modo de predição geométrico. O modo de predição pode ser outro sub-bloco com base no modo de predição, incluindo o modo retangular ou não retangular (trapezoidal). E o modo de predição triangular e o modo de predição geométrico podem ser unificados como um único modo de predição, que também podem estar envolvidos na implementação viável.
[0403] Visto que a lista de candidatos do modo de predição triangular é derivada da lista de candidatos do Modo de Fusão, o primeiro comprimento é igual a ou maior do que o segundo comprimento.
[0404] Em uma implementação viável, o segundo comprimento pode ser obtido subtraindo um valor de delta pré-ajustado do primeiro número.
[0405] Em outra implementação viável, o segundo comprimento pode ser obtido subtraindo um valor de delta do primeiro número e o valor de delta é analisado a partir do fluxo de bits.
[0406] É observado que, como mostrado na Fig. 12, a lista de candidatos de uni-predição é construída para o modo de predição triangular, enquanto a lista de candidatos de bipredição é construída para o Modo de Fusão. No presente pedido, cada informação de movimento na lista de candidatos de uni-predição indicada por um índice é um candidato para TPM; cada conjunto de informações de movimento (informações de movimento para a Lista 0 e informações de movimento para a Lista 1) na lista de candidatos de bipredição indicada por um índice é um candidato para o Modo de Fusão.
[0407] A modalidade também pode ser descrita como:
[0408] Assumindo que a lista de candidatos é uma lista de candidatos do Modo de Fusão, consequentemente, um índice de Modo de Fusão é usado para indicar um candidato na lista de candidatos.
[0409] S1508’: Analisar um primeiro número para determinar um índice de candidato permitido máximo na lista de candidatos.
[0410] O índice de candidato permitido máximo pode ser o índice máximo para o modo de Fusão. Em outras palavras, é o valor permitido máximo do índice de modo de Fusão.
[0411] S1509’: Obter um índice de valor máximo com base no índice de candidato permitido máximo.
[0412] O índice de valor máximo é usado para indicar a limitação máxima para o primeiro índice e o segundo índice (os mesmos índices como descritos na modalidade da Fig. 15).
[0413] É observado que, de acordo com o presente pedido, é uma redundância para um sub-bloco com base no modo de predição se o primeiro índice e o segundo índice forem iguais. Portanto, se o primeiro índice tiver uma limitação máxima MAX, o segundo índice terá uma limitação máxima MAX-m quando o segundo índice for analisado a partir do fluxo de bits. m é um número inteiro positivo, por exemplo, m pode ser 1 na presente modalidade. E também é observado que o segundo índice ajustado na presente modalidade pode ser o mesmo que a limitação máxima.
[0414] Em uma implementação viável, obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e um número predeterminado. Por exemplo, o índice máximo igual ao índice de candidato permitido máximo - o número predeterminado. Em outro exemplo, o índice máximo igual ao número predeterminado - o índice de candidato permitido máximo + um valor de deslocamento.
[0415] Em outra implementação viável, analisar um segundo número para derivar uma diferença entre o índice de candidato permitido máximo e o índice máximo; e obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e a diferença. Por exemplo, o índice máximo igual ao índice de candidato permitido máximo - a diferença. Em outro exemplo, o índice máximo igual à diferença - o índice de candidato permitido máximo + um valor de deslocamento.
[0416] Em outra modalidade, o índice máximo e o índice de candidato permitido máximo são sinalizados independentemente. Por exemplo, sendo similares à S1508 ou S1508’, analisar um terceiro número para determinar o índice máximo.
[0417] E não importa que o índice máximo e o índice de candidato permitido máximo sejam sinalizados independente ou dependentemente, em uma implementação viável, o índice de candidato permitido máximo, que é um índice máximo do modo de Fusão, não é menor do que o índice máximo.
[0418] Em uma implementação específica, max_num_merge_cand_minus_max_num_triangle_cand especifica o número máximo dos candidatos de modo de fusão triangular suportados na fatia (ou na imagem, de acordo com as diferentes modalidades) subtraído de MaxNumMergeCand. six_minus_max_num_merge_cand especifica o número máximo dos candidatos de vetor de fusão de predição de movimento (MVP) suportados na fatia subtraído de 6. O número máximo dos candidatos MVP de fusão, MaxNumMergeCand é derivado como: MaxNumMergeCand = 6 − six_minus_max_num_merge_cand. O número máximo dos candidatos de modo de fusão triangular, MaxNumTriangleMergeCand é derivado como: MaxNumTriangleMergeCand =
[0419] MaxNumMergeCand − max_num_merge_cand_minus_max_num_triangle_cand.
[0420] max_num_merge_cand_minus_max_num_triangle_cand pode ser portado pelo fluxo de bits (estar presente), de modo que o valor de max_num_merge_cand_minus_max_num_triangle_cand possa ser analisado. É observado que o valor de MaxNumTriangleMergeCand deve estar na faixa de 2 para MaxNumMergeCand.
[0421] Com base em uma condição diferente, max_num_merge_cand_minus_max_num_triangle_cand pode não ser portado pelo fluxo de bits (pode não estar presente). Neste caso, quando sps_triangle_enabled_flag é igual a 0 ou MaxNumMergeCand é menor do que 2, MaxNumTriangleMergeCand é definido como igual a 0, que significa que o modo de fusão triangular não é permitido para a fatia atual (ou a imagem atual, de acordo com a modalidade diferente); quando sps_triangle_enabled_flag é igual a 1 e MaxNumMergeCand maior ou igual a 2, max_num_merge_cand_minus_max_num_triangle_cand é inferido para ser igual a pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 - 1, em que sps_triangle_enabled_flag é um elemento de sintaxe incluído no conjunto de parâmetros de sequência e indicando se TPM é permitido, e pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 é um elemento de sintaxe incluído no conjunto de parâmetros de imagem. pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 igual a 0 especifica que max_num_merge_cand_minus_max_num_triangle_cand está presente no cabeçalho de fatia de fatias (ou cabeçalho de imagem de imagens, de acordo com a modalidade diferente) com referência ao conjunto de parâmetros de imagem. pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 é maior do que 0 especifica que max_num_merge_cand_minus_max_num_triangle_cand não está presente no cabeçalho de fatia de fatias (ou cabeçalho de imagem de imagens, de acordo com a modalidade diferente) com referência ao conjunto de parâmetros de imagem. O valor de pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 deve estar na faixa de 0 a MaxNumMergeCand - 1.
[0422] Alternativamente, o primeiro comprimento e o segundo comprimento podem ser sinalizados independentemente, que significa que a etapa S1509 pode ser a análise de um segundo número para determinar um segundo comprimento da lista de candidatos.
[0423] Similarmente, em uma implementação viável, o segundo número é analisado a partir do fluxo de bits diretamente. E em outra implementação viável, várias sintaxes são analisadas a partir do fluxo de bits e as sintaxes analisadas são combinadas para determinar o segundo número.
[0424] É observado que quaisquer informações analisadas a partir do fluxo de bits para indicar o primeiro comprimento e/ou o segundo comprimento direta ou indiretamente (por exemplo, um valor de diferença entre os dois comprimentos) podem ser portadas pelo fluxo de bits no conjunto de parâmetros de sequência, conjunto de parâmetros de imagem, cabeçalho de imagem ou cabeçalho de fatia e assim por diante.
[0425] A Fig. 17 mostra um aparelho de predição inter 1700 do presente pedido.
[0426] Um bloco atual compreendendo um primeiro sub-bloco de predição e um segundo sub-bloco de predição, o aparelho 1700 compreende: um módulo de análise 1701, configurado para analisar um primeiro índice de um fluxo de bits, em que o primeiro índice é usado para obter as informações de predição do primeiro sub-bloco de predição; e analisar um segundo índice a partir do fluxo de bits; um módulo de localização 1702, configurado para comparar o primeiro índice ao segundo índice; e ajustar o segundo índice no caso em que o segundo índice é igual a ou maior do que o primeiro índice; e um módulo de obtenção 1703, configurado para obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado.
[0427] Em uma implementação viável, o módulo de localização 1702 é configurado para: incrementar o segundo índice em m, em que m é um número inteiro positivo.
[0428] Em uma implementação viável, em que m é 1.
[0429] Em uma implementação viável, antes de analisar um primeiro índice de um fluxo de bits, o módulo de análise 1701 é adicionalmente configurado para: analisar pelo menos um indicador para determinar um modo de predição do bloco atual, em que o modo de predição é um modo de predição triangular ou um modo de predição geométrico. O modo de predição pode ser outro sub-bloco com base no modo de predição, incluindo o modo retangular ou não retangular (trapezoidal). E o modo de predição triangular e o modo de predição geométrico podem ser unificados como um único modo de predição, que também podem estar envolvidos na implementação viável.
[0430] Em uma implementação viável, em que o módulo de localização 1702 é adicionalmente configurado para: obter uma lista de candidatos para o bloco atual.
[0431] Em uma implementação viável, em que as informações de predição do primeiro sub-bloco de predição são obtidas a partir da lista de candidatos, de acordo com o primeiro índice.
[0432] Em uma implementação viável, em que as informações de predição do segundo sub-bloco de predição são obtidas a partir da lista de candidatos, de acordo com o segundo índice ajustado.
[0433] Em uma implementação viável, em que a lista de candidatos é uma lista de candidatos do Modo de Fusão.
[0434] Em uma implementação viável, em que o módulo de análise 1701 é configurado para: analisar um primeiro número para determinar um índice de candidato permitido máximo na lista de candidatos; e obter um índice máximo com base no índice de candidato permitido máximo, em que o primeiro índice não é maior do que o índice máximo.
[0435] Em uma implementação viável, em que o módulo de análise 1701 é configurado para: obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e um número predeterminado.
[0436] Em uma implementação viável, em que o módulo de análise 1701 é configurado para: analisar um segundo número para derivar uma diferença entre o índice de candidato permitido máximo e o índice máximo; e obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e a diferença.
[0437] Em uma implementação viável, em que o módulo de análise 1701 é configurado para: analisar um terceiro número para determinar o índice máximo.
[0438] Em uma implementação viável, em que o índice de candidato permitido máximo não é menor do que o índice máximo.
[0439] Em uma implementação viável, em que depois de obter as informações de predição do segundo sub-bloco de predição, de acordo com o segundo índice ajustado, o módulo de obtenção 1703 é adicionalmente configurado para: obter um valor de predição do bloco atual com base nas informações de predição do primeiro sub-bloco de predição e nas informações de predição do segundo sub-bloco de predição.
[0440] Em uma implementação viável, em que o primeiro índice ou o segundo índice é binarizado, de acordo com um código unário truncado.
[0441] Em uma implementação viável, em que um primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando o modo de codificação regular de CABAC.
[0442] Em uma implementação viável, em que um não primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando o modo de codificação bypass de CABAC.
[0443] Em uma implementação viável, em que o módulo de análise
1701 é configurado para analisar um indicador de direção do fluxo de bits e em que o indicador de direção é usado para indicar uma direção de divisão do bloco atual.
[0444] A Fig. 18 mostra um aparelho de predição inter 1800 do presente pedido, o aparelho 1800 pode ser um decodificador ou um codificador. O aparelho 1800 compreende: um ou mais processadores 1801; e uma mídia de armazenamento legível por computador não transitória 1802 acoplada aos processadores e armazenando programação para a execução pelos processadores, em que a programação, quando executada pelos processadores, configura o decodificador para realizar o método na Fig. 15 ou Fig. 16.
[0445] Em outra modalidade, um produto de programa de computador compreendendo o código de programa para realizar o método na Fig. 15 ou Fig. 16 quando executado em um computador ou um processador.
[0446] Em outra modalidade, uma mídia legível por computador não transitória portando um código de programa que, quando executado por um dispositivo de computador, faz com que o dispositivo de computador realize o método na Fig. 15 ou Fig. 16.
[0447] O seguinte é uma explicação das aplicações do método de codificação, bem como o método de decodificação, como mostrado nas modalidades mencionadas acima, e um sistema que os usa.
[0448] A FIG. 19 é um diagrama de bloco que mostra um sistema de fornecimento de conteúdo 3100 para realizar o serviço de distribuição de conteúdo. Este sistema de fornecimento de conteúdo 3100 inclui o dispositivo de captura 3102, o dispositivo terminal 3106 e, opcionalmente, inclui o display 3126. O dispositivo de captura 3102 se comunica com o dispositivo terminal 3106 através do enlace de comunicação 3104. O enlace de comunicação pode incluir o canal de comunicação 13 descrito acima. O enlace de comunicação 3104 inclui, mas não é limitado ao WIFI, Ethernet, Cabo, sem fio (3G/4G/5G), USB ou qualquer tipo de combinação dos mesmos ou semelhantes.
[0449] O dispositivo de captura 3102 gera dados e pode codificar os dados pelo método de codificação, como mostrado nas modalidades acima. Alternativamente, o dispositivo de captura 3102 pode distribuir os dados para um servidor de transmissão (não mostrado nas figuras) e o servidor codifica os dados e transmite os dados codificados para o dispositivo terminal 3106. O dispositivo de captura 3102 inclui, mas não é limitado à câmera, smartphone ou pad, computador ou laptop, sistema de videoconferência, PDA, dispositivo montado em veículo ou, uma combinação de qualquer um dele ou semelhantes. Por exemplo, o dispositivo de captura 3102 pode incluir o dispositivo de origem 12 como descrito acima. Quando os dados incluem vídeo, o codificador de vídeo 20 incluído no dispositivo de captura 3102 pode 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 pela multiplexação dos mesmos 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.
[0450] No sistema de fornecimento de conteúdo 3100, o dispositivo terminal 310 recebe e reproduz os dados codificados. O dispositivo terminal 3106 pode ser um dispositivo com a capacidade de recebimento e recuperação de dados, tais como smartphone ou pad 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 pessoal digital (PDA) 3122, dispositivo montado em veículo 3124 ou, uma combinação de qualquer um deles ou semelhantes capazes de decodificar os dados codificados mencionados acima. Por exemplo, o dispositivo terminal 3106 pode incluir o dispositivo de destino 14 como descrito acima. Quando os dados codificados incluem vídeo, o decodificador de vídeo 30 incluído no dispositivo terminal é priorizado para realizar a decodificação de vídeo. Quando os dados codificados incluem áudio, um decodificador de áudio incluído no dispositivo terminal é priorizado para realizar o processamento de decodificação de áudio.
[0451] Para um dispositivo terminal com seu display, por exemplo, smartphone ou pad 3108, computador ou laptop 3110, gravador de vídeo em rede (NVR)/gravador de vídeo digital (DVR) 3112, TV 3114, assistente pessoal digital (PDA) 3122 ou dispositivo montado em veículo 3124, o dispositivo terminal pode retornar os dados decodificados para seu display. Para um dispositivo terminal equipado sem nenhum display, por exemplo, STB 3116, sistema e videoconferência 3118 ou sistema de videovigilância 3120, um display 3126 externo é contatado nele para receber e mostrar os dados decodificados.
[0452] Quando cada dispositivo neste sistema realiza a codificação ou decodificação, o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem, como mostrado nas modalidades mencionadas acima, pode ser usado.
[0453] A FIG. 20 é um diagrama que mostra uma estrutura de um exemplo do dispositivo terminal 3106. Depois do dispositivo terminal 3106 receber o fluxo do dispositivo de captura 3102, a unidade de procedimento de protocolo 3202 analisa o protocolo de transmissão do fluxo. O protocolo inclui, mas não é limitado ao Protocolo de Transmissão em Tempo Real (RTSP), Protocolo de Transferência de Hipertexto (HTTP), protocolo de transmissão ao vivo HTTP (HLS), MPEG-DASH, protocolo de Transporte em tempo Real (RTP), Protocolo de Mensagem em Tempo Real (RTMP) ou, qualquer tipo de combinação dos mesmos ou semelhantes.
[0454] Depois da unidade de procedimento de protocolo 3202 processar o fluxo, arquivo de fluxo é gerado. O arquivo é emitido para uma unidade de demultiplexação 3204. A unidade de demultiplexação 3204 pode separar os dados multiplexados nos dados de áudio codificados e nos dados de vídeo codificados. Como descrito acima, para alguns cenários práticos, por exemplo, no sistema de videoconferência, os dados de áudio codificados e os dados de vídeo codificados não são multiplexados. Nesta situação, os dados codificados são transmitidos para o decodificador de vídeo 3206 e decodificador de áudio 3208 sem através da unidade de demultiplexação 3204.
[0455] Através do processamento de multiplexação, o fluxo elementar de vídeo (ES), ES de áudio e, opcionalmente, a legenda são gerados. O decodificador de vídeo 3206, que inclui o decodificador de vídeo 30 como explicado nas modalidades mencionadas acima, decodifica o ES de vídeo pelo método de decodificação, como mostrado nas modalidades mencionadas acima, para gerar o quadro de vídeo e retornar os dados para a unidade síncrona 3212. O decodificador de áudio 3208, decodifica o ES de áudio para gerar o quadro de áudio e retornar estes dados para a unidade síncrona 3212. Alternativamente, o quadro de vídeo pode armazenar em um buffer (não mostrado na FIG. 20) antes de retorná-lo para a unidade síncrona 3212. Similarmente, o quadro de áudio pode armazenar em um buffer (não mostrado na FIG. 20) antes de retorná-lo para a unidade síncrona 3212.
[0456] A unidade síncrona 3212 sincroniza o quadro de vídeo e o quadro de áudio e fornece o vídeo/áudio para um display 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 carimbos de data/hora relativos à apresentação de dados visuais e de áudio codificados e carimbos de data/hora relativos à liberação do próprio fluxo de dados.
[0457] Se a legenda estiver incluída no fluxo, o decodificador de legenda 3210 decodifica a legenda e sincroniza com o quadro de vídeo e o quadro de áudio e fornece o vídeo/áudio/legenda para um display de vídeo/áudio/legenda 3216.
[0458] A presente invenção não é limitada ao sistema mencionado acima e o dispositivo de codificação de imagem ou o dispositivo de decodificação de imagem nas modalidades mencionadas acima pode ser incorporado em outro sistema, por exemplo, um sistema de carro. Operadores Matemáticos
[0459] Os operadores matemáticos usados neste pedido são similares aos usados na linguagem de programação C. Entretanto, os resultados das operações de divisão inteira e deslocamento aritmético são definidos mais precisamente e as operações adicionais são definidas, tais como exponenciação e divisão com valor real. As convenções de numeração e contagem em geral começam em 0, por exemplo, “o primeiro” é equivalente ao 0ésimo, “o segundo” é equivalente ao 1o, etc. Operadores Aritméticos
[0460] Os seguintes operadores aritméticos são definidos, a seguir: + 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 Exponenciação. Especifica x elevado a y. Em outros contextos, tal notação é xy usada para sobrescrito, não pretendendo ser interpretado como exponenciação. Divisão inteira com truncamento do resultado em direção a zero. Por / exemplo, 7/4 e −7/−4 são truncados para 1 e −7/4 e 7/−4 são truncados para −1. Usado para denotar a divisão nas equações matemáticas onde nenhum ÷ truncamento ou arredondamento é pretendido. x Usado para denotar a divisão nas equações matemáticas onde nenhum y truncamento ou arredondamento é pretendido. y � f(i) A soma de f(i) com i levando todos os valores inteiros de x até e incluindo y. i=x Módulo. Restante de x dividido por y, definido apenas para inteiros x e y x%y com x >= 0 e y > 0.
Operadores Lógicos
[0461] Os seguintes operadores lógicos são definidos, a seguir: x && y Booleano lógico “e” de x e y x||y Booleano lógico “ou” de x e y ! Booleano lógico “não” x?y:z Se x for TRUE ou diferente de 0, avalia o valor de y; de outro modo, avalia o valor de z.
Operadores Relacionais
[0462] Os seguintes operadores relacionais são definidos, a seguir: > Maior do que >= Maior ou igual a < Menor do que <= Menor ou igual a == Igual a != Diferente de
[0463] Quando um operador relacional é aplicado a um elemento de sintaxe ou variável que foi atribuído ao valor “na” (não aplicável), o valor “na” é tratado como um valor distinto para o elemento de sintaxe ou variável. O valor “na” não é considerado igual a qualquer outro valor. Operadores de Lógica Binária
[0464] Os seguintes operadores de lógica binária são definidos, a seguir: & Lógica binária “e”. Ao operar com argumentos inteiros, operar com uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido adicionando bits mais significantes iguais a 0. | Lógica binária “ou”. Ao operar com argumentos inteiros, operar com uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido adicionando bits mais significantes iguais a 0. ^ Lógica binária “exclusivo ou”. Ao operar com argumentos inteiros, operar com uma representação de complemento de dois do valor inteiro. Ao operar com um argumento binário que contém menos bits do que outro argumento, o menor argumento é estendido adicionando bits mais significantes iguais a 0. x >> y Deslocamento aritmético para a direita de uma representação inteira de complemento de dois de dígitos binários x por y. Esta função é definida apenas para valores inteiros não negativos de y. Os bits deslocados para os bits mais significantes (MSBs) como um resultado do deslocamento para a direita têm um valor igual ao MSB de x antes da operação de deslocamento. x << y Deslocamento aritmético para a esquerda de uma representação inteira de complemento de dois de dígitos binários de x por y. Esta função é definida apenas para os valores inteiros não negativos de y. Os bits deslocados para os bits menos significantes (LSBs) como um resultado do deslocamento para a esquerda têm um valor igual a 0. Operadores de Atribuição
[0465] Os seguintes operadores aritméticos são definidos, a seguir: = Operador de atribuição ++ Incremento, isto é, x+ + é equivalente a x = x + 1; quando usado em um índice de arranjo, avalia o valor da variável antes da operação de incremento. −− Decremento, isto é, x− − é equivalente a x = x − 1; quando usado em um índice de arranjo, avalia o valor da variável antes da operação de decremento. += Incremento pela quantidade especificada, isto é, x += 3 é equivalente a x = x + 3 e x += (−3) é equivalente a x = x + (−3). −= Decremento pela quantidade especificada, isto é, x −= 3 é equivalente a x = x − 3 e x −= (−3) é equivalente a x = x − (−3). Notação de Faixa
[0466] A seguinte notação é usada para especificar uma faixa de valores: x = y..z x assume valores inteiros partindo de y para z, inclusive, com x, y e z sendo números inteiros e z sendo maior do que y. Funções Matemáticas
[0467] As seguintes funções matemáticas são definidas: x ; x >= 0 Abs(x) =� −x ; x<0 Asin(x) a função de seno inversa trigonométrica, operando com um argumento x que está na faixa de −1,0 a 1,0, inclusive, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos Atan(x) a função de tangente inversa trigonométrica, operando com um argumento x, com um valor de saída na faixa de −π÷2 a π÷2, inclusive, em unidades de radianos y ⎧ Atan � x � ; x>0 ⎪ y ⎪ Atan � x � + π ; x < 0 && y >= 0 Atan � � − π ; x < 0 && y < 0 y Atan2(y, x) = ⎨ x π ⎪ + ; x = = 0 && y >= 0 2 ⎪ − π ; de outro modo ⎩ 2 Ceil(x) o menor inteiro maior do que 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 ; de outro modo Cos(x) a função de cosseno trigonométrica operando com um argumento x em unidades de radianos. Floor(x) o maior inteiro menor ou igual a x. c+d ; b − a >= d/2 GetCurrMsb(a, b, c, d) = �c−d ; a − b > d/2 c ; de outro modo Ln(x) o logaritmo natural de x (o logaritmo de base e, onde e é o logaritmo natural base constante 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 de seno trigonométrica operando com um argumento x em unidades de radianos Sqrt(x) = √x Swap(x, y) = (y, x) Tan(x) a função de tangente trigonométrica operando com um argumento x de unidades de radianos Ordem de precedência de operação
[0468] Quando uma ordem de precedência em uma expressão não é indicada explicitamente pelo uso de parênteses, as seguintes regras aplicam-se: - As operações de precedência superior são avaliadas antes de qualquer operação de uma precedência inferior. - As operações da mesma precedência são avaliadas sequencialmente da esquerda para a direita.
[0469] 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.
[0470] Para estes operadores que também são usados na linguagem de programação C, a ordem de precedência usada neste relatório descritivo é a mesmo que a usada na linguagem de programação C. Tabela: Precedência de operação da mais alta (na parte superior da tabela) para a mais baixa (na parte inferior 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”, “ ”, “x % y” y “x + y”, “x − y” (como um operador de y ∑ f( i ) argumento de dois), “ 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 de operações lógicas
[0471] No texto, uma afirmação de operações lógicas que seriam descritas matematicamente da seguinte forma: se(condição 0) afirmação 0 senão (condição 1) afirmação 1 ...
senão/* observação informativa sobre a condição remanescente */ afirmação n pode ser descrita da seguinte maneira: ... como se segue/... é aplicável o seguinte: - Se condição 0, afirmação 0 - De outro modo, se condição 1, afirmação 1 - ... - De outro modo (observação informativa sobre a condição remanescente), afirmação n
[0472] Cada “Se ... De outro modo, se ... De outro modo, ...” a afirmação no texto é introduzida com “..., a seguir” ou “... o seguinte se aplica” imediatamente seguido por “Se ... “. A última condição de “Se ... De outro modo, se ... De outro modo, ...” é sempre um “De outro modo, ...”. As declarações intercaladas “Se ... De outro modo, se ... De outro modo, ...” podem ser identificadas pela correspondência “..., a seguir” ou “... o seguinte se aplica” com a terminação “De outro modo, ...”.
[0473] No texto, uma afirmação das operações lógicas que seriam descritas matematicamente da seguinte forma: se(condição 0a && condição 0b) afirmação 0 senão se(condição 1a | | condição 1b) afirmação 1 ... senão afirmação n pode ser descrita da seguinte maneira: ..., a seguir/... o seguinte se aplica: - Se todas as seguintes condições forem verdadeiras, afirmação 0: - condição 0a - condição 0b - De outro modo, se uma ou mais das seguintes condições forem verdadeiras, afirmação 1: - condição 1a - condição 1b
- ... - De outro modo, afirmação n
[0474] No texto, uma afirmação das operações lógicas seria descrita matematicamente da seguinte forma: se(condição 0) afirmação 0 se(condição 1) afirmação 1 pode ser descrita da seguinte maneira: Quando condição 0, afirmação 0 Quando condição 1, afirmação 1.
[0475] As modalidades, por exemplo, do codificador 20 e do decodificador 30 e as funções descritas neste relatório, por exemplo, com referência ao codificador 20 e ao decodificador 30, podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em uma mídia legível por computador ou transmitidas através da mídia de comunicação como uma ou mais instruções ou códigos e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir a mídia de armazenamento legível por computador, que corresponde a uma mídia tangível, tal como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer mídia que facilite a transferência de um programa de computador de uma placa para outra, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, mídia legível por computador em geral pode corresponder à (1) mídia de armazenamento legível por computador tangível que não é transitória ou (2) uma mídia de comunicação, tal como um sinal ou onda de portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para a implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0476] Através do exemplo, e não limitando, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possam ser acessadas por um computador. Além disso, qualquer conexão é apropriadamente denominada uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas de um website, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, em seguida, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas são incluídos na definição de mídia. Deve ser entendido, entretanto, que a mídia de armazenamento legível por computador e mídia de armazenamento de dados não incluem conexões, ondas de portadoras, sinais ou outra mídia transitória, mas são direcionadas para mídias de armazenamento tangíveis não transitórias. Disquetes e discos, como usado neste relatório, incluem disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde os disquetes usualmente reproduzem dados magneticamente, enquanto os discos reproduzem dados opticamente com lasers. As combinações dos itens acima também deveriam ser incluídas no escopo da mídia legível por computador.
[0477] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados específicos da aplicação (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outros circuitos lógicos equivalentes integrados ou discretos. Consequentemente, o termo “processador”, como usado neste relatório, pode se referir a qualquer uma entre a estrutura anterior ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste relatório. Além disso, em alguns aspectos, a funcionalidade descrita neste relatório pode ser fornecida dentro dos módulos de hardware e/ou software dedicados configurados para codificação e decodificação ou incorporados em um codec combinado. Além disso, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0478] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas divulgadas, mas não necessariamente exigem a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, como descrito acima, em conjunto com software e/ou firmware adequados.

Claims (40)

REIVINDICAÇÕES
1. Método de predição para um bloco de imagem, em que um bloco atual compreende um primeiro sub-bloco de predição e um segundo sub-bloco de predição, CARACTERIZADO pelo fato de que o método de predição compreende: analisar um primeiro índice de um fluxo de bits, em que o primeiro índice é usado para obter informações de predição do primeiro sub-bloco de predição; analisar um segundo índice do fluxo de bits; comparar o primeiro índice ao segundo índice; ajustar o segundo índice no caso em que o segundo índice é igual a ou maior do que o primeiro índice; e obter informações de predição do segundo sub-bloco de predição de acordo com o segundo índice ajustado.
2. Método de predição, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que ajustar o segundo índice compreende: incrementar o segundo índice em m, em que m é um número inteiro positivo.
3. Método de predição, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que m é um.
4. Método de predição, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que antes de analisar um primeiro índice de um fluxo de bits, o método de predição compreende adicionalmente: analisar pelo menos um indicador para determinar um modo de predição do bloco atual, em que o modo de predição é um modo de predição triangular ou um modo de predição geométrico.
5. Método de predição, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que o método de predição compreende adicionalmente: obter uma lista de candidatos para o bloco atual.
6. Método de predição, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que as informações de predição do primeiro sub-bloco de predição são obtidas a partir da lista de candidatos de acordo com o primeiro índice.
7. Método de predição, de acordo com a reivindicação 5 ou 6, CARACTERIZADO pelo fato de que as informações de predição do segundo sub-bloco de predição são obtidas a partir da lista de candidatos de acordo com o segundo índice ajustado.
8. Método de predição, de acordo com qualquer uma das reivindicações 5 a 7, CARACTERIZADO pelo fato de que a lista de candidatos é uma lista de candidatos de Modo de Fusão.
9. Método de predição, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que o método de predição compreende adicionalmente: analisar um primeiro número para determinar um índice de candidato permitido máximo na lista de candidatos; e obter um índice máximo com base no índice de candidato permitido máximo, em que o primeiro índice não é maior do que o índice máximo.
10. Método de predição, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que obter o índice máximo com base no índice de candidato permitido máximo compreende: obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e um número predeterminado.
11. Método de predição, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que obter o índice máximo com base no índice de candidato permitido máximo compreende: analisar um segundo número para derivar uma diferença entre o índice de candidato permitido máximo e o índice máximo; e obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e a diferença.
12. Método de predição, de acordo com qualquer uma das reivindicações 1 a 8, CARACTERIZADO pelo fato de que o método de predição compreende adicionalmente: analisar um terceiro número para determinar o índice máximo.
13. Método de predição, de acordo com qualquer uma das reivindicações 1 a 12, CARACTERIZADO pelo fato de que o índice de candidato permitido máximo não é menor do que o índice máximo.
14. Método de predição, de acordo com qualquer uma das reivindicações 1 a 13, CARACTERIZADO pelo fato de que depois de obter informações de predição do segundo sub-bloco de predição de acordo com o segundo índice ajustado, o método de predição compreende adicionalmente: obter um valor de predição do bloco atual com base nas informações de predição do primeiro sub-bloco de predição e nas informações de predição do segundo sub-bloco de predição.
15. Método de predição, de acordo com qualquer uma das reivindicações 1 a 14, CARACTERIZADO pelo fato de que o primeiro índice ou o segundo índice é binarizado de acordo com um código unário truncado.
16. Método de predição, de acordo com a reivindicação 15, CARACTERIZADO pelo fato de que um primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando modo de codificação regular de CABAC.
17. Método de predição, de acordo com a reivindicação 15 ou 16, CARACTERIZADO pelo fato de que um não primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando modo de codificação bypass de CABAC.
18. Método, de acordo com qualquer uma das reivindicações 1 a 17, CARACTERIZADO pelo fato de que compreende adicionalmente: analisar um indicador de direção do fluxo de bits, em que o indicador de direção é usado para indicar uma direção de divisão do bloco atual.
19. Aparelho para predição inter, em que um bloco atual compreende um primeiro sub-bloco de predição e um segundo sub-bloco de predição, CARACTERIZADO pelo fato de que o aparelho compreende: um módulo de análise, configurado para analisar um primeiro índice de um fluxo de bits, em que o primeiro índice é usado para obter informações de predição do primeiro sub-bloco de predição; e analisar um segundo índice do fluxo de bits; um módulo de localização, configurado para comparar o primeiro índice ao segundo índice; e ajustar o segundo índice no caso em que o segundo índice é igual a ou maior do que o primeiro índice; e um módulo de obtenção, configurado para obter informações de predição do segundo sub-bloco de predição de acordo com o segundo índice ajustado.
20. Aparelho, de acordo com a reivindicação 19, CARACTERIZADO pelo fato de que o módulo de localização é configurado para: incrementar o segundo índice em m, em que m é um número inteiro positivo.
21. Aparelho, de acordo com a reivindicação 20, CARACTERIZADO pelo fato de que m é um.
22. Aparelho, de acordo com qualquer uma das reivindicações 19 a 21, CARACTERIZADO pelo fato de que antes de analisar um primeiro índice de um fluxo de bits, o módulo de análise é adicionalmente configurado para: analisar pelo menos um indicador para determinar um modo de predição do bloco atual, em que o modo de predição é um modo de predição triangular ou um modo de predição geométrico.
23. Aparelho, de acordo com qualquer uma das reivindicações 19 a 22, CARACTERIZADO pelo fato de que o módulo de localização é adicionalmente configurado para: obter uma lista de candidatos para o bloco atual.
24. Aparelho, de acordo com a reivindicação 23, CARACTERIZADO pelo fato de que as informações de predição do primeiro sub-bloco de predição são obtidas a partir da lista de candidatos de acordo com o primeiro índice.
25. Aparelho, de acordo com a reivindicação 23 ou 24, CARACTERIZADO pelo fato de que as informações de predição do segundo sub-bloco de predição são obtidas a partir da lista de candidatos de acordo com o segundo índice ajustado.
26. Aparelho, de acordo com qualquer uma das reivindicações 23 a 25, CARACTERIZADO pelo fato de que a lista de candidatos é uma lista de candidatos de Modo de Fusão.
27. Aparelho, de acordo com a reivindicação 26, CARACTERIZADO pelo fato de que o módulo de análise é configurado para: analisar um primeiro número para determinar um índice de candidato permitido máximo na lista de candidatos; e obter um índice máximo com base no índice de candidato permitido máximo, em que o primeiro índice não é maior do que o índice máximo.
28. Aparelho, de acordo com a reivindicação 27, CARACTERIZADO pelo fato de que o módulo de análise é configurado para: obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e um número predeterminado.
29. Aparelho, de acordo com a reivindicação 27, CARACTERIZADO pelo fato de que o módulo de análise é configurado para: analisar um segundo número para derivar uma diferença entre o índice de candidato permitido máximo e o índice máximo; e obter o índice máximo por um cálculo entre o índice de candidato permitido máximo e a diferença.
30. Aparelho, de acordo com qualquer uma das reivindicações 19 a 27, CARACTERIZADO pelo fato de que o módulo de análise é configurado para: analisar um terceiro número para determinar o índice máximo.
31. Aparelho, de acordo com qualquer uma das reivindicações 19 a 30, CARACTERIZADO pelo fato de que o índice de candidato permitido máximo não é menor do que o índice máximo.
32. Aparelho, de acordo com qualquer uma das reivindicações 19 a 31, CARACTERIZADO pelo fato de que depois de obter informações de predição do segundo sub-bloco de predição de acordo com o segundo índice ajustado, o módulo de obtenção é adicionalmente configurado para: obter um valor de predição do bloco atual com base nas informações de predição do primeiro sub-bloco de predição e nas informações de predição do segundo sub-bloco de predição.
33. Aparelho, de acordo com qualquer uma das reivindicações 19 a 32, CARACTERIZADO pelo fato de que o primeiro índice ou o segundo índice é binarizado de acordo com um código unário truncado.
34. Aparelho, de acordo com a reivindicação 33, CARACTERIZADO pelo fato de que um primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando modo de codificação regular de CABAC.
35. Aparelho, de acordo com a reivindicação 33 ou 34, CARACTERIZADO pelo fato de que um não primeiro bin do primeiro índice ou segundo índice binarizado é codificado usando modo de codificação bypass de CABAC.
36. Aparelho, de acordo com qualquer uma das reivindicações 19 a
35, CARACTERIZADO pelo fato de que o módulo de análise é configurado para: analisar um indicador de direção do fluxo de bits, em que o indicador de direção é usado para indicar uma direção de divisão do bloco atual.
37. Produto de programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 18 quando executado em um computador ou em um processador.
38. 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 18.
39. 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 18.
40. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que porta um código de programa que, quando executado por um dispositivo de computador, faz com que o dispositivo de computador realize o método conforme definido em qualquer uma das reivindicações 1 a 18.
BR112021009848-8A 2018-11-22 2019-11-22 codificador, decodificador e métodos correspondentes para predição inter BR112021009848A2 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862770826P 2018-11-22 2018-11-22
US62/770,826 2018-11-22
US201962787678P 2019-01-02 2019-01-02
US62/787,678 2019-01-02
US201962816897P 2019-03-11 2019-03-11
US62/816,897 2019-03-11
US201962905367P 2019-09-24 2019-09-24
US62/905,367 2019-09-24
PCT/RU2019/050224 WO2020106190A1 (en) 2018-11-22 2019-11-22 An encoder, a decoder and corresponding methods for inter prediction

Publications (1)

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

Family

ID=70773945

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021009848-8A BR112021009848A2 (pt) 2018-11-22 2019-11-22 codificador, decodificador e métodos correspondentes para predição inter

Country Status (16)

Country Link
US (2) US11558632B2 (pt)
EP (2) EP4221205A1 (pt)
JP (2) JP7239697B2 (pt)
KR (2) KR20240025062A (pt)
CN (2) CN113727101B (pt)
AU (2) AU2019384016B2 (pt)
BR (1) BR112021009848A2 (pt)
CA (1) CA3120877A1 (pt)
ES (1) ES2946909T3 (pt)
HU (1) HUE062487T2 (pt)
IL (1) IL283359A (pt)
MX (1) MX2021006039A (pt)
PL (1) PL3884670T3 (pt)
PT (1) PT3884670T (pt)
SG (1) SG11202105354YA (pt)
WO (1) WO2020106190A1 (pt)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520704B1 (en) * 2021-06-30 2022-12-06 International Business Machines Corporation Writing store data of multiple store operations into a cache line in a single cycle
BR112021008298A2 (pt) 2018-11-08 2021-08-03 Guangdong Oppo Mobile Telecommunications Corp., Ltd. método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e codificador de vídeo
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US10893298B2 (en) * 2018-12-12 2021-01-12 Tencent America LLC Method and apparatus for video coding
GB2580084B (en) * 2018-12-20 2022-12-28 Canon Kk Video coding and decoding
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
KR102443965B1 (ko) * 2019-01-01 2022-09-19 엘지전자 주식회사 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
US10742972B1 (en) * 2019-03-08 2020-08-11 Tencent America LLC Merge list construction in triangular prediction
US11589043B2 (en) * 2019-06-24 2023-02-21 Tencent America LLC Flexible slice, tile and brick partitioning
JP2021027429A (ja) * 2019-08-01 2021-02-22 シャープ株式会社 動画像符号化装置、動画像復号装置
US11792423B2 (en) 2019-11-22 2023-10-17 Qualcomm Incorporated Early termination of motion vector refinement process in video coding
US11496755B2 (en) * 2019-12-28 2022-11-08 Tencent America LLC Method and apparatus for video coding
CN117499626A (zh) * 2020-03-26 2024-02-02 阿里巴巴(中国)有限公司 用于对视频进行编码或解码的方法和装置
EP4320862A1 (en) * 2021-04-09 2024-02-14 InterDigital CE Patent Holdings, SAS Geometric partitions with switchable interpolation filter
EP4364409A1 (en) * 2021-06-28 2024-05-08 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for geometric partition mode with motion vector refinement
JP2023005871A (ja) * 2021-06-29 2023-01-18 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP7495909B2 (ja) 2021-08-05 2024-06-05 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
US20230069984A1 (en) * 2021-08-24 2023-03-09 Tencent America LLC Hardware friendly design for intra mode coding
JP2023048030A (ja) * 2021-09-27 2023-04-06 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP2023047920A (ja) * 2021-09-27 2023-04-06 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
WO2023132615A1 (ko) * 2022-01-04 2023-07-13 현대자동차주식회사 쌍 머지 후보들을 생성하여 머지 후보 리스트를 구성하는 비디오 부호화/복호화 방법 및 장치
WO2024067638A1 (en) * 2022-09-27 2024-04-04 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8724697B2 (en) * 2008-09-26 2014-05-13 Qualcomm Incorporated Locating motion vectors for video data units
EP3739883B1 (en) * 2010-05-04 2022-11-16 LG Electronics Inc. Method and apparatus for encoding and decoding a video signal
KR20130049522A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
US9554150B2 (en) * 2013-09-20 2017-01-24 Qualcomm Incorporated Combined bi-predictive merging candidates for 3D video coding
US10158866B2 (en) * 2014-09-26 2018-12-18 Qualcomm Incorporated Parsing dependency reduction for palette index coding
SG11201703454XA (en) * 2014-11-18 2017-06-29 Mediatek Inc Method of bi-prediction video coding based on motion vectors from uni-prediction and merge candidate
WO2020088689A1 (en) * 2018-11-02 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Usage of hmvp candidates in geometry partition prediction mode
CN113347429B (zh) * 2018-11-08 2023-06-23 Oppo广东移动通信有限公司 图像信号编码/解码方法及其设备
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
US20220014775A1 (en) * 2019-05-02 2022-01-13 Xris Corporation Method for encoding/decoding video signal and device therefor

Also Published As

Publication number Publication date
PL3884670T3 (pl) 2023-07-10
ES2946909T3 (es) 2023-07-27
US11558632B2 (en) 2023-01-17
JP2022507872A (ja) 2022-01-18
KR102638710B1 (ko) 2024-02-19
CN113170142A (zh) 2021-07-23
IL283359A (en) 2021-07-29
US20210281870A1 (en) 2021-09-09
WO2020106190A1 (en) 2020-05-28
EP3884670B9 (en) 2023-07-19
EP3884670A1 (en) 2021-09-29
HUE062487T2 (hu) 2023-11-28
KR20240025062A (ko) 2024-02-26
EP3884670B1 (en) 2023-05-10
EP3884670A4 (en) 2022-01-19
CA3120877A1 (en) 2020-05-28
MX2021006039A (es) 2021-09-10
AU2019384016A1 (en) 2021-06-17
EP4221205A1 (en) 2023-08-02
JP7239697B2 (ja) 2023-03-14
AU2023203444A1 (en) 2023-06-29
CN113727101A (zh) 2021-11-30
PT3884670T (pt) 2023-06-02
AU2019384016B2 (en) 2023-03-02
KR20210089776A (ko) 2021-07-16
CN113727101B (zh) 2022-10-11
US20230125381A1 (en) 2023-04-27
JP2023078188A (ja) 2023-06-06
SG11202105354YA (en) 2021-06-29

Similar Documents

Publication Publication Date Title
BR112021009848A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
JP2022140481A (ja) ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法
BR112021004984A2 (pt) aparelho e método para quantização inversa
US11968387B2 (en) Encoder, a decoder and corresponding methods for inter prediction using bidirectional optical flow
BR112021010416A2 (pt) Codificador, decodificador e métodos correspondentes para realizar desblocagem de croma para blocos que usam codificação de croma em conjunto
AU2020414917A1 (en) Cross-component adaptive loop filtering for video coding
BR112020026818A2 (pt) codificador, decodificador e métodos correspondentes de derivação de resistência de limite de filtro de desbloqueio
BR112021008016A2 (pt) codificador, decodificador e métodos correspondentes para modo de fusão
BR112021016560A2 (pt) Método e aparelho para predição intra usando modelo linear
BR112021003999A2 (pt) relação entre elementos de restrição de partição
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
BR112020025145A2 (pt) filtro de desbloqueio para fronteiras de subpartição causadas por ferramenta de codificação de subpartição intra
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
BR112021014502A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de desblocagem
CN114830665A (zh) 仿射运动模型限制
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
JP2023100701A (ja) イントラ予測のためのイントラモードコーディングを使用するエンコーダ、デコーダ、および対応する方法
BR112021012708A2 (pt) Método e aparelho de modelagem linear de componente cruzado para predição intra
ES2967903T3 (es) Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación
US11997296B2 (en) Motion field storage optimization for a line buffer
BR122023025774A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025787A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023025769A2 (pt) Filtragem loop adaptativa de componente cruzado para codificação de vídeo
BR122023021074A2 (pt) Método de desblocagem, dispositivo para uso em um codificador e/ou um decodificador de imagem, codificador, decodificador, e meio legível por computador não transitório