BR112021008654A2 - método de decodificação vídeo, método de codificação de vídeo, e aparelho de decodificação de vídeo - Google Patents

método de decodificação vídeo, método de codificação de vídeo, e aparelho de decodificação de vídeo Download PDF

Info

Publication number
BR112021008654A2
BR112021008654A2 BR112021008654-4A BR112021008654A BR112021008654A2 BR 112021008654 A2 BR112021008654 A2 BR 112021008654A2 BR 112021008654 A BR112021008654 A BR 112021008654A BR 112021008654 A2 BR112021008654 A2 BR 112021008654A2
Authority
BR
Brazil
Prior art keywords
block
information
merge candidate
prediction unit
prediction
Prior art date
Application number
BR112021008654-4A
Other languages
English (en)
Inventor
Bae Keun Lee
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp., 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 Guangdong Oppo Mobile Telecommunications Corp., Ltd. filed Critical Guangdong Oppo Mobile Telecommunications Corp., Ltd.
Publication of BR112021008654A2 publication Critical patent/BR112021008654A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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
    • 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
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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
    • 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/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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • 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/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

MÉTODO DE DECODIFICAÇÃO VÍDEO, MÉTODO DE CODIFICAÇÃO DE VÍDEO, E APARELHO DE DECODIFICAÇÃO DE VÍDEO. Trata-se de um método de decodificação de imagem de acordo com a presente invenção que pode compreender as etapas de: dividir um bloco de codificação na primeira unidade de previsão e uma segunda unidade de previsão; derivar uma lista de candidatos de mesclagem para o bloco de codificação; derivar primeiras informações de movimento para a primeira unidade de previsão e segundas informações de movimento para a segunda unidade de previsão por meio da lista de candidatos a mesclagem; e com base nas primeiras informações de movimento e nas segundas informações de movimento, adquirindo uma amostra de previsão dentro do bloco de codificação.

Description

MÉTODO DE DECODIFICAÇÃO VÍDEO, MÉTODO DE CODIFICAÇÃO DE VÍDEO, E APARELHO DE DECODIFICAÇÃO DE VÍDEO CAMPO DA TÉCNICA
[001] A presente divulgação se refere a um método de codificação e decodificação de sinal de vídeo e um aparelho para o mesmo.
FUNDAMENTOS
[002] Como os painéis de exibição estão ficando cada vez maiores, os serviços de vídeo de qualidade ainda mais alta são necessários cada vez mais. O maior problema dos serviços de vídeo de alta definição é o aumento significativo do volume de dados e, para resolver esse problema, estudos para melhorar a taxa de compressão de vídeo são realizados ativamente. Como um exemplo representativo, o Grupo de Especialistas em Cinema (MPEG) e o Grupo de Especialistas em Codificação de Vídeo (VCEG) sob a União Internacional de Telecomunicações-Telecomunicações (ITU-T) formou a Equipe de colaboração conjunta em codificação de vídeo (JCT-VC) em 2009. A JCT-VC propôs a codificação de vídeo de alta eficiência (HEVC), que é um padrão de compressão de vídeo com um desempenho de compressão cerca de duas vezes maior do que o desempenho de compressão de H.264/AVC, e é aprovado como padrão em 25 de janeiro de 2013. Com o rápido avanço nos serviços de vídeo de alta definição, o desempenho da HEVC gradualmente revela suas limitações.
SUMÁRIO
[003] Um objeto da presente divulgação é fornecer um método de aplicação de particionamento a um bloco de codificação para obter uma pluralidade de blocos de previsão na codificação/decodificação de um sinal de vídeo e um aparelho para realizar o método.
[004] Um outro objeto da presente divulgação é fornecer um método para derivar informações de movimento de cada um de uma pluralidade de blocos de previsão, na codificação/decodificação de um sinal de vídeo.
[005] Um outro objeto da presente divulgação é fornecer um método de derivar um candidato a mesclagem usando uma lista de informações de movimento entre regiões, na codificação/decodificação de um sinal de vídeo.
[006] Os problemas técnicos a serem alcançados na presente divulgação não estão limitados aos problemas técnicos mencionados acima, e outros problemas não mencionados podem ser claramente compreendidos por aquelas pessoas versadas na técnica a partir da seguinte descrição.
[007] Um método de decodificação/codificação de um sinal de vídeo de acordo com a presente divulgação pode incluir as etapas de: aplicar particionamento a um bloco de codificação para obter uma primeira unidade de previsão e uma segunda unidade de previsão; derivar uma lista de candidato a mesclagem para o bloco de codificação derivar as primeiras informações de movimento para a primeira unidade de previsão e as segundas informações de movimento para a segunda unidade de previsão usando o candidato a mesclagem; e obter uma amostra de previsão no bloco de codificação com base na primeira informação de movimento e na segunda informação de movimento. Neste ponto, se deve ou não aplicar o particionamento ao bloco de codificação é determinado com base em um tamanho do bloco de codificação, e as primeiras informações de movimento para a primeira unidade de previsão são derivadas de um primeiro candidato a mesclagem na lista de candidatos a mesclagem, e a segunda informação de movimento para a segunda unidade de previsão é derivada de um segundo candidato a mesclagem diferente do primeiro candidato a mesclagem.
[008] No método de codificação e decodificação de sinal de vídeo de acordo com a presente divulgação, quando pelo menos um dentre uma largura e uma altura do bloco de codificação é maior do que um valor limítrofe, o particionamento do bloco de codificação pode não ser permitido.
[009] No método de codificação e decodificação de sinal de vídeo de acordo com a presente divulgação, o método pode incluir ainda a etapa de decodificar as informações do primeiro índice para especificar o primeiro candidato a mesclagem e as informações do segundo índice para especificar o segundo candidato a mesclagem de um fluxo de bits, e quando um valor da segunda informação de índice é igual ou maior que um valor da primeira informação de índice, o valor da segunda informação de índice especificando o segundo candidato a mesclagem é obtido adicionando 1 ao valor da primeira informação de índice especificando o primeiro candidato a mesclagem.
[010] No método de codificação e decodificação de sinal de vídeo de acordo com a presente divulgação, quando a amostra de previsão é incluído na região limite entre a primeira unidade de previsão e a segunda unidade de previsão, a amostra de previsão pode ser derivada com base em uma operação de soma ponderada de uma primeira amostra de previsão derivada com base na primeira informação de movimento e uma segunda amostra prevista derivada com base na segunda informação de movimento.
[011] No método de codificação e decodificação de sinal de vídeo de acordo com a presente divulgação, um primeiro valor de ponderação aplicado à primeira amostra de previsão pode ser determinado com base em uma coordenada do eixo geométrico x e uma coordenada do eixo geométrico y da amostra de previsão.
[012] No método de codificação e decodificação de sinal de vídeo de acordo com a presente divulgação, um segundo valor de ponderação aplicado à segunda amostra de previsão pode ser derivado subtraindo o primeiro valor de ponderação de um valor constante.
[013] No método de codificação e decodificação de sinal de vídeo de acordo com a presente divulgação, o máximo número de candidatos a mesclagem cuja lista de candidatos a mesclagem pode incluir pode ser determinado com base em se o bloco de codificação é particionado na primeira unidade de previsão e na segunda unidade de previsão.
[014] Os recursos brevemente resumidos acima com relação à presente divulgação são aspectos meramente exemplificativos da descrição detalhada da presente divulgação que serão descritos abaixo e não limitam o escopo da presente divulgação.
[015] De acordo com a presente divulgação, a eficiência de interprevisão pode ser melhorada ao fornecer um método de aplicação de particionamento a um bloco de codificação para obter uma pluralidade de blocos de previsão e derivar informações de movimento de cada um dos blocos de previsão
[016] De acordo com a presente divulgação, a eficiência interprevisão pode ser melhorada fornecendo um método de derivar um candidato a mesclagem usando uma lista de informações de movimento inter-região.
[017] Os efeitos que podem ser obtidos a partir da presente divulgação não estão limitados aos efeitos mencionados acima, e outros efeitos não mencionados podem ser claramente compreendidos por aquelas pessoas versadas na técnica a partir da seguinte descrição.
BREVE DESCRIÇÃO DOS DESENHOS
[018] A Figura 1 é um diagrama de bloco que mostra um codificador de vídeo de acordo com uma modalidade da presente divulgação.
[019] A Figura 2 é um diagrama de bloco que mostra um decodificador de vídeo de acordo com uma modalidade da presente divulgação.
[020] A Figura 3 é uma vista que mostra uma unidade de árvore de codificação básica de acordo com uma modalidade da presente divulgação.
[021] A Figura 4 é uma vista que mostra vários tipos de particionamento de um bloco de codificação.
[022] A Figura 5 é uma vista que mostra um padrão de particionamento de uma unidade de árvore de codificação.
[023] A Figura 6 é um fluxograma que ilustra um método de interprevisão de acordo com uma modalidade da presente divulgação.
[024] A Figura 7 é uma vista que mostra movimentos não lineares de um objeto.
[025] A Figura 8 é um fluxograma que ilustra um método de interprevisão com base em um movimento afim de acordo com uma modalidade da presente divulgação.
[026] A Figura 9 é uma vista que mostra um exemplo de vetores de semente afim de cada modelo de movimento afim.
[027] A Figura 10 é uma vista que mostra um exemplo de sub-blocos de vetores afins em um modelo de movimento de 4 parâmetros.
[028] A Figura 11 é um fluxograma que ilustra um processo de derivar informações de movimento de um bloco atual usando um modo de mesclagem.
[029] A Figura 12 é uma vista que mostra um exemplo de blocos candidatos usados para derivar um candidato a mesclagem.
[030] A Figura 13 é uma vista que mostra posições de amostras de referência.
[031] A Figura 14 é uma vista que mostra um exemplo de blocos candidatos usados para derivar um candidato a mesclagem.
[032] A Figura 15 é um fluxograma que ilustra um processo de atualização de uma lista de informações de movimento inter-região.
[033] A Figura 16 é uma vista que mostra um modalidade de atualização de uma lista de candidato a mesclagem inter-região.
[034] A Figura 17 é uma vista que mostra um exemplo em que um índice de um candidato a mesclagem inter- região armazenado anteriormente é atualizado.
[035] A Figura 18 é uma vista que mostra a posição de um sub-bloco representativo.
[036] A Figura 19 é uma vista que mostra um exemplo em que uma lista de informações de movimento inter- região é gerada para cada modo de interprevisão.
[037] A Figura 20 é uma vista que mostra um exemplo em que um candidato a mesclagem inter-região incluído em uma lista de informações de movimento a longo prazo é adicionado a uma lista de candidato a mesclagem.
[038] A Figura 21 é uma vista que mostra um exemplo em que uma verificação de redundância é realizada apenas em alguns dos candidatos de mesclagem.
[039] A Figura 22 é uma vista que mostra um exemplo em que uma verificação de redundância é omitida para um candidato a mesclagem específico.
[040] A Figura 23 é uma vista que mostra exemplos de aplicação de particionamento a um bloco de codificação para obter uma pluralidade de unidades de previsão usando uma linha diagonal.
[041] A Figura 24 é uma vista que mostra exemplos de aplicação de particionamento a um bloco de codificação para obter duas unidades de previsão.
[042] A Figura 25 é uma vista que mostra exemplos de aplicação de particionamento a um bloco de codificação para obter uma pluralidade de blocos de previsão de tamanhos diferentes.
[043] A Figura 26 é uma vista que mostra blocos vizinhos usados para derivar um candidato a mesclagem triangular.
[044] A Figura 27 é uma vista para descrever exemplos de determinar a disponibilidade de um bloco vizinho para cada unidade de previsão triangular.
[045] As Figuras 28 e 29 são vistas que mostram exemplos de derivação de uma amostra de previsão com base em uma operação de soma ponderada de uma primeira amostra de previsão e uma segunda amostra de previsão.
DESCRIÇÃO DETALHADA
[046] A seguir, uma modalidade da presente divulgação será descrita em detalhes com referência aos desenhos anexos.
[047] A codificação e a decodificação de um vídeo são realizadas pela unidade de bloco. Por exemplo, um processo de codificação/decodificação, como transformada, quantização, previsão, filtragem em loop, reconstrução ou semelhantes, pode ser realizado em um bloco de codificação, um bloco de transformada ou um bloco de previsão.
[048] Em seguida, um bloco a ser codificado/decodificado será denominado como um “bloco atual”. Por exemplo, o bloco atual pode representar um bloco de codificação, um bloco de transformada ou um bloco de previsão de acordo com uma etapa do processo de codificação/decodificação atual.
[049] Além disso, pode ser entendido que o termo “unidade” usado neste relatório descritivo indica uma unidade básica para realizar um processo de codificação/decodificação específico, e o termo “bloco” indica uma matriz de amostra de um tamanho predeterminado. Salvo indicação em contrário, o “bloco” e “unidade” podem ser usados para ter o mesmo significado. Por exemplo, em uma modalidade descrita abaixo, pode ser entendido que um bloco de codificação e uma unidade de codificação têm o mesmo significado.
[050] A Figura 1 é um diagrama de bloco que mostra um codificador de vídeo de acordo com uma modalidade da presente divulgação.
[051] Com referência à Figura 1, um aparelho de codificação de vídeo 100 pode incluir uma parte de particionamento de imagem 110, uma parte de previsão 120 e 125, uma parte de transformada 130, uma parte de quantização 135, uma parte de rearranjo 160, uma parte de codificação por entropia 165, uma parte de quantização inversa 140, e parte de transformada inversa 145, uma parte de filtro 150 e uma memória
155.
[052] Cada um dos componentes mostrados na Figura 1 é mostrado independentemente para representar funções características diferentes umas das outras em um aparelho de codificação de vídeo, e isso não significa que cada componente é formado pela unidade de configuração de hardware separado ou software único. Ou seja, cada componente é incluído para ser listado como um componente por conveniência de explicação e pelo menos dois dos componentes podem ser combinados para formar um único componente, ou um componente pode ser dividido em uma pluralidade de componentes para executar uma função. Modalidades integradas e modalidades separadas dos componentes também estão incluídas no escopo da presente divulgação se não se afastarem da essência da presente divulgação.
[053] Além disso, alguns dos componentes não são componentes essenciais que desempenham funções essenciais na presente divulgação, mas podem ser componentes opcionais apenas para melhorar o desempenho. A presente divulgação pode ser implementada incluindo apenas componentes essenciais para implementar a essência da presente divulgação, excluindo componentes usados para melhorar o desempenho, e uma estrutura incluindo apenas os componentes essenciais, excluindo os componentes opcionais usados para melhorar o desempenho também está incluída no escopo do presente divulgação.
[054] A parte de particionamento de imagem 110 pode aplicar particionamento a uma imagem de entrada para obter pelo menos uma unidade de processamento. Neste ponto, a unidade de processamento pode ser uma unidade de previsão (PU), uma unidade de transformada (TU) ou uma unidade de codificação (CU). A parte de particionamento de imagem 110 pode aplicar o particionamento a uma imagem para obter uma combinação de uma pluralidade de unidades de codificação, unidades de previsão e unidades de transformada e codificar uma imagem selecionada uma combinação de uma unidade de codificação, uma unidade de previsão e uma unidade de transformada com base em um critério predeterminado (por exemplo, uma função de custo).
[055] Por exemplo, uma imagem pode ser particionada em uma pluralidade de unidades de codificação. De modo a particionar as unidades de codificação em uma imagem, uma estrutura de árvore recursiva, como uma estrutura de árvore quádrupla, pode ser usada. Um vídeo ou uma unidade de codificação particionada dentro de diferentes unidades de codificação usando a maior unidade de codificação como uma raiz pode ser particionada para ter tantos nós filhos quanto o número de unidades de codificação particionadas. Uma unidade de codificação que não é mais particionada de acordo com uma restrição predeterminada torna-se um nó folha. Isto é, quando se assume que apenas o particionamento quadrado é possível para uma unidade de codificação, a unidade de codificação pode ser particionada em até quatro unidades de codificação diferentes.
[056] Em seguida, em uma modalidade da presente divulgação, a unidade de codificação pode ser usada como um significado de uma unidade realizando a codificação ou um significado de uma unidade realizando a decodificação.
[057] A unidade de previsão pode ser aquela que é particionada em uma forma de pelo menos um quadrado, retângulo ou semelhante do mesmo tamanho dentro de uma unidade de codificação, ou pode ser qualquer unidade de previsão, entre as unidades de previsão particionadas dentro de uma unidade de codificação, que é particionada para ter uma forma e/ou tamanho diferente daqueles de outra unidade de previsão.
[058] Se a unidade de codificação não for uma unidade de codificação menor quando uma unidade de previsão que realiza intraprevisão com base na unidade de codificação é gerada, intraprevisão pode ser realizada sem particionar uma imagem em uma pluralidade de unidades de previsão N x N.
[059] A parte de previsão 120 e 125 pode incluir uma parte de interprevisão 120 que executa a interprevisão e uma parte de intraprevisão 125 que realiza a intraprevisão. Pode ser determinado se usar interprevisão ou realizar intraprevisão para uma unidade de previsão e determinar informações específicas (por exemplo, modo de intraprevisão, vetor de movimento, imagem de referência, etc.) de acordo com cada método de previsão. Neste ponto, uma unidade de processamento para realizar previsão pode ser diferente de uma unidade de processamento para determinar um método de previsão e conteúdo específico. Por exemplo, um método de previsão e um modo de previsão podem ser determinados em uma unidade de previsão e a previsão pode ser realizada em uma unidade de transformada. Um coeficiente residual (bloco residual) entre o bloco de previsão gerado e o bloco original pode ser inserido na parte de transformada 130. Além disso, a informação do modo de previsão, informação do vetor de movimento e semelhantes usados para previsão podem ser codificados pela parte de codificação por entropia 165 junto com o coeficiente residual e transferido para um decodificador. Quando um modo de codificação específico é usado, um bloco original pode ser codificado como está e transmitido para um decodificador sem gerar um bloco de previsão através da parte de previsão 120 e
125.
[060] A parte de interprevisão 120 pode prever uma unidade de previsão com base na informação de pelo menos uma imagem entre as imagens antes ou depois da imagem atual e, em alguns casos, pode prever uma unidade de previsão com base na informação de uma área parcial que tem foi codificado na imagem atual. A parte de interprevisão 120 pode incluir uma parte de interpolação de imagem de referência, uma parte de previsão de movimento e uma parte de compensação de movimento.
[061] A parte de interpolação de imagem de referência pode receber informações de imagem de referência da memória 155 e gerar informações de amostra de um número inteiro de amostras ou menos a partir da imagem de referência. No caso de uma amostra de luminância, um filtro de interpolação de 8 derivações baseado em DCT com um coeficiente de filtro variável pode ser usado para gerar informações de amostra de um número inteiro de amostras ou menos pela unidade de 1/4 amostras. No caso de um sinal de diferença de cor, um filtro de interpolação de 4 coeficientes baseado em DCT com um coeficiente de filtro variável pode ser usado para gerar informações de amostra de um número inteiro de amostras ou menos pela unidade de 1/8 amostras.
[062] A parte de previsão de movimento pode realizar a previsão de movimento com base na imagem de referência interpolada pela parte de interpolação da imagem de referência. Vários métodos, como um algoritmo de correspondência de bloco baseado em pesquisa completa (FBMA), uma pesquisa em três etapas (TSS) e um novo algoritmo de pesquisa em três etapas (NTS), podem ser usados como um método de cálculo de um vetor de movimento. O vetor de movimento pode ter um valor de vetor de movimento de uma unidade de 1/2 ou 1/4 amostras com base em amostras interpoladas. A parte de previsão de movimento pode prever uma unidade de previsão atual variando o método de previsão de movimento. Vários métodos, como um método de salto, um método de mesclagem, um método de previsão de vetor de movimento avançado (AMVP), um método de cópia intrabloco e semelhantes, podem ser usados como o método de previsão de movimento.
[063] A parte intraprevisão 125 pode gerar uma unidade de previsão com base nas informações sobre as amostras de referência na vizinhança do bloco atual, que é a informação da amostra na imagem atual. Quando um bloco na vizinhança da unidade de previsão atual é um bloco no qual a interprevisão foi realizada e, portanto, a amostra de referência é uma amostra na qual a interprevisão foi realizada, a amostra de referência incluída no bloco no qual a interprevisão foi realizada pode ser usada no lugar da informação de amostra de referência de um bloco na vizinhança em que a intraprevisão foi realizada. Ou seja, quando uma amostra de referência não está disponível, pelo menos uma amostra de referência entre as amostras de referência disponíveis pode ser usada no lugar das informações da amostra de referência indisponíveis.
[064] Na intraprevisão, o modo de previsão pode ter um modo de previsão angular que usa informações de amostra de referência de acordo com uma direção de previsão e um modo de previsão não angular que não usa informações direcionais ao realizar a previsão. Um modo para prever informações de luminância pode ser diferente de um modo para prever informações de diferença de cor e informações de modo de intraprevisão usadas para prever informações de luminância ou informações de sinal de luminância previstas podem ser usadas para prever as informações de diferença de cores.
[065] Se o tamanho da unidade de previsão for o mesmo que o tamanho da unidade de transformada quando a intraprevisão é realizada, a intraprevisão pode ser realizada para a unidade de previsão com base em uma amostra no lado esquerdo, uma amostra na parte superior do lado esquerdo e uma amostra na parte superior da unidade de previsão. No entanto, se o tamanho da unidade de previsão for diferente do tamanho da unidade de transformada quando a intraprevisão é realizada, a intraprevisão pode ser realizada usando uma amostra de referência com base na unidade de transformada. Além disso, a intraprevisão usando particionamento N x N pode ser usada apenas para a menor unidade de codificação.
[066] O método de intraprevisão pode gerar um bloco de previsão após a aplicação de um filtro de Suavização intra-adaptativa (AIS) para a amostra de referência de acordo com um modo de previsão. O tipo de filtro de AIS aplicado à amostra de referência pode variar. De modo a realizar o método de intraprevisão, o modo de intraprevisão da unidade de previsão atual pode ser previsto a partir do modo de intraprevisão da unidade de previsão existente na vizinhança da unidade de previsão atual. Quando um modo de previsão da unidade de previsão atual é previsto usando a informação de modo de previsão da unidade de previsão vizinha, se os modos de intraprevisão da unidade de previsão atual são os mesmos que a unidade de previsão na vizinhança, informação indicando que os modos de previsão de a unidade de previsão atual é a mesma que a unidade de previsão na vizinhança pode ser transmitida usando informações de sinalizador predeterminadas, e se os modos de previsão da unidade de previsão atual e a unidade de previsão na vizinhança forem diferentes um do outro, as informações de modo de previsão do bloco atual pode ser codificado executando a codificação por entropia.
[067] Além disso, um bloco residual incluindo uma unidade de previsão que realizou previsão com base na unidade de previsão gerada pela parte de previsão 120 e 125 e informação de coeficiente residual, que é um valor de diferença da unidade de previsão com o bloco original, pode ser gerado. O bloco residual gerado pode ser inserido na parte de transformada 130.
[068] A parte de transformada 130 pode transformar o bloco residual incluindo o bloco original e a informação do coeficiente residual da unidade de previsão gerada através da parte de previsão 120 e 125 usando um método de transformada, tal como Transformada de Cosseno Discreta (DCT) ou Transformada Seno Discreta (DST). Aqui, o núcleo de transformada de DCT inclui pelo menos um dentre DCT2 e DCT8, e o núcleo de transformada de DST inclui DST7. Aplicar ou não DCT ou DST para transformar o bloco residual pode ser determinada com base nas informações do modo de intraprevisão de uma unidade de previsão usada para gerar o bloco residual. A transformada no bloco residual pode ser saltada. Um sinalizador indicando se deve ou não saltar a transformada no bloco residual pode ser codificado. O salto de transformada pode ser permitido para um bloco residual com um tamanho menor ou igual a um limiar, um componente luma ou um componente croma sob o formato 4:4:4.
[069] A parte de quantização 135 pode quantizar valores transformados no domínio de frequência pela parte de transformada 130. Os coeficientes de quantização podem variar de acordo com o bloco ou a importância de um vídeo. Um valor calculado pela parte de quantização 135 pode ser fornecido para a parte de quantização inversa 140 e a parte de rearranjo
160.
[070] A parte de rearranjo 160 pode reorganizar os valores dos coeficientes para os coeficientes residuais quantizados.
[071] A parte de rearranjo 160 pode alterar os coeficientes de uma forma de bloco bidimensional em uma forma de vetor unidimensional por meio de um método de varredura de coeficiente. Por exemplo, a parte de rearranjo 160 pode varrer coeficientes de DC até coeficientes de domínio de alta frequência usando um método de varredura em zigue-zague e alterar os coeficientes em uma forma de vetor unidimensional. De acordo com o tamanho da unidade de transformada e o modo de intraprevisão, uma varredura vertical de varredura dos coeficientes de uma forma de bloco bidimensional na direção da coluna e uma varredura horizontal de varredura dos coeficientes de uma forma de bloco bidimensional na linha direção pode ser usada em vez da varredura em zigue-zague. Ou seja, de acordo com o tamanho da unidade de transformada e o modo de intraprevisão, um método de varredura que será usado pode ser determinado entre a varredura em zigue-zague, a varredura na direção vertical e a varredura na direção horizontal.
[072] A parte de codificação por entropia 165 pode realizar a codificação por entropia com base nos valores calculados pela parte de rearranjo 160. A codificação por entropia pode usar vários métodos de codificação, tais como Golomb Exponencial, Codificação de Comprimento Variável Adaptável ao Contexto (CAVLC), Codificação Aritmética Binária Adaptável ao Contexto (CABAC) e semelhantes.
[073] A parte de codificação por entropia 165 pode codificar várias informações, como informações de coeficiente residual e informações de tipo de bloco de uma unidade de codificação, informações de modo de previsão, informações de unidade de particionamento, informações de unidade de previsão e informações de unidade de transmissão, informações de vetor de movimento, informações de quadro de referência informações de interpolação de bloco e entrada de informação de filtragem da parte de rearranjo 160 e das partes de previsão 120 e 125.
[074] A parte de codificação por entropia 165 pode codificar por entropia o valor do coeficiente de uma entrada de unidade de codificação da parte de rearranjo 160.
[075] A parte de quantização inversa 140 e a parte de transformada inversa 145 quantizam inversamente os valores quantizados pela parte de quantização 135 e transformam inversamente os valores transformados pela parte de transformada 130. O coeficiente residual gerado pela parte de quantização inversa 140 e a parte de transformada inversa 145 pode ser combinada com a unidade de previsão prevista através de uma parte de estimativa de movimento, uma parte de compensação de movimento e uma parte de intraprevisão incluída na parte de previsão 120 e 125 para gerar um bloco reconstruído.
[076] A parte do filtro 150 pode incluir pelo menos um dentre um filtro de desbloqueio, uma unidade de correção de deslocamento e um Filtro de Loop Adaptável (ALF).
[077] O filtro de desbloqueio pode remover a distorção de bloco gerada pela fronteira entre os blocos na imagem reconstruída. De modo a determinar se o desbloqueio deve ou não ser realizado, a aplica ou não o filtro de desbloqueio ao bloco atual pode ser determinada com base nas amostras incluídas em várias colunas ou linhas incluídas no bloco. Um filtro forte ou um filtro fraco pode ser aplicado de acordo com a força de filtragem de desbloqueio necessária quando o filtro de desbloqueio é aplicado a um bloco. Além disso, quando a filtragem de direção vertical e a filtragem de direção horizontal são realizadas na aplicação do filtro de desbloqueio, a filtragem de direção horizontal e a filtragem de direção vertical podem ser processadas em paralelo.
[078] A unidade de correção de deslocamento pode corrigir um deslocamento para o vídeo original pela unidade de amostra para um vídeo no qual o desbloqueio foi realizado. Para realizar a correção de deslocamento para uma imagem específica, é possível usar um método de divisão de amostras incluídas no vídeo em um certo número de áreas, determinando uma área para realizar o deslocamento e aplicando o deslocamento à área, ou um método de aplicar um deslocamento considerando as informações de borda de cada amostra.
[079] Filtro de Loop Adaptável (ALF) pode ser realizada com base em um valor obtido comparando o vídeo reconstruído e filtrado com o vídeo original. Depois de dividir as amostras incluídas no vídeo em grupos predeterminados, um filtro a ser aplicado a um grupo correspondente pode ser determinado e a filtragem pode ser realizada de forma diferente para cada grupo. Um sinal de luminância, que é a informação relacionada a se aplica ou não ALF, pode ser transmitido para cada unidade de codificação (CU), e a forma e o coeficiente de filtro de um filtro de ALF a ser aplicado podem variar de acordo com cada bloco. Além disso, um filtro de ALF do mesmo tipo (tipo fixo) pode ser aplicado independentemente da característica do bloco a ser aplicado.
[080] A memória 155 pode armazenar o bloco reconstruído ou imagem calculada através da parte do filtro 150, e o bloco reconstruído e armazenado ou imagem pode ser fornecido para a parte de previsão 120 e 125 quando a interprevisão é realizada.
[081] A Figura 2 é um diagrama de bloco que mostra um decodificador de vídeo de acordo com uma modalidade da presente divulgação.
[082] Com referência à Figura 2, um decodificador de vídeo 200 pode incluir uma parte de decodificação por entropia 210, uma parte de rearranjo 215, uma parte de quantização inversa 220, uma parte de transformada inversa 225, uma parte de previsão 230 e 235, uma parte de filtro 240 e uma memória 245.
[083] Quando um fluxo de bits de vídeo é recebido de um codificador de vídeo, o fluxo de bits de entrada pode ser decodificado em um procedimento oposto ao do codificador de vídeo.
[084] A parte de decodificação por entropia 210 pode realizar a decodificação por entropia em um procedimento oposto ao de realizar a codificação de entropia na parte de decodificação por entropia do codificador de vídeo. Por exemplo,
vários métodos correspondentes ao método realizado pelo codificador de vídeo, tais como Golomb Exponencial, Codificação de Comprimento Variável Adaptável ao Contexto (CAVLC) e Codificação Aritmética Binária Adaptável ao Contexto (CABAC), podem ser aplicados.
[085] A parte de decodificação por entropia 210 pode decodificar informações relacionadas à intraprevisão e interprevisão realizada pelo codificador.
[086] A parte de rearranjo 215 pode realizar o rearranjo na entropia de fluxo de bits decodificada pela parte de decodificação por entropia 210 com base no método de rearranjo realizado pelo codificador. Os coeficientes expressos em uma forma de vetor unidimensional podem ser reconstruídos e reorganizados como coeficientes de forma de bloco bidimensional. A parte de rearranjo 215 pode receber informações relacionadas à varredura de coeficiente realizada pela parte de codificação e realizar a reconstrução por meio de um método de varredura inversa com base na ordem de varredura realizada pela parte de codificação correspondente.
[087] A parte de quantização inversa 220 pode realizar quantização inversa com base em um parâmetro de quantização fornecido pelo codificador e um valor de coeficiente do bloco reorganizado.
[088] A parte de transformada inversa 225 pode realizar a transformada inversa na transformada, isto é, DCT ou DST, realizada pela parte de transformada em um resultado da quantização realizada pelo codificador de vídeo, isto é, DCT inverso ou DST inverso. Aqui, o núcleo de transformada DCT pode incluir pelo menos um dentre DCT2 e DCT8, e o núcleo de transformada de DST pode incluir DST7. Alternativamente,
quando a transformada é saltada no codificador de vídeo, mesmo a parte de transformada inversa 225 pode não realizar a transformada inversa. A transformada inversa pode ser realizada com base em uma unidade de transmissão determinada pelo codificador de vídeo. A parte de transformada inversa 225 do decodificador de vídeo pode executar seletivamente uma técnica de transformada (por exemplo, DCT ou DST) de acordo com uma pluralidade de partes de informações, como um método de previsão, um tamanho de um bloco atual, uma direção de previsão e semelhantes.
[089] A parte de previsão 230 e 235 pode gerar um bloco de previsão com base nas informações relacionadas à geração de um bloco de previsão fornecido pelo decodificador por entropia 210 e informações sobre um bloco ou imagem anteriormente decodificado fornecida pela memória 245.
[090] Como descrito acima, se o tamanho da unidade de previsão e o tamanho da unidade de transformada forem os mesmos quando a intraprevisão é realizada da mesma maneira que a operação do codificador de vídeo, a intraprevisão é realizada na unidade de previsão com base na amostra existente no lado esquerdo, a amostra no lado superior esquerdo e a amostra na parte superior da unidade de previsão. No entanto, se o tamanho da unidade de previsão e o tamanho da unidade de transformada forem diferentes quando a intraprevisão é realizada, a intraprevisão pode ser realizada usando uma amostra de referência com base em uma unidade de transformada. Além disso, a intraprevisão usando particionamento N x N pode ser usada apenas para a menor unidade de codificação.
[091] A parte de previsão 230 e 235 pode incluir uma parte de determinação da unidade de previsão, uma parte de interprevisão e uma parte de intraprevisão. A parte de determinação da unidade de previsão pode receber várias informações, como entrada de informações da unidade de previsão da parte de decodificação por entropia 210, informações de modo de previsão do método de intraprevisão, informações relacionadas à previsão de movimento de um método de interprevisão e semelhantes, identificar a unidade de previsão a partir da unidade de codificação atual e determinar se a unidade de previsão realiza interprevisão ou intraprevisão. A parte de interprevisão 230 pode realizar a interprevisão na unidade de previsão atual com base na informação incluída em pelo menos uma imagem entre as imagens antes ou depois da imagem atual, incluindo a unidade de previsão atual, usando as informações necessárias para a interprevisão da unidade de previsão atual fornecida pelo codificador de vídeo. Alternativamente, a parte de interprevisão 230 pode realizar interprevisão com base na informação em uma área parcial anteriormente reconstruída na imagem atual incluindo a unidade de previsão atual.
[092] De modo a realizar a interprevisão, pode ser determinado, com base na unidade de codificação, se o método de previsão de movimento da unidade de previsão incluída em uma unidade de codificação correspondente é um modo de salto, um modo de mesclagem, um modo de previsão de vetor de movimento (Modo AMVP) ou um modo de cópia intrabloco.
[093] A parte intraprevisão 235 pode gerar um bloco de previsão com base nas informações sobre a amostra na imagem atual. Quando a unidade de previsão é uma unidade de previsão que executou intraprevisão, a intraprevisão pode ser realizada com base nas informações do modo de intraprevisão da unidade de previsão fornecidas pelo codificador de vídeo. A parte de intraprevisão 235 pode incluir um filtro de Suavização intra-adaptativa (AIS), uma parte de interpolação de amostra de referência e um filtro de DC. O filtro de AIS é uma parte que realiza a filtragem na amostra de referência do bloco atual e pode determinar se deve ou não aplicar o filtro de acordo com o modo de previsão da unidade de previsão atual e aplicar o filtro. A filtragem de AIS pode ser realizada na amostra de referência do bloco atual usando o modo de previsão e informações de filtro de AIS da unidade de previsão fornecida pelo codificador de vídeo. Quando o modo de previsão do bloco atual é um modo que não executa a filtragem de AIS, o filtro de AIS pode não ser aplicado.
[094] Quando o modo de previsão da unidade de previsão é uma unidade de previsão que realiza intraprevisão com base em um valor de amostra obtido por interpolação da amostra de referência, a parte de interpolação de amostra de referência pode gerar uma amostra de referência de uma unidade de amostra com um valor inteiro ou menos interpolando a amostra de referência. Quando o modo de previsão da unidade de previsão atual é um modo de previsão que gera um bloco de previsão sem interpolar a amostra de referência, a amostra de referência não pode ser interpolada. O filtro de DC pode gerar um bloco de previsão por meio da filtragem quando o modo de previsão do bloco atual é o modo de DC.
[095] O bloco reconstruído ou imagem pode ser fornecido à parte do filtro 240. A parte do filtro 240 pode incluir um filtro de desbloqueio, uma unidade de correção de deslocamento e um ALF.
[096] Informações sobre se um filtro de desbloqueio é aplicado a um bloco ou imagem correspondente e informações sobre se um filtro forte ou um filtro fraco é aplicado quando um filtro de desbloqueio é aplicado podem ser fornecidas pelo codificador de vídeo. O filtro de desbloqueio do decodificador de vídeo pode ser fornecido com informações relacionadas ao filtro de desbloqueio fornecido pelo codificador de vídeo e o decodificador de vídeo pode realizar a filtragem de desbloqueio em um bloco correspondente.
[097] A unidade de correção de deslocamento pode executar correção de deslocamento no vídeo reconstruído com base no tipo de correção de deslocamento e nas informações de valor de deslocamento aplicadas ao vídeo quando a codificação é realizada.
[098] O ALF pode ser aplicado a uma unidade de codificação com base nas informações sobre a aplicação ou não do ALF e informações sobre os coeficientes de ALF fornecidas pelo codificador. As informações de ALF podem ser fornecidas para serem incluídas em um conjunto de parâmetros específico.
[099] A memória 245 pode armazenar a imagem reconstruída ou bloco e usá-lo como uma imagem de referência ou um bloco de referência e pode fornecer a imagem reconstruída para uma unidade de saída.
[100] A Figura 3 é uma vista que mostra uma unidade de árvore de codificação básica de acordo com uma modalidade da presente divulgação.
[101] Um bloco de codificação de um tamanho máximo pode ser definido como um bloco de árvore de codificação. Uma imagem é particionada em uma pluralidade de unidades de árvore de codificação (CTUs). A unidade de árvore de codificação é uma unidade de codificação com um tamanho máximo e pode ser denominada como uma Unidade de Codificação Grande (LCU). A Figura 3 mostra um exemplo no qual uma imagem é particionada em uma pluralidade de unidades de árvore de codificação.
[102] O tamanho da unidade de árvore de codificação pode ser definido em um nível de imagem ou um nível de sequência. Para este fim, a informação que indica o tamanho da unidade da árvore de codificação pode ser sinalizada através de um conjunto de parâmetros de imagem ou um conjunto de parâmetros de sequência.
[103] Por exemplo, o tamanho da unidade de árvore de codificação para toda a imagem em uma sequência pode ser definido para 128 x 128. Alternativamente, no nível da imagem, qualquer um dentre 128 x 128 e 256 x 256 pode ser determinado como o tamanho da unidade da árvore de codificação. Por exemplo, o tamanho da unidade de árvore de codificação pode ser definido para 128 x 128 em uma primeira imagem, e o tamanho da unidade de árvore de codificação pode ser definido para 256 x 256 em uma segunda imagem.
[104] Os blocos de codificação podem ser gerados particionando uma unidade de árvore de codificação. O bloco de codificação indica uma unidade básica para realizar a codificação/decodificação. Por exemplo, a previsão ou transformada pode ser realizada para cada bloco de codificação, ou um modo de codificação de previsão pode ser determinado para cada bloco de codificação. Aqui, o modo de codificação de previsão indica um método de geração de uma imagem de previsão. Por exemplo, o modo de codificação de previsão pode incluir previsão dentro de uma imagem (intraprevisão), previsão entre imagens (interprevisão), referência de imagem atual (CPR) ou cópia intrabloco (IBC) ou previsão combinada. Para o bloco de codificação, um bloco de previsão pode ser gerado usando pelo menos um modo de codificação de previsão entre a intraprevisão, a interprevisão, a referência de imagem atual e a previsão combinada.
[105] As informações que indicam o modo de codificação de previsão do bloco atual podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, a informação pode ser um sinalizador de 1 bit indicando se o modo de codificação de previsão é um modo intra ou um modo inter. Somente quando o modo de codificação de previsão do bloco atual é determinado como o modo inter, a referência da imagem atual ou a previsão combinada podem ser usadas.
[106] A referência de imagem atual é para definir a imagem atual como uma imagem de referência e obter um bloco de previsão do bloco atual de uma área que já foi codificada/decodificada na imagem atual. Aqui, a imagem atual significa uma imagem incluindo o bloco atual. As informações que indicam se a referência de imagem atual é aplicada ao bloco atual podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações podem ser um sinalizador de 1 bit. Quando o sinalizador é verdadeiro, o modo de codificação de previsão do bloco atual pode ser determinado como a referência da imagem atual e, quando o sinalizador é falso, o modo de previsão do bloco atual pode ser determinado como interprevisão.
[107] Alternativamente, o modo de codificação de previsão do bloco atual pode ser determinado com base em um índice de imagem de referência. Por exemplo, quando o índice da imagem de referência indica a imagem atual, o modo de codificação de previsão do bloco atual pode ser determinado como a referência da imagem atual. Quando o índice de imagem de referência indica uma imagem diferente da imagem atual, o modo de codificação de previsão do bloco atual pode ser determinado como interprevisão. Ou seja, a referência de imagem atual é um método de previsão usando informações em uma área em que a codificação/decodificação foi concluída na imagem atual, e a interprevisão é um método de previsão usando informações em outra imagem na qual a codificação/decodificação foi concluída.
[108] A previsão combinada representa um modo de codificação no qual dois ou mais entre a intraprevisão, a interprevisão e a imagem de referência atual são combinados. Por exemplo, quando a previsão combinada é aplicada, um primeiro bloco de previsão pode ser gerado com base em um entre a intraprevisão, interprevisão e a referência de imagem atual, e um segundo bloco de previsão pode ser gerado com base em outro. Quando o primeiro bloco de previsão e o segundo bloco de previsão são gerados, um bloco de previsão final pode ser gerado por meio de uma operação média ou uma operação de soma ponderada do primeiro bloco de previsão e do segundo bloco de previsão. As informações que indicam se ou não a previsão combinada é aplicada podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit.
[109] A Figura 4 é uma vista que mostra vários tipos de particionamento de um bloco de codificação.
[110] O bloco de codificação pode ser particionado em uma pluralidade de blocos de codificação com base em particionamento de árvore quádrupla, particionamento de árvore binária ou particionamento de árvore ternária. O bloco de codificação particionado pode ser particionado novamente em uma pluralidade de blocos de codificação com base no particionamento de árvore quádrupla, no particionamento de árvore binária ou no particionamento de árvore ternária.
[111] O particionamento de árvore quádrupla se refere a uma técnica de particionamento que particiona um bloco atual em quatro blocos. Como resultado do particionamento de árvore quádrupla, o bloco atual pode ser particionado em quatro particionamentos quadrados (consultar “SPLIT_QT” da Figura 4 (a)).
[112] O particionamento de árvore binária se refere a uma técnica de particionamento que particiona um bloco atual em dois blocos. O particionamento de um bloco atual em dois blocos ao longo da direção vertical (isto é, usando uma linha vertical cruzando o bloco atual) pode ser denominado como particionamento de árvore binária de direção vertical e particionamento de um bloco atual em dois blocos ao longo da direção horizontal (isto é, usando uma linha horizontal cruzando o bloco atual) pode ser denominado como particionamento de árvore binária de direção horizontal. Como resultado do particionamento da árvore binária, o bloco atual pode ser particionado em dois particionamentos não quadrados. “SPLIT_BT_VER” da Figura 4 (b) mostra um resultado do particionamento de árvore binária de direção vertical e “SPLIT_BT_HOR” da Figura 4 (c) mostra um resultado do particionamento da árvore binária na direção horizontal.
[113] O particionamento de árvore ternária se refere a uma técnica de particionamento que particiona um bloco atual em três blocos. Particionar um bloco atual em três blocos ao longo da direção vertical (isto é, usando duas linhas verticais cruzando o bloco atual) pode ser denominado como particionamento de árvore ternária na direção vertical e particionar um bloco atual em três blocos ao longo da direção horizontal (isto é, usando duas linhas horizontais cruzando o bloco atual) podem ser denominado como particionamento de árvore ternária na direção horizontal. Como resultado do particionamento de árvore ternária, o bloco atual pode ser particionado em três particionamentos não quadrados. Neste ponto, a largura/altura de um particionamento posicionado no centro do bloco atual pode ser duas vezes maior que a largura/altura das outras particionamentos. “SPLIT_TT_VER” da Figura 4 (d) mostra um resultado do particionamento de árvore tripla na direção vertical e “SPLIT_TT_HOR” da Figura 4 (e) mostra um resultado do particionamento de árvore ternária na direção horizontal.
[114] O número de vezes de particionamento de uma unidade de árvore de codificação pode ser definido como uma profundidade de particionamento. A profundidade máxima de particionamento de uma unidade de árvore de codificação pode ser determinada no nível da sequência ou da imagem. Consequentemente, a profundidade máxima de particionamento de uma unidade de árvore de codificação pode ser diferente para cada sequência ou imagem.
[115] Alternativamente, a profundidade máxima de particionamento para cada técnica de particionamento pode ser determinada individualmente. Por exemplo, a profundidade de particionamento máxima permitida para o particionamento de árvore quádrupla pode ser diferente da profundidade de particionamento máxima permitida para o particionamento de árvore binária e/ou o particionamento de árvore ternária.
[116] O codificador pode sinalizar informações indicando pelo menos um dentre o tipo de particionamento e a profundidade de particionamento do bloco atual por meio de um fluxo de bits. O decodificador pode determinar o tipo de particionamento e a profundidade de particionamento de uma unidade de árvore de codificação com base nas informações analisadas a partir do fluxo de bits.
[117] A Figura 5 é uma vista que mostra um padrão de particionamento de uma unidade de árvore de codificação.
[118] O particionamento de um bloco de codificação usando uma técnica de particionamento, como particionamento de árvore quádrupla, particionamento de árvore binária e/ou particionamento de árvore ternária, pode ser denominado como particionamento de múltiplas árvores.
[119] Os blocos de codificação gerados pela aplicação do particionamento de árvores múltiplas a um bloco de codificação podem ser denominados como blocos de codificação inferiores. Quando a profundidade de particionamento de um bloco de codificação é k, a profundidade de particionamento dos blocos de codificação inferiores é definida como k + 1.
[120] Ao contrário, para blocos de codificação com uma profundidade de particionamento de k + 1, um bloco de codificação com uma profundidade de particionamento de k pode ser denominado como um bloco de codificação superior.
[121] O tipo de particionamento do bloco de codificação atual pode ser determinado com base em pelo menos um dentre um tipo de particionamento de um bloco de codificação superior e um tipo de particionamento de um bloco de codificação vizinho. Aqui, o bloco de codificação vizinho é um bloco de codificação adjacente ao bloco de codificação atual e pode incluir pelo menos um dentre um bloco vizinho superior e um bloco vizinho esquerdo do bloco de codificação atual e um bloco vizinho adjacente ao canto superior esquerdo. Aqui, o tipo de particionamento pode incluir pelo menos um dentre se um particionamento de árvore quádrupla é aplicado, se um particionamento de árvore binária é aplicado, uma direção de particionamento de árvore binária, se um particionamento de árvore ternária é aplicado e direção de particionamento de árvore ternária.
[122] De modo a determinar um tipo de particionamento de um bloco de codificação, as informações que indicam se ou não o bloco de codificação pode ser particionado podem ser sinalizadas através de um fluxo de bits. A informação é um sinalizador de 1 bit de “split_cu_flag”, e quando o sinalizador é verdadeiro, indica que o bloco de codificação é particionado por uma técnica de particionamento de árvore quádrupla .
[123] Quando split_cu_flag for verdadeiro, informações indicando se o bloco de codificação é particionado em árvore quádrupla podem ser sinalizadas por meio de um fluxo de bits. A informação é um sinalizador de 1 bit de split_qt_flag e, quando o sinalizador for verdadeiro, o bloco de codificação pode ser particionado em quatro blocos.
[124] Por exemplo, no exemplo mostrado na Figura 5, como uma unidade de árvore de codificação é particionada em árvore quádrupla, quatro blocos de codificação com uma profundidade de particionamento de 1 são gerados. Além disso, é mostrado que o particionamento de árvore quádrupla é aplicado novamente ao primeiro e quarto blocos de codificação entre os quatro blocos de codificação gerados como resultado do particionamento de árvore quádrupla. Como resultado, quatro blocos de codificação com uma profundidade de particionamento de 2 podem ser gerados.
[125] Além disso, os blocos de codificação com uma profundidade de particionamento de 3 podem ser gerados aplicando o particionamento de árvore quádrupla novamente a um bloco de codificação com uma profundidade de particionamento de 2.
[126] Quando o particionamento de árvore quádrupla não é aplicado ao bloco de codificação, se o particionamento de árvore binária ou o particionamento de árvore ternária é realizado no bloco de codificação pode ser determinado considerando pelo menos um dentre o tamanho do bloco de codificação, se o bloco de codificação está posicionado no limite da imagem, a profundidade máxima de particionamento e o tipo de particionamento de um bloco vizinho. Quando é determinado realizar o particionamento de árvore binária ou particionamento de árvore ternária no bloco de codificação, as informações que indicam a direção de particionamento podem ser sinalizadas através de um fluxo de bits. As informações podem ser um sinalizador de 1 bit de mtt_split_cu_vertical_flag. Com base no sinalizador, se a direção de particionamento é uma direção vertical ou uma direção horizontal pode ser determinada. Além disso, as informações que indicam se o particionamento de árvore binária ou o particionamento de árvore ternária são aplicados ao bloco de codificação podem ser sinalizadas por meio de um fluxo de bits. A informação pode ser um sinalizador de 1 bit de mtt_split_cu_binary_flag. Com base no sinalizador, pode ser determinado se o particionamento de árvore binária ou o particionamento de árvore ternária é aplicado ao bloco de codificação.
[127] Por exemplo, no exemplo mostrado na Figura 5, é mostrado que o particionamento de árvore binária de direção vertical é aplicado a um bloco de codificação com uma profundidade de particionamento de 1, o particionamento de árvore ternária de direção vertical é aplicado ao bloco de codificação do lado esquerdo entre os blocos de codificação gerados como resultado do particionamento, e o particionamento da árvore binária na direção vertical é aplicado ao bloco de codificação do lado direito.
[128] A interprevisão é um modo de codificação de previsão que prevê um bloco atual usando informações de uma imagem anterior. Por exemplo, um bloco na mesma posição que o bloco atual na imagem anterior (doravante, um bloco colocado) pode ser definido como o bloco de previsão do bloco atual. Daqui em diante, um bloco de previsão gerado com base em um bloco na mesma posição que o bloco atual será denominado como um bloco de previsão colocado.
[129] Por outro lado, quando um objeto existente na imagem anterior mudou para outra posição na imagem atual, o bloco atual pode ser efetivamente previsto usando um movimento do objeto. Por exemplo, quando a direção do movimento e o tamanho de um objeto podem ser conhecidos comparando a imagem anterior e a imagem atual, um bloco de previsão (ou uma imagem de previsão) do bloco atual pode ser gerado considerando as informações de movimento do objeto. Daqui em diante, o bloco de previsão gerado usando informações de movimento pode ser denominado como um bloco de previsão de movimento.
[130] Um bloco residual pode ser gerado subtraindo o bloco de previsão do bloco atual. Neste ponto, quando há um movimento de um objeto, a energia do bloco residual pode ser reduzida usando o bloco de previsão de movimento em vez do bloco de previsão colocado e, portanto, o desempenho de compressão do bloco residual pode ser melhorado.
[131] Conforme descrito acima, a geração de um bloco de previsão usando informações de movimento pode ser denominada como previsão de compensação de movimento. Na maioria das interprevisões, um bloco de previsão pode ser gerado com base na previsão de compensação de movimento.
[132] As informações de movimento podem incluir pelo menos um dentre um vetor de movimento, um índice de imagem de referência, uma direção de previsão e um índice de peso bidirecional. O vetor de movimento indica a direção do movimento e o tamanho de um objeto. O índice de imagem de referência especifica uma imagem de referência do bloco atual entre as imagens de referência incluídas em uma lista de imagens de referência. A direção de previsão indica qualquer um dentre previsão L0 unidirecional, previsão L1 unidirecional e previsão bidirecional (previsão L0 e previsão L1). De acordo com a direção de previsão do bloco atual, pelo menos uma entre as informações de movimento na direção L0 e as informações de movimento na direção L1 podem ser usadas. O índice de peso bidirecional especifica um valor de ponderação aplicado a um bloco de previsão L0 e um valor de ponderação aplicado a um bloco de previsão L1.
[133] A Figura 6 é um fluxograma que ilustra um método de interprevisão de acordo com uma modalidade da presente divulgação.
[134] Com referência à Figura 6, o método de interprevisão inclui as etapas de determinação de um modo de interprevisão de um bloco atual (S601), aquisição de informações de movimento do bloco atual de acordo com o modo de interprevisão determinado (S602) e realização de previsão de compensação de movimento para o bloco atual com base nas informações de movimento adquiridas (S603).
[135] Aqui, o modo de interprevisão representa várias técnicas para determinar informações de movimento do bloco atual e pode incluir um modo de interprevisão que usa informações de movimento de translação e um modo de interprevisão que usa informações de movimento afins. Por exemplo, o modo de interprevisão usando informações de movimento translacional pode incluir um modo de mesclagem e um modo de previsão de vetor de movimento, e o modo de interprevisão usando informações de movimento afim pode incluir um modo de mesclagem afim e um modo de previsão de vetor de movimento afim. As informações de movimento do bloco atual podem ser determinadas com base em um bloco vizinho adjacente ao bloco atual ou informações analisadas a partir de um fluxo de bits de acordo com o modo de interprevisão.
[136] Em seguida, o método de interprevisão usando informações de movimento afim será descrito em detalhes.
[137] A Figura 7 é uma vista que mostra movimentos não lineares de um objeto.
[138] Um movimento não linear de um objeto pode ser gerado em um vídeo. Por exemplo, como mostrado no exemplo da Figura 7, um movimento não linear de um objeto, como ampliar, reduzir, rotação, transformada afim ou semelhante de uma câmera, pode ocorrer. Quando ocorre um movimento não linear de um objeto, o movimento do objeto não pode ser efetivamente expresso com um vetor de movimento translacional. Consequentemente, a eficiência da codificação pode ser melhorada usando um movimento afim em vez de um movimento de translação em uma área onde ocorre um movimento não linear de um objeto.
[139] A Figura 8 é um fluxograma que ilustra um método de interprevisão com base em um movimento afim de acordo com uma modalidade da presente divulgação.
[140] Se uma técnica de interprevisão com base em um movimento afim é aplicada ao bloco atual pode ser determinado com base nas informações analisadas a partir de um fluxo de bits. Especificamente, se a técnica de interprevisão com base em um movimento afim é aplicada ao bloco atual pode ser determinado com base em pelo menos um dentre um indicador indicando se o modo a mesclagem afim é aplicado ao bloco atual e um sinalizador indicando se o vetor de movimento afim o modo de previsão é aplicado ao bloco atual.
[141] Quando a técnica de interprevisão com base em um movimento afim é aplicada ao bloco atual, um modelo de movimento afim do bloco atual pode ser determinado (S1101 → S801). O modelo de movimento afim pode ser determinado como pelo menos um dentre um modelo de movimento afim de seis parâmetros e um modelo de movimento afim de quatro parâmetros. O modelo de movimento afim de seis parâmetros expressa um movimento afim usando seis parâmetros, e o modelo de movimento afim de quatro parâmetros expressa um movimento afim usando quatro parâmetros.
[142] A Equação 1 expressa um movimento afim usando seis parâmetros. O movimento afim representa um movimento translacional para uma área predeterminada determinada por vetores de sementes afins. 【 Equação 1】 𝑣𝑥 = 𝑎𝑥 − 𝑏𝑦 + 𝑒 𝑣𝑦 = 𝑐𝑥 + 𝑑𝑦 + 𝑓
[143] Quando um movimento afim é expresso usando seis parâmetros, um movimento complicado pode ser expresso. No entanto, à medida que o número de bits necessários para codificar cada um dos parâmetros aumenta, a eficiência da codificação pode ser reduzida. Consequentemente, o movimento afim pode ser expresso usando quatro parâmetros. A Equação 2 expressa um movimento afim usando quatro parâmetros. 【Equação 2】 𝑣𝑥 = 𝑎𝑥 − 𝑏𝑦 + 𝑒 𝑣𝑦 = 𝑏𝑥 + 𝑎𝑦 + 𝑓
[144] As informações para determinar um modelo de movimento afim do bloco atual podem ser codificadas e sinalizadas por meio de um fluxo de bits. Por exemplo, a informação pode ser um sinalizador de 1 bit de “affine_type_flag”. Quando o valor do sinalizador é 0, pode indicar que um modelo de movimento afim de 4 parâmetros é aplicado, e quando o valor do sinalizador é 1, pode indicar que um modelo de movimento afim de 6 parâmetros é aplicado. O sinalizador pode ser codificado pela unidade de fatia, bloco ou bloco (por exemplo, pela unidade de bloco de codificação ou árvore de codificação). Quando um sinalizador é sinalizado no nível da fatia, um modelo de movimento afim determinado no nível da fatia pode ser aplicado a todos os blocos pertencentes à fatia.
[145] Alternativamente, um modelo de movimento afim do bloco atual pode ser determinado com base em um modo de interprevisão afim do bloco atual. Por exemplo, quando o modo de mesclagem afim é aplicado, o modelo de movimento afim do bloco atual pode ser determinado como um modelo de movimento de 4 parâmetros. Por outro lado, quando o modo de previsão de vetor de movimento afim é aplicado, as informações para determinar o modelo de movimento afim do bloco atual podem ser codificadas e sinalizadas através de um fluxo de bits. Por exemplo, quando o modo de previsão de vetor de movimento afim é aplicado ao bloco atual, o modelo de movimento afim do bloco atual pode ser determinado com base no sinalizador de 1 bit de “affine_type_flag”.
[146] Em seguida, um vetor de semente afim do bloco atual pode ser derivado (S1102 → S802). Quando um modelo de movimento afim de 4 parâmetros é selecionado, vetores de movimento em dois pontos de controle do bloco atual podem ser derivados. Por outro lado, quando um modelo de movimento afim de 6 parâmetros é selecionado, vetores de movimento em três pontos de controle do bloco atual podem ser derivados. O vetor de movimento em um ponto de controle pode ser denominado como um vetor semente afim. O ponto de controle pode incluir pelo menos um dentre o canto superior esquerdo, o canto superior direito e o canto inferior esquerdo do bloco atual.
[147] A Figura 9 é uma vista que mostra um exemplo de vetores de semente afim de cada modelo de movimento afim.
[148] No modelo de movimento afim de 4 parâmetros, vetores de sementes afins podem ser derivados para dois entre o canto superior esquerdo, o canto superior direito e o canto inferior esquerdo. Por exemplo, como mostrado no exemplo da
Figura 9 (a), quando um modelo de movimento afim de 4 parâmetros é selecionado, um vetor afim pode ser derivado usando o vetor semente afim sv0 para o canto superior esquerdo do bloco atual (por exemplo, amostra superior esquerda (x1, y1) e o vetor de semente afim sv1 para o canto superior direito do bloco atual (por exemplo, a amostra superior direita (x1, y1)). Também é possível usar um vetor de semente afim para o canto inferior esquerdo em vez do vetor de semente afim para o canto superior esquerdo, ou usar um vetor de semente afim para o canto inferior esquerdo em vez do vetor semente afim para o canto superior direito.
[149] No modelo de movimento afim de 6 parâmetros, vetores de sementes afins podem ser derivados para o canto superior esquerdo, o canto superior direito e o canto inferior esquerdo. Por exemplo, como mostrado no exemplo da Figura 9 (b), quando um modelo de movimento afim de 6 parâmetros é selecionado, um vetor afim pode ser derivado usando o vetor semente afim sv0 para o canto superior esquerdo do bloco atual (por exemplo, amostra superior esquerda (x1, y1) ), o vetor de semente afim sv1 para o canto superior direito do bloco atual (por exemplo, a amostra superior direita (x1, y1)), e o vetor de semente afim sv2 para o canto superior esquerdo do bloco atual (por exemplo, amostra superior esquerda (x2, y2)).
[150] Na modalidade descrita abaixo, no modelo de movimento afim de 4 parâmetros, os vetores de sementes afins do ponto de controle superior esquerdo e do ponto de controle superior direito serão denominados como um primeiro vetor de semente afim e um segundo vetor afim vetor de sementes, respectivamente. Nas modalidades usando o primeiro vetor de semente afim e o segundo vetor de semente afim descrito abaixo,
pelo menos um dentre o primeiro vetor de semente afim e o segundo vetor de semente afim pode ser substituído pelo vetor de semente afim do ponto de controle inferior esquerdo (a terceiro vetor de semente afim) ou o vetor de semente afim do ponto de controle inferior direito (um quarto vetor de semente afim).
[151] Além disso, no modelo de movimento afim de 6 parâmetros, os vetores de sementes afins do ponto de controle superior esquerdo, do ponto de controle superior direito e do ponto de controle inferior esquerdo serão denominados como uma primeira semente afim vetor, um segundo vetor de semente afim e um terceiro vetor de semente afim, respectivamente. Nas modalidades usando o primeiro vetor de semente afim, o segundo vetor de semente afim e o terceiro vetor de semente afim descrito abaixo, pelo menos um dentre o primeiro vetor de semente afim, o segundo vetor de semente afim e o terceiro vetor de semente afim podem ser substituídos pelo vetor de semente afim do ponto de controle inferior direito (um quarto vetor de semente afim).
[152] Um vetor afim pode ser derivado para cada sub-bloco usando os vetores de sementes afins (S803). Aqui, o vetor afim representa um vetor de movimento translacional derivado com base nos vetores de sementes afins. O vetor afim de um sub-bloco pode ser denominado como um vetor de movimento de sub-bloco afim ou um vetor de movimento de sub-bloco.
[153] A Figura 10 é uma vista que mostra um exemplo de sub-blocos de vetores afins em um modelo de movimento de 4 parâmetros.
[154] O vetor afim do sub-bloco pode ser derivado com base na posição do ponto de controle, na posição do sub-
bloco e no vetor de semente afim. Por exemplo, a Equação 3 mostra um exemplo de derivação de um vetor de sub-bloco afim. 【 Equação 3】 (𝑠𝑣1𝑥 − 𝑠𝑣0𝑥 ) (𝑠𝑣1𝑦 − 𝑠𝑣0𝑦 ) 𝑣𝑥 = (𝑥 − 𝑥0 ) − (𝑦 − 𝑦0 ) + 𝑠𝑣0𝑥 (𝑥1 − 𝑥0 ) (𝑥1 − 𝑥0 ) (𝑠𝑣1𝑦 − 𝑠𝑣0𝑦 ) (𝑠𝑣1𝑥 − 𝑠𝑣0𝑥 ) 𝑣𝑦 = (𝑥 − 𝑥0 ) − (𝑦 − 𝑦0 ) + 𝑠𝑣0𝑦 (𝑥1 − 𝑥0 ) (𝑥1 − 𝑥0 )
[155] Na Equação 3, (x, y) denota a posição de um sub-bloco. Aqui, a posição de um sub-bloco indica a posição de uma amostra de referência incluída no sub-bloco. A amostra de referência pode ser uma amostra posicionada no canto superior esquerdo do sub-bloco ou uma amostra da qual pelo menos uma entre as coordenadas de eixo geométrico x e eixo geométrico y é um ponto central. (x0, y0) denota a posição do primeiro ponto de controle e (sv0x, sv0y) denota o primeiro vetor semente afim. Além disso, (x1, y1) denota a posição do segundo ponto de controle e (sv1x, sv1y) denota o segundo vetor de semente afim.
[156] Quando o primeiro ponto de controle e o segundo ponto de controle correspondem ao canto superior esquerdo e ao canto superior direito do bloco atual, respectivamente, x1-x0 pode ser definido para um valor igual à largura do bloco atual.
[157] Depois disso, a previsão de compensação de movimento para cada sub-bloco pode ser realizada usando o vetor afim de cada sub-bloco (S1104 → S804). Como resultado da realização da previsão de compensação de movimento, um bloco de previsão para cada sub-bloco pode ser gerado. Os blocos de previsão dos sub-blocos podem ser definidos como os blocos de previsão do bloco atual.
[158] Em seguida, um método de interprevisão usando informações de movimento translacional será descrito em detalhes.
[159] As informações de movimento do bloco atual podem ser derivadas das informações de movimento de outro bloco. Aqui, outro bloco pode ser um bloco codificado/decodificado por interprevisão antes do bloco atual. Definir as informações de movimento do bloco atual para serem iguais às informações de movimento de outro bloco pode ser definido como um modo a mesclagem. Além disso, definir o vetor de movimento de outro bloco como o valor de previsão do vetor de movimento do bloco atual pode ser definido como um modo de previsão de vetor de movimento.
[160] A Figura 11 é um fluxograma que ilustra um processo de derivar informações de movimento de um bloco atual usando um modo de mesclagem.
[161] Um candidato a mesclagem do bloco atual pode ser derivado (S1101). O candidato a mesclagem do bloco atual pode ser derivado de um bloco codificado/decodificado por interprevisão antes do bloco atual.
[162] A Figura 12 é uma vista que mostra um exemplo de blocos candidatos usados para derivar um candidato a mesclagem.
[163] Os blocos candidatos podem incluir pelo menos um dentre os blocos vizinhos, incluindo uma amostra adjacente ao bloco atual ou blocos não vizinhos, incluindo uma amostra não adjacente ao bloco atual. Doravante, as amostras para determinar os blocos candidatos são definidas como amostras de referência. Além disso, uma amostra de referência adjacente ao bloco atual é denominada como uma amostra de referência vizinha, e uma amostra de referência não adjacente ao bloco atual é denominada como uma amostra de referência não vizinha.
[164] A amostra de referência vizinha pode ser incluída em uma coluna vizinha da coluna mais à esquerda do bloco atual ou uma linha vizinha da linha mais alta do bloco atual. Por exemplo, quando as coordenadas da amostra superior esquerda do bloco atual são (0, 0), pelo menos uma entre um bloco incluindo uma amostra de referência na posição de (-1, H-1), um bloco incluindo uma amostra de referência na posição de (W-1, -1), um bloco incluindo uma amostra de referência na posição de (W, -1), um bloco incluindo uma amostra de referência na posição de (-1, H), e um bloco incluindo uma amostra de referência na posição de (-1, -1) pode ser usado como um bloco candidato. Com referência ao desenho, blocos vizinhos de índice 0 a 4 podem ser usados como blocos candidatos.
[165] A amostra de referência não vizinha representa uma amostra da qual pelo menos um dentre uma distância do eixo geométrico x e uma distância do eixo geométrico y de uma amostra de referência adjacente ao bloco atual tem um valor predefinido. Por exemplo, pelo menos um dentre um bloco incluindo uma amostra de referência da qual a distância do eixo geométrico x da amostra de referência esquerda é um valor predefinido, um bloco incluindo uma amostra não vizinha da qual a distância do eixo geométrico y da amostra de referência superior é um valor predefinido e um bloco incluindo uma amostra não vizinha da qual a distância do eixo geométrico x e a distância do eixo geométrico y da amostra de referência superior esquerda são valores predefinidos pode ser usado como um bloco candidato. Os valores predefinidos podem ser um número natural, como 4, 8, 12, 16 ou semelhantes. Com referência ao desenho, pelo menos um dentre os blocos do índice 5 a 26 pode ser usado como um bloco candidato.
[166] Uma amostra não posicionada na mesma linha vertical, linha horizontal ou linha diagonal que a amostra de referência vizinha pode ser definida como uma amostra de referência não vizinha.
[167] A Figura 13 é uma vista que mostra posições de amostras de referência.
[168] Como mostrado no exemplo da Figura 13, as coordenadas x das amostras de referência não vizinhas superiores podem ser definidas para serem diferentes das coordenadas x das amostras de referência vizinhas superiores. Por exemplo, quando a posição da amostra de referência vizinha da parte superior é (W-1, -1), a posição de uma amostra de referência não vizinha da parte superior separada tanto quanto N da amostra de referência de vizinhança superior no eixo geométrico y pode ser definido como ((W/2) -1, -1-N), e a posição de uma amostra de referência superior não vizinha separada tanto quanto 2N da amostra de referência vizinha no eixo geométrico y pode ser definida como (0 , -1-2N). Ou seja, a posição de uma amostra de referência não adjacente pode ser determinada com base na posição de uma amostra de referência adjacente e uma distância da amostra de referência adjacente.
[169] Em seguida, um bloco candidato incluindo uma amostra de referência vizinha entre os blocos candidatos é denominado como um bloco vizinho, e um bloco incluindo uma amostra de referência não vizinha é denominado como um bloco não vizinho.
[170] Quando a distância entre o bloco atual e o bloco candidato é maior ou igual a um valor limítrofe, o bloco candidato pode ser definido como indisponível como um candidato a mesclagem. O valor limítrofe pode ser determinado com base no tamanho da unidade de árvore de codificação. Por exemplo, o valor limítrofe pode ser definido para a altura (ctu_height) da unidade de árvore de codificação ou um valor obtido pela adição ou subtração de um deslocamento para ou da altura (por exemplo, ctu_height ± N) da unidade de árvore de codificação. O deslocamento N é um valor predefinido no codificador e no decodificador e pode ser definido como 4, 8, 16, 32 ou ctu_height.
[171] Quando a diferença entre a coordenada do eixo geométrico y do bloco atual e a coordenada do eixo geométrico y de uma amostra incluída em um bloco candidato é maior do que o valor limítrofe, o bloco candidato pode ser determinado como indisponível como um candidato a mesclagem.
[172] Alternativamente, um bloco candidato que não pertence à mesma unidade de árvore de codificação que o bloco atual pode ser definido como indisponível como um candidato a mesclagem. Por exemplo, quando uma amostra de referência se desvia do limite superior de uma unidade de árvore de codificação à qual o bloco atual pertence, um bloco candidato incluindo a amostra de referência pode ser definido como indisponível como um candidato a mesclagem.
[173] Quando o limite superior do bloco atual é adjacente ao limite superior da unidade de árvore de codificação, uma pluralidade de blocos candidatos é determinada como indisponível como um candidato a mesclagem e, portanto, a eficiência de codificação/decodificação do bloco atual pode diminuir. Para resolver este problema, os blocos candidatos podem ser configurados de modo que o número de blocos candidatos posicionados no lado esquerdo do bloco atual seja maior do que o número de blocos candidatos posicionados na parte superior do bloco atual.
[174] A Figura 14 é uma vista que mostra um exemplo de blocos candidatos usados para derivar um candidato a mesclagem.
[175] Como mostrado no exemplo de Figura 14, os blocos superiores pertencentes às colunas de bloco N superiores do bloco atual e os blocos do lado esquerdo pertencentes a M colunas de bloco do lado esquerdo do bloco atual podem ser definidos como blocos candidatos. Neste ponto, o número de blocos candidatos do lado esquerdo pode ser definido para ser maior do que o número de blocos candidatos superiores, definindo M para ser maior do que N.
[176] Por exemplo, a diferença entre a coordenada do eixo geométrico y da amostra de referência no bloco atual e a coordenada do eixo geométrico y do bloco superior que pode ser usada como um bloco candidato pode ser definida para não exceder N vezes do altura do bloco atual. Além disso, a diferença entre a coordenada do eixo geométrico x da amostra de referência no bloco atual e a coordenada do eixo geométrico x do bloco do lado esquerdo que pode ser usada como um bloco candidato pode ser definida para não exceder M vezes da largura do bloco atual.
[177] Por exemplo, no exemplo mostrado na Figura 14, é mostrado que os blocos pertencentes às duas colunas de bloco superiores do bloco atual e os blocos pertencentes às cinco colunas de bloco esquerdas do bloco atual são definidos como blocos candidatos.
[178] Um candidato a mesclagem também pode ser derivado de um bloco vizinho temporariamente incluído em uma imagem diferente do bloco atual. Por exemplo, um candidato a mesclagem pode ser derivado de um bloco colocado incluído em uma imagem colocada.
[179] As informações de movimento do candidato a mesclagem podem ser definidas para serem iguais às informações de movimento do bloco candidato. Por exemplo, pelo menos um dentre um vetor de movimento, um índice de imagem de referência, uma direção de previsão e um índice de peso bidirecional do bloco candidato pode ser definido como informações de movimento do candidato a mesclagem.
[180] Uma lista de candidatos a mesclagem incluindo candidatos a mesclagem pode ser gerada (S1102). Os candidatos a mesclagem podem ser divididos em um candidato a mesclagem adjacente derivado de um bloco vizinho adjacente ao bloco atual e um candidato a mesclagem não adjacente derivado de um bloco não vizinho.
[181] Índices dos candidatos a mesclagem na lista de candidatos a mesclagem podem ser atribuídos em uma ordem predeterminada. Por exemplo, um índice atribuído a um candidato a mesclagem adjacente pode ter um valor menor do que um índice atribuído a um candidato a mesclagem não adjacente. Alternativamente, um índice pode ser atribuído a cada um dos candidatos a mesclagem com base no índice de cada bloco mostrado na Figura 12 ou 14.
[182] Quando uma pluralidade de candidatos de mesclagem é incluída na lista de candidatos a mesclagem, pelo menos um dentre a pluralidade de candidatos a mesclagem pode ser selecionado (S1103). Neste ponto, as informações que indicam se as informações de movimento do bloco atual são derivadas de um candidato a mesclagem adjacente podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit. Por exemplo, um elemento de sintaxe isAdjancentMergeFlag indicando se as informações de movimento do bloco atual são derivadas de um candidato a mesclagem adjacente pode ser sinalizado por meio de um fluxo de bits. Quando o valor do elemento de sintaxe isAdjancentMergeFlag é 1, as informações de movimento do bloco atual podem ser derivadas com base no candidato a mesclagem adjacente. Por outro lado, quando o valor do elemento de sintaxe isAdjancentMergeFlag é 0, as informações de movimento do bloco atual podem ser derivadas com base em um candidato a mesclagem não adjacente.
[183] As informações para especificar qualquer um dentre uma pluralidade de candidatos a mesclagem podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, as informações que indicam um índice de qualquer um dos candidatos a mesclagem incluídos na lista de candidatos a mesclagem podem ser sinalizadas por meio de um fluxo de bits.
[184] Quando isAdjacentMergeflag é 1, o elemento de sintaxe merge_idx especificando qualquer um dentre os candidatos de mesclagem adjacentes pode ser sinalizado. O valor máximo do elemento de sintaxe merge_idx pode ser definido como um valor obtido subtraindo 1 do número de candidatos de mesclagem adjacentes.
[185] Quando isAdjacentMergeflag é 0, o elemento de sintaxe NA_merge_idx especificando qualquer um dentre os candidatos a mesclagem não adjacentes pode ser sinalizado. O elemento de sintaxe NA_merge_idx representa um valor obtido subtraindo o número de candidatos de mesclagem adjacentes do índice do candidato a mesclagem não adjacente. O decodificador pode selecionar um candidato a mesclagem não adjacente adicionando o número de candidatos a mesclagem adjacentes a um índice especificado por NA_merge_idx.
[186] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é menor do que um valor limítrofe, o candidato a mesclagem incluído na lista de informações de movimento inter-região pode ser adicionado à lista de candidatos a mesclagem. Aqui, o valor limítrofe pode ser o número máximo de candidatos a mesclagem cuja lista de candidatos a mesclagem pode incluir ou um valor obtido subtraindo um deslocamento do número máximo de candidatos a mesclagem. O deslocamento pode ser um número natural, como 1, 2 ou semelhante. A lista de informações de movimento inter- região pode incluir um candidato a mesclagem derivado com base em um bloco codificado/decodificado antes do bloco atual.
[187] A lista de informações de movimento inter- região inclui um candidato a mesclagem derivado de um bloco codificado/decodificado com base na interprevisão na imagem atual. Por exemplo, as informações de movimento de um candidato a mesclagem incluído na lista de informações de movimento inter-região podem ser definidas para serem iguais às informações de movimento de um bloco codificado/decodificado com base na interprevisão. Aqui, as informações de movimento podem incluir pelo menos um dentre um vetor de movimento, um índice de imagem de referência, uma direção de previsão e um índice de peso bidirecional.
[188] Por conveniência de explicação, um candidato a mesclagem incluído na lista de informações de movimento inter-região será denominado como um candidato a mesclagem inter-região.
[189] O número máximo de candidatos a mesclagem cuja lista de informações de movimento inter-região pode incluir, pode ser predefinido por um codificador e um decodificador. Por exemplo, o número máximo de candidatos a mesclagem cuja lista de informações de movimento inter-região pode incluir, pode ser 1, 2, 3, 4, 5, 6, 7, 8 ou mais (por exemplo, 16).
[190] Alternativamente, as informações que indicam o número máximo de candidatos a mesclagem na lista de informações de movimento inter-região podem ser sinalizadas através de um fluxo de bits. As informações podem ser sinalizadas na sequência, imagem ou nível de fatia.
[191] Alternativamente, o número máximo de candidatos a mesclagem da lista de informações de movimento inter-região pode ser determinado de acordo com o tamanho de uma imagem, o tamanho de uma fatia ou o tamanho de uma unidade de árvore de codificação.
[192] A lista de informações de movimento inter- região pode ser inicializada pela unidade de imagem, fatia, bloco, tijolo, unidade de árvore de codificação ou linha de unidade de árvore de codificação (linha ou coluna). Por exemplo, quando uma fatia é inicializada, a lista de informações de movimento inter-região também é inicializada e a lista de informações de movimento inter-região pode não incluir qualquer candidato a mesclagem.
[193] Alternativamente, as informações que indicam se deve ou não inicializar a lista de informações de movimento inter-região podem ser sinalizadas através de um fluxo de bits. As informações podem ser sinalizadas no nível de fatia, bloco, tijolo ou bloco. Até que as informações indiquem para inicializar a lista de informações de movimento inter-região, uma lista de informações de movimento inter- região configurada anteriormente pode ser usada.
[194] Alternativamente, as informações sobre o candidato a mesclagem inter-região inicial podem ser sinalizadas através de um conjunto de parâmetros de imagem ou um cabeçalho de fatia. Embora a fatia seja inicializada, a lista de informações de movimento inter-região pode incluir o candidato a mesclagem inter-região inicial. Consequentemente, um candidato a mesclagem inter-região pode ser usado para um bloco que é o primeiro alvo de codificação/decodificação na fatia.
[195] Os blocos são codificados/decodificados de acordo com uma ordem de codificação/decodificação, e os blocos codificados/decodificados com base na interprevisão podem ser sequencialmente configurados como um candidato a mesclagem inter-região de acordo com uma ordem de codificação/decodificação.
[196] A Figura 15 é um fluxograma que ilustra um processo de atualização de uma lista de informações de movimento inter-região.
[197] Quando a interprevisão é realizada no bloco atual (S1501), um candidato a mesclagem inter-região pode ser derivado com base no bloco atual (S1502). As informações de movimento do candidato a mesclagem inter-região podem ser definidas para serem iguais às informações de movimento do bloco atual.
[198] Quando a lista de informações de movimento inter-região está vazia (S1503), o candidato a mesclagem inter- região derivado com base no bloco atual pode ser adicionado à lista de informações de movimento inter-região (S1504).
[199] Quando a lista de informações de movimento inter-região já inclui o candidato a mesclagem inter-região (S1503), uma verificação de redundância pode ser realizada nas informações de movimento do bloco atual (ou o candidato a mesclagem inter-região derivado com base no bloco atual) (S1705). A verificação de redundância é para determinar se as informações de movimento de um candidato a mesclagem inter- região anteriormente armazenado na lista de informações de movimento inter-região e as informações de movimento do bloco atual são as mesmas. A verificação de redundância pode ser realizada em todos os candidatos a mesclagem inter-região anteriormente armazenados na lista de informações de movimento inter-região. Alternativamente, a verificação de redundância pode ser realizada em candidatos de mesclagem inter-região com um índice maior que um valor limítrofe ou menor que um valor limítrofe entre os candidatos de mesclagem inter-região anteriormente armazenados na lista de informações de movimento inter-região.
[200] Quando um candidato a mesclagem de interprevisão tendo as mesmas informações de movimento que as informações de movimento do bloco atual não está incluído, o candidato a mesclagem inter-região derivado com base no bloco atual pode ser adicionado à lista de informações de movimento inter-região (S1508). Se os candidatos de mesclagem de inter- região são os mesmos pode ser determinado com base em se as informações de movimento (por exemplo, um vetor de movimento e/ou um índice de imagem de referência) dos candidatos de mesclagem de inter-região são as mesmas.
[201] Neste ponto, quando o número máximo de candidatos a mesclagem inter-região já estão armazenados na lista de informações de movimento inter-região (S1506), o candidato a mesclagem inter-região de previsão mais antigo é excluído (S1507) e o candidato a mesclagem inter-região derivado com base no bloco atual pode ser adicionado à lista de informações de movimento inter-região (S1508).
[202] Cada um dos candidatos a mesclagem inter- região pode ser identificado por um índice. Quando um candidato a mesclagem inter-região derivado do bloco atual é adicionado à lista de informações de movimento inter-região, o índice mais baixo (por exemplo, 0) é atribuído ao candidato a mesclagem inter-região e os índices dos candidatos a mesclagem inter-região armazenados anteriormente podem ser aumentado em
1. Neste ponto, quando o número máximo de candidatos de mesclagem de inter-região já está armazenado na lista de informações de movimento inter-região, um candidato a mesclagem inter-região com o maior índice é removido.
[203] Alternativamente, quando o candidato a mesclagem inter-região derivado do bloco atual é adicionado à lista de informações de movimento inter-região, o maior índice pode ser atribuído ao candidato a mesclagem inter-região. Por exemplo, quando o número de candidatos de mesclagem de inter- região anteriormente armazenados na lista de informações de movimento inter-região é menor do que um valor máximo, um índice com o mesmo valor que o número de candidatos de mesclagem de inter-região armazenados anteriormente pode ser atribuído ao candidato a mesclagem inter-região.
Alternativamente, quando o número de candidatos de mesclagem de inter-região anteriormente armazenados na lista de informações de movimento inter-região é o mesmo que o valor máximo, um índice subtraindo 1 do valor máximo pode ser atribuído ao candidato a mesclagem inter-região. Além disso, um candidato a mesclagem inter-região com o menor índice é removido e os índices de candidatos a mesclagem inter-região armazenados anteriormente podem ser diminuídos em 1.
[204] A Figura 16 é uma vista que mostra uma modalidade de atualização de uma lista de candidato a mesclagem inter-região.
[205] É assumido que, conforme o candidato a mesclagem inter-região derivado do bloco atual é adicionado à lista de candidatos a mesclagem inter-região, o maior índice é atribuído ao candidato a mesclagem inter-região. Além disso, assume-se que o número máximo de candidatos a mesclagem inter- região já está armazenado na lista de candidatos a mesclagem inter-região.
[206] Quando o candidato a mesclagem inter- região HmvpCand [n + 1] derivado do bloco atual é adicionado à lista de candidatos a mesclagem inter-região HmvpCandList, o candidato a mesclagem inter-região HmvpCand [0] tendo o menor índice entre os candidatos de mesclagem inter-região armazenada anteriormente são excluídos e os índices dos candidatos de mesclagem inter-região restantes podem ser diminuídos em 1. Além disso, o índice do candidato a mesclagem inter-região HmvpCand [n + 1] derivado do bloco atual pode ser definido para um valor máximo (n no exemplo mostrado na Figura 18).
[207] Quando um candidato a mesclagem inter-
região igual ao candidato a mesclagem inter-região derivado com base no bloco atual é anteriormente armazenado (S1705), o candidato a mesclagem inter-região derivado com base no bloco atual não pode ser adicionado à lista de informações de movimento inter-região (S1509).
[208] Alternativamente, conforme o candidato a mesclagem inter-região derivado com base no bloco atual é adicionado à lista de informações de movimento inter-região, um candidato a mesclagem inter-região armazenado anteriormente que é o mesmo que o candidato a mesclagem inter-região pode ser removido. Nesse caso, é obtido um efeito igual ao da atualização recente do índice do candidato a mesclagem inter- região armazenado anteriormente.
[209] A Figura 17 é uma vista que mostra um exemplo em que um índice de um candidato a mesclagem inter- região armazenado anteriormente é atualizado.
[210] Quando o índice de um candidato a mesclagem de inter-região armazenado anteriormente mvCand que é o mesmo que o candidato a mesclagem inter-região mvCand derivado com base no bloco atual é hIdx, o candidato a mesclagem de inter- região armazenado anteriormente é excluído e os índices de candidatos de mesclagem de inter-região com um índice maior do que hIdx podem ser diminuídos em 1. Por exemplo, no exemplo mostrado na Figura17, é mostrado que HmvpCand [2] o mesmo que mvCand é excluído da lista de informações de movimento inter- região HvmpCandList, e os índices de HmvpCand [3] para HmvpCand [n] são diminuídos em 1.
[211] Além disso, o candidato a mesclagem inter- região mvCand derivado com base no bloco atual pode ser adicionado ao final da lista de informações de movimento inter-
região.
[212] Alternativamente, o índice atribuído ao candidato a mesclagem inter-região armazenado anteriormente que é o mesmo que o candidato a mesclagem inter-região derivado com base no bloco atual pode ser atualizado. Por exemplo, o índice do candidato a mesclagem inter-região armazenado anteriormente pode ser alterado para um valor mínimo ou máximo.
[213] Pode ser configurado para não adicionar informações de movimento de blocos incluídos em uma área predeterminada para a lista de informações de movimento inter- região. Por exemplo, um candidato a mesclagem inter-região derivado com base nas informações de movimento de um bloco incluído na área de processamento de mesclagem não pode ser adicionado à lista de informações de movimento inter-região. Uma vez que uma ordem de codificação/decodificação não é definida para os blocos incluídos na área de processamento de mesclagem, é inadequado usar informações de movimento de qualquer um dentre os blocos para interprevisão de outro bloco. Por conseguinte, os candidatos a mesclagem inter-região derivados com base nos blocos incluídos na área de processamento de mesclagem não podem ser adicionados à lista de informações de movimento inter-região.
[214] Quando a previsão de compensação de movimento é realizada pela unidade de sub-bloco, um candidato a mesclagem inter-região pode ser derivado com base nas informações de movimento de um sub-bloco representativo entre uma pluralidade de sub-blocos incluídos no bloco atual. Por exemplo, quando um candidato a mesclagem de sub-bloco é usado para o bloco atual, um candidato a mesclagem inter-região pode ser derivado com base nas informações de movimento de um sub-
bloco representativo entre os sub-blocos.
[215] Os vetores de movimento dos sub-blocos podem ser derivados na seguinte ordem. Primeiro, qualquer um dentre os candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual é selecionado e um vetor de deslocamento inicial (shVector) pode ser derivado com base no vetor de movimento do candidato a mesclagem selecionado. Em seguida, um sub-bloco de deslocamento, em que a posição da amostra de referência é (xColSb, yColSb), pode ser derivado conforme o vetor de deslocamento inicial é adicionado na posição (xSb, ySb) da amostra de referência (por exemplo, o canto superior esquerdo amostra ou a amostra no centro) de cada sub-bloco no bloco de codificação. A Equação 4 mostra uma equação para derivar um sub-bloco de deslocamento. 【Equação 4】 (𝑥𝐶𝑜𝑙𝑆𝑏, 𝐶𝑜𝑙𝑆b) = (𝑥𝑆𝑏 + 𝑠ℎ𝑉𝑒𝑐𝑡𝑜𝑟[0] ≫ 4, 𝑦𝑆𝑏 + 𝑠ℎ𝑉𝑒𝑐𝑡𝑜𝑟[1] ≫ 4)
[216] Então, o vetor de movimento de um bloco colocado correspondendo à posição central do sub-bloco incluindo (xColSb, yColSb) pode ser definido como o vetor de movimento do sub-bloco incluindo (xSb, ySb).
[217] O sub-bloco representativo pode significar um sub-bloco incluindo a amostra superior esquerda ou a amostra no centro do bloco atual.
[218] A Figura 18 é uma vista que mostra a posição de um sub-bloco representativo.
[219] A Figura 18 (a) mostra um exemplo em que o sub-bloco posicionado no canto superior esquerdo do bloco atual é definido como o sub-bloco representativo, e a Figura 18 (b) mostra um exemplo em que o sub-bloco posicionado no centro do bloco atual é definido como o sub-bloco representativo. Quando a previsão de compensação de movimento é realizada por unidade de sub-bloco, um candidato a mesclagem inter-região do bloco atual pode ser derivado com base no vetor de movimento do sub- bloco, incluindo a amostra superior esquerda do bloco atual ou o sub-bloco incluindo a amostra no centro do bloco atual.
[220] Pode ser determinado se deve ou não usar o bloco atual como um candidato a mesclagem inter-região, com base no modo de interprevisão do bloco atual. Por exemplo, um bloco codificado/decodificado com base em um modelo de movimento afim pode ser definido como indisponível como um candidato a mesclagem inter-região. Por conseguinte, embora o bloco atual seja codificado/decodificado por interprevisão, quando o modo de interprevisão do bloco atual é o modo de previsão afim, a lista de informações de movimento de inter- região pode não ser atualizada com base no bloco atual.
[221] Alternativamente, o candidato a mesclagem inter-região pode ser derivado com base em pelo menos um vetor de sub-bloco entre os sub-blocos incluídos no bloco codificado/decodificado com base no modelo de movimento afim. Por exemplo, o candidato a mesclagem inter-região pode ser derivado usando um sub-bloco posicionado no canto superior esquerdo, um sub-bloco posicionado no centro ou um sub-bloco posicionado no lado superior direito do bloco atual. Alternativamente, um valor médio de vetores de sub-bloco de uma pluralidade de sub-blocos pode ser definido como o vetor de movimento do candidato a mesclagem inter-região.
[222] Alternativamente, o candidato a mesclagem inter-região pode ser derivado com base em um valor médio de vetores de sementes afins do bloco codificado/decodificado com base no modelo de movimento afim. Por exemplo, uma média de pelo menos um dentre o primeiro vetor de semente afim, o segundo vetor de semente afim e o terceiro vetor de semente afim do bloco atual pode ser definido como o vetor de movimento do candidato a mesclagem inter-região.
[223] Alternativamente, uma lista de informações de movimento inter-região pode ser configurada para cada modo de interprevisão. Por exemplo, pelo menos uma entre uma lista de informações de movimento inter-região para um bloco codificado/decodificado por cópia intrabloco, uma lista de informações de movimento inter-região para um bloco codificado/decodificado com base em um modelo de movimento translacional e uma lista de informações de movimento inter- região para um bloco codificado/decodificado com base em um modelo de movimento afim pode ser definida. De acordo com o modo de interprevisão do bloco atual, qualquer uma entre uma pluralidade de listas de informações de movimento inter-região pode ser selecionada.
[224] A Figura 19 é uma vista que mostra um exemplo em que uma lista de informações de movimento inter- região é gerada para cada modo de interprevisão.
[225] Quando um bloco é codificado/decodificado com base em um modelo de movimento não afim, um candidato a mesclagem inter-região mvCand derivado com base no bloco pode ser adicionado a uma lista de informações de movimento não afim inter-região HmvpCandList. Por outro lado, quando um bloco é codificado/decodificado com base em um modelo de movimento afim, um candidato a mesclagem inter-região mvAfCand derivado com base no bloco pode ser adicionado a uma lista de informações de movimento afim inter-região HmvpAfCandList.
[226] Vetores de sementes afins de um bloco codificado/decodificado com base no modelo de movimento afim podem ser armazenados em um candidato a mesclagem inter-região derivado do bloco. Por conseguinte, o candidato a mesclagem inter-região pode ser usado como um candidato a mesclagem para derivar o vetor de semente afim do bloco atual.
[227] Além da lista de informações de movimento inter-região descrita acima, uma lista de informações de movimento inter-região adicional pode ser definida. Além da lista de informações de movimento inter-região descrita acima (doravante, denominada como uma primeira lista de informações de movimento inter-região), uma lista de informações de movimento de longo prazo (doravante, denominada como uma segunda lista de informações de movimento inter-região) pode ser definida. Aqui, a lista de informações de movimento de longo prazo inclui candidatos de mesclagem de longo prazo.
[228] Quando a primeira lista de informações de movimento inter-região e a segunda lista de informações de movimento inter-região estão vazias, primeiro, os candidatos de mesclagem inter-região podem ser adicionados à segunda lista de informações de movimento inter-região. Somente após o número de candidatos de mesclagem inter-região disponíveis atingir o número máximo na segunda lista de informações de movimento inter-região, os candidatos de mesclagem inter-região podem ser adicionados à primeira lista de informações de movimento inter-região.
[229] Alternativamente, um candidato a mesclagem de inter-região pode ser adicionado à segunda lista de informações de movimento inter-região e à primeira lista de informações de movimento inter-região.
[230] Neste ponto, a segunda lista de informações de movimento inter-região, cuja configuração foi concluída, pode não ser mais atualizada. Alternativamente, quando a região decodificada é maior ou igual a uma proporção predeterminada da fatia, a segunda lista de informações de movimento inter-região pode ser atualizada. Alternativamente, a segunda lista de informações de movimento inter-região pode ser atualizada para cada N linhas de unidade de árvore de codificação.
[231] Por outro lado, a primeira lista de informações de movimento inter-região pode ser atualizada sempre que um bloco codificado/decodificado por interprevisão é gerado. No entanto, pode ser configurado para não usar o candidato a mesclagem inter-região adicionado à segunda lista de informações de movimento inter-região, para atualizar a primeira lista de informações de movimento inter-região.
[232] As informações para selecionar qualquer um dentre a primeira lista de informações de movimento inter- região e a segunda lista de informações de movimento inter- região podem ser sinalizadas através de um fluxo de bits. Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for menor do que um valor limítrofe, os candidatos a mesclagem incluídos na lista de informações de movimento inter-região indicada pelas informações podem ser adicionados à lista de candidatos a mesclagem.
[233] Alternativamente, uma lista de informações de movimento inter-região pode ser selecionada com base no tamanho e forma do bloco atual, modo de interprevisão, se a previsão bidirecional está habilitada, se o refinamento do vetor de movimento está habilitado ou se o particionamento triangular está habilitado.
[234] Alternativamente, embora um candidato a mesclagem inter-região incluído na primeira lista de informações de movimento inter-região seja adicionado, quando o número de candidatos de mesclagem incluídos na lista de candidatos de mesclagem for menor do que o número máximo de mesclagens, os candidatos de mesclagem inter-região incluídos na segunda lista de informações de movimento inter-região pode ser adicionada à lista de candidato a mesclagem.
[235] A Figura 20 é uma vista que mostra um exemplo em que um candidato a mesclagem inter-região incluído em uma lista de informações de movimento a longo prazo é adicionado a uma lista de candidato a mesclagem.
[236] Quando o número de candidatos de mesclagem incluído na lista de candidato a mesclagem é menor do que o número máximo, os candidatos a mesclagem inter-região incluídos na primeira lista de informações de movimento inter- região HmvpCandList podem ser adicionados à lista de candidatos a mesclagem. Quando o número de candidatos de mesclagem incluídos na lista de candidatos de mesclagem for menor do que o número máximo, embora os candidatos de mesclagem inter-região incluídos na primeira lista de informações de movimento inter- região sejam adicionados à lista de candidatos de mesclagem, os candidatos de mesclagem inter-região incluídos na lista de informações de movimento de longo prazo HmvpLTCandList pode ser adicionada à lista de candidatos de mesclagem.
[237] O candidato a mesclagem inter-região pode ser configurado para incluir informações adicionais, além de informações de movimento. Por exemplo, para o candidato a mesclagem inter-região, um tamanho, uma forma ou informações de particionamento de um bloco podem ser armazenados adicionalmente. Quando a lista de candidatos de mesclagem do bloco atual é construída, apenas os candidatos de mesclagem de inter-região tendo um tamanho, uma forma ou informações de particionamento iguais ou semelhantes àquelas do bloco atual são usados entre os candidatos de mesclagem de inter-região, ou candidatos a mesclagem de inter-região com tamanho, forma ou informações de particionamento iguais ou semelhantes aos do bloco atual podem ser adicionados à lista de candidatos a mesclagem em primeiro lugar.
[238] Alternativamente, uma lista de informações de movimento inter-região pode ser gerada para cada uma das informações de tamanho, forma ou particionamento de um bloco. Entre a pluralidade de listas de informações de movimento inter-região, uma lista de candidatos de mesclagem do bloco atual pode ser gerada usando uma lista de informações de movimento inter-região correspondente à forma, tamanho ou informação de particionamento do bloco atual.
[239] Quando o número de candidatos de mesclagem incluídos na lista de candidatos de mesclagem do bloco atual é menor do que o valor limítrofe, os candidatos de mesclagem inter-região incluídos na lista de informações de movimento inter-região podem ser adicionados à lista de candidatos de mesclagem. O processo de adição é executado em ordem crescente ou decrescente com base no índice. Por exemplo, um candidato a mesclagem inter-região com o maior índice pode ser adicionado primeiro à lista de candidatos a mesclagem.
[240] Quando for desejado adicionar um candidato a mesclagem inter-região incluído na lista de informações de movimento inter-região à lista de candidatos a mesclagem, uma verificação de redundância pode ser realizada entre o candidato a mesclagem inter-região e os candidatos a mesclagem anteriormente armazenados no candidato a mesclagem Lista.
[241] A verificação de redundância pode ser realizada apenas em alguns dos candidatos a mesclagem inter- região incluídos na lista de informações de movimento inter- região. Por exemplo, a verificação de redundância pode ser realizada apenas em candidatos de mesclagem inter-região com um índice maior que um valor limítrofe ou menor que um valor limítrofe. Alternativamente, a verificação de redundância pode ser executada apenas em N candidatos a mesclagem com o maior índice ou N candidatos a mesclagem com o menor índice.
[242] Alternativamente, a verificação de redundância pode ser realizada apenas em alguns dos candidatos a mesclagem anteriormente armazenados na lista de candidatos a mesclagem. Por exemplo, a verificação de redundância pode ser realizada apenas em um candidato a mesclagem com um índice maior que um valor limítrofe ou menor que um valor limítrofe, ou em um candidato a mesclagem derivado de um bloco em uma posição específica. Aqui, a posição específica pode incluir pelo menos um dentre um bloco vizinho esquerdo, um bloco vizinho superior, um bloco vizinho superior direito e um bloco vizinho inferior esquerdo do bloco atual.
[243] A Figura 21 é uma vista que mostra um exemplo em que uma verificação de redundância é realizada apenas em alguns dos candidatos de mesclagem.
[244] Quando se deseja adicionar o candidato a mesclagem inter-região de previsão HmvpCand [j] à lista de candidatos a mesclagem, uma verificação de redundância pode ser realizada no candidato a mesclagem inter-região com dois candidatos a mesclagem mergeCandList [NumMerge-2] e mergeCandList [NumMerge -1] tendo os maiores índices. Aqui, NumMerge pode representar o número de candidatos de mesclagem espacial e candidatos de mesclagem temporal que estão disponíveis.
[245] Ao contrário do exemplo mostrado no desenho, quando se deseja adicionar um candidato a mesclagem inter-região HmvpCand [j] à lista de candidatos a mesclagem, uma verificação de redundância pode ser realizada no candidato a mesclagem inter-região com até dois candidatos a mesclagem tendo o menor índice. Por exemplo, é possível verificar se mergeCandList [0] e mergeCandList [1] são iguais a HmvpCand [j]. Alternativamente, uma verificação de redundância pode ser realizada apenas em candidatos a mesclagem derivados em uma posição específica. Por exemplo, a verificação de redundância pode ser realizada em pelo menos um dentre um candidato a mesclagem derivado de um bloco vizinho posicionado no lado esquerdo do bloco atual e um candidato a mesclagem derivado de um bloco vizinho posicionado na parte superior do bloco atual. Quando um candidato a mesclagem derivado em uma posição específica não existe na lista de candidatos a mesclagem, um candidato a mesclagem inter-região pode ser adicionado à lista de candidatos a mesclagem sem ter uma verificação de redundância.
[246] Quando um candidato a mesclagem igual ao primeiro candidato a mesclagem inter-região é encontrado e uma verificação de redundância é realizada no segundo candidato a mesclagem inter-região, a verificação de redundância com um candidato a mesclagem igual ao primeiro candidato a mesclagem inter-região pode ser omitido.
[247] A Figura 22 é uma vista que mostra um exemplo em que uma verificação de redundância é omitida para um candidato a mesclagem específico.
[248] Quando se deseja adicionar um candidato a mesclagem inter-região HmvpCand [i] tendo índice i à lista de candidatos a mesclagem, uma verificação de redundância é realizada entre o candidato a mesclagem inter-região e os candidatos a mesclagem anteriormente armazenados na lista de candidatos a mesclagem. Neste ponto, quando um candidato a mesclagem mergeCandList [j] o mesmo que o candidato a mesclagem inter-região HmvpCand [i] é encontrado, a verificação de redundância pode ser realizada entre o candidato a mesclagem inter-região HmvpCand [i-1] com índice i-1 e os candidatos de mesclagem sem adicionar o candidato a mesclagem inter-região HmvpCand [i] à lista de candidatos de mesclagem. Neste ponto, a verificação de redundância entre o candidato a mesclagem inter-região HmvpCand [i-1] e o candidato a mesclagem mergeCandList [j] pode ser omitida.
[249] Por exemplo, no exemplo mostrado na Figura22, é determinado que HmvpCand [i] e mergeCandList [2] são iguais. Consequentemente, HmvpCand [i] não é adicionado à lista de candidatos a mesclagem e uma verificação de redundância pode ser realizada em HmvpCand [i-1]. Neste ponto, a verificação de redundância entre HvmpCand [i-1] e mergeCandList [2] pode ser omitida.
[250] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual é menor do que o valor limítrofe, pelo menos um dentre um candidato a mesclagem par a par e um candidato a mesclagem zero pode ser incluído adicionalmente, além da candidato a mesclagem inter-região. O candidato a mesclagem par a par significa um candidato a mesclagem com um valor médio de vetores de movimento de dois ou mais candidatos a mesclagem como um vetor de movimento e o candidato a mesclagem zero significa um candidato a mesclagem com um vetor de movimento de 0.
[251] Um candidato a mesclagem pode ser adicionado à lista de candidatos a mesclagem do bloco atual na seguinte ordem.
[252] Candidato a mesclagem espacial - Candidato a mesclagem temporal - Candidato a mesclagem inter-região - (candidato a mesclagem afim inter-região) - Candidato a mesclagem par a par - Candidato a mesclagem zero
[253] O candidato a mesclagem espacial significa um candidato a mesclagem derivado de pelo menos um dentre um bloco vizinho e um bloco não vizinho, e o candidato a mesclagem temporal significa um candidato a mesclagem derivado de uma imagem de referência anterior. O candidato a mesclagem afim inter-região representa um candidato a mesclagem inter-região derivado de um bloco codificado/decodificado com um modelo de movimento afim.
[254] A lista de informações de movimento da região de previsão também pode ser usada no modo de previsão de vetor de movimento. Por exemplo, quando o número de candidatos de previsão de vetor de movimento incluídos em uma lista de candidatos de previsão de vetor de movimento do bloco atual é menor do que um valor limítrofe, um candidato a mesclagem da região de previsão incluído na lista de informações de movimento da região de previsão pode ser definido como um vetor de movimento candidato de previsão para o bloco atual. Especificamente, o vetor de movimento do candidato a mesclagem da região de previsão pode ser definido como um candidato de previsão de vetor de movimento.
[255] Quando qualquer um dentre os candidatos de previsão de vetor de movimento incluídos na lista de candidatos de previsão de vetor de movimento do bloco atual é selecionado, o candidato selecionado pode ser definido como o preditor de vetor de movimento do bloco atual. Depois disso, após um coeficiente residual do vetor de movimento do bloco atual ser decodificado, um vetor de movimento do bloco atual pode ser obtido adicionando o preditor de vetor de movimento e o coeficiente residual do vetor de movimento.
[256] A lista de candidatos de previsão de vetor de movimento do bloco atual pode ser configurada na seguinte ordem.
[257] Candidato de previsão de vetor de movimento espacial - Candidato de previsão de vetor de movimento temporal - Candidato a mesclagem inter-região - (candidato a mesclagem afim inter-região) - Candidato de previsão de vetor de movimento zero.
[258] O candidato de previsão de vetor de movimento espacial significa um candidato de previsão de vetor de movimento derivado de pelo menos um dentre um bloco vizinho e um bloco não vizinho, e o candidato de previsão de vetor de movimento temporal significa um candidato de previsão de vetor de movimento derivado de uma imagem de referência anterior. O candidato a mesclagem afim inter-região representa um candidato de previsão de vetor de movimento inter-região derivado de um bloco codificado/decodificado com o modelo de movimento afim. O candidato a previsão de vetor de movimento zero representa um candidato com um valor de vetor de movimento de 0.
[259] Um bloco de codificação pode ser particionado em uma pluralidade de unidades de previsão e a previsão pode ser realizada em cada uma das unidades de previsão particionadas. Aqui, uma unidade de previsão representa uma unidade básica para realizar a previsão.
[260] Um bloco de codificação pode ser particionado usando pelo menos um dentre uma linha vertical, uma linha horizontal, uma linha oblíqua e uma linha diagonal. As informações para determinar pelo menos um dentre o número, os ângulos e as posições das linhas que particionam um bloco de codificação podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, a informação que indica qualquer um dentre os candidatos do tipo de particionamento de um bloco de codificação pode ser sinalizada através de um fluxo de bits, ou a informação que especifica qualquer um dentre uma pluralidade de candidatos de linha para particionar um bloco de codificação pode ser sinalizada através de um fluxo de bits. Alternativamente, as informações para determinar o número ou tipos de linhas candidatas que particionam um bloco de codificação podem ser sinalizadas através do fluxo de bits. Por exemplo, se uma linha oblíqua com um ângulo maior que o de uma linha diagonal e/ou uma linha oblíqua com um ângulo menor que o de uma linha diagonal pode ser usada como um candidato de linha pode ser determinado usando um sinalizador de 1 bit.
[261] Alternativamente, pelo menos um dentre o número, os ângulos e as posições das linhas que particionam um bloco de codificação podem ser determinados de forma adaptativa com base em pelo menos um dentre o modo intraprevisão do bloco de codificação, o modo interprevisão da codificação bloco, a posição de um candidato a mesclagem disponível do bloco de codificação e um padrão de particionamento de um bloco vizinho.
[262] Quando um bloco de codificação é particionado em uma pluralidade de unidades de previsão, intraprevisão ou interprevisão pode ser realizada em cada uma das unidades de previsão particionadas.
[263] A Figura 23 é uma vista que mostra exemplos de aplicação de particionamento a um bloco de codificação para obter uma pluralidade de unidades de previsão usando uma linha diagonal.
[264] Conforme mostrado nos exemplos das Figuras 23 (a) e 23 (b), um bloco de codificação pode ser particionado em duas unidades de previsão triangulares usando uma linha diagonal.
[265] Nas Figuras 23 (a) e 23 (b), é mostrado que um bloco de codificação é particionado em duas unidades de previsão usando uma linha diagonal conectando dois vértices do bloco de codificação. No entanto, o bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha oblíqua, pelo menos uma extremidade da qual não passa por um vértice do bloco de codificação.
[266] A Figura 24 é uma vista que mostra exemplos de aplicação de particionamento a um bloco de codificação para obter duas unidades de previsão.
[267] Conforme mostrado nos exemplos das Figuras 24 (a) e 24 (b), um bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha oblíqua, ambas as extremidades das quais estão em contato com o limite superior e o limite inferior do bloco de codificação, respectivamente.
[268] Alternativamente, como mostrado nos exemplos das Figuras 24 (c) e 24 (d), um bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha oblíqua, ambas as extremidades das quais estão em contato com o limite esquerdo e o limite direito do bloco de codificação, respectivamente.
[269] Alternativamente, um bloco de codificação pode ser particionado em dois blocos de previsão de tamanhos diferentes. Por exemplo, um bloco de codificação pode ser particionado em duas unidades de previsão de tamanhos diferentes, definindo uma linha oblíqua que particiona o bloco de codificação para contatar duas superfícies de limite que formam um vértice.
[270] A Figura 25 é uma vista que mostra exemplos de particionamento de um bloco de codificação em uma pluralidade de blocos de previsão de tamanhos diferentes.
[271] Conforme mostrado nos exemplos das Figuras 25 (a) e 25 (b), como uma linha diagonal conectando os cantos superior esquerdo e inferior direito do bloco de codificação é definida para passar pelo limite esquerdo, o limite direito, o limite superior ou o limite inferior, em vez de passar pelo canto superior esquerdo ou pelo canto inferior direito do bloco de codificação, o bloco de codificação pode ser particionado em duas unidades de previsão com tamanhos diferentes.
[272] Alternativamente, como mostrado nos exemplos das Figuras 25 (c) e 25 (d), como uma linha diagonal conectando os cantos superior direito e inferior esquerdo do bloco de codificação é definida para passar pelo limite esquerdo, o limite direito, o limite superior ou o limite inferior, em vez de passar pelo canto superior esquerdo ou pelo canto inferior direito do bloco de codificação, o bloco de codificação pode ser particionado em duas unidades de previsão com tamanhos diferentes.
[273] Cada uma das unidades de previsão geradas pelo particionamento de um bloco de codificação será denominada como uma “enésima unidade de previsão”. Por exemplo, nos exemplos mostrados nas Figuras 23 a 25, PU1 pode ser definido como uma primeira unidade de previsão e PU2 pode ser definido como uma segunda unidade de previsão. A primeira unidade de previsão significa uma unidade de previsão incluindo uma amostra posicionada na parte inferior esquerda ou uma amostra posicionada na parte superior esquerda no bloco de codificação, e a segunda unidade de previsão significa uma unidade de previsão incluindo uma amostra posicionada na parte superior direita ou uma amostra posicionada na parte inferior direita do bloco de codificação.
[274] Ao contrário, uma unidade de previsão incluindo uma amostra posicionada na parte superior direita ou uma amostra posicionada na parte inferior direita no bloco de codificação pode ser definida como uma primeira unidade de previsão e uma unidade de previsão incluindo uma amostra posicionada na parte inferior esquerda ou uma amostra posicionada no canto superior esquerdo no bloco de codificação pode ser definida como uma segunda unidade de previsão.
[275] As modalidades abaixo são descritas com foco em exemplos de particionamento de um bloco de codificação usando uma linha diagonal. Particularmente, particionar um bloco de codificação em duas unidades de previsão usando uma linha diagonal é denominado como particionamento diagonal ou particionamento triangular, e uma unidade de previsão gerada com base no particionamento diagonal é denominada como unidade de previsão triangular. No entanto, também é possível aplicar as modalidades descritas abaixo aos exemplos de particionamento de um bloco de codificação usando uma linha oblíqua de um ângulo diferente de uma linha vertical, uma linha horizontal ou uma linha diagonal.
[276] A aplicação ou não do particionamento diagonal a um bloco de codificação pode ser determinada com base em pelo menos um dentre um tipo de fatia, o número máximo de candidatos a mesclagem que a lista de candidatos a mesclagem pode incluir, o tamanho do bloco de codificação, a forma do bloco de codificação, o modo de codificação de previsão do bloco de codificação e o padrão de particionamento do nó pai.
[277] Por exemplo, a aplicação ou não do particionamento diagonal a um bloco de codificação pode ser determinada com base em se a fatia atual é do tipo B. O particionamento diagonal pode ser permitido apenas quando a fatia atual é do tipo B.
[278] Alternativamente, a aplicação ou não do particionamento diagonal a um bloco de codificação pode ser determinada com base em se o número máximo de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é dois ou mais. O particionamento diagonal pode ser permitido apenas quando o número máximo de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for dois ou mais.
[279] Alternativamente, quando pelo menos um dentre a largura e a altura é maior do que 64 na implementação de hardware, há um problema em que uma unidade de processamento de dados de tamanho 64 x 64 é acessada de forma redundante. Por conseguinte, quando pelo menos um dentre a largura e a altura do bloco de codificação é maior do que um valor limítrofe, o particionamento de um bloco de codificação em uma pluralidade de blocos de previsão pode não ser permitido. Por exemplo, quando pelo menos um dentre a largura e a altura de um bloco de codificação é maior que 64 (por exemplo, quando pelo menos um dentre a largura e a altura é 128), o particionamento diagonal não pode ser usado.
[280] Alternativamente, o particionamento diagonal pode não ser permitida para um bloco de codificação cujo número de amostras é maior do que um valor limítrofe, considerando o número máximo de amostras que podem ser processadas simultaneamente na implementação de hardware. Por exemplo, o particionamento diagonal pode não ser permitido para um bloco de árvore de codificação cujo número de amostras seja maior que 4.096.
[281] Alternativamente, o particionamento diagonal pode não ser permitido para um bloco de codificação cujo número de amostras incluídas no bloco de codificação é menor do que um valor limítrofe. Por exemplo, pode ser definido para não aplicar o particionamento diagonal a um bloco de codificação quando o número de amostras incluídas no bloco de codificação for menor que 64.
[282] Alternativamente, a aplicação ou não do particionamento diagonal a um bloco de codificação pode ser determinada com base em se a proporção da largura para a altura do bloco de codificação é inferior a um primeiro valor limítrofe ou se a proporção da largura para a altura do bloco de codificação é maior do que um segundo valor limítrofe. Aqui, a proporção de largura para altura whRatio do bloco de codificação pode ser determinada como uma proporção da largura
CbW para a altura CbH do bloco de codificação, como mostrado na Equação 5. [Equação 5] whRatio = CbW/CbH
[283] O segundo valor limítrofe pode ser um número inverso do primeiro valor limítrofe. Por exemplo, quando o primeiro valor limítrofe é k, o segundo valor limítrofe pode ser 1/k.
[284] O particionamento diagonal pode ser aplicado a um bloco de codificação apenas quando a relação largura-altura do bloco de codificação está entre o primeiro valor limítrofe e o segundo valor limítrofe.
[285] Alternativamente, o particionamento triangular pode ser usado apenas quando a proporção entre largura e altura do bloco de codificação é inferior ao primeiro valor limítrofe ou superior ao segundo valor limítrofe. Por exemplo, quando o primeiro valor limítrofe é 16, o particionamento diagonal pode não ser permitido para um bloco de codificação de tamanho 64 x 4 ou 4 x 64.
[286] Alternativamente, permitir ou não o particionamento diagonal pode ser determinada com base no padrão de particionamento do nó pai. Por exemplo, quando um bloco de codificação de nó pai é particionado com base no particionamento de árvore quádrupla, o particionamento diagonal pode ser aplicado a um bloco de codificação de nó folha. Por outro lado, pode ser configurado para não permitir o particionamento diagonal para o bloco de codificação do nó folha quando o bloco de codificação do nó pai é particionado com base na árvore binária ou particionamento da árvore ternária.
[287] Alternativamente, permitir ou não o particionamento diagonal pode ser determinada com base no modo de codificação de previsão de um bloco de codificação. Por exemplo, o particionamento diagonal pode ser permitido apenas quando o bloco de codificação é codificado por intraprevisão, quando o bloco de codificação é codificado por interprevisão ou quando o bloco de codificação é codificado por um modo de interprevisão predefinido. Aqui, o modo de interprevisão predefinido pode representar pelo menos um dentre um modo de mesclagem, um modo de previsão de vetor de movimento, um modo de mesclagem afim e um modo de previsão de vetor de movimento afim.
[288] Alternativamente, se deve ou não permitir o particionamento diagonal pode ser determinada com base no tamanho de uma região de processamento paralela. Por exemplo, quando o tamanho de um bloco de codificação é maior do que o tamanho de uma região de processamento paralelo, o particionamento diagonal não pode ser usado.
[289] A aplicação ou não do particionamento diagonal a um bloco de codificação pode ser determinada considerando duas ou mais das condições listadas acima.
[290] Como outro exemplo, as informações que indicam se deve ou não aplicar o particionamento diagonal a um bloco de codificação podem ser sinalizadas através de um fluxo de bits. As informações podem ser sinalizadas em uma sequência, imagem, fatia ou nível de bloco. Por exemplo, o sinalizador triangle_partition_flag indicando se o particionamento triangular é aplicado a um bloco de codificação pode ser sinalizado em um nível de bloco de codificação.
[291] Quando é determinado aplicar o particionamento diagonal a um bloco de codificação, informações indicando o número de linhas que particionam o bloco de codificação ou as posições das linhas podem ser sinalizadas através de um fluxo de bits.
[292] Por exemplo, quando um bloco de codificação é particionado por uma linha diagonal, a informação que indica a direção da linha diagonal que particiona o bloco de codificação pode ser sinalizada através de um fluxo de bits. Por exemplo, o sinalizador triangle_partition_type_flag indicando a direção da linha diagonal pode ser sinalizado por meio de um fluxo de bits. O sinalizador indica se o bloco de codificação é particionado por uma linha diagonal conectando o canto superior esquerdo e o canto inferior direito ou se o bloco de codificação é particionado por uma linha diagonal conectando o canto superior direito e o canto inferior esquerdo. Particionar um bloco de codificação por uma linha diagonal conectando o canto superior esquerdo e o canto inferior direito pode ser denominado como um tipo de particionamento triangular esquerda e particionar um bloco de codificação por uma linha diagonal conectando o canto superior direito e o inferior o canto esquerdo pode ser denominado como um tipo de particionamento triangular direita. Por exemplo, quando o valor do sinalizador é 0, pode indicar que o tipo de particionamento do bloco de codificação é o tipo de particionamento triangular à esquerda, e quando o valor do sinalizador é 1, pode indicar que o tipo de particionamento da codificação bloco é o tipo de particionamento triangular direita.
[293] Além disso, informações indicando se as unidades de previsão têm o mesmo tamanho ou informações indicando a posição de uma linha diagonal para particionar o bloco de codificação podem ser sinalizadas através de um fluxo de bits. Por exemplo, quando as informações que indicam os tamanhos das unidades de previsão indicam que os tamanhos das unidades de previsão são iguais, a codificação da informação que indica a posição da diagonal é omitida e o bloco de codificação pode ser particionado em duas unidades de previsão usando uma linha diagonal passando por dois vértices do bloco de codificação. Por outro lado, quando a informação que indica os tamanhos das unidades de previsão indica que os tamanhos das unidades de previsão não são iguais, a posição da linha diagonal que particiona o bloco de codificação pode ser determinada com base na informação que indica a posição do linha diagonal. Por exemplo, quando o tipo de particionamento triangular esquerda é aplicado a um bloco de codificação, as informações de posição podem indicar se a linha diagonal está em contato com o limite esquerdo e o limite inferior ou o limite superior e o limite direito do bloco de codificação. Alternativamente, quando o tipo de particionamento triangular direita é aplicado a um bloco de codificação, a informação de posição pode indicar se a linha diagonal está em contato com o limite direito e o limite inferior ou o limite superior e o limite esquerdo do bloco de codificação.
[294] A informação que indica o tipo de particionamento de um bloco de codificação pode ser sinalizada em um nível de bloco de codificação. Consequentemente, o tipo de particionamento pode ser determinado para cada bloco de codificação ao qual o particionamento diagonal é aplicado.
[295] Como outro exemplo, as informações que indicam o tipo de particionamento podem ser sinalizadas para uma sequência, uma imagem, uma fatia, um bloco ou uma unidade de árvore de codificação. Neste caso, os tipos de particionamento de blocos de codificação aos quais o particionamento diagonal é aplicado em uma sequência, uma imagem, uma fatia, um bloco ou uma unidade de árvore de codificação podem ser definidos para serem iguais.
[296] Alternativamente, as informações para determinar o tipo de particionamento podem ser codificadas e sinalizadas para a primeira unidade de codificação à qual o particionamento diagonal é aplicado na unidade de árvore de codificação, e a segunda e subsequentes unidades de codificação às quais o particionamento diagonal é aplicado podem ser definidas para usar um tipo de particionamento igual ao da primeira unidade de codificação.
[297] Como outro exemplo, o tipo de particionamento de um bloco de codificação pode ser determinado com base no tipo de particionamento de um bloco vizinho. Aqui, o bloco vizinho pode incluir pelo menos um dentre um bloco vizinho adjacente ao canto superior esquerdo do bloco de codificação, um bloco vizinho adjacente ao canto superior direito, um bloco vizinho adjacente ao canto inferior esquerdo, um vizinho bloco posicionado na parte superior e um bloco vizinho posicionado no lado esquerdo. Por exemplo, o tipo de particionamento do bloco atual pode ser definido para ser o mesmo que o tipo de particionamento de um bloco vizinho. Alternativamente, o tipo de particionamento do bloco atual pode ser determinado com base em se o tipo de particionamento triangular esquerda é aplicado ao bloco vizinho superior esquerdo ou se o tipo de particionamento triangular direita é aplicado ao bloco vizinho superior direito ou inferior esquerdo bloco vizinho.
[298] De modo a realizar a compensação de previsão de movimento em uma primeira unidade de previsão triangular e uma segunda unidade de previsão triangular, as informações de movimento de cada uma da primeira unidade de previsão triangular e da segunda unidade de previsão triangular podem ser derivadas. Neste ponto, as informações de movimento da primeira unidade de previsão triangular e da segunda unidade de previsão triangular podem ser derivadas de candidatos a mesclagem incluídos na lista de candidatos a mesclagem. Para distinguir uma lista de candidatos de mesclagem geral de uma lista de candidatos de mesclagem usada para derivar as informações de movimento das unidades de previsão triangulares, a lista de candidatos de mesclagem para derivar as informações de movimento das unidades de previsão triangulares é denominada como uma lista de candidatos de mesclagem triangular, e um candidato a mesclagem incluído na lista de candidatos a mesclagem triangular será denominado como um candidato a mesclagem triangular. No entanto, usar o método de derivar um candidato a mesclagem e o método de construir uma lista de candidatos a mesclagem descrito acima para o benefício dos candidatos a mesclagem triangular e o método de construir a lista de candidatos a mesclagem triangular também está incluído no espírito da presente divulgação.
[299] As informações para determinar o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir podem ser sinalizadas por meio de um fluxo de bits. As informações podem indicar uma diferença entre o número máximo de candidatos a mesclagem que a lista de candidatos a mesclagem pode incluir e o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir.
[300] Os candidatos a mesclagem triangular podem ser derivados de um bloco vizinho espacialmente e um bloco vizinho temporalmente de um bloco de codificação.
[301] A Figura 26 é uma vista que mostra blocos vizinhos usados para derivar um candidato a mesclagem triangular.
[302] Um candidato a mesclagem triangular pode ser derivado usando pelo menos um dentre um bloco vizinho posicionado na parte superior de um bloco de codificação, um bloco vizinho posicionado no lado esquerdo do bloco de codificação e um bloco colocado incluído em uma imagem diferente de o bloco de codificação. O bloco vizinho superior pode incluir pelo menos um dentre um bloco incluindo uma amostra (xCb + CbW-1, yCb-1) posicionada na parte superior do bloco de codificação, um bloco incluindo uma amostra (xCb + CbW, yCb-1) posicionada na parte superior do bloco de codificação e um bloco incluindo uma amostra (xCb-1, yCb-1) posicionada na parte superior do bloco de codificação. O bloco vizinho à esquerda pode incluir pelo menos um dentre um bloco incluindo uma amostra (xCb-1, yCb + CbH-1) posicionada no lado esquerdo do bloco de codificação e um bloco incluindo uma amostra (xCb-1, yCb + CbH) posicionado no lado esquerdo do bloco de codificação. O bloco colocado pode ser determinado como qualquer um dentre um bloco incluindo uma amostra (xCb + CbW, yCb + CbH) adjacente ao canto superior direito do bloco de codificação e um bloco incluindo uma amostra (xCb/2, yCb/2) posicionado no centro do bloco de codificação, em uma imagem colocada.
[303] Os blocos vizinhos podem ser pesquisados em uma ordem predefinida e os candidatos a mesclagem triangular podem ser construídos como uma lista de candidatos a mesclagem triangular de acordo com uma ordem predefinida. Por exemplo, a lista de candidatos a mesclagem triangular pode ser construída pesquisando os candidatos a mesclagem triangular na ordem de B1, A1, B0, A0, C0, B2 e C1.
[304] As informações de movimento das unidades de previsão triangulares podem ser derivadas com base na lista de candidatos a mesclagem triangular. Ou seja, as unidades de previsão triangulares podem compartilhar uma lista de candidatos a mesclagem triangular.
[305] De modo a derivar informações de movimento da unidade de mesclagem triangular, as informações para especificar pelo menos um dentre os candidatos a mesclagem triangular incluídos na lista de candidatos de mesclagem triangular podem ser sinalizadas por meio de um fluxo de bits. Por exemplo, informações de índice merge_triangle_idx para especificar pelo menos um dentre os candidatos a mesclagem triangular podem ser sinalizadas por meio de um fluxo de bits.
[306] As informações de índice podem especificar uma combinação de um candidato a mesclagem da primeira unidade de previsão triangular e um candidato a mesclagem da segunda unidade de previsão triangular. Por exemplo, a Tabela 1 mostra um exemplo de uma combinação de candidatos a mesclagem de acordo com as informações de índice merge_triangle_idx. TABELA 1 merge_triangle_idx 0 1 2 3 4 5 6 7 8 Primeira unidade 1 0 0 0 2 0 0 1 3 de previsão
Segunda unidade de 0 1 2 1 0 3 4 0 0 previsão merge_triangle_idx 9 10 11 12 13 14 15 16 17 Primeira unidade 4 0 1 1 0 0 1 1 1 de previsão Segunda unidade de 0 2 2 2 4 3 3 4 4 previsão merge_triangle_idx 18 19 20 21 22 23 24 25 26 Primeira unidade 1 2 2 2 4 3 3 3 4 de previsão triangular Segunda unidade de 3 1 0 1 3 0 2 4 0 previsão triangular merge_triangle_idx 27 28 29 30 31 32 33 34 35 Primeira unidade 3 2 4 4 2 4 3 4 3 de previsão triangular Segunda unidade de 1 3 1 1 3 2 2 3 1 previsão triangular merge_triangle_idx 36 37 38 39 Primeira unidade 2 2 4 3 de previsão triangular Segunda unidade de 4 4 2 4 previsão triangular
[307] Quando o valor da informação de índice merge_triangle_idx é 1, indica que a informação de movimento da primeira unidade de previsão triangular é derivada de um candidato a mesclagem com um índice de 1, e a informação de movimento da segunda unidade de previsão triangular é derivada de um candidato a mesclagem com um índice de 0. Um candidato a mesclagem triangular para derivar informações de movimento da primeira unidade de previsão triangular e um candidato a mesclagem triangular para derivar informações de movimento da segunda unidade de previsão triangular pode ser determinado através de informações de índice merge_triangle_idx.
[308] Um tipo de particionamento de um bloco de codificação ao qual o particionamento diagonal é aplicado pode ser determinado com base nas informações de índice. Ou seja, as informações de índice podem especificar uma combinação de um candidato a mesclagem da primeira unidade de previsão triangular, um candidato a mesclagem da segunda unidade de previsão triangular e uma direção de particionamento do bloco de codificação. Quando um tipo de particionamento do bloco de codificação é determinado com base na informação de índice, a informação triangle_partition_type_flag indicando a direção de uma linha diagonal que particiona o bloco de codificação pode não ser codificada. A Tabela 2 expressa os tipos de particionamento de um bloco de codificação em relação às informações de índice merge_triangle_idx. TABELA 2 merge_triangle_idx 0 1 2 3 4 5 6 7 8 TriangleDir 0 1 1 0 0 1 1 1 0 merge_triangle_idx 9 10 11 12 13 14 15 16 17 TriangleDir 0 0 0 1 0 0 0 0 1 merge_triangle_idx 18 19 20 21 22 23 24 25 26
TriangleDir 1 1 1 0 0 1 1 1 1 merge_triangle_idx 27 28 29 30 31 32 33 34 35 TriangleDir 1 1 1 0 0 1 0 1 0 merge_triangle_idx 36 37 38 39 TriangleDir 0 1 0 0
[309] Quando a variável TriangleDir é 0, indica que o tipo de particionamento do triângulo esquerdo é aplicado ao bloco de codificação, e quando a variável TriangleDir é 1, indica que o tipo de particionamento do triângulo direito é aplicado ao bloco de codificação. Ao combinar a Tabela 1 e a Tabela 2, pode ser definido para especificar uma combinação do candidato a mesclagem da primeira unidade de previsão triangular, o candidato a mesclagem da segunda unidade de previsão triangular e a direção de particionamento do bloco de codificação por informação de índice merge_triangle_idx.
[310] Como outro exemplo, as informações de índice apenas para qualquer uma entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular podem ser sinalizadas, e um índice de um candidato a mesclagem triangular para o outro entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser determinada com base nas informações de índice. Por exemplo, um candidato a mesclagem triangular da primeira unidade de previsão triangular pode ser determinado com base na informação de índice merge_triangle_idx indicando um índice de qualquer um dentre os candidatos a mesclagem triangular. Além disso, um candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser especificado com base em merge_triangle_idx. Por exemplo, o candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser derivado adicionando ou subtraindo um deslocamento para ou da informação de índice merge_triangle_idx. O deslocamento pode ser um número inteiro, como 1 ou 2. Por exemplo, um candidato a mesclagem triangular tendo um valor obtido pela adição de 1 a merge_traingle_idx como um índice pode ser determinado como o candidato a mesclagem triangular da segunda unidade de previsão triangular. Quando merge_triangle_idx indica um candidato a mesclagem triangular tendo o maior valor de índice entre os candidatos a mesclagem triangular, as informações de movimento da segunda unidade de previsão triangular podem ser derivadas de um candidato a mesclagem triangular tendo um índice de 0 ou um candidato a mesclagem triangular tendo um valor obtido por subtração 1 de merge_triangle_idx como um índice.
[311] Alternativamente, as informações de movimento da segunda unidade de previsão triangular podem ser derivadas de um candidato a mesclagem triangular tendo uma imagem de referência igual à do candidato a mesclagem triangular da primeira unidade de previsão triangular especificada pela informação de índice. Aqui, o candidato a mesclagem triangular tendo uma imagem de referência igual à do candidato a mesclagem triangular da primeira unidade de previsão triangular pode indicar um candidato a mesclagem triangular tendo pelo menos uma entre a imagem de referência L0 e a imagem de referência L1 igual àquelas do triângulo candidato a mesclagem da primeira unidade de previsão triangular. Quando há uma pluralidade de candidatos a mesclagem triangular tendo uma imagem de referência igual à do candidato a mesclagem triangular da primeira unidade de previsão triangular, pelo menos um dentre os candidatos a mesclagem triangular pode ser selecionado com base em se o candidato a mesclagem inclui informações de movimento bidirecional ou um valor de diferença entre o índice do candidato a mesclagem e as informações do índice.
[312] Como outro exemplo, as informações de índice podem ser sinalizadas para cada uma da primeira unidade de previsão triangular e da segunda unidade de previsão triangular. Por exemplo, a primeira informação de índice 1st_merge_idx para determinar um candidato a mesclagem triangular da primeira unidade de previsão triangular e a segunda informação de índice 2nd_merge_idx para determinar um candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser sinalizada através de um fluxo de bits. As informações de movimento da primeira unidade de previsão triangular podem ser derivadas do candidato a mesclagem triangular determinado com base na primeira informação de índice 1st_merge_idx e as informações de movimento da segunda unidade de previsão triangular podem ser derivadas do candidato a mesclagem triangular determinado com base em informações de segundo índice 2nd_merge_idx.
[313] As primeiras informações de índice 1st_merge_idx podem indicar um índice de qualquer um dentre os candidatos a mesclagem triangular incluídos na lista de candidatos a mesclagem triangular. O candidato a mesclagem triangular da primeira unidade de previsão triangular pode ser determinado como um candidato a mesclagem triangular indicado pela primeira informação de índice 1st_merge_idx.
[314] O candidato a mesclagem triangular indicado pela primeira informação de índice 1st_merge_idx pode ser definido para não ser usado como um candidato a mesclagem triangular da segunda unidade de previsão triangular. Por conseguinte, a segunda informação de índice 2nd_merge_idx da segunda unidade de previsão triangular pode indicar um índice de qualquer um dentre os candidatos a mesclagem triangular restantes, excluindo o candidato a mesclagem triangular indicado pela primeira informação de índice. Quando o valor da segunda informação de índice 2nd_merge_idx é menor do que o valor da primeira informação de índice 1st_merge_idx, o candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser determinado como um candidato a mesclagem triangular tendo a informação de índice indicada pela segunda informação de índice 2nd_merge_idx. Por outro lado, quando o valor da segunda informação de índice 2nd_merge_idx é igual ou maior que o valor da primeira informação de índice 1st_merge_idx, o candidato a mesclagem triangular da segunda unidade de previsão triangular pode ser determinado como um candidato a mesclagem triangular tendo um valor obtido por adicionando 1 ao valor da segunda informação do índice 2nd_merge_idx como um índice.
[315] Alternativamente, sinalizar ou não a segunda informação de índice pode ser determinado de acordo com o número de candidatos a mesclagem triangular incluídos na lista de candidatos a mesclagem triangular. Por exemplo, quando o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir não excede 2, a sinalização da segunda informação de índice pode ser omitida. Quando a sinalização da segunda informação de índice é omitida, um segundo candidato a mesclagem triangular pode ser derivado adicionando ou subtraindo um deslocamento para ou da primeira informação de índice. Por exemplo, quando o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir é 2 e a primeira informação de índice indica o índice 0, o segundo candidato a mesclagem triangular pode ser derivado adicionando 1 à primeira informação de índice. Alternativamente, quando o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir é 2 e a primeira informação de índice indica 1, o segundo candidato a mesclagem triangular pode ser derivado subtraindo 1 da primeira informação de índice.
[316] Alternativamente, quando a sinalização da segunda informação de índice é omitida, a segunda informação de índice pode ser definida para um valor padrão. Aqui, o valor padrão pode ser 0. O segundo candidato a mesclagem triangular pode ser derivado comparando a primeira informação de índice e a segunda informação de índice. Por exemplo, quando a segunda informação de índice é menor do que a primeira informação de índice, um candidato a mesclagem com índice 0 pode ser definido como o segundo candidato a mesclagem triangular, e quando a segunda informação de índice é igual ou maior que a primeira informação de índice, um O candidato a mesclagem com índice 1 pode ser definido como o segundo candidato a mesclagem triangular.
[317] Quando o candidato a mesclagem triangular tem informações de movimento unidirecional, as informações de movimento unidirecional do candidato a mesclagem triangular podem ser definidas como informações de movimento da unidade de previsão triangular. Por outro lado, quando o candidato a mesclagem triangular tem informações de movimento bidirecional, apenas uma entre as informações de movimento L0 e as informações de movimento L1 pode ser definida como informações de movimento da unidade de previsão triangular. Qual entre as informações de movimento L0 e as informações de movimento L1 será obtido pode ser determinado com base no índice do candidato a mesclagem triangular ou informações de movimento de outra unidade de previsão triangular.
[318] Por exemplo, quando o índice do candidato a mesclagem triangular é um número par, as informações de movimento L0 da unidade de previsão triangular podem ser definidas como 0 e as informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como informações de movimento L1 de a unidade de previsão triangular. Por outro lado, quando o índice do candidato a mesclagem triangular é um número ímpar, as informações de movimento L1 da unidade de previsão triangular podem ser definidas como 0 e as informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como 0. Contrariamente, quando o índice do candidato a mesclagem triangular é um número par, a informação de movimento L0 do candidato a mesclagem triangular pode ser definida como informação de movimento L0 da unidade de previsão triangular e quando o índice do candidato a mesclagem triangular é um número ímpar, a informação de movimento L1 do candidato a mesclagem triangular pode ser definido como informação de movimento L1 da unidade de previsão triangular. Alternativamente, quando o candidato a mesclagem triangular é um número par para a primeira unidade de previsão triangular, a informação de movimento L0 do candidato a mesclagem triangular pode ser definida como informação de movimento L0 da primeira unidade de previsão triangular, enquanto que quando o candidato a mesclagem triangular é um número ímpar para a segunda unidade de previsão triangular, as informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como informações de movimento L1 da segunda unidade de previsão triangular.
[319] Alternativamente, quando a primeira unidade de previsão triangular tem informação de movimento L0, informação de movimento L0 da segunda unidade de previsão triangular pode ser ajustada para 0, e informação de movimento L1 do candidato a mesclagem triangular pode ser ajustada como informação de movimento L1 do segundo unidade de previsão triangular. Por outro lado, quando a primeira unidade de previsão triangular tem informação de movimento L1, informação de movimento L1 da segunda unidade de previsão triangular pode ser ajustada para 0, e informação de movimento L0 do candidato a mesclagem triangular pode ser ajustada como informação de movimento L0 do segundo unidade de previsão triangular.
[320] Uma lista de candidatos a mesclagem triangular para derivar informações de movimento da primeira unidade de previsão triangular e uma lista de candidatos a mesclagem triangular para derivar informações de movimento da segunda unidade de previsão triangular podem ser definidas de forma diferente.
[321] Por exemplo, quando um candidato a mesclagem triangular para derivar informações de movimento da primeira unidade de previsão triangular na lista de candidatos a mesclagem triangular é especificado com base nas informações de índice para a primeira unidade de previsão triangular, as informações de movimento da segunda unidade de previsão triangular podem ser derivada usando a lista de candidatos de mesclagem triangular, incluindo os candidatos de mesclagem triangular restantes, excluindo o candidato de mesclagem triangular indicado pelas informações de índice. Especificamente, a informação de movimento da segunda unidade de previsão triangular pode ser derivada de qualquer um dentre os candidatos a mesclagem triangular restantes.
[322] Por conseguinte, o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular da primeira unidade de previsão triangular inclui e o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular da segunda unidade de previsão triangular inclui podem ser diferentes. Por exemplo, quando a lista de candidatos a mesclagem triangular da primeira unidade de previsão triangular inclui candidatos a mesclagem M, a lista de candidatos a mesclagem triangular da segunda unidade de previsão triangular pode incluir candidatos a mesclagem M-1 excluindo o candidato a mesclagem triangular indicado pelas informações de índice da primeira unidade de previsão triangular.
[323] Como outro exemplo, um candidato a mesclagem de cada unidade de previsão triangular é derivado com base em blocos vizinhos adjacentes a um bloco de codificação e a disponibilidade dos blocos vizinhos pode ser determinada considerando a forma ou a posição da unidade de previsão triangular.
[324] A Figura 27 é uma vista para descrever exemplos de determinação da disponibilidade de um bloco vizinho para cada unidade de previsão triangular.
[325] Um bloco vizinho não adjacente à primeira unidade de previsão triangular pode ser definido como indisponível para a primeira unidade de previsão triangular e um bloco vizinho não adjacente à segunda unidade de previsão triangular pode ser definido como indisponível para a segunda unidade de previsão triangular.
[326] Por exemplo, como mostrado no exemplo da Figura 27 (a), quando o tipo de particionamento triangular esquerda é aplicado a um bloco de codificação, pode ser determinado que os blocos A1, A0 e A2 adjacentes à primeira unidade de previsão triangular entre os blocos vizinhos adjacentes ao bloco de codificação estão disponíveis para o primeiro unidade de previsão triangular, enquanto os blocos B0 e B1 estão indisponíveis para a primeira unidade de previsão triangular. Por conseguinte, a lista de candidatos a mesclagem triangular para a primeira unidade de previsão triangular pode incluir candidatos a mesclagem triangular derivados dos blocos A1, A0 e A2 e pode não incluir candidatos a mesclagem triangular derivados dos blocos B0 e B1.
[327] Como mostrado no exemplo da Figura 27 (b), quando o tipo de particionamento triangular esquerda é aplicado a um bloco de codificação, pode ser determinado que os blocos B0 e B1 adjacentes à segunda unidade de previsão triangular estão disponíveis para a segunda unidade de previsão triangular, enquanto os blocos A1, A0 e A2 não estão disponíveis para a segunda unidade de previsão triangular. Por conseguinte, a lista de candidatos a mesclagem triangular para a segunda unidade de previsão triangular pode incluir candidatos a mesclagem triangular derivados dos blocos B0 e B1 e pode não incluir candidatos a mesclagem triangular derivados dos blocos A1, A0 e A2.
[328] Por conseguinte, o número de candidatos a mesclagem triangular ou o intervalo de candidatos a mesclagem triangular que a unidade de previsão triangular pode usar pode ser determinado com base em pelo menos um dentre a posição da unidade de previsão triangular ou o tipo de particionamento do bloco de codificação.
[329] Como outro exemplo, o modo de mesclagem pode ser aplicado a apenas uma entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular. Além disso, a informação de movimento da outra entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser definida para ser a mesma que a informação de movimento da unidade de previsão triangular à qual o modo a mesclagem é aplicado, ou pode ser derivado refinando as informações de movimento da unidade de previsão triangular à qual o modo de mesclagem é aplicado.
[330] Por exemplo, um vetor de movimento e um índice de imagem de referência da primeira unidade de previsão triangular podem ser derivados com base em um candidato a mesclagem triangular e um vetor de movimento da segunda unidade de previsão triangular pode ser derivado refinando o vetor de movimento do primeira unidade de previsão triangular. Por exemplo, o vetor de movimento da segunda unidade de previsão triangular pode ser derivado adicionando ou subtraindo um vetor de movimento refinado {Rx, Ry} para ou do vetor de movimento {mvD1LXx, mvD1LXy} da primeira unidade de previsão triangular. O índice de imagem de referência da segunda unidade de previsão triangular pode ser definido para ser o mesmo que o índice de imagem de referência da primeira unidade de previsão triangular.
[331] As informações para determinar um vetor de movimento refinado indicando a diferença entre o vetor de movimento da primeira unidade de previsão triangular e o vetor de movimento da segunda unidade de previsão triangular podem ser sinalizadas através de um fluxo de bits. As informações podem incluir pelo menos uma entre as informações que indicam o tamanho do vetor de movimento refinado e informações que indicam o sinal do vetor de movimento refinado.
[332] Alternativamente, o sinal do vetor de movimento refinado pode ser derivado com base em pelo menos um dentre a posição da unidade de previsão triangular, o índice da unidade de previsão triangular e o tipo de particionamento aplicado ao bloco de codificação.
[333] Como outro exemplo, o vetor de movimento e o índice de imagem de referência de qualquer um dentre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular podem ser sinalizados. O vetor de movimento do outro entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular pode ser derivado refinando o vetor de movimento sinalizado.
[334] Por exemplo, o vetor de movimento e o índice de imagem de referência da primeira unidade de previsão triangular podem ser determinados com base na informação sinalizada de um fluxo de bits. Além disso, o vetor de movimento da segunda unidade de previsão triangular pode ser derivado refinando o vetor de movimento da primeira unidade de previsão triangular. Por exemplo, o vetor de movimento da segunda unidade de previsão triangular pode ser derivado adicionando ou subtraindo um vetor de movimento refinado {Rx, Ry} para ou do vetor de movimento {mvD1LXx, mvD1LXy} da primeira unidade de previsão triangular. O índice de imagem de referência da segunda unidade de previsão triangular pode ser definido para ser o mesmo que o índice de imagem de referência da primeira unidade de previsão triangular.
[335] A previsão de compensação de previsão de movimento para cada bloco de codificação pode ser realizada com base nas informações de movimento da primeira unidade de previsão triangular e as informações de movimento da segunda unidade de previsão triangular. Neste ponto, a degradação da qualidade do vídeo pode ocorrer no limite entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular. Por exemplo, a continuidade da qualidade do vídeo pode ser degradada na vizinhança de uma borda existente no limite entre a primeira unidade de previsão triangular e a segunda unidade de previsão triangular. De modo a reduzir a degradação da qualidade do vídeo no limite, uma amostra de previsão pode ser derivada por meio de um filtro de suavização ou uma previsão ponderada.
[336] As amostras de previsão em um bloco de codificação ao qual o particionamento diagonal é aplicado podem ser derivadas com base em uma operação de soma ponderada de uma primeira amostra de previsão obtida com base nas informações de movimento da primeira unidade de previsão triangular e uma segunda amostra de previsão obtida com base nas informações de movimento da segunda unidade de previsão triangular. Alternativamente, uma amostra de previsão da primeira unidade de previsão triangular é derivada de um primeiro bloco de previsão determinado com base nas informações de movimento da primeira unidade de previsão triangular e uma amostra de previsão da segunda unidade de previsão triangular é derivada de um segundo bloco de previsão determinado com base nas informações de movimento da segunda unidade de previsão triangular e uma amostra de previsão posicionada na região limite da primeira unidade de previsão triangular e a segunda unidade de previsão triangular podem ser derivadas com base em uma operação de soma ponderada da primeira amostra de previsão incluída na primeira bloco de previsão e a segunda amostra de previsão incluída no segundo bloco de previsão. Por exemplo, a Equação 6 mostra um exemplo de derivação de amostras de previsão da primeira unidade de previsão triangular e da segunda unidade de previsão triangular. [Equação 6] 𝑃(𝑥, 𝑦) = 𝑤1 ∗ 𝑃1(𝑥, 𝑦) + (1 − 𝑤1) ∗ 𝑃2(𝑥, 𝑦)
[337] Na Equação 6, P1 denota uma primeira amostra de previsão e P2 denota uma segunda amostra de previsão. w1 denota um valor de ponderação aplicado à primeira amostra de previsão e (1-w1) denota um valor de ponderação aplicado à segunda amostra de previsão. Como mostrado no exemplo da Equação 6, o valor de ponderação aplicado à segunda amostra de previsão pode ser derivado subtraindo o valor de ponderação aplicado à primeira amostra de previsão de um valor constante.
[338] Quando o tipo de particionamento triangular esquerda é aplicado a um bloco de codificação, a região limite pode incluir amostras de previsão das quais a coordenada do eixo geométrico x e a coordenada do eixo geométrico y são as mesmas. Por outro lado, quando o tipo de particionamento triangular direita é aplicado a um bloco de codificação, a região limite pode incluir amostras de previsão das quais a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é maior ou igual a um primeiro valor limítrofe e menor do que um segundo valor limítrofe.
[339] Um tamanho da região limite pode ser determinado com base em pelo menos um dentre o tamanho do bloco de codificação, a forma do bloco de codificação, informações de movimento das unidades de previsão triangulares, um valor de diferença entre os vetores de movimento das unidades de previsão triangulares, uma ordem de saída de imagens de referência e um valor de diferença entre a primeira amostra de previsão e a segunda amostra de previsão no limite diagonal.
[340] As Figuras 28 e 29 são vistas que mostram exemplos de derivação de uma amostra de previsão com base em uma operação de soma ponderada de uma primeira amostra de previsão e uma segunda amostra de previsão. A Figura 28 mostra um exemplo de aplicação do tipo de particionamento triangular esquerda a um bloco de codificação, e a FIG. 29 mostra um exemplo de aplicação do tipo de particionamento triangular direita a um bloco de codificação. Além disso, as Figuras 28 (a) e 29 (a) são vistas que mostram padrões de previsão para um componente luma e as Figuras 28 (b) e 29 (b) são vistas que mostram padrões de previsão para um componente de croma.
[341] Nos desenhos, os números marcados nas amostras de previsão posicionadas perto do limite entre a primeira unidade de previsão e a segunda unidade de previsão indicam valores de ponderação aplicados à primeira amostra de previsão. Por exemplo, quando um número marcado em uma amostra de previsão é N, a amostra de previsão pode ser derivada aplicando um valor de ponderação de N/8 à primeira amostra de previsão e aplicando um valor de ponderação de (1-(N/8)) à segunda amostra de previsão.
[342] Em uma região não limite, a primeira amostra de previsão ou a segunda amostra de previsão pode ser determinada como uma amostra de previsão. Com referência ao exemplo da Figura 28, em uma região pertencente à primeira unidade de previsão triangular entre as regiões nas quais o valor absoluto da diferença entre a coordenada do eixo geométrico x e a coordenada do eixo geométrico y é maior do que um valor limítrofe, a primeira amostra de previsão derivada com base nas informações de movimento da primeira unidade de previsão triangular podem ser determinadas como uma amostra de previsão. Por outro lado, em uma região pertencente à segunda unidade de previsão triangular entre as regiões em que o valor da diferença entre a coordenada do eixo geométrico x e a coordenada do eixo geométrico y é maior do que um valor limítrofe, a segunda amostra de previsão derivada com base nas informações de movimento da segunda unidade de previsão triangular pode ser determinada como uma amostra de previsão.
[343] Com referência ao exemplo da Figura 29, em uma região na qual a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é menor do que um primeiro valor limítrofe, a primeira amostra de previsão derivada com base nas informações de movimento da primeira unidade de previsão triangular pode ser determinada como uma amostra de previsão. Por outro lado, em uma região na qual a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é maior do que um segundo valor limítrofe, a segunda amostra de previsão derivada com base nas informações de movimento da segunda unidade de previsão triangular pode ser determinado como uma amostra de previsão.
[344] Um valor limítrofe para determinar uma região não limite pode ser determinado com base em pelo menos um dentre o tamanho de um bloco de codificação, a forma do bloco de codificação e um componente de cor. Por exemplo,
quando o valor limítrofe para um componente luma é definido como N, o valor limítrofe para um componente croma pode ser definido como N/2.
[345] As amostras de previsão incluídas na região limite podem ser derivadas com base em uma operação de soma ponderada da primeira amostra de previsão e da segunda amostra de previsão. Neste ponto, os valores de ponderação aplicados à primeira amostra de previsão e à segunda amostra de previsão podem ser determinados com base em pelo menos um dentre a posição de uma amostra de previsão, o tamanho de um bloco de codificação, a forma do bloco de codificação e um componente de cor.
[346] Por exemplo, como mostrado no exemplo da Figura 28 (a), as amostras de previsão na posição da mesma coordenada do eixo geométrico x e coordenada do eixo geométrico y podem ser derivadas aplicando o mesmo valor de ponderação à primeira amostra de previsão e à segunda amostra de previsão. Amostras de previsão das quais o valor absoluto da diferença entre a coordenada do eixo geométrico x e a coordenada do eixo geométrico y é 1 podem ser derivadas definindo a razão do valor de ponderação aplicada à primeira amostra de previsão e a segunda amostra de previsão para (3: 1) ou (1: 3). Além disso, as amostras de previsão das quais o valor absoluto da diferença da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é 2 podem ser derivadas definindo a razão do valor de ponderação aplicada à primeira amostra de previsão e à segunda amostra de previsão para (7 : 1) ou (1: 7).
[347] Alternativamente, como mostrado no exemplo da Figura 28 (b), as amostras de previsão na posição da mesma coordenada do eixo geométrico x e coordenada do eixo geométrico y podem ser derivadas aplicando o mesmo valor de ponderação à primeira amostra de previsão e à segunda amostra de previsão e amostras de previsão das quais o valor absoluto da diferença entre a coordenada do eixo geométrico x e a coordenada do eixo geométrico y é 1 pode ser derivada definindo a razão do valor de ponderação aplicada à primeira amostra de previsão e a segunda amostra de previsão para (7: 1) ou (1: 7).
[348] Por exemplo, como mostrado no exemplo da Figura 29 (a), as amostras de previsão das quais a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é menor do que a largura ou a altura de um bloco de codificação por 1 podem ser derivadas aplicando o mesmo valor de ponderação à primeira previsão amostra e a segunda amostra de previsão. Amostras de previsão das quais a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é igual ou menor do que a largura ou a altura do bloco de codificação por 2 podem ser derivadas definindo a razão de valor de ponderação aplicada à primeira amostra de previsão e a segunda amostra de previsão para (3: 1) ou (1: 3). Amostras de previsão das quais a soma das coordenadas do eixo geométrico x e das coordenadas do eixo geométrico y é maior ou menor do que a largura ou a altura do bloco de codificação por 1 ou 3 podem ser derivadas definindo a razão do valor de ponderação aplicada ao primeiro amostra de previsão e a segunda amostra de previsão para (7: 1) ou (1: 7).
[349] Alternativamente, como mostrado no exemplo da Figura 29 (b), as amostras de previsão das quais a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é menor do que a largura ou a altura do bloco de codificação por 1 podem ser derivadas aplicando o mesmo valor de ponderação à primeira previsão amostra e a segunda amostra de previsão. Amostras de previsão das quais a soma da coordenada do eixo geométrico x e da coordenada do eixo geométrico y é igual ou menor do que a largura ou a altura do bloco de codificação por 2 podem ser derivadas definindo a razão de valor de ponderação aplicada à primeira amostra de previsão e a segunda amostra de previsão para (7: 1) ou (1: 7).
[350] Como outro exemplo, o valor de ponderação pode ser determinado considerando a posição de uma amostra de previsão ou a forma de um bloco de codificação. As Equações 7 a 9 mostram um exemplo de derivação de um valor de ponderação quando o tipo de particionamento triangular esquerda é aplicado a um bloco de codificação. A Equação 7 mostra um exemplo de derivação de um valor de ponderação aplicado à primeira amostra de previsão quando o bloco de codificação é uma forma quadrada. [Equação 7] 𝑤1 = (𝑥 − 𝑦 + 4)/8
[351] Na Equação 7, x e y denotam a posição de uma amostra de previsão. Quando um bloco de codificação tem uma forma não quadrada, um valor de ponderação aplicado à primeira amostra de previsão pode ser derivado como mostrado na Equação 8 ou 9. A Equação 8 mostra um caso em que a largura de um bloco de codificação é maior do que a altura, e A Equação 9 mostra um caso em que a largura de um bloco de codificação é menor do que a altura. [Equação 8] 𝑤1 = ((𝑥/𝑤ℎ𝑅𝑎𝑡𝑖𝑜) − 𝑦 + 4)/8 [Equação 9] 𝑤1 = (𝑥 − (𝑦 ∗ 𝑤ℎ𝑅𝑎𝑡𝑖𝑜) + 4)/8
[Equação 10]
[352] Quando o tipo de particionamento triangular direita é aplicado a um bloco de codificação, um valor de ponderação aplicado à primeira amostra de previsão pode ser determinado como mostrado nas Equações 10 a 12. A Equação 10 mostra um exemplo de derivação de um valor de ponderação aplicado ao primeiro amostra de previsão quando o bloco de codificação é uma forma quadrada. [Equação 11] w1 = ((CbH − 1 − (x/whRatio) − y) + 4)/8 [Equação 12] w1 = (CbW − 1 − x(y ∗ whRatio) + 4)/8
[353] Na Equação 11, CbH denota a altura do bloco de codificação.
[354] Como mostrado no exemplo, entre as amostras de previsão na região limite, as amostras de previsão incluídas na primeira unidade de previsão triangular são derivadas atribuindo um valor de ponderação maior do que aquele da segunda amostra de previsão para a primeira amostra de previsão, e previsão as amostras incluídas na segunda unidade de previsão triangular são derivadas atribuindo um valor de ponderação maior do que aquele da primeira amostra de previsão para a segunda amostra de previsão.
[355] Quando o particionamento diagonal é aplicado a um bloco de codificação, pode ser configurado para não aplicar um modo de previsão combinado combinando o modo de intraprevisão e o modo de mesclagem para o bloco de codificação.
[356] A intraprevisão é para prever um bloco atual usando amostras reconstruídas que foram codificadas/decodificadas na vizinhança do bloco atual. Neste ponto, as amostras reconstruídas antes de um filtro in-loop ser aplicado podem ser usadas para intraprevisão do bloco atual.
[357] A técnica de intraprevisão inclui intraprevisão baseada em matriz e intraprevisão geral considerando a direcionalidade em relação às amostras reconstruídas vizinhas. As informações que indicam a técnica de intraprevisão do bloco atual podem ser sinalizadas por meio de um fluxo de bits. As informações podem ser um sinalizador de 1 bit. Alternativamente, a técnica de intraprevisão do bloco atual pode ser determinada com base em pelo menos um dentre aposição do bloco atual, o tamanho do bloco atual, a forma do bloco atual e uma técnica de intraprevisão de um bloco vizinho. Por exemplo, quando o bloco atual existe através de um limite de imagem, ele pode ser configurado para não aplicar a intraprevisão-previsão baseada em matriz ao bloco atual..
[358] A intraprevisão com base em matriz de intraprevisão é um método de aquisição de um bloco de previsão do bloco atual por um codificador e um decodificador com base em um produto de matriz entre uma matriz anteriormente armazenada e amostras reconstruídas na vizinhança do bloco atual. As informações para especificar qualquer uma entre uma pluralidade de matrizes armazenadas anteriormente podem ser sinalizadas por meio de um fluxo de bits. O decodificador pode determinar uma matriz para intraprevisão do bloco atual com base nas informações e no tamanho do bloco atual.
[359] A intraprevisão geral é um método de aquisição de um bloco de previsão para o bloco atual com base em um modo de intraprevisão não angular ou um modo de intraprevisão angular.
[360] Uma imagem residual derivada pode ser derivada subtraindo um vídeo de previsão de um vídeo original. Nesse ponto, quando o vídeo residual é alterado para o domínio da frequência, a qualidade subjetiva do vídeo não é significativamente reduzida, embora os componentes de alta frequência entre os componentes de frequência sejam removidos. Consequentemente, quando os valores dos componentes de alta frequência são convertidos para pequenos ou os valores dos componentes de alta frequência são definidos como 0, há um efeito de aumento da eficiência de compressão sem gerar distorção visual significativa. Ao refletir esta característica, o bloco atual pode ser transformado para decompor um vídeo residual em componentes de frequência bidimensionais. A transformada pode ser realizada usando uma técnica de transformada, como Transformada de Cosseno Discreta (DCT) ou Transformada Seno Discreta (DST).
[361] A transformada de vídeo bidimensional pode não ser realizada para alguns blocos do vídeo residual. Não realizar a transformada de vídeo bidimensional pode ser denominado como um salto de transformada. Quando o salto de transformada é aplicado, a quantização pode ser aplicada aos coeficientes residuais que não foram transformados.
[362] Depois que o bloco atual é transformado usando DCT ou DST, o bloco atual transformado pode ser transformado novamente. Neste ponto, a transformada baseada em DCT ou DST pode ser definida como uma primeira transformada, e a transformação novamente de um bloco ao qual a primeira transformada é aplicada pode ser definida como uma segunda transformada.
[363] A primeira transformada pode ser realizada usando qualquer um dentre uma pluralidade de candidatos a núcleo de transformada. Por exemplo, a primeira transformada pode ser realizada usando qualquer um dentre DCT2, DCT8 ou DCT7.
[364] Diferentes núcleos de transformada podem ser usados para a direção horizontal e a direção vertical. As informações que indicam a combinação de um núcleo de transformada da direção horizontal e um núcleo de transformada da direção vertical podem ser sinalizadas através de um fluxo de bits.
[365] As unidades para realizar a primeira transformada e a segunda transformada podem ser diferentes. Por exemplo, a primeira transformada pode ser realizada em um bloco de 8 x 8 e a segunda transformada pode ser realizada em um sub-bloco de tamanho 4 x 4 entre o bloco 8 x 8 transformado. Neste ponto, os coeficientes de transformada das regiões residuais que não foram realizadas na segunda transformada podem ser definidos como 0.
[366] Alternativamente, a primeira transformada pode ser realizada em um bloco 4 x 4, e a segunda transformada pode ser realizada em uma região de tamanho 8 x 8 incluindo o bloco 4 x 4 transformado.
[367] As informações que indicam se ou não a segunda transformada foi realizada podem ser sinalizadas por meio de um fluxo de bits.
[368] Alternativamente, se deve ou não realizar a segunda transformada pode ser determinado com base em se o núcleo de transformada de direção horizontal e o núcleo de transformada de direção vertical são os mesmos. Por exemplo, a segunda transformada pode ser realizada apenas quando o núcleo de transformada de direção horizontal e o núcleo de transformada de direção vertical são iguais. Alternativamente, a segunda transformada pode ser realizada apenas quando o núcleo de transformada de direção horizontal e o núcleo de transformada de direção vertical são diferentes um do outro.
[369] Alternativamente, a segunda transformada pode ser permitida apenas quando a transformada da direção horizontal e a transformada da direção vertical usam um núcleo de transformada predefinido. Por exemplo, quando um núcleo de transformada DCT2 é usado para transformada da direção horizontal e transformada da direção vertical, a segunda transformada pode ser permitida.
[370] Alternativamente, se deve ou não realizar a segunda transformada pode ser determinado com base no número de coeficientes de transformada diferente de zero do bloco atual. Por exemplo, pode ser configurado para não usar a segunda transformada quando o número de coeficientes de transformada diferente de zero do bloco atual é menor ou igual a um valor limítrofe e pode ser configurado para usar a segunda transformada quando o número de coeficiente de transformada diferente de zero do bloco atual é maior do que o valor limítrofe. Ele pode ser configurado para usar a segunda transformada apenas quando o bloco atual é codificado por intraprevisão.
[371] O decodificador pode realizar transformada inversa da segunda transformada (segunda transformada inversa) e pode realizar uma transformada inversa da primeira transformada (primeira transformada inversa) no resultado da segunda transformada inversa. Como resultado da realização da segunda transformada inversa e da primeira transformada inversa, os sinais residuais para o bloco atual podem ser adquiridos.
[372] Quando o codificador realiza transformada e quantização, o decodificador pode adquirir um bloco residual por meio de quantização inversa e transformada inversa. O decodificador pode adquirir um bloco reconstruído para o bloco atual adicionando um bloco de previsão e o bloco residual.
[373] Quando um bloco reconstruído do bloco atual é adquirido, a perda de informações que ocorre no processo de quantização e codificação pode ser reduzida por meio de filtragem em loop. Um filtro in-loop pode incluir pelo menos um dentre um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) e um filtro de loop adaptável (ALF).
[374] A aplicação das modalidades descritas acima com foco em um processo de decodificação ou um processo de codificação para um processo de codificação ou um processo de decodificação está incluída no escopo da presente divulgação. A alteração das modalidades descritas em uma ordem predeterminada em uma ordem diferente da ordem descrita também está incluída no escopo da presente divulgação.
[375] Embora as modalidades acima tenham sido descritas com base em uma série de etapas ou fluxogramas, isso não limita a ordem da série temporal da presente divulgação e pode ser realizada simultaneamente ou em uma ordem diferente, conforme necessário. Além disso, cada um dos componentes (por exemplo, unidades, módulos, etc.) que constituem o diagrama de blocos nas modalidades descritas acima podem ser implementados como um dispositivo de hardware ou software, ou uma pluralidade de componentes podem ser combinados para serem implementados como um único dispositivo de hardware ou software. As modalidades descritas acima podem ser implementadas na forma de comandos de programa que podem ser executados por meio de vários componentes de computador e gravados em uma mídia de gravação legível por computador. O meio de gravação legível por computador pode incluir comandos de programa, arquivos de dados, estruturas de dados e semelhantes, independentemente ou em combinação. O meio de gravação legível por computador inclui, por exemplo, mídia magnética, como um disco rígido, um disquete e uma fita magnética, mídia de gravação óptica, como um CD-ROM e um DVD, mídia magneto-óptica, como um disco flexível, e dispositivos de hardware especialmente configurados para armazenar e executar comandos de programa, como ROM, RAM, memória flash e semelhantes. Os dispositivos de hardware descritos acima podem ser configurados para operar usando um ou mais módulos de software para realizar o processo da presente divulgação e vice-versa.
[376] A presente divulgação pode ser aplicada a um dispositivo eletrônico que codifica e decodifica um vídeo.

Claims (16)

REIVINDICAÇÕES
1. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender as etapas de: aplicar particionamento ao bloco de codificação para obter uma primeira unidade de previsão uma segunda unidade de previsão, em que se deve ou não aplicar particionamento ao bloco de codificação é determinado com base em um tamanho do bloco de codificação; derivar lista de candidato a mesclagem para o bloco de codificação; derivar as primeiras informações de movimento para a primeira unidade de previsão e as segundas informações de movimento para a segunda unidade de previsão usando a lista de candidato a mesclagem; e obter amostra de previsão no bloco de codificação com base nas primeiras informações de movimento e nas segundas informações de movimento, em que a primeira informação de movimento para a primeira unidade de previsão é derivada de um primeiro candidato a mesclagem na lista de candidato a mesclagem da região de previsão e, a segunda informação de movimento para segunda unidade de previsão é derivada a partir de um segundo candidato a mesclagem diferente do primeiro candidato a mesclagem.
2. MÉTODO, de acordo com a reivindicação 1, caracterizado por, quando pelo menos um dentre uma largura e uma altura do bloco de codificação é maior do que valor limítrofe, particionar o bloco de codificação não ser permitido.
3. MÉTODO, de acordo com a reivindicação 1, caracterizado por ainda compreender a etapa de decodificar as informações do primeiro índice para especificar o primeiro candidato a mesclagem e as informações do segundo índice para especificar o segundo candidato a mesclagem de um fluxo de bits, em que quando um valor da segunda informação de índice é igual ou maior que um valor da primeira informação de índice, o valor da segunda informação de índice especificando o segundo candidato a mesclagem é obtido adicionando 1 ao valor da primeira informação de índice de especificar o primeiro candidato a mesclagem.
4. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo número máximo de candidatos a mesclagem que a lista de candidatos a mesclagem inclui ser determinado com base em se a primeira unidade de previsão e a segunda unidade de previsão são obtidas aplicando particionamento ao bloco de codificação.
5. MÉTODO, de acordo com a reivindicação 1, caracterizado pela primeira unidade de previsão ser uma primeira unidade de previsão triangular e a segunda unidade de previsão ser uma segunda unidade de previsão triangular.
6. MÉTODO, de acordo com a reivindicação 5, caracterizado por compreender ainda a etapa de decodificar a primeira informação de índice para determinar um candidato a mesclagem da primeira unidade de previsão triangular e a segunda informação de índice para determinar um candidato a mesclagem da segunda unidade de previsão triangular a partir de um fluxo de bits, em que, quando um valor da segunda informação de índice é igual ou maior que um valor da primeira informação de índice, o valor da segunda informação de índice é obtido adicionando 1 ao valor da primeira informação de índice.
7. MÉTODO, de acordo com a reivindicação 6, caracterizado pela derivação das primeiras informações de movimento para a primeira unidade de previsão e das segundas informações de movimento para a segunda unidade de previsão usando a lista de candidatos de mesclagem compreender: derivar as primeiras informações de movimento para a primeira unidade de previsão triangular do candidato a mesclagem determinado com base nas primeiras informações de índice, e derivar as segundas informações de movimento para a segunda unidade de previsão triangular do candidato a mesclagem determinado com base nas segundas informações de índice.
8. MÉTODO DE CODIFICAÇÃO DE VÍDEO, caracterizado por compreender as etapas de: aplicar particionamento ao bloco de codificação para obter uma primeira unidade de previsão e uma segunda unidade de previsão em que se deve ou não aplicar particionamento ao bloco de codificação é determinado com base em um tamanho do bloco de codificação; derivar uma lista de candidato a mesclagem para o bloco de codificação; derivar as primeiras informações de movimento para a primeira unidade de previsão e as segundas informações de movimento para a segunda unidade de previsão usando a lista de candidato a mesclagem; e obter uma amostra de previsão no bloco de codificação com base na primeira informação de movimento e na segunda informação de movimento, em que as primeiras informações de movimento para a primeira unidade de previsão são derivadas de um primeiro candidato a mesclagem na lista de candidato a mesclagem e as informações de segundo movimento para a segunda unidade de previsão são derivadas de uma segunda lista de candidato a mesclagem.
9. MÉTODO, de acordo com a reivindicação 8, caracterizado por, quando pelo menos um dentre uma largura e uma altura do bloco de codificação é maior que um valor limítrofe, particionar o bloco de codificação não ser permitido.
10. MÉTODO, de acordo com a reivindicação 1, caracterizado por ainda compreender a etapa de codificar as informações do primeiro índice para especificar o primeiro candidato a mesclagem e as informações do segundo índice para especificar o segundo candidato a mesclagem de um fluxo de bits, em que quando um índice do segundo candidato a mesclagem é maior do que um índice do primeiro candidato a mesclagem, a segunda informação de índice é codificada usando um valor obtido subtraindo 1 do índice do segundo candidato a mesclagem.
11. MÉTODO, de acordo com a reivindicação 8, caracterizado pelo número máximo de candidatos a mesclagem que a lista de candidatos a mesclagem inclui ser determinado com base em se o bloco de codificação é particionado na primeira unidade de previsão e na segunda unidade de previsão.
12. MÉTODO, de acordo com a reivindicação 8, caracterizado pela primeira unidade de previsão ser uma primeira unidade de previsão triangular, a segunda unidade de previsão ser uma segunda unidade de previsão triangular.
13. MÉTODO, de acordo com a reivindicação 12, caracterizado por compreender ainda a etapa de codificação da primeira informação de índice para determinar um candidato a mesclagem da primeira unidade de previsão triangular e a segunda informação de índice para determinar um candidato a mesclagem da segunda unidade de previsão triangular, em que quando um índice do candidato a mesclagem da segunda unidade de previsão triangular é igual ou maior do que um índice do candidato a mesclagem da primeira unidade de previsão triangular, a segunda informação de índice é codificada usando um valor obtido subtraindo 1 do índice do candidato de fusão da segunda unidade de previsão triangular.
14. MÉTODO, de acordo com a reivindicação 13, caracterizado pela derivação das primeiras informações de movimento para a primeira unidade de previsão e das segundas informações de movimento para a segunda unidade de previsão usando a lista de candidatos de mesclagem compreender: derivar as primeiras informações de movimento para a primeira unidade de previsão triangular de um candidato a mesclagem determinado com base nas primeiras informações de índice, e derivar as segundas informações de movimento para a segunda unidade de previsão triangular de um candidato a mesclagem determinado com base nas segundas informações de índice.
15. APARELHO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender uma parte de interprevisão configurada para realizar o método, conforme definido em qualquer uma das reivindicações 1 a 7.
16. APARELHO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender uma parte de interprevisão configurada para realizar o método, conforme definido em qualquer uma das reivindicações 8 a 14.
BR112021008654-4A 2018-11-08 2019-11-08 método de decodificação vídeo, método de codificação de vídeo, e aparelho de decodificação de vídeo BR112021008654A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
KR20180136306 2018-11-08
KR10-2018-0136306 2018-11-08
KR10-2018-0136249 2018-11-08
KR20180136249 2018-11-08
PCT/KR2019/015200 WO2020096428A1 (ko) 2018-11-08 2019-11-08 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
BR112021008654A2 true BR112021008654A2 (pt) 2021-08-10

Family

ID=70610737

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021008654-4A BR112021008654A2 (pt) 2018-11-08 2019-11-08 método de decodificação vídeo, método de codificação de vídeo, e aparelho de decodificação de vídeo

Country Status (16)

Country Link
US (3) US11405613B2 (pt)
EP (2) EP4287619A3 (pt)
JP (2) JP7416781B2 (pt)
KR (1) KR20200054113A (pt)
CN (2) CN113347429B (pt)
AU (1) AU2019375731A1 (pt)
BR (1) BR112021008654A2 (pt)
CA (2) CA3118883C (pt)
ES (1) ES2972076T3 (pt)
IL (1) IL282874A (pt)
MX (1) MX2021005267A (pt)
PH (1) PH12021551031A1 (pt)
PL (1) PL3869800T3 (pt)
SG (1) SG11202104643QA (pt)
WO (1) WO2020096428A1 (pt)
ZA (1) ZA202103365B (pt)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200016188A (ko) * 2018-08-06 2020-02-14 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020103933A1 (en) * 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Configuration method for default motion candidate
EP3884670B9 (en) * 2018-11-22 2023-07-19 Huawei Technologies Co., Ltd. Method, apparatus and computer program product for inter prediction
US11856194B2 (en) * 2018-12-21 2023-12-26 Hfi Innovation Inc. Method and apparatus of simplified triangle merge mode candidate list derivation
CN113261290B (zh) 2018-12-28 2024-03-12 北京字节跳动网络技术有限公司 基于修改历史的运动预测
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
CN114731409A (zh) * 2019-09-20 2022-07-08 韩国电子通信研究院 图像编码/解码方法和装置、以及存储比特流的记录介质
EP4055826A4 (en) * 2019-12-30 2023-11-22 FG Innovation Company Limited DEVICE AND METHOD FOR ENCODING VIDEO DATA
US11212523B2 (en) * 2020-01-12 2021-12-28 Mediatek Inc. Video processing methods and apparatuses of merge number signaling in video coding systems
US11706439B2 (en) * 2020-03-26 2023-07-18 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012140821A1 (ja) 2011-04-12 2012-10-18 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号化方法、動画像復号化装置、および動画像符号化復号化装置
HRP20231384T1 (hr) * 2011-09-09 2024-02-16 Lg Electronics Inc. Postupak dekodiranja slike, postupak kodiranja slike, postupak za prijenos podataka za informacije o slici i računalno-čitljivi medij za pohranu koji pohranjuje bitstream uključujući kodiranje informacija o slici
US20130114717A1 (en) 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
US9426463B2 (en) * 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
EP3833022B1 (en) 2012-04-12 2022-03-30 JVCKENWOOD Corporation Merge candidate list construction
US11330284B2 (en) * 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
CN108028933A (zh) * 2015-09-10 2018-05-11 三星电子株式会社 视频编码和解码方法及装置
EP3364653A4 (en) * 2015-10-16 2019-07-10 LG Electronics Inc. FILTRATION METHOD AND DEVICE FOR IMPROVING THE PREDICTION IN A BILDCODING SYSTEM
KR20170058838A (ko) * 2015-11-19 2017-05-29 한국전자통신연구원 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
ES2699748B2 (es) * 2016-07-05 2021-05-13 Kt Corp Metodo y aparato para procesar senal de video
US10406803B2 (en) 2016-12-08 2019-09-10 Xerox Corporation Method for providing color and material property options in a three-dimensional object printer
US10715827B2 (en) * 2017-01-06 2020-07-14 Mediatek Inc. Multi-hypotheses merge mode
CN116170585A (zh) 2017-01-16 2023-05-26 世宗大学校产学协力团 影像编码/解码方法
KR20180084659A (ko) * 2017-01-16 2018-07-25 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
KR20200097811A (ko) * 2018-02-22 2020-08-19 엘지전자 주식회사 영상 코딩 시스템에서 블록 분할 구조에 따른 영상 디코딩 방법 및 장치
KR20190139786A (ko) 2018-06-08 2019-12-18 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN112740694A (zh) * 2018-09-21 2021-04-30 韩国电子通信研究院 用于对图像进行编码/解码的方法和设备以及用于存储比特流的记录介质
WO2020094052A1 (en) * 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Side information signaling for inter prediction with geometric partitioning
WO2020094073A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Ordered motion candidate list generation using geometric partitioning mode

Also Published As

Publication number Publication date
PH12021551031A1 (en) 2021-12-06
CN113347429A (zh) 2021-09-03
SG11202104643QA (en) 2021-06-29
CA3118883C (en) 2024-05-28
AU2019375731A1 (en) 2021-06-10
EP4287619A2 (en) 2023-12-06
ES2972076T3 (es) 2024-06-11
EP3869800A4 (en) 2021-12-08
EP3869800B1 (en) 2023-12-27
US11825085B2 (en) 2023-11-21
IL282874A (en) 2021-06-30
WO2020096428A1 (ko) 2020-05-14
US20210266539A1 (en) 2021-08-26
CA3118883A1 (en) 2020-05-14
EP4287619A3 (en) 2024-01-31
KR20200054113A (ko) 2020-05-19
CA3235103A1 (en) 2020-05-14
CN113347429B (zh) 2023-06-23
US11889077B2 (en) 2024-01-30
JP7416781B2 (ja) 2024-01-17
US20220303531A1 (en) 2022-09-22
US11405613B2 (en) 2022-08-02
EP3869800A1 (en) 2021-08-25
JP2023179758A (ja) 2023-12-19
PL3869800T3 (pl) 2024-05-13
CN112823514A (zh) 2021-05-18
MX2021005267A (es) 2021-06-18
ZA202103365B (en) 2022-07-27
JP2022506269A (ja) 2022-01-17
US20220303532A1 (en) 2022-09-22

Similar Documents

Publication Publication Date Title
JP7500691B2 (ja) ビデオ信号の符号化/復号化方法及び前記方法のための装置
BR112021008654A2 (pt) método de decodificação vídeo, método de codificação de vídeo, e aparelho de decodificação de vídeo
KR20200104253A (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
BR112021008091A2 (pt) método de codificação e decodificação de sinal de vídeo e aparelho de decodificação de vídeo
KR20190038405A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
BR112021008298A2 (pt) 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
BR112021008625A2 (pt) método de decodificação e codificação de vídeo e aparelho de decodificação e codificação de vídeo
BR112021008720A2 (pt) método de codificação de vídeo e método de decodificação vídeo
ES2955040T3 (es) Método de codificación/descodificación de señales de imagen y dispositivo para el mismo
BR112021005175A2 (pt) método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e aparelho de codificação de vídeo
KR20200108799A (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
RU2806152C2 (ru) Способ и устройство для кодирования/декодирования сигнала изображения
RU2819080C2 (ru) Способ и устройство кодирования/декодирования сигналов изображений
RU2809582C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2819393C2 (ru) Способ и устройство кодирования/декодирования сигналов изображений
RU2802731C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2810054C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов
RU2819286C2 (ru) Способ и устройство кодирования/декодирования сигналов изображений
RU2809324C2 (ru) Способ и устройство для кодирования и декодирования видеосигналов