BR112021015535B1 - Dispositivo de codificação de vídeo, método de codificação de vídeo, dispositivo de decodificação de vídeo e método de decodificação de vídeo - Google Patents

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

Info

Publication number
BR112021015535B1
BR112021015535B1 BR112021015535-0A BR112021015535A BR112021015535B1 BR 112021015535 B1 BR112021015535 B1 BR 112021015535B1 BR 112021015535 A BR112021015535 A BR 112021015535A BR 112021015535 B1 BR112021015535 B1 BR 112021015535B1
Authority
BR
Brazil
Prior art keywords
motion vector
merge
merge candidate
mode
prediction
Prior art date
Application number
BR112021015535-0A
Other languages
English (en)
Other versions
BR112021015535A2 (pt
Inventor
Shigeru Fukushima
Hideki Takehara
Hiroya Nakamura
Satoru Sakazume
Toru Kumakura
Hiroyuki Kurashige
Original Assignee
Jvckenwood Corporation
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 Jvckenwood Corporation filed Critical Jvckenwood Corporation
Publication of BR112021015535A2 publication Critical patent/BR112021015535A2/pt
Publication of BR112021015535B1 publication Critical patent/BR112021015535B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • 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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods 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 picture, frame or field
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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

Landscapes

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

Abstract

DISPOSITIVO DE CODIFICAÇÃO DE VÍDEO, MÉTODO DE CODIFICAÇÃO DE VÍDEO, PROGRAMA DE CODIFICAÇÃO DE VÍDEO, DISPOSITIVO DE DECODIFICAÇÃO DE VÍDEO, MÉ-TODO DE DECODIFICAÇÃO DE VÍDEO E PROGRAMA DE DECODI-FICAÇÃO DE VÍDEO. A presente invenção refere-se a uma unidade de construção de lista de candidato de mesclagem que constrói uma lista de candidato de mesclagem que inclui candidatos de mesclagem espacial; e uma unidade de seleção de candidato de mesclagem triangular que seleciona um primeiro candidato de mesclagem triangular submetido à uniprevisão e um segundo candidato de mesclagem triangular submetido à uniprevisão a partir da lista de candidato de mesclagem, em que a unidade de seleção de candidato de mesclagem triangular deriva candidatos de informação de movimento de uniprevisão tendo a mesma ordem de prioridade, para o primeiro candidato de mesclagem triangular e o segundo candidato de mesclagem triangular.

Description

ANTECEDENTES
[0001] A presente invenção refere-se a técnicas de conversão em código e decodificação de imagem, em que uma imagem é dividida em blocos e é realizada a previsão.
[0002] Na conversão em código e decodificação de uma imagem, uma imagem-alvo é dividida em blocos, sendo que cada um é um grupo de um número predeterminado de amostras, e o processamento é realizado em unidades de blocos. Dividir uma imagem em blocos apropriados com configurações apropriadas de intraprevisão e interprevisão permite melhorar a eficiência de conversão em código.
[0003] A conversão em código/decodificação de uma imagem em movimento usa a interprevisão que realiza a previsão a partir de uma imagem de convertida em código/decodificada, o que melhora, desse modo, a eficiência de conversão em código. A Literatura de Patentes 1 descreve uma técnica de aplicação de uma transformada afim no momento da interprevisão. As imagens em movimento frequentemente envolvem deformação de objeto, como ampliação/ redução ou rotação, e, desse modo, a aplicação da técnica, no Documento de Patente 1, permite uma conversão em código eficiente.
[0004] [Documento de Patente 1] JP 9-172644 A.
SUMÁRIO
[0005] Infelizmente, no entanto, a técnica do Documento de Patente 1. envolve transformação de imagem, o que leva a um problema de carga de processamento pesada. A presente invenção foi produzida tendo em vista o problema acima, e fornece uma carga baixa e uma técnica de conversão em código eficiente.
[0006] Em um aspecto da presente invenção para solucionar o problema acima, é fornecida uma técnica que inclui um construtor de lista de candidato de mesclagem que constrói uma lista de candidato de mesclagem que inclui os candidatos de mesclagem espacial, um seletor de candidato de mesclagem triangular que seleciona, a partir da lista de candidato de mesclagem, um primeiro candidato de mesclagem triangular que seja uniprevisão e um segundo candidato de mesclagem triangular que seja uniprevisão, em que o seletor de candidato de mesclagem triangular deriva um candidato de informação de movimento de uniprevisão tendo uma mesma prioridade no primeiro candidato de mesclagem triangular e no segundo candidato de mesclagem triangular.
[0007] De acordo com a presente invenção, é possível alcançar o processo de conversão em código/decodificação de imagem de carga altamente eficiente e baixa.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] A Figura 1 é um diagrama de blocos de um dispositivo de conversão em código de imagem, de acordo com uma modalidade da presente invenção.
[0009] A Figura 2 é um diagrama de blocos de um dispositivo de decodificação de imagem, de acordo com uma modalidade da presente invenção.
[0010] A Figura 3 é um fluxograma que ilustra a operação de divisão de um bloco de árvore.
[0011] A Figura 4 é um diagrama que ilustra um estado de divisão de uma imagem de entrada em blocos de árvore.
[0012] A Figura 5 é um diagrama que ilustra a varredura em z.
[0013] A Figura 6A é um diagrama que ilustra um formato dividido de um bloco.
[0014] A Figura 6B é um diagrama que ilustra um formato dividido de um bloco.
[0015] A Figura 6C é um diagrama que ilustra um formato dividido de um bloco.
[0016] A Figura 6D é um diagrama que ilustra um formato dividido de um bloco.
[0017] A Figura 6E é um diagrama que ilustra um formato dividido de um bloco.
[0018] A Figura 7 é um fluxograma que ilustra a operação de dividir um bloco em quatro.
[0019] A Figura 8 é um fluxograma que ilustra a operação de dividir um bloco em dois ou três.
[0020] A Figura 9 é a sintaxe para expressar o formato de divisão de blocos.
[0021] A Figura 10A é um diagrama que ilustra a intraprevisão.
[0022] A Figura 10B é um diagrama que ilustra a intraprevisão.
[0023] A Figura 11 é um diagrama que ilustra blocos de referência para interprevisão.
[0024] A Figura 12 é a sintaxe para expressar um modo de previsão de bloco de conversão em código.
[0025] A Figura 13 é um diagrama que ilustra uma correspondência entre os elementos de sintaxe e os modos relacionados à interprevisão.
[0026] A Figura 14 é um diagrama que ilustra a compensação de movimento afim em dois pontos de controle.
[0027] A Figura 15 é um diagrama que ilustra a compensação de movimento afim em três pontos de controle.
[0028] A Figura 16 é um diagrama de blocos de uma configuração detalhada de uma unidade de interprevisão 102, na Figura 1.
[0029] A Figura 17 é um diagrama de blocos de uma configuração detalhada de uma unidade de derivação do modo de previsor de vetor de movimento normal 301, na Figura 16.
[0030] A Figura 18 é um diagrama de blocos de uma configuração detalhada de uma unidade de derivação de modo de mesclagem normal 302, na Figura 16.
[0031] A Figura 19 é um fluxograma que ilustra um processo de derivação de modo de previsor de vetor de movimento normal da unidade de derivação de modo de previsor de vetor de movimento normal 301, na Figura 16.
[0032] A Figura 20 é um fluxograma que ilustra um procedimento de processamento do processo de derivação de modo de previsor de vetor de movimento normal.
[0033] A Figura 21 é um fluxograma que ilustra um procedimento de processamento de um processo de derivação de modo de mesclagem normal.
[0034] A Figura 22 é um diagrama de blocos de uma configuração detalhada de uma unidade interprevisão 203, na Figura 2.
[0035] A Figura 23 é um diagrama de blocos de uma configuração detalhada de uma unidade de derivação de modo de previsão de vetor de movimento normal 401, na Figura 22.
[0036] A Figura 24 é um diagrama de blocos de uma configuração detalhada de uma unidade de derivação de modo de mesclagem normal 402, na Figura 22.
[0037] A Figura 25 é um fluxograma que ilustra um processo de derivação de modo de previsor de vetor de movimento normal de uma unidade de derivação de modo de previsor de vetor de movimento normal 401, na Figura 22.
[0038] A Figura 26 é um diagrama que ilustra um procedimento de processamento de inicialização/ atualização de lista de candidato de previsor de vetor de movimento baseado em histórico.
[0039] A Figura 27 é um fluxograma de um procedimento de processamento de confirmação de elemento idêntico, no procedimento de processamento de inicialização/ atualização de lista de candidato de previsor de vetor de movimento baseado em histórico.
[0040] A Figura 28 é um fluxograma de um procedimento de processamento de deslocamento de elemento no procedimento de processamento de inicialização/ atualização da lista de candidato de previsor de vetor de movimento baseado em histórico.
[0041] A Figura 29 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato de previsor de vetor de movimento baseado em histórico.
[0042] A Figura 30 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato de mesclagem baseado em histórico.
[0043] A Figura 31A é um diagrama que ilustra um exemplo de um processo de atualização de lista de candidato de previsor de vetor de movimento baseado em histórico.
[0044] A Figura 31B é um diagrama que ilustra um exemplo de um processo de atualização de lista de candidato de previsor de vetor de movimento baseado em histórico.
[0045] A Figura 31C é um diagrama que ilustra um exemplo de um processo de atualização de lista candidato de previsor de vetor de movimento baseado em histórico.
[0046] A Figura 32 é um diagrama que ilustra a previsão de compensação de movimento em um caso em que a previsão L0 é realizada, e uma imagem de referência (RefL0Pic) de L0 está, em um momento, antes de uma imagem-alvo (CurPic).
[0047] A Figura 33 é um diagrama que ilustra a previsão da compensação de movimento em um caso em que a previsão L0 é realizada, e uma imagem de referência da previsão L0 está, em um momento, depois da imagem-alvo.
[0048] A Figura 34 é um diagrama que ilustra uma direção de previsão da previsão de compensação de movimento em biprevisão, em que uma imagem de referência de previsão L0 está, em um momento, antes da imagem-alvo, e uma imagem de referência de previsão L1 está, em um momento, depois da imagem-alvo.
[0049] A Figura 35 é um diagrama que ilustra uma direção de previsão da previsão de compensação de movimento na biprevisão, em que uma imagem de referência de previsão L0 e uma imagem de referência de previsão L1 estão, em um momento, antes da imagem- alvo.
[0050] A Figura 36 é um diagrama que ilustra uma direção de previsão da previsão da compensação de movimento na biprevisão, em que uma imagem de referência de previsão L0 e uma imagem de referência de previsão L1 estão, em um momento, depois da imagem- alvo.
[0051] A Figura 37 é um diagrama que ilustra um exemplo de uma configuração de hardware de um dispositivo de conversão em código e de decodificação, de acordo com uma modalidade da presente invenção.
[0052] A Figura 38 é um diagrama que ilustra a previsão de um modo de mesclagem triangular.
[0053] A Figura 39 é um fluxograma que ilustra uma derivação de candidato de mesclagem triangular.
[0054] A Figura 40 é um fluxograma que ilustra derivação das informações de movimento de uniprevisão para um fracionamento triangular de mesclagem.
[0055] A Figura 41A é um diagrama que ilustra um índice triangular de mesclagem e um fracionamento triangular de mesclagem.
[0056] A Figura 41B é um diagrama que ilustra um índice triangular de mesclagem e um fracionamento triangular de mesclagem.
[0057] A Figura 42 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato de mesclagem média.
[0058] A Figura 43 é um fluxograma que ilustra derivação de informação de movimento de uniprevisão de um fracionamento triangular de mesclagem de acordo com uma segunda modalidade. DESCRIÇÃO DETALHADA
[0059] As tecnologias e os termos técnicos usados na presente modalidade serão definidos.
BLOCO DE ÁRVORE
[0060] Na modalidade, uma imagem-alvo de processo de conversão em código/ decodificação (imagem-alvo de processamento) é igualmente dividida em um tamanho predeterminado. Essa unidade é definida como um bloco de árvore. Embora a Figura 4 configure o tamanho do bloco de árvore em amostras de 128 x 128, o tamanho do bloco de árvore não se limita a isso, e pode ser configurado para qualquer tamanho. O bloco-alvo de árvore (que corresponde a um alvo de conversão em código, no processo de conversão em código, e a um alvo de decodificação, no processo de decodificação) é alternado em ordem de varredura matricial, ou seja, da esquerda para a direita e de cima para baixo. O interior de cada bloco de árvore pode ser adicionalmente dividido de modo recursivo. Um bloco de conversão em código/ decodificação, como resultado da divisão recursiva do bloco de árvore, é definido como um bloco de conversão em código. Um bloco de árvore e um bloco de conversão em código são definidos coletivamente como um bloco. A execução da divisão de blocos apropriada permite a conversão em código eficiente. O tamanho do bloco de árvore pode ser um valor fixo determinado antecipadamente pelo dispositivo de conversão em código e pelo dispositivo de decodificação, ou é possível adotar uma configuração, na qual o tamanho do bloco de árvore determinado pelo dispositivo de conversão em código é transmitido ao dispositivo de decodificação. No presente documento, o tamanho máximo do bloco de árvore é de amostras de 128 x 128, e o tamanho mínimo do bloco de árvore é de amostras de 16 x 16. O tamanho máximo do bloco de conversão em código é de amostras de 64 x 64 e o tamanho mínimo do bloco de conversão em código é de amostras de 4 x 4.
MODO DE PREVISÃO
[0061] A alternância é realizada entre a intraprevisão (MODE_INTRA) da previsão de desempenho a partir de um sinal de imagem processado de uma imagem-alvo e uma interprevisão (MODE_INTER) de previsão de desempenho a partir de um sinal de imagem de uma imagem processado em unidades de blocos-alvo de conversão em código.
[0062] A imagem processada é usada, no processo de conversão em código, para uma imagem obtida decodificando-se um sinal convertido em código, um sinal de imagem, um bloco de árvore, um bloco, um bloco de conversão em código ou similares. A imagem processada é usada, no processo de decodificação, para uma imagem decodificada, um sinal de imagem, um bloco de árvore, um bloco, um bloco de conversão em código ou similares.
[0063] Um modo de identificação da intraprevisão (MODE_INTRA) e da interprevisão (MODE_INTER) é definido como um modo de previsão (PredMode). O modo de previsão (PredMode) tem intraprevisão (MODE_INTRA) ou interprevisão (MODE_INTER) como um valor.
INTERPREVISÃO
[0064] Na interprevisão, em que a previsão é realizada a partir de um sinal de imagem de uma imagem processada, é possível usar uma pluralidade de imagens processadas como imagens de referência. A fim de gerenciar uma pluralidade de imagens de referência, dois tipos de listas de referência L0 (lista de referência 0) e L1 (lista de referência 1) são definidos. Uma imagem de referência é especificada com uso de um índice de referência em cada uma das listas. Na fatia P, a previsão L0 (Pred_L0) é usável. Na fatia B, a previsão L0 (Pred_L0), a previsão L1 (Pred_L1) e a biprevisão (pred_bi) são usáveis. A previsão L0 (Pred_L0) é interprevisão que se refere a uma imagem de referência gerenciada pela L0, enquanto a previsão L1 (Pred_L1) é interprevisão que se refere a uma imagem de referência gerenciada por L1. A biprevisão (pred_bi) é uma interprevisão na qual tanto a previsão L0 quanto a previsão L1 são realizadas, e é feita referência a uma imagem de referência gerenciada em cada uma das L0 e L1. As informações que especificam a previsão L0, a previsão L1 e a biprevisão são definidas como um modo de interprevisão. No processamento a seguir, supõe-se que o processamento será realizado para cada uma das L0 e L1 para constantes e variáveis, o que inclui um sufixo LX em uma saída.
MODO DE PREVISOR DE VETOR DE MOVIMENTO
[0065] O modo de previsor de vetor de movimento é um modo de transmissão de um índice para especificar um previsor de vetor de movimento, uma diferença de vetor de movimento, um modo de interprevisão e um índice de referência, e para determinar as informações de interprevisão de um bloco-alvo. O previsor de vetor de movimento é derivado de um candidato de previsor de vetor de movimento derivado de um bloco processado nas proximidades do bloco-alvo ou de um bloco que pertence à imagem processada e localizado na mesma posição ou na proximidade (vizinhança) do bloco- alvo, e a partir de um índice para especificar o previsor de vetor de movimento.
MODO DE MESCLAGEM
[0066] O modo de mesclagem é um modo que deriva informações de interprevisão do bloco-alvo a partir de informações de interprevisão de um bloco processado nas proximidades do bloco-alvo, ou um bloco que pertence a uma imagem processada e localizado na mesma posição que o bloco-alvo ou nas proximidades (vizinhança) do bloco- alvo, sem transmitir uma diferença de vetor de movimento ou um índice de referência.
[0067] Um bloco processado nas proximidades do bloco-alvo e as informações de interprevisão do bloco processado são definidos como candidatos de mesclagem espacial. Os blocos que pertencem à imagem processada e localizados na mesma posição que o bloco-alvo, ou nas proximidades (vizinhança) do bloco-alvo, e as informações de interprevisão derivadas a partir das informações de interprevisão do bloco são definidos como candidatos de mesclagem temporal. Cada um dos candidatos de mesclagem é registrado em uma lista de candidato de mesclagem. Um candidato de mesclagem a ser usado para previsão de um bloco-alvo é especificado por um índice de mesclagem.
BLOCO PRÓXIMO
[0068] A Figura 11 é um diagrama que ilustra os blocos de referência a serem referenciados para derivar informações de interprevisão no modo de previsor de vetor de movimento e no modo de mesclagem. A0, A1, A2, B0, B1, B2 e B3 são blocos processados nas proximidades do bloco-alvo. T0 é um bloco pertencente à imagem processada e localizado na mesma posição que o bloco-alvo ou nas proximidades (vizinhança) do bloco-alvo, na imagem-alvo.
[0069] A1 e A2 são blocos localizados no lado esquerdo do bloco- alvo de conversão em código e nas proximidades do bloco-alvo de conversão em código. B1 e B3 são blocos localizados acima do bloco- alvo de conversão em código e nas proximidades do bloco-alvo de conversão em código. A0, B0 e B2 são blocos respectivamente localizados no canto inferior esquerdo, superior direito e superior esquerdo do bloco-alvo de conversão em código.
[0070] Os detalhes de como os blocos próximos são manipulados no modo de previsor de vetor de movimento e no modo de mesclagem serão descritos abaixo.
COMPENSAÇÃO DE MOVIMENTO AFIM
[0071] A compensação de movimento afim divide primeiro um bloco de conversão em código em sub-blocos de uma unidade predeterminada e, em seguida, determina individualmente um vetor de movimento para cada um dos sub-blocos divididos para realizar a compensação de movimento. O vetor de movimento de cada um dos sub-blocos é derivado com base em um ou mais pontos de controle derivados de informações de interprevisão de um bloco processado nas proximidades do bloco-alvo, ou um bloco que pertence à imagem processada e localizado na mesma posição, ou nas proximidades (vizinhança) do bloco-alvo. Embora a presente modalidade configure o tamanho do sub-bloco em amostras de 4 x 4, o tamanho do sub-bloco não se limita a isso, e um vetor de movimento pode ser derivado em unidades de amostras.
[0072] A Figura 14 ilustra um exemplo de compensação de movimento afim em um caso em que há dois pontos de controle. Nesse caso, cada um dos dois pontos de controle tem dois parâmetros, ou seja, um componente horizontal e um componente vertical. Consequentemente, a transformada afim que tem dois pontos de controle é denominada transformada afim de quatro parâmetros. CP1 e CP2, na Figura 14, são pontos de controle.
[0073] A Figura 15 ilustra um exemplo de compensação de movimento afim em um caso em que há três pontos de controle. Nesse caso, cada um dos três pontos de controle tem dois parâmetros, ou seja, um componente horizontal e um componente vertical. Consequentemente, a transformada afim que tem três pontos de controle é denominada transformada afim de seis parâmetros. CP1, CP2 e CP3, na Figura 15, são pontos de controle.
[0074] A compensação de movimento afim é usável em qualquer um dentre o modo de previsor de vetor de movimento e o modo de mesclagem. Um modo de aplicação da compensação de movimento afim, no modo de previsor de vetor de movimento, é definido como um modo de previsor de vetor de movimento de sub-bloco. Um modo de aplicação da compensação de movimento afim, no modo de mesclagem, é definido como um modo de mesclagem de sub-bloco. SINTAXE DO BLOCO DE CONVERSÃO EM CÓDIGO
[0075] A sintaxe para expressar o modo de previsão do bloco de conversão em código será descrita em referência às Figuras 12(a), 12(b) e 13. O pred_mode_flag na Figura 12(a) é uma sinalização que indica se o modo é interprevisão. A configuração de pred_mode_flag 0 indica interprevisão, enquanto a configuração de pred_mode_flag 1 indica intraprevisão. As informações de intra_pred_mode intraprevisão são transmitidas no caso de intraprevisão, enquanto a merge_flag é transmitida no caso de interprevisão. A merge_flag é uma sinalização que indica se o modo a ser usado é o modo de mesclagem ou o modo de previsor de vetor de movimento. No caso do modo de previsor de vetor de movimento (merge_flag = 0), uma sinalização inter_affine_flag que indica se deve aplicar o modo de previsor de vetor de movimento de sub-bloco é transmitido. No caso de aplicar o modo de previsor de vetor de movimento de sub-bloco (inter_affine_flag = 1), A cu_affine_type_flag é transmitida. A cu_affine_type_flag é uma sinalização para determinar o número de pontos de controle no modo de previsor de vetor de movimento de sub-bloco.
[0076] Em contrapartida, no caso do modo de mesclagem (merge_flag = 1), a merge_subblock_flag da Figura 12(b) é transmitida. A merge_subblock_flag é uma sinalização que indica se deve aplicar o modo de mesclagem de sub-bloco. No caso do modo de mesclagem de sub-bloco (merge_subblock_flag = 1), um índice de mesclagem merge_subblock_idx é transmitido. Por outro lado, em um caso em que o modo não é o modo de mesclagem de sub-bloco (merge_subblock_flag = 0), uma sinalização merge_triangle_flag que indica se deve aplicar o modo de mesclagem triangular é transmitido. No caso de aplicação do modo de mesclagem triangular (merge_triangle_flag = 1), os índices de mesclagem triangulares merge_triangle_idx0 e merge_triangle_idx1 são transmitidos para cada uma das direções de divisão de blocos merge_triangle_split_dir e para cada um dos dois fracionamentos divididos. No caso de não aplicar o modo de mesclagem triangular, (merge_triangle_flag = 0), um índice de mesclagem merge_idx é transmitido.
[0077] A Figura 13 ilustra o valor de cada um dos elementos de sintaxe e o modo de previsão correspondente. merge_flag = 0 e inter_affine_flag = 0 correspondem ao modo de previsor de vetor de movimento normal (Modo de Interprevisão). merge_flag = 0 e inter_affine_flag = 1 correspondem a um modo de previsor de vetor de movimento de sub-bloco (Moto Interafim). merge_flag = 1, merge_subblock_flag = 0 e merge_trianlge_flag = 0 correspondem a um modo de mesclagem normal (Modo de mesclagem). merge_flag = 1, merge_subblock_flag = 0 e merge_trianlge_flag = 1 correspondem a um modo de mesclagem triangular (Modo de Mesclagem Triangular). merge_flag = 1, merge_subblock_flag = 1 correspondem a um modo de mesclagem de sub-bloco (Modo de Mesclagem Afim). POC
[0078] Uma Contagem de Ordem de Imagem (POC) é uma variável associada à imagem a ser convertida em código, e é configurada como um valor que aumenta em um, de acordo com a ordem de saída de imagem. O valor de POC permite discriminar se as imagens são as mesmas, discriminar a relação sequencial interimagem na ordem de saída, ou derivar a distância entre as imagens. Por exemplo, é possível determinar que duas imagens que tenham um mesmo valor de POC são imagens idênticas. Em um caso em que as POCs das duas imagens têm valores diferentes, a imagem com o valor de POC menor pode ser determinada como a imagem que é emitida anteriormente. A diferença entre as POCs das duas imagens indica a distância entre as imagens na direção do eixo geométrico de tempo.
PRIMEIRA MODALIDADE
[0079] Um dispositivo de conversão em código de imagem 100 e um dispositivo de decodificação de imagem 200, de acordo com uma primeira modalidade da presente invenção, será descrito.
[0080] A Figura 1 é um diagrama de blocos do dispositivo de conversão em código de imagem 100, de acordo com a primeira modalidade. O dispositivo de conversão em código de imagem 100, de acordo com uma modalidade, inclui uma unidade de divisão bloco 101, uma unidade de interprevisão 102, uma unidade de intraprevisão 103, memória de imagem decodificada 104, um determinador método de previsão 105, uma unidade de geração de resíduo 106, um transformador/ quantizador ortogonal 107, uma unidade de conversão em código de sequências de bit 108, um quantizador inverso/ transformador ortogonal inverso 109, um sobrepositor de sinal de imagem decodificada 110 e memória de armazenamento de informações de conversão em código 111.
[0081] A unidade dividida em bloco 101 divide recursivamente uma imagem de entrada para construir um bloco de conversão em código. A unidade de divisão de bloco 101 inclui: uma unidade de divisão quádrupla que divide um bloco-alvo dividido tanto na direção horizontal quanto na direção vertical; e uma unidade de divisão binário-ternária que divide um bloco-alvo dividido na direção horizontal ou na direção vertical. A unidade de divisão de bloco 101 configura o bloco de conversão em código, construído como um bloco-alvo de conversão em código, e fornece um sinal de imagem do bloco-alvo de conversão em código à unidade de interprevisão 102, à unidade de intraprevisão 103 e à unidade de geração de resíduo 106. Além disso, a unidade de divisão de bloco 101 fornece informações que indicam a estrutura dividida recursiva determinada para a unidade de conversão em código de sequências de bit 108. A operação detalhada da unidade de divisão de blocos 101 será descrita abaixo.
[0082] A unidade de interprevisão 102 realiza a interprevisão do bloco-alvo de conversão em código. A unidade interprevisão 102 deriva uma pluralidade de candidatos de informações de interprevisão a partir das informações de interprevisão armazenadas na memória de armazenamento de informações de conversão em código 111 e do sinal de imagem decodificada armazenado na memória de imagem decodificada 104, seleciona um modo de interprevisão adequado a partir da pluralidade de candidatos derivados e fornece o modo de interprevisão selecionado e um sinal de imagem previsto que corresponde ao modo de interprevisão selecionado para o determinador de método de previsão 105. A configuração e a operação detalhadas da unidade de interprevisão 102 serão descritas abaixo.
[0083] A unidade de intraprevisão 103 realiza intraprevisão no bloco-alvo de conversão em código. A unidade de intraprevisão 103 refere-se ao sinal de imagem decodificada armazenado na memória de imagem decodificada 104 como uma amostra de referência, e realiza a intraprevisão com base nas informações de conversão em código, como um modo de intraprevisão armazenado na memória de armazenamento de informações de conversão em código 111 e, desse modo, gera um sinal de imagem previsto. Na intraprevisão, a unidade de intraprevisão 103 seleciona um modo de intraprevisão adequado a partir de uma pluralidade de modos de intraprevisão e fornece o modo de intraprevisão selecionado e o sinal de imagem previsto selecionado que corresponde ao modo de intraprevisão selecionado para o determinador de método de previsão 105.
[0084] As Figuras 10A e 10B ilustram os exemplos de intraprevisão. A Figura 10A ilustra uma correspondência entre a direção de previsão de intraprevisão e o número de modo de intraprevisão. Por exemplo, um modo de intraprevisão 50 copia amostras de referência na direção vertical e, desse modo, constrói uma imagem de intraprevisão. O modo de intraprevisão 1 é um modo de CC no qual todos os valores amostrais de um bloco-alvo são configurados com um valor médio de amostras de referência. O modo de intraprevisão 0 é um modo Plano, no qual uma imagem de intraprevisão bidimensional é criada a partir de amostras de referência nas direções vertical e horizontal. A Figura 10B é um exemplo de construção de uma imagem de intraprevisão, no caso de um modo de intraprevisão 40. A unidade de intraprevisão 103 copia, para cada uma das amostras do bloco-alvo, o valor da amostra de referência na direção indicada pelo modo de intraprevisão. Em um caso em que a amostra de referência, no modo de intraprevisão, não está em uma posição de número inteiro, a unidade de intraprevisão 103 determina um valor amostral de referência por interpolação a partir de valores amostrais de referência em posições de número inteiro próximas.
[0085] A memória de imagem decodificada 104 armazena a imagem decodificada construída pelo sobrepositor de sinal de imagem decodificada 110. A memória de imagem decodificada 104 fornece a imagem decodificada armazenada para a unidade interprevisão 102 e a unidade de intraprevisão 103.
[0086] O determinador de método de previsão 105 avalia cada uma dentre a intraprevisão e a interprevisão com uso das informações de conversão em código, da quantidade de código do resíduo, da quantidade de distorção entre o sinal de imagem previsto e o sinal de imagem-alvo, ou similares, e, desse modo, determina um modo de previsão ideal. No caso de intraprevisão, o determinador de método de previsão 105 fornece informações de intraprevisão, como um modo de intraprevisão, para a unidade de conversão em código de sequências de bits 108 como informações de conversão em código. No caso do modo de mesclagem da interprevisão, o determinador de método de previsão 105 fornece informações de interprevisão, como um índice de mesclagem e informações (sinalização de mesclagem de sub-bloco) que indicam se o modo é o modo de mesclagem de sub-bloco para a unidade de conversão em código de sequências de bits 108 como informações de conversão em código. No caso do modo de previsor de vetor de movimento da interprevisão, o determinador de método de previsão 105 fornece informações de interprevisão, como o modo interprevisão, o índice de previsor de vetor de movimento, o índice de referência de L0 ou L1, a diferença de vetor de movimento ou informações que indicam se o modo é um modo de previsor de vetor de movimento de sub-bloco (sinalização de previsor de vetor de movimento de sub-bloco) para a unidade de conversão em código de sequências de bits 108 como informações de conversão em código. O determinador de método de previsão 105 fornece adicionalmente as informações de conversão em código determinadas para a memória de armazenamento de informações de conversão em código 111. O determinador do método de previsão 105 fornece o sinal de imagem previsto para a unidade de geração de resíduo 106 e o sobrepositor de sinal de imagem decodificada 110.
[0087] A unidade de geração de resíduo 106 constrói um resíduo subtraindo-se o sinal de imagem previsto a partir do sinal de imagem- alvo, e fornece o resíduo construído para o transformador/quantizador ortogonal 107.
[0088] O transformador/quantizador ortogonal 107 realiza transformação e quantização ortogonal no resíduo, de acordo com o parâmetro de quantização, e constrói, desse modo, um resíduo ortogonalmente transformado e quantizado, e, em seguida, fornece o resíduo construído para a unidade de conversão em código de sequências de bits 108 e o quantizador inverso/ transformador ortogonal inverso 109.
[0089] A unidade de conversão em código de sequências de bits 108 converte em código, além das sequências, as imagens, fatias e informações em unidades de blocos de conversão em código, a unidade de conversão em código de sequências de bits 108 codifica as informações de conversão em código correspondentes ao método de previsão determinado pelo determinador de método de previsão 105 para cada um dos blocos de conversão em código. Especificamente, a unidade de conversão em código de sequências de bits 108 codifica um modo de previsão PredMode para cada um dos blocos de conversão em código. Em um caso em que o modo de previsão é interprevisão (MODE_INTER), a unidade de conversão em código de sequências de bits 108 codifica informações de conversão em código (informações interprevisão), como uma sinalização para determinar se o modo é o modo de mesclagem, uma sinalização de mesclagem de sub-bloco, um índice de mesclagem no modo de mesclagem, um modo de interprevisão nos modos de não mesclagem, um índice de previsor de vetor de movimento, informações relacionadas às diferenças de vetor de movimento e uma sinalização de previsor de vetor de movimento de sub-bloco, com base em uma sintaxe prescrita (regra de sintaxe de uma sequência de bits) e, desse modo, constrói uma primeira sequência de bit. Em um caso em que o modo de previsão é intraprevisão (MODE_INTRA), as informações de conversão em código (informações de intraprevisão), como o modo de intraprevisão, são convertidas em código de acordo com uma sintaxe prescrita (regras de sintaxe de sequência de bits) para construir uma primeira sequência de bits. Além disso, a unidade de conversão em código de sequências de bits 108 realiza conversão em código de entropia no resíduo ortogonalmente transformado e quantizado, com base em uma sintaxe prescrita e, desse modo, constrói uma segunda sequência de bits. A unidade de conversão em código de sequências de bits 108 multiplexam a primeira sequência de bits e a segunda sequência de bits com base em uma sintaxe prescrita, e emite o fluxo de bits.
[0090] O quantizador inverso/ transformador ortogonal inverso 109 realiza quantização inversa e transformação ortogonal inversa sobre o resíduo ortogonalmente transformado/ quantizado fornecido a partir do transformador ortogonal/ quantizador 107 e, desse modo, calcula o resíduo, e, em seguida, fornece o resíduo calculado para o sobrepositor de sinal de imagem decodificada 110.
[0091] O sobrepositor de sinal de imagem decodificada 110 sobrepõe o sinal de imagem previsto, de acordo com a determinação do determinador de método de previsão 105, com o resíduo que sofreu a quantização inversa/ transformação ortogonal inversa pelo quantizador inverso/ transformador ortogonal inverso 109, desse modo, constrói uma imagem decodificada e armazena a imagem decodificada construída na memória de imagem decodificada 104. O sobrepositor de sinal de imagem decodificada 110 pode realizar o processamento de filtragem de redução da distorção, como distorção de bloco, devido à conversão em código na imagem decodificada e pode, depois disso, armazenar a imagem decodificada na memória de imagem decodificada 104.
[0092] A memória de armazenamento de informações de conversão em código 111 armazena informações de conversão em código, como um modo de previsão (interprevisão ou intraprevisão) determinado pelo determinador de método de previsão 105. No caso de interprevisão, as informações de conversão em código armazenadas na memória de armazenamento de informações de conversão em código 111 incluem informações de interprevisão, como o vetor de movimento determinado, os índices de referência das listas de referência L0 e L1 e uma lista de candidato de previsor de vetor de movimento baseada em histórico. No caso do modo de mesclagem de interprevisão, as informações de conversão em código armazenadas na memória de armazenamento de informações de conversão em código 111 incluem, além das informações descritas acima, um índice de mesclagem e informações de interprevisão, o que inclui informações que indicam se o modo é um modo de mesclagem de sub-blocos (uma sinalização de mesclagem de sub-bloco). No caso do modo de previsor de vetor de movimento da interprevisão, as informações de conversão em código armazenadas na memória de armazenamento de informações de conversão em código 111 incluem, além das informações acima, informações de interprevisão, como um modo de interprevisão, um índice de previsor de vetor de movimento, uma diferença de vetor de movimento e informações que indicam se o modo é um modo de previsor de vetor de movimento de sub-bloco (sinalização de previsor de vetor de movimento de sub-bloco). No caso de intraprevisão, as informações de conversão em código armazenadas na memória de armazenamento de informações de conversão em código 111 incluem informações de intraprevisão, como o modo de intraprevisão determinado.
[0093] A Figura 2 é um diagrama de blocos que ilustra uma configuração de um dispositivo de decodificação de imagem, de acordo com uma modalidade da presente invenção, que corresponde ao dispositivo de conversão em código de imagem da Figura 1. O dispositivo de decodificação de imagem, de acordo com a modalidade, inclui uma unidade de decodificação de sequência de bits 201, uma unidade de divisão de bloco 202, uma unidade de interprevisão 203, uma unidade de intraprevisão 204, memória de armazenamento de informações de conversão em código 205, um quantizador inverso/ transformador ortogonal inverso 206 e um sobrepositor de sinal de imagem decodificada 207 e memória de imagem decodificada 208.
[0094] Visto que o processo de decodificação do dispositivo de decodificação de imagem, na Figura 2, corresponde ao processo de decodificação fornecido dentro do dispositivo de conversão em código de imagem na Figura 1. Consequentemente, cada uma das configurações da memória de armazenamento de informações de conversão em código 205, do quantizador inverso/ transformador ortogonal inverso 206, do sobrepositor de sinal de imagem decodificada 207 e da memória de imagem decodificada 208, na Figura 2, respectivamente, tem uma função que corresponde a cada uma das configurações da memória de armazenamento de informações de conversão em código 111, do quantizador inverso/ transformador ortogonal inverso 109, do sobrepositor de sinal de imagem decodificada 110 e da memória de imagem decodificada 104 do dispositivo de conversão em código de imagem, na Figura 1.
[0095] O fluxo de bits fornecido à unidade de decodificação de sequências de bits 201 é separado com base em uma regra de sintaxe prescrita. A unidade de decodificação de sequências de bits 201 decodifica a primeira sequência de bits separada e, desse modo, obtém a sequência, uma imagem, uma fatia, informações em unidades de blocos de conversão em código e informações de conversão em código em unidades de blocos de conversão em código. Especificamente, a unidade de decodificação de sequências de bits 201 decodifica um modo de previsão PredMode que discrimina se a previsão é interprevisão (MODE_INTER) ou intraprevisão (MODE_INTRA) em unidades de bloco de conversão em código. Em um caso em que o modo de previsão é a interprevisão (MODE_INTER), a unidade de decodificação de sequências de bits 201 decodifica informações de conversão em código (informações interprevisão) relacionadas à sinalização que discrimina se o modo é o modo de mesclagem, o índice de mesclagem, no caso do modo de mesclagem, a sinalização de mesclagem de sub-bloco, e a interprevisão no caso do modo de previsor de vetor de movimento, o índice de previsor de vetor de movimento, a diferença de vetor de movimento, a sinalização de previsor de vetor de movimento de sub-bloco ou similares, de acordo com uma sintaxe prescrita, e, em seguida, fornece as informações de conversão em código (informações interprevisão) para a memória de armazenamento de informações de conversão em código 205 através da unidade de interprevisão 203 e da unidade de divisão de bloco 202. Em um caso em que o modo de previsão é intraprevisão (MODE_INTRA), a unidade de decodificação de sequências de bits 201 decodifica informações de conversão em código (informações de intraprevisão), como o modo de intraprevisão, de acordo com uma sintaxe prescrita, e, em seguida, fornece as informações de conversão em código decodificadas (informações de intraprevisão) para a memória de armazenamento de informações de conversão em código 205 através da unidade interprevisão 203 ou da unidade de intraprevisão 204 e através de unidade de divisão de bloco 202. A unidade de decodificação de sequências de bits 201 decodifica a segunda sequência de bits separada e calcula um resíduo ortogonalmente transformado/ quantizado e, em seguida, fornece o resíduo ortogonalmente transformado/ quantizado ao quantizador inverso/ transformador ortogonal inverso 206.
[0096] Quando o modo de previsão PredMode do bloco-alvo de conversão em código é o interprevisão (MODE_INTER) e o modo de previsor de vetor de movimento, a unidade interprevisão 203 usa as informações de conversão em código do sinal de imagem já decodificado armazenado na memória de armazenamento de informações de conversão em código 205 para derivar uma pluralidade de candidatos de previsor de vetor de movimento. A unidade de interprevisão 203 registra, em seguida, a pluralidade de candidatos de previsor de vetor de movimento derivados para uma lista de candidato de previsor de vetor de movimento descrita abaixo. A unidade de interprevisão 203 seleciona um previsor de vetor de movimento que corresponde ao índice de previsor de vetor de movimento a ser decodificado e fornecido pela unidade de decodificação de sequências de bits 201 entre a pluralidade de candidatos de previsor de vetor de movimento registrados na lista de candidato de previsor de vetor de movimento. A unidade de interprevisão 203 calcula, em seguida, um vetor de movimento com base na diferença de vetor de movimento decodificado pela unidade de decodificação de sequências de bits 201 e pelo previsor de vetor de movimento selecionado, e armazena o vetor de movimento calculado na memória de armazenamento de informações de conversão em código 205, juntamente com outras informações de conversão em código. No presente documento, as informações de conversão em código do bloco de conversão em código a ser fornecido e armazenado inclui o modo de previsão PredMode, sinalizações PredFlagL0 [xP] [yP] e PredFlagL1 [xP] [yP] que indicam se deve usar previsão L0 e a previsão L1, os índices de referência RefiDxL0 [xP] [yP] e RefiDXL1 [xP] [yP] de L0 e L1; e vetores de movimento mVL0 [xP] [yP] e mvL1 [xP] [yP] de L0 e L1. No presente documento, xP e yP são índices que indicam a posição da amostra superior esquerda do bloco de conversão em código dentro da imagem. Em um caso em que o modo de previsão PredMode é interprevisão (MODE_INTER) e o modo interprevisão é previsão L0 (Pred_L0), a sinalização predFlagl0 que indica se deve usar previsão L0 está configurada como 1 e a sinalização predFlagl1 que indica se deve usar a previsão L1 está configurada como 0. Em um caso em que o modo interprevisão é previsão L1 (Pred_L1), uma sinalização predFlagL0 que indica se deve usar previsão L0 está configurada como 0 e uma sinalização predFlagL1 que indica se deve usar a previsão L1 está configurada como 1. Em um caso em que o modo interprevisão é biprevisão (Pred_BI), tanto a sinalização PredFlagL0 que indica se deve usar a previsão L0 quanto a sinalização PredFlagL1 que indica se deve usar a previsão L1 são configuradas como 1. Além disso, quando o modo de previsão PredMode do bloco-alvo de conversão em código está na interprevisão (MODE_INTER) e no modo de mesclagem, um candidato de mesclagem é derivado. Com uso das informações de conversão em código do bloco de conversão em código já decodificado armazenado na memória de armazenamento de informações de conversão em código 205, uma pluralidade de candidatos de mesclagem é derivada e registrada em uma lista de candidato de mesclagem descrita abaixo. Subsequentemente, um candidato de mesclagem que corresponde ao índice de mesclagem que é decodificado pela unidade de decodificação de sequências de bits 201 e fornecido é selecionado entre a pluralidade de candidato de mesclagem registrados na lista de candidato de mesclagem e, em seguida, as informações de interprevisão, como as sinalizações PredFlagL0 [xP] [yP] e PredFlagl1 [xP] [yP] que indicam se devem usar a previsão L0 e a previsão L1 do candidato de mesclagem selecionado, os índices de referência RefIdxL0 [xP] [yP] e RefIdxL1 [xP] [yP] de L0 e L1, e vetores de movimento mvL0 [xP] [yP] e mvL1 [xP] [yP] de 0 e L1 devem ser armazenados na memória de armazenamento de informações de conversão em código 205. No presente documento, xP e yP são índices que indicam a posição da amostra superior esquerda do bloco de conversão em código dentro da imagem. A configuração detalhada e a operação da unidade interprevisão 203 serão descritas abaixo.
[0097] A unidade de intraprevisão 204 realiza intraprevisão, quando o modo de previsão PredMode do bloco-alvo de conversão em código é a intraprevisão (MODE_INTRA). As informações de conversão em código decodificadas pela unidade de decodificação de sequências de bits 201 incluem um modo de intraprevisão. A unidade de intraprevisão 204 gera um sinal de imagem previsto por intraprevisão a partir do sinal de imagem decodificada armazenado na memória de imagem decodificada 208, de acordo com o modo de intraprevisão incluído nas informações de conversão em código decodificada pela unidade de decodificação de sequências de bits 201. A unidade de intraprevisão 204 fornece, em seguida, o sinal de imagem previsto gerado para o sobrepositor de sinal de imagem decodificada 207. A unidade de intraprevisão 204 corresponde à unidade de intraprevisão 103 do dispositivo de conversão em código de imagem 100 e, desse modo, realiza o processamento similar ao processamento da unidade de intraprevisão 103.
[0098] O quantizador inverso/ transformador ortogonal inverso 206 realiza a quantização inversa/ transformação ortogonal/inversa no resíduo ortogonal transformado/ quantizado decodificado na unidade de decodificação de sequências de bits 201, e obtém, desse modo, o resíduo ortogonal e inversamente transformado/ inversamente quantizado.
[0099] O sobrepositor de sinal de imagem decodificada 207 sobrepõe um sinal de imagem previsto interprevisto pela unidade interprevisão 203, ou um sinal de imagem de previsão intraprevisto pela unidade de intraprevisão 204 com o resíduo que foi ortogonal e inversamente transformado/ inversamente quantizado pelo quantizador inverso/ transformador ortogonal inverso 206, decodificando, desse modo, o sinal de imagem decodificada. O sobrepositor de sinal de imagem decodificada 207 armazena, em seguida, o sinal de imagem decodificada, que foi decodificado, na memória de imagem decodificada 208. Ao armazenar a imagem decodificada na memória de imagem decodificada 208, o sobrepositor de sinal de imagem decodificada 207 pode realizar o processamento de filtragem na imagem decodificada para reduzir a distorção de bloco, ou similar, devido à conversão em código, e pode, posteriormente, armazenar a imagem decodificada na memória de imagem decodificada 208.
[00100] Em seguida, a operação da unidade de divisão de bloco 101 no dispositivo de conversão em código de imagem 100 será descrita. A Figura 3 é um fluxograma que ilustra a operação de divisão de uma imagem em blocos de árvore e divisão adicional de cada um dos blocos de árvore. Primeiro, uma imagem de entrada é dividida em blocos de árvore de um tamanho predeterminado (etapa S1001). Cada um dos blocos de árvore é varrido em uma ordem predeterminada, ou seja, em uma ordem de varredura matricial (etapa S1002), e um bloco-alvo de árvore é dividido internamente (etapa S1003).
[00101] A Figura 7 é um fluxograma que ilustra a operação detalhada do processo de divisão na etapa S1003. Primeiro, é determinado se deve dividir o bloco-alvo em quatro (etapa S1101).
[00102] Em um caso em que é determinado que o bloco-alvo deve ser dividido em quatro, o bloco-alvo será dividido em quatro (etapa S1102). Cada um dos blocos obtidos dividindo-se o bloco-alvo é digitalizado na ordem de varredura em Z, ou seja, na ordem superior esquerda, superior direita, inferior esquerda e inferior direita (etapa S1103). A Figura 5 ilustra um exemplo da ordem de varredura em Z, e 601, na Figura 6A, ilustra um exemplo no qual o bloco-alvo é dividido em quatro. Os números 0 a 3 de 601 na Figura 6A indicam a ordem de processamento. Subsequentemente, o processo de divisão da Figura 7 é executado recursivamente para cada um dos blocos divididos na etapa S1101 (etapa S1104).
[00103] Em um caso em que é determinado que o bloco-alvo não deve ser dividido em quatro, o bloco-alvo será dividido em dois ou três, ou seja, divisão binário-ternária (etapa S1105).
[00104] A Figura 8 é um fluxograma que ilustra a operação detalhada do processo de divisão binário-ternária na etapa S1105. Primeiro, é determinado se a divisão binário-ternária será executada no bloco-alvo, ou seja, se alguma divisão binária ou divisão ternária deve ser realizada (etapa S1201).
[00105] Em um caso em que não é determinado que a divisão binário-ternária deve ser realizada no bloco-alvo, ou seja, em um caso em que é determinado não dividir o bloco-alvo, a divisão é concluída (etapa S1211). Ou seja, o processo de divisão recursiva adicional não deve ser realizado no bloco que foi dividido pelo processo de divisão recursiva.
[00106] Em um caso em que é determinado que a divisão binário- ternária será realizada no bloco-alvo, é adicionalmente determinado se deve dividir o bloco-alvo em dois (etapa S1202).
[00107] Em um caso em que é determinado que o bloco-alvo deve ser dividido em dois, é adicionalmente determinado se deve dividir o bloco-alvo na direção superior inferior (vertical) (etapa S1203) e, em seguida, com base no resultado, o bloco-alvo será divisão binária na direção superior inferior (vertical) (etapa S1204), ou o bloco-alvo será divisão binária na direção da esquerda para a direita (horizontal) (etapa S1205). Como resultado da etapa S1204, o bloco-alvo tem divisão binária na direção superior e inferior (direção vertical), conforme ilustrado em 602 da Figura 6B. Como resultado da etapa S1205, o bloco-alvo tem divisão binária na direita e esquerda (direção horizontal), como ilustrado em 604 da Figura 6D.
[00108] Na etapa S1202, em um caso em que não seja determinado que o bloco-alvo deve ser dividido em dois, ou seja, em um caso em que é determinado que o bloco-alvo deve ser dividido em três, é adicionalmente determinado se deve dividir o bloco-alvo em três como porções superior, média e inferior (direção vertical) (etapa S1206). Com base no resultado, o bloco-alvo é dividido em três como partes superior, média e inferior (direção vertical) (etapa S1207), ou porções esquerda, média e direita (direção horizontal) (etapa S1208). Como resultado da etapa S1207, o bloco-alvo é dividido em três como partes superior, média e inferior (direção vertical), conforme ilustrado em 603 da Figura 6C. Como resultado da etapa S1208, o bloco-alvo é dividido em três como esquerda, média e direita (direção horizontal), conforme ilustrado em 605 da Figura 6E.
[00109] Após a execução de uma das etapas S1204, S1205, S1207 ou S1208, cada um dos blocos obtidos pela divisão do bloco-alvo é digitalizado na ordem da esquerda para a direita e de cima para baixo (etapa S1209). Os números 0 a 2 de 602 a 605, nas Figuras 6B a 6E, indicam a ordem de processamento. Para cada um dos blocos divididos, o processo de divisão binário-ternária, na Figura 8, é realizado recursivamente (etapa S1210).
[00110] Na divisão de bloco recursiva descrita no presente documento, a propriedade de divisão pode ser limitada com base no número de divisões, no tamanho do bloco-alvo ou similares. As informações que restringem a propriedade da divisão podem ser realizadas em uma configuração na qual as informações não são transmitidas fazendo-se um acordo preliminar entre o dispositivo de conversão em código e o dispositivo de decodificação, ou em uma configuração na qual o dispositivo de conversão em código determina as informações para restringir a propriedade de divisão e registrar as informações para sequências de bits, transmitindo, desse modo, as informações para o dispositivo de decodificação.
[00111] Quando um determinado bloco é dividido, um bloco antes da divisão é denominado um bloco pai, e cada um dos blocos, após a divisão, é denominado um bloco filho.
[00112] Em seguida, a operação da unidade de divisão de bloco 202, no dispositivo de decodificação de imagem 200, será descrita. A unidade dividida em bloco 202 divide um bloco de árvore com uso de um procedimento de processamento similar ao do caso da unidade de divisão de blocos 101 do dispositivo de conversão em código de imagem 100. Deve-se observar que há uma diferença de que, embora a unidade de divisão de blocos 101 do dispositivo de conversão em código de imagem 100 determine uma forma de divisão de bloco ideal aplicando- se um método de otimização, como estimativa de um formato ideal por meio de reconhecimento de imagem ou otimização da taxa de distorção, a unidade de divisão de bloco 202 da imagem dispositivo de decodificação 200 determina o formato de divisão bloco decodificando- se as informações de divisão de bloco registradas na sequência de bits.
[00113] A Figura 9 ilustra a sintaxe (regras de sintaxe de sequência de bits) relacionada à divisão de blocos, de acordo com a primeira modalidade. coding_quadtree () representa a sintaxe para o processo de divisão quádrupla do bloco. multi_type_tree () representa a sintaxe para o processo de divisão do bloco em dois ou três. qt_split é uma sinalização que indica se deve dividir um bloco em quatro. No caso de divisão do bloco em quatro, a configuração seria qt_split = 1. No caso de não divisão do bloco em quatro, a configuração seria qt_split = 0. No caso de divisão do bloco em quatro (qt_split = 1), o processo de divisão quádrupla será realizado recursivamente em cada um dos blocos divididos (coding_quadtree (0), coding_quadtree (1), coding_quadtree (2), coding_quadtree (3), nos quais os argumentos 0 a 3 correspondem a números de 601 na Figura 6A). Em um caso em que a divisão quádrupla não deve ser realizada (qt_split = 0), a divisão subsequente é determinada de acordo com multi_type_tree (). mtt_split é uma sinalização que indica se deve realizar divisão adicional. No caso em que a divisão adicional deve ser realizada (mtt_split = 1), a transmissão de mtt_split_vertical, que é uma sinalização que indica se deve realizar divisão na direção vertical ou horizontal, e de mtt_split_binary, que é uma sinalização que determina se deve dividir o bloco em dois ou três, será realizada. mtt_split_vertical = 1 indica divisão na direção vertical, e mtt_split_vertical = 0 indica divisão na direção horizontal. mtt_split_binary = 1 indica que o bloco é divisão binária e mtt_split_binary = 0 indica que o bloco é divisão ternária. Em um caso em que o bloco deve ter divisão binária (mtt_split_binary = 1), o processo de divisão é realizado recursivamente em cada um dos dois blocos divididos (multi_type_tree (0) e multi_type_tree (1), em que os argumentos 0 a 1 correspondem a números em 602 ou 604 de Figuras 6B a 6D). No caso em que o bloco deve ter divisão ternária (mtt_split_binary = 0), o processo de divisão é realizado recursivamente em cada um dos três blocos divididos (multi_type_tree (0), multi_type_tree (1) e multi_type_tree (2), em que 0 a 2 correspondem a números em 603 da Figura 6B ou 65 da Figura E). O chamado recursivo de multi_type_tree até mtt_split = 0 alcançará a divisão hierárquica de bloco.
INTERPREVISÃO
[00114] O método interprevisão, de acordo com uma modalidade, é implementado na unidade interprevisão 102 do dispositivo de conversão em código de imagem na Figura 1 e na unidade interprevisão 203 do dispositivo de decodificação de imagem na Figura 2.
[00115] Um método de interprevisão, de acordo com uma modalidade, será descrito em referência aos desenhos. O método interprevisão é implementado em qualquer um dos processos de conversão em código e decodificação em unidades de blocos de conversão em código.
UNIDADE DE INTERPREVISÃO 102 NO LADO DA CONVERSÃO EM CÓDIGO
[00116] A Figura 16 é um diagrama que ilustra uma configuração detalhada da unidade interprevisão 102 do dispositivo de conversão em código de imagem na Figura 1. A unidade de derivação de modo de previsor de vetor de movimento normal 301 deriva uma pluralidade de candidatos de previsor de vetor de movimento normal, seleciona um previsor de vetor de movimento e calcula uma diferença de vetor de movimento entre o previsor de vetor de movimento selecionado e o vetor de movimento detectado. O modo interprevisão detectado, o índice de referência, o vetor de movimento e a diferença de vetor de movimento calculada serão informações de interprevisão do modo de previsor de vetor de movimento normal. Essas informações de interprevisão são fornecidas a um determinador de modo de interprevisão 305. A configuração e o processamento detalhados da unidade de derivação de modo de previsor vetor de movimento normal 301 serão descritos abaixo.
[00117] A unidade de derivação de modo de mesclagem normal 302 deriva uma pluralidade de candidatos de mesclagem normais, seleciona um candidato de mesclagem normal e obtém informações de interprevisão de modo de mesclagem normal. Essas informações de interprevisão são fornecidas ao determinador de modo de interprevisão 305. A configuração e o processamento detalhados da unidade de derivação de modo de mesclagem normal 302 serão descritos abaixo.
[00118] A unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 303 deriva uma pluralidade de candidatos de previsor de vetor de movimento sub-bloco, seleciona um previsor de vetor de movimento sub-bloco e calcula uma diferença de vetor de movimento entre o previsor de vetor de movimento de sub-bloco selecionado e o vetor de movimento detectado. O modo de interprevisão detectado, o índice de referência, o vetor de movimento e a diferença de vetor de movimento calculada serão informações de interprevisão do modo de previsor de vetor de movimento de sub-bloco. Essas informações de interprevisão são fornecidas ao determinador de modo de interprevisão 305.
[00119] A unidade de derivação de modo de mesclagem de sub- bloco 304 deriva uma pluralidade de candidatos de mesclagem de sub- bloco, seleciona um candidato de mesclagem de sub-bloco e obtém informações de interprevisões do modo de mesclagem de sub-bloco. Essas informações de interprevisão são fornecidas ao determinador de modo de interprevisão 305.
[00120] No determinador de modo de interprevisão 305 determinam- se informações de interprevisão com base nas informações de interprevisão fornecidas a partir da unidade de derivação de modo de previsor de vetor de movimento normal 301, da unidade de derivação de modo de mesclagem normal 302, da unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 303 e da unidade de derivação de modo de mesclagem de sub-bloco 304. As informações de interprevisão, de acordo com o resultado da determinação, são fornecidas a partir do determinador de modo de interprevisão 305 para uma unidade de previsão de compensação de movimento 306.
[00121] A unidade de previsão de compensação de movimento 306 realiza a interprevisão sobre o sinal de imagem de referência armazenado na memória de imagem decodificada 104, com base nas informações de interprevisão determinada. A configuração detalhada e o processamento da unidade de previsão de compensação de movimento 306 serão descritos abaixo.
UNIDADE DE INTERPREVISÃO 203 NO LADO DE DECODIFICAÇÃO
[00122] A Figura 22 é um diagrama que ilustra uma configuração detalhada da unidade de interprevisão 203 do dispositivo de decodificação de imagem na Figura 2.
[00123] A unidade de derivação de modo de previsor de vetor de movimento normal 401 deriva uma pluralidade de candidatos de previsor de vetor de movimento normal, seleciona um previsor de vetor de movimento, calcula um valor adicionado obtido adicionando-se o previsor de vetor de movimento selecionado e a diferença de vetor de movimento decodificado, e configura esse valor adicionado como um vetor de movimento. O modo de interprevisão decodificado, o índice de referência, o vetor de movimento serão informações de interprevisão do modo de previsor de vetor de movimento normal. Essas informações de interprevisão são fornecidas a uma unidade de previsão de compensação de movimento 406 através de um comutador 408. A configuração e o processamento detalhados da unidade de derivação de modo de previsor de vetor de movimento normal 401 serão descritos abaixo.
[00124] A unidade de derivação do modo de mesclagem normal 402 deriva uma pluralidade de candidatos de mesclagem normais, seleciona um candidato de mesclagem normal e obtém informações de interprevisão do modo de mesclagem normal. Essas informações de interprevisão são fornecidas à unidade de previsão de compensação de movimento 406 através do comutador 408. A configuração e o processamento detalhados da unidade de derivação de modo de mesclagem normal 402 serão descritos abaixo.
[00125] Uma unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 403 deriva uma pluralidade de candidatos de previsor de vetor de movimento de sub-bloco, seleciona um previsor de vetor de movimento de sub-bloco e calcula um valor adicionado obtido adicionando-se o previsor de vetor de movimento de sub-bloco selecionado e a diferença de vetor de movimento decodificado, e configura esse valor adicionado como um vetor de movimento. O modo de interprevisão decodificado, o índice de referência e o vetor de movimento serão as informações de interprevisão do modo previsor de movimento de sub-bloco. Essas informações de interprevisão são fornecidas à unidade de previsão de compensação de movimento 406 através do comutador 408.
[00126] Uma unidade de derivação de modo de mesclagem de sub- bloco 404 deriva uma pluralidade de candidatos de mesclagem de sub- bloco, seleciona um candidato de mesclagem de sub-bloco e obtém informações de interprevisão do modo de mesclagem de sub-bloco. Essas informações de interprevisão são fornecidas à unidade de previsão de compensação de movimento 406 através do comutador 408.
[00127] A unidade de previsão de compensação de movimento 406 realiza interprevisão sobre o sinal de imagem de referência armazenado na memória de imagem decodificada 208, com base nas informações de interprevisão determinada. A configuração detalhada e o processamento da unidade de previsão de compensação de movimento 406 são similares aos da unidade de previsão de compensação de movimento 306, no lado da conversão em código.
UNIDADE DE DERIVAÇÃO DE MODO DE PREVISOR DE VETOR DE MOVIMENTO NORMAL (AMVP NORMAL)
[00128] A unidade de derivação de modo de previsor de vetor de movimento normal 301, da Figura 17, inclui uma unidade de derivação de candidato de previsor de vetor de movimento espacial 321, uma unidade de derivação de candidato de previsor de vetor de movimento temporal 322, uma unidade de derivação de candidato de previsor de vetor de movimento baseado em histórico 323, um reabastecedor de candidato de previsor de vetor de movimento 325, um detector de vetor de movimento normal 326, um seletor de candidato de previsor de vetor de movimento 327 e um subtrator de vetor de movimento 328.
[00129] A unidade de derivação de modo de previsor de vetor de movimento normal 401, na Figura 23, inclui uma unidade de derivação de candidato de previsor de vetor de movimento espacial 421, uma unidade de derivação de candidato de vetor de movimento temporal 422, uma unidade de derivação de candidato de previsor de vetor de movimento baseado em histórico 423, um reabastecedor de candidato de previsor de vetor de movimento 425, um seletor de candidato de previsor de vetor de movimento 426 e um adicionador de vetor de movimento 427.
[00130] Os procedimentos de processamento da unidade de derivação de modo de previsor de vetor de movimento normal 301, no lado de conversão em código e na unidade de derivação de modo de previsor de vetor de movimento normal 401, no lado de decodificação, serão descritos com referência aos fluxogramas nas Figuras 19 e 25, respectivamente. A Figura 19 é um fluxograma que ilustra um procedimento de processamento de derivação de modo de previsor de vetor de movimento normal realizado pela unidade de derivação de modo de vetor de movimento normal 301, no lado da conversão em código. A Figura 25 é um fluxograma que ilustra um procedimento de processamento de derivação de modo de previsor de movimento normal realizado pela unidade de derivação de modo de vetor de movimento normal 401, no lado de decodificação.
UNIDADE DE DERIVAÇÃO DO MODO DE PREVISOR DE VETOR DE MOVIMENTO NORMAL (AMVP NORMAL): LADO DE CONVERSÃO EM CÓDIGO
[00131] O procedimento de processamento de derivação de modo de previsor de vetor de movimento normal no lado de conversão em código será descrito com referência à Figura 19. Na descrição do procedimento de processamento na Figura 19, a palavra “normal”, ilustrada na Figura 19, será omitida em alguns casos.
[00132] Primeiro, o detector de vetor de movimento normal 326 detecta um vetor de movimento normal para cada um dos modos de interprevisão e índices de referência (etapa S100 na Figura 19).
[00133] Subsequentemente, uma diferença de vetor de movimento de um vetor de movimento usado na interprevisão no modo de previsor de vetor de movimento normal é calculada para cada um dentre L0 e L1 (etapas S101 a S106 na Figura 19) na unidade de derivação de candidato de previsor de vetor de movimento espacial 321, na unidade de derivação de candidato de previsor de vetor de movimento temporal 322, na unidade de derivação de candidato de previsor de vetor de movimento baseado em histórico 323, no reabastecedor de candidato de previsor de vetor de movimento 325, no seletor de candidato de previsor de vetor de movimento 327 e no subtrator de vetor de movimento 328. Especificamente, em um caso em que o modo de previsão PredMode do bloco-alvo é interprevisão (MODE_INTER) e o modo de interprevisão é previsão L0 (Pred_L0), a lista de candidato de previsor de vetor de movimento mvpListL0 de L0 é calculada. Subsequentemente, o previsor de vetor de movimento mvpL0 é selecionado e, em seguida, uma diferença de vetor de movimento mvdL0 do vetor de movimento mvL0 de L0 é calculada. Em um caso em que o modo interprevisão do bloco-alvo é previsão L1 (Pred_L1), é calculada uma lista de candidato de previsor de movimento mvpListL1 de L1. Subsequentemente, um previsor de vetor de movimento MvPL1 é selecionado e, em seguida, uma diferença de vetor de movimento mvdL1 de um vetor de movimento mvL1 de L1 é calculada. Em um caso em que o modo interprevisão do bloco-alvo é biprevisão (pred_bi), tanto a previsão L0 quanto a previsão L1 são realizadas. Uma lista de candidato de previsor de vetor de movimento mvpListL0 de L0 é calculada, e um previsor de vetor de movimento mvpL0 de L0 é selecionado e, em seguida, uma diferença de vetor de movimento mvdL0 do vetor de movimento mvL0 de L0 é calculada. Junto com esse cálculo, uma lista de candidato de previsor de vetor de movimento mvpListL1 de L1 é calculada, e um previsor de vetor de movimento mvpL1 de L1 é calculado e, em seguida, uma diferença de vetor de movimento mvdL1 de um vetor de movimento mvL1 de L1 é calculada.
[00134] O processo de cálculo de diferença de vetor de movimento é realizado para cada uma das L0 e L1, em que o processo de cálculo é um processo comum tanto em L0 quanto em L1. Consequentemente, L0 e L1 serão denotados como LX, como um procedimento comum. No processo de cálculo da diferença de vetor de movimento de L0, X de LX é configurado como 0, enquanto no processo de cálculo da diferença de vetor de movimento de L1, X de LX é configurado como 1. Além disso, em um caso em que as informações na outra lista são referidas, em vez de uma LX, durante o processo de cálculo da diferença de vetor de movimento de uma LX, a outra lista será representada como LY.
[00135] Em um caso em que um vetor de movimento mvLX de LX é usado (etapa S102 na Figura 19: SIM), os candidatos de previsor de vetor de movimento de LX são calculados, construindo, desse modo, uma lista de candidato de previsor de vetor de movimento mvpListLX de LX (etapa S103 na Figura 19). Na unidade de derivação de modo de previsor de vetor de movimento normal 301, a unidade de derivação de candidato de previsor de vetor de movimento espacial 321, a unidade de derivação de candidato de previsor de vetor de movimento temporal 322, a unidade de derivação de candidato de previsor de vetor de movimento baseado em histórico 323 e o reabastecedor de candidato de previsor de vetor de movimento 325 derivam uma pluralidade de candidatos de previsor de vetor de movimento e, desse modo, constroem a lista de candidato de previsor de vetor de movimento mvpListLX. O procedimento de processamento detalhado da etapa S103, na Figura 19, será descrito a seguir com uso do fluxograma da Figura 20.
[00136] Subsequentemente, o seletor de candidato de previsor de vetor de movimento 327 seleciona um previsor de vetor de movimento mvpLX de LX a partir da lista de candidato de previsor de vetor de movimento mvpListLX de LX (etapa S104 na Figura 19). No presente documento, um elemento (o i-ésimo elemento contado a partir de 0) na lista de candidato de previsor de vetor de movimento mvpListLX é representado como mvpListLX [i]. A diferença de vetor de movimento, que é uma diferença entre o vetor de movimento mvLx e cada um dentre os candidatos de previsor de vetor de movimento mvpListLX [i] armazenados na lista de candidato de previsor de vetor de movimento mvpListLX, é, cada uma, calculada. Uma quantidade de código, no momento da conversão em código dessas diferenças de vetor de movimento, é calculada para cada um dos elementos (candidatos de previsor de vetor de movimento) da lista de candidato de previsor de movimento mvpListLX. Subsequentemente, o candidato de previsor de vetor de movimento mvpListLX [i] que minimiza a quantidade de código para cada um dos candidatos de previsor de vetor de movimento entre os elementos individuais registrados na lista de candidatos de previsor de vetor de movimento mvpListLX é selecionado como o previsor de vetor de movimento mvpLX, e seu índice i é obtido. Em um caso em que há uma pluralidade dos candidatos de previsor de vetor de movimento que têm a quantidade mínima de código gerado na lista de candidato de previsor de vetor de movimento mvpListLX, o candidato de previsor de vetor de movimento mvpListLX [i] que tem o índice i na lista de candidato de previsor de vetor de movimento mvpListLX representado por um pequeno número é selecionado como o previsor de vetor de movimento ideal mvpLX, e seu índice i é obtido.
[00137] Subsequentemente, o subtrator de vetor de movimento 328 subtrai o previsor de vetor de movimento mvLx selecionado de LX a partir do vetor de movimento mvLx de LX e calcula uma diferença de vetor de movimento mvdLx de LX como em: mvdLx = mvLX - mvpLX (etapa S105 na Figura 19).
UNIDADE DE DERIVAÇÃO DE MODO DE PREVISOR DE VETOR DE MOVIMENTO NORMAL (AMVP NORMAL): LADO DE DECODIFICAÇÃO
[00138] Em seguida, será descrito um procedimento de processamento de modo de previsor de movimento normal no lado da decodificação, em referência à Figura 25. No lado de decodificação, a unidade de derivação de candidato de previsor de vetor de movimento espacial 421, a unidade de derivação de candidato de previsor de vetor de movimento temporal 422, a unidade de derivação de candidato de previsor de vetor de movimento baseado em histórico 423 e o reabastecedor de candidato de previsor de vetor de movimento 425 calculam individualmente os vetores de movimento usados na interprevisão do modo de previsor de vetor de movimento normal para cada uma dentre a L0 e a L1 (etapas S201 a S206 na Figura 25). Especificamente, em um caso em que o modo de previsão PredMode do bloco-alvo é interprevisão (MODE_INTER) e o modo de interprevisão do bloco-alvo é previsão L0 (Pred_L0), a lista de candidato de previsor de vetor de movimento mvpListL0 de L0 é calculada. Subsequentemente, o previsor de vetor de movimento mvpL0 é selecionado e, em seguida, o vetor de movimento mvL0 de L0 é calculado. Em um caso em que o modo interprevisão do bloco-alvo é previsão L1 (Pred_L1), a lista de candidato de previsor de movimento L1 mvpListL1 é calculada. Subsequentemente, o previsor de vetor de movimento mvpL1 é selecionado, e o vetor de movimento L1 mvL1 é calculado. Em um caso em que o modo interprevisão do bloco-alvo é biprevisão (pred_bi), tanto a previsão L0 quanto a previsão L1 são realizadas. Uma lista de candidato de previsor de vetor de movimento mvpListL0 de L0 é calculada, e um previsor de vetor de movimento mvpL0 de L0 é selecionado e, em seguida, o vetor de movimento mvL0 de L0 é calculado. Junto com esse cálculo, uma lista de candidato de previsor de vetor de movimento mvpListL1 de L1 é calculada, e um previsor de vetor de movimento mvpL1 de L1 é calculado e, em seguida, o vetor de movimento mvL1 de L1 é calculado.
[00139] Da mesma forma que o lado de conversão em código, o lado de decodificação realiza o processamento de cálculo de vetor de movimento para cada um dentre a L0 e a L1, em que o processamento é um processo comum tanto em L0 quanto em L1. Consequentemente, L0 e L1 serão denotados como LX, como um procedimento comum. LX representa um modo interprevisão usado para a interprevisão de um bloco-alvo de conversão em código. X é 0 no processo de cálculo do vetor de movimento de L0, e X é 1 no processo de cálculo do vetor de movimento de L1. Além disso, no caso em que as informações contidas na outra lista de referência são referidas, em vez da mesma lista de referência que a LX a ser calculada durante o processo de cálculo do vetor de movimento da LX, a outra lista de referência será representada como LY.
[00140] Em um caso em que o vetor de movimento mvLX de LX é usado (etapa S202 na Figura 25: SIM), os candidatos de previsor de vetor de movimento de LX são calculados para construir uma lista de candidato de previsor de vetor de movimento mvpListLX de LX (etapa S203 na Figura 25). Na unidade de derivação de modo de previsor de vetor de movimento normal 401, a unidade de derivação de candidato de previsor de vetor de movimento espacial 421, a unidade de derivação de candidato de previsor de vetor de movimento temporal 422, a unidade de derivação de candidato de previsor de vetor de movimento baseado na histórico 423 e o reabastecedor de candidato de previsor de vetor de movimento 425 calculam uma pluralidade de candidatos de previsor de vetor de movimento e, desse modo, constroem a lista de candidato de previsor de vetor de movimento mvpListLX. O procedimento de processamento detalhado da etapa S203, na Figura 25, será descrito abaixo com uso do fluxograma da Figura 20.
[00141] Subsequentemente, o seletor de candidato de previsor de vetor de movimento 426 extrai um candidato de previsor de vetor de movimento mvpListLX [mvpldxLX] que corresponde ao índice de previsor de vetor de movimento mvpldxLX decodificado e fornecido pela unidade de decodificação de sequências de bits 201 da lista de candidato de previsor de vetor de movimento mvpListLX, como o previsor de vetor de movimento selecionado mvpLX (etapa S204 na Figura 25).
[00142] Subsequentemente, o adicionador de vetor de movimento 427 adiciona a diferença de vetor de movimento mvdLX de LX e o previsor de vetor de movimento mvpLX de LX que são decodificados e fornecidos pela unidade de decodificação de sequências de bits 201 e calcula um vetor de movimento mvLX de LX como em: mvLX = mvpLX + mvdLX (etapa S205 na Figura 25).
UNIDADE DE DERIVAÇÃO DE MODO DE PREVISOR DE VETOR DE MOVIMENTO NORMAL (AMVP NORMAL): MÉTODO DE PREVISÃO DE VETOR DE MOVIMENTO
[00143] A Figura 20 é um fluxograma que ilustra um procedimento de processamento do processo de derivação de modo de previsor de vetor de movimento normal, que tem uma função comum à unidade de derivação de modo de previsor de vetor de movimento normal 301 do dispositivo de conversão em código de imagem e à unidade de derivação de modo de previsor de vetor de movimento normal 401 do dispositivo de decodificação imagem, de acordo com a modalidade da presente invenção.
[00144] Cada uma dentre a unidade de derivação de modo de previsor de vetor de movimento normal 301 e a unidade de derivação de modo de previsor de vetor de movimento normal 401 inclui uma lista de candidato de previsor de vetor de movimento mvpListLX. A lista de candidato de previsor de vetor de movimento mvpListLX tem uma estrutura de lista e inclui uma região de armazenamento que armazena, como elementos, um índice de previsor de vetor de movimento que indica um local na lista de candidato de previsor de vetor de movimento e um candidato de previsor de vetor de movimento que corresponde ao índice. O número do índice de previsor de vetor de movimento começa a partir de 0, e os candidatos de previsor de vetor de movimento devem ser armazenados na região de armazenamento da lista de candidato de previsor de vetor de movimento mvpListLX. Na presente modalidade, presume-se que a lista de candidato de previsor de vetor de movimento mvpListLX possa registrar pelo menos dois candidatos de previsor de vetor de movimento (como as informações de interprevisão). Além disso, uma variável numCurrMvpCand que indica o número de candidatos de previsor de vetor de movimento registrados na lista de candidatos de previsor de vetor de movimento mvpListLx é configurado como 0.
[00145] Cada uma das unidades de derivação de candidato de previsor de vetor de movimento espacial 321 e 421 deriva um candidato de previsor de vetor de movimento a partir de blocos nas proximidades do lado esquerdo. Esse processo deriva um previsor de vetor de movimento mvLXA, em referência às informações interprevisão do bloco nas proximidades do lado esquerdo (A0 ou A1 na Figura 11), ou seja, uma sinalização que indica se um candidato de previsor de vetor de movimento é usável, um vetor de movimento, um índice de referência, ou similar, e adiciona o MVLXa derivado à lista de candidato de previsor de vetor de movimento mvpListLX (etapa S301 na Figura 20). Deve-se observar que X é 0 na previsão L0, e X é 1 na previsão L1 (o mesmo se aplica a seguir). Subsequentemente, as unidades de derivação de candidato de previsor de vetor de movimento espacial 321 e 421 derivam os candidatos de previsor de vetor de movimento de um bloco próximo superior. Esse processo deriva um previsor de vetor de movimento mvLXB, em referência às informações de interprevisão do bloco próximo superior (B0, B1 ou B2 na Figura 11), ou seja, uma sinalização que indica se um candidato de previsor de vetor de movimento é usável, um vetor de movimento, um índice de referência, ou similar, quando o mvLXA derivado e o mvLXB derivado não são iguais, o mvLXB é adicionado à lista de candidatos de previsor de vetor de movimento mvpListLX (etapa S302 na Figura 20). Os processos nas etapas S301 e S302, na Figura 20, são fornecidos como um processo comum, exceto que as posições e números de blocos próximos de referência são diferentes, e uma sinalização availableFlagLXN que indica se um candidato de previsor de vetor de movimento de um bloco de conversão em código é usável, e um vetor de movimento mvLXN, um índice de referência refldxN (N indica A ou B, o que se aplica de modo similar doravante) será derivado nesses processos.
[00146] Subsequentemente, cada uma das unidades de derivação de candidato de previsor do vetor de movimento temporal 322 e 422 deriva um candidato de previsor de vetor de movimento a partir de um bloco em uma imagem que tem uma diferença temporal a partir da imagem-alvo. Esse processo deriva uma sinalização availableFlagLXCol que indica se um candidato de previsor de vetor de movimento de um bloco de conversão em código de uma imagem que tem uma diferença temporal é usável, e um vetor de movimento mvLXCol, um índice de referência refIdxCol e uma lista de referência listCol, e adiciona mvLXCol à lista de candidato de previsor de vetor de movimento mvpListLX (etapa S303 na Figura 20).
[00147] Deve-se observar que se supõe que os processos das unidades de derivação de candidato de previsor de vetor de movimento temporal 322 e 422 podem ser omitidas em unidades de uma sequência (SPS), uma imagem (PPS) ou uma fatia.
[00148] Subsequentemente, as unidades de derivação de candidato de previsor de vetor de movimento baseado em histórico 323 e 423 adicionam os candidatos de previsor de vetor de movimento baseados em histórico registrados em uma lista de candidato de previsor de vetor de movimento baseada em histórico HmvpCandList à lista de candidato de previsor de vetor de movimento mvpListLX. (etapa S304 na Figura 20). Os detalhes do processo de processamento de registo na etapa S304 serão descritos a seguir, em referência ao fluxograma da Figura 29.
[00149] Subsequentemente, os reabastecedores de candidato de previsor de vetor de movimento 325 e 425 adicionam um candidato de previsor de vetor de movimento que tem um valor predeterminado, como (0, 0) até que a lista de candidato de previsor de vetor de movimento mvpListLX seja satisfeita (S305 na Figura 20).
UNIDADE DE DERIVAÇÃO DO MODO DE MESCLAGEM NORMAL (MESCLAGEM NORMAL)
[00150] A unidade de derivação do modo de mesclagem normal 302, na Figura 18, inclui uma unidade de derivação de candidato de mesclagem espacial 341, uma unidade de derivação de candidato de mesclagem temporal 342, uma unidade de derivação de candidato de mesclagem de média 344, uma unidade de derivação de candidato de mesclagem baseada em histórico 345, um reabastecedor de candidato de mesclagem 346 e um seletor de candidato de mesclagem 347.
[00151] A unidade de derivação de modo de mesclagem normal 402, na Figura 24, inclui uma unidade de derivação de candidato de mesclagem espacial 441, uma unidade de derivação de candidato de mesclagem temporal 442, uma unidade de derivação de candidato de mesclagem de média 444, uma unidade de derivação de candidato de mesclagem baseada em histórico 445, um reabastecedor de candidato de mesclagem 446 e um seletor de candidato de mesclagem 447.
[00152] A Figura 21 é um fluxograma que ilustra um procedimento de um processo de derivação de modo de mesclagem normal que tem uma função comum à unidade de derivação de modo de mesclagem normal 302 do dispositivo de conversão em código de imagem e a unidade de derivação de modo de mesclagem normal 402 do dispositivo de decodificação de imagem, de acordo com a modalidade da presente invenção.
[00153] Doravante, vários processos serão descritos passo a passo. A descrição a seguir é um caso em que o tipo de fatia slice_type é fatia B, a menos que especificado de outro modo. No entanto, a presente invenção também pode ser aplicada ao caso de fatia P. Deve ser observado que há apenas a previsão L0 (Pred_L0) como o modo de interprevisão, sem a previsão L1 (Pred_L1) ou a biprevisão (pred_bi), no caso em que o tipo de fatia slice_type é a fatia P. Consequentemente, é possível omitir o processo relacionado à L1, nesse caso.
[00154] A unidade de derivação de modo de mesclagem normal 302 e a unidade de derivação de modo de mesclagem normal 402 incluem uma lista de candidato de mesclagem mergeCandList. A lista de candidato de mesclagem mergeCandList tem uma estrutura de lista e inclui uma região de armazenamento que armazena, como elementos, um índice de mesclagem que indica um local na lista de candidato de mesclagem e um candidato de mesclagem que corresponde ao índice. O número do índice de mesclagem começa a partir de 0, e o candidato de mesclagem é armazenado na região de armazenamento da lista de candidato de mesclagem mergeCandList. No processamento subsequente, o candidato de mesclagem do índice de mesclagem i registrado na lista de candidato de mesclagem mergeCandList será representado por mergeCandList[i]. Na presente modalidade, presume- se que a lista de candidato de mesclagem mergeCandList pode registar pelo menos seis candidatos de mesclagem (como informações de interprevisão). Além disso, uma variável numCurrMergeCand que indica o número de candidatos de mesclagem registrados na lista de candidato de mesclagem mergeCandList é configurado como 0.
[00155] A unidade de derivação de candidato de mesclagem espacial 341 e a unidade de derivação de candidato de mesclagem espacial 441 derivam um candidato de mesclagem espacial de cada um dos blocos (B1, A1, B0, A0, B2 na Figura 11) nas proximidades do bloco-alvo, na ordem de B1, A1, B0, A0 e B2, a partir das informações de conversão em código armazenadas na memória de armazenamento de informações de conversão em código 111 do dispositivo de conversão em código de imagem ou na memória de armazenamento de informações de conversão em código 205 do dispositivo de decodificação de imagem, e, em seguida, registram os candidatos derivados de mesclagem espacial na lista de candidato de mesclagem mergeCandList (etapa S401 na Figura 21). No presente documento, N que indica um dentre B1, A1, B0, A0, B2 ou o candidato de mesclagem temporal Col será definido. Os itens a serem derivados incluem uma sinalização availableFlagN que indica se as informações de interprevisão do bloco N são usáveis como candidato de mesclagem espacial, um índice de referência refIdxL0N de L0 e um índice de referência refIdxL1N de L1 do candidato de mesclagem espacial N, uma sinalização de previsão L0 PredFlagL0N que indica se a previsão L0 deve ser realizada, uma sinalização de previsão L1 predFlagL1N que indica se a previsão L1 deve ser realizada, um vetor de movimento mvL0N de L0 e um vetor de movimento mvL1N de L1. No entanto, uma vez que o candidato de mesclagem, na presente modalidade, é derivado sem referência às informações de interprevisão do bloco incluído no bloco-alvo de conversão em código, o candidato de mesclagem espacial que usa as informações de interprevisão do bloco incluído no bloco-alvo de conversão em código não será derivado.
[00156] Subsequentemente, a unidade de derivação de candidato de mesclagem temporal 342 e a unidade de derivação de candidato de mesclagem temporal 442 derivam os candidatos de mesclagem temporal a partir de imagens que têm uma diferença temporal, e registram os candidatos de mesclagem temporal derivados em uma lista de candidato de mesclagem mergeCandList (etapa S402 na Figura 21). Os itens a serem derivados incluem uma sinalização availableFlagCol que indica se o candidato de mesclagem temporal é usável, uma sinalização de previsão L0 predFlagL0Col que indica se a previsão L0 do candidato de mesclagem de tempo deve ser executada, uma sinalização L1 predFlagL1Col que indica se a previsão L1 deve ser realizada, e um vetor de movimento mvL0Col de L0, e um vetor de movimento mvL1Col de L1.
[00157] Deve ser observado que se supõe que os processos das unidades de derivação de candidato de mesclagem temporal 342 e 442 podem ser omitidos em unidades de uma sequência (SPS), uma imagem (PPS) ou uma fatia.
[00158] Subsequentemente, a unidade de derivação de candidato de mesclagem baseada em histórico 345 e a unidade de derivação de candidato de mesclagem baseada em histórico 445 registram os candidatos de previsor de vetor de movimento baseados em histórico registrados na lista de candidatos de previsor de vetor de movimento baseado em histórico HmvpCandList, para a lista de candidato de mesclagem mergeCandList (etapa S403 na Figura 21).
[00159] Em um caso em que o número de candidatos de mesclagem numCurrMergeCand registrado na lista de candidato de mesclagem mergeCandList é menor do que o número máximo de candidatos de mesclagem MaxNumMergeCand, o candidato de mesclagem baseado em histórico é derivado com o número de candidatos de mesclagem numCurrMergeCand registrado na lista de candidato de mesclagem MergeCandList que se limita ao número máximo de candidatos de mesclagem MaxNumMergeCand e, em seguida, registrado na lista de candidato de mesclagem MergeCandList.
[00160] Subsequentemente, a unidade de derivação de candidato de mesclagem de média 344 e a unidade de derivação de candidato de mesclagem de média 444 derivam um candidato de mesclagem de média a partir da lista de candidato de mesclagem MergeCandList e adicionam o candidato de mesclagem de média derivada à lista de candidato de mesclagem MergeCandList (etapa S404 na Figura 21).
[00161] Em um caso em que o número de candidatos de mesclagem numCurrMergeCand registrado na lista de candidato de mesclagem mergeCandList é menor do que o número máximo de candidatos de mesclagem MaxNumMergeCand, o candidato de mesclagem de média é derivado com o número de candidatos de mesclagem numCurrMergeCand registrado na lista de candidato de mesclagem MergeCandList que se limita ao número máximo de candidatos de mesclagem MaxNumMergeCand e, em seguida, registrado na lista de candidato de mesclagem MergeCandList.
[00162] No presente documento, o candidato de mesclagem de média é um novo candidato de mesclagem, o que inclui um vetor de movimento obtido promediando-se os vetores de movimento do primeiro candidato de mesclagem e do segundo candidato de mesclagem registrado na lista de candidato de mesclagem MergeCandList para cada uma dentre a previsão L0 e a previsão L1.
[00163] Subsequentemente, no reabastecedor de candidato de mesclagem 346 e no reabastecedor de candidato de mesclagem 446, em um caso em que o número de candidatos de mesclagem numCurrMergeCand registrado na lista de candidato de mesclagem MergeCandList é menor do que o número máximo de candidatos de mescalgem MaxNumMergeCand, um candidato de mesclagem adicional é derivado com o número de candidatos de mesclagem numCurrMergeCand registrado na lista de candidato de mesclagem MergeCandList que se limita ao número máximo de candidatos de mesclagem MaxNumMergeCand, e, em seguida, registrado na lista de candidato de mesclagem MergeCandList (etapa S405 na Figura 21). Na fatia P, um candidato de mesclagem que tem o vetor de movimento de um valor (0, 0) e o modo de previsão de previsão L0 (Pred_L0) é adicionado com o número máximo de candidatos de mesclagem MaxNumMergeCand como o limite superior. Na fatia B, um candidato de mesclagem que tem o modo de previsão de biprevisão (pred_bi) e o vetor de movimento de um valor (0, 0) é adicionado. O índice de referência no momento da adição de um candidato de mesclagem é diferente do índice de referência que já foi adicionado.
[00164] Subsequentemente, o seletor de candidato de mesclagem 347 e o seletor de candidato de mesclagem 447 selecionam um candidato de mesclagem entre os candidatos de mesclagem registrados na lista de candidato de mesclagem MergeCandList. O seletor de candidato de mesclagem 347 no lado de conversão em código calcula a quantidade de código e a quantidade de distorção e, desse modo, seleciona um candidato de mesclagem e, em seguida, fornece um índice de mesclagem que indica o candidato de mesclagem selecionado e as informações de interprevisão do candidato de mesclagem para a unidade de previsão de compensação de movimento 306 através do determinador de modo de interprevisão 305. Em contrapartida, o seletor de candidato de mesclagem 447 no lado de decodificação seleciona um candidato de mesclagem com base no índice de mesclagem decodificado e fornece o candidato de mesclagem selecionado para a unidade de previsão de compensação de movimento 406.
LISTA DE CANDIDATO DE PREVISOR DE VETOR DE MOVIMENTO BASEADO EM HISTÓRICO DE ATUALIZAÇÃO
[00165] Em seguida, um método de inicialização e atualização da lista de candidato de previsor de vetor de movimento baseada em histórico HmvpCandList fornecido na memória de armazenamento de informações de conversão em código 111, no lado de conversão em código, e na memória de armazenamento de informações de conversão em código 205, no lado da decodificação, serão descritos em detalhes. A Figura 26 é um fluxograma que ilustra o procedimento de processamento de inicialização/ atualização de lista de candidato de previsor de vetor de movimento baseado em histórico.
[00166] Na presente modalidade, a lista de candidato de previsor de vetor de movimento baseado em histórico HmvpCandList é atualizada na memória de armazenamento de informações de conversão em código 111 e na memória de armazenamento de informações de conversão em código 205. Alternativamente, uma unidade de atualização de lista de candidato de previsor de vetor de movimento baseada em histórico pode ser fornecida na unidade de interprevisão 102 e na unidade de interprevisão 203 para atualizar a lista de candidato de previsor de vetor de movimento baseada em histórico HmvpCandList.
[00167] As configurações iniciais da lista de candidato de previsor de vetor de movimento baseada em histórico HmvpCandList são realizadas na cabeça da fatia. No lado de conversão em código, a lista de candidato de previsor de vetor de movimento baseada em histórico HmvpCandList é atualizada em um caso em que o modo de previsor de vetor de movimento normal ou o modo de mesclagem normal é selecionado pelo determinador de método de previsão 105. No lado de decodificação, a lista de candidato de previsor de vetor de movimento baseada em histórico HmvpCandList é atualizada em um caso em que as informações de previsão decodificadas pela unidade de decodificação de sequências de bits 201 são o modo de previsor de vetor de movimento normal ou o modo de mesclagem normal.
[00168] As informações de interprevisão usadas no momento de realização da interprevisão no modo de previsor de vetor de movimento normal ou no modo de mesclagem normal devem ser registradas na lista de candidato de previsor de vetor de movimento baseado em histórico HmvpCandList, como um candidato de informações de interprevisão hMvpCand. O candidato de informações de interprevisão hMvpCand inclui o índice de referência RefIdxL0 de L0 e o índice de referência RefIdxL1 de L1, o indicador previsão predFlagL0 que indica se a previsão L0 deve ser realizada, o indicador previsão predFlagL1 que indica se a previsão L1 deve ser realizada, o vetor de movimento mvL0 de L0 e o vetor de movimento mvL1 de L1.
[00169] Em um caso em que há informações de interprevisão que têm o mesmo valor que o candidato de informações de interprevisão hMvpCand entre os elementos (isto é, informações de interprevisão) registrados na lista de candidato de previsor de vetor de movimento baseado em histórico hMvpCandList fornecido na memória de armazenamento de informações de conversão em código 111, no lado de conversão em código e na memória de armazenamento de informações de conversão em código 205, no lado da decodificação, o elemento será excluído da lista de candidato de previsor de vetor de movimento baseada em histórico hMvpCandList. Em contrapartida, em um caso em que não há nenhuma informação de interprevisão que tenha o mesmo valor que o candidato de informações de interprevisão hMvpCand, o elemento principal da lista de candidato de previsor de vetor de movimento baseado em histórico hMvpCandList será excluído, e as informações de interprevisão de candidato hMvpCand serão adicionadas ao final da lista de candidato de previsor de vetor de movimento baseada em histórico hMvpCandList.
[00170] O número de elementos da lista de candidato de previsor de vetor de movimento baseado em histórico hMvpCandList fornecida na memória de armazenamento de informações de conversão em código 111, no lado da conversão em código e na memória de armazenamento de informações de conversão em código 205, no lado de decodificação da presente invenção, é configurado para seis.
[00171] Primeiro, a lista de candidato de previsor de vetor de movimento baseada em histórico hMvpCandList é inicializada em unidades de fatias (etapa S2101 na Figura 26). Todos os elementos da lista de candidato de previsor de vetor de movimento baseada em histórico hMvpCandList são esvaziados na cabeça da fatia, e o número numHmvpCand (número atual de candidatos) de candidatos de previsor de vetor de movimento baseados em histórico registrados na lista de candidato de previsor de vetor de movimento baseado em histórico hMvpCandList é configurado como 0.
[00172] Embora a inicialização da lista de candidato de previsor de vetor de movimento baseada em histórico hMvpCandList seja realizada em unidades de fatias (primeiro bloco de conversão em código de uma fatia), a inicialização pode ser realizada em unidades de imagens, lado a lado ou em linhas de blocos de árvore.
[00173] Subsequentemente, o seguinte processo de atualização da lista de candidato de previsor de vetor de movimento baseada em histórico hMvpCandList é repetidamente realizado para cada um dos blocos de conversão em código na fatia (etapas S2102 a S2107 na Figura 26).
[00174] Primeiro, as configurações iniciais são realizadas em unidades de blocos de conversão em código. Uma sinalização “IdenticalCandExist” que indica se existe um candidato idêntico é configurado como um valor de FALSE (false), um índice-alvo de exclusão “removeIdx” que indica que o candidato-alvo de exclusão é configurado como 0 (etapa S2103 na Figura 26).
[00175] É determinado se há um candidato de informações de interprevisão hMvpCand para ser registrado (etapa S2104 na Figura 26). Em um caso em que o determinador do método de previsão 105 no lado de conversão em código determina o modo de previsor de vetor de movimento normal ou o modo de mesclagem normal, ou em que a unidade de decodificação de sequências de bits 201 no lado de decodificação realiza a decodificação como o modo de previsor de vetor de movimento normal ou o modo de mesclagem normal, as informações de interprevisão correspondentes são configuradas como um candidato de informações de interprevisão hMvpCand a ser registrado. Em um caso em que o determinador de método de previsão 105 no lado de conversão em código determina o modo de intraprevisão, o modo de previsor de vetor de movimento de sub-bloco ou o modo de mesclagem de sub-bloco, ou em um caso em que a unidade de decodificação de sequências de bits 201 no lado da decodificação realiza a decodificação como o modo de intraprevisão, o sub-bloco de modo de previsor de vetor de movimento, ou o modo de mesclagem de sub-bloco, o processo de atualização da lista de candidato de previsor de vetor de movimento baseado em histórico hMvpCandList não será realizado, e não haverá candidato de informações de interprevisão hMvpCand para ser registrado. Em um caso em que não há nenhum candidato de informações de interprevisão hMvpCand para ser registrado, as etapas S2105 a S2106 serão ignoradas (etapa S2104 na Figura 26: NÃO). Em um caso em que há um candidato de informações de interprevisão hMvpCand para ser registrado, o processo de etapa S2105 em diante será realizado (etapa S2104 na Figura 26: SIM).
[00176] Subsequentemente, é determinado se os elementos individuais da lista de candidatos de previsor de vetor de movimento baseado em histórico HMVPCandList incluem um elemento (informações interprevisão) com o mesmo valor que o candidato de informações de interprevisão HmvpCand a ser registrado, isto é, se existe o elemento idêntico (etapa S2105 na Figura 26). A Figura 27 é um fluxograma do procedimento de processamento de confirmação de elementos idênticos. Em um caso em que o valor do número de candidatos de previsor de vetor de movimento baseado em histórico NumHMvPCand é 0 (etapa S2121: NÃO na Figura 27), a lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList está vazia e o candidato idêntico não existe. Consequentemente, as etapas S2122 a S2125 na Figura 27 serão ignoradas, terminando o procedimento de processamento de confirmação do elemento idêntico. Em um caso em que o valor do número numhMvpCand dos candidatos de previsor de movimento baseados em histórico é maior que 0 (SIM na etapa S2121 na Figura 27), o processo da etapa S2123 será repetido a partir de um índice de previsor de vetor de movimento baseado em histórico HMVPidx de 0 para NumHMvPCand-1 (etapas S2122 a S2125 na Figura 27). Primeiro, a comparação é feita sobre se o elemento HMVPidx-ésimo HMvPCandList [HMVPidx] contado a partir de 0, na lista de candidato de previsor de vetor de movimento baseado em histórico é idêntico ao candidato de informações de interprevisão HMVPCand (etapa S2123 na Figura 27). Em um caso em que os mesmos são idênticos (etapa S2123 na Figura 27: SIM), a sinalização IdenticalCandExist que indica se o candidato idêntico existe é configurada como um valor TRUE, e o índice- alvo de exclusão removeIdx que indica a posição do elemento a ser excluído é configurado como um valor atual do índice de previsor de vetor de movimento baseado em histórico hMvpIdx, e o processamento de confirmação de elemento idêntico será concluído. Em um caso em que os mesmos não são idênticos (etapa S2123 na Figura 27: NÃO), HMVPidx é aumentado em um. Em um caso em que o índice previsor de vetor de movimento baseado em histórico HMVPidx é menor ou igual a NumHMvPCand-1, o processamento da etapa S2123 e é realizado depois.
[00177] Retornando ao fluxograma da Figura 26, é realizado o processo de deslocamento e adição de elementos da lista de candidato de previsor de movimento baseada em histórico HMVPCandList (etapa S2106 na Figura 26). A Figura 28 é um fluxograma do procedimento de processamento de deslocamento/adição de elementos da lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList na etapa S2106 na Figura 26. Primeiro, é determinado se deve adicionar um novo elemento depois de remover o elemento armazenado na lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList, ou para adicionar um novo elemento, sem remover o elemento. Especificamente, uma comparação é feita sobre se a sinalização identicalcandexist que indica se o candidato idêntico existe é TRUE, ou se NumhMVPCand é 6 (etapa S2141 na Figura 28). Em um caso em que uma das condições que a sinalização identicalCandExist que indica se o candidato idêntico existe é TRUE e que NumHmvpCand é 6 é satisfeito (etapa S2141: SIM na Figura 28), o elemento armazenado na lista de candidato de previsor de vetor de movimento baseado em histórico HmvpCandList é removido e, posteriormente, um novo elemento será adicionado. Um valor inicial do índice i é definido como um valor de RemoveIDX + 1. O processo de deslocamento de elemento da etapa S2143 é repetido a partir desse valor inicial para NumhMVPCand. (etapas S2142 a S2144 na Figura 28). Ao copiar os elementos de HMVPCandList[i] para HMVPCandList[i-1], os elementos são deslocados para frente (etapa S2143 na Figura 28), e i é aumentado em um (etapas S2142 a S2144 na Figura 28). Subsequentemente, o candidato de informações de interprevisão HMVPCand é adicionado ao (NumhMvPCand-1)-ésimo HMvPCandList [NumhMvPCand-1] contando a partir de 0, que corresponde ao fim da lista de candidato de previsor de vetor de movimento baseado em histórico (etapa S2145 na Figura 28), e o processo de deslocamento/ adição de elemento da lista de candidato de previsor de vetor de movimento baseado em histórico HMVPCandList será concluído. Em contrapartida, em um caso em que nenhuma das condições que a sinalização identicalcandexist que indica se o candidato idêntico existe é VERDADEIRO e que NumhMVPCand é 6 são satisfeitas (etapa S2141: NÃO na Figura 28), o candidato de informações interprevisão HMVPCand será adicionado ao final da lista de candidato de previsor de vetor de movimento baseada em histórico, sem remover o elemento armazenado na lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandlist (etapa S2146 na Figura 28). No presente documento, o fim da lista de candidato de previsor de vetor de movimento baseada em histórico é o NumhMVPCand-ésimo HMVPCandList [NumhMvPCand] contado a partir de 0. Além disso, NumhMVPCand é aumentado em um, e o processo de deslocamento de elemento e adição da lista de candidatos de previsor de movimento baseado em histórico HMVPCandList estão concluídos.
[00178] A Figura 31 é uma vista que ilustra um exemplo de um processo de atualização da lista de candidatos de previsor de vetor de movimento baseada em histórico. Em um caso em que um novo elemento deve ser adicionado à lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList, em que seis elementos (informações de interprevisão) já foram registrados, a lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList é comparada com as novas informações de interprevisão, em ordem, a partir do elemento principal (Figura 31A). Quando o novo elemento tem o mesmo valor que o terceiro elemento HMVP2 da cabeça da lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList, o elemento HMVP2 é excluído da lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList, e os elementos HMVP3 a HMVP5 são deslocados (copiados), um a um em diante, e um novo elemento é adicionado ao final da lista de candidato de previsor de vetor de movimento baseado em histórico HMVPCandList (Figura31B) para concluir a atualização da lista de candidato de previsor de vetor de movimento baseado em histórico HMVPCandlist (Figura 31C). PROCESSO DE DERIVAÇÃO DE CANDIDATO DE PREVISOR DE VETOR DE MOVIMENTO BASEADO EM HISTÓRICO Em seguida, um método de derivação de um candidato de previsor de vetor de movimento baseado em histórico da lista de candidato de previsor de movimento baseada em histórico HMVPCandList será descrito em detalhes. Isso corresponde a um procedimento de processamento da etapa S304 na Figura 20 referente ao processamento comum realizado pela unidade de derivação de candidato de previsor de vetor de movimento baseado em histórico 323 da unidade de derivação modo de previsor de vetor de movimento normal 301 no lado de conversão em código e na unidade de derivação de candidato de previsor de vetor de movimento baseado na histórico 423 da unidade de derivação de modo de previsor de vetor de movimento normal 401 no lado de decodificação. A Figura 29 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato de previsor de vetor de movimento baseado em histórico.
[00179] Em um caso em que o número atual de candidatos de previsor de vetor de movimento NumCurrmVPCand é maior ou igual ao número máximo de elementos da lista de candidato de previsor de vetor de movimento MVPListlx (no presente documento, 2), ou o número de candidatos de previsor de vetor de movimento baseados em histórico numhmvpcand é 0 (etapa S2201: NO in Figura 29), o processo de etapas S2202 a S2209 da Figura 29 será omitido, e o procedimento de processamento de derivação de candidato de previsor de vetor de movimento baseado em histórico será concluído. Em um caso em que o número numCurrmVPCand dos candidatos de previsor de vetor de movimento atual é menor do que 2, que é o número máximo de elementos da lista candidato de previsor de vetor de movimento MVPListlX, e em um caso em que o valor do número numhMvpCand do previsor de vetor de movimento baseado em histórico candidato é maior que 0 (etapa S2201 na Figura 29: SIM), será realizado o processo das etapas S2202 a S2209 na Figura 29.
[00180] Subsequentemente, o processo das etapas S2203 a S2208 na Figura 29 é repetido, até que o índice i seja a partir de 1 até um valor menor do que 4 ou o número de candidatos de previsor de vetor de movimento baseados em histórico numCheckedHMVPCand (etapas S2202 a S2209 na Figura 29). Em um caso em que o número atual de candidatos de previsor de vetor de movimento NumCurrmVPCand é maior ou igual a 2, que é o número máximo de elementos da lista de candidatos de previsor de vetor de movimento mvpListLX (etapa S2203: NÃO na Figura 29), o processo das etapas S2204 a S2209 na Figura 29 será omitido, e o procedimento de processamento de derivação de candidato de previsor de vetor de movimento baseado em histórico será concluído. Em um caso em que o número atual de candidatos de previsor de vetor de movimento numCurrmVPCand é menor do que 2, que é o número máximo de elementos na lista candidato de previsor vetor movimento mvpListLX (etapa S2203 na Figura 29: SIM), o processo na etapa S2204 e, mais tarde, na Figura 29, será realizado.
[00181] Subsequentemente, o processo nas etapas S2205 a S2207 é realizado para casos em que Y é 0 e Y é 1 (L0 e L1) (etapas S2204 a S2208 na Figura 29). Em um caso em que o número atual de candidatos de previsor de vetor de movimento NumCurrmVPCand é maior ou igual a 2, que é o número máximo de elementos da lista de candidatos de previsor de vetor de movimento mvpListLX (etapa S2205: NÃO na Figura 29), o processo das etapas S2206 a S2209, na Figura 29, será omitido, e o procedimento de processamento de derivação de candidato de previsor de vetor de movimento baseado em histórico será concluído. Em um caso em que o número atual de candidatos de previsor de vetor de movimento numCurrmVPCand é menor do que 2, que é o número máximo de elementos na lista de candidato de previsor de vetor de movimento mvpListLX (etapa S2205 na Figura 29: YES), o processo na etapa S2206 e, mais tarde, na Figura 29, será realizado.
[00182] Em seguida, em um caso em que a lista de candidato de previsor de vetor de movimento baseada em histórico HMVPCandList inclui um elemento com o mesmo índice de referência que o índice de referência RefidXLx do vetor-alvo de movimento de conversão em código/decodificação e que é diferente de qualquer elemento da lista de previsor de vetor de movimento MVPlistLx (etapa S2206 : SIM na Figura 29), um vetor de movimento de LY do candidato de previsor de vetor de movimento baseado em histórico HMvPCandList [NumhMVPCand-i] é adicionado ao numCurrMvpCand-ésimo elemento MVPListlx [NumcurrmVPCand], contando a partir de 0 na lista de candidato de previsor de vetor de movimento (etapa S2207 na Figura 29), e o número numcurrmvpcand RMVPCand dos candidatos de previsor de vetor de movimento atual é aumentado em um. Em um caso em que não há nenhum elemento na lista de candidatos de previsor de vetor de movimento baseada em histórico HMVPCandList que tenha o mesmo índice de referência que o índice de referência RefidXLx do vetor-alvo de movimento de conversão em código/decodificação e que seja diferente de qualquer elemento da lista previsor de vetor de movimento mvpListlx (etapa S2206: NÃO na Figura 29), o processo adicional na etapa S2207 será ignorado.
[00183] O processo de etapas S2205 a S2207 na Figura 29 é realizado para L0 e L1 (etapas S2204 a S2208 na Figura 29). O índice i é aumentado em um, e quando o índice i é menor ou igual a qualquer um de menor valor de 4 ou o número de candidato de previsor de vetor de movimento baseado em histórico NumHMVPCand, o processo da etapa S2203 e posterior será realizado novamente (etapas S2202 a S2209 na Figura 29).
PROCESSO DE DERIVAÇÃO DE CANDIDATO DE MESCLAGEM BASEADO EM HISTÓRICO
[00184] Abaixo segue uma descrição detalhada de um método de derivação de um candidato de mesclagem baseado em histórico da lista de candidato de mesclagem baseada em histórico HMVPCandlist, um procedimento do processo da etapa S404 na Figura 21, que é um processo comum da unidade de derivação de candidato de mesclagem baseada em histórico 345 da unidade de derivação de modo de mesclagem normal 302 no lado de conversão em código e da unidade de derivação de candidato de mesclagem baseada em histórico 445 da unidade de derivação de modo de mesclagem normal 402 no lado da decodificação. A Figura 30 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato de mesclagem baseado em histórico.
[00185] Primeiro, um processo de inicialização é executado (etapa S2301 na Figura 30). Cada um dos elementos de 0 a (numCurrMergecand -1) de isPruned[i] é configurado como o valor de FALSE, e a variável numOrigMergeCand é configurada como o número numCurrMergecand do número de elementos registrados na lista de candidato de mesclagem atual.
[00186] Subsequentemente, o valor inicial do índice HMVPidx é configurado como 1, e o processo adicional da etapa S2303 à etapa S2310 na Figura 30 é repetido a partir desse valor inicial até numHMvPCand (etapas S2302 a S2311 na Figura 30). Quando o número numCurrMergeCand dos elementos registrados na lista de candidato de mesclagem atual não é menor ou igual a (o número máximo de candidato de mesclagem MaxNummergeCand-1), os candidatos de mesclagem foram adicionados a todos os elementos da lista de candidato de mesclagem. Consequentemente, o processo de derivação de candidato de mesclagem baseado no histórico será concluído (NÃO na etapa S2303 na Figura 30). Em um caso em que o número numCurrMergecand dos elementos registrados na lista de candidato de mesclagem atual é menor ou igual a (o número máximo de candidato de mesclagem maxNummergeCand-1), o processo da etapa S2304 e posterior será realizado. sameMotion é configurado como um valor de FALSE (etapa S2304 na Figura 30). Subsequentemente, o valor inicial do índice i é configurado como 0, e o processo das etapas S2306 e S2307 na Figura 30 é realizado a partir desse valor inicial para NumOrigeCand-1 (S2305 a S2308 na Figura 30). A comparação é realizada sobre se o (numhmvpcand-HMVPidx)-ésimo elemento HMvPCandList [numhmVpcand-HMVPidx] que conta a partir de 0 na lista de candidato de previsão de vetor de movimento baseada em histórico é o mesmo valor que o i-ésimo elemento MergecandList [i] que conta a partir de 0 na lista de candidato de mesclagem (etapa S2306 na Figura 30).
[00187] Os candidatos de mesclagem são determinados para ter o mesmo valor em um caso em que todos os elementos constituintes (modo de interprevisão, índice de referência, vetor de movimento) do candidato de mesclagem têm o mesmo valor. Em um caso em que os candidatos de mesclagem têm o mesmo valor e isPruned[i] é definido como FALSE (SIM na etapa S2306 na Figura 30), tanto SameMotion quanto isPruned[i] serão definidos como TRUE (etapa S2307 na Figura 30). Em um caso em que os valores não são os mesmos (NÃO na etapa S2306 na Figura 30), o processo na etapa S2307 será ignorado. Após a conclusão do processamento de repetição a partir da etapa S2305 até a etapa S2308 na Figura 30, é feita comparação sobre se a SameMotion é FALSE (etapa S2309 na Figura 30). Em um caso em que o sameMotion é FALSE (etapa S2309: YES na Figura 30), ou seja, o (numhmvpcand-HMVPidx)-ésimo elemento HMvPCandList [numhmvPCand - HMVPidx] que conta a partir de 0 na lista de candidatos de previsor de vetor de movimento baseada em histórico não existe em MergeCandlist e, por isso, o elemento HMVPidx MVPCandlist [NumhMvPCand - HMVPidx], isto é, (NumhMvPCand - HMVPidx)-ésimo elemento contado a partir de 0 da lista de candidato de previsor de vetor de movimento baseado em histórico é adicionado à MergecandList [NumcurrMergecand], que é numCurrMergecand-ésimo na lista de candidato de mesclagem, e NumcurrMergecand é aumentada em um (etapa S2310 na Figura 30). O índice HMVPidx é aumentado em um (etapa S2302 na Figura 30), e o processo de etapas S2302 a S2311 na Figura 30 é repetido.
[00188] Após a conclusão da confirmação de todos os elementos na lista de candidato de previsor de vetor de movimento baseado em histórico ou conclusão da adição de candidatos de mesclagem a todos os elementos da lista de candidato de mesclagem, o processo de derivação de candidato de mesclagem baseado em histórico é concluído.
PROCESSO DE DERIVAÇÃO DE CANDIDATO DE MESCLAGEM DE MÉDIA
[00189] Segue-se uma descrição detalhada de um método de derivação de um candidato de mesclagem de média, um procedimento do processo da etapa S403 na Figura 21, que é um processo comum da unidade de derivação de candidato de mesclagem de média 344 da unidade de derivação de modo de mesclagem normal 302, no lado de conversão em código e da unidade de derivação de candidato de mesclagem de média 444 da unidade de derivação de modo de mesclagem normal 402, no lado da decodificação. A Figura 42 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato de mesclagem de média
[00190] Primeiro, um processo de inicialização é realizado (etapa S1301 na Figura 42). A variável numOrigMergeCand é definida como o número de elementos numCurrMergecand registrados na lista de candidato de mesclagem atual.
[00191] Subsequentemente, a varredura é realizada sequencialmente a partir do topo da lista de candidato de mesclagem para determinar duas informações de movimento. O índice i que indica as informações do primeiro movimento é configurado de modo que o índice i = 0, e o índice j que indica as segundas informações de movimento é configurado de modo que o índice j = 1. (etapas S1302 a S1303 na Figura 42). Quando o número numCurrMergeCand dos elementos registrados na lista de candidato de mesclagem atual não é menor ou igual a (o número máximo de candidato de mesclagem MaxNummergeCand-1), os candidatos de mesclagem foram adicionados a todos os elementos da lista de candidato de mesclagem. Consequentemente, o processo de derivação do candidato de mesclagem baseado no histórico será concluído (etapa S1304 na Figura 42). Em um caso em que o número numCurrMergecand dos elementos registrados na lista de candidato de mesclagem atual é menor ou igual a (o número máximo de candidato de mesclagem MaxNummergeCand- 1), o processo de etapa S1305 e posterior será realizado.
[00192] Determina-se se tanto as i-ésimas informações de movimento MergeCandList[i] da lista de candidato de mesclagem e as j-ésimas informações de movimento MergeCandlist[j] da lista de candidato de mesclagem são inválidos (etapa S1305 na Figura 42). Em um caso em que ambos são inválidos, o processo prossegue para o próximo elemento, sem derivar um candidato de mesclagem de média de MergeCandList[i] e MergeCandList[j]. Em um caso em que a condição de que tanto MergeCandList[i] quanto MergeCandList[j] são inválidos não é satisfeita, o seguinte processo é repetido com X configurado como 0 e 1 (etapas S1306 a S1314 na Figura 42).
[00193] Determina-se se a previsão LX de MergecandList[i] é válida (etapa S1307 na Figura 42). Em um caso em que a previsão LX de MergeCandList[i] é válida, determina-se se a previsão LX de MergeCandList[j] é válida (etapa S1308 na Figura 42). Em um caso em que a previsão LX de MergeCandList[j] é válida, isto é, em um caso em que tanto a previsão LX de MergeCandList[i] quanto a previsão LX de MergeCandList[j] são válidas, um vetor de movimento da previsão LX obtido promediando-se o vetor de movimento da previsão LX de MergeCandList[i] e o vetor de movimento de previsão LX de MergeCandList[j] será derivado, e um candidato de mesclagem de média da previsão LX que tem um índice de referência de previsão LX de MergeCandList[i] será derivado, de modo a ser configurado como previsão LX de AverageCand, e a previsão LX de AverageCand será validada (etapa S1309 na Figura 42). Na etapa S1308 da Figura 42, em um caso em que a previsão LX de MergeCandList[j] não é válida, isto é, em um caso em que a previsão LX de MergeCandList[i] é válida e a previsão LX de MergeCandList[j] é inválida, um vetor de movimento da previsão LX de MergeCandList[i] e um candidato de mesclagem de média de previsão LX que tem um índice de referência será derivado, de modo a ser configurado como previsão LX de AverageCand, e a previsão LX de AverageCand será validada (etapa S1310 na Figura 42). Em um caso em que a previsão LX de MergecandList[i] não é válida na etapa S1307 da Figura 42, determina-se se a previsão LX de MergecandList[j] seja válida (etapa S1311 da Figura 42). Em um caso em que a previsão LX de MergeCandList[j] é válida, isto é, em um caso em que a previsão LX de MergeCandList[i] é inválida e a previsão LX de MergeCandList[j] é válida, um vetor de movimento da previsão LX de MergeCandList[j] e um candidato de mesclagem de média da previsão LX que tem um índice de referência será derivado, de modo a ser configurado como previsão LX de AverageCand, e a previsão LX de AverageCand será validada (etapa S1312 na Figura 42). Na etapa S1311 da Figura 42, em um caso em que a previsão LX de MergeCandList[j] não é válida, isto é, em um caso em que tanto a previsão LX de MergeCandList[i] quanto a previsão LX de MergeCandList[j] são inválidas, a previsão LX de AverageCand será invalidada. (etapa S1312 na Figura 42).
[00194] O candidato de mesclagem de média AverageCand de previsão L0, previsão L1 ou previsão BI construído conforme descrito acima é adicionado ao NumcurrMergecand-ésimo MergecandList[NumCurrMergecand] da lista de candidato de mesclagem, e NumCurrMergecand é aumentado em um (etapa S1315 na Figura 42). Isso completa o processo de derivação de candidato de mesclagem de média.
[00195] O candidato de mesclagem de média é obtido por meio de média em cada um do componente horizonta do vetor de movimento e no componente vertical do vetor de movimento.
PROCESSO DE PREVISÃO DE COMPENSAÇÃO DE MOVIMENTO
[00196] A unidade de previsão de compensação de movimento 306 adquire a posição e o tamanho de um bloco que está atualmente sujeito ao processamento de previsão na conversão em código. Além disso, a unidade de previsão de compensação de movimento 306 adquire informações de interprevisão do determinador de modo interprevisão 305. Um índice de referência e um vetor de movimento são derivados a partir das informações de interprevisão adquirida, e a imagem de referência especificada pelo índice de referência na memória de imagem decodificada 104 é deslocada da mesma posição que um sinal de imagem do bloco que é submetido ao processamento de previsão pela quantidade do vetor de movimento. O sinal de imagem dessa posição, após o deslocamento, é adquirido e, posteriormente, um sinal de previsão é gerado.
[00197] Em um caso em que a previsão é feita a partir de uma imagem de referência de sinal, como quando o modo de interprevisão na interprevisão é previsão L0 ou previsão L1, um sinal de previsão adquirido a partir de uma imagem de referência é configurado como um sinal de previsão de compensação de movimento. Em um caso em que previsão é feita a partir de duas imagens de referência, como quando o modo de interprevisão é a previsão BI, uma média ponderada dos sinais de previsão adquiridos a partir das duas imagens de referência é configurada como o sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento adquirido é fornecido ao determinador de método de previsão 105. No presente documento, a razão de média ponderada na biprevisão é configurada como 1:1. Alternativamente, a média ponderada pode usar outra razão. Por exemplo, a taxa de ponderação pode ser configurada de modo que quanto menor for o intervalo de imagem entre a imagem-alvo de previsão e a imagem de referência, maior a taxa de ponderação. O cálculo da razão de ponderação também pode ser realizado com uso de uma tabela de correspondência entre a combinação dos intervalos de imagem e as razões de ponderação.
[00198] A unidade de previsão de compensação de movimento 406 tem função similar à unidade de previsão de compensação de movimento 306, no lado de conversão em código. A unidade de previsão de compensação de movimento 406 adquire informações de interprevisão a partir da unidade de derivação de modo de previsor de vetor de movimento normal 401, da unidade de derivação de modo de mesclagem normal 402, da unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 403 e da unidade de derivação de modo de mesclagem de sub-bloco 404, através do comutador 408. A unidade de previsão de compensação de movimento 406 fornece o sinal de previsão de compensação de movimento obtido para o sobrepositor de sinal de imagem decodificada 207.
MODO DE INTERPREVISÃO
[00199] O processo de realização de previsão, a partir de uma única imagem de referência, é definido como uniprevisão. A uniprevisão realiza a previsão de previsão L0 ou previsão L1 com uso de uma das duas imagens de referência registradas nas listas de referência L0 ou L1.
[00200] A Figura 32 ilustra um caso de uniprevisão, em que a imagem de referência (Refl0PIC) de L0 está em um momento antes da imagem-alvo (CurPIC). A Figura 33 ilustra um caso de uniprevisão, em que a imagem de referência da previsão L0 está em um momento após a imagem-alvo. Da mesma forma, a uniprevisão pode ser realizada substituindo-se a imagem de referência de previsão L0 nas Figuras 32 e 33 por uma imagem de referência de previsão L1 (Refl1PIC).
[00201] O processo de realização de previsão a partir de duas figuras de referência é configurado como biprevisão. A biprevisão realiza previsão, expressa como previsão de BI, com uso tanto da previsão L0 quanto da previsão L1. A Figura 34 ilustra um caso de biprevisão em que uma imagem de referência de previsão L0 está em um momento antes da imagem-alvo, e uma imagem de referência de previsão L1 está em um momento após a imagem-alvo. A Figura 35 ilustra um caso de biprevisão em que a imagem de referência para a previsão L0 e a imagem de referência para a previsão L1 estão em um momento antes da imagem-alvo. A Figura 36 ilustra um caso de biprevisão em que a imagem de referência para a previsão L0 e a imagem de referência para a previsão L1 estão em um momento após a imagem-alvo.
[00202] Desta forma, é possível usar a previsão, sem limitar a relação entre o tipo de previsão de L0/L1 e o tempo, de modo que L0 para a direção passada e L1 para a direção futura. Além disso, a biprevisão pode realizar cada uma das previsões L0 e L1 com uso de uma mesma imagem de referência. A determinação se deve realizar a previsão de compensação de movimento na uniprevisão ou na biprevisão é feita com base em informações (por exemplo, uma sinalização) que indica se deve usar a previsão L0 e se deve usar a previsão L1, por exemplo.
ÍNDICE DE REFERÊNCIA
[00203] Na modalidade da presente invenção, é possível selecionar uma imagem de referência ideal a partir de uma pluralidade de imagens de referência na previsão de compensação de movimento, a fim de melhorar a precisão da previsão de compensação de movimento. Por isso, a imagem de referência usada na previsão de compensação de movimento deve ser usada como um índice de referência, e o índice de referência é codificado em um fluxo de bits juntamente com a diferença do vetor de movimento.
PROCESSO DE COMPENSAÇÃO DE MOVIMENTO BASEADO NO MODO DE PREVISOR DE VETOR DE MOVIMENTO NORMAL
[00204] Conforme ilustrado na unidade interprevisão 102 do lado de conversão em código da Figura 16, em um caso em que a unidade de derivação de modo de previsor de vetor de movimento normal 301 tenha sido selecionada no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire informações de previsão a partir do determinador de modo interprevisão 305, e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de um bloco-alvo e, desse modo, gera um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao determinador do método de previsão 105.
[00205] Da mesma forma, conforme ilustrado na unidade de interprevisão 203, no lado da decodificação na Figura 22, em um caso em que o interruptor 408 é conectado à unidade de derivação de modo de previsor de vetor de movimento normal 401, durante o processo de decodificação, a unidade de previsão de compensação de movimento 406 adquire informações de interprevisão pela unidade de derivação de modo de previsor de vetor de movimento normal 401, e deriva um modo interprevisão, um índice de referência e um vetor de movimento de um bloco-alvo e, desse modo, gera um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao sobrepositor de sinal de imagem decodificada 207.
PROCESSAMENTO DE COMPENSAÇÃO DE MOVIMENTO COM BASE NO MODO DE MESCLAGEM NORMAL
[00206] Conforme ilustrado na unidade interprevisão 102 do lado da conversão em código da Figura 16, em um caso em que as informações interprevisão pela unidade de derivação do modo de mesclagem normal 302 tenha sido selecionada no determinador do modo interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire essa informações de interprevisão a partir do determinador de modo de interprevisão 305 e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de bloco-alvo, gerando, desse modo, um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao determinador do método de previsão 105.
[00207] Da mesma forma, conforme ilustrado na unidade de interprevisão 203, no lado de decodificação, na Figura 22, em um caso em que o comutador 408 está conectado à unidade de derivação de modo de mesclagem normal 402, durante o processo de decodificação, a unidade de previsão de vetor de compensação de movimento 406 adquire informações de interprevisão pela unidade de derivação de modo de mesclagem normal 402, e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de bloco-alvo, gerando, desse modo, um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao sobrepositor de sinal de imagem decodificada 207.
PROCESSO DE COMPENSAÇÃO DE MOVIMENTO BASEADO NO MODO DE PREVISOR DE VETOR DE MOVIMENTO DE SUB-BLOCO
[00208] Conforme ilustrado na unidade de interprevisão 102 do lado de conversão em código, na Figura 16, em um caso em que as informações de interprevisão pela unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 303 tenha sido selecionada no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire informações de interprevisão a partir do determinador de modo de interprevisão 305 e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de bloco-alvo, gerando, desse modo, um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao determinador do método de previsão 105.
[00209] Da mesma forma, conforme ilustrado na unidade interprevisão 203 no lado de decodificação, na Figura 22, em um caso em que o comutador 408 está conectado à unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 403, durante o processo de decodificação, a unidade de previsão de compensação de movimento 406 adquire informações de interprevisão pela unidade de derivação de modo de previsor de vetor de movimento de sub-bloco 403, e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de um bloco-alvo, gerando, desse modo, um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao sobrepositor de sinal de imagem decodificada 207.
PROCESSO DE COMPENSAÇÃO DE MOVIMENTO BASEADO NO MODO DE MESCLAGEM DE SUB-BLOCOS
[00210] Conforme ilustrado na unidade de interprevisão 102 do lado de conversão em código da Figura 16, em um caso em que as informações de interprevisão pela unidade de derivação do modo de mesclagem de sub-bloco 304 tenham sido selecionadas no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire essas informações de interprevisão a partir do determinador de modo de interprevisão 305, e deriva um modo interprevisão, um índice de referência e um vetor de movimento de um bloco-alvo , gerando, desse modo, um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao determinador do método de previsão 105.
[00211] Da mesma forma, conforme ilustrado na unidade de interprevisão 203, no lado de decodificação, na Figura 22, em um caso em que o interruptor 408 está ligado à unidade de derivação de modo de mesclagem de sub-bloco 404, durante o processo de decodificação, a unidade de previsão de compensação de movimento 406 adquire as informações de interprevisão pela unidade de derivação de modo de mesclagem de sub-bloco 404 e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de um bloco-alvo, gerando, desse modo, um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao sobrepositor de sinal de imagem decodificada 207.
PROCESSO DE COMPENSAÇÃO DE MOVIMENTO BASEADO NA PREVISÃO DE TRANSFORMADA AFIM
[00212] No modo de previsor de vetor de movimento normal e no modo de mesclagem normal, a compensação de movimento que usa um modelo afim é usável com base nas sinalizações a seguir. As seguintes sinalizações são refletidas nas seguintes sinalizações, com base em condições de interprevisão determinadas pelo determinador de modo de interprevisão 305, no processo de conversão em código, e são codificadas no fluxo de bits. No processo de decodificação, é especificado se deve realizar compensação de movimento com uso do modelo afim, com base nas seguintes sinalizações no fluxo de bits.
[00213] sps_affine_enabled_flag indica se a compensação de movimento com uso de um modelo afim é usável na interprevisão. Quando sps_affine_enabled_flag é 0, o processo é suprimido, de modo a não executar a compensação de movimento pelo modelo afim em unidades de sequência. Além disso, inter_affine_flag e cu_affine_type_flag não são transmitidas na sintaxe do bloco de conversão em código (CU) de uma sequência de vídeo de conversão em código. Quando sps_affine_enabled_flag é 1, a compensação de movimento por um modelo afim é usável na sequência de vídeo de conversão em código.
[00214] sps_affine_type_flag indica se a compensação de movimento com uso de um modelo afim de 6 parâmetros é usável em interprevisão. Quando sps_affine_type_flag é 0, o processo é suprimido para não realizar a compensação de movimento com uso de um modelo afim de 6 parâmetros. Além disso, cu_affine_type_flag não é transmitido na sintaxe CU da sequência de vídeo de conversão em código. Quando sps_affine_type_flag é 1, a compensação de movimento baseada em um modelo afim de 6 parâmetros é usável em uma sequência de vídeo de conversão em código. Em um caso em que sps_affine_type_flag não existir, a mesma deve ser 0.
[00215] Em um caso de decodificação de uma fatia P ou B, quando inter_affine_flag é 1 na CU-alvo, uma compensação de movimento com uso de um modelo afim é usada para gerar um sinal de previsão de compensação de movimento da CU-alvo. Quando inter_affine_flag é 0, o modelo afim não é usado para a CU-alvo. Em um caso em que inter_affine_flag não existe, deve ser 0.
[00216] Em um caso de decodificação de uma fatia P ou B, quando cu_affine_type_flag é 1 na CU atual, uma compensação de movimento com uso de um modelo afim de 6 parâmetros é usada para gerar um sinal de previsão de compensação de movimento da CU atual. Quando cu_affine_type_flag é 0, a compensação de movimento com uso de um modelo afim de quatro parâmetros é usada para gerar um sinal de previsão de compensação de movimento da UC que atualmente é processada.
[00217] Um índice de referência e um vetor de movimento são derivados em unidades de sub-blocos na compensação de movimento com base no modelo afim. Consequentemente, um sinal de previsão de compensação de movimento é gerado com uso do índice de referência e do vetor de movimento a ser processado em unidades de sub-bloco.
[00218] O modelo afim de quatro parâmetros é um modo no qual um vetor de movimento de um sub-bloco é derivado de quatro parâmetros de um componente horizontal e um componente vertical de cada um dos vetores de movimento de dois pontos de controle, e a compensação de movimento é realizada em unidades de sub-blocos.
MODO DE MESCLAGEM TRIANGULAR
[00219] O modo de mesclagem triangular é um tipo de modo de mesclagem, no qual o bloco de conversão em código/decodificação é dividido em fracionamentos diagonais para realizar a previsão de compensação de movimento. O modo de mesclagem triangular é um tipo de modo de mesclagem de divisão geométrica no qual o bloco de conversão em código/decodificação é dividido em blocos com um formato não retangular. No modo de mesclagem de divisão geométrica, isso corresponde a um modo no qual o bloco de conversão em código/decodificação é dividido em dois triângulos retos por uma linha diagonal.
[00220] O modo de mesclagem de divisão geométrica é expresso por uma combinação de dois parâmetros, por exemplo, um índice (AngleIDX) que indica um ângulo de divisão e um índice (distanceIDX) que indica uma distância a partir do centro do bloco de conversão em código. Como um exemplo, 64 padrões são definidos como o modo de mesclagem de divisão geométrica, e a codificação de comprimento fixo é realizada. Dos 64 padrões, dois modos, nos quais o índice que indica um ângulo de divisão indica um ângulo que forma uma linha diagonal do bloco de conversão em código (por exemplo, 45 graus (AngleIDX = 4 em uma configuração em que 360 graus são representados por 32 divisões) ou 135 graus (AngleIDX = 12 em uma configuração em que 360 graus são representados por 32 divisões)) e o índice que indica uma distância do centro do bloco de conversão em código é mínimo (distanceIDX = 0, que indica que o limite da divisão passa pelo centro do bloco de conversão em código), indica que o bloco de conversão em código é dividido por uma linha diagonal e corresponde ao modo de mesclagem triangular.
[00221] O modo de mesclagem triangular será descrito em referência às Figuras 38A e 38B. As Figuras 38A e 38B ilustram um exemplo de previsão de blocos de conversão em código/decodificação 16 x 16 do modo de mesclagem triangular. O bloco de conversão em código/decodificação do modo de mesclagem triangular é dividido em sub-blocos 4 x 4, e cada um dos sub-biocos é atribuído a três fracionamentos, a saber, fracionamento de uniprevisão 0 (UNI0), fracionamento de uniprevisão 1 (UNI1) e fracionamento de biprevisão 2 (BI). No presente documento, o sub-blocos acima de uma diagonal são atribuídos ao fracionamento 0, sub-blocos abaixo da diagonal são atribuídos ao fracionamento 1 e sub-blocos na diagonal são atribuídos ao fracionamento 2. Quando merge_triangle_split_dir é 0, os fracionamentos são atribuídos conforme ilustrado na Figura 38A, e quando merge_triangle_split_dir é 1, os fracionamentos são atribuídos conforme ilustrado na Figura 38B.
[00222] As informações de movimento de uniprevisão designadas pelo índice triangular de mesclagem 0 são usadas para a previsão de compensação de movimento do fracionamento 0. As informações do movimento da uniprevisão designada pelo índice triangular de mesclagem 1 é usada para a previsão de compensação de movimento do fracionamento 1. As informações de movimento biprevisão que combinam informações de movimento de uniprevisão designadas pelo índice triangular de mesclagem 0 e as informações de movimento de uniprevisão designadas pelo índice triangular de mesclagem 1 são usadas para previsão de compensação de movimento do fracionamento 2.
[00223] No presente documento, as informações de movimento uniprevisão são um conjunto de um vetor de movimento e um índice de referência, enquanto as informações de movimento biprevisão são formadas com dois conjuntos de um vetor de movimento e um índice de referência. As informações de movimento representam informações de movimento de uniprevisão ou informações de movimento de biprevisão.
[00224] Os seletores de candidato de mesclagem 347 e 447 usam a lista de candidato de mesclagem derivada MergecandList como uma lista de candidato de mesclagem triangular TriangleMergecandlist.
[00225] O fluxograma da Figura 39 relacionado à derivação de candidato de mesclagem triangular será descrito.
[00226] Primeiro, uma lista de candidato de mesclagem mergeCandList é usada como uma lista de candidato de mesclagem triangular triangleMergecandList (etapa S3501). O número numTriangleMergeCand de candidatos da lista de candidatos de mesclagem triangular é configurado para o mesmo valor que o número de candidatos de mesclagem numCurrMergeCand.
[00227] Em seguida, informações de movimento de uniprevisão do fracionamento triangular de mesclagem são derivadas (etapa S3502).
[00228] A Figura 40 é um fluxograma que ilustra a derivação das informações de movimento uniprevisão de um fracionamento triangular de mesclagem de acordo com a presente modalidade.
[00229] Na presente modalidade, o fracionamento triangular de mesclagem 0 e o fracionamento triangular de mesclagem 1 derivam as informações de movimento de uniprevisão na mesma prioridade de modo a reduzir a quantidade de processamento.
[00230] Primeiro, um índice M que especifica um candidato de mesclagem normal é configurado como 0 (etapa S3600). O M-ésimo candidato na lista de candidato de mesclagem mergeCandList é definido como um candidato M.
[00231] Subsequentemente, determinação é feita sobre se o candidato M tem a informação de movimento de uma lista de informações de movimento L0 (etapa S3601). Em um caso em que o candidato M tem as informações de movimento da lista de informações de movimento L0 (etapa S3601: SIM), as informações de movimento da lista de informações de movimento L0 do candidato M é configurada como um candidato de mesclagem triangular (etapa S3602).
[00232] Subsequentemente, determina-se se o candidato M tem a informação de movimento de uma lista de informações de movimento L1 (etapa S3603). Em um caso em que o candidato M tem as informações de movimento da lista de informações de movimento L1 (etapa S3603: SIM), as informações de movimento da lista de informações de movimento L1 do candidato M são configuradas como um candidato de mesclagem triangular (etapa S3604). Para o candidato M (M = 0, 1, ..., MaxNumMergeCand-1), etapas S3601, S3602, S3603 e S3604 são realizadas em ordem ascendentes, e um candidato de mesclagem triangular é adicionalmente derivado (etapas S3600 e S3605).
[00233] As Figuras 41A e 41B são diagramas que ilustram um exemplo da informação de movimento do candidato de mesclagem triangular de acordo com a presente modalidade.
[00234] A Figura 41A ilustra um exemplo de uma lista de candidato de mesclagem normal. No candidato de mesclagem normal com índice de mesclagem 0, um modo de interprevisão é biprevisão (Pred BI), a informação de movimento de lista de informação de movimento L0 é MV0 L0 e a informação de movimento da lista de informação de movimento L1 é MV0 L1. No candidato de mesclagem normal do índice de mesclagem 1, o modo de interprevisão é uniprevisão. (Pred Lo), a informação de movimento da lista de informação de movimento L0 é MV1 L0 e a lista de informação de movimento L1 não tem nenhuma informação de movimento. No candidato de mesclagem normal do índice de mesclagem 2, o modo de interprevisão é uniprevisão (Pred L1), a lista de informação de movimento L0 não tem nenhuma informação de movimento e a informação de movimento da lista de informação de movimento L1 é MV2 L1. No candidato de mesclagem normal do índice de mesclagem 3, o modo de predição é biprevisão (Pred BI), a informação de movimento da lista de informação de movimento L0 é MV3 L0, e a informação de movimento da lista de informação de movimento L1 é MV3 L1. No candidato de mesclagem normal do índice de mesclagem 4, o modo de interprevisão é uniprevisão (Pred Lo0), a informação de movimento da lista de informação de movimento L0 é MV4 L0 e a lista de informação de movimento L1 não tem nenhuma informação de movimento.
[00235] A Figura 41B é um diagrama que ilustra uma relação entre o índice triangular de mesclagem e o fracionamento triangular de mesclagem no caso do exemplo da lista de candidato de mesclagem normal na Figura 41A.
[00236] No candidato de informação de movimento de uniprevisão do fracionamento triangular de mesclagem 0, informação de movimento é configurada na ordem de MV0_L0, MV0_L1, MV1_L0, MV2_L1 e MV3_L0.
[00237] Similarmente, no candidato de informações de movimento de uniprevisão do fracionamento triangular de mesclagem 1, informação de movimento é configurada na ordem de MV0_L0, MV0_L1, MV1_L0, MV2_L1, MV3_L0, (MV3_L1), em que o índice triangular de mesclagem 1 (merge_triangle_idx1) é derivado excluindo a informação de movimento de uniprevisão selecionada pelo índice triangular de mesclagem 0 (merge_triangle_idx0) de modo que as informações de movimento do fracionamento triangular de mesclagem 0 e do fracionamento triangular de mesclagem 1 não se tornam idênticas.
[00238] Desta maneira, ao configurar os candidatos de informação de movimento de uniprevisão do fracionamento triangular de mesclagem 0 e do fracionamento triangular de mesclagem 1 para a ordem similar à prioridade da lista de candidatos da lista de mesclagem, é possível transmitir um modo de mesclagem triangular eficiente com uma quantidade de códigos pequena. Além disso, transmitir o índice triangular de mesclagem 0 e o índice triangular de mesclagem 1 de modo que a informação de movimento do fracionamento triangular de mesclagem 0 e a informação de movimento do fracionamento triangular de mesclagem 1 não se tornem idênticas torna possível eliminar a redundância tendo a informação de movimento do fracionamento triangular de mesclagem 0 que não precisa estar no modo de mesclagem triangular e a informação de movimento do fracionamento triangular de mesclagem 1 como a mesma informação de movimento, permitindo transmissão do modo de mesclagem triangular com uma quantidade de códigos pequena.
[00239] A presente modalidade é uma configuração em que o modo de mesclagem triangular do bloco de conversão em código é dividido em dois fracionamentos, e a informação de movimento para cada um dos fracionamentos divididos é derivada da lista de candidatos de mesclagem normal. O modo de mesclagem de divisão geométrica é similar ao modo de mesclagem triangular pelo fato que o bloco de conversão em código é dividido em dois fracionamentos. Ainda, a configuração em que a informação de movimento para cada um dos fracionamentos de divisão é derivada da lista de candidato de mesclagem normal pode ser aplicada ao modo de mesclagem de divisão geométrica. Portanto, a presente modalidade pode ser realizada substituindo o modo de mesclagem triangular pelo modo de mesclagem de divisão geométrica.
SEGUNDA MODALIDADE
[00240] Uma segunda modalidade da presente invenção será descrita. A segunda modalidade da presente invenção é similar à primeira modalidade exceto pela derivação do modo de mesclagem triangular.
[00241] A Figura 43 é um fluxograma que ilustra derivação de informações de movimento de uniprevisão de um fracionamento triangular de mesclagem de acordo com a segunda modalidade.
[00242] Na segunda modalidade, de maneira análoga à primeira modalidade, o fracionamento triangular de mesclagem 0 e o fracionamento triangular de mesclagem 1 derivam as informações de movimento de uniprevisão na mesma prioridade de modo a reduzir a quantidade de processamento.
[00243] Primeiro, um índice M que especifica um candidato de mesclagem normal é configurado para 0 (etapa S3700).
[00244] Subsequentemente, é determinado se o valor do índice M é um número par (etapa S3701). Em um caso onde o valor do índice M é um número par (etapa S3701: SIM), é determinado se o candidato M tem a informação de movimento da lista de informação de movimento L9 (etapa S3702). Em um caso onde o candidato M tem a informação de movimento da lista de informação de movimento L0 (etapa S3702: SIM), a informação de movimento da lista de informação de movimento L0 do candidato M é configurada como um candidato de mesclagem triangular (etapa S3703). Em um caso onde o candidato M não tem nenhuma informação de movimento da lista de informação de movimento L0 (etapa S3702: NÃO), a informação de movimento da lista de informação de movimento L1 do candidato M é configurada como um candidato de mesclagem triangular (etapa S3704).
[00245] Em um caso onde o valor do índice M não é um número par, isto é, um número ímpar (etapa S3701: NÃO), é determinado se o candidato M tem a informação de movimento da lista de informação de movimento L1 (etapa S3705). Em um caso onde o candidato M tem a informação de movimento da lista de informação de movimento L1 (etapa S3705: SIM), a informação de movimento da lista de informação de movimento L1 do candidato M é configurada como um candidato de mesclagem triangular (etapa S3706). Em um caso onde o candidato M não tem a informação de movimento da lista de informação de movimento L1 (etapa S3705: NÃO), a informação de movimento da lista de informação de movimento L0 do candidato M é configurada como um candidato de mesclagem triangular (etapa S3707).
[00246] Para os candidatos M (M = 0, 1, ..., MaxNumMergeCand-1), as etapas S3701 a S3707 são realizadas em ordem ascendente, e candidatos de mesclagem triangular são adicionalmente derivados (etapa S3708).
[00247] No presente documento, M sempre tem informação de movimento em uma da lista de informação de movimento L0 ou da lista de informação de movimento L1. Deste modo, apenas determinar se apenas a lista de informação de movimento tendo prioridade de derivação mais alta tem informação de movimento tornaria possível decidir qual das listas de informação deve ser usada.
[00248] Ainda, a prioridade do candidato de informação de movimento de uniprevisão no modo de mesclagem triangular é alternadamente mudada entre a lista de informação de movimento L0 e a lista de informação de movimento L1 de modo a ser similar à prioridade da lista de candidato da lista de mesclagem do fracionamento triangular de mesclagem 0 e do fracionamento triangular de mesclagem 1, possibilitando selecionar a informação de movimento da lista de informação de movimento L0 e da lista de informação de movimento L1 sem influência, e transmitir um modo de mesclagem triangular eficiente com uma quantidade de conversão em código pequena.
[00249] Em todas as modalidades descritas acima, uma pluralidade de tecnologias pode ser combinada entre si.
[00250] Em todas as modalidades descritas acima, a saída de fluxo de bits a partir do dispositivo de conversão em código de imagem tem um formato de dados específico, de modo a ser decodificada seguindo o método de conversão em código usado na modalidade. Além disso, o dispositivo de decodificação de imagem correspondente ao dispositivo de conversão em código de imagem tem capacidade de decodificar o fluxo de bits do formato de dados específico.
[00251] Em um caso em que uma rede com ou sem fios é usada para trocar um fluxo de bits entre o dispositivo de conversão em código de imagem e o dispositivo de decodificação de imagem, o fluxo de bits pode ser convertido em um formato de dados adequado para o formato de transmissão do canal de comunicação em transmissão. Nesse caso, é fornecido um dispositivo de transmissão que converte a saída de fluxo de bits do dispositivo de conversão em código de imagem em dados codificados em um formato de dados adequado para o formato de transmissão do canal de comunicação e transmite os dados convertidos em código para a rede, e um dispositivo de recepção que recebe os dados convertidos em código a partir da rede a ser restaurada para o fluxo de bits e fornece o fluxo de bits para o dispositivo de decodificação de imagem. O dispositivo de transmissão inclui memória que armazena temporariamente uma saída de fluxo de bits do dispositivo de conversão em código de imagem, uma unidade de processamento de pacotes que empacota o fluxo de bits e um transmissor que transmite dados convertidos em código empacotados através de uma rede. O dispositivo de recepção inclui um receptor que recebe dados convertidos em código empacotados através de uma rede, memória que armazena temporariamente os dados convertidos em código recebidos, e uma unidade de processamento de pacotes que empacota dados convertidos em código para construir um fluxo de bits e fornece o fluxo de bits construído para o dispositivo de decodificação de imagem.
[00252] Além disso, uma unidade de exibição que exibe uma imagem decodificada pelo dispositivo de decodificação de imagem pode ser adicionada, como um dispositivo de exibição, à configuração. Nesse caso, a unidade de exibição lê um sinal de imagem decodificada construído pelo sobrepositor sinal de imagem decodificada 207 e armazenado na memória de imagem decodificada 208, e exibe o sinal na tela.
[00253] Além disso, uma unidade de imagem pode ser adicionada à configuração de modo a funcionar como um dispositivo de imagem, introduzindo uma imagem capturada no dispositivo de conversão em código de imagem. Nesse caso, a unidade de imagem introduz o sinal de imagem capturado para a unidade dividida em bloco 101.
[00254] A Figura 37 ilustra um exemplo de uma configuração de hardware do dispositivo de conversão em código de decodificação, de acordo com a presente modalidade. O dispositivo de conversão em código de decodificação inclui as configurações do dispositivo de conversão em código de imagem e o dispositivo de decodificação de imagem, de acordo com as modalidades da presente invenção. Um dispositivo 9000 de conversão em código de decodificação inclui uma CPU 9001, um codec IC 9002, uma interface de I/O 9003, memória 9004, uma unidade de disco óptico 9005, uma interface de rede 9006 e uma interface de vídeo 9009, em que unidades individuais são conectadas por um barramento 9010.
[00255] Um codificador de imagem 9007 e um decodificador de imagem 9008 são tipicamente implementados como um codec IC 9002. O processo de conversão em código de imagem do dispositivo de conversão em código de imagem, de acordo com as modalidades da presente invenção, é executado pelo codificador de imagem 9007. O processo de decodificação de imagem no dispositivo de decodificação imagem, de acordo com a modalidade da presente invenção, é executado pelo decodificador de imagem 9008. A interface de I/O 9003 é implementada por uma interface USB, por exemplo, e se conecta a um teclado externo 9104, mouse 9105 ou similares. A CPU 9001 controla o dispositivo 9000 de conversão em código de decodificação com base na entrada de operação do usuário através da interface de I/O 9003 para executar a operação desejada pelo usuário. As operações do usuário no teclado 9104, no mouse 9105, ou similares incluem seleção de qual função de conversão em código ou decodificação deve ser executada, configuração de qualidade de conversão em código, destino de entrada/saída de um fluxo de bits, destino de entrada/saída de uma imagem, ou similares.
[00256] Em um caso em que o usuário deseja a operação de reproduzir uma imagem gravada em uma mídia de gravação de disco 9100, a unidade de disco óptico 9005 lê um fluxo de bits do meio de gravação de disco inserido 9100, e transmite o fluxo de bits de leitura para o decodificador de imagem 9008 do codec IC 9002 através do barramento 9010. O decodificador de imagem 9008 executa um processo de decodificação de imagem no dispositivo de decodificação de imagem, de acordo com as modalidades da presente invenção, no fluxo de bits de entrada, e transmite a imagem decodificada para o monitor externo 9103 através da interface de vídeo 9009. O dispositivo de conversão em código de decodificação 9000 possui uma interface de rede 9006, e pode ser conectado a um servidor de distribuição externo 9106 e a um terminal móvel 9107 através de uma rede 9101. Em um caso em que o usuário deseja reproduzir uma imagem gravada no servidor de distribuição 9106 ou no terminal móvel 9107 em vez da imagem gravada no meio de gravação de disco 9100, a interface de rede 9006 obtém um fluxo de bits da rede 9101 em vez de ler um fluxo de bits a partir da mídia de gravação de disco de entrada 9100. Em um caso em que o usuário deseja reproduzir a imagem gravada na memória 9004, o processamento de decodificação de imagem é realizado pelo dispositivo de decodificação de imagem, de acordo com as modalidades da presente invenção, no fluxo de bits gravado na memória 9004.
[00257] Em um caso em que o usuário deseja executar a operação de conversão em código de uma imagem capturada por uma câmera externa 9102 e gravar a imagem na memória 9004, a interface de vídeo 9009 introduz a imagem da câmera 9102, e transmite a imagem para o codificador de imagem 9007 do codec IC 9002 através do barramento 9010. O codificador de imagem 9007 executa o processo de conversão em código de imagem pelo dispositivo de conversão em código de imagem, de acordo com a modalidade da presente invenção, em uma entrada de imagem através da interface de vídeo 9009 e, assim, cria um fluxo de bits. Subsequentemente, o fluxo de bits é transmitido para a memória 9004 através do barramento 9010. Em um caso em que o usuário deseja gravar um fluxo de bits na mídia de gravação de disco 9100 em vez da memória 9004, a unidade de disco óptico 9005 grava o fluxo de bits na mídia de gravação de disco inserida 9100.
[00258] Também é possível implementar uma configuração de hardware com um dispositivo de conversão em código de imagem e não ter um dispositivo de decodificação de imagem, ou uma configuração de hardware com um dispositivo de decodificação de imagem e não ter um dispositivo de conversão em código de imagem. Tal configuração de hardware é implementada substituindo-se o codec IC 9002 pelo codificador de imagem 9007 ou o decodificador de imagem 9008.
[00259] O processo acima descrito relacionado à conversão em código e decodificação pode naturalmente ser implementado como um dispositivo de transmissão, armazenamento e recepção com uso de hardware e, alternativamente, o processo pode ser implementado por firmware armazenado em memória somente leitura (ROM), memória flash ou similares, ou por software fornecido para um computador ou afins. O programa de firmware e o programa de software podem ser fornecidos sendo gravados em uma mídia de gravação legível por um computador ou similares, podem ser fornecidos a partir de um servidor através de uma rede com ou sem fio, ou podem ser fornecidos através de transmissão de dados por radiodifusão digital terrestre ou por satélite.
[00260] A presente invenção foi descrita em referência às presentes modalidades. A modalidade acima descrita foi descrita apenas a título de exemplo. Em vez disso, pode ser facilmente concebido por aqueles versados na técnica que vários exemplos de modificação podem ser feitos fazendo várias combinações dos componentes ou processos acima descritos, que também estão abrangidos no escopo da técnica da presente invenção.
[00261] A presente invenção pode ser usada para técnicas de conversão em código e decodificação de imagem que dividem uma imagem em blocos para realizar a previsão.
[00262] 100 Dispositivo de conversão em código de imagem 101 Unidade de divisão de bloco 102 Unidade de interprevisão 103 Unidade de intraprevisão 104 Memória de imagem decodificada 105 Determinador do método de previsão 106 Unidade de geração de resíduo 107 Transformador/quantizador ortogonal 108 Unidade de conversão em código de sequências de bits 109 Quantizador inverso/transformador ortogonal inverso 110 Sobrepositor de sinal de imagem decodificada 111 Memória de armazenamento de informações de conversão em código 200 Dispositivo de decodificação de imagem 201 Unidade de decodificação de sequências de bits 202 Unidade de divisão de bloco 203 Unidade de interprevisão 204 Unidade de intraprevisão 205 Memória de armazenamento de informações de conversão em código 206 Quantizador inverso/ Transformador ortogonal inverso 207 Sobrepositor de sinal de imagem decodificada 208 Memória de imagem decodificada

Claims (4)

1. Dispositivo de conversão em código de imagem em movimento (100) que usa um modo de mesclagem, caracterizado pelo fato de que compreende: um construtor de lista de candidato de mesclagem estruturado para construir uma lista de candidato de mesclagem que inclui os candidatos de mesclagem espacial; um seletor de candidato de mesclagem (347, 447) normal estruturado para selecionar um candidato de mesclagem normal que seja uniprevisão ou biprevisão a partir da lista de candidato de mesclagem; e um seletor de candidato de mesclagem (347, 447) triangular estruturado para selecionar, a partir da lista de candidato de mesclagem, um primeiro candidato de mesclagem triangular que seja uniprevisão e um segundo candidato de mesclagem triangular que seja uniprevisão, em que o seletor de candidato de mesclagem (347, 447) triangular deriva o primeiro candidato de mesclagem triangular e o segundo candidato de mesclagem triangular em uma mesma prioridade que o candidato de mesclagem normal.
2. Método de conversão em código de imagem em movimento que usa um modo de mesclagem, caracterizado pelo fato de que compreende: uma etapa de construção de lista de candidato de mesclagem de construir uma lista de candidato de mesclagem que inclui candidatos de mesclagem espacial; uma etapa de seleção de candidato de mesclagem normal de selecionar um candidato de mesclagem normal que seja uniprevisão ou biprevisão a partir da lista de candidato de mesclagem; e uma etapa de seleção de candidato de mesclagem triangular de selecionar, a partir da lista de candidato de mesclagem, um primeiro candidato de mesclagem triangular que seja uniprevisão e um segundo candidato de mesclagem triangular que seja uniprevisão, em que a etapa de seleção de candidato de mesclagem triangular deriva o primeiro candidato de mesclagem triangular e o segundo candidato de mesclagem triangular em uma mesma prioridade que o candidato de mesclagem normal.
3. Dispositivo de decodificação de imagem em movimento (200) que usa um modo de mesclagem, caracterizado pelo fato de que compreende: um construtor de lista de candidato de mesclagem estruturado para construir uma lista de candidato de mesclagem que inclui os candidatos de mesclagem espacial; um seletor de candidato de mesclagem (347, 447) normal estruturado para selecionar um candidato de mesclagem normal que seja uniprevisão ou biprevisão a partir da lista de candidato de mesclagem; e um seletor de candidato de mesclagem (347, 447) triangular estruturado para selecionar, a partir da lista de candidato de mesclagem, um primeiro candidato de mesclagem triangular que seja uniprevisão e um segundo candidato de mesclagem triangular que seja uniprevisão, em que o seletor de candidato de mesclagem (347, 447) triangular deriva o primeiro candidato de mesclagem triangular e o segundo candidato de mesclagem triangular em uma mesma prioridade que o candidato de mesclagem normal.
4. Método de decodificação de imagem em movimento que usa um modo de mesclagem, caracterizado pelo fato de que compreende: uma etapa de construção de lista de candidato de mesclagem de construir uma lista de candidato de mesclagem incluindo candidatos de mesclagem espacial; uma etapa de seleção de candidato de mesclagem normal de selecionar um candidato de mesclagem normal que seja uniprevisão ou biprevisão a partir da lista de candidato de mesclagem; e uma etapa de seleção de candidato de mesclagem triangular de selecionar, a partir da lista de candidato de mesclagem, um primeiro candidato de mesclagem triangular que seja uniprevisão e um segundo candidato de mesclagem triangular que seja uniprevisão, em que a etapa de seleção de candidato de mesclagem triangular deriva o primeiro candidato de mesclagem triangular e o segundo candidato de mesclagem triangular em uma mesma prioridade que o candidato de mesclagem normal.
BR112021015535-0A 2019-03-08 2020-03-06 Dispositivo de codificação de vídeo, método de codificação de vídeo, dispositivo de decodificação de vídeo e método de decodificação de vídeo BR112021015535B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2019042577 2019-03-08
JP2019-042577 2019-03-08
PCT/JP2020/009768 WO2020184457A1 (ja) 2019-03-08 2020-03-06 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム

Publications (2)

Publication Number Publication Date
BR112021015535A2 BR112021015535A2 (pt) 2021-10-05
BR112021015535B1 true BR112021015535B1 (pt) 2022-09-13

Family

ID=72426258

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021015535-0A BR112021015535B1 (pt) 2019-03-08 2020-03-06 Dispositivo de codificação de vídeo, método de codificação de vídeo, dispositivo de decodificação de vídeo e método de decodificação de vídeo

Country Status (10)

Country Link
US (1) US12022104B2 (pt)
EP (1) EP3937496A4 (pt)
JP (1) JP6950847B2 (pt)
KR (2) KR20230146130A (pt)
CN (1) CN116193142B (pt)
AR (1) AR118250A1 (pt)
BR (1) BR112021015535B1 (pt)
MX (1) MX2021009303A (pt)
PE (1) PE20212011A1 (pt)
WO (1) WO2020184457A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7308428B2 (ja) * 2019-03-08 2023-07-14 合同会社IP Bridge1号 画像符号化装置、画像符号化方法及び画像符号化プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3277111B2 (ja) 1995-10-18 2002-04-22 シャープ株式会社 動画像符号化装置および動画像復号化装置
JP4258694B2 (ja) 2000-10-06 2009-04-30 日本電気株式会社 動画像符号化方法、動画像符号化装置、動画像復号化装置及びそれらを備えた動画像通信システム
ES2887236T3 (es) 2010-07-20 2021-12-22 Ntt Docomo Inc Método de decodificación predictiva de imágenes
CN106851271B (zh) 2011-03-08 2019-10-18 Jvc 建伍株式会社 动图像编码装置以及动图像编码方法
US9648334B2 (en) 2011-03-21 2017-05-09 Qualcomm Incorporated Bi-predictive merge mode based on uni-predictive neighbors in video coding
US9451277B2 (en) * 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
CN117596398A (zh) * 2018-10-08 2024-02-23 华为技术有限公司 用于译码块的几何划分块的帧间预测的装置及方法
HUE064819T2 (hu) * 2018-11-20 2024-04-28 Huawei Tech Co Ltd Kódoló, dekódoló és az egyesítési módhoz tartozó eljárások
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US10893298B2 (en) * 2018-12-12 2021-01-12 Tencent America LLC Method and apparatus for video coding
GB2580084B (en) * 2018-12-20 2022-12-28 Canon Kk Video coding and decoding
US11856194B2 (en) * 2018-12-21 2023-12-26 Hfi Innovation Inc. Method and apparatus of simplified triangle merge mode candidate list derivation
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
EP3915261A4 (en) * 2019-01-31 2023-03-01 HFI Innovation Inc. METHOD AND APPARATUS FOR COMBINED INTER AND INTRA PREDICTION FOR VIDEO CODING
US20200288175A1 (en) * 2019-03-06 2020-09-10 Qualcomm Incorporated Signaling of triangle merge mode indexes in video coding

Also Published As

Publication number Publication date
JPWO2020184457A1 (ja) 2021-11-18
US12022104B2 (en) 2024-06-25
KR20230146130A (ko) 2023-10-18
PE20212011A1 (es) 2021-10-18
US20210321129A1 (en) 2021-10-14
EP3937496A1 (en) 2022-01-12
BR112021015535A2 (pt) 2021-10-05
KR20210089781A (ko) 2021-07-16
CN113228678A (zh) 2021-08-06
CN116193142A (zh) 2023-05-30
EP3937496A4 (en) 2022-04-27
MX2021009303A (es) 2021-09-08
AR118250A1 (es) 2021-09-22
JP6950847B2 (ja) 2021-10-13
CN116193142B (zh) 2024-05-07
WO2020184457A1 (ja) 2020-09-17
KR102587946B1 (ko) 2023-10-10

Similar Documents

Publication Publication Date Title
BR112021012484A2 (pt) Dispositivo de codificação de imagem, método de codificação de imagem, e programa de codificação de imagem, dispositivo de decodificação de imagem, método de decodificação de imagem e programa de decodificação de imagem
BR112021016738A2 (pt) Dispositivo de codificação de imagem, método de codificação de imagem, programa de codificação de imagem, dispositivo de decodificação de imagem, método de decodificação de imagem e programa de decodificação de imagem
BR112021025852B1 (pt) Dispositivo de codificação de imagem, método de codificação de imagem, dispositivo de decodificação de imagem e método de decodificação de imagem
RU2768375C1 (ru) Устройство декодирования динамических изображений, способ декодирования динамических изображений, программа декодирования динамических изображений, устройство кодирования динамических изображений, способ кодирования динамических изображений и программа кодирования динамических изображений
RU2768971C1 (ru) Устройство кодирования движущихся изображений, способ кодирования движущихся изображений, программа кодирования движущихся изображений, устройство декодирования движущихся изображений, способ декодирования движущихся изображений и программа декодирования движущихся изображений
BR112021012481A2 (pt) Dispositivo de codificação de imagem em movimento, método de codificação de imagem em movimento, programa de codificação de imagem em movimento, dispositivo de decodificação de imagem em movimento, método de decodificação de imagem em movimento, e programa de decodificação de imagem em movimento
BR112021012485A2 (pt) Dispositivo de codificação de imagem, método de codificação de imagem, e programa de codificação de imagem, dispositivo de decodificação de imagem, método de decodificação de imagem, e programa de decodificação de imagem
JP7060773B2 (ja) 画像復号装置、画像復号方法及び画像復号プログラム
BR112021012418A2 (pt) Dispositivo de codificação de imagem, método de codificação de imagem, dispositivo de decodificação de imagem e método de decodificação de imagem
BR112021015535B1 (pt) Dispositivo de codificação de vídeo, método de codificação de vídeo, dispositivo de decodificação de vídeo e método de decodificação de vídeo
BR112021004690B1 (pt) Dispositivo de conversão em código de imagem em movimento, método de conversão em código de imagem em movimento, dispositivo de decodificação de imagem em movimento e método de decodificação de imagem em movimento
RU2779930C2 (ru) Устройство декодирования динамических изображений, способ декодирования динамических изображений, программа декодирования динамических изображений, устройство кодирования динамических изображений, способ кодирования динамических изображений и программа кодирования динамических изображений
RU2779292C2 (ru) Устройство кодирования движущихся изображений, способ кодирования движущихся изображений, программа кодирования движущихся изображений, устройство декодирования движущихся изображений, способ декодирования движущихся изображений и программа декодирования движущихся изображений
RU2775838C1 (ru) Устройство кодирования видео, способ кодирования видео, программа кодирования видео, устройство декодирования видео, способ декодирования видео и программа декодирования видео
RU2783841C2 (ru) Устройство для кодирования видео, способ кодирования видео, устройство для декодирования видео и способ декодирования видео
WO2020137857A1 (ja) 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 19/52 , H04N 19/70

Ipc: H04N 19/52 (2006.01), H04N 19/70 (2006.01), H04N 1

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 06/03/2020, OBSERVADAS AS CONDICOES LEGAIS