BR112021008298A2 - 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 - Google Patents

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 Download PDF

Info

Publication number
BR112021008298A2
BR112021008298A2 BR112021008298-0A BR112021008298A BR112021008298A2 BR 112021008298 A2 BR112021008298 A2 BR 112021008298A2 BR 112021008298 A BR112021008298 A BR 112021008298A BR 112021008298 A2 BR112021008298 A2 BR 112021008298A2
Authority
BR
Brazil
Prior art keywords
block
prediction
merge candidate
information
affine
Prior art date
Application number
BR112021008298-0A
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 BR112021008298A2 publication Critical patent/BR112021008298A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/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/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/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/182Methods 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 pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

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. Trata-se de um método para decodificar uma imagem, de acordo com a presente invenção, que compreende as etapas de: determinar se um bloco de conversão em código é dividido em uma primeira unidade de predição e uma segunda unidade de predição; determinar um tipo de partição do bloco de conversão em código ao determinar que o bloco de conversão em código é dividido; derivar as primeiras informações de movimento sobre uma primeira unidade de predição e as segundas informações de movimento sobre uma segunda unidade de predição dentro do bloco de conversão em código e adquirir uma amostra de predição dentro do bloco de conversão em código com base nas primeiras informações de movimento e nas segundas informações de movimento.

Description

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 CAMPO DA TÉCNICA
[001] A presente invenção refere-se a um método para codificar ou decodificar sinais de vídeo e um aparelho para o mesmo.
ANTECEDENTES
[002] Com a tendência de os painéis de exibição se tornarem cada vez maiores, os serviços de vídeo de alta definição estão sendo demandados. O maior problema dos serviços de vídeo de alta definição é que a quantidade de dados aumenta significativamente e, a fim de solucionar esse problema, pesquisas têm sido realizadas ativamente para melhorar a taxa de compressão de vídeo. Como um exemplo representativo, a Equipe Conjunta de Colaboração em Conversão em Código de Vídeo (JCT-VC) foi estabelecida no Grupo de Especialistas em Conversão em Código de Vídeo (VCEG) sob a União Internacional de Telecomunicações-Telecomunicação (ITU-T) e o Grupo de Especialistas em Imagens em Movimento (MPEG) 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 cujo desempenho de compressão é cerca de duas vezes maior do que aquele do H.264/AVC, e foi aprovado como padrão em 25 de janeiro de 2013. Com o rápido desenvolvimento dos serviços de vídeo de alta definição, o desempenho do HEVC está gradualmente revelando suas limitações.
SUMÁRIO PROBLEMA DA TÉCNICA
[003] A presente invenção é direcionada a fornecer um método para dividir um bloco de conversão em código em uma pluralidade de blocos de predição ao codificar ou decodificar sinais de vídeo e um aparelho para realizar o mesmo.
[004] A presente invenção é direcionada a fornecer um método para derivar informações de movimento para cada um de uma pluralidade de blocos de predição ao codificar ou decodificar sinais de vídeo e um aparelho para realizar o mesmo.
[005] A presente invenção é direcionada a fornecer um método para derivar um candidato a mesclagem com o uso de uma tabela de informações de movimento inter-regiões ao codificar ou decodificar sinais de vídeo e um aparelho para realizar o método.
[006] Os problemas técnicos destinados a serem solucionados pela invenção não são limitados aos problemas acima mencionados, e outros problemas técnicos que não são descritos no presente documento devem ser claramente compreendidos por aqueles versados na técnica a partir da descrição que se segue.
SOLUÇÃO TÉCNICA
[007] Um método para decodificar ou codificar um sinal de vídeo de acordo com a presente invenção inclui determinar se deve-se separar um bloco de conversão em código em uma primeira unidade de predição e uma segunda unidade de predição, determinar um tipo de partição do bloco de conversão em código quando for determinado que deve-se separar o bloco de conversão em código, derivar as primeiras informações de movimento em relação à primeira unidade de predição no bloco de conversão em código e as segundas informações de movimento em relação à segunda unidade de predição no bloco de conversão em código e adquirir uma amostra de predição no bloco de conversão em código com base nas primeiras informações de movimento e nas segundas informações de movimento. Nesse caso, as primeiras informações de movimento em relação à primeira unidade de predição podem ser derivadas de um primeiro candidato a mesclagem especificado pelas primeiras informações de índice entre uma pluralidade de candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem e as segundas informações de movimento em relação à segunda unidade de predição podem ser derivadas de um segundo candidato a mesclagem especificado pelas segundas informações de índice entre a pluralidade de candidatos a mesclagem incluídos na lista de candidatos a mesclagem.
[008] Quando um valor das segundas informações de índice é maior ou igual a um valor das primeiras informações de índice, o segundo candidato a mesclagem pode ter um índice igual ao valor das segundas informações de índice mais um.
[009] Quando um valor das segundas informações de índice é menor do que um valor das primeiras informações de índice, o segundo candidato a mesclagem pode ter um índice igual ao valor das segundas informações de índice.
[0010] Quando a amostra de predição é incluída em uma região limite entre a primeira unidade de predição e a segunda unidade de predição, a amostra de predição pode ser derivada com base em uma operação de soma ponderada de uma primeira amostra de predição derivada com base nas primeiras informações de movimento e uma segunda amostra de predição derivada com base nas segundas informações de movimento.
[0011] Um primeiro peso aplicado à primeira amostra de predição pode ser determinado com base em uma coordenada x e uma coordenada y da amostra de predição.
[0012] Um segundo peso aplicado à segunda amostra de predição pode ser derivado subtraindo-se o primeiro peso de um valor constante.
[0013] Um tamanho da região limite pode ser determinado com base em pelo menos um dentre um tamanho do bloco de conversão em código ou um formato do bloco de conversão em código.
[0014] As características resumidas brevemente acima em relação à presente invenção são aspectos meramente exemplificativos da descrição detalhada da presente invenção descrita abaixo e não limitam o escopo da presente invenção.
EFEITOS VANTAJOSOS
[0015] De acordo com a presente invenção, ao dividir um bloco de conversão em código em uma pluralidade de blocos de predição e derivar informações de movimento para cada um dos blocos de predição, é possível melhorar a eficiência de interpredição.
[0016] De acordo com a presente invenção, ao fornecer um método para derivar um candidato a mesclagem com o uso de uma tabela de informações de movimento inter-regiões, é possível melhorar a eficiência de interpredição.
[0017] Os efeitos vantajosos da invenção não são limitados aos efeitos acima mencionados, e outros efeitos vantajosos que não são descritos no presente documento devem ser claramente compreendidos por aqueles versados na técnica a partir da descrição que se segue.
BREVE DESCRIÇÃO DAS FIGURAS
[0018] A Figura 1 é um diagrama de blocos de um codificador de acordo com uma modalidade da presente invenção.
[0019] A Figura 2 é um diagrama de blocos de um decodificador de acordo com uma modalidade da presente invenção.
[0020] A Figura 3 é um diagrama que mostra uma unidade de árvore de conversão em código básica de acordo com uma modalidade da presente invenção.
[0021] A Figura 4 é um diagrama que mostra vários tipos de partição de um bloco de conversão em código.
[0022] A Figura 5 é um diagrama que ilustra um aspecto de partição de uma unidade de árvore de conversão em código.
[0023] A Figura 6 é um fluxograma de um método de interpredição de acordo com uma modalidade da presente invenção.
[0024] A Figura 7 é um diagrama que ilustra um movimento não linear de um objeto.
[0025] A Figura 8 é um fluxograma de um método de interpredição com base em um movimento afim de acordo com uma modalidade da presente invenção.
[0026] A Figura 9 é um diagrama que ilustra um vetor-semente afim para cada modelo de movimento afim.
[0027] A Figura 10 é um diagrama que ilustra vetores afins de sub-blocos sob um modelo de movimento de 4 parâmetros.
[0028] A Figura 11 é um diagrama que mostra blocos vizinhos que podem ser usados para derivar um candidato a mesclagem.
[0029] A Figura 12 é um diagrama que mostra um exemplo de derivação de um vetor-semente afim do bloco atual com base em um vetor-semente afim de um bloco vizinho afim.
[0030] A Figura 13 é um diagrama que mostra um exemplo de configuração de um vetor de movimento de um sub- bloco como um vetor-semente afim de um bloco vizinho afim.
[0031] As Figuras 14 a 16 são diagramas que mostram a localização de uma amostra de referência.
[0032] A Figura 17 é um diagrama que mostra um exemplo no qual um método de derivação de vetor de mesclagem afim modificado é aplicado.
[0033] A Figura 18 é um diagrama que mostra um exemplo de derivação de um vetor-semente afim de um candidato a mesclagem afim com base em vetores de movimento de sub-blocos que pertencem a um bloco vizinho.
[0034] A Figura 19 é um diagrama que mostra um exemplo de derivação de vetores-semente afins de um candidato a mesclagem afim com base em vetores de movimento de sub-blocos localizados à esquerda do bloco atual.
[0035] A Figura 20 é um diagrama que mostra um exemplo de derivação de vetores-semente afins de um candidato a mesclagem afim com base nas informações de movimento de um bloco vizinho ou um bloco não vizinho localizado à esquerda do bloco atual.
[0036] A Figura 21 é um diagrama que mostra a localização de um bloco para derivar um vetor-semente afim de um candidato a mesclagem afim.
[0037] A Figura 22 é um diagrama para descrever um exemplo de combinação de vetores de movimento de uma pluralidade de blocos vizinhos para derivar um candidato a mesclagem combinado.
[0038] A Figura 23 é um diagrama que mostra um bloco vizinho indisponível.
[0039] A Figura 24 é um fluxograma de um processo para derivar informações de movimento do bloco atual em um modo de mesclagem.
[0040] A Figura 25 é um diagrama para descrever um aspecto de atualização de uma tabela de informações de movimento inter-regiões.
[0041] A Figura 26 é um diagrama que mostra um aspecto de atualização de uma tabela de candidatos a mesclagem inter-regiões.
[0042] A Figura 27 é um diagrama que mostra um exemplo no qual um índice de um candidato a mesclagem inter- regiões pré-armazenado é atualizado.
[0043] A Figura 28 é um diagrama que mostra a localização de um sub-bloco representativo.
[0044] A Figura 29 mostra um exemplo no qual uma tabela de informações de movimento inter-regiões é gerada para cada modo de interpredição.
[0045] A Figura 30 é um diagrama que mostra um exemplo no qual um candidato a mesclagem inter-regiões incluído em uma tabela de informações de movimento de longo prazo é adicionado a uma lista de candidatos a mesclagem.
[0046] A Figura 31 é um diagrama que mostra um exemplo no qual uma verificação de redundância é executada em apenas alguns candidatos a mesclagem.
[0047] A Figura 32 é um diagrama que mostra um exemplo no qual uma verificação de redundância em um candidato a mesclagem específico é omitida.
[0048] A Figura 33 é um diagrama que mostra um exemplo de divisão de um bloco de conversão em código em uma pluralidade de blocos de predição com o uso de uma linha diagonal.
[0049] A Figura 34 é um diagrama que mostra um exemplo de divisão de um bloco de conversão em código em duas unidades de predição.
[0050] A Figura 35 mostra exemplos nos quais um bloco de conversão em código é separado em uma pluralidade de blocos de predição de tamanhos diferentes.
[0051] A Figura 36 é um diagrama que mostra blocos vizinhos usados para derivar um candidato a mesclagem triangular.
[0052] A Figura 37 é um diagrama para descrever um exemplo de determinação da disponibilidade de um bloco vizinho para cada unidade de predição triangular.
[0053] As Figuras 38 e 39 são diagramas que mostram um exemplo de derivação de uma amostra de predição com base em uma operação de soma ponderada de uma primeira amostra de predição e uma segunda amostra de predição.
[0054] A Figura 40 é um fluxograma de um método de intrapredição de acordo com uma modalidade da presente invenção.
[0055] A Figura 41 é um diagrama que mostra modos de intrapredição.
[0056] As Figuras 42 e 43 são diagramas que mostram um exemplo de uma matriz unidimensional na qual as amostras de referência são dispostas em uma linha.
[0057] A Figura 44 é um diagrama que ilustra ângulos formados entre uma linha reta paralela ao eixo x e modos de intrapredição direcional.
[0058] A Figura 45 é um diagrama que mostra um aspecto no qual uma amostra de predição é adquirida quando o bloco atual não é quadrado.
[0059] A Figura 46 é um diagrama que mostra modos de intrapredição de ângulo amplo.
[0060] A Figura 47 é um fluxograma que mostra um processo para determinar a força de blocagem.
[0061] A Figura 48 mostra candidatos a filtros predefinidos.
DESCRIÇÃO DETALHADA
[0062] Doravante no presente documento, as modalidades da presente invenção serão descritas em detalhes com referência aos desenhos anexos.
[0063] Uma imagem é codificada e decodificada em unidades de blocos. Como exemplo, o processamento de codificação e decodificação, tal como transformação, quantização, predição, filtragem em circuito ou reconstrução pode ser realizado em um bloco de conversão em código, um bloco de transformação ou um bloco de predição.
[0064] Doravante no presente documento, um bloco a ser codificado ou decodificado será denominado como "o bloco atual". Como exemplo, o bloco atual pode indicar um bloco de conversão em código, um bloco de transformação ou um bloco de predição, dependendo da etapa atual para o processamento de codificação ou decodificação.
[0065] Além disso, o termo "unidade" usado no presente documento pode ser entendido como indicando uma unidade básica para realizar um processo de codificação e decodificação específico, e o termo "bloco" pode ser entendido como indicando uma matriz de amostra de um tamanho predeterminado. A menos que especificado de outra forma, os termos "bloco" e "unidade" podem ser usados indistintamente. Como exemplo, nas modalidades que se seguem, um bloco de conversão em código e uma unidade de conversão em código podem ser entendidos como tendo significados equivalentes.
[0066] A Figura 1 é um diagrama de blocos de um codificador de acordo com uma modalidade da presente invenção.
[0067] Com referência à Figura 1, um aparelho de codificação de vídeo 100 pode incluir um separador de imagem 110, preditores 120 e 125, um transformador 130, um quantizador 135, um reordenador 160, um codificador de entropia 165, um quantizador inverso 140, um transformador inverso 145, um filtro 150 e uma memória 155.
[0068] Os elementos da Figura 1 são mostrados de forma independente de modo a representar funções características diferentes no aparelho de codificação de vídeo, e cada um dos elementos não se destina a ser configurado em uma unidade de hardware separada ou como uma unidade de software. Em outras palavras, os elementos são dispostos de forma independente por conveniência de descrição. A fim de executar funções, pelo menos dois elementos podem ser combinados em um elemento, ou um elemento pode ser dividido em uma pluralidade de elementos. Nesse caso, uma modalidade para a combinação dos elementos e uma modalidade para a divisão do elemento são incluídas no âmbito da presente invenção sem se afastar da essência da presente invenção.
[0069] Além disso, alguns dos elementos podem não ser elementos essenciais para realizar funções essenciais na presente invenção e podem ser apenas elementos opcionais para melhorar o desempenho. A presente invenção pode ser implantada incluindo apenas os elementos necessários para implantar a essência da presente invenção, em vez de elementos usados apenas para melhorar o desempenho. Mesmo uma estrutura que inclui apenas elementos essenciais em vez de elementos opcionais usados apenas para melhorar o desempenho está incluída no escopo da presente invenção.
[0070] O separador de imagem 110 pode separar uma imagem de entrada em pelo menos uma unidade de processamento. Nesse caso, a unidade de processamento pode ser uma unidade de predição (PU), uma unidade de transformação (TU) ou uma unidade de conversão em código (CU). O separador de imagem 110 pode separar uma imagem em uma pluralidade de combinações de unidades de codificação, unidades de predição e unidades de transformação e pode selecionar uma combinação de unidades de codificação, unidades de predição e unidades de transformação de acordo com um critério predeterminado (por exemplo, uma função de custo) para converter e, código a imagem.
[0071] Por exemplo, uma imagem pode ser separada em uma pluralidade de unidades de codificação. Uma estrutura de árvore recursiva, como uma estrutura de árvore quadrática, pode ser usada para separar uma imagem em unidades de codificação. Uma unidade de conversão em código separada em outras unidades de codificação com o uso de uma imagem ou a maior unidade de conversão em código como uma raiz pode ter um número de nós filhos que corresponde ao número de unidades de codificação separadas. Uma unidade de conversão em código que não é mais separada devido a uma limitação predeterminada serve como um nó folha. Ou seja, quando se assume que apenas a divisão quadrada é possível para uma unidade de conversão em código, uma unidade de conversão em código pode ser separada em até quatro outras unidades de codificação.
[0072] Nas modalidades que se seguem da presente invenção, uma unidade de conversão em código pode se referir a uma unidade configurada para realizar a codificação ou uma unidade configurada para realizar a decodificação.
[0073] Uma unidade de conversão em código pode ser separada em pelo menos uma ou mais unidades de predição do mesmo tamanho em um formato quadrado ou retangular e pode ser separada em unidades de predição de modo que uma das unidades de predição seja diferente de outra unidade de predição em formato e/ou tamanho.
[0074] Quando uma unidade de predição submetida a intrapredição com base em uma unidade de conversão em código é gerada e a unidade de conversão em código não é uma unidade de conversão em código mínima, a intrapredição pode ser realizada sem dividir a unidade de conversão em código em uma pluralidade de unidades de predição N × N.
[0075] Os preditores 120 e 125 podem incluir um interpreditor 120 configurado para realizar a interpredição e um intrapreditor 125 configurado para realizar a intrapredição. Os preditores 120 e 125 podem determinar se devem realizar intrapredição ou usar interpredição em unidades de predição e podem determinar informações detalhadas (por exemplo, um modo de intrapredição, um vetor de movimento, uma imagem de referência e similares) que correspondem a cada método de predição. Nesse caso, uma unidade de processamento na qual a predição é realizada pode ser diferente de uma unidade de processamento na qual um método de predição e detalhes específicos são determinados. Por exemplo, um método de predição, um modo de predição e similares podem ser determinados por uma unidade de predição e a predição pode ser realizada por uma unidade de transformação. Um valor residual (um bloco residual) entre um bloco de predição gerado e um bloco original pode ser inserido no transformador 130. Além disso, informações de vetor de movimento, informações de modo de predição e similares, que são usadas para predição, além do valor residual, podem ser codificadas pelo codificador de entropia 165 e entregues a um decodificador. Quando um modo de codificação particular é usado, o bloco original pode ser codificado de forma intacta e transmitido para o decodificador sem gerar o bloco de predição completamente.
[0076] O interpreditor 120 pode predizer a unidade de predição com base nas informações em pelo menos uma dentre uma imagem anterior ou uma imagem subsequente em relação à imagem atual e, em alguns casos, a unidade de predição pode ser predita com base nas informações em uma região parcial da imagem atual onde a codificação é concluída. O interpreditor 120 pode incluir um interpolador de imagem de referência, um preditor de movimento e um compensador de movimento.
[0077] O interpolador de imagem de referência pode receber informações de imagem de referência da memória 155 e pode gerar informações em pixels menores ou iguais a pixels inteiros de uma imagem de referência. No caso de pixels de luminância, um filtro de interpolação de 8 derivações com base em DCT com coeficientes de filtro diferentes pode ser usado para gerar informações em pixels menores ou iguais a pixels inteiros em unidades de 1/4 pixels. No caso de sinais de crominância, um filtro de interpolação de 4 derivações com base em DCT com coeficientes de filtro diferentes pode ser usado para gerar informações em pixels menores ou iguais a pixels inteiros em unidades de 1/8 pixels.
[0078] O preditor de movimento pode realizar predição de movimento com base na imagem de referência interpolada pelo interpolador de imagem de referência. Como um método para calcular um vetor de movimento, vários métodos, tais como um algoritmo de correspondência de bloco com base em pesquisa completa (FBMA), um algoritmo de pesquisa em três etapas (TSS) e um novo algoritmo de pesquisa em três etapas (NTS) podem ser usados. O vetor de movimento pode ter um valor de vetor de movimento em unidades de 1/2 ou 1/4 pixels com base nos pixels interpolados. A unidade de predição de movimento pode predizer a unidade de predição atual com o uso de diferentes métodos de predição de movimento. Como o método de predição de movimento, vários métodos, tal como um método de salto, um método de mesclagem, um método de predição de vetor de movimento avançado (AMVP) e um método de cópia intrablocos podem ser usados.
[0079] O intrapreditor 125 pode gerar uma unidade de predição com base nas informações de um pixel de referência próximo ao bloco atual, que são informações de pixel na imagem atual. Quando o bloco próximo da unidade de predição atual é um bloco submetido a interpredição e, portanto, o pixel de referência é um pixel submetido a interpredição, as informações de pixel de referência do bloco próximo submetidas a intrapredição podem ser usadas no lugar do pixel de referência incluído no bloco submetido a interpredição. Ou seja, quando o pixel de referência não está disponível, pelo menos um pixel de referência disponível pode ser usado no lugar de informações de pixel de referência indisponíveis.
[0080] Os modos de predição em intrapredição podem incluir um modo de predição direcional que usa informações de pixel de referência dependendo de uma direção de predição e um modo não direcional que não usa informações de direcionalidade ao realizar a predição. Um modo para predizer informações de luminância e um modo para predizer informações de crominância podem ser diferentes, e as informações de modo de intrapredição usadas para predizer as informações de luminância ou as informações de sinal de luminância preditas podem ser utilizadas para predizer as informações de crominância.
[0081] Quando é realizada intrapredição e a unidade de predição é igual em tamanho à unidade de transformação, a intrapredição pode ser realizada na unidade de predição com base em pixels localizados à esquerda da unidade de predição, pixels localizados no canto superior esquerdo da unidade de predição e pixels localizados na parte superior da unidade de predição. No entanto, quando é realizada intrapredição e a unidade de predição é diferente em tamanho da unidade de transformação, a intrapredição pode ser realizada com o uso do pixel de referência com base na unidade de transformação. Além disso, pode ser usada intrapredição com o uso de divisão N × N apenas para a unidade de conversão em código mínima.
[0082] No método de intrapredição, um bloco de predição pode ser gerado após a aplicação de um filtro de intra-suavização adaptativo (AIS) a um pixel de referência, dependendo do modo de predição. O tipo do filtro AIS aplicado ao pixel de referência pode variar. A fim de realizar o método de intrapredição, um modo de intrapredição da unidade de predição atual pode ser predito a partir de um modo de intrapredição de uma unidade de predição perto da unidade de predição atual. Quando o modo de predição da unidade de predição atual é predito com o uso de informações de modo preditas a partir da unidade de predição próxima, informações indicando que a unidade de predição atual e a unidade de predição próxima têm o mesmo modo de predição podem ser transmitidas com o uso de informações de sinalização predeterminadas quando o modo de intrapredição da unidade de predição atual é o mesmo que o modo de intrapredição da unidade de predição próxima, e a codificação de entropia pode ser realizada para codificar as informações de modo de predição do bloco atual quando o modo de predição da unidade de predição atual é diferente do modo de predição da unidade de predição próxima.
[0083] Além disso, um bloco residual que inclui informações sobre um valor residual, que é uma diferença entre uma unidade de predição sujeita à predição e um bloco original da unidade de predição, pode ser gerado com base nas unidades de predição geradas pelos preditores 120 e 125. O bloco residual gerado pode ser inserido no transformador 130.
[0084] O transformador 130 pode transformar o bloco residual que inclui as informações sobre o valor residual entre o bloco original e as unidades de predição geradas pelos preditores 120 e 125 com o uso de um método de transformação, tal como transformada discreta de cosseno (DCT) ou transformada discreta de seno (DST). Aqui, um núcleo de transformação DCT inclui pelo menos um dentre DCT2 ou DCT8, e um núcleo de transformação DST inclui DST7. A aplicação de DCT ou DST para transformar o bloco residual pode ser determinada com base nas informações do modo de intrapredição da unidade de predição usadas para gerar o bloco residual. A transformação do bloco residual pode ser pulada. Um sinalizador indicando se deve pular a transformação do bloco residual pode ser codificado. O salto da transformação pode ser permitido para blocos residuais de um tamanho menor ou igual a um valor limiar, um componente luma ou um componente croma sob um formato 4:4:4.
[0085] O quantizador 135 pode quantizar valores que são transformados no domínio de frequência pelo transformador 130. Os coeficientes de quantização podem variar dependendo do bloco ou da importância de uma imagem. Os valores calculados pelo quantizador 135 podem ser fornecidos ao quantizador inverso 140 e ao reordenador 160.
[0086] O reordenador 160 pode realizar a reordenação de valores de coeficiente nos valores residuais quantizados.
[0087] O reordenador 160 pode alterar os coeficientes de uma forma de bloco bidimensional para uma forma de vetor unidimensional através de um método de varredura de coeficiente. Por exemplo, o reordenador 160 pode submeter à varredura coeficientes DC e até mesmo coeficientes de alta frequência com o uso de um método de varredura em ziguezague para alterar os coeficientes para uma forma de vetor unidimensional. Dependendo do modo de intrapredição e do tamanho da unidade de transformação, pode ser usada varredura vertical em que coeficientes de tipo de bloco bidimensional são submetidos à varredura em uma direção de coluna ou varredura horizontal em que coeficientes de tipo de bloco bidimensional são submetidos à varredura em uma direção de linha em vez da varredura em ziguezague. Ou seja, o reordenador pode determinar um método de varredura a ser usado entre a varredura em ziguezague, a varredura vertical e a varredura horizontal, dependendo do tamanho da unidade de transformação e do modo de intrapredição.
[0088] O codificador de entropia 165 pode realizar a codificação de entropia com base nos valores calculados pelo reordenador 160. A codificação de entropia pode usar, por exemplo, vários métodos de codificação, como Golomb exponencial, codificação de comprimento variável adaptativa ao contexto (CAVLC) e codificação aritmética binária adaptativa ao contexto (CABAC).
[0089] O codificador de entropia 165 pode codificar uma variedade de informações, como informações de coeficiente de valor residual e informações de tipo de bloco da unidade de conversão em código, informações de modo de predição, informações de partição, informações de unidade de predição, 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 informações de filtragem do reordenador 160 e dos preditores 120 e 125.
[0090] O codificador de entropia 165 pode realizar a codificação de entropia nos valores de coeficiente da unidade de conversão em código inseridas a partir do reordenador 160.
[0091] O quantizador inverso 140 pode quantizar inversamente os valores quantizados pelo quantizador 135 e o transformador inverso 145 pode transformar inversamente os valores transformados pelo transformador 130. O valor residual gerado pelo quantizador inverso 140 e pelo transformador inverso 145 pode ser combinado com uma unidade de predição predita através de um estimador de movimento, um compensador de movimento e um intrapreditor dos preditores 120 e 125 para gerar um bloco reconstruído.
[0092] O filtro 150 pode aplicar pelo menos um dentre um filtro de desblocagem, um corretor de deslocamento e um filtro de circuito adaptativo.
[0093] O filtro de desblocagem pode remover a distorção de bloco que tenha ocorrido devido a uma fronteira entre os blocos de uma imagem reconstruída. A fim de determinar se deve-se realizar desblocagem, pode ser determinado se deve- se aplicar o filtro de desblocagem ao bloco atual, com base nos pixels incluídos em várias linhas ou colunas do bloco. Quando o filtro de desblocagem é aplicado ao bloco, um filtro forte ou um filtro fraco pode ser aplicado dependendo da força de filtragem de desblocagem necessária. Além disso, quando o filtro de desblocagem é aplicado, a filtragem vertical e a filtragem horizontal podem ser realizadas de modo que a filtragem horizontal e a filtragem vertical sejam processadas em paralelo.
[0094] O corretor de deslocamento pode corrigir um deslocamento de uma imagem original em uma imagem submetida a desblocagem em unidades de pixels. Um método para classificar pixels incluídos em uma imagem em um certo número de regiões, determinar uma região a ser submetida a deslocamento e aplicar um deslocamento à região determinada ou um método para aplicar um deslocamento considerando as informações de borda de cada pixel pode ser usado para realizar correção de deslocamento em uma imagem particular.
[0095] Filtragem de circuito adaptativo (ALF) pode ser realizada com base nos valores obtidos comparando-se a imagem reconstruída filtrada e a imagem original. Ao classificar os pixels incluídos na imagem em grupos predeterminados e determinar um filtro a ser aplicado a cada um dos grupos, a filtragem diferencial pode ser realizada para cada grupo. As informações sobre a aplicação de ALF podem ser transmitidas para cada unidade de conversão em código (CU), e o formato e os coeficientes de filtro de um filtro ALF a ser aplicado podem variar dependendo do bloco. Além disso, o filtro ALF na mesma forma (forma fixa) pode ser aplicado independentemente da característica de um bloco a ser submetido a filtragem.
[0096] A memória 155 pode armazenar um bloco ou imagem reconstruída calculada através do filtro 150. O bloco ou imagem reconstruída armazenada pode ser fornecida aos preditores 120 e 125 quando a interpredição é realizada.
[0097] A Figura 2 é um diagrama de blocos de um decodificador de acordo com uma modalidade da presente invenção.
[0098] Com referência à Figura 2, um decodificador 200 pode incluir um decodificador de entropia 210, um reordenador 215, um quantizador inverso 220, um transformador inverso 225, preditores 230 e 235, um filtro 240 e uma memória 245.
[0099] Quando um fluxo de bits de vídeo é inserido a partir de um codificador, o fluxo de bits de entrada pode ser decodificado em um procedimento inverso àquele do codificador.
[00100] O decodificador de entropia 210 pode realizar decodificação de entropia em um procedimento inverso àquele procedimento no qual o codificador de entropia do codificador realiza a codificação de entropia. Por exemplo, vários métodos, tais como Golomb exponencial, codificação de comprimento variável adaptativa ao contexto (CAVLC) e codificação aritmética binária adaptativa ao contexto (CABAC) podem ser aplicados para corresponder ao método realizado pelo codificador.
[00101] O decodificador de entropia 210 pode decodificar informações relacionadas à intrapredição e interpredição realizada pelo codificador.
[00102] O reordenador 215 pode realizar reordenação no fluxo de bits submetido à decodificação de entropia pelo decodificador de entropia 210 com base no método de reordenação usado pelo codificador. O reordenador 215 pode reconstruir coeficientes expressos em uma forma de vetor unidimensional em coeficientes de tipo de bloco bidimensional para reordenar os coeficientes de tipo de bloco bidimensional. O reordenador 215 pode receber informações relacionadas à varredura de coeficiente realizada pelo codificador e realizar a reordenação através de um método de varredura inversa com base na ordem de varredura do codificador.
[00103] O quantizador inverso 220 pode realizar quantização inversa com base nos valores de coeficiente de bloco reordenado e parâmetros de quantização fornecidos pelo codificador.
[00104] O transformador inverso 225 pode realizar DCT inversa ou DST inversa em um resultado da quantização realizada pelo codificador, em que a DCT inversa ou a DST inversa é o inverso da transformação que foi realizada pela unidade de transformação, isto é, DCT ou DST. Aqui, um núcleo de transformação DCT pode incluir pelo menos um dentre DCT2 ou DCT8, e um núcleo de transformação DST pode incluir DST7. Alternativamente, quando a transformação é ignorada no codificador, o transformador inverso 225 pode não realizar a transformação inversa. A transformação inversa pode ser realizada com base em uma unidade de transmissão determinada pelo codificador. No transformador inverso 225 do decodificador, as técnicas de transformação (por exemplo, DCT e DST) podem ser realizadas seletivamente, dependendo de múltiplas informações, como um método de predição, o tamanho do bloco atual e uma direção de predição.
[00105] Os preditores 230 e 235 podem gerar um bloco de predição com base nas informações relacionadas à geração do bloco de predição, que são fornecidas pelo decodificador de entropia 210, e informações sobre um bloco ou imagem previamente decodificado, que são fornecidas pela memória 245.
[00106] Conforme descrito acima, quando intrapredição é realizada da mesma maneira que aquela do codificador e a unidade de predição é igual em tamanho à unidade de transformação, a intrapredição pode ser realizada na unidade de predição com base em pixels localizados à esquerda da unidade de predição, pixels localizados no canto superior esquerdo da unidade de predição e pixels localizados na parte superior da unidade de predição. Por outro lado, quando intrapredição é realizada e a unidade de predição é diferente em tamanho da unidade de transformação, a intrapredição pode ser realizada com o uso de um pixel de referência com base na unidade de transformação. Além disso, pode ser usada intrapredição com o uso de divisão N × N apenas para a unidade de conversão em código mínima.
[00107] Os preditores 230 e 235 podem incluir um determinador da unidade de predição, um interpreditor e um intrapreditor. O determinador da unidade de predição pode receber diversas informações, tais como informações da unidade de predição, informações do modo de predição para o método de intrapredição e informações relacionadas à predição de movimento para o método de interpredição do decodificador de entropia 210, classificar a unidade de predição na unidade de conversão em código atual e determinar se a unidade de predição realiza interpredição ou intrapredição. Ao usar as informações necessárias para a interpredição da unidade de predição atual fornecidas pelo codificador, o interpreditor 230 pode realizar a interpredição na unidade de predição atual com base nas informações incluídas em pelo menos um dentre uma imagem que precede a imagem atual que inclui a unidade de predição atual ou uma imagem seguinte à imagem atual. Alternativamente, a interpredição pode ser realizada com base em informações sobre algumas regiões pré-reconstruídas na imagem atual incluindo a unidade de predição atual.
[00108] O interpreditor 230 pode determinar se o método de predição de movimento para a unidade de predição incluída na unidade de conversão em código correspondente é um modo de pular, um modo de mesclagem, um modo AMVP ou um modo de cópia intrablocos com base na unidade de conversão em código a fim de realizar a interpredição.
[00109] O intrapreditor 235 pode gerar um bloco de predição com base nas informações em pixels na imagem atual. Quando a unidade de predição é uma unidade de predição submetida a intrapredição, o intrapreditor 235 pode realizar intrapredição com base nas informações do modo de intrapredição da unidade de predição fornecidas pelo codificador. O intrapreditor 235 pode incluir um filtro AIS, um interpolador de pixel de referência e um filtro DC. O filtro AIS, que é uma parte que realiza a filtragem no pixel de referência do bloco atual, pode determinar se deve aplicar o filtro dependendo do modo de predição da unidade de predição atual. O filtro AIS pode realizar a filtragem AIS no pixel de referência do bloco atual com o uso de informações do filtro AIS e o modo de predição da unidade de predição fornecida pelo codificador. Quando o modo de predição do bloco atual é um modo em que a filtragem AIS não é realizada, o filtro AIS pode não ser aplicado.
[00110] Quando o modo de predição da unidade de predição é um modo de predição em que intrapredição é realizada com base em um valor de pixel obtido pela interpolação do pixel de referência, o interpolador de pixel de referência pode interpolar o pixel de referência para gerar o pixel de referência em uma unidade de pixel menor ou igual a um inteiro. Quando o modo de predição da unidade de predição é um modo de predição em que intrapredição é realizada com base em um valor de pixel obtido pela interpolação do pixel de referência, o interpolador de pixel de referência pode interpolar o pixel de referência para gerar o pixel de referência em uma unidade de pixel menor ou igual a um inteiro. Quando o modo de predição do bloco atual é um modo DC, o filtro DC pode gerar o bloco de predição através da filtragem.
[00111] O bloco ou imagem reconstruída pode ser fornecida ao filtro 240. O filtro 240 pode incluir um filtro de desblocagem, um corretor de deslocamento e um filtro ALF.
[00112] O filtro 240 pode receber informações sobre se o filtro de desblocagem é aplicado a um bloco ou imagem correspondente ou informações sobre se um filtro forte ou um filtro fraco é aplicado quando o filtro de desblocagem é aplicado a partir do codificador. O filtro de desblocagem do decodificador pode receber informações relacionadas ao filtro de desblocagem, que é fornecido pelo codificador, e o decodificador pode realizar a filtragem de desblocagem em um bloco correspondente.
[00113] O corretor de deslocamento pode realizar correção de deslocamento na imagem reconstruída com base no tipo de correção de deslocamento, informações de valor de deslocamento e similares que são aplicados à imagem após a codificação.
[00114] O ALF pode ser aplicado à unidade de conversão em código com base nas informações sobre a aplicação do ALF, informações do coeficiente ALF e similares que são fornecidos a partir do codificador. As informações ALF podem ser fornecidas sendo incluídas em um conjunto de parâmetros particular.
[00115] A memória 245 pode armazenar a imagem ou bloco reconstruído de modo que a imagem ou bloco possa ser usado como uma imagem de referência ou um bloco de referência e também possa fornecer a imagem reconstruída a uma unidade de saída.
[00116] A Figura 3 é um diagrama que mostra uma unidade de árvore de conversão em código básica de acordo com uma modalidade da presente invenção.
[00117] Uma unidade de conversão em código de tamanho maior pode ser definida como um bloco de árvore de conversão em código. Uma imagem é separada em uma pluralidade de unidades de árvore de conversão em código (CTUs). Uma unidade de árvore de conversão em código, que é uma unidade de conversão em código do maior tamanho, pode ser denominada como uma unidade de conversão em código maior (LCU). A Figura 3 mostra um exemplo no qual uma imagem é separada em uma pluralidade de unidades de árvore de conversão em código.
[00118] O tamanho da unidade de árvore de conversão em código pode ser definido ao nível de imagem ou ao nível de sequência. Para esse fim, as informações que indicam o tamanho da unidade de árvore de conversão em código podem ser sinalizadas através de um conjunto de parâmetros de imagem ou um conjunto de parâmetros de sequência.
[00119] Como exemplo, o tamanho da unidade de árvore de conversão em código para a imagem inteira em uma sequência pode ser definido como 128 × 128. Alternativamente, um dentre 128 × 128 ou 256 × 256 pode ser determinado como o tamanho da unidade de árvore de conversão em código no nível de imagem. Como exemplo, o tamanho de uma unidade de árvore de conversão em código em uma primeira imagem pode ser definido como 128 × 128 e o tamanho de uma unidade de árvore de conversão em código em uma segunda imagem pode ser definido como 256 ×
256.
[00120] A unidade de árvore de conversão em código pode ser separada para gerar um bloco de conversão em código. Um bloco de conversão em código indica uma unidade básica para o processamento de codificação ou decodificação. Como exemplo, a predição ou transformação pode ser realizada para cada bloco de conversão em código, ou um modo de codificação preditivo pode ser determinado para cada bloco de conversão em código. Aqui, o modo de codificação preditiva indica um método de geração de uma imagem de predição. Como exemplo, o modo de codificação preditiva pode incluir intrapredição,
interpredição, referência de imagem atual (CPR) (ou cópia intrabloco (IBC)) ou predição combinada. Um bloco de predição para um bloco de conversão em código pode ser gerado com o uso de pelo menos um modo de codificação preditiva entre intrapredição, interpredição, referência de imagem atual ou predição combinada para o bloco de conversão em código.
[00121] As informações que indicam o modo de codificação preditiva do bloco atual podem ser sinalizadas em um fluxo de bits. Como exemplo, as informações podem ser um sinalizador de 1 bit indicando se o modo de codificação preditiva é modo intra ou modo inter. A referência de imagem atual ou predição combinada pode estar disponível apenas quando é determinado que o modo de codificação preditiva do bloco atual é o modo inter.
[00122] A referência de imagem atual é para definir a imagem atual como a imagem de referência e adquirir o bloco de predição do bloco atual de uma região da imagem atual onde a codificação ou decodificação é concluída. Aqui, a imagem atual se refere a uma imagem que inclui o bloco atual. As informações que indicam que a referência de imagem atual é aplicada ao bloco atual podem ser sinalizadas em um fluxo de bits. Por exemplo, as informações podem ser um sinalizador de 1 bit. Pode ser determinado que o modo de codificação preditiva do bloco atual é a referência de imagem atual quando o sinalizador é verdadeiro, e pode ser determinado que o modo de predição do bloco atual é interpredição quando o sinalizador é falso.
[00123] Alternativamente, o modo de codificação preditiva do bloco atual pode ser determinado com base em um índice de imagem de referência. Como exemplo, quando o índice de imagem de referência indica a imagem atual, pode ser determinado que o modo de codificação preditiva do bloco atual é a referência de imagem atual. Quando o índice de imagem de referência indica uma imagem diferente da imagem atual, pode ser determinado que o modo de codificação preditiva do bloco atual é interpredição. Ou seja, a referência de imagem atual é um método de predição que usa informações de uma região da imagem atual em que a codificação ou decodificação é concluída e a interpredição é um método de predição que usa informações de outra imagem em que a codificação ou decodificação é concluída.
[00124] A predição combinada indica um modo de codificação obtido pela combinação de dois ou mais dentre intrapredição, interpredição e referência de imagem atual. Como exemplo, quando é aplicada predição combinada, um primeiro bloco de predição pode ser gerado com base em um dentre intrapredição, interpredição ou referência de imagem atual e um segundo bloco de predição pode ser gerado com base em outro. Quando o primeiro bloco de predição e o segundo bloco de predição são gerados, um bloco de predição final pode ser gerado por meio de uma operação de cálculo de média ou uma operação de soma ponderada entre o primeiro bloco de predição e o segundo bloco de predição. As informações que indicam se a predição combinada é aplicada podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit.
[00125] A Figura 4 é um diagrama que mostra vários tipos de partição de um bloco de conversão em código.
[00126] Um bloco de conversão em código pode ser separado em uma pluralidade de blocos de codificação com base na divisão em árvore quadrática, divisão em árvore binária ou divisão em árvore ternária. Um bloco de conversão em código obtido através da divisão pode ser separado novamente em uma pluralidade de blocos de codificação com base na divisão em árvore quadrática, divisão em árvore binária ou divisão em árvore ternária.
[00127] A divisão em árvore quadrática indica uma técnica de divisão para separar o bloco atual em quatro blocos. Como resultado da divisão em árvore quadrática, o bloco atual pode ser dividido em quatro partições quadradas (consultar "SPLIT_QT" da Figura 4A).
[00128] A partição de árvore binária indica uma técnica de divisão para dividir o bloco atual em dois blocos. A divisão do bloco atual em dois blocos em uma direção vertical (ou seja, com o uso de uma linha vertical através do bloco atual) pode ser denominada como partição de árvore binária vertical e a divisão do bloco atual em dois blocos em uma direção horizontal (ou seja, com o uso de uma linha horizontal através do bloco atual) pode ser denominada como partição de árvore binária horizontal. Como resultado da divisão da árvore binária, o bloco atual pode ser dividido em duas partições não quadradas. Na Figura 4B, “SPLIT_BT_CONSULTAR” representa um resultado da partição de árvore binária vertical. Na Figura 4C, “SPLIT_BT_HOR” representa um resultado da partição de árvore binária horizontal.
[00129] A divisão da árvore ternária indica uma técnica de divisão para separar o bloco atual em três blocos. A divisão do bloco atual em três blocos em uma direção vertical (ou seja, com o uso de duas linhas verticais através do bloco atual) pode ser denominada como partição de árvore ternária vertical e a divisão do bloco atual em três blocos em uma direção horizontal (ou seja, com o uso de duas linhas horizontais no bloco atual) pode ser denominada como partição de árvore ternária horizontal. Como resultado da partição de árvore ternária, o bloco atual pode ser dividido em três partições não quadradas. Nesse caso, a largura ou altura da partição localizada no centro do bloco atual pode ser o dobro daquelas de outras divisões. Na Figura 4D, “'SPLIT_TT_CONSULTAR'“ representa um resultado da partição de árvore ternária vertical. Na Figura 4E, “SPLIT_TT_HOR” representa um resultado da partição de árvore ternária horizontal.
[00130] O número de vezes que uma unidade de árvore de conversão em código é dividida pode ser definido como uma profundidade de partição (profundidade de partição). A profundidade máxima de divisão da unidade de árvore de conversão em código pode ser determinada no nível de sequência ou no nível de imagem. Assim, a profundidade máxima de divisão da unidade de árvore de conversão em código pode variar dependendo da sequência ou da imagem.
[00131] Assim, a profundidade máxima de divisão da unidade de árvore de conversão em código pode variar dependendo da sequência ou da imagem. Como exemplo, a profundidade máxima de divisão permitida para partição de árvore quadrática pode ser diferente da profundidade máxima de divisão permitida para partição de árvore binária e/ou partição de árvore ternária.
[00132] O codificador pode sinalizar informações que indicam pelo menos um dos tipos de partição ou a profundidade da divisão do bloco atual em um fluxo de bits. O decodificador pode determinar o tipo de partição e a profundidade de partição da unidade de árvore de conversão em código com base nas informações analisadas a partir do fluxo de bits.
[00133] A Figura 5 é um diagrama que ilustra um aspecto de divisão de uma unidade de árvore de conversão em código.
[00134] A divisão de um bloco de conversão em código com o uso de uma técnica de divisão, como partição de árvore quadrática, partição de árvore binária e/ou partição de árvore ternária, pode ser denominada como partição de árvore múltipla (partição de árvore múltipla).
[00135] Os blocos de codificação gerados pela aplicação de partição de árvore múltipla ao bloco de conversão em código podem ser referidos como blocos de codificação inferiores. Quando a profundidade de partição do bloco de conversão em código é k, a profundidade da divisão dos blocos de codificação inferiores é definida como k+1.
[00136] Pelo contrário, no que diz respeito aos blocos de codificação com uma profundidade de partição de k+1, um bloco de conversão em código com uma profundidade de partição de k pode ser denominado como um bloco de conversão em código superior.
[00137] O tipo de partição do bloco de conversão em código atual pode ser determinado com base em pelo menos um dos tipos de partição do bloco de conversão em código superior ou o tipo de partição de um bloco de conversão em código vizinho. Aqui, o bloco de conversão em código vizinho é adjacente ao bloco de conversão em código atual e pode incluir pelo menos um dentre um bloco vizinho localizado acima do bloco de conversão em código atual, um bloco vizinho localizado à esquerda do bloco de conversão em código atual ou um bloco vizinho adjacente ao canto superior esquerdo do bloco de conversão em código atual. Aqui, o tipo de partição pode incluir pelo menos um dentre a presença de partição de árvore quadrática, a presença de partição de árvore binária, a direção de partição de árvore binária, a presença de partição de árvore ternária ou a direção de partição de árvore ternária.
[00138] A fim de determinar o tipo de partição do bloco de conversão em código, as informações que indicam se o bloco de conversão em código é separado podem ser sinalizadas em um fluxo de bits. As informações são um sinalizador de 1 bit “split_cu_flag”, e o sinalizador verdadeiro indica que o bloco de conversão em código é separado por uma técnica de partição de árvore múltipla.
[00139] Quando split_cu_flag é verdadeiro, as informações que indicam se o bloco de conversão em código é separado através de partição de árvore quadrática podem ser sinalizadas em um fluxo de bits. As informações são um sinalizador de 1 bit “split_qt_flag” e, quando o sinalizador é verdadeiro, o bloco de conversão em código pode ser dividido em quatro blocos.
[00140] Por exemplo, é mostrado na Figura 5 que quatro blocos de codificação com uma profundidade de partição de um são gerados porque a unidade de árvore de conversão em código é separada por meio de partição de árvore quadrática. Também é mostrado que a partição de árvore quadrática é reaplicada ao primeiro bloco de conversão em código e ao quarto bloco de conversão em código entre os quatro blocos de codificação gerados pela realização da partição de árvore quadrática. Como resultado, podem ser gerados quatro blocos de conversão em código com uma profundidade de partição de dois.
[00141] Além disso, ao reaplicar a partição de árvore quadrática a um bloco de conversão em código com uma profundidade de partição de dois, pode ser gerado um bloco de conversão em código com uma profundidade de partição de três.
[00142] Quando a partição de árvore quadrática não é aplicada a um bloco de conversão em código, pode ser determinado se deve-se realizar a partição de árvore binária ou partição de árvore ternária no bloco de conversão em código considerando pelo menos um dentre o tamanho do bloco de conversão em código, se o bloco de conversão em código está localizado em uma borda da imagem, a profundidade máxima de divisão ou o aspecto de divisão de um bloco vizinho. Quando for determinado que a partição de árvore binária ou partição de árvore ternária é realizada no bloco de conversão em código, as informações que indicam uma direção de divisão podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit mtt_split_cu_vertical_flag. Com base no sinalizador, pode ser determinado se a direção de divisão é vertical ou horizontal. Além disso, as informações que indicam qual dentre partição de árvore binária e partição de árvore ternária é aplicada ao bloco de conversão em código podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit mtt_split_cu_binary_flag. Com base no sinalizador, pode ser determinado se partição de árvore binária ou partição de árvore ternária é aplicada ao bloco de conversão em código.
[00143] Por exemplo, é mostrado na Figura 5 que a partição de árvore binária vertical é aplicada a um bloco de conversão em código com uma profundidade de partição de um, a divisão de árvore ternária vertical é aplicada a um bloco de conversão em código esquerdo entre os blocos de conversão em código gerados como resultado da divisão de árvore binária vertical e divisão de árvore binária vertical é aplicada a um bloco de conversão em código direito.
[00144] A interpredição é um modo de conversão em código preditiva em que o bloco atual é predito com o uso das informações da imagem anterior. Como exemplo, um bloco incluído na imagem anterior e posicionado na mesma localização do bloco atual (doravante no presente documento denominado como um bloco colocalizado) pode ser definido como um bloco de predição do bloco atual. Um bloco de predição gerado com base em um bloco posicionado na mesma localização que aquele do bloco atual será denominado como um bloco de predição colocalizado.
[00145] Entretanto, quando um objeto presente na imagem anterior é movido para uma localização diferente na imagem atual, o bloco atual pode ser efetivamente predito com o uso do movimento do objeto. Por exemplo, quando a direção do movimento e o tamanho do objeto podem ser encontrados comparando-se a imagem anterior com a imagem atual, um bloco de predição (ou uma imagem de predição) do bloco atual pode ser gerado considerando as informações de movimento do objeto. Doravante no presente documento, o bloco de predição gerado com o uso das informações de movimento pode ser denominado como um bloco de predição de movimento.
[00146] Um bloco residual pode ser gerado subtraindo-se o bloco de predição do bloco atual. Nesse momento, quando o movimento do objeto está presente, é possível reduzir a energia do bloco residual e, consequentemente, é possível melhorar o desempenho de compressão do bloco residual com o uso do bloco de predição de movimento em vez do bloco de predição colocalizado.
[00147] Conforme descrito acima, a geração de um bloco de predição com o uso de informações de movimento pode ser denominada como predição de compensação de movimento. Na maioria das interpredições, um bloco de predição pode ser gerado com base na predição de compensação de movimento.
[00148] 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 predição ou um índice de peso bidirecional. O vetor de movimento indica a direção do movimento e o tamanho do objeto. O índice de imagem de referência especifica uma imagem de referência do bloco atual entre imagens de referência incluídas em uma lista de imagens de referência. A direção de predição indica uma dentre predição L0 unidirecional, predição L1 unidirecional ou predição bidirecional (predição L0 e predição L1). Pelo menos uma dentre as informações de movimento de direção L0 ou as informações de movimento de direção L1 pode ser usada dependendo da direção de predição do bloco atual. O índice de peso bidirecional especifica um peso aplicado a um bloco de predição L0 e um peso aplicado a um bloco de predição L1.
[00149] A Figura 6 é um fluxograma de um método de interpredição de acordo com uma modalidade da presente invenção.
[00150] Com referência à Figura 6, o método de interpredição inclui determinar um modo de interpredição do bloco atual (S601), adquirir informações de movimento do bloco atual de acordo com o modo de interpredição determinado (S602) e realizar predição de compensação de movimento no bloco atual com base nas informações de movimento adquiridas (S603).
[00151] Aqui, o modo de interpredição, que representa várias técnicas para determinar as informações de movimento do bloco atual, pode incluir um modo de interpredição com o uso de informações de movimento de translação e um modo de interpredição com o uso de informações de movimento afins. Como exemplo, o modo de interpredição com o uso de informações de movimento de translação pode incluir um modo de mesclagem e um modo de predição de vetor de movimento, e o modo de interpredição com o uso de informações de movimento afins pode incluir um modo de mesclagem afim e um modo de predição de vetor de movimento afim. As informações de movimento do bloco atual podem ser determinadas com base nas informações analisadas a partir do fluxo de bits ou dos blocos vizinhos ao bloco atual de acordo com o modo de interpredição.
[00152] O método de interpredição com o uso de informações de movimento afins será descrito em detalhes abaixo.
[00153] A Figura 7 é um diagrama que ilustra um movimento não linear de um objeto.
[00154] O movimento de um objeto em uma imagem pode ocorrer de forma não linear. Por exemplo, como no exemplo mostrado na Figura 7, pode ocorrer o movimento não linear de um objeto, como aproximação, afastamento, rotação e transformação afim. Quando ocorre o movimento não linear do objeto, o vetor de movimento de translação não pode representar efetivamente o movimento do objeto. Consequentemente, é possível melhorar a eficiência de conversão em código com o uso do movimento afim em uma parte em que o movimento não linear do objeto ocorreu em vez do movimento de translação.
[00155] A Figura 8 é um fluxograma de um método de interpredição com base em um movimento afim de acordo com uma modalidade da presente invenção.
[00156] Pode ser determinado se uma técnica de interpredição com base em movimento afim é aplicada ao bloco atual com base nas informações analisadas a partir do fluxo de bits. Em detalhes, pode ser determinado se a técnica de interpredição com base em movimento afim é aplicada ao bloco atual, com base em pelo menos um dentre um sinalizador que indica se o modo de fusão afim é aplicado ao bloco atual ou um sinalizador que indica se o modo de predição de vetor de movimento afim é aplicado ao bloco atual.
[00157] Quando a técnica de interpredição com base em movimento afim é aplicada ao bloco atual, um modelo de movimento afim do bloco atual pode ser determinado (S801). Pelo menos um dentre um modelo de movimento afim de 6 parâmetros ou um modelo de movimento afim de 4 parâmetros pode ser determinado como o modelo de movimento afim. O modelo de movimento afim de 6 parâmetros expressa um modelo afim com o uso de seis parâmetros e o modelo de movimento afim de 4 parâmetros expressa um modelo afim com o uso de quatro parâmetros.
[00158] A Equação 1 expressa um movimento afim com o uso de seis parâmetros. Um movimento afim representa um movimento de translação para uma dada região determinada por vetores-semente afins. [Equação 1]
[00159] Quando um movimento afim é expresso com o uso de seis parâmetros, um movimento complexo pode ser expresso, mas o número de bits necessários para codificar os parâmetros pode aumentar, reduzindo assim a eficiência de conversão em código. Por conseguinte, um movimento afim pode ser expresso com o uso de quatro parâmetros. A Equação 2 expressa um movimento afim com o uso de quatro parâmetros. [Equação 2]
[00160] As informações para determinar o modelo de movimento afim do modelo atual podem ser codificadas e sinalizadas em um fluxo de bits. Como exemplo, as informações podem ser um sinalizador de 1 bit “affine_type_flag”. O valor do sinalizador ser 0 pode indicar que é aplicado o modelo de movimento afim de 4 parâmetros e o valor do sinalizador ser 1 pode indicar que é aplicado o modelo de movimento afim de 6 parâmetros. O sinalizador pode ser codificado em unidades de fatias, recortes ou blocos (por exemplo, blocos de conversão em código ou unidades de árvore de conversão em código). Quando o sinalizador é sinalizado no nível de fatia, o modelo de movimento afim determinado no nível de fatia pode ser aplicado a todos os blocos que pertencem à fatia.
[00161] Alternativamente, o modelo de movimento afim do bloco atual pode ser determinado com base no modo de interpredição afim do bloco atual. Como exemplo, quando o modo de mesclagem afim é aplicado, pode ser determinado que o modelo de movimento afim do bloco atual é um modelo de movimento de 4 parâmetros. Por outro lado, quando o modo de prediçã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 em um fluxo de bits. Como exemplo, quando o modo de predição de vetor de movimento afim é aplicado ao bloco atual, o modelo de movimento afim do bloco atual pode ser determinado com base em um sinalizador de 1 bit “'affine_type_flag”.
[00162] Em seguida, um vetor-semente afim do bloco atual pode ser derivado (S802). Quando o 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 o modelo de movimento afim de 6 parâmetros é selecionado, vetores de movimento em três pontos de controle do bloco atual podem ser derivados. Um 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 ou o canto inferior esquerdo do bloco atual.
[00163] A Figura 9 é um diagrama que ilustra um vetor-semente afim para cada modelo de movimento afim.
[00164] No modelo de movimento afim de 4 parâmetros, vetores-semente afins podem ser derivados para dois dentre o canto superior esquerdo, o canto superior direito ou o canto inferior esquerdo. Por exemplo, como no exemplo mostrado na Figura 9A, quando o modelo de movimento afim de 4 parâmetros é selecionado, um vetor afim pode ser derivado com o uso de um vetor-semente afim sv0 para o canto superior esquerdo do bloco atual (por exemplo, uma amostra superior esquerda (x0, y0)) e um vetor-semente afim sv1 para o canto superior direito do bloco atual (por exemplo, uma amostra superior direita (x1, y1)). O vetor-semente afim para o canto inferior esquerdo pode ser usado em vez do vetor-semente afim para o canto superior esquerdo, ou o vetor-semente afim para o canto inferior esquerdo pode ser usado em vez do vetor- semente afim para o canto superior direito.
[00165] No modelo de movimento afim de 6 parâmetros, vetores-semente afins podem ser derivados para o canto superior esquerdo, o canto superior direito e o canto inferior esquerdo. Por exemplo, como no exemplo mostrado na Figura 9B, quando o modelo de movimento afim de 6 parâmetros é selecionado, um vetor afim pode ser derivado com o uso do vetor-semente afim sv0 para o canto superior esquerdo do bloco atual (por exemplo, uma amostra superior esquerda (x0, y0)), o vetor-semente afim sv1 para o canto superior direito do bloco atual (por exemplo, uma amostra superior direita (x1, y1)), e um vetor-semente afim sv2 para o canto superior esquerdo do bloco atual (por exemplo, uma amostra superior esquerda (x2, y2)).
[00166] Na modalidade que se segue, sob o modelo de movimento afim de 4 parâmetros, os vetores-semente afins para o ponto de controle superior esquerdo e o ponto de controle superior direito serão denominados como um primeiro vetor-semente afim e um segundo vetor-semente afim, respectivamente. Nas modalidades que se seguem em que o primeiro vetor-semente afim e o segundo vetor-semente afim são usados, pelo menos um dentre o primeiro vetor-semente afim e o segundo vetor-semente afim pode ser substituído por um vetor- semente afim (um terceiro vetor-semente afim) para um ponto de controle inferior esquerdo ou um vetor-semente afim (um quarto vetor-semente afim) para um ponto de controle inferior direito.
[00167] Além disso, no modelo de movimento afim de 6 parâmetros, os vetores-semente afins do ponto de controle superior esquerdo, do ponto de controle superior direito e do ponto de controle inferior esquerdo serão denominados como um primeiro vetor-semente afim, um segundo vetor-semente afim e um terceiro vetor-semente afim, respectivamente. Nas modalidades que se seguem em que o primeiro vetor-semente afim, o segundo vetor-semente afim e o terceiro vetor-semente afim são usados, pelo menos um dentre o primeiro vetor-semente afim, o segundo vetor-semente afim e o terceiro vetor-semente afim pode ser substituído por um vetor-semente afim (um quarto vetor-semente afim) para um ponto de controle inferior direito.
[00168] Um vetor afim pode ser derivado para cada sub-bloco com o uso dos vetores-semente afins (S803). Aqui, o vetor afim indica um vetor de movimento de translação derivado com base nos vetores-semente afins. O vetor afim do sub-bloco pode ser denominado como um vetor de movimento de sub-bloco afim ou um vetor de movimento de sub-bloco.
[00169] A Figura 10 é um diagrama que ilustra vetores afins de sub-blocos sob um modelo de movimento de 4 parâmetros.
[00170] O vetor afim do sub-bloco pode ser derivado com base na localização de um ponto de controle, a localização de um sub-bloco e um vetor-semente afim. Como exemplo, a Equação 3 mostra um exemplo de derivação de um vetor de sub- bloco afim. [Equação 3]
[00171] Na Equação 3, (x, y) representa a localização do sub-bloco. Aqui, a localização do sub-bloco indica a localização de uma amostra de referência incluída no sub-bloco. Uma amostra de referência pode ser uma amostra que está localizada no canto superior esquerdo do sub-bloco ou uma amostra na qual pelo menos uma dentre uma coordenada x ou uma coordenada y está localizada no centro. (x0, y0) representa a localização do primeiro ponto de controle e (sv0x, sv0y) representa o primeiro vetor-semente afim. Além disso, (x1, y1) representa a localização do segundo ponto de controle e (sv1x, sv1y) representa o segundo vetor-semente afim.
[00172] 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 com o mesmo valor que a largura do bloco atual.
[00173] Subsequentemente, a predição de compensação de movimento pode ser realizada para cada sub- bloco com o uso do vetor afim do sub-bloco correspondente (S804). Como resultado da realização da predição de compensação de movimento, pode ser gerado um bloco de predição para cada sub-bloco. Os blocos de predição dos sub-blocos podem ser definidos como o bloco de predição do bloco atual.
[00174] O vetor-semente afim do bloco atual pode ser derivado com base no vetor-semente afim do bloco vizinho ao bloco atual. Quando o modo de interpredição do bloco atual é o modo de mesclagem afim, o vetor-semente afim de um candidato a mesclagem incluído em uma lista de candidatos a mesclagem pode ser determinado como o vetor-semente afim do bloco atual. Além disso, quando o modo de interpredição do bloco atual é o modo de mesclagem afim, informações de movimento que incluem pelo menos um dentre um índice de imagem de referência, um sinalizador de predição de direção específica ou um peso bidirecional do bloco atual também pode ser definido como sendo o mesmo que o candidato a mesclagem.
[00175] O candidato a mesclagem pode ser derivado com base no bloco vizinho do bloco atual. O bloco vizinho pode incluir pelo menos um dentre um bloco vizinho espacial que é espacialmente adjacente ao bloco atual e um bloco vizinho temporal que está incluído em uma imagem diferente da imagem atual.
[00176] A Figura 11 é um diagrama que mostra blocos vizinhos que podem ser usados para derivar um candidato a mesclagem.
[00177] O bloco vizinho do bloco atual pode incluir pelo menos um dentre um bloco vizinho (A) adjacente à esquerda do bloco atual, um bloco vizinho (B) vizinho à parte superior do bloco atual, um bloco vizinho (C) adjacente ao canto superior direito do bloco atual, um bloco vizinho (D) adjacente ao canto inferior esquerdo do bloco atual ou um bloco vizinho (E) adjacente ao canto superior esquerdo do bloco atual. Quando uma amostra superior esquerda do bloco atual tem coordenadas (x0, y0), o bloco vizinho esquerdo A inclui uma amostra localizada em (x0-1, y0+H-1), e o bloco vizinho superior B inclui uma amostra localizada em (x0+W-1, y0-1). Aqui, W e H representam a largura e a altura do bloco atual, respectivamente. O bloco vizinho superior direito C inclui uma amostra localizada em (x0+W, y0-1), e o bloco vizinho inferior esquerdo D inclui uma amostra localizada em (x0-1, y0+H). O bloco vizinho superior esquerdo E inclui uma amostra localizada em (x0-1, y0-1).
[00178] Quando o bloco vizinho é codificado no modo de interpredição afim, o vetor-semente afim do candidato a mesclagem pode ser derivado com base no vetor-semente afim do bloco vizinho correspondente. Doravante no presente documento, o bloco vizinho codificado no modo de interpredição afim será denominado como um bloco vizinho afim e o candidato a mesclagem derivado do bloco vizinho afim será denominado como um candidato a mesclagem afim.
[00179] Os blocos vizinhos podem ser descobertos em uma ordem de varredura predefinida para gerar um candidato a mesclagem afim para o bloco atual. A ordem de varredura pode ser predefinida em um codificador e um decodificador. Como exemplo, os blocos vizinhos podem ser descobertos na ordem de A, B, C, D e E. Além disso, os candidatos a mesclagem afins podem ser derivados sequencialmente dos blocos vizinhos afins descobertos. Alternativamente, a ordem de varredura pode ser determinada de forma adaptativa com base em pelo menos um dentre o tamanho, formato ou modelo de movimento afim do bloco atual. Ou seja, ordens de varredura para blocos que diferem em pelo menos um dentre um tamanho, formato ou modelo de movimento afim podem ser diferentes uma da outra.
[00180] Alternativamente, os blocos localizados na parte superior do bloco atual podem ser descobertos sequencialmente para derivar um candidato a mesclagem afim de um bloco vizinho afim que é descoberto pela primeira vez, e os blocos localizados à esquerda do bloco atual podem ser descobertos sequencialmente para derivar um candidato a mesclagem afim de um bloco vizinho afim que é encontrado primeiro. Aqui, os blocos vizinhos localizados na parte superior do bloco atual podem incluir pelo menos um dentre o bloco vizinho E, o bloco vizinho B ou o bloco vizinho C, e os blocos localizados à esquerda do bloco atual podem incluir pelo menos um dentre o bloco A ou do bloco D. Nesse caso, o bloco vizinho E pode ser classificado como um bloco localizado à esquerda do bloco atual.
[00181] Embora não seja mostrado, um candidato a mesclagem afim pode ser derivado de um bloco vizinho temporariamente do bloco atual. Aqui, o bloco vizinho temporariamente pode incluir um bloco posicionado na mesma localização em uma imagem colocalizada como o bloco atual ou um bloco adjacente ao bloco. Em detalhes, quando o bloco vizinho temporariamente do bloco atual é codificado no modo de interpredição afim, o candidato a mesclagem afim pode ser derivado com base no vetor-semente afim do candidato a mesclagem afim temporal.
[00182] Pode ser gerada uma lista de candidatos a mesclagem que inclui candidatos a mesclagem afins, e o vetor- semente afim de um dos candidatos a mesclagem incluídos na lista de candidatos a mesclagem pode ser determinado como o vetor-semente afim do bloco atual. Para esse fim, as informações de índice para identificar um dos candidatos a mesclagem podem ser codificadas e transmitidas em um fluxo de bits.
[00183] Como outro exemplo, enquanto blocos vizinhos estão sendo descobertos na ordem de varredura, o vetor-semente afim do bloco atual pode ser derivado do vetor- semente afim de um bloco vizinho afim que é encontrado primeiro.
[00184] O vetor-semente afim do bloco atual pode ser derivado com o uso do vetor-semente afim do bloco vizinho no modo de mesclagem afim.
[00185] Quando o modo de interpredição do bloco atual é o modo de predição de vetor de movimento afim, o vetor- semente afim de um candidato de predição de vetor de movimento incluído em um candidato de predição de vetor de movimento pode ser determinado como um valor de predição de vetor-semente afim do bloco atual. Ao adicionar um valor de diferença de vetor-semente afim ao valor de predição de vetor-semente afim, o vetor-semente afim do bloco atual pode ser derivado.
[00186] Um candidato a predição de vetor-semente afim pode ser derivado com base em um bloco vizinho do bloco atual. Em detalhes, blocos vizinhos localizados acima do bloco atual são descobertos em uma ordem de varredura predeterminada e um primeiro candidato a predição de vetor-semente afim pode ser derivado de um bloco vizinho afim que é encontrado primeiro. Além disso, blocos vizinhos localizados à esquerda do bloco atual são descobertos em uma ordem de varredura predeterminada e um segundo candidato a predição de vetor- semente afim pode ser derivado de um bloco vizinho afim que é encontrado primeiro.
[00187] As informações para determinar o valor de diferença de vetor-semente afim podem ser codificadas e transmitidas em um fluxo de bits. As informações podem incluir informações de tamanho que indicam o tamanho do valor de diferença de vetor-semente afim e informações de sinal que indicam o sinal do valor de diferença de vetor-semente afim. O valor de diferença de vetor-semente afim para cada ponto de controle pode ser definido com o mesmo valor. Alternativamente, o valor de diferença de vetor-semente afim pode ser definido de forma diferente dependendo do ponto de controle.
[00188] Como descrito acima, o vetor-semente afim do candidato a mesclagem afim ou o candidato a predição de vetor-semente afim é derivado do vetor-semente afim do bloco vizinho afim, e o vetor-semente afim do bloco atual pode ser derivado com o uso do vetor semente afim derivado do candidato a mesclagem afim ou do candidato a predição de vetor-semente afim. Alternativamente, após blocos vizinhos afins serem descobertos em uma ordem de varredura predeterminada, o vetor- semente afim do bloco atual pode ser derivado do vetor-semente afim de um bloco vizinho afim que é encontrado primeiro.
[00189] Um método para derivar o vetor-semente afim do bloco atual, o candidato a mesclagem afim ou o candidato a predição de vetor-semente afim do vetor-semente afim do bloco vizinho afim será descrito em detalhes abaixo. Nas modalidades que se seguem, derivar o vetor-semente afim do bloco atual também pode ser entendido como derivar o vetor- semente afim do candidato a mesclagem afim ou derivar o vetor- semente afim do candidato a predição de vetor-semente afim.
[00190] A Figura 12 é um diagrama que mostra um exemplo de derivação do vetor-semente afim do bloco atual com base em um vetor-semente afim do bloco vizinho afim.
[00191] Quando um primeiro vetor-semente afim nv0 para um ponto de controle superior esquerdo e um segundo vetor- semente afim nv1 para um ponto de controle superior direito são armazenados para o bloco vizinho afim, um terceiro vetor- semente afim nv2 para um ponto de controle inferior esquerdo do bloco vizinho afim pode ser derivado com base no primeiro vetor-semente afim e no segundo vetor-semente afim. A Equação 4 mostra um exemplo de derivação do terceiro vetor-semente afim.
[Equação 4]
[00192] Na Equação 4, (nv0x, nv0y) representa o primeiro vetor-semente afim nv0, (nv1x, nv1y) representa o segundo vetor-semente afim nv1 e (nv2x, nv2y) representa o terceiro vetor-semente afim nv2. Além disso, (xn0, xn0) representa a localização do primeiro ponto de controle, (xn1, xn1) representa a localização do segundo ponto de controle e (xn2, xn2) representa a localização do terceiro ponto de controle.
[00193] Subsequentemente, o vetor-semente afim do bloco atual pode ser derivado com o uso do primeiro vetor- semente afim, do segundo vetor-semente afim e do terceiro vetor-semente afim. A Equação 5 mostra um exemplo de derivação do primeiro vetor-semente afim v0 do bloco atual, e a Equação 6 mostra um exemplo de derivação do segundo vetor-semente afim v1 do bloco atual. [Equação 5] [Equação 6]
[00194] Na Equação 5 e na Equação 6, (v0x, v0y) representa o primeiro vetor-semente afim sv0 do bloco atual e (v1x, v1y) representa o segundo vetor-semente afim sv1 do bloco atual. Além disso, (x0, y0) representa a localização do primeiro ponto de controle e (x1, y1) representa a localização do segundo ponto de controle. Como exemplo, o primeiro ponto de controle indica o canto superior esquerdo do bloco atual e o segundo ponto de controle indica o canto superior direito do bloco atual.
[00195] No exemplo descrito acima, foi descrito que os vetores-semente afins do bloco atual são derivados com o uso de três vetores-semente afins para um bloco vizinho afim. Como outro exemplo, os vetores-semente afins do bloco atual podem ser derivados com o uso de apenas dois dos vetores- semente afins do bloco vizinho afim.
[00196] Alternativamente, os vetores-semente afim do bloco atual podem ser derivados com o uso do quarto vetor- semente afim para o canto inferior direito em vez do primeiro vetor-semente afim para o canto superior esquerdo, o segundo vetor-semente afim para o canto superior direito, ou o terceiro vetor-semente afim para o canto inferior esquerdo em relação ao bloco vizinho afim.
[00197] Em particular, quando a borda superior do bloco atual é contígua à borda superior da unidade de árvore de conversão em código e um vetor-semente afim para um ponto de controle superior (por exemplo, o canto superior esquerdo ou o canto superior direito) de um bloco vizinho afim adjacente à parte superior do bloco atual (doravante denominado como um bloco vizinho afim superior) se destina a ser usado, esse vetor-semente afim tem que ser pré-armazenado em uma memória. Consequentemente, pode surgir um problema de que o número de armazenamentos temporários de linha aumenta. Assim, quando a borda superior do bloco atual é contígua à borda superior da unidade de árvore de conversão em código, pode ser feita uma configuração de modo que um vetor-semente afim para um ponto de controle inferior (por exemplo, o canto inferior esquerdo ou inferior canto direito) em vez do vetor-semente afim para o ponto de controle superior é usado para o bloco vizinho afim superior. Como exemplo, os vetores-semente afins do bloco atual podem ser derivados com o uso do terceiro vetor-semente afim para o canto inferior esquerdo e o quarto vetor-semente afim para o canto inferior direito em relação ao bloco vizinho afim superior. Nesse caso, os vetores-semente afins para os cantos inferiores podem ser derivados copiando-se os vetores-semente afins para os cantos superiores ou a partir dos vetores-semente afins para os cantos superiores. Como exemplo, o quarto vetor- semente afim para o canto inferior direito pode ser usado através da conversão ou substituição do primeiro vetor-semente afim, do segundo vetor-semente afim ou do terceiro vetor- semente afim.
[00198] A Equação 7 e a Equação 8 mostram exemplos de derivação do primeiro vetor-semente afim e do segundo vetor- semente afim do bloco atual com o uso do terceiro vetor-semente afim para o ponto de controle inferior esquerdo do vetor afim vizinho e o quarto vetor-semente afim para o ponto de controle inferior direito do vetor afim vizinho.
[Equação 7] [Equação 8]
[00199] Na Equação 7 e na Equação 8, (xn2, yn2) representa as coordenadas do ponto de controle inferior esquerdo do bloco vizinho afim, e (xn3, yn3) representa as coordenadas do ponto de controle inferior direito do bloco vizinho afim. (x0, y0) representa as coordenadas do ponto de controle superior esquerdo do bloco atual e (x1, y1) representa as coordenadas do ponto de controle superior direito do bloco atual. (nv2x, nv2y) representa o vetor-semente afim para o ponto de controle inferior esquerdo (ou seja, o terceiro vetor- semente afim) do bloco vizinho afim, e (nv3x, nv3y) representa o vetor-semente afim para o ponto de controle inferior direito (isto é, o quarto vetor-semente afim) do bloco vizinho afim. (v0x, v0y) representa o vetor-semente afim para o ponto de controle superior esquerdo (ou seja, o primeiro vetor-semente afim) do bloco atual, e (v1x, v1y) representa o vetor-semente afim para o ponto de controle superior direito (ou seja, o segundo vetor-semente afim) do bloco atual.
[00200] Uma operação de divisão incluída na Equação 7 e Equação 8 pode ser alterada para uma operação de deslocamento de bits. A operação de mudança de bit pode ser realizada com base em um valor derivado pela largura (ou seja, xn3-xn2) entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito.
[00201] Como no exemplo acima, os vetores-semente afins do bloco atual podem ser derivados de vetores-semente afins do bloco vizinho afim onde a codificação ou decodificação é concluída. Para esse fim, os vetores-semente afins do bloco vizinho afim onde a codificação ou decodificação é concluída devem ser armazenados em uma memória. No entanto, uma vez que os vetores-semente afins do bloco vizinho afim são armazenados na memória, além dos vetores de movimento de translação (ou seja, vetores afins) de sub-blocos incluídos no bloco vizinho afim, há um problema de que o uso de memória aumenta. Para solucionar esse problema, o vetor-semente afim do bloco atual pode ser derivado com o uso de um vetor de movimento de um sub-bloco adjacente a um ponto de controle do bloco vizinho afim em vez do vetor-semente afim do bloco vizinho afim. Ou seja, o vetor de movimento do sub-bloco adjacente ao ponto de controle do bloco vizinho afim pode ser definido como o vetor- semente afim do bloco vizinho afim. Aqui, o sub-bloco pode ser um bloco com um tamanho ou formato predefinido em um codificador e um decodificador e pode ser um bloco com um tamanho ou formato básico no qual um vetor de movimento é armazenado. Como exemplo, o sub-bloco pode ser um bloco quadrado 4×4. Alternativamente, um vetor de movimento para uma localização de amostra específica pode ser definido como o vetor-semente afim do bloco vizinho afim.
[00202] A Figura 13 é um diagrama que mostra um exemplo de configuração de um vetor de movimento de um sub-
bloco como um vetor-semente afim de um bloco vizinho afim.
[00203] Um vetor de movimento de um sub-bloco adjacente a um ponto de controle pode ser definido como um vetor-semente afim do ponto de controle correspondente. Como exemplo, como em um exemplo mostrado na Figura 13, um vetor de movimento (nv4x, nv4y) de um sub-bloco adjacente ao canto inferior esquerdo (um sub-bloco inferior esquerdo) do bloco vizinho afim pode ser definido como um vetor-semente afim (nv2x, nv2x) para um ponto de controle inferior esquerdo, e um vetor de movimento (nv5x, nv5y) de um sub-bloco adjacente ao canto inferior direito (um sub-bloco inferior direito) pode ser definido como o vetor-semente afim (nv3x, nv3y) para um ponto de controle no canto inferior direito. Aqui, o sub-bloco inferior esquerdo pode se referir a um sub-bloco que inclui uma amostra adjacente a um ponto de controle inferior esquerdo (xn2, yn2) no bloco afim vizinho (por exemplo, uma amostra localizada em (xn2, yn2-1)), e o sub-bloco inferior direito pode se referir a um bloco que inclui uma amostra adjacente a um ponto de controle inferior direito (xn3, yn3) no bloco afim vizinho (por exemplo, uma amostra localizada em (xn3-1, yn3 - 1)). Quando os vetores semente afins do bloco atual são derivados com base na Equação 7 e Equação 8, o terceiro vetor- semente afim do bloco vizinho afim pode ser substituído pelo vetor de movimento do sub-bloco inferior esquerdo, e o quarto o vetor-semente afim pode ser substituído pelo vetor de movimento do sub-bloco inferior direito.
[00204] Na modalidade que se segue, um sub-bloco usado como o vetor-semente afim do bloco vizinho afim será denominado como um sub-bloco afim.
[00205] De acordo com uma modalidade da presente invenção, o sub-bloco afim pode ser determinado com base em uma amostra localizada em uma localização específica. Como exemplo, um sub-bloco que inclui uma amostra localizada em uma localização específica pode ser definido como o sub-bloco afim. Doravante no presente documento a amostra localizada na localização específica será denominada como uma amostra de referência. Além disso, uma amostra de referência usada para determinar um sub-bloco afim para o ponto de controle inferior esquerdo será denominada como uma amostra de referência inferior esquerda e uma amostra de referência usada para determinar um sub-bloco afim para o ponto inferior direito ponto de controle será denominada como uma amostra de referência inferior direita.
[00206] A amostra de referência inferior esquerda e a amostra de referência inferior direita podem ser selecionadas a partir de amostras incluídas no bloco vizinho afim. Como exemplo, pelo menos uma dentre uma amostra superior esquerda, uma amostra inferior esquerda, uma amostra superior direita ou uma amostra inferior esquerda do sub-bloco inferior esquerdo é definida como a amostra de referência inferior esquerda, e pelo menos uma dentre uma amostra superior esquerda, uma amostra inferior esquerda, uma amostra superior direita ou uma amostra inferior esquerda do sub-bloco inferior direito é definida como a amostra de referência inferior direita. Por conseguinte, os vetores de movimento do sub-bloco inferior esquerdo que inclui a amostra de referência inferior esquerda e o sub-bloco inferior direito que inclui a amostra de referência inferior direita podem ser definidos como o vetor-semente afim para o ponto de controle inferior esquerdo e o vetor-semente afim para o ponto inferior direito,
respectivamente.
[00207] Como outro exemplo, pelo menos uma dentre a amostra de referência inferior esquerda ou a amostra de referência inferior direita pode ser definida como uma amostra localizada fora do bloco vizinho afim. Isso será descrito em detalhes abaixo com referência às Figuras 14 a 16.
[00208] As Figuras 14 a 16 são diagramas que mostram a localização de uma amostra de referência.
[00209] Como no exemplo mostrado na Figura 14A, para o ponto de controle inferior esquerdo, uma amostra superior esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4). Assim, o sub- bloco inferior esquerdo que inclui a amostra de referência (xn4, yn4) pode ser definido como o sub-bloco afim para o ponto de controle inferior esquerdo.
[00210] Para o ponto de controle inferior direito, uma amostra localizada à direita de uma amostra superior direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5, yn5). Assim, o sub-bloco adjacente à direita do sub-bloco inferior direito que inclui a amostra de referência (xn5, yn5) pode ser definido como o sub-bloco afim para o ponto de controle inferior direito.
[00211] Alternativamente, como no exemplo mostrado na Figura 14B, para o ponto de controle inferior esquerdo, uma amostra localizada à esquerda de uma amostra superior esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4). Assim, o sub-bloco adjacente à esquerda do sub-bloco inferior esquerdo que inclui a amostra de referência (xn4, yn4) pode ser definido como o sub-bloco afim para o ponto de controle inferior esquerdo.
[00212] Para o ponto de controle inferior direito, uma amostra superior direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5, yn5). Assim, o sub-bloco inferior direito que inclui a amostra de referência (xn5, yn5) pode ser definido como o sub-bloco afim para o ponto de controle inferior direito.
[00213] Alternativamente, como no exemplo mostrado na Figura 15A, para o ponto de controle inferior esquerdo, uma amostra inferior esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4). Assim, o sub-bloco inferior esquerdo que inclui a amostra de referência (xn4, yn4) pode ser definido como o sub-bloco afim para o ponto de controle inferior esquerdo.
[00214] Para o ponto de controle inferior direito, uma amostra localizada à direita de uma amostra inferior direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5, yn5). Assim, o sub-bloco adjacente à direita do sub-bloco inferior direito que inclui a amostra de referência (xn5, yn5) pode ser definido como o sub-bloco afim para o ponto de controle inferior direito.
[00215] Alternativamente, como no exemplo mostrado na Figura 15B, para o ponto de controle inferior esquerdo, uma amostra localizada à esquerda de uma amostra inferior esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4). Assim, o sub-bloco adjacente à esquerda do sub-bloco inferior esquerdo que inclui a amostra de referência (xn4, yn4) pode ser definido como o sub-bloco afim para o ponto de controle inferior esquerdo.
[00216] Para o ponto de controle inferior direito, uma amostra inferior direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5, yn5). Assim, o sub-bloco inferior direito que inclui a amostra de referência (xn5, yn5) pode ser definido como o sub-bloco afim para o ponto de controle inferior direito.
[00217] Alternativamente, como no exemplo mostrado na Figura 16A, para o ponto de controle inferior esquerdo, uma amostra localizada entre a amostra superior esquerda e a amostra inferior esquerda do sub-bloco inferior esquerdo (por exemplo, uma amostra central esquerda) pode ser definida como a amostra de referência (xn4, yn4). Assim, o sub-bloco inferior esquerdo que inclui a amostra de referência (xn4, yn4) pode ser definido como o sub-bloco afim para o ponto de controle inferior esquerdo.
[00218] Para o ponto de controle inferior direito, uma amostra localizada à direita de uma amostra localizada entre a amostra superior direita e a amostra inferior direita do sub-bloco inferior direito (por exemplo, uma amostra central direita) pode ser definida como a amostra de referência (xn5, yn5). Assim, o sub-bloco adjacente à direita do sub-bloco inferior direito que inclui a amostra de referência (xn5, yn5) pode ser definido como o sub-bloco afim para o ponto de controle inferior direito.
[00219] Alternativamente, como no exemplo mostrado na Figura 16B, para o ponto de controle inferior esquerdo, uma amostra localizada à esquerda da amostra localizada entre a amostra superior esquerda e a amostra inferior esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4). Assim, o sub-bloco adjacente à esquerda do sub-bloco inferior esquerdo que inclui a amostra de referência (xn4, yn4) pode ser definido como o sub-bloco afim para o ponto de controle inferior esquerdo.
[00220] Para o ponto de controle inferior direito, uma amostra localizada entre a amostra superior direita e a amostra inferior direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5, yn5). Assim, o sub-bloco inferior direito que inclui a amostra de referência (xn5, yn5) pode ser definido como o sub-bloco afim para o ponto de controle inferior direito.
[00221] Quando os vetores-semente afins do bloco atual são derivados com base na Equação 7 e Equação 8, o terceiro vetor-semente afim do bloco vizinho afim pode ser substituído pelo vetor de movimento do sub-bloco afim para o ponto de controle inferior esquerdo, e o quarto vetor-semente afim pode ser substituído pelo vetor de movimento do sub-bloco afim para o ponto de controle inferior direito. Além disso, a localização do ponto de controle inferior esquerdo pode ser substituída pela localização da amostra de referência inferior esquerda e a localização do ponto de controle inferior direito pode ser substituída pela localização da amostra de referência inferior direita.
[00222] Diferente dos descritos acima com referência às Figuras 14 a 16, um sub-bloco que inclui uma amostra adjacente à amostra de referência pode ser definido como o sub-bloco afim. Em detalhes, uma amostra localizada fora do sub-bloco vizinho afim pode ser definida como a amostra de referência e um sub-bloco incluído no bloco vizinho afim pode ser definido como o sub-bloco afim. Por exemplo, no exemplo mostrado na Figura 14A, uma amostra localizada à direita da amostra superior direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5,
yn5) e o sub-bloco inferior direito pode ser definido como sub- bloco afim para o canto inferior direito. Alternativamente, no exemplo mostrado na Figura 14B, uma amostra localizada à esquerda da amostra superior esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4), e o sub-bloco inferior esquerdo pode ser definido como o sub-bloco afim para o canto inferior esquerdo.
[00223] As modalidades descritas acima também podem ser aplicadas às Figuras 15 e 16. Ou seja, no exemplo mostrado na Figura 15A ou 16A, uma amostra localizada à direita da amostra inferior direita ou a amostra central direita do sub-bloco inferior direito pode ser definida como a amostra de referência (xn5, yn5) e o sub-bloco inferior direito pode ser definido como o sub-bloco afim para o canto inferior direito. Alternativamente, no exemplo mostrado na Figura 15B ou 16B, uma amostra localizada à esquerda da amostra inferior esquerda ou a amostra central esquerda do sub-bloco inferior esquerdo pode ser definida como a amostra de referência (xn4, yn4) e o sub-bloco inferior esquerdo pode ser definido como o sub-bloco afim para o canto inferior esquerdo.
[00224] Como no exemplo acima, o vetor-semente afim do bloco vizinho afim pode ser derivado com o uso do vetor de movimento do sub-bloco afim. Para esse fim, no caso de um bloco em que a codificação ou decodificação é concluída, um vetor de movimento pode ser armazenado em unidades de sub- blocos.
[00225] Como outro exemplo, após um número mínimo de vetores-semente afins serem armazenados para o bloco vizinho afim, o vetor de movimento do sub-bloco afim pode ser derivado com o uso dos vetores-semente afins armazenados.
[00226] A Equação 9 e a Equação 10 mostram um exemplo de derivação do vetor de movimento do sub-bloco afim com o uso dos vetores-semente afins do bloco vizinho afim. [Equação 9] [Equação 10]
[00227] Na Equação 9 e na Equação 10, (nv4x, nv4y) representa o vetor de movimento do sub-bloco afim para o ponto de controle inferior esquerdo, e (nv5x, nv5y) representa o vetor de movimento do sub-bloco afim para o ponto de controle inferior direito. Uma vez que o vetor de movimento do sub- bloco afim e o vetor-semente afim do ponto de controle são definidos como sendo iguais, (nv4x, nv4y) pode ser substituído pelo vetor-semente afim (nv2x, nv2y) para o ponto de controle inferior esquerdo e (nv5x, nv5y) pode ser substituído pelo vetor-semente afim (nv3x, nv3y) para o ponto de controle inferior direito.
[00228] (xn4, yn4) representa a localização da amostra de referência em relação ao sub-bloco inferior esquerdo. Alternativamente, a localização central do sub-bloco inferior esquerdo ou a localização do ponto de controle inferior esquerdo podem, em vez disso, ser usados. (xn5, yn5)
representa a localização da amostra de referência em relação ao sub-bloco inferior direito. Alternativamente, a localização central do sub-bloco inferior direito ou a localização do ponto de controle inferior direito podem, em vez disso, ser usados.
[00229] A Equação 9 e a Equação 10 podem ser aplicadas a um caso em que o bloco atual não é contíguo à borda da unidade de árvore de conversão em código. Quando o bloco atual é contíguo à borda superior da unidade de árvore de conversão em código, o vetor de movimento de translação do sub-bloco afim determinado com base na amostra de referência inferior esquerda pode ser definido como o terceiro vetor- semente afim e o vetor de movimento de translação do sub-bloco afim determinado com base na amostra de referência inferior direita pode ser definido como o quarto vetor-semente afim em vez de usar a Equação 9 e a Equação 10.
[00230] Na Equação 7 e na Equação 8, (xn3-xn2) representa a largura entre o ponto de controle inferior esquerdo e o ponto de controle inferior direito. Conforme descrito acima, xn3 pode ser substituído pela localização xn5 da amostra de referência inferior direita e xn2 pode ser substituído pela localização xn4 da amostra de referência inferior esquerda. Doravante no presente documento, (xn3-xn2) ou um valor (por exemplo, (xn5-xn4)) adquirido pela substituição da localização da Equação acima com a localização das amostras de referência será definido como uma variável Wseed, e a variável será denominada como uma largura de vetor de subsemente.
[00231] Dependendo da localização das amostras de referência, a largura do vetor de subsemente pode não ser uma potência de 2 (por exemplo, 2n). Como exemplo, quando a amostra inferior esquerda do sub-bloco inferior esquerdo é definida como a amostra de referência inferior esquerda e a amostra inferior direita do sub-bloco inferior direito é definida como a amostra de referência inferior direita, a largura do vetor de subsemente não é um múltiplo de 2. Quando a largura do vetor de subsemente não é uma potência de 2, a largura do vetor de subsemente pode ser transformada em uma potência de 2. A transformação pode incluir adicionar ou subtrair um deslocamento a ou da largura do vetor de subsemente ou usar a localização de uma amostra adjacente à amostra de referência em vez da localização da amostra de referência. Como exemplo, uma largura de vetor de subsemente transformada pode ser derivada adicionando-se um à largura entre a amostra de referência inferior esquerda e a amostra de referência inferior direita. Alternativamente, a largura entre a amostra de referência inferior esquerda e uma amostra de referência vizinha adjacente à direita da amostra de referência inferior direita pode ser definida como a largura do vetor de subsemente transformada. Subsequentemente, o vetor-semente afim do bloco atual pode ser derivado aplicando-se a largura do vetor de subsemente transformada à Equação 7 e à Equação 8.
[00232] Uma operação de divisão incluída na Equação 7 e Equação 8 pode ser alterada para uma operação de deslocamento de bits. A operação de deslocamento de bit pode ser realizada com base em um valor derivado da largura do vetor de subsemente transformada (ou seja, um valor expresso como uma potência de 2).
[00233] Quando a amostra de referência usada para determinar o sub-bloco afim não pertence ao bloco vizinho afim, o vetor-semente afim do bloco vizinho afim pode ser derivado com base em uma amostra adjacente à amostra de referência entre as amostras incluídas no bloco vizinho afim. Especificamente, um vetor de movimento de translação de um sub-bloco que inclui a amostra adjacente à amostra de referência (doravante no presente documento denominada como uma amostra de referência vizinha) no bloco vizinho afim pode ser definido como o vetor- semente afim do bloco vizinho afim. Conforme descrito acima, um método para derivar o vetor-semente afim com o uso da amostra de referência vizinha pode ser definido como um método de derivação de vetor de mesclagem afim modificado.
[00234] A Figura 17 é um diagrama que mostra um exemplo no qual um método de derivação de vetor de mesclagem afim modificado é aplicado.
[00235] Quando a amostra de referência inferior direita (xn5, yn5) do bloco vizinho afim E não pertence a um bloco próximo afim, o vetor-semente afim pode ser derivado com base em uma amostra (xn5-1, yn5) adjacente à esquerda da amostra de referência inferior direita entre as amostras incluídas no bloco vizinho afim. Especificamente, o vetor de movimento de translação do sub-bloco que inclui a amostra de referência vizinha (xn5-1, yn5) pode ser definido como o vetor-semente afim do ponto de controle inferior direito.
[00236] No exemplo mostrado na Figura 17, é mostrado que uma amostra adjacente à direita da amostra superior direita do sub-bloco inferior direito é a amostra de referência inferior direita. O vetor-semente afim pode ser derivado com base na amostra adjacente à esquerda da amostra de referência vizinha, mesmo quando uma amostra adjacente à direita da amostra inferior direita do sub-bloco inferior direito ou uma amostra adjacente à direita da amostra direita do meio do sub-bloco inferior direito é definida como a amostra de referência inferior direita.
[00237] Além disso, o vetor-semente afim pode ser derivado com base em uma amostra adjacente à direita da amostra de referência inferior esquerda de acordo com a modalidade acima, mesmo quando a amostra de referência inferior esquerda não pertence ao bloco vizinho afim.
[00238] Ao definir de forma diferente a localização da amostra de referência e do sub-bloco para derivar o vetor-semente afim, a largura do vetor de subsemente pode ser definida como uma potência de 2.
[00239] Alternativamente, vetores-semente afins podem ser derivados com base na largura de um bloco vizinho, enquanto os vetores de movimento do sub-bloco inferior esquerdo e do sub-bloco inferior direito são usados.
[00240] A Figura 18 é um diagrama que mostra um exemplo de derivação de um vetor-semente afim de um candidato a mesclagem afim com base em vetores de movimento de sub-blocos que pertencem a um bloco vizinho.
[00241] Quando a borda superior do bloco atual é contígua à borda da unidade de árvore de conversão em código, o vetor-semente afim do candidato a mesclagem afim pode ser derivado com base nos vetores de movimento do sub-bloco inferior esquerdo e do sub-bloco inferior direito do bloco vizinho superior localizado acima do bloco atual. Quando é assumido que a localização da amostra superior esquerda do bloco vizinho superior é (xNb, yNb) e a largura e altura do bloco vizinho superior são NbW e NbH, respectivamente, o sub- bloco inferior esquerdo pode incluir uma amostra localizada em (xNb, yNb+yNbH-1), e o sub-bloco inferior direito pode incluir uma amostra localizada em (xNb+NbW-1, yNb+NbH-1).
[00242] Os blocos-semente afins do candidato a mesclagem afim podem ser derivados com base na largura do bloco vizinho e uma diferença nas coordenadas entre o bloco atual e o bloco vizinho. Como exemplo, os vetores-semente afins do candidato a mesclagem afim podem ser derivados com base nas Equações 11 a 13 abaixo. [Equação 11] [Equação 12] [Equação 13]
[00243] Nas Equações 11 a 13, (v0x, v0y) representa o primeiro vetor-semente afim, (v1x, v1y) representa o segundo vetor-semente afim e (v2x, v2y) representa o terceiro vetor- semente afim. VLBx representa o vetor de movimento de componente horizontal do sub-bloco inferior esquerdo e VLBy representa o vetor de movimento de componente vertical do sub-bloco inferior esquerdo. VRBx representa o vetor de movimento de componente horizontal do sub-bloco inferior direito, e VRBy representa o vetor de movimento de componente vertical do sub-bloco inferior direito. NbW representa a largura do bloco vizinho, e xCbW e xCbH representam a largura e a altura do bloco atual, respectivamente. xCb representa a coordenada x da amostra superior esquerda do bloco atual e xNb representa a coordenada x da amostra superior esquerda do bloco vizinho.
[00244] Um candidato a mesclagem afim pode ser gerado para combinar um vetor de movimento de um segundo bloco vizinho com vetores-semente afins derivados de um primeiro bloco vizinho. Por exemplo, no exemplo mostrado na Figura 18, o terceiro vetor-semente afim do candidato a mesclagem afim pode ser derivado com base em um vetor de movimento de um sub- bloco localizado à esquerda do bloco atual em vez de com base nos vetores de movimento do sub-bloco inferior esquerdo bloco e do sub-bloco inferior direito.
[00245] A Figura 19 é um diagrama que mostra um exemplo de derivação de vetores-semente afins de um candidato a mesclagem afim com base em vetores de movimento de sub-blocos localizados à esquerda do bloco atual.
[00246] Os vetores-semente afins do candidato a mesclagem afim podem ser derivados com base nos vetores de movimento do sub-bloco inferior esquerdo e do sub-bloco inferior direito do bloco vizinho superior localizado acima do bloco atual. Em detalhes, o primeiro vetor-semente afim e o segundo vetor-semente afim do candidato a mesclagem afim podem ser derivados com base nos vetores de movimento do sub-bloco inferior esquerdo e do sub-bloco inferior direito. Como exemplo, o primeiro vetor-semente afim e o segundo vetor- semente afim do candidato a mesclagem afim podem ser derivados com base nas Equações 11 e 12.
[00247] O terceiro vetor-semente afim do candidato a mesclagem afim pode ser derivado com base no vetor de movimento de um bloco vizinho adjacente à esquerda do bloco atual. Como exemplo, um vetor de movimento de um bloco vizinho adjacente à esquerda do bloco atual ou um bloco vizinho adjacente ao canto inferior esquerdo do bloco atual pode ser definido como o terceiro vetor-semente afim. O bloco vizinho adjacente à esquerda do bloco atual pode incluir uma amostra localizada em (xCb-1, yCb+CbH-1), e o bloco vizinho adjacente ao canto inferior esquerdo do bloco atual pode incluir uma amostra localizada em (xCb-1, yCb+CbH). A Equação 14 e a Equação 15 mostram um exemplo de configuração do vetor de movimento do bloco vizinho localizado à esquerda do bloco atual como o terceiro vetor-semente afim. [Equação 14] [Equação 15]
[00248] Na Equação 14, VLeftx representa o vetor de movimento horizontal do bloco vizinho adjacente à esquerda do bloco atual e VLefty representa o vetor de movimento vertical do bloco vizinho adjacente à esquerda do bloco atual. Na Equação 15, VLBx representa o vetor de movimento horizontal do bloco vizinho adjacente ao canto inferior esquerdo do bloco atual e VLBy representa o vetor de movimento vertical do bloco vizinho adjacente ao canto inferior esquerdo do bloco atual.
[00249] O terceiro vetor-semente afim pode ser derivado com o uso do vetor de movimento do bloco vizinho adjacente ao canto inferior esquerdo do bloco atual apenas quando o vetor de movimento do bloco vizinho adjacente à esquerda do bloco atual não está disponível.
[00250] O método de derivar o terceiro vetor- semente afim do candidato a mesclagem afim pode ser definido de forma diferente dependendo de o vetor de movimento do bloco vizinho localizado à esquerda do bloco atual estar disponível. Como exemplo, quando o vetor de movimento do bloco vizinho localizado à esquerda do bloco atual (por exemplo, o sub-bloco adjacente à esquerda do bloco atual ou o sub-bloco adjacente ao canto inferior esquerdo do bloco atual bloco) está disponível, o terceiro vetor-semente afim pode ser derivado com o uso da Equação 14 ou da Equação 15. Por outro lado, quando o vetor de movimento do bloco vizinho localizado à esquerda do bloco atual não está disponível, o terceiro vetor- semente afim pode ser derivado com o uso da Equação 13.
[00251] O terceiro vetor-semente afim pode ser derivado com base no vetor de movimento de um bloco não vizinho ter uma amostra de referência não adjacente ao bloco atual. A fim de derivar o terceiro vetor-semente afim, se para usar o vetor de movimento de um bloco vizinho que tem uma amostra de referência adjacente ao bloco atual ou para usar o vetor de movimento de um bloco não vizinho que tem uma amostra de referência não adjacente à corrente bloco pode ser determinado com base na localização do bloco vizinho superior usado para derivar o candidato a mesclagem afim.
[00252] A Figura 20 é um diagrama que mostra um exemplo de derivação de vetores-semente afins de um candidato a mesclagem afim com base nas informações de movimento de um bloco vizinho ou um bloco não vizinho localizado à esquerda do bloco atual.
[00253] Ao comparar a localização da amostra superior esquerda do bloco atual com a localização da amostra superior esquerda do bloco vizinho superior usado para derivar o candidato a mesclagem afim, a localização do bloco para derivar o terceiro vetor-semente afim pode ser determinada. Por exemplo, como no exemplo mostrado na Figura 20A, quando a coordenada x (xNb) da amostra superior esquerda do bloco vizinho superior é menor do que a coordenada x (xCb) da amostra superior esquerda do bloco atual, o terceiro vetor-semente afim pode ser derivado com base no vetor de movimento do bloco não vizinho que não é adjacente à esquerda do bloco atual. Em detalhes, o terceiro vetor-semente afim pode ser derivado com base no vetor de movimento de um bloco não vizinho inferior esquerdo que inclui uma amostra localizada em (xNb, yCb+CbH) ou um bloco não vizinho esquerdo que inclui uma amostra localizada em (xNb, yCb+CbH-1), em que as amostras têm a mesma coordenada x que a amostra superior esquerda do bloco vizinho superior. A Equação 16 e a Equação 17 mostram um exemplo de derivação do terceiro vetor-semente afim com base no vetor de movimento do bloco não vizinho. [Equação 16] [Equação 17]
[00254] Na Equação 16, VLeft2x representa o vetor de movimento horizontal do bloco não vizinho esquerdo, e VLeft2y representa o vetor de movimento vertical do bloco não vizinho esquerdo. Na Equação 17, VLB2x representa o vetor de movimento horizontal do bloco não vizinho inferior esquerdo, e VLB2y representa o vetor de movimento vertical do bloco não vizinho inferior esquerdo.
[00255] O terceiro vetor-semente afim pode ser derivado com o uso do vetor de movimento do bloco não vizinho inferior esquerdo apenas quando o vetor de movimento do bloco não vizinho esquerdo não está disponível.
[00256] Como no exemplo mostrado na Figura 20B, quando a coordenada x (xNb) da amostra superior esquerda do bloco vizinho superior é maior ou igual à coordenada x (xCb) da amostra superior esquerda do bloco atual, o terceiro vetor- semente afim pode ser derivado com base no vetor de movimento do bloco vizinho que é adjacente ao canto inferior esquerdo ou à esquerda do bloco atual. Em detalhes, o terceiro vetor- semente afim pode ser derivado com base no vetor de movimento de um bloco vizinho esquerdo, que inclui uma amostra (xCb, yCb+CbH-1) adjacente à esquerda do bloco atual ou um bloco vizinho inferior esquerdo que inclui uma amostra localizada em (xCb, yCb+CbH) adjacente ao canto inferior esquerdo do bloco atual.
[00257] A localização da amostra de referência do bloco vizinho esquerdo ou do bloco não vizinho esquerdo pode ser definida de forma diferente daquelas mostradas nas Figuras 18 a 20. Como exemplo, um bloco que inclui uma amostra (xCb- 1, yCb+subH-1) adjacente ao bloco atual pode ser definido como o bloco vizinho esquerdo e um bloco que inclui uma amostra (xNb, yCb+subH-1) não adjacente ao bloco atual pode ser definido como o bloco não vizinho esquerdo. Aqui, subH representa uma altura mínima de um bloco no qual as informações de movimento são armazenadas e podem ser um número natural, como 2, 4 ou 8.
[00258] A Figura 21 é um diagrama que mostra a localização de um bloco para derivar um vetor-semente afim de um candidato a mesclagem afim.
[00259] Por exemplo, como no exemplo mostrado na Figura 21A, quando a coordenada x (xNb) da amostra superior esquerda do bloco vizinho superior é menor do que a coordenada x (xCb) da amostra superior esquerda do bloco atual, o terceiro vetor-semente afim pode ser derivado com base no vetor de movimento do bloco não vizinho que não é adjacente à esquerda do bloco atual. Em detalhes, o terceiro vetor-semente afim pode ser derivado com base no vetor de movimento do bloco não vizinho esquerdo, que inclui a amostra (xNb, yCb+subH-1) que tem a mesma coordenada x que a amostra superior esquerda do bloco vizinho superior e que está espaçado a uma distância predeterminada (por exemplo, subH) da amostra inferior esquerda do bloco vizinho superior. A Equação 18 mostra um exemplo de derivação do terceiro vetor-semente afim com base no vetor de movimento do bloco não vizinho. [Equação 18]
[00260] Na Equação 18, VLeftT2x representa o vetor de movimento horizontal do bloco não vizinho esquerdo, que inclui a amostra espaçada a uma distância predeterminada da amostra inferior esquerda do bloco vizinho superior. VLeftT2y representa o vetor de movimento vertical do bloco não vizinho esquerdo, que inclui a amostra espaçada a uma distância predeterminada da amostra inferior esquerda do bloco vizinho superior.
[00261] Alternativamente, como no exemplo mostrado na Figura 21B, quando a coordenada x (xNb) da amostra superior esquerda do bloco vizinho superior é maior ou igual à coordenada x (xCb) da amostra superior esquerda do bloco atual, o terceiro vetor-semente afim pode ser derivado com base no vetor de movimento do bloco vizinho esquerdo que é adjacente à esquerda do bloco atual e que inclui uma amostra (xCb-1, yCb+subH-1) espaçada horizontalmente a uma distância predeterminada (por exemplo, subH -1) da amostra superior esquerda do bloco atual. A Equação 19 mostra um exemplo de derivação do terceiro vetor-semente afim com base no vetor de movimento do bloco vizinho. [Equação 19]
[00262] Na Equação 19, VLeftTx representa o vetor de movimento horizontal do bloco vizinho esquerdo que é adjacente à esquerda do bloco atual e que inclui a amostra espaçada verticalmente a uma distância predeterminada da amostra superior esquerda do bloco atual. VLeftTy representa o vetor de movimento vertical do bloco vizinho esquerdo que é adjacente à esquerda do bloco atual e que inclui a amostra espaçada verticalmente a uma distância predeterminada da amostra superior esquerda do bloco atual.
[00263] Alternativamente, a amostra de referência pode ser definida em uma localização diferente daquelas mostradas nas Figuras 18 a 21. Como exemplo, a amostra (xCb- 1, yCb) que é adjacente à esquerda do bloco atual e que tem a mesma coordenada y que a amostra superior esquerda do bloco atual ou a amostra (xNb, yCb) que não é adjacente à esquerda do bloco atual e que tem a mesma coordenada y que a amostra superior esquerda do bloco atual pode ser definida como a amostra de referência.
[00264] Como no exemplo descrito, o primeiro vetor-semente afim e o segundo vetor-semente afim do candidato a mesclagem afim podem ser derivados do bloco vizinho localizado acima do bloco atual, e o terceiro vetor-semente afim do candidato a mesclagem afim pode ser derivado do bloco vizinho localizado à esquerda do bloco atual. O primeiro vetor- semente afim e o terceiro vetor-semente afim do candidato a mesclagem afim podem ser derivados do bloco vizinho localizado à esquerda do bloco atual, e o segundo vetor-semente afim do candidato a mesclagem afim pode ser derivado do bloco vizinho localizado acima do bloco atual.
[00265] Nos exemplos mostrados nas Equações 11 a 13, o vetor-semente afim do candidato a mesclagem afim pode ser derivado com base em um valor de diferença entre o vetor de movimento VLB do sub-bloco inferior esquerdo do bloco vizinho superior e o vetor de movimento VRB do sub-bloco inferior direito do bloco vizinho superior. Nesse caso, o vetor-semente afim do candidato a mesclagem afim pode ser derivado com o uso do vetor de movimento de outro bloco em vez do vetor de movimento do sub-bloco inferior esquerdo ou do sub-bloco inferior direito. Como exemplo, quando o vetor de movimento VLB do sub-bloco inferior esquerdo do bloco vizinho superior tem o mesmo valor que o vetor de movimento VRB do sub- bloco inferior direito do bloco vizinho superior, VRB pode ser substituído pelo vetor de movimento de um bloco que inclui uma amostra localizada à direita ou abaixo do sub-bloco inferior direito. Como exemplo, o vetor de movimento do candidato a mesclagem afim pode ser derivado com o uso do vetor de movimento de um bloco que inclui uma amostra localizada em (xNb+NbW, yNb+NbH-1) em vez de usar o vetor de movimento VRB do sub-bloco inferior direito.
[00266] Alternativamente, quando o vetor de movimento VLB do sub-bloco inferior esquerdo do bloco vizinho superior tem o mesmo valor que o vetor de movimento VRB do sub- bloco inferior direito do bloco vizinho superior, VLB pode ser substituído pelo vetor de movimento de um bloco que inclui uma amostra localizada à esquerda ou abaixo do sub-bloco inferior esquerdo. Como exemplo, o vetor de movimento do candidato a mesclagem afim pode ser derivado com o uso do vetor de movimento de um bloco que inclui uma amostra localizada em (xNb, yNb+NbH-1+deslocamento) em vez de usar o vetor de movimento VLB do sub-bloco inferior esquerdo. Aqui, o deslocamento pode ser um número inteiro maior ou igual a 1.
[00267] Alternativamente, VRB pode ser substituído pelo vetor de movimento de um bloco que inclui uma amostra localizada à esquerda ou abaixo do sub-bloco inferior esquerdo, ou VLB pode ser substituído pelo vetor de movimento de um bloco que inclui uma amostra localizada à direita ou abaixo do sub- bloco inferior direito.
[00268] Um candidato a mesclagem pode ser derivado combinando-se os vetores de movimento de uma pluralidade de vetores adjacentes ao bloco atual. O candidato a mesclagem gerado pela combinação dos vetores de movimento da pluralidade de vetores vizinhos pode ser denominado como um candidato a mesclagem combinado. Quando o candidato a mesclagem combinado é derivado, o vetor-semente afim para o ponto de controle pode ser derivado de um bloco vizinho adjacente aos arredores do ponto de controle.
[00269] A Figura 22 é um diagrama para descrever um exemplo de combinação de vetores de movimento de uma pluralidade de blocos vizinhos para derivar um candidato a mesclagem combinado.
[00270] A pluralidade de blocos vizinhos pode incluir blocos vizinhos superiores localizados acima do bloco atual e blocos vizinhos à esquerda localizados à esquerda do bloco atual. Os blocos vizinhos superiores podem incluir pelo menos um dentre um bloco B0 que inclui uma amostra localizada em (xCb+CbW, yCb-1), um bloco B1 que inclui uma amostra localizada em (xCb+CbW-1, yCb-1), ou um bloco B3 que inclui uma amostra localizada em (xCb, yCb-1). Aqui, (xCb, yCb) representa a localização da amostra superior esquerda do bloco atual e CbW representa a largura do bloco atual. Os blocos vizinhos à esquerda podem incluir pelo menos um dentre um bloco A0 que inclui uma amostra localizada em (xCb-1, yCb+CbH), um bloco A1 que inclui uma amostra localizada em (xCb-1, yCb+CbH- 1), ou um bloco A2 que inclui uma amostra localizada em (xCb- 1, yCb). Aqui, CbH representa a altura do bloco atual.
[00271] Além disso, a pluralidade de blocos vizinhos pode adicionalmente incluir blocos vizinhos temporais do bloco atual.
[00272] Um candidato a mesclagem combinado pode ser derivado combinando-se as partes de informações de movimento de dois ou mais da pluralidade de blocos vizinhos. Um candidato a mesclagem combinado pode ser derivado combinando-se as partes de informações de movimento de dois ou três blocos vizinhos. Em detalhes, um candidato a mesclagem combinado pode ser derivado combinando-se pelo menos duas ou mais dentre as informações de movimento de um bloco vizinho adjacente ao primeiro ponto de controle, as informações de movimento de um bloco vizinho adjacente ao segundo ponto de controle ou as informações de movimento de um bloco vizinho adjacente ao terceiro ponto de controle.
[00273] Como exemplo, um candidato a mesclagem combinado pode ser derivado combinando-se os vetores de movimento de pelo menos dois ou mais dentre um bloco vizinho A2, B2 ou B3 adjacente a um ponto de controle superior esquerdo CP0, um bloco vizinho B1 ou B0 adjacente a um ponto de controle superior direito CP1, ou um bloco vizinho temporal T para um ponto de controle inferior esquerdo CP2.
[00274] Nesse caso, o vetor de movimento de um bloco vizinho disponível que é encontrado primeiro quando blocos vizinhos adjacentes ao ponto de controle são submetidos à varredura em uma ordem de varredura predefinida pode ser definido como o vetor-semente afim para o ponto de controle. Como exemplo, um primeiro vetor-semente afim do candidato a mesclagem combinado para CP0 pode ser definido como sendo o vetor de movimento de um bloco vizinho disponível que é encontrado primeiro quando os blocos vizinhos são descobertos na ordem de B2, B3 e A2. Um segundo vetor-semente afim do candidato a mesclagem combinado para CP1 pode ser definido como sendo o vetor de movimento de um bloco vizinho disponível que é encontrado primeiro quando os blocos vizinhos são descobertos na ordem de B1 e B0. Um terceiro vetor-semente afim do candidato a mesclagem combinado para CP2 pode ser definido como sendo o vetor de movimento de um bloco vizinho disponível que é encontrado primeiro quando os blocos vizinhos são descobertos na ordem de A1 e A0.
[00275] Quando o candidato a mesclagem combinado é derivado, um bloco vizinho codificado com o modelo de movimento afim ou um bloco vizinho derivado como o candidato a mesclagem afim pode ser definido como indisponível.
[00276] A Figura 23 é um diagrama que mostra um bloco vizinho indisponível.
[00277] Quando o candidato a mesclagem afim é derivado de um bloco vizinho B1 localizado acima do bloco atual, pode ser determinado que o bloco vizinho B1 não está disponível para derivar o candidato a mesclagem combinado. Assim, quando o vetor-semente afim do candidato a mesclagem combinado para CP1 é derivado, o vetor de movimento de B1 não pode ser usado.
[00278] Alternativamente, quando o bloco vizinho é codificado no modelo de movimento afim, o candidato a mesclagem combinado pode ser derivado com base no vetor afim do sub- bloco que inclui a amostra de referência. Como exemplo, quando um bloco vizinho que inclui uma amostra localizada em B1 é codificado no modelo de movimento afim, o candidato a mesclagem combinado pode ser derivado com o uso do vetor afim do sub- bloco do bloco vizinho que inclui a amostra localizada em B1.
[00279] Alternativamente, a ordem de varredura pode ser determinada considerando se o bloco vizinho é codificado com o modelo de movimento afim ou se o bloco vizinho é derivado como o candidato a mesclagem afim. Como exemplo, o bloco vizinho codificado com o modelo de movimento afim ou o bloco vizinho codificado com o candidato a mesclagem afim pode ser definido como sendo submetido à varredura por último. Como exemplo, quando o bloco vizinho localizado em B1 é codificado com o modelo de movimento afim, o segundo vetor-semente afim do candidato a mesclagem combinado para CP2 pode ser derivado descobrindo-se os blocos vizinhos na ordem de B0 e B1.
[00280] Quando os blocos vizinhos têm índices de imagem de referência diferentes, os vetores de movimento podem ser dimensionados em relação a uma imagem de referência com o maior índice ou uma imagem de referência com o menor índice. O dimensionamento pode ser realizado com base em um valor de diferença de contagem de ordem de imagem (POC) entre a imagem de referência e a imagem atual.
[00281] Alternativamente, a combinação dos blocos vizinhos pode ser realizada com o uso apenas de blocos vizinhos com o mesmo índice de imagem de referência entre os blocos vizinhos. Como exemplo, quando pelo menos um dos blocos vizinhos tem um índice de imagem de referência diferente, a combinação pode ser definida como indisponível como o candidato a mesclagem combinado. Além disso, a disponibilidade da combinação pode ser determinada independentemente de os blocos vizinhos terem a mesmas informações de movimento ou vetor de movimento. Como exemplo, o candidato a mesclagem combinado pode ser derivado combinando-se os blocos vizinhos que têm o mesmo índice de imagem de referência, mesmo quando os blocos vizinhos têm o mesmo vetor de movimento (por exemplo, um vetor- semente afim CP0 e um vetor-semente afim CP1). Alternativamente, a ordem de varredura dos blocos vizinhos pode ser determinada considerando os índices de imagem de referência dos blocos vizinhos. Alternativamente, a combinação pode ser realizada com o uso apenas de blocos vizinhos com a mesma direção de predição entre os blocos vizinhos.
[00282] O candidato a mesclagem pode ser gerado em uma ordem de combinação predeterminada. Como exemplo, a ordem de combinação pode ser definida como se segue.
[00283] 1. {vetor-semente afim CP0, vetor-semente afim CP1, vetor-semente afim CP2}
[00284] 2. {vetor-semente afim CP0, vetor-semente afim CP1, vetor-semente afim CP3}
[00285] 3. {vetor-semente afim CP0, vetor-semente afim CP2, vetor-semente afim CP3}
[00286] 4. {vetor-semente afim CP1, vetor-semente afim CP2, vetor-semente afim CP3}
[00287] 5. {vetor-semente afim CP0, vetor-semente afim CP1}
[00288] 6. {vetor-semente afim CP0, vetor-semente afim CP2}
[00289] Embora seis exemplos de combinação sejam mostrados, também é possível usar menos ou mais exemplos de combinação.
[00290] Um candidato a mesclagem combinado gerado pela combinação de três vetores-semente afins pode ser denominado como um candidato a mesclagem combinado de 6 parâmetros, e um candidato a mesclagem combinado gerado pela combinação de dois vetores-semente afins pode ser denominado como um candidato a mesclagem combinado de 4 parâmetros.
[00291] A ordem de combinação pode ser predefinida em um codificador e um decodificador. Alternativamente, a ordem de combinação pode ser determinada com base em pelo menos um dentre o tamanho, formato, formato de divisão ou modelo de movimento afim do bloco atual, a localização do bloco atual na unidade de árvore de conversão em código ou o POC da imagem de referência. Como exemplo, quando um modelo de movimento afim de 4 parâmetros é aplicado ao bloco atual, uma configuração pode ser feita de modo que exemplos de combinação para o candidato a mesclagem combinada de 4 parâmetros tenham prioridade mais alta do que exemplos de combinação para o candidato a mesclagem combinado de 6 parâmetros.
[00292] Embora o candidato a mesclagem combinado seja gerado na ordem de combinação, apenas um candidato a mesclagem gerado pela combinação de blocos vizinhos com a mesma imagem de referência pode ser determinado como estando disponível. Alternativamente, quando pelo menos um dos blocos vizinhos tem uma imagem de referência diferente, os vetores de movimento podem ser dimensionados em relação a uma imagem de referência com o maior índice ou uma imagem de referência com o menor índice para derivar o candidato a mesclagem. O dimensionamento pode ser realizado com base em uma diferença POC entre a imagem de referência e a imagem atual. Alternativamente, quando dois dos blocos vizinhos têm a mesma imagem de referência e o outro bloco vizinho tem uma imagem de referência diferente, o vetor de movimento do bloco vizinho com a imagem de referência diferente pode ser dimensionado em relação à imagem de referência aplicada em comum aos dois blocos vizinhos para derivar o candidato a mesclagem combinado.
[00293] O número de candidatos à mesclagem combinados adicionados à lista de candidatos à mesclagem pode ser determinado com base em pelo menos um dentre o número máximo de candidatos à mesclagem ou o número de candidatos à mesclagem incluídos previamente na lista de candidatos à mesclagem. Alternativamente, dependendo do modelo de movimento afim do bloco atual, apenas os candidatos a mesclagem combinados de 6 parâmetros podem ser adicionados à lista de candidatos a mesclagem, ou apenas os candidatos a mesclagem combinados de 4 parâmetros podem ser adicionados à lista de candidatos a mesclagem combinada.
[00294] Por exemplo, quando o número de candidatos a mesclagem combinados a serem adicionados à lista de candidatos a mesclagem é um e o modelo de movimento de 6 parâmetros é aplicado ao bloco atual, um candidato a mesclagem combinado de 6 parâmetros pode ser adicionado à lista de candidatos a mesclagem em uma ordem de combinação predefinida. Em detalhes, quando todos dentre o vetor-semente afim CP0, o vetor-semente afim CP1 e o vetor-semente afim CP2 estão disponíveis, o candidato a mesclagem combinado {vetor-semente afim CP0, vetor-semente afim CP1 e vetor-semente afim CP2} pode ser adicionado à lista de candidatos a mesclagem. Alternativamente, quando o vetor-semente afim CP2 não está disponível e o vetor-semente afim CP3 está disponível, o candidato a mesclagem combinado {vetor-semente afim CP0, vetor-semente afim CP1 e vetor-semente afim CP3} pode ser adicionado à lista de candidatos a mesclagem.
[00295] Alternativamente, quando o número de candidatos a mesclagem combinados a serem adicionados à lista de candidatos a mesclagem é um e o modelo de movimento de 6 parâmetros é aplicado ao bloco atual, um candidato a mesclagem combinado de 4 parâmetros pode ser adicionado à lista de candidatos a mesclagem em uma ordem de combinação predefinida.
[00296] Como outro exemplo, o número de candidatos a mesclagem combinados a serem adicionados à lista de candidatos a mesclagem pode ser definido de forma diferente dependendo do modelo de movimento afim do bloco atual. Como exemplo, quando o modelo de movimento de 6 parâmetros é aplicado ao bloco atual, um candidato a mesclagem combinado pode ser adicionado à lista de candidatos a mesclagem. Por outro lado, quando o modelo de movimento de 4 parâmetros é aplicado ao bloco atual, dois candidatos a mesclagem combinados podem ser adicionados à lista de candidatos a mesclagem.
[00297] Um candidato a mesclagem combinado a ser adicionado à lista de candidatos a mesclagem pode ser selecionado dependendo do número de candidatos afins disponíveis. Por exemplo, quando o número de candidatos a mesclagem afim disponíveis é dois ou mais, apenas os candidatos a mesclagem combinados de 4 parâmetros podem ser adicionados à lista de candidatos a mesclagem. Por outro lado, quando o número de candidatos a mesclagem afins disponíveis é um ou menos, apenas os candidatos a mesclagem combinados de 6 parâmetros podem ser adicionados à lista de candidatos a mesclagem. Alternativamente, quando o número de candidatos a mesclagem afins disponíveis é um ou menos, N candidatos a mesclagem combinados de 6 parâmetros e M candidatos a mesclagem combinados de 4 parâmetros podem ser adicionados à lista de candidatos a mesclagem. Aqui, N e M são números naturais, e M pode ser derivado com base no número máximo de candidatos a mesclagem menos N. Alternativamente, quando o número de candidatos a mesclagem afins disponíveis é um ou menos, apenas os candidatos a mesclagem combinados de 4 parâmetros podem ser adicionados à lista de candidatos a mesclagem.
[00298] Alternativamente, a ordem da combinação pode ser determinada com base na disponibilidade dos vetores- semente afins. Como exemplo, os candidatos a mesclagem combinados podem ser adicionados à lista de candidatos a mesclagem considerando a disponibilidade dos vetores-semente afins na seguinte ordem.
[00299] 1.Caso em que o vetor-semente afim CP0, o vetor-semente afim CP1 e o vetor-semente afim CP2 estão disponíveis
[00300] {vetor-semente afim CP0, vetor-semente afim CP1, vetor-semente afim CP2}
[00301] 2. Caso em que o vetor-semente afim CP0, o vetor-semente afim CP1 e o vetor-semente afim CP3 estão disponíveis
[00302] {vetor-semente afim CP0, vetor-semente afim CP1, vetor-semente afim CP3}
[00303] 3. Caso em que o vetor-semente afim CP0, o vetor-semente afim CP2 e o vetor-semente afim CP3 estão disponíveis
[00304] {vetor-semente afim CP0, vetor-semente afim CP2, vetor-semente afim CP3}
[00305] 4. Caso em que o vetor-semente afim CP0, o vetor-semente afim CP2 e o vetor-semente afim CP3 estão disponíveis
[00306] {vetor-semente afim CP1, vetor-semente afim CP2, vetor-semente afim CP3}
[00307] 5. Caso em que o vetor-semente afim CP0 e o vetor-semente afim CP1 estão disponíveis
[00308] {vetor-semente afim CP0, vetor-semente afim CP1}
[00309] 6. Caso em que o vetor-semente afim CP0 e o vetor-semente afim CP2 estão disponíveis
[00310] {vetor-semente afim CP0, vetor-semente afim CP2}
[00311] Quando o número de candidatos a mesclagem combinados a serem adicionados à lista de candidatos a mesclagem é um, um candidato a mesclagem combinado correspondente a uma condição que é satisfeita em primeiro lugar entre a primeira e a sexta condições pode ser adicionado à lista de candidatos a mesclagem. Quando nenhum dos candidatos do primeiro ao sexto for satisfeito, nenhum candidato à mesclagem combinado poderá ser adicionado à lista de candidatos à mesclagem.
[00312] Como outro exemplo, o número máximo de candidatos a mesclagem combinados a serem adicionados à lista de candidatos a mesclagem pode ser determinado dependendo do número de candidatos a mesclagem afins disponíveis.
[00313] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for menor do que o número máximo, um candidato a mesclagem zero, que tem um vetor de movimento 0, pode ser adicionado à lista de candidatos a mesclagem. Assim, o candidato a mesclagem pode ser derivado no modo de mesclagem afim na seguinte ordem.
[00314] 1. Derivação de Candidato a Mesclagem Afim
[00315] 2. Candidato a Mesclagem Combinado
[00316] 3. Candidato a Mesclagem Zero
[00317] Em seguida, o método de interpredição com o uso de informações de movimento de translação será descrito em detalhes abaixo.
[00318] As informações de movimento do bloco atual podem ser derivadas das informações de movimento de um bloco diferente do bloco atual. Aqui, o outro bloco pode ser um bloco que é codificado ou decodificado por meio de interpredição antes do bloco atual. A definição das informações de movimento do bloco atual como sendo iguais às informações de movimento do outro bloco pode ser definida como um modo de mesclagem. Além disso, a definição do vetor de movimento do outro bloco como um valor de predição do vetor de movimento do bloco atual pode ser definida como um modo de predição de vetor de movimento.
[00319] A Figura 24 é um fluxograma de um processo para derivar informações de movimento do bloco atual em um modo de mesclagem.
[00320] Um candidato a mesclagem do bloco atual pode ser derivado (S2401). O candidato a mesclagem do bloco atual pode ser derivado de um bloco que é codificado ou decodificado por interpredição antes do bloco atual.
[00321] Os blocos candidatos usados para derivar o bloco de mesclagem podem incluir blocos vizinhos que incluem uma amostra adjacente ao bloco atual. Como exemplo, quando as coordenadas da amostra superior esquerda do bloco atual são (0, 0), pelo menos um dentre um bloco que inclui uma amostra de referência localizada em (-1, H-1), um bloco que inclui uma referência amostra localizada em (W-1, -1), um bloco que inclui uma amostra de referência localizada em (W, -1), um bloco que inclui uma amostra de referência localizada em (-1, H) ou um bloco que inclui uma amostra de referência localizada em (-1, -1) pode ser usado como um bloco candidato.
[00322] Alternativamente, um bloco candidato que não pertence à mesma unidade de árvore de conversão em código que o bloco atual pode ser definido como indisponível como o candidato a mesclagem. Como exemplo, quando a amostra de referência se desvia da borda superior da unidade de árvore de conversão em código à qual o bloco atual pertence, o bloco candidato que inclui a amostra de referência pode ser definido como indisponível como um candidato a mesclagem.
[00323] Um candidato a mesclagem pode ser derivado de um bloco vizinho temporal incluído em uma imagem diferente daquela do bloco atual. Como exemplo, um candidato a mesclagem pode ser derivado de um bloco colocalizado incluído em uma imagem colocalizada. Uma imagem de referência incluída na lista de imagens de referência pode ser definida como a imagem colocalizada. As informações de índice para identificar a imagem colocalizada entre as imagens de referência podem ser sinalizadas em um fluxo de bits. Alternativamente, uma imagem de referência com um índice predefinido entre a imagem de referência pode ser determinada como a imagem colocalizada.
[00324] As informações de movimento do candidato a mesclagem podem ser definidas como as mesmas que as informações de movimento do bloco de candidato. Como exemplo, pelo menos um dentre o vetor de movimento, índice de imagem de referência, direção de predição ou índice de peso bidirecional do bloco candidato pode ser definido como as informações de movimento do candidato a mesclagem.
[00325] Uma lista de candidatos a mesclagem que inclui candidatos a mesclagem pode ser gerada (S2402).
[00326] Os índices podem ser atribuídos aos candidatos a mesclagem da lista de candidatos a mesclagem em uma ordem predeterminada. Como exemplo, os índices podem ser atribuídos sequencialmente a um candidato a mesclagem derivado do bloco vizinho esquerdo, um candidato a mesclagem derivado do bloco vizinho superior, um candidato a mesclagem derivado do bloco vizinho superior direito, um candidato a mesclagem derivado de bloco vizinho esquerdo, um candidato a mesclagem derivado do bloco vizinho superior esquerdo e um candidato a mesclagem derivado de um bloco vizinho temporal.
[00327] Quando uma pluralidade de candidatos a mesclagem é incluída no candidato a mesclagem, pelo menos um da pluralidade de candidatos a mesclagem pode ser selecionado
(S2403). Em detalhes, as informações para especificar um dentre a pluralidade de candidatos a mesclagem podem ser sinalizadas em um fluxo de bits. Como exemplo, as informações merge_idx, que indicam um índice de um dos candidatos a mesclagem incluídos na lista de candidatos a mesclagem, pode ser sinalizada em um fluxo de bits.
[00328] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é menor do que um valor limiar, um candidato a mesclagem incluído em uma tabela de informações de movimento inter-regiões pode ser adicionado à lista de candidatos a mesclagem. Aqui, o valor limiar pode ser o número máximo de candidatos a mesclagem que o candidato a mesclagem pode incluir ou um valor obtido subtraindo-se um deslocamento do número máximo de candidatos a mesclagem. O deslocamento pode ser um número natural, como 1 ou 2. A tabela de informações de movimento inter-regiões pode incluir um candidato a mesclagem derivado com base em um bloco que é codificado ou decodificado antes do bloco atual.
[00329] A tabela de informações de movimento inter-regiões inclui um candidato a mesclagem derivado de um bloco que é codificado ou decodificado com base na interpredição na imagem atual. Como exemplo, as informações de movimento do candidato a mesclagem incluídas na tabela de informações de movimento inter-regiões podem ser definidas como sendo as mesmas que as informações de movimento do bloco codificado ou decodificado com base na interprediçã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 predição ou um índice de peso bidirecional.
[00330] Por conveniência de descrição, o candidato a mesclagem incluído na tabela de informações de movimento inter-regiões será denominado como um candidato a mesclagem inter-regiões.
[00331] O número máximo de candidatos a mesclagem que podem ser incluídos na tabela de informações de movimento inter-regiões pode ser predefinido em um codificador e um decodificador. Como exemplo, o número máximo de candidatos a mesclagem que podem ser incluídos na tabela de informações de movimento inter-regiões pode ser 1, 2, 3, 4, 5, 6, 7, 8 ou mais (por exemplo, 16).
[00332] Alternativamente, as informações que indicam o número máximo de candidatos a mesclagem da tabela de informações de movimento inter-regiões podem ser sinalizadas em um fluxo de bits. As informações podem ser sinalizadas no nível de sequência, imagem ou fatia.
[00333] Alternativamente, o número máximo de candidatos a mesclagem da tabela de informações de movimento inter-regiões pode ser determinado dependendo do tamanho da imagem, do tamanho da fatia ou do tamanho da unidade de árvore de conversão em código.
[00334] A tabela de informações de movimento inter-regiões pode ser inicializada em unidades de imagens, fatias, tijolos, unidades de árvore de conversão em código ou linhas de unidade de árvore de conversão em código (linhas e colunas). Como exemplo, quando uma fatia é inicializada, a tabela de informações de movimento inter-regiões também é inicializada e pode não incluir nenhum candidato a mesclagem.
[00335] Alternativamente, as informações que indicam se deve-se inicializar a tabela de informações de movimento inter-regiões podem ser sinalizadas em um fluxo de bits. As informações podem ser sinalizadas no nível de fatia, recorte, tijolo ou bloco. Uma tabela de informações de movimento inter-regiões pré-configurada pode ser usada até que as informações indiquem a inicialização da tabela de informações de movimento inter-regiões.
[00336] Alternativamente, as informações relativas a um candidato inicial a mesclagem inter-regiões podem ser sinalizadas através de um conjunto de parâmetros de imagem ou um cabeçalho de fatia. Mesmo que uma fatia seja inicializada, a tabela de informações de movimento inter-regiões pode incluir o candidato a mesclagem inter-regiões inicial. Consequentemente, o candidato a mesclagem inter-regiões pode ser usado para um bloco que deve ser codificado ou decodificado primeiro na fatia.
[00337] Os blocos podem ser codificados ou decodificados em uma ordem de codificação ou decodificação, e os blocos codificados ou decodificados com base na interpredição podem ser definidos sequencialmente como os candidatos a mesclagem inter-regiões na ordem de codificação ou decodificação.
[00338] A Figura 25 é um diagrama para descrever um aspecto de atualização de uma tabela de informações de movimento inter-regiões.
[00339] Quando a interpredição é realizada no bloco atual (S2501), um candidato a mesclagem inter-regiões pode ser derivado com base no bloco atual (S2502). As informações de movimento do candidato a mesclagem inter- regiões podem ser definidas como sendo as mesmas que as informações de movimento do bloco atual.
[00340] Quando a tabela de informações de movimento inter-regiões está vazia (S2503), o candidato a mesclagem inter-regiões derivado com base no bloco atual pode ser adicionado à tabela de informações de movimento inter- regiões (S2504).
[00341] Quando a tabela de informações de movimento inter-regiões já inclui um candidato a mesclagem inter-regiões (S2503), uma verificação de redundância pode ser realizada nas informações de movimento do bloco atual (ou um candidato a mesclagem inter-regiões derivado com base nas informações de movimento) (S2505). A verificação de redundância é para determinar se as informações de movimento do bloco atual são as mesmas que as informações de movimento do candidato a mesclagem inter-regiões pré-armazenadas na tabela de informações de movimento inter-regiões. A verificação de redundância pode ser realizada em todos os candidatos a mesclagem inter-regiões pré-armazenados na tabela de informações de movimento inter-regiões. Alternativamente, a verificação de redundância pode ser realizada em candidatos a mesclagem inter-regiões com índices maiores ou iguais a um valor limiar ou índices menores ou iguais a um valor limiar entre os candidatos a mesclagem inter-regiões pré-armazenados na tabela de informações de movimento inter-regiões.
[00342] Quando nenhum candidato a mesclagem interpredição com as mesmas informações de movimento que o bloco atual é incluído, o candidato a mesclagem inter-regiões derivado com base no bloco atual pode ser adicionado à tabela de informações de movimento inter-regiões (S2508). Pode ser determinado se os candidatos a mesclagem de interpredição são idênticos com base em os candidatos a mesclagem de interpredição terem a mesmas informações de movimento (por exemplo, vetor de movimento e/ou índice de imagem de referência).
[00343] Nesse caso, quando um número máximo de candidatos a mesclagem inter-regiões é pré-armazenado na tabela de informações de movimento inter-regiões (S2506), o candidato a mesclagem inter-regiões mais antigo é excluído (S2507) e o candidato a mesclagem inter-regiões derivado da base do bloco atual pode ser adicionado à tabela de informações de movimento inter-regiões (S2508).
[00344] Os candidatos à mesclagem inter-regiões podem ser identificados por seus índices. Quando o candidato a mesclagem inter-regiões derivado do bloco atual é adicionado à tabela de informações de movimento inter-regiões, o índice mais baixo (por exemplo, 0) é atribuído ao candidato a mesclagem inter-regiões e os índices dos candidatos a mesclagem inter-regiões pré-armazenados podem ser aumentados em um. Nesse caso, quando um número máximo de candidatos a mesclagem interpredição é pré-armazenado na tabela de informações de movimento inter-regiões, o candidato a mesclagem inter-regiões com o maior índice é removido.
[00345] Alternativamente, quando o candidato a mesclagem inter-regiões derivado do bloco atual é adicionado à tabela de informações de movimento inter-regiões, o maior índice pode ser atribuído ao candidato a mesclagem inter- regiões. Como exemplo, quando o número de candidatos a mesclagem interpredição pré-armazenados na tabela de informações de movimento inter-regiões é menor do que o valor máximo, um índice com o mesmo valor que o número dos candidatos a mesclagem de interpredição pré-armazenados pode ser atribuído ao candidato à mesclagem inter-regiões.
Alternativamente, quando o número de candidatos a mesclagem interpredição pré-armazenados na tabela de informações de movimento inter-regiões é igual ao valor máximo, um índice com o valor máximo menos 1 pode ser atribuído ao candidato a mesclagem inter-regiões. Além disso, o candidato a mesclagem inter-regiões com o menor índice é removido e os índices dos outros candidatos a mesclagem inter-regiões pré-armazenados são diminuídos em 1.
[00346] A Figura 26 é um diagrama que mostra um aspecto de atualização de uma tabela de candidatos a mesclagem inter-regiões.
[00347] Uma vez que o candidato a mesclagem inter- regiões derivado do bloco atual é adicionado à tabela de candidatos a mesclagem inter-regiões, presume-se que o maior índice é atribuído ao candidato a mesclagem inter-regiões. Além disso, presume-se que um número máximo de candidatos a mesclagem inter-regiões é armazenado na tabela de candidatos a mesclagem inter-regiões.
[00348] Quando um candidato a mesclagem inter- regiões HmvpCand[n+1], que é derivado do bloco atual, é adicionado a uma tabela de candidatos a mesclagem inter-regiões HmvpCandList, um candidato a mesclagem inter-regiões HmvpCand[0], que tem o menor índice entre os candidatos a mesclagem inter-regiões pré-armazenados, pode ser excluído e os índices dos outros candidatos a mesclagem inter-regiões podem ser diminuídos em 1. Além disso, o índice do candidato a mesclagem inter-regiões HmvpCand[n+1], que é derivado do bloco atual, pode ser definido como o valor máximo (n no exemplo mostrado na Figura 26).
[00349] Quando um candidato a mesclagem inter-
regiões idêntico ao candidato a mesclagem inter-regiões derivado com base no bloco atual é pré-armazenado (S2505), o candidato a mesclagem inter-regiões derivado com base no bloco atual não pode ser adicionado à tabela de informações de movimento inter-regiões (S2509).
[00350] Alternativamente, enquanto o candidato a mesclagem inter-regiões derivado com base no bloco atual é adicionado à tabela de informações de movimento inter-regiões, um candidato a mesclagem inter-regiões pré-armazenado idêntico ao candidato a mesclagem inter-regiões pode ser removido. Isso causa o mesmo efeito que atualizar os índices dos candidatos a mesclagem inter-regiões pré-armazenados.
[00351] A Figura 27 é um diagrama que mostra um exemplo no qual um índice de um candidato a mesclagem inter- regiões pré-armazenado é atualizado.
[00352] Quando o índice do candidato a mesclagem interpredição pré-armazenado idêntico ao candidato a mesclagem inter-regiões mvCand, que é derivado com base no bloco atual, é hIdx, o candidato a mesclagem interpredição pré-armazenado pode ser excluído e os índices dos candidatos a mesclagem interpredição maiores que hIdx podem ser diminuídos em 1. Como exemplo, é mostrado na Figura 27 que HmvpCand[2], que é idêntico a mvCand, é excluído da tabela de informações de movimento inter-regiões HvmpCandList, e que os índices HmvpCand[3] a HmvpCand[n] são diminuídos em 1.
[00353] Além disso, o candidato a mesclagem inter- regiões mvCand, que é derivado com base no bloco atual, pode ser adicionado ao final da tabela de informações de movimento inter-regiões.
[00354] Alternativamente, o índice atribuído ao candidato a mesclagem inter-regiões pré-armazenado idêntico ao candidato a mesclagem inter-regiões derivado com base no bloco atual pode ser atualizado. Por exemplo, o índice do candidato a mesclagem inter-regiões pré-armazenado pode ser alterado para o valor mínimo ou o valor máximo.
[00355] Uma configuração pode ser feita de modo que as informações de movimento dos blocos incluídos em uma região predeterminada não sejam adicionadas à tabela de informações de movimento inter-regiões. Como exemplo, um candidato a mesclagem inter-regiões derivado com base nas informações de movimento de um bloco incluído em uma região de processamento de mesclagem não pode ser adicionado à tabela de informações de movimento inter-regiões. Uma vez que uma ordem de codificação ou decodificação não é definida para blocos incluídos na região de processamento de mesclagem, é inadequado usar as informações de movimento de um dos blocos para realizar a interpredição nos outros blocos. Consequentemente, os candidatos a mesclagem inter-regiões derivados com base nos blocos incluídos na região de processamento de mesclagem não podem ser adicionados à tabela de informações de movimento inter-regiões.
[00356] Quando a predição de compensação de movimento é realizada em unidades de sub-blocos, um candidato a mesclagem inter-regiões pode ser derivado com base nas informações de movimento de um sub-bloco representativo entre a pluralidade de sub-blocos incluídos no bloco atual. Como exemplo, quando um candidato a mesclagem de sub-bloco é usado para o bloco atual, um candidato a mesclagem inter-regiões pode ser derivado com base nas informações de movimento de um sub-bloco representativo entre os sub-blocos.
[00357] Os vetores de movimento dos sub-blocos podem ser derivados na seguinte ordem. Em primeiro lugar, um candidato a mesclagem pode ser selecionado entre os candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem do bloco atual 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 que tem uma amostra de referência localizada em (xColSb, yColSb) pode ser derivado adicionando-se o vetor de deslocamento inicial à localização (xSb, ySb) da amostra de referência (por exemplo, a amostra superior esquerda ou a amostra central) de cada sub-bloco no bloco de conversão em código. A Equação 20 abaixo indica uma equação para derivar o sub-bloco de deslocamento. [Equação 20]
[00358] Em seguida, o vetor de movimento do bloco colocalizado correspondente à posição central do sub-bloco que inclui (xColSb, yColSb) pode ser definido como o vetor de movimento do sub-bloco que inclui (xSb, ySb).
[00359] O sub-bloco representativo pode se referir a um sub-bloco que inclui a amostra superior esquerda ou a amostra central do bloco atual.
[00360] A Figura 28 é um diagrama que mostra a localização de um sub-bloco representativo.
[00361] A Figura 28A mostra um exemplo em que um sub-bloco localizado à esquerda e acima do bloco atual é definido como um sub-bloco representativo, e a Figura 28B mostra um exemplo em que um sub-bloco localizado no centro do bloco atual é definido como um sub-bloco representativo. Quando a predição de compensação de movimento é realizada em unidades de sub-blocos, o candidato a mesclagem inter-regiões do bloco atual pode ser derivado com base no vetor de movimento de um sub-bloco, que inclui a amostra superior esquerda do bloco atual ou um sub-bloco que inclui a amostra central do bloco atual.
[00362] Também pode ser determinado se o bloco atual deve ser usado como o candidato a mesclagem inter-regiões com base no modo de interpredição do bloco atual. Como exemplo, um bloco que é codificado ou decodificado com base no modelo de movimento afim pode ser definido como indisponível como um candidato a mesclagem inter-regiões. Por conseguinte, embora o bloco atual seja codificado ou decodificado por meio de interpredição, a tabela de informações de movimento de interpredição pode não ser atualizada com base no bloco atual quando o modo de interpredição do bloco atual é o modo de predição afim.
[00363] Alternativamente, o candidato a mesclagem inter-regiões pode ser derivado com base no vetor de sub-bloco de pelo menos um sub-bloco incluído no bloco que é codificado ou decodificado com base no modelo de movimento afim. Como exemplo, o candidato a mesclagem inter-regiões pode ser derivado com o uso de um sub-bloco localizado no canto superior esquerdo do bloco atual, um sub-bloco localizado no centro do bloco atual ou um sub-bloco localizado no canto superior direito do bloco atual. Alternativamente, a média dos vetores de sub-bloco da pluralidade de sub-blocos pode ser definida como o vetor de movimento do candidato a mesclagem inter- regiões.
[00364] Alternativamente, o candidato a mesclagem inter-regiões pode ser derivado com base na média dos vetores- semente afins do bloco que é codificado ou decodificado com base no modelo de movimento afim. Como exemplo, uma média de pelo menos um dentre o primeiro vetor-semente afim, o segundo vetor-semente afim ou o terceiro vetor-semente afim do bloco atual pode ser definido como o vetor de movimento do candidato a mesclagem inter-regiões.
[00365] Alternativamente, a tabela de informações de movimento inter-regiões pode ser configurada para cada modo de interpredição. Como exemplo, pelo menos uma dentre uma tabela de informações de movimento inter-regiões para um bloco codificado ou decodificado com uma cópia intrabloco, uma tabela de informações de movimento inter-regiões para um bloco codificado ou decodificado com base no modelo de movimento de translação ou uma tabela de informações de movimento inter- regiões para um bloco codificado ou decodificado com base no modelo de movimento afim pode ser definida. Uma dentre a pluralidade de tabelas de informações de movimento inter- regiões pode ser selecionada de acordo com o modo de interpredição do bloco atual.
[00366] A Figura 29 mostra um exemplo no qual uma tabela de informações de movimento inter-regiões é gerada para cada modo de interpredição.
[00367] Quando um bloco é codificado ou decodificado com base em um modelo de movimento não afim, um candidato a mesclagem inter-regiões mvCand, que é derivado com base no bloco, pode ser adicionado a uma tabela de informações de movimento não afim inter-regiões HmvpCandList. Por outro lado, quando um bloco é codificado ou decodificado com base em um modelo de movimento afim, um candidato a mesclagem inter-
regiões mvAfCand, que é derivado com base no bloco, pode ser adicionado a umas informações de movimento afim inter-regiões tabela HmvpAfCandList.
[00368] Os vetores-semente afins do bloco podem ser armazenados em um candidato a mesclagem inter-regiões derivado do bloco que é codificado ou decodificado com base no modelo de movimento afim. Por conseguinte, o candidato a mesclagem inter-regiões pode ser usado como um candidato a mesclagem para derivar o vetor-semente afim do bloco atual.
[00369] Uma tabela de informações de movimento inter-regiões adicional pode ser definida além da tabela de informações de movimento inter-regiões descrita acima. Além da tabela de informações de movimento inter-regiões descrita acima (doravante denominada como uma primeira tabela de informações de movimento inter-regiões), pode ser definida uma tabela de informações de movimento de longo prazo (doravante denominada como uma segunda tabela de informações de movimento inter-regiões). Aqui, a tabela de informações de movimento de longo prazo inclui candidatos a mesclagem de longo prazo.
[00370] Quando tanto a primeira tabela de informações de movimento inter-regiões quanto a segunda tabela de informações de movimento inter-regiões estão vazias, os candidatos a mesclagem inter-regiões podem ser adicionados preferencialmente à segunda tabela de informações de movimento inter-regiões. Até que o número de candidatos a mesclagem inter-regiões permitido para a segunda tabela de informações de movimento inter-regiões alcance o número máximo, os candidatos a mesclagem inter-regiões não podem ser adicionados à primeira tabela de informações de movimento inter-regiões.
[00371] Alternativamente, um candidato a mesclagem interpredição pode ser adicionado tanto à primeira tabela de informações de movimento inter-regiões quanto à segunda tabela de informações de movimento inter-regiões.
[00372] Nesse caso, a segunda tabela de informações de movimento inter-regiões, em que a configuração está concluída, não pode mais realizar uma atualização. Alternativamente, quando uma região decodificada é maior ou igual a uma proporção predeterminada de uma fatia, a segunda tabela de informações de movimento inter-regiões pode ser atualizada. Alternativamente, a segunda tabela de informações de movimento inter-regiões pode ser atualizada a cada N linhas de unidade de árvore de conversão em código.
[00373] Por outro lado, a primeira tabela de informações de movimento inter-regiões pode ser atualizada sempre que um bloco codificado ou decodificado por interpredição é gerado. No entanto, pode ser feita uma configuração de modo que os candidatos a mesclagem inter- regiões adicionados à segunda tabela de informações de movimento inter-regiões não sejam usados para atualizar a primeira tabela de informações de movimento inter-regiões.
[00374] As informações para selecionar uma dentre a primeira tabela de informações de movimento inter-regiões ou a segunda tabela de informações de movimento inter-regiões podem ser sinalizadas em 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 limiar, os candidatos a mesclagem incluídos na tabela de informações de movimento inter-regiões indicada pelas informações podem ser adicionados à lista de candidatos a mesclagem.
[00375] Alternativamente, uma tabela de informações de movimento inter-regiões pode ser selecionada com base no tamanho, formato ou modo de interpredição do bloco atual, na presença de predição bidirecional, na presença de refinamento do vetor de movimento ou na presença de divisão triangular.
[00376] Alternativamente, quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for menor do que o número máximo de mesclagem, mesmo que os candidatos a mesclagem inter-regiões incluídos na primeira tabela de informações de movimento inter-regiões sejam adicionados à lista de candidatos a mesclagem, os candidatos a mesclagem inter-regiões incluídos na segunda tabela de informações de movimento inter-regiões podem ser adicionados à lista de candidatos a mesclagem.
[00377] A Figura 30 é um diagrama que mostra um exemplo no qual um candidato a mesclagem inter-regiões incluído em uma tabela de informações de movimento de longo prazo é adicionado a uma lista de candidatos a mesclagem.
[00378] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é menor do que o número máximo, os candidatos a mesclagem inter-regiões incluídos na primeira tabela de informações de movimento inter- regiões HmvpCandList podem ser adicionados à lista de candidatos a mesclagem. Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é menor do que o número máximo, embora os candidatos a mesclagem inter- regiões incluídos na primeira tabela de informações de movimento inter-regiões sejam adicionados à lista de candidatos a mesclagem, os candidatos a mesclagem inter- regiões incluídos na tabela de informações de movimento de longo prazo HmvpLTCandList podem ser adicionados à lista de candidatos a mesclagem.
[00379] A Tabela 1 mostra um processo de adição de candidatos a mesclagem inter-regiões incluídos na tabela de informações de movimento de longo prazo à lista de candidatos a mesclagem. [TABELA 1] Para cada candidato em HMVPCandList com índice HMVPLTIdx =
1..numHMVPLTCand, as seguintes etapas ordenadas são repetidas até combStop ser igual a verdadeiro - sameMotion é definido como FALSO - Se hmvpStop for igual a FALSO e numCurrMergecand for menor do que (MaxNumMergeCand-1), hmvpLT é definido como
VERDADEIRO - Se HMVPLTCandList [NumLTHmvp-HMVPLTIdx] tiver os mesmos vetores de movimento e os mesmos índices de referência com qualquer mergeCandList[i] com I sendo 0.. numOrigMergeCand-1 e HasBeenPruned[i] igual a falso, sameMotion é definido como verdadeiro - Se sameMotion for igual a falso, mergeCandList[numCurrMergeCand++] é definido como HMVPLTCandList [NumLTHmvp-HMVPLTIdx] - Se numCurrMergeCand for igual a (MaxNumMergeCand-1), hmvpLTStop é definido como VERDADEIRO
[00380] Uma configuração pode ser feita de modo que o candidato a mesclagem inter-regiões inclua informações adicionais, bem como as informações de movimento. Como exemplo, as informações de tamanho, formato ou partição de um bloco podem ser armazenadas adicionalmente para o candidato a mesclagem inter-regiões. Ao configurar a lista de candidatos a mesclagem do bloco atual, apenas os candidatos a mesclagem de interpredição que tem informações de tamanho, formato ou partição iguais ou semelhantes ao bloco atual entre os candidatos a mesclagem de interpredição podem ser usados, ou os candidatos a mesclagem de interpredição com informações de tamanho, formato ou partição iguais ou semelhantes ao bloco atual podem ser preferencialmente adicionados à lista de candidatos a mesclagem.
[00381] Alternativamente, a tabela de informações de movimento inter-regiões pode ser gerada para cada informação de tamanho, formato ou parte de partição do bloco. A lista de candidatos a mesclagem do bloco atual pode ser gerada com o uso de uma tabela de informações de movimento inter-regiões que corresponde às informações de formato, tamanho ou partição do bloco atual entre uma pluralidade de tabelas de informações de movimento inter-regiões.
[00382] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual é menor do que um valor limiar, o candidato a mesclagem inter- regiões incluído na tabela de informações de movimento inter- regiões pode ser adicionado à lista de candidatos a mesclagem. O processo de adição pode ser em ordem crescente ou decrescente com base em índices. Como exemplo, um candidato a mesclagem inter-regiões com o maior índice pode ser adicionado preferencialmente à lista de candidatos a mesclagem.
[00383] Quando o candidato a mesclagem inter- regiões incluído na tabela de informações de movimento inter- regiões deve ser adicionado à lista de candidatos a mesclagem, uma verificação de redundância pode ser realizada no candidato a mesclagem inter-regiões em relação aos candidatos a mesclagem inseridos na lista de candidatos a mesclagem.
[00384] Como exemplo, a Tabela 2 mostra um processo de adição de um candidato a mesclagem inter-regiões à lista de candidatos a mesclagem. [TABELA 2] Para cada candidato em HMVPCandList com índice HMVPIdx = 1.. numCheckedHMVPCand, as seguintes etapas ordenadas são repetidas até que combStop seja igual a verdadeiro - sameMotion é definido como falso - Se HMVPCandList[NumHmvp-HMVPIdx] tiver os mesmos vetores de movimento e os mesmos índices de referência com qualquer mergeCandList[i] com I sendo 0.. numOrigMergeCand-1 e HasBeenPruned[i] igual a falso, sameMotion é definido como verdadeiro - Se sameMotion for igual a falso, mergeCandList[numCurrMergeCand++] é definido como HMVPCandList[NumHmvp-HMVPIdx] - Se numCurrMergeCand for igual a (MaxNumMergeCand-1), hmvpStop é definido como VERDADEIRO
[00385] A verificação de redundância pode ser realizada em apenas alguns dos candidatos a mesclagem inter- regiões incluídos na tabela de informações de movimento inter- regiões. Como exemplo, a verificação de redundância pode ser realizada apenas em candidatos a mesclagem inter-regiões com índices maiores ou iguais ao valor de limiar ou índices menores ou iguais ao valor de limiar. Alternativamente, a verificação de redundância pode ser realizada em apenas N candidatos a mesclagem que têm os maiores índices ou que têm os menores índices.
[00386] Alternativamente, a verificação de redundância pode ser realizada em apenas alguns dos candidatos a mesclagem inseridos na lista de candidatos a mesclagem. Como exemplo, a verificação de redundância pode ser realizada em apenas um candidato a mesclagem com um índice maior ou igual ao valor limiar ou um índice menor ou igual ao valor limiar ou um candidato a mesclagem derivado de um bloco em uma localização específica. Aqui, a localização específica pode incluir pelo menos um dentre o bloco vizinho esquerdo, o bloco vizinho superior, o bloco vizinho superior direito ou o bloco vizinho inferior esquerdo do bloco atual.
[00387] A Figura 31 é um diagrama que mostra um exemplo no qual uma verificação de redundância é executada em apenas alguns candidatos a mesclagem.
[00388] Quando um candidato a mesclagem inter- regiões HmvpCand[j] deve ser adicionado à lista de candidatos a mesclagem, uma verificação de redundância pode ser realizada no candidato a mesclagem inter-regiões em relação a dois candidatos a mesclagem mergeCandList[NumMerge-2] e mergeCandList[NumMerge -1], que possuem os maiores índices. Aqui, NumMerge pode representar o número de candidatos a mesclagem espacial e candidatos a mesclagem temporal disponíveis.
[00389] Diferente do exemplo mostrado, quando o candidato a mesclagem inter-regiões HmvpCand[j] deve ser adicionado à lista de candidatos a mesclagem, a verificação de redundância pode ser realizada no candidato a mesclagem inter- regiões em relação a pelo menos dois candidatos a mesclagem que têm os menores índices. Por exemplo, pode ser verificado se mergeCandList[0] e mergeCandList[1] são idênticos a HmvpCand[j]. Alternativamente, a verificação de redundância pode ser realizada em apenas um candidato a mesclagem derivado em uma localização específica. Como exemplo, a verificação de redundância pode ser realizada em pelo menos um dentre um candidato a mesclagem derivado de um bloco próximo localizado à esquerda do bloco atual ou um candidato a mesclagem derivado de um bloco próximo localizado acima do bloco atual. Quando nenhum candidato a mesclagem derivado em uma localização específica está presente na lista de candidatos a mesclagem, os candidatos a mesclagem inter-regiões podem ser adicionados à lista de candidatos a mesclagem sem uma verificação de redundância.
[00390] Quando um candidato a mesclagem idêntico ao primeiro candidato a mesclagem inter-regiões é encontrado, a verificação de redundância no candidato a mesclagem idêntico ao primeiro candidato a mesclagem inter-regiões pode ser omitida enquanto a verificação de redundância é realizada no segundo candidato a mesclagem inter-regiões.
[00391] A Figura 32 é um diagrama que mostra um exemplo no qual uma verificação de redundância em um candidato a mesclagem específico é omitida.
[00392] Quando um candidato a mesclagem inter- regiões HmvpCand[i] com um índice de i deve ser adicionado à lista de candidatos a mesclagem, pode ser realizada uma verificação de redundância entre o candidato a mesclagem inter- regiões e os candidatos a mesclagem pré-armazenados na lista de candidatos a mesclagem. Nesse caso, quando um candidato a mesclagem mergeCandList[j] idêntico ao candidato a mesclagem inter-regiões HmvpCand[i] é encontrado, o candidato a mesclagem inter-regiões HmvpCand[i] não pode ser adicionado à lista de candidatos a mesclagem, e pode ser realizada uma verificação de redundância entre um candidato a mesclagem inter-regiões HmvpCand[i-1], que tem um índice de i-1, e os candidatos a mesclagem. Nesse caso, uma verificação de redundância entre o candidato a mesclagem inter-regiões HmvpCand[i-1] e o candidato a mesclagem mergeCandList[j] pode ser omitida.
[00393] Por exemplo, no exemplo mostrado na Figura 32, é determinado que HmvpCand[i] e mergeCandList[2] são idênticos um ao outro. Consequentemente, HmvpCand[i] não pode ser adicionado à lista de candidatos a mesclagem e uma verificação de redundância pode ser realizada em HmvpCand[i- 1]. Nesse caso, uma verificação de redundância entre HvmpCand[i-1] e mergeCandList[2] pode ser omitida.
[00394] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual é menor do que um valor limiar, pelo menos um dentre um candidato a mesclagem em par ou um candidato a mesclagem zero pode ser incluído adicionalmente ao candidato a mesclagem inter- regiões. O candidato a mesclagem par a par se refere a um candidato a mesclagem com um vetor de movimento igual à média dos vetores de movimento de dois ou mais candidatos a mesclagem, e um candidato a mesclagem zero se refere a um candidato a mesclagem com um vetor de movimento 0.
[00395] Um candidato a mesclagem pode ser adicionado à lista de candidatos a mesclagem do bloco atual na seguinte ordem.
[00396] Candidato a mesclagem espacial - Candidato a mesclagem temporal - Candidato a mesclagem inter-regiões -
(Candidato a mesclagem afim inter-regiões) - Candidato a mesclagem em par - Candidato a mesclagem zero.
[00397] O candidato a mesclagem espacial se refere a um candidato a mesclagem derivado de pelo menos um dentre um bloco vizinho ou um bloco não vizinho, e o candidato a mesclagem temporal se refere a um candidato a mesclagem derivado de uma imagem de referência anterior. O candidato a mesclagem inter-regiões se refere a um candidato a mesclagem inter-regiões derivado de um bloco codificado ou decodificado por um modelo de movimento afim.
[00398] A tabela de informações de movimento inter-regiões pode ser usada mesmo no modo de predição de vetor de movimento. Como exemplo, quando o número de candidatos a predição de vetor de movimento incluídos na lista de candidatos a predição de vetor de movimento do bloco atual é menor do que um valor limiar, o candidato a mesclagem inter-regiões incluído na tabela de informações de movimento inter-regiões pode ser definido como o candidato a predição de vetor de movimento para o bloco atual. Em detalhes, o vetor de movimento do candidato a mesclagem inter-regiões pode ser definido como o candidato a predição de vetor de movimento.
[00399] Quando um dos candidatos a predição de vetor de movimento incluídos na lista de candidatos a predição de vetor de movimento do bloco atual é selecionado, o candidato selecionado pode ser definido como um preditor de vetor de movimento do bloco atual. Subsequentemente, o vetor de movimento do bloco atual pode ser adquirido pela decodificação de um valor residual do vetor de movimento do bloco atual e, em seguida, adição do preditor de vetor de movimento e do valor residual do vetor de movimento.
[00400] A lista de candidatos a predição de vetor de movimento do bloco atual pode ser configurada na seguinte ordem.
[00401] Candidato a predição de vetor de movimento espacial - Candidato a predição de vetor de movimento temporal - Candidato a mesclagem inter-regiões de decodificação - (Candidato a mesclagem afim inter-regiões de decodificação) - Candidato a predição de vetores de movimento zero
[00402] O candidato a predição de vetor de movimento espacial se refere a um candidato a predição de vetor de movimento derivado de pelo menos um dentre um bloco vizinho ou um bloco não vizinho, e o candidato a predição de vetor de movimento temporal se refere a um candidato a predição de vetor de movimento derivado de uma imagem de referência anterior. O candidato a mesclagem afim inter-regiões se refere a um candidato a predição de vetor de movimento inter-regiões derivado de um bloco codificado ou decodificado por um modelo de movimento afim. O candidato a predição de vetor de movimento zero representa um candidato com um vetor de movimento de 0.
[00403] Um bloco de conversão em código pode ser dividido em uma pluralidade de unidades de predição e as unidades de predição podem ser submetidas à predição. Aqui, a unidade de predição indica uma unidade básica para realizar a predição.
[00404] Um bloco de conversão em código pode ser dividido com o uso de pelo menos uma dentre uma linha vertical, uma linha horizontal, uma linha oblíqua ou uma linha diagonal. As informações para determinar pelo menos um dentre o número, ângulos ou localizações de linhas que dividem o bloco de conversão em código podem ser sinalizadas em um fluxo de bits.
Como exemplo, as informações que indicam um dentre uma pluralidade de candidatos de tipo de partição do bloco de conversão em código podem ser sinalizadas em um fluxo de bits, ou as informações que especificam um dentre uma pluralidade de candidatos de linha que separam o bloco de conversão em código podem ser sinalizadas em um fluxo de bits. Alternativamente, as informações para determinar o número ou tipos de linhas candidatas que dividem o bloco de conversão em código podem ser sinalizadas em um fluxo de bits. Como exemplo, pode ser determinado se deve-se usar uma linha oblíqua com um ângulo maior do que a linha diagonal e/ou uma linha oblíqua com um ângulo menor do que a linha diagonal como um candidato de linha com o uso de um sinalizador de 1 bit.
[00405] Alternativamente, pelo menos um dentre o número, ângulos ou localizações de linhas que dividem o bloco de conversão em código pode ser determinado de forma adaptativa com base em pelo menos um dentre um modo de interpredição do bloco de conversão em código, um modo de interpredição, a localização de um candidato a mesclagem disponível ou um aspecto de divisão de um bloco vizinho.
[00406] Quando um bloco de conversão em código é separado em uma pluralidade de unidades de predição, intrapredição ou interpredição pode ser realizada nas unidades de predição.
[00407] A Figura 33 é um diagrama que mostra um exemplo de divisão de um bloco de conversão em código em uma pluralidade de unidades de predição com o uso de uma linha diagonal.
[00408] Como nos exemplos mostrados nas Figuras 33A e 33B, um bloco de conversão em código pode ser dividido em duas unidades de predição triangulares com o uso de uma linha diagonal.
[00409] As Figuras 33A e 33B mostram que um bloco de conversão em código é dividido em duas unidades de predição com o uso de uma linha diagonal conectando dois vértices do bloco de conversão em código. No entanto, um bloco de conversão em código pode ser separado em duas unidades de predição com o uso de uma linha oblíqua que tem pelo menos uma extremidade que não passa por um vértice do bloco de conversão em código.
[00410] A Figura 34 é um diagrama que mostra um exemplo de divisão de um bloco de conversão em código em duas unidades de predição.
[00411] Como nos exemplos mostrados nas Figuras 34A e 34B, um bloco de conversão em código pode ser separado em duas unidades de predição com o uso de uma linha oblíqua com ambas as extremidades contíguas à borda superior e à borda inferior do bloco de conversão em código.
[00412] Alternativamente, como nos exemplos mostrados nas Figuras 34C e 34D, um bloco de conversão em código pode ser separado em duas unidades de predição com o uso de uma linha oblíqua com ambas as extremidades contíguas à borda esquerda e à borda direita do bloco de conversão em código.
[00413] Alternativamente, um bloco de conversão em código pode ser separado em dois blocos de predição de tamanhos diferentes. Como exemplo, definindo-se uma linha oblíqua que divide o bloco de conversão em código como sendo contígua a duas bordas que formam um vértice, o bloco de conversão em código pode ser separado em duas unidades de predição de tamanhos diferentes.
[00414] A Figura 35 mostra exemplos nos quais um bloco de conversão em código é separado em uma pluralidade de blocos de predição de tamanhos diferentes.
[00415] Como nos exemplos mostrados nas Figuras 35A e 35B, definindo-se uma linha diagonal que conecta uma porção superior esquerda e uma porção inferior direita do bloco de conversão em código para passar pela borda esquerda, borda direita, borda superior ou borda inferior do bloco de conversão em código em vez de passar através do canto superior esquerdo ou do canto inferior direito do bloco de conversão em código, o bloco de conversão em código pode ser dividido em duas unidades de predição de tamanhos diferentes.
[00416] Alternativamente, como nos exemplos mostrados nas Figuras 35C e 35D, definindo-se uma linha diagonal que conecta uma porção superior direita e uma porção inferior esquerda do bloco de conversão em código para passar pela borda esquerda, borda direita, borda superior ou borda inferior do bloco de conversão em código em vez de passar através do canto superior esquerdo ou do canto inferior direito do bloco de conversão em código, o bloco de conversão em código pode ser dividido em duas unidades de predição de tamanhos diferentes.
[00417] Cada uma das unidades de predição geradas pela divisão do bloco de conversão em código é denominada como uma "N-ésima unidade de predição". Como exemplo, nos exemplos mostrados nas Figuras 33 a 35, PU1 pode ser definido como uma primeira unidade de predição e PU2 pode ser definido como uma segunda unidade de predição. A primeira unidade de predição pode se referir a uma unidade de predição que inclui uma amostra localizada em uma porção inferior esquerda do bloco de conversão em código ou uma amostra localizada em uma porção superior esquerda do bloco de conversão em código, e a segunda unidade de predição pode se referir a uma unidade de predição que inclui uma amostra localizada em uma porção superior direita do bloco de conversão em código ou uma amostra localizada em uma porção inferior direita do bloco de conversão em código.
[00418] Em contrapartida, uma unidade de predição que inclui uma amostra localizada em uma porção superior direita do bloco de conversão em código ou uma amostra localizada em uma porção inferior direita do bloco de conversão em código pode ser definida como a primeira unidade de predição e uma unidade de predição que inclui uma amostra localizada em uma porção inferior esquerda do bloco de conversão em código ou uma amostra localizada em uma porção superior esquerda do bloco de conversão em código pode ser definida como a segunda unidade de predição.
[00419] As modalidades que se seguem serão descritas, com foco em um exemplo de divisão com o uso de uma linha diagonal. Em particular, dividir um bloco de conversão em código em duas unidades de predição com o uso de uma linha diagonal é denominado como divisão diagonal ou divisão triangular, e uma unidade de predição gerada com base na divisão diagonal é denominada como unidade de predição triangular. No entanto, será reconhecido que as modalidades que se seguem podem ser aplicadas até mesmo a um exemplo de divisão com o uso de uma linha oblíqua com um ângulo diferente daquele de uma linha vertical, uma linha horizontal ou uma linha diagonal.
[00420] Pode ser determinado se deve-se aplicar divisão diagonal ao bloco de conversão em código 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 conversão em código, o formato do bloco de conversão em código, o modo de conversão em código preditiva do bloco de conversão em código ou o aspecto de divisão do nó pai.
[00421] Como exemplo, pode ser determinado se deve-se aplicar divisão diagonal ao bloco de conversão em código com base no fato de a fatia atual ser do tipo B. A divisão diagonal pode ser permitida apenas quando a fatia atual for do tipo B.
[00422] Alternativamente, pode ser determinado se deve-se aplicar divisão diagonal ao bloco de conversão em código com base no fato de o número máximo de candidatos à mesclagem incluídos na lista de candidatos à mesclagem ser dois ou mais. A divisão diagonal pode ser permitida apenas quando o número máximo de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for dois ou mais.
[00423] Alternativamente, quando pelo menos uma dentre a largura ou altura for maior do que 64 na implantação de hardware, desvantajosamente, uma unidade de processamento de dados que tem um tamanho de 64×64 é acessada de forma redundante. Consequentemente, quando pelo menos uma dentre a largura ou altura do bloco de conversão em código for maior do que um valor limiar, o bloco de conversão em código não pode ser separado em uma pluralidade de blocos de predição. Como exemplo, quando pelo menos uma dentre a altura ou largura do bloco de conversão em código for maior do que 64, a divisão diagonal não pode ser usada.
[00424] Alternativamente, pode ser determinado se deve-se aplicar divisão diagonal ao bloco de conversão em código com base em pelo menos um dentre o número de amostras incluídas no bloco de conversão em código ser menor ou igual a um primeiro valor limiar ou o número de amostras incluídas em o bloco de conversão em código ser maior ou igual a um segundo valor limiar. Como exemplo, quando o número de amostras incluídas no bloco de conversão em código é menor ou igual ao primeiro valor limiar ou quando o número de amostras incluídas no bloco de conversão em código é maior ou igual ao segundo valor limiar, pode ser feita uma configuração de modo que a divisão diagonal não seja aplicada ao bloco de conversão em código. Alternativamente, pode ser determinado se deve-se aplicar divisão diagonal ao bloco de conversão em código com base em uma razão entre largura e altura do bloco de conversão em código ser menor do que o primeiro valor de limiar ou uma razão entre largura e altura do bloco de conversão em código ser maior do que o segundo valor limiar. Aqui, uma razão entre largura e altura whRatio do bloco de conversão em código pode ser determinada como uma razão entre uma largura CbW e uma altura CbH do bloco de conversão em código, como mostrado na Equação 21 abaixo. [Equação 21]
[00425] O segundo valor limiar pode ser um número inverso do primeiro valor limiar. Como exemplo, quando o primeiro valor limiar é k, o segundo valor limiar pode ser 1/k.
[00426] Divisão diagonal pode ser aplicada ao bloco de conversão em código apenas quando a razão entre largura e altura do bloco de conversão em código está presente entre o primeiro valor limiar e o segundo valor limiar.
[00427] Alternativamente, a divisão triangular pode ser usada apenas quando a razão entre largura e altura do bloco de conversão em código for menor do que o primeiro valor limiar ou maior do que o segundo valor limiar. Como exemplo, quando o primeiro valor limiar é 16, divisão diagonal não pode ser permitida para um bloco de conversão em código com um tamanho de 64×4 ou 4×64.
[00428] Alternativamente, pode ser determinado se deve-se permitir divisão diagonal com base no aspecto de divisão do nó pai. Como exemplo, quando um bloco de conversão em código, que é um nó pai, é dividido com base na partição de árvore quadrática, divisão diagonal pode ser aplicada a um bloco de conversão em código que é um nó folha. Por outro lado, quando um bloco de conversão em código, que é um nó pai, é dividido com base na partição de árvore binária ou partição de árvore ternária, pode ser feita uma configuração de modo que divisão diagonal não seja permitida para um bloco de conversão em código que é um nó folha.
[00429] Alternativamente, pode ser determinado se deve-se permitir divisão diagonal com base no modo de conversão em código preditiva do bloco de conversão em código. Como exemplo, divisão diagonal pode ser permitida apenas quando o bloco de conversão em código é codificado por intrapredição, quando o bloco de conversão em código é codificado por interpredição ou quando o bloco de conversão em código é codificado em um modo de interpredição predefinido. Aqui, o modo de interpredição definido pode indicar pelo menos um dentre um modo de mesclagem, um modo de predição de vetor de movimento, um modo de mesclagem afim ou um modo de predição de vetor de movimento afim.
[00430] Alternativamente, pode ser determinado se deve-se permitir divisão diagonal com base no tamanho de uma região de processamento paralelo. Por exemplo, quando o tamanho do bloco de conversão em código é maior do que o tamanho da região de processamento paralelo, divisão diagonal não pode ser usada.
[00431] Pode ser determinado se deve-se permitir aplicar divisão diagonal ao bloco de conversão em código considerando duas ou mais das condições listadas acima.
[00432] Além disso, as informações que indicam se deve-se permitir divisão diagonal podem ser sinalizadas em um fluxo de bits. As informações podem ser sinalizadas no nível de sequência, imagem, fatia ou bloco. As informações indicam que a divisão diagonal é permitida, e divisão diagonal pode ser aplicada ao bloco de conversão em código somente quando pelo menos uma das condições listadas acima for satisfeita.
[00433] Quando é determinado aplicar a divisão diagonal ao bloco de conversão em código, as informações que indicam o número ou as localizações das linhas que dividem o bloco de conversão em código podem ser sinalizadas em um fluxo de bits.
[00434] Por exemplo, quando o bloco de conversão em código é dividido por uma linha diagonal, as informações que indicam a direção da linha diagonal que divide o bloco de conversão em código podem ser sinalizadas em um fluxo de bits. Como exemplo, um sinalizador triangle_partition_type_flag, que indica a direção da linha diagonal, pode ser sinalizado em um fluxo de bits. O sinalizador indica se o bloco de conversão em código é separado por uma linha diagonal que conecta uma parte superior esquerda e uma parte inferior direita ou por uma linha diagonal que conecta uma parte superior direita e uma parte inferior esquerda. A divisão do bloco de conversão em código pela linha diagonal que que conecta a porção superior esquerda e a porção inferior direita pode ser denominada como um tipo de partição triangular esquerda e a divisão do bloco de conversão em código pela linha diagonal que que conecta a porção superior direita e a porção inferior esquerda pode ser denominada como um tipo de partição triangular direita. Como exemplo, o sinalizador que tem um valor de 0 pode indicar que o tipo de partição do bloco de conversão em código é do tipo de partição triangular esquerda e o sinalizador que tem um valor de 1 pode indicar que o tipo de partição do bloco de conversão em código é do tipo de partição triangular direita.
[00435] As informações que indicam o tipo de partição do bloco de conversão em código podem ser sinalizadas no nível do bloco de conversão em código. Consequentemente, o tipo de partição pode ser determinado para cada bloco de conversão em código ao qual a divisão diagonal é aplicada.
[00436] Como outro exemplo, podem ser sinalizadas informações que indicam um tipo de partição para uma sequência, imagem, fatia, recorte ou unidade de árvore de conversão em código. Nesse caso, o tipo de partição de blocos de conversão em código aos quais a divisão diagonal é aplicada pode ser definido de forma idêntica na sequência, imagem, fatia, recorte ou unidade de árvore de conversão em código.
[00437] Alternativamente, as informações para determinar o tipo de partição da primeira unidade de conversão em código à qual a divisão diagonal deve ser aplicada na unidade de árvore de conversão em código podem ser codificadas e sinalizadas, e uma configuração pode ser feita de modo que a segunda e as unidades de codificação posteriores, às quais a divisão diagonal deve ser aplicada, usem o mesmo tipo de partição da primeira unidade de conversão em código.
[00438] Como outro exemplo, o tipo de partição do bloco de conversão em código pode ser determinado com base no tipo de partição 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 conversão em código, um bloco vizinho adjacente ao canto superior direito do bloco de conversão em código, um bloco vizinho adjacente ao canto inferior esquerdo do bloco de conversão em código, um bloco vizinho localizado acima do bloco de conversão em código ou um bloco vizinho localizado à esquerda do bloco de conversão em código. Como exemplo, o tipo de partição do bloco atual pode ser definido como sendo o mesmo que o tipo de partição do bloco vizinho. Alternativamente, o tipo de partição do bloco atual pode ser determinado com base em se o tipo de partição triangular esquerda é aplicado ao bloco vizinho superior esquerdo ou se o tipo de partição triangular direita é aplicado ao bloco vizinho superior direito ou ao bloco vizinho inferior esquerdo.
[00439] A fim de realizar a compensação de predição de movimento para uma primeira unidade de predição triangular e uma segunda unidade de predição triangular, as informações de movimento de cada uma dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular pode ser derivada. Nesse caso, as informações de movimento da primeira unidade de predição triangular e da segunda unidade de predição triangular podem ser derivadas dos candidatos a mesclagem incluídos na lista de candidatos a mesclagem. Para distinguir uma lista de candidatos a mesclagem geral de uma lista de candidatos a mesclagem usada para derivar as informações de movimento de unidades de predição triangulares, uma lista de candidatos a mesclagem para derivar as informações de movimento de unidades de predição triangulares é denominada como uma lista de candidatos a mesclagem triangular e um candidato a mesclagem incluído na lista de candidatos a mesclagem triangular é denominado como um candidato a mesclagem triangular. No entanto, o uso do método de derivação de candidatos a mesclagem descrito acima e método de configuração de lista de candidatos a mesclagem para um método de configuração de candidatos a mesclagem triangular e uma lista de candidatos a mesclagem triangular também está incluído no espírito da presente invenção.
[00440] 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 em um fluxo. 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.
[00441] Os candidatos a mesclagem triangular podem ser derivados de blocos vizinhos espaciais e blocos vizinhos temporais do bloco de conversão em código.
[00442] A Figura 36 é um diagrama que mostra blocos vizinhos usados para derivar um candidato a mesclagem triangular.
[00443] O candidato a mesclagem triangular pode ser derivado com o uso de pelo menos um dentre um bloco vizinho localizado acima do bloco de conversão em código, um bloco vizinho localizado à esquerda do bloco de conversão em código ou um bloco colocalizado incluído em uma imagem diferente daquela do bloco de conversão em código. O bloco vizinho superior pode incluir pelo menos um dentre um bloco que inclui uma amostra (xCb+CbW-1, yCb-1) localizada acima do bloco de conversão em código, um bloco que inclui uma amostra (xCb+CbW, yCb-1) localizada acima do bloco de conversão em código e um bloco que inclui uma amostra (xCb-1, yCb-1) localizada acima do bloco de conversão em código. O bloco vizinho à esquerda pode incluir pelo menos um dentre um bloco que inclui uma amostra (xCb-1, yCb+CbH-1) localizada à esquerda do bloco de conversão em código ou um bloco que inclui uma amostra (xCb- 1, yCb+CbH) localizada à esquerda do bloco de conversão em código. O bloco colocalizado pode ser determinado por um dentre um bloco que inclui uma amostra (xCb+CbW, yCb+CbH) adjacente ao canto superior direito do bloco de conversão em código em uma imagem colocalizada ou um bloco que inclui uma amostra (xCb/2, yCb/2) localizado no centro do bloco de conversão em código na imagem colocalizada.
[00444] Os blocos vizinhos podem ser descobertos em uma ordem predefinida e os candidatos à mesclagem triangular podem formar a lista de candidatos à mesclagem triangular na ordem predefinida. Como exemplo, os candidatos à mesclagem triangular podem ser descobertos na ordem de B1, A1, B0, A0, C0, B2 e C1 para formar a lista de candidatos à mesclagem triangular.
[00445] As informações de movimento das unidades de predição triangulares podem ser derivadas com base na lista de candidatos a mesclagem triangular. Ou seja, as unidades de predição triangulares podem compartilhar uma lista de candidatos a mesclagem triangular.
[00446] As informações para especificar pelo menos um dos candidatos a mesclagem triangular incluídos na lista de candidatos a mesclagem triangular podem ser sinalizadas em um fluxo de bits a fim de derivar as informações de movimento da unidade de mesclagem triangular. Como exemplo, as informações de índice merge_triangle_idx, que servem para especificar pelo menos um dos candidatos a mesclagem triangular, podem ser sinalizadas em um fluxo de bits.
[00447] As informações de índice podem especificar uma combinação do candidato a mesclagem da primeira unidade de predição triangular e o candidato a mesclagem da segunda unidade de predição triangular. Como exemplo, a Tabela 3 representa combinações de candidatos a mesclagem correspondentes às informações de índice merge_triangle_idx. [TABELA 3] merge_triangle_idx 0 1 2 3 4 5 6 7 8 Primeira unidade 1 0 0 0 2 0 0 1 3 de predição Segunda unidade de 0 1 2 1 0 3 4 0 0 prediçã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 predição Segunda unidade de 0 2 2 2 4 3 3 4 4 prediçã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 predição triangular Segunda unidade de 3 1 0 1 3 0 2 4 0 prediçã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 predição triangular Segunda unidade de 1 3 1 1 3 2 2 3 1 predição triangular merge_triangle_idx 36 37 38 39 Primeira unidade 2 2 4 3 de predição triangular Segunda unidade de 4 4 2 4 predição triangular
[00448] As informações de índice merge_triangle_idx que têm um valor de 1 representam que as informações de movimento da primeira unidade de predição triangular são derivadas de um candidato a mesclagem com um índice de 1 e que as informações de movimento da segunda unidade de predição triangular são derivadas de um candidato a mesclagem com um índice de 0. Através das informações de índice merge_triangle_idx, podem ser determinados um candidato a mesclagem triangular para derivar as informações de movimento da primeira unidade de predição triangular e um candidato a mesclagem triangular para derivar as informações de movimento da segunda unidade de predição triangular.
[00449] O tipo de partição do bloco de conversão em código ao qual a divisão diagonal é aplicada pode ser determinado pelas informações de índice. Ou seja, as informações de índice podem especificar uma combinação do candidato a mesclagem da primeira unidade de predição triangular, do candidato a mesclagem da segunda unidade de predição triangular e da direção de divisão do bloco de conversão em código. Quando o tipo de partição do bloco de conversão em código é determinado pelas informações de índice, as informações triangle_partition_type_flag, que indicam a direção da linha diagonal que divide o bloco de conversão em código, não podem ser combinadas. A Tabela 4 representa o tipo de partição do bloco de conversão em código nas informações de índice merge_triangle_idx. [TABELA 4] merge_triangle_i 0 1 2 3 4 5 6 7 8 dx TriangleDir 0 1 1 0 0 1 1 1 0 merge_triangle_i 9 10 11 12 13 14 15 16 17 dx
TriangleDir 0 0 0 1 0 0 0 0 1 merge_triangle_i 18 19 20 21 22 23 24 25 26 dx TriangleDir 1 1 1 0 0 1 1 1 1 merge_triangle_i 27 28 29 30 31 32 33 34 35 dx TriangleDir 1 1 1 0 0 1 0 1 0 merge_triangle_i 36 37 38 39 dx TriangleDir 0 1 0 0
[00450] Uma variável TriangleDir de 0 representa que o tipo de partição triangular esquerda é aplicado ao bloco de conversão em código, e a variável TriangleDir de 1 representa que o tipo de partição triangular direita é aplicado ao bloco de conversão em código. Em combinação da Tabela 3 e Tabela 4, as informações de índice merge_triangle_idx podem ser definidas para especificar a combinação do candidato a mesclagem da primeira unidade de predição triangular, do candidato a mesclagem da segunda unidade de predição triangular e da direção de divisão do bloco de conversão em código.
[00451] Como outro exemplo, apenas as informações de índice para uma dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular podem ser sinalizadas, e um índice de um candidato a mesclagem triangular para a outra dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular pode ser determinado com base nas informações do índice. Como exemplo,
o candidato a mesclagem triangular da primeira unidade de predição triangular pode ser determinado com base nas informações de índice merge_triangle_idx, que indicam um índice de um dos candidatos a mesclagem triangular. Além disso, o candidato a mesclagem triangular da segunda unidade de predição triangular pode ser especificado com base em merge_triangle_idx. Como exemplo, o candidato a mesclagem triangular da segunda unidade de predição triangular pode ser derivado através de adição ou subtração de um deslocamento a ou das informações de índice merge_triangle_idx. O deslocamento pode ser um número inteiro, como 1 ou 2. Como exemplo, um candidato a mesclagem triangular com um índice igual a merge_traingle_idx mais 1 pode ser determinado como o candidato a mesclagem triangular da segunda unidade de predição triangular. Quando merge_triangle_idx indica um candidato a mesclagem triangular com o maior valor de índice entre os candidatos a mesclagem triangular, as informações de movimento da segunda unidade de predição triangular podem ser derivadas de um candidato a mesclagem triangular com um índice de 0 ou um candidato a mesclagem triangular com um índice igual a merge_triangle_idx menos 1.
[00452] Alternativamente, as informações de movimento da segunda unidade de predição triangular podem ser derivadas de um candidato a mesclagem triangular que tem a mesma imagem de referência que o candidato a mesclagem triangular da primeira unidade de predição triangular especificada pelas informações de índice. Aqui, o candidato a mesclagem triangular que tem a mesma imagem de referência que o candidato a mesclagem triangular da primeira unidade de predição triangular pode indicar um candidato a mesclagem triangular em que pelo menos uma da imagem de referência L0 ou a imagem de referência L1 é a mesma que aquela do candidato a mesclagem triangular da primeira unidade de predição triangular. Quando há uma pluralidade de candidatos a mesclagem triangular que têm a mesma imagem de referência que o candidato a mesclagem triangular da primeira unidade de predição triangular, um da pluralidade de candidatos a mesclagem triangular pode ser selecionado com base em pelo menos um dentre se o candidato a mesclagem inclui informações de movimento bidirecional ou um valor de diferença entre as informações de índice e o índice do candidato a mesclagem.
[00453] Como outro exemplo, as informações de índice podem ser sinalizadas para cada uma dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular. Como exemplo, as primeiras informações de índice 1st_merge_idx, que servem para determinar o candidato a mesclagem triangular da primeira unidade de predição triangular, e as segundas informações de índice 2nd_merge_idx, que servem para determinar o candidato a mesclagem triangular da segunda unidade de predição triangular, podem ser sinalizadas em um fluxo de bits. As informações de movimento da primeira unidade de predição triangular podem ser derivadas do candidato a mesclagem triangular determinado com base nas primeiras informações de índice 1st_merge_idx, e as informações de movimento da segunda unidade de predição triangular podem ser derivadas do candidato a mesclagem triangular determinado com base em informações do segundo índice 2nd_merge_idx.
[00454] As primeiras informações de índice 1st_merge_idx podem indicar um índice de um dos candidatos a mesclagem triangular incluídos na lista de candidatos a mesclagem triangular. O candidato a mesclagem triangular da primeira unidade de predição triangular pode ser determinado como o candidato a mesclagem triangular indicado pelas primeiras informações de índice 1st_merge_idx.
[00455] Uma configuração pode ser feita de modo que o candidato a mesclagem triangular indicado pelas primeiras informações de índice 1st_merge_idx não possa ser usado como o candidato a mesclagem triangular da segunda unidade de predição triangular. Por conseguinte, as segundas informações de índice 2nd_merge_idx da segunda unidade de predição triangular podem indicar um índice de um dos candidatos a mesclagem triangular restantes que não o candidato a mesclagem triangular indicado pelas primeiras informações de índice. Quando o valor das segundas informações de índice 2nd_merge_idx é menor do que o valor das primeiras informações de índice 1st_merge_idx, o candidato a mesclagem triangular da segunda unidade de predição triangular pode ser determinado como um candidato a mesclagem triangular com informações de índice indicadas pelas segundas informações de índice 2nd_merge_idx. Por outro lado, quando o valor das segundas informações de índice 2nd_merge_idx é maior ou igual ao valor das primeiras informações de índice 1st_merge_idx, o candidato a mesclagem triangular da segunda unidade de predição triangular pode ser determinado como um candidato a mesclagem triangular com um índice que tem um valor obtido adicionando-se um ao valor das segundas informações do índice 2nd_merge_idx.
[00456] Alternativamente, a sinalização das segundas informações de índice pode ser determinada de acordo com o número de candidatos a mesclagem triangular incluídos na lista de candidatos a mesclagem triangular. Como 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 dois, a sinalização das segundas informações de índice pode ser omitida. Quando a sinalização das segundas informações de índice é omitida, o segundo candidato a mesclagem triangular pode ser derivado através de adição e subtração de um deslocamento a ou das primeiras informações de índice. Como exemplo, quando o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir é dois e as primeiras informações de índice indicam um índice de 0, o segundo candidato a mesclagem triangular pode ser derivado adicionando-se um à primeiras informações de índice. Alternativamente, quando o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular pode incluir é dois e as primeiras informações de índice indicam um, o segundo candidato a mesclagem triangular pode ser derivado subtraindo-se uma das primeiras informações de índice.
[00457] Alternativamente, quando a sinalização das segundas informações de índice é omitida, as segundas informações de índice podem ser definidas como um valor padrão. Aqui, o valor padrão pode ser igual a zero. O segundo candidato a mesclagem triangular pode ser derivado comparando-se as primeiras informações de índice e as segundas informações de índice. Como exemplo, um candidato a mesclagem com um índice de 0 pode ser definido como o segundo candidato a mesclagem triangular quando as segundas informações de índice são menores do que as primeiras informações de índice e um candidato a mesclagem com um índice de 1 pode ser definido como o segundo triangular candidato a mesclagem quando as informações do segundo índice são maiores ou iguais às primeiras informações do índice.
[00458] 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 as informações de movimento da unidade de predição triangular. Por outro lado, quando o candidato a mesclagem triangular tem informações de movimento bidirecional, apenas uma dentre as informações de movimento L0 ou as informações de movimento L1 podem ser definidas como as informações de movimento da unidade de predição triangular. Pode ser determinada se deve-se selecionar as informações de movimento L0 ou as informações de movimento L1 com base no índice do candidato a mesclagem triangular ou nas informações de movimento das outras unidades de predição triangulares.
[00459] Como exemplo, quando o índice do candidato a mesclagem triangular é um número par, as informações de movimento L0 da unidade de predição triangular podem ser definidas como zero e as informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como as informações de movimento L1 da unidade de prediçã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 predição triangular podem ser definidas como zero e as informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como zero. Em contrapartida, as informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como as informações de movimento L0 da unidade de predição triangular quando o índice do candidato a mesclagem triangular é um número par, e as informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como as informações de movimento L1 da unidade de predição triangular quando o índice do candidato a mesclagem triangular é um número ímpar. Alternativamente, as informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como as informações de movimento L0 da primeira unidade de predição triangular quando o candidato a mesclagem triangular para a primeira unidade de predição triangular é um número par, e as informações de movimento L1 da mesclagem triangular candidato podem ser definidas como as informações de movimento L1 da segunda unidade de predição triangular quando o candidato a mesclagem triangular para a segunda unidade de predição triangular é um número ímpar.
[00460] Alternativamente, quando a primeira unidade de predição triangular tem informações de movimento L0, as informações de movimento L0 da segunda unidade de predição triangular podem ser definidas como zero e as informações de movimento L1 do candidato a mesclagem triangular podem ser definidas como as informações L1 da segunda unidade de predição triangular. Por outro lado, quando a primeira unidade de predição triangular tem informações de movimento L1, as informações de movimento L1 da segunda unidade de predição triangular podem ser definidas como zero, e as informações de movimento L0 do candidato a mesclagem triangular podem ser definidas como as informações de movimento L0 da segunda unidade de predição triangular.
[00461] Uma configuração pode ser feita de modo que uma lista de candidatos a mesclagem triangular para derivar as informações de movimento da primeira unidade de predição triangular seja diferente de uma lista de candidatos a mesclagem triangular para derivar as informações de movimento da segunda unidade de predição triangular.
[00462] Como exemplo, quando um candidato a mesclagem triangular para derivar as informações de movimento da primeira unidade de predição triangular é especificado a partir da lista de candidatos a mesclagem triangular com base nas informações de índice para a primeira unidade de predição triangular, as informações de movimento da segunda predição triangular unidade podem ser derivadas com o uso de uma lista de mesclagem triangular que inclui os candidatos a mesclagem triangular restantes além do candidato a mesclagem triangular indicado pelas informações de índice. Em detalhes, as informações de movimento da segunda unidade de predição triangular podem ser derivadas de um dos candidatos a mesclagem triangular restantes.
[00463] Por conseguinte, o número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular da primeira unidade de predição triangular pode incluir pode ser diferente do número máximo de candidatos a mesclagem triangular que a lista de candidatos a mesclagem triangular da segunda unidade de predição triangular pode incluir. Como exemplo, quando a lista de candidatos a mesclagem triangular da primeira unidade de predição triangular inclui M candidatos a mesclagem, a lista de candidatos a mesclagem triangular da segunda unidade de predição triangular pode incluir M-1 candidatos a mesclagem diferentes do candidato a mesclagem triangular indicado pelas informações de índice da primeira unidade de predição triangular.
[00464] Como outro exemplo, enquanto os candidatos a mesclagem das unidades de predição triangulares são derivados com base em blocos vizinhos adjacentes ao bloco de conversão em código, a disponibilidade dos blocos vizinhos pode ser determinada considerando os formatos ou localizações das unidades de predição triangulares.
[00465] A Figura 37 é um diagrama para descrever um exemplo de determinação da disponibilidade de um bloco vizinho para cada unidade de predição triangular.
[00466] Um bloco vizinho que não é adjacente à primeira unidade de predição triangular pode ser definido como indisponível para a primeira unidade de predição triangular e um bloco vizinho que não é adjacente à segunda unidade de predição triangular pode ser definido como indisponível para a segunda unidade de predição triangular.
[00467] Por exemplo, como no exemplo mostrado na Figura 37A, quando o tipo de partição triangular esquerda é aplicado ao bloco de conversão em código, pode ser determinado que os blocos A1, A0 e A2 adjacentes à primeira unidade de predição triangular entre os blocos vizinhos aos blocos de conversão em código estão disponíveis para a primeira unidade de predição triangular e que os blocos B0 e B1 não estão disponíveis para a primeira unidade de predição triangular. Por conseguinte, a lista de candidatos a mesclagem triangular para a primeira unidade de predição triangular pode incluir candidatos a mesclagem triangular derivados dos blocos A1, A0 e A2, mas pode não incluir candidatos a mesclagem triangular derivados dos blocos B0 e B1.
[00468] Como no exemplo mostrado na Figura 37B, quando o tipo de partição triangular esquerda é aplicado ao bloco de conversão em código, pode ser determinado que os blocos B0 e B1 adjacentes à segunda unidade de predição triangular estão disponíveis para a segunda unidade de predição triangular e que os blocos A1, A0 e A2 não estão disponíveis para a segunda unidade de predição triangular. Por conseguinte, a lista de candidatos a mesclagem triangular para a segunda unidade de predição triangular pode incluir candidatos a mesclagem triangular derivados dos blocos B0 e B1, mas pode não incluir candidatos a mesclagem triangular derivados dos blocos A1, A0 e A2.
[00469] Portanto, o número ou faixa de candidatos a mesclagem triangular que a unidade de predição triangular pode usar pode ser determinado com base em pelo menos um dentre a localização da unidade de predição triangular ou o tipo de partição do bloco de conversão em código.
[00470] Como outro exemplo, um modo de mesclagem pode ser aplicado a apenas uma dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular. Além disso, as informações de movimento da outra dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular pode ser definida como sendo a mesma que as informações de movimento da unidade de predição triangular à qual o modo de mesclagem é aplicado ou pode ser derivada refinando-se as informações de movimento da unidade de predição triangular à qual o modo de mesclagem é aplicado.
[00471] Como exemplo, o índice de imagem de referência e o vetor de movimento da primeira unidade de predição triangular podem ser derivados com base no candidato a mesclagem triangular e o vetor de movimento da segunda unidade de predição triangular pode ser derivado refinando-se o vetor de movimento da primeira unidade de predição triangular. Como exemplo, o vetor de movimento da segunda unidade de predição triangular pode ser derivado através de adição ou subtração de um vetor de movimento refinado {Rx, Ry} ao ou do vetor de movimento {mvD1LXx, mvD1LXy} da primeira unidade de predição triangular. O índice de imagem de referência da segunda unidade de predição triangular pode ser definido como sendo o mesmo que o índice de imagem de referência da primeira unidade de predição triangular.
[00472] As informações para determinar um vetor de movimento refinado que indica uma diferença entre o vetor de movimento da primeira unidade de predição triangular e o vetor de movimento da segunda unidade de predição triangular podem ser sinalizadas em um fluxo de bits. As informações podem incluir pelo menos uma das informações que indicam o tamanho do vetor de movimento refinado ou informações que indicam o sinal do vetor de movimento refinado.
[00473] Alternativamente, o sinal do vetor de movimento refinado pode ser derivado com base em pelo menos um dentre o tipo de partição aplicado ao bloco de conversão em código, a localização da unidade de predição triangular ou o índice da unidade de predição triangular.
[00474] Como outro exemplo, o vetor de movimento e o índice de imagem de referência de uma dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular podem ser sinalizados. O vetor de movimento da outra dentre a primeira unidade de predição triangular e a segunda unidade de predição triangular pode ser derivado refinando-se o vetor de movimento sinalizado.
[00475] Como exemplo, o índice de imagem de referência e o vetor de movimento da primeira unidade de predição triangular podem ser determinados com base nas informações sinalizadas a partir do fluxo de bits. Além disso, o vetor de movimento da segunda unidade de predição triangular pode ser derivado refinando-se o vetor de movimento da primeira unidade de predição triangular. Como exemplo, o vetor de movimento da segunda unidade de predição triangular pode ser derivado através de adição ou subtração do vetor de movimento refinado {Rx, Ry} ao ou do vetor de movimento {mvD1LXx, mvD1LXy} da primeira unidade de predição triangular. O índice de imagem de referência da segunda unidade de predição triangular pode ser definido como sendo o mesmo que o índice de imagem de referência da primeira unidade de predição triangular.
[00476] A predição de compensação de movimento pode ser realizada no bloco de conversão em código com base nas informações de movimento da primeira unidade de predição triangular e nas informações de movimento da segunda unidade de predição triangular. Nesse caso, a deterioração de qualidade da imagem pode ocorrer em uma fronteira entre a primeira unidade de predição triangular e a segunda unidade de predição triangular. Como exemplo, a continuidade de qualidade da imagem pode se deteriorar perto de uma borda presente na fronteira entre a primeira unidade de predição triangular e a segunda unidade de predição triangular. A fim de reduzir a deterioração da qualidade da imagem na fronteira, uma amostra de predição pode ser derivada por meio de predição ponderada ou um filtro de suavização.
[00477] Uma amostra de predição em um bloco de conversão em código ao qual a divisão diagonal é aplicada pode ser derivada com base em uma operação de soma ponderada de uma primeira amostra de predição adquirida com base nas informações de movimento da primeira unidade de predição triangular e uma segunda amostra de predição adquirida com base nas informações de movimento da segunda unidade de predição triangular. Alternativamente, uma amostra de predição da primeira unidade de predição triangular pode ser derivada do primeiro bloco de predição determinado com base nas informações de movimento da primeira unidade de predição triangular e uma amostra de predição da segunda unidade de predição triangular pode ser derivada do segundo bloco de predição determinado com base nas informações de movimento da segunda unidade de predição triangular. Nesse caso, uma amostra de predição localizada em uma região de fronteira entre a primeira unidade de predição triangular e a segunda unidade de predição triangular pode ser derivada com base em uma operação de soma ponderada da primeira amostra de predição incluída no primeiro bloco de predição e da segunda amostra de predição incluída no segundo bloco de predição. Como exemplo, a Equação 22 abaixo representa um exemplo de derivação das amostras de predição da primeira unidade de predição triangular e da segunda unidade de predição triangular. [Equação 22]
[00478] Na Equação 22, P1 representa a primeira amostra de predição e P2 representa a segunda amostra de predição. w1 representa um peso aplicado à primeira amostra de predição e (1-w1) representa um peso aplicado à segunda amostra de predição. Como no exemplo mostrado na Equação 22, o peso aplicado à segunda amostra de predição pode ser derivado subtraindo-se o peso aplicado à primeira amostra de predição de um valor constante.
[00479] Quando o tipo de partição triangular esquerda é aplicado ao bloco de conversão em código, a região de fronteira pode incluir amostras de predição com a mesma coordenada x e a mesma coordenada y. Por outro lado, quando o tipo de partição triangular direita é aplicado ao bloco de conversão em código, a região de fronteira pode incluir amostras de predição, em que cada uma tem uma coordenada x e uma coordenada y cuja soma é maior ou igual a um primeiro valor limiar e menor ou igual a um segundo valor limiar.
[00480] O tamanho da região de fronteira pode ser determinado com base em pelo menos um dentre o tamanho do bloco de conversão em código, o formato do bloco de conversão em código, as informações de movimento das unidades de predição triangulares, o valor de diferença do vetor de movimento das unidades de predição triangulares, o POC da imagem de referência ou um valor de diferença entre a primeira amostra de predição e a segunda amostra de predição na fronteira diagonal.
[00481] As Figuras 38 e 39 são diagramas que mostram um exemplo de derivação de uma amostra de predição com base em uma operação de soma ponderada de uma primeira amostra de predição e uma segunda amostra de predição. A Figura 38 ilustra um caso em que o tipo de partição triangular esquerda é aplicado ao bloco de conversão em código, e a Figura 39 ilustra um caso em que o tipo de partição triangular direita é aplicado ao bloco de conversão em código. Além disso, as Figuras 38A e 39A são diagramas que mostram um aspecto de predição para um componente luma e as Figuras 38B e 39B são diagramas que mostram um aspecto de predição para um componente croma.
[00482] Nos desenhos mostrados, um número escrito em uma amostra de predição localizada próxima à fronteira entre a primeira unidade de predição e a segunda unidade de predição indica um peso aplicado à primeira amostra de predição. Como exemplo, quando o número escrito na amostra de predição é N, a amostra de predição pode ser derivada aplicando-se um peso de N/8 à primeira amostra de predição e aplicando-se um peso de 1-(N/8) à segunda amostra de predição.
[00483] Em uma região não fronteiriça, a primeira amostra de predição ou a segunda amostra de predição pode ser determinada como a amostra de predição. Com referência ao exemplo da Figura 38, em uma região que pertence a uma primeira unidade de predição triangular entre regiões em que a diferença absoluta entre uma coordenada x e uma coordenada y é maior do que um valor limiar, a primeira amostra de predição derivada com base nas informações de movimento da primeira unidade de predição triangular pode ser definida como a amostra de predição. Por outro lado, em uma região que pertence à segunda unidade de predição triangular entre regiões em que a diferença entre uma coordenada x e uma coordenada y é maior do que um valor limiar, a segunda amostra de predição derivada com base nas informações de movimento da segunda unidade de predição triangular pode ser determinada como a amostra de predição.
[00484] Com referência ao exemplo da Figura 39, em uma região em que a soma de uma coordenada x e uma coordenada y é menor do que um primeiro valor limiar, a primeira amostra de predição derivada com base nas informações de movimento da primeira unidade de predição triangular pode ser definida como a amostra de predição. Por outro lado, em uma região em que a soma de uma coordenada x e uma coordenada y é maior do que um segundo valor limiar, a segunda amostra de predição derivada com base nas informações de movimento da segunda unidade de predição triangular pode ser definida como amostra de predição.
[00485] Um valor limiar para determinar a região não fronteiriça pode ser determinado com base em pelo menos um dentre o tamanho do bloco de conversão em código, o formato do bloco de conversão em código ou um componente de cor. Como exemplo, quando um valor limiar para um componente luma pode ser definido como N, um valor limiar para um componente croma pode ser definido como N/2.
[00486] As amostras de predição incluídas na região de fronteira podem ser derivadas com base em uma operação de soma ponderada da primeira amostra de predição e da segunda amostra de predição. Nesse caso, o peso aplicado à primeira amostra de predição e à segunda amostra de predição pode ser determinado com base em pelo menos um dentre a localização da amostra de predição, o tamanho do bloco de conversão em código, o formato do bloco de conversão em código ou um componente de cor.
[00487] Por exemplo, como no exemplo mostrado na Figura 38A, as amostras de predição localizadas na mesma coordenada x e na mesma coordenada y podem ser derivadas aplicando-se o mesmo peso à primeira amostra de predição e à segunda amostra de predição. Amostras de predição nas quais a diferença absoluta entre uma coordenada x e uma coordenada y é um podem ser derivadas definindo-se uma razão entre os pesos aplicados à primeira amostra de predição e à segunda amostra de predição como (3:1) ou (1:3). Além disso, as amostras de predição nas quais a diferença absoluta entre uma coordenada x e uma coordenada y é dois podem ser derivadas definindo-se uma razão entre os pesos aplicados à primeira amostra de predição e à segunda amostra de predição como (3:1) ou (1:3).
[00488] Alternativamente, como no exemplo mostrado na Figura 38B, as amostras de predição localizadas na mesma coordenada x e na mesma coordenada y podem ser derivadas aplicando-se o mesmo peso à primeira amostra de predição e à segunda amostra de predição, e as amostras de predição nas quais a diferença absoluta entre a coordenada x e a coordenada y é um podem ser derivadas definindo-se uma razão entre os pesos aplicados à primeira amostra de predição e a segunda amostra de predição como (7:1) ou (1:7).
[00489] Por exemplo, como no exemplo mostrado na Figura 39A, as amostras de predição nas quais a soma de uma coordenada x e uma coordenada y é menor do que a largura ou altura do bloco de conversão em código podem ser derivadas aplicando-se o mesmo peso à primeira amostra de predição e à segunda amostra de predição. Amostras de predição nas quais a soma de uma coordenada x e uma coordenada y é igual ou é dois menor do que a largura ou altura do bloco de conversão em código podem ser derivadas definindo-se uma razão entre os pesos aplicados à primeira amostra de predição e à segunda amostra de predição como (3:1) ou (1:3). Amostras de predição nas quais a soma de uma coordenada x e uma coordenada y é um maior ou três menor do que a largura ou altura do bloco de conversão em código podem ser derivadas definindo-se uma razão entre os pesos aplicados à primeira amostra de predição e à segunda amostra de predição como (7:1) ou (1:7).
[00490] Alternativamente, como no exemplo mostrado na Figura 39A, as amostras de predição nas quais a soma de uma coordenada x e uma coordenada y é menor do que a largura ou altura do bloco de conversão em código podem ser derivadas aplicando-se o mesmo peso à primeira amostra de predição e à segunda amostra de predição. Amostras de predição nas quais a soma de uma coordenada x e uma coordenada y é igual ou é dois menor do que a largura ou altura do bloco de conversão em código podem ser derivadas definindo-se uma razão entre os pesos aplicados à primeira amostra de predição e à segunda amostra de predição como (7:1) ou (1:7).
[00491] Como outro exemplo, o peso pode ser determinado considerando a localização da amostra de predição ou o formato do bloco de conversão em código. As Equações 23 a 25 mostram exemplos de derivação de um peso quando o tipo de partição triangular esquerda é aplicado ao bloco de conversão em código. A Equação 23 mostra um exemplo de derivação de um peso aplicado à primeira amostra de predição quando o bloco de conversão em código é quadrado. [Equação 23]
[00492] Na Equação 23, x e y representam a localização da amostra de predição. Quando o bloco de conversão em código não é quadrado, o peso aplicado à primeira amostra de predição pode ser derivado com o uso da Equação 24 ou a Equação 25 abaixo. A Equação 24 representa um caso em que a largura do bloco de conversão em código é maior do que a altura e a Equação 25 representa um caso em que a largura do bloco de conversão em código é menor do que a altura. [Equação 24]
[Equação 25]
[00493] Quando o tipo de partição triangular direita é aplicado ao bloco de conversão em código, o peso aplicado à primeira amostra de predição pode ser determinado com o uso das Equações 26 a 28. A Equação 26 mostra um exemplo de derivação de um peso aplicado à primeira amostra de predição quando o bloco de conversão em código é quadrado. [Equação 26]
[00494] Na Equação 26, CbW representa a largura do bloco de conversão em código. Quando o bloco de conversão em código não é quadrado, o peso aplicado à primeira amostra de predição pode ser derivado com o uso da Equação 27 ou a Equação 28 abaixo. A Equação 27 representa um caso em que a largura do bloco de conversão em código é maior do que a altura e a Equação 28 representa um caso em que a largura do bloco de conversão em código é menor do que a altura. [Equação 27] [Equação 28]
[00495] Na Equação 27, CbH representa a altura do bloco de conversão em código.
[00496] Como no exemplo mostrado, entre as amostras de predição na região de fronteira, uma amostra de predição incluída na primeira unidade de predição triangular pode ser derivada atribuindo-se um peso maior à primeira amostra de predição do que à segunda amostra de predição e uma amostra de predição incluída na segunda unidade de predição triangular pode ser derivada atribuindo-se um peso maior à segunda amostra de predição do que à primeira amostra de predição.
[00497] Quando a divisão diagonal é aplicada ao bloco de conversão em código, uma configuração pode ser feita de modo que o modo de predição combinado, que é uma combinação do modo de intrapredição e o modo de mesclagem, não seja aplicado ao bloco de conversão em código.
[00498] A intrapredição é predizer o bloco atual com o uso de uma amostra reconstruída em que a codificação ou decodificação é concluída e que está próxima ao bloco atual. Nesse caso, uma amostra reconstruída antes de um filtro em circuito ser aplicado pode ser usada para a intrapredição do bloco atual.
[00499] Uma técnica de intrapredição inclui intrapredição com base em matriz e intrapredição normal considerando a direcionalidade em relação a uma amostra reconstruída próxima. As informações que indicam a técnica de intrapredição do bloco atual podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit. Alternativamente, a técnica de intrapredição do bloco atual pode ser determinada com base em pelo menos um dentre a localização, tamanho ou formato do bloco atual ou a técnica de intrapredição de um bloco vizinho. Como exemplo, quando um bloco atual está presente através de um limite de imagem, pode ser feita uma configuração de modo que intrapredição com base em matriz não seja aplicada ao bloco atual.
[00500] A intrapredição com base em matriz pode ser um método de aquisição de um bloco de predição do bloco atual com base em um produto de matriz entre uma matriz pré- armazenada em um codificador e um decodificador e amostras reconstruídas perto do bloco atual. As informações para especificar uma dentre uma pluralidade de matrizes pré- armazenadas podem ser sinalizadas em um fluxo de bits. O decodificador pode determinar uma matriz para intrapredição do bloco atual com base nas informações e no tamanho do bloco atual.
[00501] A intrapredição normal é um método de aquisição de um bloco de predição para o bloco atual com base em um modo de intrapredição não direcional ou um modo de intrapredição direcional. Um processo de realização de intrapredição com base na intrapredição normal será descrito em detalhes abaixo com referência aos desenhos.
[00502] A Figura 40 é um fluxograma de um método de intrapredição de acordo com uma modalidade da presente invenção.
[00503] Uma linha de amostra de referência do bloco atual pode ser determinada (S4001). A linha de amostra de referência se refere a um conjunto de amostras de referência incluídas em uma késima linha distante da parte superior e/ou à esquerda do bloco atual. As amostras de referência podem ser derivadas de amostras reconstruídas em que a codificação ou decodificação é concluída e que estão perto do bloco atual.
[00504] As informações de índice para identificar a linha de amostra de referência do bloco atual entre uma pluralidade de linhas de amostra de referência podem ser sinalizadas em um fluxo de bits. Como exemplo, as informações de índice intra_luma_ref_idx, que servem para especificar a linha de amostra de referência do bloco atual, podem ser sinalizadas em um fluxo de bits. As informações de índice podem ser sinalizadas em unidades de blocos de conversão em código.
[00505] A pluralidade de linhas de amostra de referência pode incluir pelo menos uma dentre a primeira linha, a segunda linha, a terceira linha ou a quarta linha a partir da parte superior e/ou à esquerda do bloco atual. Entre a pluralidade de linhas de amostra de referência, uma linha de amostra de referência que consiste em uma linha adjacente à parte superior do bloco atual e uma coluna adjacente à esquerda do bloco atual pode ser denominada como uma linha de amostra de referência adjacente e as outras linhas de amostra de referência podem ser denominadas como linhas de amostra de referência não adjacentes.
[00506] Apenas algumas da pluralidade de linhas de amostra de referência podem ser selecionadas como a linha de amostra de referência do bloco atual. Como exemplo, entre a pluralidade de linhas de amostra de referência, as linhas de amostra de referência restantes além de uma terceira linha de amostra de referência não adjacente podem ser definidas como linhas de amostra de referência candidatas. A Tabela 5 representa os índices atribuídos às linhas de amostra de referência candidatas. [TABELA 5] Índice Linha de amostra de referência (intra_luma_ref_idx) 0 Linha de amostra de referência adjacente 1 Primeira linha de amostra de referência não adjacente
2 Segunda linha de amostra de referência não adjacente
[00507] É possível definir um número maior de linhas de amostra de referência candidatas ou um número menor de linhas de amostra de referência candidatas do que foi descrito acima. Além disso, o número ou localizações de linhas de amostra de referência não adjacentes que são definidas como linhas de amostra de referência candidatas não estão limitados ao exemplo descrito acima. Como exemplo, uma primeira linha de amostra de referência não adjacente e uma terceira linha de amostra de referência não adjacente podem ser definidas como as linhas de amostra de referência candidatas e uma segunda linha de amostra de referência não adjacente e a terceira linha de amostra de referência não adjacente podem ser definidas como as linhas de amostra de referência candidatas. Alternativamente, todas dentre a primeira linha de amostra de referência não adjacente, a segunda linha de amostra de referência não adjacente e a terceira linha de amostra de referência não adjacente podem ser definidas como as linhas de amostra de referência candidatas.
[00508] O número ou tipos de linhas de amostra de referência candidatas podem ser determinados com base em pelo menos um dentre o tamanho, formato ou localização do bloco atual, a presença de divisão em sub-blocos ou o modo de intrapredição do bloco atual.
[00509] A linha de amostra de referência do bloco atual pode ser determinada com base em pelo menos um dentre a localização, tamanho ou formato do bloco atual ou o modo de conversão em código preditiva de um bloco vizinho. Como exemplo, quando o bloco atual é contíguo a uma borda de uma imagem, recorte, fatia ou unidade de árvore de conversão em código, uma linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual.
[00510] Alternativamente, quando o bloco atual não é quadrado, uma linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual. Alternativamente, quando uma razão entre largura e altura do bloco atual é maior ou igual a um valor limiar ou é menor ou igual a um valor limiar, uma linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual.
[00511] A linha de amostra de referência pode incluir amostras de referência superiores localizadas acima do bloco atual e amostras de referência esquerdas localizadas à esquerda do bloco atual. As amostras de referência superiores e as amostras de referência esquerdas podem ser derivadas de amostras reconstruídas perto do bloco atual. As amostras reconstruídas podem estar em um estado antes de um filtro em circuito ser aplicado.
[00512] Em seguida, o modo de intrapredição do bloco atual pode ser determinado (S4002). Pelo menos um dentre um modo de intrapredição não direcional ou um modo de intrapredição direcional pode ser determinado como o modo de intrapredição do bloco atual. O modo de intrapredição não direcional inclui Plano e DC, e a intrapredição direcional inclui 33 ou 65 modos de uma direção diagonal inferior esquerda a uma direção diagonal superior direita.
[00513] A Figura 41 é um diagrama que mostra modos de intrapredição.
[00514] A Figura 41A mostra 35 modos de intrapredição e a Figura 41B mostra 67 modos de intrapredição.
[00515] Pode ser definido um número maior de modos de intrapredição ou um número menor de modos de intrapredição do que é mostrado na Figura 41.
[00516] Um modo mais provável (MPM) pode ser definido com base no modo de intrapredição de um bloco vizinho ao bloco atual. Aqui, o bloco vizinho pode incluir um bloco vizinho esquerdo adjacente à esquerda do bloco atual e um bloco vizinho superior adjacente à parte superior do bloco atual.
[00517] O número de MPMs incluídos em uma lista de MPM pode ser predefinido em um codificador e um decodificador. Como exemplo, o número de MPMs pode ser três, quatro, cinco ou seis. Alternativamente, as informações que indicam o número de MPMs podem ser sinalizadas em um fluxo de bits. Alternativamente, o número de MPMs pode ser determinado com base em pelo menos um dos modos de codificação preditiva do bloco vizinho ou o tamanho, formato ou índice de linha de amostra de referência do bloco atual. Como exemplo, N MPMs podem ser usados quando uma linha de amostra de referência adjacente é determinada como a linha de amostra de referência do bloco atual, e M MPMs podem ser usados quando uma linha de amostra de referência não adjacente é determinada como a linha de amostra de referência do bloco atual. M é um número natural menor do que N. Como exemplo, N pode ser seis e M pode ser cinco, quatro ou três. Por conseguinte, um dos seis modos candidatos de intrapredição é determinado como o modo de intrapredição do bloco atual quando o índice da linha de amostra de referência do bloco atual é zero e um sinalizador de MPM é verdadeiro, e um dos cinco modos de intrapredição candidatos é determinado como o modo de intrapredição do bloco atual quando o índice da linha de amostra de referência do bloco atual é maior do que zero e um sinalizador de MPM é verdadeiro.
[00518] Alternativamente, um número fixo (por exemplo, cinco ou seis) de candidatos a MPM pode ser usado independentemente do índice da linha de amostra de referência do bloco atual.
[00519] Uma lista de MPM que inclui uma pluralidade de MPMs é criada e as informações que indicam se um MPM idêntico ao modo de intrapredição do bloco atual está incluído na lista de MPM podem ser sinalizadas em um fluxo de bits. As informações são um sinalizador de 1 bit e o sinalizador pode ser denominado como um sinalizador de MPM. Quando o sinalizador de MPM indica que um MPM idêntico ao bloco atual está incluído na lista de MPM, as informações de índice para identificar um dos MPMs podem ser sinalizadas em um fluxo de bits. Como exemplo, as informações de índice intra_luma_ref_idx, que servem para especificar um dentre uma pluralidade de MPMs, podem ser sinalizadas em um fluxo de bits. O MPM especificado pelas informações de índice pode ser definido como o modo de intrapredição do bloco atual. Quando o sinalizador de MPM indica que um MPM idêntico ao bloco atual não está incluído na lista de MPM, as informações de modo residual que indicam um dos modos de intrapredição restantes que não os MPMs podem ser sinalizadas em um fluxo de bits. As informações de modo residual indicam um valor de índice que corresponde ao modo de intrapredição do bloco atual quando os índices são reatribuídos aos modos de intrapredição restantes além dos MPMs. O decodificador pode classificar os MPMs em ordem crescente e comparar os MPMs com as informações de modo residual para determinar o modo de intrapredição do bloco atual. Como exemplo, quando as informações do modo residual são menores ou iguais a um MPM, o modo de intrapredição do bloco atual pode ser derivado adicionando-se um às informações do modo residual.
[00520] Ao derivar o modo de intrapredição do bloco atual, a comparação entre as informações de modo residual e alguns dos MPMs pode ser omitida. A título de exemplo, entre os MPMs, os MPMs que são modos de intrapredição não direcional podem ser excluídos da comparação. Quando os modos de intrapredição não direcional são definidos como MPMs, é claro que as informações de modo residual indicam um modo de intrapredição não direcional. Assim, o modo de intrapredição do bloco atual pode ser derivado através da comparação entre as informações de modo residual e os MPMs restantes além dos modos de intrapredição não direcional. Em vez de excluir os modos de intrapredição não direcionais não direcionais da comparação, o número de modos de intrapredição não direcionais pode ser adicionado às informações de modo residual e, assim, o valor resultante pode ser comparado com os MPMs restantes.
[00521] Em vez de definir um MPM como um modo padrão, as informações que indicam se o modo de intrapredição do bloco atual é o modo padrão podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit e o sinalizador pode ser denominado como um sinalizador de modo padrão. O sinalizador de modo padrão pode ser sinalizado apenas quando o sinalizador de MPM indica que um MPM idêntico ao bloco atual está incluído na lista de MPM. Conforme descrito acima, o modo padrão pode incluir pelo menos um dentre Plano,
DC, modo Vertical ou modo Horizontal. Como exemplo, quando Plano é definido como o modo padrão, o sinalizador de modo padrão pode indicar se o modo de intrapredição do bloco atual é Plano. Quando o sinalizador de modo padrão indica que o modo de intrapredição do bloco atual não é o modo padrão, um dos MPMs indicados pelas informações de índice pode ser definido como o modo de intrapredição do bloco atual.
[00522] Quando o sinalizador de modo padrão é usado, pode ser feita uma configuração de modo que o modo de intrapredição idêntico ao modo padrão não seja definido como um MPM. Como exemplo, quando o sinalizador de modo padrão indica se o modo de intrapredição do bloco atual é Plano, o modo de intrapredição do bloco atual pode ser derivado com o uso de cinco MPMs excluindo um MPM que corresponde ao Plano.
[00523] Quando uma pluralidade de modos de intrapredição é definida como modos padrão, as informações de índice que indicam um dos modos padrão podem ser sinalizadas adicionalmente. O modo de intrapredição do bloco atual pode ser definido como o modo padrão indicado pelas informações de índice.
[00524] Quando o índice da linha de amostra de referência do bloco atual não é zero, pode ser feita uma configuração de modo que o modo padrão não seja usado. Como exemplo, quando a linha de amostra de referência não adjacente é determinada como a linha de amostra de referência do bloco atual, pode ser feita uma configuração de modo que o modo de intrapredição não direcional, como modo DC ou modo Plano, não seja usado. Por conseguinte, quando o índice da linha de amostra de referência não é zero, o sinalizador de modo padrão pode não ser sinalizado e o valor do sinalizador de modo padrão pode ser definido como um valor predefinido (ou seja, falso).
[00525] Quando o modo de intrapredição do bloco atual é determinado, as amostras de predição para o bloco atual podem ser adquiridas com base no modo de intrapredição determinado (S4003).
[00526] Quando o modo DC é selecionado, as amostras de predição para o bloco atual podem ser geradas com base na média das amostras de referência. Em detalhes, os valores de todas as amostras no bloco de predição podem ser gerados com base na média das amostras de referência. A média pode ser derivada com o uso de pelo menos uma dentre as amostras de referência superiores localizadas acima do bloco atual e as amostras de referência esquerdas localizadas à esquerda do bloco atual.
[00527] O número ou faixa de amostras de referência usadas para derivar a média pode variar dependendo do formato do bloco atual. Como exemplo, quando o bloco atual é um bloco não quadrado no qual a largura é maior do que a altura, a média pode ser calculada com o uso apenas das amostras de referência superiores. Por outro lado, quando o bloco atual é um bloco não quadrado no qual a largura é menor do que a altura, a média pode ser calculada com o uso apenas das amostras de referência esquerdas. Ou seja, quando a largura e a altura do bloco atual são diferentes uma da outra, a média pode ser calculada com o uso apenas de amostras de referência adjacentes a uma mais longa entre a largura e a altura. Alternativamente, pode ser determinado se deve-se calcular a média com o uso das amostras de referência superiores ou calcular a média com o uso das amostras de referência esquerdas com base na razão entre largura e altura do bloco atual.
[00528] Quando o modo Plano é selecionado, a amostra de predição pode ser adquirida com o uso de uma amostra de predição horizontal e uma amostra de predição vertical. Aqui, a amostra de predição horizontal é adquirida com base em uma amostra de referência esquerda e uma amostra de referência direita localizadas na mesma linha horizontal que a amostra de predição, e a amostra de predição vertical é adquirida com base em uma amostra de referência superior e uma amostra de referência inferior localizadas na mesma linha vertical que a amostra de predição. Aqui, a amostra de referência direita pode ser gerada copiando-se uma amostra de referência adjacente ao canto superior direito do bloco atual e a amostra de referência inferior pode ser gerada copiando-se uma amostra de referência adjacente ao canto inferior esquerdo do bloco atual. A amostra de predição horizontal pode ser adquirida com base em uma operação de soma ponderada da amostra de referência esquerda e da amostra de referência direita, e a amostra de predição vertical pode ser adquirida com base em uma operação de soma ponderada da amostra de referência superior e a amostra de referência inferior. Nesse caso, um peso atribuído a cada amostra de referência pode ser determinado dependendo da localização da amostra de predição. A amostra de predição pode ser adquirida com base em uma operação de cálculo de média ou uma operação de soma ponderada da amostra de predição horizontal e da amostra de predição vertical. Quando a operação de soma ponderada é realizada, os pesos atribuídos à amostra de predição horizontal e à amostra de predição vertical podem ser determinados com base na localização da amostra de predição.
[00529] Quando um modo de predição direcional é selecionado, um parâmetro que indica a direção de predição (ou o ângulo de predição) do modo de predição direcional selecionado pode ser determinado. A Tabela 6 abaixo representa o parâmetro de intradireção intraPredAng para cada modo de intrapredição. [TABELA 6] PredModeIntra 1 2 3 4 5 6 7 IntraPredAng - 32 26 21 17 13 9 PredModeIntraIntraP 8 9 10 11 12 13 14 redAng 5 2 0 -2 -5 -9 -13 PredModeIntraIntraP 15 16 17 18 19 20 21 redAng -17 -21 -26 -32 -26 -21 -17 PredModeIntraIntraP 22 23 24 25 26 27 28 redAng -13 -9 -5 -2 0 2 5 PredModeIntraIntraP 29 30 31 32 33 34 redAng 9 13 17 21 26 32
[00530] A Tabela 6 representa um parâmetro de intradireção para cada modo de intrapredição com um índice entre 2 e 34 quando 35 modos de intrapredição são definidos. Quando mais de 33 modos de intrapredição direcional são definidos, a Tabela 6 pode ser subdividida para definir parâmetros de intradireção para cada modo de intrapredição direcional.
[00531] Depois de dispor as amostras de referência superiores e as amostras de referência esquerdas do bloco atual em uma linha, a amostra de predição pode ser adquirida com base no valor do parâmetro de intradireção. Nesse caso, quando o valor do parâmetro de intradireção é negativo, as amostras de referência esquerdas e as amostras de referência superiores podem ser dispostas em uma linha.
[00532] As Figuras 42 e 43 são diagramas que mostram um exemplo de uma matriz unidimensional na qual as amostras de referência são dispostas em uma linha.
[00533] A Figura 42 mostra um exemplo de uma matriz vertical unidimensional em que amostras de referência são dispostas verticalmente, e a Figura 43 mostra um exemplo de uma matriz horizontal unidimensional em que as amostras de referência são dispostas horizontalmente. As modalidades das Figuras 42 e 43 serão descritas na suposição de que são definidos 35 modos de intrapredição.
[00534] Uma matriz horizontal unidimensional na qual as amostras de referência superiores são giradas no sentido anti-horário pode ser aplicada quando um índice de modo de intrapredição está entre 11 e 18, e uma matriz vertical unidimensional na qual as amostras de referência esquerdas são giradas no sentido horário pode ser aplicada quando um índice de modo de intrapredição está entre 19 e 25. Quando as amostras de referência são dispostas em uma linha, um ângulo de modo de intrapredição pode ser considerado.
[00535] Um parâmetro de determinação de amostra de referência pode ser determinado com base no parâmetro intradireção. O parâmetro de determinação de amostra de referência pode incluir um índice de amostra de referência para especificar uma amostra de referência e um parâmetro de peso para determinar um peso a ser aplicado a uma amostra de referência.
[00536] O índice de amostra de referência iIdx e o parâmetro de peso ifact podem ser adquiridos por meio das Equações 30 e 31 abaixo. [Equação 30]
[Equação 31]
[00537] Nas Equações 30 e 31, Pang representa um parâmetro de intradireção. Uma amostra de referência especificada pelo índice de amostra de referência iIdx corresponde ao integer-pel.
[00538] A fim de derivar a amostra de predição, pode ser especificada pelo menos uma amostra de referência. Em detalhes, a localização da amostra de referência a ser usada para derivar a amostra de predição pode ser especificada considerando a inclinação do modo de predição. Como exemplo, a amostra de referência a ser usada para derivar a amostra de predição pode ser especificada com o uso do índice de amostra de referência iIdx.
[00539] Nesse caso, quando a inclinação do modo de intrapredição não pode ser expressa com uma amostra de referência, a amostra de predicação pode ser gerada por interpolação de uma pluralidade de amostras de referência. Como exemplo, quando a inclinação do modo de intrapredição é um valor entre a inclinação entre a amostra de predição e uma primeira amostra de referência e a inclinação entre a amostra de predição e uma segunda amostra de referência, a amostra de predição pode ser adquirida interpolando-se a primeira amostra de referência e a segunda amostra de referência. Ou seja, uma linha angular em conformidade com o ângulo de intrapredição não passa a amostra de referência localizada no integer-pel, a amostra de predição pode ser adquirida por interpolação de amostras de referência adjacentes à esquerda, à direita, à parte superior ou à parte inferior de uma localização em que passa a linha angular.
[00540] A Equação 32 abaixo mostra um exemplo de aquisição de uma amostra de predição com base em amostras de referência. [Equação 32]
[00541] Na Equação 32, P representa uma amostra de predição e Ref_1D representa uma das amostras de referência dispostas em uma dimensão. Nesse caso, a localização da amostra de referência pode ser determinada pelo índice de amostra de referência iIdx e a localização (x, y) da amostra de predição.
[00542] Quando a inclinação do modo de intrapredição pode ser expressa com uma amostra de referência, o parâmetro de peso ifact pode ser definido como zero. Por conseguinte, a Equação 32 pode ser simplificada para a Equação 33 abaixo. [Equação 33]
[00543] A intrapredição pode ser realizada no bloco atual com base em uma pluralidade de modos de intrapredição. Como exemplo, um modo de intrapredição pode ser derivado para cada amostra de predição e uma amostra de predição pode ser derivada com base no modo de intrapredição atribuído à amostra de predição correspondente.
[00544] Alternativamente, um modo de intrapredição pode ser derivado para cada região, e intrapredição pode ser realizada na região correspondente com base no modo de intrapredição atribuído à região correspondente. Aqui, a região pode incluir pelo menos uma amostra. Pelo menos um dentre o tamanho ou formato da região pode ser determinado de forma adaptativa com base em pelo menos um dentre o tamanho,
formato ou modo de intrapredição do bloco atual. Alternativamente, pelo menos um dentre o tamanho ou formato da região pode ser predefinido em um codificador e um decodificador, independentemente do tamanho ou formato do bloco atual.
[00545] Alternativamente, intrapredição pode ser realizada várias vezes e uma amostra de predição final pode ser derivada com base em uma operação de cálculo de média ou uma operação de soma ponderada de uma pluralidade de amostras de predição adquiridas realizando-se a intrapredição várias vezes. Como exemplo, uma primeira amostra de predição pode ser adquirida realizando-se intrapredição com base em um primeiro modo de intrapredição e uma segunda amostra de predição pode ser adquirida realizando-se intrapredição com base em um segundo modo de intrapredição. Subsequentemente, a amostra de predição final pode ser adquirida com base na operação de cálculo da média ou na operação de soma ponderada entre a primeira amostra de predição e a segunda amostra de predição. Nesse caso, os pesos atribuídos à primeira amostra de predição e à segunda amostra de predição podem ser determinados considerando pelo menos um dentre se o primeiro modo de predição intra é um modo de predição não direcional ou um modo de predição direcional, se o segundo modo de modo de intrapredição é um modo de predição não direcional ou um modo de predição direcional ou o modo de intrapredição de um bloco vizinho.
[00546] A pluralidade de modos de intrapredição pode ser uma combinação de um modo de intrapredição não direcional e um modo de intrapredição direcional, uma combinação de modos de intrapredição direcional ou uma combinação de modos de intrapredição não direcionais.
[00547] A Figura 44 é um diagrama que ilustra ângulos formados entre uma linha reta paralela ao eixo x e modos de intrapredição direcional.
[00548] No exemplo mostrado na Figura 44, os modos de predição direcional podem variar de uma direção diagonal inferior esquerda a uma direção diagonal superior direita. Quando a seguinte descrição assume um ângulo formado entre o eixo x e o modo de predição direcional, os modos de predição direcional podem variar entre 45 graus (na direção diagonal inferior esquerda) e -135 graus (na direção diagonal superior direita).
[00549] Quando o bloco atual não é quadrado, uma amostra de predição pode ser derivada com o uso de uma amostra de referência longe da amostra de predição entre as amostras de referência localizadas na linha angular em conformidade com o ângulo de intrapredição em vez de uma amostra de referência perto da amostra de predição, dependendo do modo de intrapredição do bloco atual.
[00550] A Figura 45 é um diagrama que mostra um aspecto no qual uma amostra de predição é adquirida quando o bloco atual não é quadrado.
[00551] Por exemplo, como no exemplo mostrado na Figura 45A, assume-se que o bloco atual tem um formato não quadrado em que a largura é maior do que a altura e que o modo de intrapredição do bloco atual é um modo de intrapredição direcional que tem um ângulo entre 0 graus e 45 graus. Nesse caso, ao derivar a amostra de predição A perto da coluna direita do bloco atual, a amostra de referência esquerda L longe da amostra de predição entre as amostras de referência localizadas na linha angular em conformidade com o ângulo pode ser usada em vez da amostra de referência superior T perto para a amostra de predição.
[00552] Como outro exemplo, como no exemplo mostrado na Figura 45B, assume-se que o bloco atual tem um formato não quadrado em que a altura é maior do que a largura e que o modo de intrapredição do bloco atual é um modo de intrapredição direcional que tem um ângulo entre -90 graus e -135 graus. Nesse caso, ao derivar a amostra de predição A perto da linha inferior do bloco atual, a amostra de referência superior T longe da amostra de predição entre as amostras de referência localizadas na linha angular em conformidade com o ângulo pode ser usada em vez da amostra de referência esquerda L perto da amostra de predição.
[00553] A fim de solucionar tal problema, quando o bloco atual não é quadrado, o modo de intrapredição do bloco atual pode ser substituído pelo modo de intrapredição na direção oposta. Assim, os modos de predição direcional que têm um ângulo maior ou menor do que os modos de predição direcional mostrados na Figura 41 podem ser usados para blocos não quadrados. Esse modo de intrapredição direcional pode ser definido como um modo de intrapredição de ângulo amplo. O modo de intrapredição de ângulo amplo representa um modo de intrapredição direcional que não está na faixa entre 45 graus e -135 graus.
[00554] A Figura 46 é um diagrama que mostra modos de intrapredição de ângulo amplo.
[00555] No exemplo mostrado na Figura 46, os modos de intrapredição com um índice entre -1 e -14 e os modos de intrapredição com um índice entre 67 e 80 indicam modos de intrapredição de ângulo amplo.
[00556] Na Figura 46, 14 modos de intrapredição de ângulo amplo que têm um ângulo maior do que 45 graus (-1 a - 14) e 14 modos de intrapredição de ângulo amplo que têm um ângulo menor do que -135 graus (67 a 80) são ilustrados, mas pode ser definido um número maior ou menor de modos de intrapredição de ângulo amplo.
[00557] Quando é usado um modo de intrapredição de ângulo amplo, o comprimento das amostras de referência superiores pode ser definido como 2W+1, e o comprimento das amostras de referência esquerdas pode ser definido como 2H+1.
[00558] Quando é usado um modo de intrapredição de ângulo amplo, a amostra A mostrada na Figura 45A pode ser predita com o uso da amostra de referência T e a amostra A mostrada na Figura 45B pode ser predita com o uso da amostra de referência L.
[00559] Um total de 67+N modos de intrapredição pode ser usado adicionando-se N modos de intrapredição de ângulo amplo aos modos de intrapredição existentes. Como exemplo, a Tabela 7 mostra os parâmetros de intradireção dos modos de intrapredição quando 20 modos de intrapredição de ângulo amplo são definidos. [TABELA 7] PredModeIntra -10 -9 -8 -7 -6 -5 -4 -3 -2 intraPredAngle 114 93 79 68 60 54 49 45 39 PredModeIntra -1 2 3 4 5 6 7 8 9 intraPredAngle 35 32 29 26 23 21 19 17 15 PredModeIntra 10 11 12 13 14 15 16 17 18 intraPredAngle 13 11 9 7 5 3 2 1 0
PredModeIntra 19 20 21 22 23 24 25 26 27 intraPredAngle -1 -2 -3 -5 -7 -9 -11 -13 -15 PredModeIntra 28 29 30 31 32 33 34 35 36 intraPredAngle -17 -19 -21 -23 -26 -29 -32 -29 -26 PredModeIntra 37 38 39 40 41 42 43 44 45 intraPredAngle -23 -21 -19 -17 -15 -13 -11 -9 -7 PredModeIntra 46 47 48 49 50 51 52 53 54 intraPredAngle -5 -3 -2 -1 0 1 2 3 5 PredModeIntra 55 56 57 58 59 60 61 62 63 intraPredAngle 7 9 11 13 15 17 19 21 23 PredModeIntra 64 65 66 67 68 69 70 71 72 intraPredAngle 26 29 32 35 39 45 49 54 60 PredModeIntra 73 74 75 76 intraPredAngle 68 79 93 114
[00560] Quando o bloco atual não é quadrado e o modo de intrapredição do bloco atual adquirido em S4002 está dentro da faixa de transformação, o modo de intrapredição do bloco atual pode ser transformado no modo de intrapredição de ângulo amplo. A faixa de transformação pode ser determinada com base em pelo menos um dentre o tamanho, formato ou proporção do bloco atual. Aqui, a proporção pode indicar uma proporção entre a largura e a altura do bloco atual.
[00561] Quando o bloco atual tem uma forma não quadrada em que a largura é maior do que a altura, a faixa de transformação pode ser definida em uma faixa do índice de modo de intrapredição da direção diagonal superior direita (por exemplo, 66) ao índice de modo de intrapredição da direção diagonal superior direita menos N. Aqui, N pode ser determinado com base na razão do bloco atual. Quando o modo de intrapredição do bloco atual está dentro da faixa de transformação, o modo de intrapredição pode ser transformado no modo de intrapredição de ângulo amplo. A transformação pode ser para subtrair um valor predefinido do modo de intrapredição, e o valor predefinido pode ser o número total (por exemplo, 67) de modos de intrapredição, exceto os modos de intrapredição de ângulo amplo.
[00562] De acordo com a modalidade acima, os modos de intrapredição no 66 a no 53 podem ser transformados em modos de intrapredição de ângulo amplo no -1 a no -14, respectivamente.
[00563] Quando o bloco atual tem uma forma não quadrada em que a altura é maior do que a largura, a faixa de transformação pode ser definida em uma faixa do índice de modo de intrapredição da direção diagonal inferior esquerda (por exemplo, 2) ao índice do modo de intrapredição da direção diagonal inferior esquerda mais M. Aqui, M pode ser determinado com base na razão do bloco atual. Quando o modo de intrapredição do bloco atual está dentro da faixa de transformação, o modo de intrapredição pode ser transformado no modo de intrapredição de ângulo amplo. A transformação pode ser para adicionar um valor predefinido ao modo de intrapredição, e o valor predefinido pode ser o número total (por exemplo, 65) de modos de intrapredição direcional excluindo os modos de intrapredição de ângulo amplo.
[00564] De acordo com a modalidade acima, os modos de intrapredição no 2 a no 15 podem ser transformados em modos de intrapredição de ângulo amplo no 67 a no 80, respectivamente.
[00565] Os modos de intrapredição que estão dentro da faixa de transformação serão denominados como modos de intrapredição de ângulo amplo alternativos.
[00566] A faixa de transformação pode ser determinada com base na razão do bloco atual. Como exemplo, a Tabela 8 e a Tabela 9 representam uma faixa de transformação em que 35 modos de intrapredição, exceto modos de intrapredição de ângulo amplo, são definidos e uma faixa de transformação em que 67 modos de intrapredição são definidos. [TABELA 8] Condição Modos de Intrapredição Substituídos W/H = 2 Modos 2, 3, 4 W/H > 2 Modos 2, 3, 4, 5, 6 W/H = 1 Nenhum H/W = 1/2 Modos 32, 33, 34 H/W < 1/2 Modos 30, 31, 32, 33, 34 [TABELA 9] Condição Modos de Intrapredição Substituídos W/H = 2 Modos 2, 3, 4, 5, 6, 7 W/H > 2 Modos 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 W/H = 1 Nenhum H/W = 1/2 Modos 61, 62, 63, 64, 65, 66 H/W < 1/2 Modos 57, 58, 59, 60, 61, 62, 63, 64, 65, 66
[00567] Nos exemplos mostrados na Tabela 8 e na
Tabela 9, o número de modos de intrapredição de ângulo amplo alternativos que estão dentro da faixa de transformação pode diferir dependendo da razão do bloco atual.
[00568] A faixa de transformação, conforme mostrado na Tabela 10 abaixo, pode ser definida subdividindo- se a razão do bloco atual. [TABELA 10] Condição Modos de Intrapredição Substituídos W/H = 16 Modos 12, 13, 14, 15 W/H = 8 Modos 12, 13 W/H = 4 Modos 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 H/W = 2 Modos 2, 3, 4, 5, 6, 7 H/W = 1 Nenhum W/H = 1/2 Modos 61, 62, 63, 64, 65, 66 W/H = 1/4 Modos 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 W/H = 1/8 Modos 55, 56 H/W = 1/16 Modos 53, 54, 55, 56
[00569] Quando uma linha de amostra de referência não adjacente é determinada como a linha de amostra de referência do bloco atual ou quando é usado um método de conversão em código intrapreditivo de múltiplas linhas para selecionar uma de uma pluralidade de linhas de amostra de referência, uma configuração pode ser feita de modo que um modo de intrapredição de ângulo amplo não é usado. Ou seja, mesmo quando o bloco atual não é quadrado e o modo de intrapredição do bloco atual está dentro da faixa de transformação, o modo de intrapredição do bloco atual pode não ser transformado no modo de intrapredição de ângulo amplo.
[00570] Alternativamente, quando o modo de intrapredição do bloco atual é determinado como o modo de intrapredição de ângulo amplo, pode ser feita uma configuração de modo que as linhas de amostra de referência não adjacentes não estejam disponíveis como a linha de amostra de referência do bloco atual, ou pode ser feita uma configuração de modo que não seja usado o método de codificação intrapreditivo de múltiplas linhas para selecionar uma da pluralidade de linhas de amostra de referência. Quando o método de codificação de intrapredição de múltiplas linhas não é usado, uma linha de amostra de referência adjacente pode ser determinada como a linha de amostra de referência do bloco atual.
[00571] Quando o modo de intrapredição de ângulo amplo não é usado, refW e refH podem ser definidos como a soma de nTbW e nTbH. Por conseguinte, exceto para as amostras de referência superiores esquerdas, uma amostra de referência não adjacente com uma distância de i do bloco atual pode incluir amostras de referência superiores (nTbW + nTbH + offsetX[i]) e amostras de referência esquerdas (nTbW + nTbH + offsetY[i]). Ou seja, uma amostra de referência não adjacente com uma distância de i do bloco atual pode incluir as amostras de referência (2nTbW + 2nTbH + offsetX[i] + offsetY[i] + 1). Por exemplo, quando o valor de whRatio é maior do que 1, pode ser feita uma configuração de forma que o valor de offsetX seja maior do que o valor de offsetY. Como exemplo, o valor de offsetX pode ser definido como 1 e o valor de offsetY pode ser definido como 0. Por outro lado, quando o valor de whRatio é menor do que 1, pode ser feita uma configuração de forma que o valor de offsetY seja maior do que o valor de offsetX. Como exemplo, o valor de offsetX pode ser definido como 0 e o valor de offsetY pode ser definido como 1.
[00572] Como os modos de intrapredição de ângulo amplo são usados além dos modos de intrapredição existentes, os recursos necessários para codificar os modos de intrapredição de ângulo amplo podem ser aumentados e, assim, a eficiência de codificação pode ser reduzida. Por conseguinte, ao codificar modos de intrapredição alternativos para os modos de intrapredição de ângulo amplo, em vez de codificar os modos de intrapredição de ângulo amplo como os mesmos são, é possível melhorar a eficiência de codificação.
[00573] Como exemplo, quando o bloco atual é codificado no modo de intrapredição de ângulo amplo no 67, o modo de intrapredição de ângulo amplo no 2, que é um modo alternativo de intrapredição de ângulo amplo para no 67, pode ser codificado para o modo de intrapredição do bloco atual. Além disso, quando o bloco atual é codificado no modo de intrapredição de ângulo amplo no -1, o modo de intrapredição de ângulo amplo no 66, que é um modo alternativo de intrapredição de ângulo amplo para no -1, pode ser codificado para o modo de intrapredição do bloco atual.
[00574] O decodificador pode decodificar o modo de intrapredição do bloco atual e pode determinar se o modo de intrapredição decodificado está dentro da faixa de transformação. Quando o modo de intrapredição decodificado é um modo de intrapredição de ângulo amplo alternativo, o modo de intrapredição pode ser transformado no modo de intrapredição de ângulo amplo.
[00575] Alternativamente, quando o bloco atual é codificado no modo de intrapredição de ângulo amplo, o modo de intrapredição de ângulo amplo pode ser codificado como está.
[00576] A codificação do modo de intrapredição pode ser realizada com base na lista de MPM descrita acima. Em detalhes, quando um bloco vizinho é codificado no modo de intrapredição de ângulo amplo, um MPM pode ser definido com base em um modo de intrapredição de ângulo amplo alternativo que corresponde ao modo de intrapredição de ângulo amplo.
[00577] Uma imagem residual pode ser derivada subtraindo-se uma imagem de predição de uma imagem original. Nesse caso, quando a imagem residual é alterada para o domínio da frequência, a qualidade da imagem subjetiva da imagem não diminui significativamente, mesmo se os componentes de alta frequência forem removidos dos componentes de frequência. Por conseguinte, quando os valores dos componentes de alta frequência são alterados para valores pequenos ou quando os valores dos componentes de alta frequência são definidos como 0, é possível aumentar a eficiência de compressão sem causar distorção visual significativa. Considerando as características acima, o bloco atual pode ser transformado a fim de decompor a imagem residual em componentes de frequência bidimensionais. A transformação pode ser realizada com o uso de uma técnica de transformação, como Transformada Discreta de Cosseno (DCT) ou Transformada Discreta de Seno (DST).
[00578] O DCT usa a transformação de cosseno para decompor (ou transformar) a imagem residual em componentes de frequência bidimensionais e o DST usa a transformação de seno para decompor (ou transformar) a imagem residual em componentes de frequência bidimensionais. Como resultado da transformação da imagem residual, os componentes de frequência podem ser expressos com um padrão de base. Como exemplo, quando o DCT é realizado em um bloco N×N, os componentes padrão básicos N2 podem ser adquiridos. O tamanho de cada um dos componentes padrão básicos incluídos no bloco N×N pode ser adquirido através da transformação. De acordo com a técnica de transformação usada, o tamanho do componente padrão básico pode ser denominado como um coeficiente DCT ou um coeficiente DST.
[00579] A técnica de transformação DCT é usada principalmente para transformar uma imagem na qual muitos componentes de baixa frequência diferentes de zero são distribuídos. A técnica de transformação DST é usada principalmente para uma imagem na qual muitos componentes de alta frequência são distribuídos.
[00580] A imagem residual pode ser transformada com o uso de uma técnica de transformação diferente de DCT ou DST.
[00581] A transformação da imagem residual em componentes de frequência bidimensionais será denominada como uma transformação bidimensional. Além disso, o tamanho dos componentes básicos do padrão adquiridos através do resultado da transformação será denominado como um coeficiente de transformação. Como exemplo, o coeficiente de transformação pode se referir a um coeficiente DCT ou um coeficiente DST. Quando a primeira transformação e a segunda transformação a serem descritas abaixo são aplicadas, o coeficiente de transformação pode se referir ao tamanho de um componente de padrão básico gerado como resultado da segunda transformação.
[00582] A técnica de transformação pode ser determinada em unidades de blocos. A técnica de transformação pode ser determinada com base em pelo menos um dentre o modo de conversão em código preditiva do bloco atual ou o tamanho do bloco atual. Como exemplo, quando o bloco atual é codificado no modo de intrapredição e o tamanho do bloco atual é menor do que N×N, a transformação pode ser realizada com o uso da técnica de transformação DST. Por outro lado, quando a condição acima não é satisfeita, a transformação pode ser realizada com o uso da técnica de transformação DCT.
[00583] A transformação bidimensional não pode ser realizada em alguns blocos da imagem residual. Não realizar a transformação bidimensional pode ser denominado como salto de transformação. Quando o salto de transformação é aplicado, a quantização pode ser aplicada a valores residuais nos quais a transformação não é realizada.
[00584] Depois que o bloco atual é transformado com o uso de DCT ou DST, o bloco atual transformado pode ser retransformado. Nesse caso, a transformação com base em DCT ou DST pode ser definida como a primeira transformação e a retrotransformação de um bloco submetido à primeira transformação pode ser definida como a segunda transformação.
[00585] A primeira transformação pode ser realizada com o uso de um de uma pluralidade de candidatos a núcleo de transformação. Como exemplo, a primeira transformação pode ser realizada com o uso de um dentre DCT2, DCT8 ou DCT7.
[00586] Diferentes núcleos de transformação podem ser usados na direção horizontal e na direção vertical. As informações que indicam uma combinação do núcleo de transformação vertical e do núcleo de transformação horizontal podem ser sinalizadas em um fluxo de bits.
[00587] A primeira transformação e a segunda transformação podem ser realizadas em unidades diferentes. Como exemplo, a primeira transformação pode ser realizada em um bloco 8×8 e a segunda transformação pode ser realizada em um sub-bloco 4×4 do bloco 8×8 transformado. Nesse caso, o coeficiente de transformação das regiões residuais em que a segunda transformação não é realizada pode ser definido como
0.
[00588] Alternativamente, a primeira transformação pode ser realizada em um bloco 4×4 e a segunda transformação pode ser realizada na região de um bloco 8×8 que inclui o bloco 4×4 transformado.
[00589] As informações que indicam se deve-se realizar a segunda transformação podem ser sinalizadas em um fluxo de bits.
[00590] O decodificador pode realizar uma transformação inversa da segunda transformação (uma segunda transformação inversa) e pode realizar uma transformação inversa da primeira transformação (uma primeira transformação inversa) em um resultado da segunda transformação inversa. Como resultado de realizar a segunda transformação inversa e a primeira transformação inversa, os sinais residuais para o bloco atual podem ser adquiridos.
[00591] A quantização é para reduzir a energia de um bloco, e o processo de quantização inclui dividir um coeficiente de transformação por um valor constante específico. O valor constante pode ser derivado por um parâmetro de quantização e o parâmetro de quantização pode ser definido como um valor entre 1 e 63.
[00592] Quando uma transformação e quantização são realizadas pelo codificador, o decodificador pode adquirir um bloco residual através de uma quantização inversa e uma transformação inversa. O decodificador pode adquirir um bloco reconstruído para o bloco atual adicionando o bloco de predição e o bloco residual.
[00593] Quando o bloco reconstruído do bloco atual é adquirido, a perda de informações que ocorre durante a quantização e codificação pode ser reduzida por meio de filtragem em circuito. Um filtro em circuito pode incluir pelo menos um dentre um filtro de desblocagem, um filtro de deslocamento adaptativo de amostra (SAO) ou um filtro de circuito adaptativo (ALF). Um bloco reconstruído antes de um filtro em circuito ser aplicado será denominado como um primeiro bloco reconstruído, e um bloco reconstruído após um filtro em circuito ser aplicado será denominado como um segundo bloco reconstruído.
[00594] O segundo bloco reconstruído pode ser adquirido aplicando-se pelo menos um dentre o filtro de desblocagem, SAO ou ALF ao primeiro bloco reconstruído. Nesse caso, o SAO ou ALF pode ser aplicado após a aplicação do filtro de desblocagem.
[00595] O filtro de desblocagem é para aliviar a deterioração da qualidade da imagem (artefato de blocagem) que ocorre na borda de bloco quando uma quantização é realizada em unidades de blocos. A fim de aplicar o filtro de desblocagem, pode ser determinada a força de blocagem (BS) entre o primeiro bloco reconstruído e um bloco reconstruído vizinho.
[00596] A Figura 47 é um fluxograma que mostra um processo para determinar a força de blocagem.
[00597] No exemplo mostrado na Figura 47, P representa o primeiro bloco reconstruído e Q representa o bloco reconstruído vizinho. Aqui, o bloco reconstruído vizinho pode ser um bloco vizinho à esquerda ou à parte superior do bloco atual.
[00598] No exemplo mostrado na Figura 47, é mostrado que a força de blocagem é determinada considerando os modos de codificação preditivos de P e Q, se coeficientes de transformação diferentes de zero estão incluídos, se a interpredição é realizada com o uso da mesma imagem de referência ou se um valor de diferença entre vetores de movimento é maior ou igual a um valor limiar.
[00599] Pode ser determinado se deve-se aplicar o filtro de desblocagem com base na força de blocagem. Como exemplo, a filtragem não pode ser realizada quando a força de blocagem é 0.
[00600] O SAO serve para aliviar um artefato de interferência que ocorre quando uma quantização é realizada no domínio da frequência. O SAO pode ser realizado através de adição ou subtração de um deslocamento determinado considerando um padrão da primeira imagem reconstruída. Um método para determinar o deslocamento inclui um deslocamento de borda (EO) ou um deslocamento de banda (BO). O EO indica um método para determinar um deslocamento da amostra atual de acordo com um padrão de pixels próximos. O BO indica um método para aplicar um deslocamento comum a um conjunto de pixels com valores de brilho semelhantes em uma região. Em detalhes, o brilho do pixel é dividido em 32 seções iguais, e pixels com valores de brilho semelhantes podem ser definidos como um conjunto. Como exemplo, quatro bandas adjacentes entre 32 bandas podem ser definidas como um grupo e o mesmo valor de deslocamento pode ser aplicado a amostras que pertencem às quatro bandas.
[00601] O ALF é um método para gerar a segunda imagem reconstruída aplicando-se um filtro de um tamanho ou formato predefinido à primeira imagem reconstruída ou a uma imagem reconstruída à qual o filtro de desblocagem é aplicado. A Equação 34 abaixo representa um exemplo de aplicação do ALF. [Equação 34]
[00602] Um dos candidatos a filtro predefinidos pode ser selecionado em unidades de imagens, unidades de árvore de conversão em código, blocos de conversão em código, blocos de predição ou blocos de transformação. Os candidatos a filtro podem ser de tamanho ou formato diferente.
[00603] A Figura 48 mostra candidatos a filtros predefinidos.
[00604] No exemplo mostrado na Figura 48, pelo menos um dentre um formato de diamante 5×5, um formato de diamante 7×7 ou um formato de diamante 9×9 pode ser selecionado.
[00605] Apenas o formato de diamante 5×5 pode ser usado para um componente croma.
[00606] A aplicação das modalidades que foram descritas com foco em um processo de decodificação ou um processo de codificação ao processo de decodificação ou ao processo de codificação está dentro do escopo da presente invenção. A mudança de uma ordem predeterminada, na qual as modalidades foram descritas, para uma ordem diferente daquela descrita acima também está dentro do escopo da presente invenção.
[00607] Embora as modalidades acima tenham sido descritas com base em uma série de etapas ou fluxos, as etapas ou fluxos não limitam a ordem da série temporal da invenção e podem ser realizados simultaneamente ou em ordens diferentes, 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 pode ser implantado por um dispositivo de hardware ou software, e uma pluralidade de componentes pode ser combinada e implantada por um único dispositivo de hardware ou software. As modalidades acima podem ser implantadas na forma de instruções de programa que podem ser realizadas por meio de vários elementos de computador e gravadas em uma mídia de gravação legível por computador. A mídia de gravação legível por computador pode incluir uma instrução de programa, um arquivo de dados, uma estrutura de dados e similares, isoladamente ou em combinação. Exemplos da mídia de gravação legível por computador incluem mídia magnética, como um disco rígido, um disquete e uma fita magnética, mídia óptica como um disco compacto de memória somente de leitura (CD-ROM) e um disco versátil digital (DVD), mídia magneto-óptica, como um disco flexível, e dispositivos de hardware, como um ROM, uma memória de acesso aleatório (RAM) e uma memória flash, que são especialmente projetados para armazenar e executar instruções de programa. O dispositivo de hardware pode ser configurado para operar como um ou mais módulos de software a fim de realizar as operações da presente invenção e vice-versa.
APLICABILIDADE INDUSTRIAL
[00608] A presente invenção pode ser aplicada a um dispositivo eletrônico para codificar ou decodificar vídeos.

Claims (15)

REIVINDICAÇÕES
1. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender: determinar se deve-se separar um bloco de conversão em código a fim de compreender uma primeira unidade de predição e uma segunda unidade de predição; determinar um tipo de partição do bloco de conversão em código quando for determinado que deve-se separar o bloco de conversão em código; derivar as primeiras informações de movimento em relação à primeira unidade de predição no bloco de conversão em código e as segundas informações de movimento em relação à segunda unidade de predição no bloco de conversão em código; e adquirir uma amostra de predição no bloco de conversão em código com base nas primeiras informações de movimento e nas segundas informações de movimento, em que as primeiras informações de movimento em relação à primeira unidade de predição são derivadas de um primeiro candidato a mesclagem especificado pelas primeiras informações de índice entre uma pluralidade de candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem, e as segundas informações de movimento em relação à segunda unidade de predição são derivadas de um segundo candidato a mesclagem especificado pelas segundas informações de índice entre a pluralidade de candidatos a mesclagem incluídos na lista de candidatos a mesclagem.
2. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 1, caracterizado pelo segundo candidato a mesclagem ter um índice igual ao valor das segundas informações de índice mais um quando um valor das segundas informações de índice é maior ou igual a um valor das primeiras informações de índice.
3. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 1, caracterizado pelo segundo candidato a mesclagem ter um índice igual ao valor das segundas informações de índice quando um valor das segundas informações de índice é menor do que um valor das primeiras informações de índice.
4. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 1, caracterizado pela amostra de predição ser derivada com base em uma operação de soma ponderada de uma primeira amostra de predição derivada com base nas primeiras informações de movimento e uma segunda amostra de predição derivada com base nas segundas informações de movimento quando a amostra de predição é incluída em uma região limite entre a primeira unidade de predição e a segunda unidade de predição.
5. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 4, caracterizado pelo primeiro peso aplicado à primeira amostra de predição ser determinado com base em uma coordenada x e uma coordenada y da amostra de predição.
6. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 5, caracterizado pelo segundo peso aplicado à segunda amostra de predição ser derivado subtraindo-se o primeiro peso de um valor constante.
7. MÉTODO DE CODIFICAÇÃO DE VÍDEO, caracterizado por compreender: determinar se deve-se separar um bloco de conversão em código a fim de compreender uma primeira unidade de predição e uma segunda unidade de predição;
determinar um tipo de partição do bloco de conversão em código quando for determinado que deve-se separar o bloco de conversão em código; derivar as primeiras informações de movimento em relação à primeira unidade de predição no bloco de conversão em código e as segundas informações de movimento em relação à segunda unidade de predição no bloco de conversão em código; e adquirir uma amostra de predição no bloco de conversão em código com base nas primeiras informações de movimento e nas segundas informações de movimento, em que as primeiras informações de movimento em relação à primeira unidade de predição são derivadas de um primeiro candidato a mesclagem entre uma pluralidade de candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem, as segundas informações de movimento em relação à segunda unidade de predição são derivadas de um segundo candidato a mesclagem entre a pluralidade de candidatos a mesclagem incluídos na lista de candidatos a mesclagem, e as primeiras informações de índice para especificar o primeiro candidato a mesclagem e as segundas informações de índice para especificar o segundo candidato a mesclagem são codificadas respectivamente.
8. MÉTODO DE CODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 7, caracterizado pelas segundas informações de índice serem codificadas com um valor obtido subtraindo-se um do índice do segundo candidato a mesclagem quando um índice do segundo candidato a mesclagem é maior do que um índice do primeiro candidato a mesclagem.
9. MÉTODO DE CODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 7, caracterizado pelas segundas informações de índice serem codificadas com um valor do índice do segundo candidato a mesclagem quando um índice do segundo candidato a mesclagem é menor do que um índice do primeiro candidato a mesclagem.
10. APARELHO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender: uma unidade de interpredição configurada para determinar se deve-se separar um bloco de conversão em código a fim de compreender uma primeira unidade de predição e uma segunda unidade de predição, determinar um tipo de partição do bloco de conversão em código quando for determinado que deve- se separar o bloco de conversão em código, derivar as primeiras informações de movimento em relação à primeira unidade de predição no bloco de conversão em código e as segundas informações de movimento em relação à segunda unidade de predição no bloco de conversão em código e adquirir uma amostra de predição no bloco de conversão em código com base nas primeiras informações de movimento e nas segundas informações de movimento, em que as primeiras informações de movimento em relação à primeira unidade de predição são derivadas de um primeiro candidato a mesclagem especificado pelas primeiras informações de índice entre uma pluralidade de candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem e as segundas informações de movimento em relação à segunda unidade de predição são derivadas de um segundo candidato a mesclagem especificado pelas segundas informações de índice entre a pluralidade de candidatos a mesclagem incluídos na lista de candidatos a mesclagem.
11. APARELHO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 10, caracterizado pelo segundo candidato a mesclagem ter um índice igual ao valor das segundas informações de índice mais um quando um valor das segundas informações de índice é maior ou igual a um valor das primeiras informações de índice.
12. APARELHO DE DECODIFICAÇÃO DE VÍDEO, de acordo com a reivindicação 10, caracterizado pelo segundo candidato a mesclagem ter um índice igual ao valor das segundas informações de índice quando um valor das segundas informações de índice é menor do que um valor das primeiras informações de índice.
13. CODIFICADOR DE VÍDEO, caracterizado por compreender: um processador de hardware, em que o processador de hardware é configurado para: determinar se deve-se separar um bloco de conversão em código a fim de compreender uma primeira unidade de predição e uma segunda unidade de predição; determinar um tipo de partição do bloco de conversão em código quando for determinado que deve-se separar o bloco de conversão em código; derivar as primeiras informações de movimento em relação à primeira unidade de predição no bloco de conversão em código e as segundas informações de movimento em relação à segunda unidade de predição no bloco de conversão em código; e adquirir uma amostra de predição no bloco de conversão em código com base nas primeiras informações de movimento e nas segundas informações de movimento, em que as primeiras informações de movimento em relação à primeira unidade de predição são derivadas de um primeiro candidato a mesclagem dentre uma pluralidade de candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem, as segundas informações de movimento em relação à segunda unidade de predição são derivadas de um segundo candidato a mesclagem dentre a pluralidade de candidatos a mesclagem incluídos na lista de candidatos a mesclagem, e as primeiras informações de índice para especificar o primeiro candidato a mesclagem e as segundas informações de índice para especificar o segundo candidato a mesclagem são codificadas respectivamente.
14. CODIFICADOR DE VÍDEO, de acordo com a reivindicação 13, caracterizado pelas segundas informações de índice serem codificadas com um valor obtido subtraindo-se um do índice do segundo candidato a mesclagem quando um índice do segundo candidato a mesclagem é maior do que um índice do primeiro candidato a mesclagem.
15. CODIFICADOR DE VÍDEO, de acordo com a reivindicação 13, caracterizado pelas segundas informações de índice serem codificadas com um valor do índice do segundo candidato a mesclagem quando um índice do segundo candidato a mesclagem é menor do que um índice do primeiro candidato a mesclagem.
BR112021008298-0A 2018-11-08 2019-11-07 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 BR112021008298A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
KR20180136255 2018-11-08
KR10-2018-0136255 2018-11-08
KR20180149064 2018-11-27
KR10-2018-0148890 2018-11-27
KR10-2018-0149064 2018-11-27
KR20180148890 2018-11-27
PCT/KR2019/015096 WO2020096388A1 (ko) 2018-11-08 2019-11-07 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Publications (1)

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

Family

ID=70611034

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021008298-0A BR112021008298A2 (pt) 2018-11-08 2019-11-07 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

Country Status (18)

Country Link
US (3) US11470312B2 (pt)
EP (2) EP4274233A3 (pt)
JP (2) JP7430721B2 (pt)
KR (1) KR20200054104A (pt)
CN (4) CN116248870A (pt)
BR (1) BR112021008298A2 (pt)
CA (2) CA3207984A1 (pt)
CL (1) CL2021001128A1 (pt)
DK (1) DK3876539T3 (pt)
FI (1) FI3876539T3 (pt)
IL (2) IL282761B2 (pt)
MX (1) MX2021005504A (pt)
PH (1) PH12021550966A1 (pt)
PL (1) PL3876539T3 (pt)
PT (1) PT3876539T (pt)
SG (1) SG11202104433RA (pt)
WO (1) WO2020096388A1 (pt)
ZA (1) ZA202103439B (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10742975B2 (en) * 2017-05-09 2020-08-11 Futurewei Technologies, Inc. Intra-prediction with multiple reference lines
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
KR20210072118A (ko) * 2018-12-07 2021-06-16 삼성전자주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
WO2020130716A1 (ko) * 2018-12-21 2020-06-25 삼성전자주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
KR20200083337A (ko) * 2018-12-28 2020-07-08 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
US10742972B1 (en) * 2019-03-08 2020-08-11 Tencent America LLC Merge list construction in triangular prediction
WO2022177380A1 (ko) * 2021-02-18 2022-08-25 현대자동차주식회사 인터 예측 기반의 비디오 부호화 및 복호화
JP2023156061A (ja) * 2022-04-12 2023-10-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP2023156064A (ja) * 2022-04-12 2023-10-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP2023156062A (ja) * 2022-04-12 2023-10-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103444181B (zh) 2011-04-12 2018-04-20 太阳专利托管公司 运动图像编码方法、运动图像编码装置、运动图像解码方法、运动图像解码装置及运动图像编码解码装置
CN104378637B (zh) * 2011-10-18 2017-11-21 株式会社Kt 视频信号解码方法
US20130114717A1 (en) 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
SI3833023T1 (sl) 2012-04-12 2022-06-30 Jvckenwood Corporation Konstruiranje seznama kandidatov za spajanje
US10182240B2 (en) 2014-11-18 2019-01-15 Mediatek Inc. Method of bi-prediction video coding based on motion vectors from uni-prediction and merge candidate
US10271064B2 (en) * 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
KR20170058838A (ko) 2015-11-19 2017-05-29 한국전자통신연구원 화면간 예측 향상을 위한 부호화/복호화 방법 및 장치
WO2017086738A1 (ko) * 2015-11-19 2017-05-26 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
CN108293132A (zh) * 2015-11-24 2018-07-17 三星电子株式会社 图像编码方法和装置以及图像解码方法和装置
WO2017123133A1 (en) * 2016-01-12 2017-07-20 Telefonaktiebolaget Lm Ericsson (Publ) Video coding using hybrid intra prediction
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
WO2018034373A1 (ko) 2016-08-19 2018-02-22 엘지전자(주) 영상 처리 방법 및 이를 위한 장치
US10715827B2 (en) * 2017-01-06 2020-07-14 Mediatek Inc. Multi-hypotheses merge mode
WO2018131982A1 (ko) * 2017-01-16 2018-07-19 세종대학교 산학협력단 영상 신호 부호화/복호화 방법 및 장치
US20190364284A1 (en) 2017-01-16 2019-11-28 Industry Academy Cooperation Foundation Of Sejong University Image encoding/decoding method and device
KR20180084659A (ko) * 2017-01-16 2018-07-25 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
CN111886861B (zh) * 2018-02-22 2023-12-22 Lg电子株式会社 根据图像编码系统中的块划分结构的图像解码方法和设备
CN115695785B (zh) * 2018-10-27 2023-06-06 华为技术有限公司 图像预测方法及装置
CN112956202A (zh) * 2018-11-06 2021-06-11 北京字节跳动网络技术有限公司 利用几何分割的帧间预测的扩展
AU2019384016B2 (en) 2018-11-22 2023-03-02 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods for inter prediction
US10778977B2 (en) 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US10893298B2 (en) 2018-12-12 2021-01-12 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
CN113395519A (zh) 2021-09-14
CN116248870A (zh) 2023-06-09
US11470312B2 (en) 2022-10-11
PT3876539T (pt) 2024-02-06
IL282761B1 (en) 2023-12-01
CA3118269A1 (en) 2020-05-14
CN112970260A (zh) 2021-06-15
EP3876539B1 (en) 2023-12-27
WO2020096388A1 (ko) 2020-05-14
US20210337196A1 (en) 2021-10-28
PH12021550966A1 (en) 2021-12-06
KR20200054104A (ko) 2020-05-19
EP4274233A2 (en) 2023-11-08
AU2019375315A1 (en) 2021-06-03
IL282761A (en) 2021-06-30
EP3876539A1 (en) 2021-09-08
IL282761B2 (en) 2024-04-01
EP3876539A4 (en) 2021-12-29
JP2024045337A (ja) 2024-04-02
PL3876539T3 (pl) 2024-04-15
US20220337832A1 (en) 2022-10-20
JP7430721B2 (ja) 2024-02-13
CL2021001128A1 (es) 2021-11-19
CA3207984A1 (en) 2020-05-14
CN116248869A (zh) 2023-06-09
DK3876539T3 (da) 2024-02-12
MX2021005504A (es) 2021-06-18
ZA202103439B (en) 2022-07-27
CA3118269C (en) 2023-10-03
EP4274233A3 (en) 2023-11-22
JP2022509024A (ja) 2022-01-20
US20220337833A1 (en) 2022-10-20
SG11202104433RA (en) 2021-05-28
US11882282B2 (en) 2024-01-23
IL307153A (en) 2023-11-01
FI3876539T3 (fi) 2024-02-09
CN113395519B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
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
US11677940B2 (en) Method and device for encoding/decoding image, and recording medium having stored bitstream
ES2948265T3 (es) Método de codificación/descodificación de señales de imagen y aparato para el mismo
US20210306654A1 (en) Method for encoding/decoding image signal, and device therefor
US11632562B2 (en) Method for encoding/decoding video signal, and apparatus therefor
US11889077B2 (en) Method for encoding/decoding image signal and device therefor
BR112021005161A2 (pt) método de decodificação de vídeo, e método de codificação de vídeo
CN116074506A (zh) 视频信号编码/解码方法以及用于所述方法的设备
IL281625B2 (en) A method for encoding/decoding image signals and a device therefor
CN112823526B (zh) 通过使用交叉分量线性模型来处理视频信号的方法和设备
BR112021008625A2 (pt) método de decodificação e codificação de vídeo e aparelho de decodificação e codificação de vídeo
RU2817331C2 (ru) Способ и устройство для кодирования/декодирования сигнала изображения
RU2805056C2 (ru) Способ и устройство для кодирования/декодирования сигнала изображения
US20230269372A1 (en) Method and device for encoding/decoding image, and recording medium having stored bitstream
KR20230137825A (ko) 인접 정보 기반 팔레트 모드를 이용하는 비디오 코딩 방법 및 장치