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

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

Info

Publication number
BR112021025852B1
BR112021025852B1 BR112021025852-3A BR112021025852A BR112021025852B1 BR 112021025852 B1 BR112021025852 B1 BR 112021025852B1 BR 112021025852 A BR112021025852 A BR 112021025852A BR 112021025852 B1 BR112021025852 B1 BR 112021025852B1
Authority
BR
Brazil
Prior art keywords
block
candidate
motion vector
mode
target
Prior art date
Application number
BR112021025852-3A
Other languages
English (en)
Other versions
BR112021025852A2 (pt
Inventor
Hideki Takehara
Hiroya Nakamura
Satoru Sakazume
Shigeru Fukushima
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 BR112021025852A2 publication Critical patent/BR112021025852A2/pt
Publication of BR112021025852B1 publication Critical patent/BR112021025852B1/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/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/11Selection of coding mode or of prediction mode among a plurality of spatial 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

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 SE SECODIFICAÇÃO DE VÍDEO. A presente invenção refere-se a um dispositivo de codificação de imagem que inclui: uma unidade de derivação de vetor de bloco candidato que deriva vetores de bloco candidatos de um bloco alvo em uma imagem alvo a partir de informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação; um seletor que seleciona um vetor de bloco selecionado a partir dos vetores de bloco candidatos; e uma unidade de correção de posição de referência que executa uma correção em relação a um bloco de referência a ser usado como referência pelo vetor de bloco selecionado, de modo que uma posição de referência do bloco de referência seja corrigida para referir-se a um interior de uma região referenciável, na qual uma amostra decodificada na imagem alvo é adquirida a partir da memória de imagem decodificada como um valor de previsão do bloco alvo com base na posição de referência do bloco de referência.

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se a técnicas de codificação e decodificação de imagem nas quais uma imagem é dividida em blocos e a previsão é executada.
TÉCNICA ANTECEDENTE
[002] Na codificação e decodificação de uma imagem, uma imagem alvo é dividida em blocos, cada um dos quais sendo um grupo de um número predeterminado de amostras e o processamento é executado 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 codificação.
[003] O Documento de Patente 1 descreve uma técnica de intraprevisão para obter uma imagem prevista usando amostras decodificadas no vizinho de um bloco de codificação/decodificação alvo.
Literatura de Patente [Literatura de Patente 1] JP 2009-246975 A. SUMÁRIO DA INVENÇÃO
[004] No entanto, a técnica do Documento de Patente 1 usa apenas as amostras decodificadas no vizinho do bloco de codificação/decodificação alvo para previsão e isto resulta em uma baixa eficiência de previsão.
[005] Em um aspecto da presente invenção para resolver o problema acima, é fornecido um dispositivo que inclui: uma unidade de derivação de vetor de bloco candidato que deriva vetores de bloco candidatos de um bloco alvo em uma imagem alvo a partir de informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação; um seletor que seleciona um vetor de bloco selecionado a partir dos vetores de bloco candidatos; e uma unidade de correção de posição de referência que executa uma correção em relação a um bloco de referência a ser usado como referência pelo vetor de bloco selecionado de modo que uma posição de referência do bloco de referência seja corrigida para referir-se a um interior de uma região referenciável, na qual uma amostra decodificada na imagem alvo é adquirida a partir da memória de imagem decodificada como um valor de previsão do bloco alvo com base na posição de referência do bloco de referência.
[006] De acordo com a presente invenção, é possível alcançar um processo de codificação/descodificação de imagem altamente eficiente e de baixa carga.
BREVE DESCRIÇÃO DOS DESENHOS
[007] A Figura 1 é um diagrama de blocos de um dispositivo de codificação de imagem de acordo com uma modalidade da presente invenção.
[008] A Figura 2 é um diagrama de blocos de um dispositivo de decodificação de imagem de acordo com uma modalidade da presente invenção.
[009] A Figura 3 é um fluxograma que ilustra a operação de divisão de um bloco de árvore.
[0010] A Figura 4 é um diagrama que ilustra um estado de divisão de uma imagem de entrada em blocos de árvore.
[0011] A Figura 5 é um diagrama que ilustra o z-scan.
[0012] A Figura 6A é um diagrama que ilustra uma forma dividida de um bloco.
[0013] A Figura 6B é um diagrama que ilustra uma forma dividida de um bloco.
[0014] A Figura 6C é um diagrama que ilustra uma forma dividida de um bloco.
[0015] A Figura 6D é um diagrama que ilustra uma forma dividida de um bloco.
[0016] A Figura 6E é um diagrama que ilustra uma forma dividida de um bloco.
[0017] A Figura 7 é um fluxograma que ilustra a operação de divisão de um bloco em quatro.
[0018] A Figura 8 é um fluxograma que ilustra a operação de divisão de um bloco em dois ou três.
[0019] A Figura 9 é a sintaxe para expressar a forma da divisão do bloco.
[0020] A Figura 10A é um diagrama que ilustra a intraprevisão.
[0021] A Figura 10B é um diagrama que ilustra a intraprevisão.
[0022] A Figura 11 é um diagrama que ilustra blocos de referência para interprevisão.
[0023] A Figura 12A é a sintaxe para expressar um modo de previsão de bloco de codificação.
[0024] A Figura 12B é a sintaxe para expressar um modo de previsão de bloco de codificação.
[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 de modo 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 previsor de vetor de movimento normal da unidade de derivação de modo 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 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 de 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 previsor 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 previsor de vetor de movimento normal de uma unidade de derivação de modo 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 previsores de vetor de movimento com base em histórico candidatos.
[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 previsores de vetor de movimento com base em histórico candidatos.
[0040] A Figura 28 é um fluxograma de um procedimento de processamento de deslocamento de elemento no procedimento de processamento de inicialização/atualização de lista de previsores de vetor de movimento com base em histórico candidatos.
[0041] A Figura 29 é um fluxograma que ilustra um procedimento de processamento de derivação de previsores de vetor de movimento com base em histórico candidatos.
[0042] A Figura 30 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato à mesclagem com base em histórico.
[0043] A Figura 31A é um diagrama que ilustra um exemplo de um processo de atualização de lista de previsores de vetor de movimento com base em histórico candidatos.
[0044] A Figura 31B é um diagrama que ilustra um exemplo de um processo de atualização de lista de previsores de vetor de movimento com base em histórico candidatos.
[0045] A Figura 31C é um diagrama que ilustra um exemplo de um processo de atualização de lista de previsores de vetor de movimento com base em histórico candidatos.
[0046] A Figura 32 é um diagrama que ilustra a previsão de compensação de movimento em um caso onde a previsão L0 é executada 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 de compensação de movimento em um caso onde a previsão L0 é executada e uma imagem de referência da previsão L0 está em um momento após a 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 após a imagem alvo.
[0049] A Figura 35 é 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 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 de compensação de movimento em 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 após a imagem alvo.
[0051] A Figura 37 é um diagrama que ilustra um exemplo de uma configuração de hardware de um dispositivo de codificação- decodificação de acordo com uma modalidade da presente invenção.
[0052] A Figura 38 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato à mesclagem média.
[0053] A Figura 39A é um diagrama que ilustra uma região de referência válida da cópia intrabloco.
[0054] A Figura 39B é um diagrama que ilustra uma região de referência válida da cópia intrabloco.
[0055] A Figura 40 é um diagrama de blocos de uma configuração detalhada de uma unidade de intraprevisão 103 na Figura 1.
[0056] A Figura 41 é um diagrama de blocos de uma configuração detalhada de uma unidade de intraprevisão 204 na Figura 2.
[0057] A Figura 42 é um diagrama de blocos de uma unidade de previsão de cópia intrabloco 352.
[0058] A Figura 43 é um diagrama de blocos de uma unidade de previsão de cópia intrabloco 362.
[0059] A Figura 44 é um fluxograma que ilustra um processo de previsão de cópia intrabloco da unidade de previsão de cópia intrabloco 352.
[0060] A Figura 45 é um fluxograma que ilustra um processo de previsão de cópia intrabloco da unidade de previsão de cópia intrabloco 362.
[0061] A Figura 46 é um fluxograma que ilustra um processo de cópia intrabloco de mesclagem.
[0062] A Figura 47 é um fluxograma que ilustra um procedimento de processamento de um processo de derivação de modo de vetor de bloco de uma cópia intrabloco de previsão.
[0063] A Figura 48 é um diagrama que ilustra um processo executado por uma unidade de correção de posição de referência 380 e uma unidade de correção de posição de referência 480.
[0064] A Figura 49 é um diagrama que ilustra um estado de correção de uma posição de referência.
[0065] A Figura 50A é um diagrama que ilustra as posições superior esquerda e inferior direita quando uma região referenciável é retangular.
[0066] A Figura 50B é um diagrama que ilustra as posições superior esquerda e inferior direita quando uma região referenciável é retangular.
[0067] A Figura 50C é um diagrama que ilustra as posições superior esquerda e inferior direita quando uma região referenciável é retangular.
[0068] A Figura 50D é um diagrama que ilustra as posições superior esquerda e inferior direita quando uma região referenciável é retangular.
[0069] A Figura 51 é um diagrama que ilustra um processo de correção de uma posição de referência de uma porção na qual a região referenciável não é um retângulo.
[0070] A Figura 52A é um diagrama que ilustra um estado de correção de uma posição de referência.
[0071] A Figura 52B é um diagrama que ilustra um estado de correção de uma posição de referência.
[0072] A Figura 53 é um diagrama que ilustra um processo executado pela unidade de correção de posição de referência 380 e a unidade de correção de posição de referência 480.
[0073] A Figura 54A é um diagrama que ilustra um estado de divisão de uma região referenciável em duas.
[0074] A Figura 54B é um diagrama que ilustra um estado de divisão de uma região referenciável em duas.
[0075] A Figura 54C é um diagrama que ilustra um estado de divisão de uma região referenciável em duas.
[0076] A Figura 54D é um diagrama que ilustra um estado de divisão de uma região referenciável em duas.
[0077] A Figura 55 é um diagrama que ilustra um processo de dividir a região referenciável em duas e corrigir cada uma das posições de referência.
DESCRIÇÃO DE MODALIDADES
[0078] As tecnologias e os termos técnicos usados na presente modalidade serão definidos.
Bloco de Árvore
[0079] Na modalidade, uma imagem de codificação/decodificação alvo é igualmente dividida em um tamanho predeterminado. Esta unidade é definida como um bloco de árvore. Embora a Figura 4 defina o tamanho do bloco de árvore para 128 x 128 amostras, o tamanho do bloco de árvore não está limitado ao mesmo e pode ser definido para qualquer tamanho. O bloco de árvore alvo (que corresponde a um bloco de codificação alvo no processo de codificação e um bloco de decodificação alvo no processo de decodificação) é comutado na ordem de varredura de Bitmap (Raster-Scan), ou seja, da esquerda para a direita e de cima para baixo. O interior de cada bloco de árvore pode ser dividido recursivamente. Um bloco de codificação/decodificação, como um resultado da divisão recursiva do bloco de árvore, é definido como um bloco de codificação. Um bloco de árvore e um bloco de codificação são definidos coletivamente como um bloco. A execução da divisão de blocos apropriada permite uma codificação eficiente. O tamanho do bloco de árvore pode ser um valor fixo determinado antecipadamente pelo dispositivo de codificação e o dispositivo de decodificação ou é possível adotar uma configuração na qual o tamanho do bloco de árvore determinado pelo dispositivo de codificação é transmitido para o dispositivo de decodificação. No presente documento, o tamanho máximo do bloco de árvore é de 128 x 128 amostras e o tamanho mínimo do bloco de árvore é de 16 x 16 amostras. O tamanho máximo do bloco de codificação é de 64 x 64 amostras e o tamanho mínimo do bloco de codificação é de 4 x 4 amostras.
Modo de Previsão
[0080] A comutação é executada entre intraprevisão (MODE_INTRA) para executar a previsão a partir de um sinal de imagem processada de uma imagem alvo e interprevisão (MODE_INTER) para executar a previsão a partir de um sinal de imagem de uma imagem processada em unidades de blocos de codificação alvo.
[0081] A imagem processada é usada, no processo de codificação, para uma imagem obtida pela decodificação de um sinal codificado, um sinal de imagem, um bloco de árvore, um bloco, um bloco de codificação ou similar. A imagem processada é usada, no processo de decodificação, para uma imagem decodificada, sinal de imagem, um bloco de árvore, um bloco, um bloco de codificação ou similar.
[0082] 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.
Previsão de Cópia Intrabloco
[0083] A previsão de cópia intrabloco é um processo de codificação/decodificação de um bloco alvo com referência a uma amostra decodificada em uma imagem alvo como um valor de previsão. A distância do bloco alvo para a amostra de referência é representada por um vetor de bloco. O vetor de bloco refere-se à imagem alvo e a imagem de referência é determinada de maneira única. Portanto, não há necessidade de fornecer um índice de referência. Uma diferença entre o vetor de bloco e o vetor de movimento é se a imagem de referência é uma imagem alvo ou uma imagem processada. Além disso, no caso do vetor de bloco, precisão de 1 amostra ou precisão de 4 amostras pode ser selecionada usando resolução adaptativa de vetor de movimento (Adaptive Motion Vector Resolution - AMVR).
[0084] Na cópia intrabloco, é possível selecionar entre dois modos: um modo de cópia intrabloco de previsão ou um modo de cópia intrabloco de mesclagem.
[0085] O modo de cópia intrabloco de previsão é um modo para determinar um vetor de bloco do bloco alvo com base em um previsor de vetor de bloco derivado da informação processada e com base em uma diferença de vetor de bloco. O previsor de vetor de bloco é derivado de um bloco processado no vizinho do bloco alvo e a partir de um índice para especificar o previsor de vetor de bloco. O índice para especificar o previsor de vetor de bloco e a diferença de vetor de bloco são transmitidos em um fluxo de bits.
[0086] O modo de cópia intrabloco de mesclagem é um modo para derivar informação sobre previsão de cópia intrabloco do bloco alvo a partir da informação sobre previsão de cópia intrabloco do bloco processado no vizinho do bloco alvo sem transmitir uma diferença de vetor de movimento.
Interprevisão
[0087] Na interprevisão na qual a previsão é executada 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 usando um índice de referência em cada uma das listas. Na fatia P, a previsão L0 (Pred_L0) é utilizável. Na fatia B, a previsão L0 (Pred_L0), a previsão L1 (Pred_L1) e a biprevisão (Pred_BI) são utilizáveis. A previsão L0 (Pred_L0) é uma interprevisão que refere-se a uma imagem de referência gerenciada por L0, enquanto que a previsão L1 (Pred_L1) é uma interprevisão que refere-se a uma imagem de referência gerenciada por L1. Biprevisão (Pred_BI) é a interprevisão em que tanto a previsão L0 quanto a previsão L1 são executadas e uma imagem de referência gerenciada em cada uma de L0 e L1 é usada como referência. As informações que especificam a previsão L0, previsão L1 e biprevisão são definidas como um modo de interprevisão. No processamento a seguir, assume-se que o processamento será executado para cada uma de L0 e L1 para constantes e variáveis, incluindo um sufixo LX em uma saída.
Modo Previsor de Vetor de Movimento
[0088] O modo previsor de vetor de movimento é um modo para transmitir 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 determinar informação sobre interprevisão de um bloco alvo. O previsor de vetor de movimento é derivado de um previsor de vetor de movimento candidato derivado de um bloco processado no vizinho do bloco alvo ou um bloco pertencente à imagem processada e localizado na mesma posição ou na vizinhança (proximidade) do bloco alvo e a partir de um índice para especificar o previsor de vetor de movimento.
Modo de Mesclagem
[0089] O modo de mesclagem é um modo para derivar informação sobre interprevisão do bloco alvo a partir de informação sobre interprevisão de um bloco processado no vizinho do bloco alvo ou um bloco pertencente a uma imagem processada e localizado na mesma posição que o bloco alvo ou na vizinhança (proximidade) do bloco alvo, sem transmitir uma diferença de vetor de movimento ou um índice de referência.
[0090] Um bloco processado no vizinho do bloco alvo e a informação sobre interprevisão do bloco processado são definidos como candidatos à mesclagem espacial. Os blocos pertencentes à imagem processada e localizados na mesma posição que o bloco alvo ou na vizinhança (proximidade) do bloco alvo e a informação sobre interprevisão derivada da informação sobre interprevisão do bloco são definidos como candidatos à mesclagem temporal. Cada um dos candidatos à mesclagem é adicionado a uma lista de candidatos à mesclagem. Um candidato à mesclagem a ser usado para previsão de um bloco alvo é especificado por um índice de mesclagem.
Bloco Vizinho
[0091] A Figura 11 é um diagrama que ilustra blocos de referência a serem usados como referência para derivar informação sobre interprevisão no modo previsor de vetor de movimento e no modo de mesclagem. A0, A1, A2, B0, B1, B2 e B3 são blocos processados no vizinho do bloco alvo. T0 é um bloco pertencente à imagem processada e localizado na mesma posição que o bloco alvo ou na vizinhança (proximidade) do bloco alvo, na imagem alvo.
[0092] A1 e A2 são blocos localizados no lado esquerdo do bloco de codificação alvo e na vizinhança do bloco de codificação alvo. B1 e B3 são blocos localizados acima do bloco de codificação alvo e na vizinhança do bloco de codificação alvo. A0, B0 e B2 são blocos localizados, respectivamente, na parte inferior esquerda, na parte superior direita e na parte superior esquerda do bloco de codificação alvo.
[0093] Detalhes de como os blocos vizinhos são manipulados no modo previsor de vetor de movimento e no modo de mesclagem serão descritos abaixo.
Compensação de Movimento Afim
[0094] A compensação de movimento afim primeiro divide um bloco de codificação em sub-blocos de uma unidade predeterminada e, em seguida, determina individualmente um vetor de movimento para cada um dos sub-blocos divididos para executar 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 da informação sobre interprevisão de um bloco processado no vizinho do bloco alvo ou um bloco pertencente à imagem processada e localizado na mesma posição que ou na vizinhança (proximidade) do bloco alvo. Embora a presente modalidade defina o tamanho do sub-bloco para 4 x 4 amostras, o tamanho do sub-bloco não está limitado ao mesmo e um vetor de movimento pode ser derivado em unidades de amostras.
[0095] A Figura 14 ilustra um exemplo de compensação de movimento afim em um caso onde há dois pontos de controle. Neste caso, cada um dos dois pontos de controle tem dois parâmetros, ou seja, um componente horizontal e um componente vertical. Consequentemente, a transformação afim com dois pontos de controle é denominada como transformação afim de quatro parâmetros. CP1 e CP2 na Figura 14 são pontos de controle.
[0096] A Figura 15 ilustra um exemplo de compensação de movimento afim em um caso onde há três pontos de controle. Neste caso, cada um dos três pontos de controle tem dois parâmetros, ou seja, um componente horizontal e um componente vertical. Consequentemente, a transformação afim com três pontos de controle é denominada como transformação afim de seis parâmetros. CP1, CP2 e CP3 na Figura 15 são pontos de controle.
[0097] A compensação de movimento afim pode ser usada em qualquer um dos modos de previsão de vetor de movimento e modo de mesclagem. Um modo para aplicar a compensação de movimento afim no modo previsor de vetor de movimento é definido como um modo previsor de vetor de movimento de sub-bloco. Um modo para aplicar a compensação de movimento afim no modo de mesclagem é definido como um modo de mesclagem de sub-bloco.
Sintaxe de Bloco de Codificação
[0098] A sintaxe para expressar o modo de previsão do bloco de codificação será descrita com referência às Figuras 12A, 12B e 13. O pred_mode_flag na Figura 12A é um sinalizador que indica se o modo é interprevisão. A configuração pred_mode_flag 0 indica interprevisão, enquanto que a configuração pred_mode_flag 1 indica intraprevisão. No caso de intraprevisão, pred_mode_ibc_flag o qual é um sinalizador que indica se a previsão é previsão de cópia intrabloco é transmitido. No caso de previsão de cópia intrabloco, o sinalizador (pred_mode_ibc_flag = 1), merge é transmitido. merge_flag é um sinalizador que indica se definer o modo para o modo de cópia intrabloco de mesclagem ou o modo de previsão de cópia intrabloco. No caso do modo de cópia intrabloco de mesclagem (merge_flag = 1), o índice de mesclagem merge_idx é transmitido. Quando a previsão não é a previsão de cópia intrabloco (pred_mode_ibc_flag = 0), a previsão é definida para intraprevisão normal e a informação intra_pred_mode da intraprevisão normal é transmitida.
[0099] No caso de interprevisão, merge_flag é transmitido. merge_flag é um sinalizador que indica se o modo a ser usado é o modo de mesclagem ou o modo previsor de vetor de movimento. No caso de modo previsor de vetor de movimento (merge_flag = 0), um sinalizador inter_affine_flag que indica se deve ser aplicado o modo previsor de vetor de movimento de sub-bloco é transmitido. No caso de aplicação de modo previsor de vetor de movimento de sub-bloco (inter_affine_flag = 1), cu_affine_type_flag é transmitido. cu_affine_type_flag é um sinalizador para determinar o número de pontos de controle no modo previsor de vetor de movimento do sub-bloco.
[00100] Em contraste, no caso do modo de mesclagem (merge_flag = 1), o merge_sub-block_flag da Figura 12B é transmitido. merge_sub- block_flag é um sinalizador que indica se deve ser aplicado o modo de mesclagem de sub-bloco. No caso do modo de mesclagem de sub- bloco (merge_sub-block_flag = 1), um índice de mesclagem merge_sub-block_idx é transmitido. Por outro lado, em um caso onde o modo não é o modo de mesclagem de sub-bloco (merge_sub- block_flag = 0), um sinalizador merge_triangle_flag que indica se deve ser aplicado o modo de mesclagem triangular é transmitido. No caso de aplicar o modo de mesclagem triangular (merge_triangle_flag = 1), os índices de mesclagem triangular 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 uma das duas partições de divisão. No caso de não aplicar o modo de mesclagem triangular, (merge_triangle_flag = 0), um índice de mesclagem merge_idx é transmitido.
[00101] A Figura 13 ilustra o valor de cada um dos elementos na sintaxe de interprevisão e o modo de previsão correspondente. merge_flag = 0 e inter_affine_flag = 0 correspondem ao modo previsor de vetor de movimento normal (Modo Interpred). merge_flag = 0 e inter_affine_flag = 1 correspondem a um modo previsor de vetor de movimento de sub-bloco (Modo Inter Afim). merge_flag = 1, merge_sub-block_flag = 0 e merge_trianlge_flag = 0 correspondem a um modo de mesclagem normal (Modo de Mesclagem). merge_flag = 1, merge_sub-block_flag = 0 e merge_trianlge_flag = 1 correspondem a um modo de mesclagem triangular (Modo de Mesclagem Triangular). merge_flag = 1, merge_sub-block_flag = 1 corresponde a um modo de mesclagem de sub-bloco (Modo de Mesclagem Afim).
POC
[00102] Uma contagem de ordem de imagem (Picture Order Count, POC) é uma variável associada à imagem a ser codificada e é definida para um valor que aumenta em um de acordo com a ordem de saída da imagem. O valor POC torna possível discriminar se as imagens são iguais, discriminar a relação sequencial entre imagens na ordem de saída ou derivar a distância entre as imagens. Por exemplo, é possível determinar que duas imagens com o mesmo valor POC são imagens idênticas. No caso onde as POCs das duas imagens têm valores diferentes, a imagem com o menor valor POC pode ser determinada como a imagem que é gerada anteriormente. A diferença entre as POCs das duas imagens indica a distância entre as imagens na direção do eixo temporal.
Primeira Modalidade
[00103] Um dispositivo de codificação de imagem 100 e um dispositivo de decodificação de imagem 200 de acordo com uma primeira modalidade da presente invenção serão descritos.
[00104] A Figura 1 é um diagrama de blocos do dispositivo de codificação de imagem 100 de acordo com a primeira modalidade. O dispositivo de codificação de imagem 100, de acordo com uma modalidade, inclui uma unidade de divisão de blocos 101, uma unidade de interprevisão 102, uma unidade de intraprevisão 103, uma memória de imagem decodificada 104, um determinador de método de previsão 105, uma unidade geradora de residual 106, um transformador/quantizador ortogonal 107, uma unidade de codificação de sequências de bits 108, um quantizador inverso/transformador ortogonal inverso 109, um superimpositor de sinal de imagem decodificada 110 e uma memória de armazenamento de informação sobre codificação 111.
[00105] A unidade de divisão de blocos 101 divide recursivamente uma imagem de entrada para construir um bloco de codificação. A unidade de divisão de blocos 101 inclui: uma unidade de divisão em quadrantes que divide um bloco alvo de divisão em ambas as direções horizontal e vertical; e uma unidade de divisão binária-ternária que divide um bloco alvo de divisão na direção horizontal ou vertical. A unidade de divisão de blocos 101 define o bloco de codificação construído como um bloco de codificação alvo e fornece um sinal de imagem do bloco de codificação alvo para a unidade de interprevisão 102, a unidade de intraprevisão 103 e a unidade geradora de residual 106. Além disso, a unidade de divisão de blocos 101 fornece informação que indica a estrutura de divisão recursiva determinada para a unidade de codificação de sequências de bits 108. A operação detalhada da unidade de divisão de blocos 101 será descrita abaixo.
[00106] A unidade de interprevisão 102 executa a interprevisão do bloco de codificação alvo. A unidade de interprevisão 102 deriva uma pluralidade de informações sobre interprevisão candidatas a partir da informação sobre interprevisão armazenada na memória de armazenamento de informação sobre codificação 111 e o 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 e fornece o modo de interprevisão selecionado e um sinal de imagem prevista que corresponde ao modo de interprevisão selecionado para o determinador de método de previsão 105. A configuração detalhada e a operação da unidade de interprevisão 102 serão descritas abaixo.
[00107] A unidade de intraprevisão 103 executa intraprevisão no bloco de codificação alvo. 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 executa intraprevisão com base na informação sobre codificação, tal como um modo de intraprevisão armazenado na memória de armazenamento de informação sobre codificação 111 e, assim, gera um sinal de imagem prevista. 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 prevista que corresponde ao modo de intraprevisão selecionado para o determinador de método de previsão 105. A configuração e operação detalhadas da unidade de intraprevisão 103 serão descritas abaixo.
[00108] A memória de imagem decodificada 104 armazena a imagem decodificada construída pelo superimpositor de sinal de imagem decodificada 110. A memória de imagem decodificada 104 fornece a imagem decodificada armazenada para a unidade de interprevisão 102 e a unidade de intraprevisão 103.
[00109] O determinador de método de previsão 105 avalia cada intraprevisão e interprevisão usando a informação sobre codificação, a quantidade de código do residual, a quantidade de distorção entre o sinal de imagem prevista e o sinal de imagem alvo ou similar e, assim, determina um modo de previsão ideal. No caso de intraprevisão, o determinador de método de previsão 105 fornece informação sobre intraprevisão, tal como um modo de intraprevisão, para a unidade de codificação de sequências de bits 108 como informação sobre codificação. No caso do modo de mesclagem da interprevisão, o determinador de método de previsão 105 fornece informação sobre interprevisão, tal como um índice de mesclagem e informação (sinalizador de mesclagem de sub-bloco) que indica se o modo é o modo de mesclagem de sub-bloco, para a unidade de codificação de sequências de bits 108 como informação sobre codificação. No caso do modo previsor de vetor de movimento da interprevisão, o determinador de método de previsão 105 fornece informação sobre interprevisão, tal como o modo de interprevisão, o índice de previsor de vetor de movimento, o índice de referência L0 ou L1, a diferença de vetor de movimento ou informação que indica se o modo é um modo previsor de vetor de movimento de sub-bloco (sinalizador de previsor de vetor de movimento de sub-bloco) para a unidade de codificação de sequências de bits 108 como informação sobre codificação. O determinador de método de previsão 105 fornece ainda a informação sobre codificação determinada para a memória de armazenamento de informação sobre codificação 111. O determinador de método de previsão 105 fornece o sinal de imagem prevista para a unidade geradora de residual 106 e o superimpositor de sinal de imagem decodificada 110.
[00110] A unidade geradora de residual 106 constrói um residual ao subtrair o sinal de imagem prevista do sinal de imagem alvo e fornece o residual construído para o transformador/quantizador ortogonal 107.
[00111] O transformador/quantizador ortogonal 107 executa a transformação e quantização ortogonais no residual de acordo com o parâmetro de quantização e, assim, constrói um residual ortogonalmente transformado e quantizado e, em seguida, fornece o residual construído para a unidade de codificação de sequências de bits 108 e o quantizador inverso/transformador ortogonal inverso 109.
[00112] A unidade de codificação de sequências de bits 108 codifica, além das sequências, imagens, fatias e informações em unidades de blocos de codificação, a unidade de codificação de sequências de bits 108 codifica a informação sobre codificação que corresponde ao método de previsão determinado pelo determinador de método de previsão 105 para cada um dos blocos de codificação. Especificamente, a unidade de codificação de sequências de bits 108 codifica um modo PredMode de previsão para cada um dos blocos de codificação. Em um caso onde o modo de previsão é interprevisão (MODE_INTER), a unidade de codificação de sequências de bits 108 codifica informação sobre codificação (informação sobre interprevisão), tal como um sinalizador para determinar se o modo é o modo de mesclagem, um sinalizador de mesclagem de sub-bloco, um índice de mesclagem no modo de mesclagem, um modo de interprevisão em modos diferentes de mesclagem, um índice de previsor de vetor de movimento, informações relacionadas a diferenças de vetor de movimento e um sinalizador de previsão de vetor de movimento de sub-bloco, com base em uma sintaxe prescrita (regra de sintaxe de uma sequência de bits) e, assim, constrói uma primeira sequência de bits. Em um caso onde o modo de previsão é intraprevisão (MODE_INTRA), a unidade de codificação de sequências de bits 108 codifica um sinalizador para determinar se ele é a cópia intrabloco com base em uma sintaxe prescrita. No caso de cópia intrabloco, a informação sobre codificação (informação sobre intraprevisão), tal como um índice de mesclagem para o modo de mesclagem, um índice de previsor de vetor de bloco e uma diferença de vetor de bloco para o modo diferente de mesclagem são codificadas com base em uma sintaxe prescrita. Em um caso onde ele não é cópia intrabloco, a informação sobre codificação (informação sobre intraprevisão), tal como um modo de intraprevisão, é codificada com base em uma sintaxe prescrita. A primeira sequência de bits é construída por meio da codificação acima. Além disso, a unidade de codificação de sequências de bits 108 executa a codificação de entropia no resíduo ortogonalmente quantizado e transformado com base em uma sintaxe prescrita e, assim, constrói uma segunda sequência de bits. A unidade de codificação de sequências de bits 108 multiplexa a primeira sequência de bits e a segunda sequência de bits com base em uma sintaxe prescrita e envia a sequência de bits.
[00113] O quantizador inverso/transformador ortogonal inverso 109 executa quantização inversa e transformação inversa ortogonais no residual ortogonalmente transformado/quantizado fornecido a partir do transformador/quantizador ortogonal 107 e, assim, calcula o residual e, em seguida, fornece o residual calculado para o superimpositor de sinal de imagem decodificada 110.
[00114] O superimpositor de sinal de imagem decodificada 110 sobrepõe o sinal de imagem prevista de acordo com a determinação do determinador de método de previsão 105 com o residual que sofreu a quantização inversa/transformação inversa ortogonais pelo quantizador inverso/transformador ortogonal inverso 109, deste modo, construindo uma imagem decodificada e armazena a imagem decodificada construída na memória de imagem decodificada 104. O superimpositor de sinal de imagem decodificada 110 pode executar o processamento de filtragem para redução de distorção, tal como distorção de bloco em virtude de codificação na imagem decodificada e pode, subsequentemente, armazenar a imagem decodificada na memória de imagem decodificada 104.
[00115] A memória de armazenamento de informação sobre codificação 111 armazena informação sobre codificação, tal 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, a informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação 111 inclui informação sobre interprevisão, tal como o vetor de movimento determinado, índices de referência das listas de referência L0 e L1 e uma lista de previsores de vetor de movimento com base em histórico candidatos. No caso do modo de mesclagem de interprevisão, a informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação 111 inclui, além das informações descritas acima, um índice de mesclagem e informação sobre interprevisão, incluindo informação que indica se o modo é um modo de mesclagem de sub-bloco (um sinalizador de mesclagem de sub-bloco). No caso do modo previsor de vetor de movimento de interprevisão, a informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação 111 inclui, além das informações acima, informação sobre interprevisão, tal como um modo de interprevisão, um índice de previsor de vetor de movimento, uma diferença de vetor de movimento e informação que indica se o modo é um modo previsor de vetor de movimento de sub-bloco (sinalizador de previsor de vetor de movimento de sub-bloco). No caso de intraprevisão, a informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação 111 inclui informação sobre intraprevisão, tal como o modo de intraprevisão determinado.
[00116] 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 codificação 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ências de bits 201, uma unidade de divisão de blocos 202, uma unidade de interprevisão 203, uma unidade de intraprevisão 204, uma memória de armazenamento de informação sobre codificação 205, um quantizador inverso/transformador ortogonal inverso 206 e um superimpositor de sinal de imagem decodificada 207 e uma memória de imagem decodificada 208.
[00117] Uma vez 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 codificação de imagem na Figura 1. Consequentemente, cada uma das configurações da memória de armazenamento de informação sobre codificação 205, o quantizador inverso/transformador ortogonal inverso 206, o superimpositor de sinal de imagem decodificada 207 e a 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ção sobre codificação 111, o quantizador inverso/transformador ortogonal inverso 109, o superimpositor de sinal de imagem decodificada 110 e a memória de imagem decodificada 104 do dispositivo de codificação de imagem na Figura 1.
[00118] 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, assim, obtém a sequência, uma imagem, uma fatia, informação em unidades de blocos de codificação e informação sobre codificação em unidades de blocos de codificação. 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 codificação. Em um caso onde o modo de previsão é interprevisão (MODE_INTER), a unidade de decodificação de sequências de bits 201 decodifica a informação sobre codificação (informação sobre interprevisão) relacionada ao sinalizador que discrimina se o modo é o modo de mesclagem, o índice de mesclagem no caso do modo de mesclagem, o sinalizador de mesclagem de sub-bloco e a interprevisão no caso do modo previsor de vetor de movimento, o índice de previsor de vetor de movimento, diferença de vetor de movimento, o sinalizador de previsor de vetor de movimento de sub- bloco ou similar de acordo com uma sintaxe prescrita e, então, fornece a informação sobre codificação (informação sobre interprevisão) para a memória de armazenamento de informação sobre codificação 205 através da unidade de interprevisão 203 e da unidade de divisão de blocos 202. Em um caso onde o modo de previsão é intraprevisão (MODE_INTRA), a unidade de decodificação de sequências de bits 201 decodifica um sinalizador para determinar se ele é cópia intrabloco. No caso de cópia intrabloco, a informação sobre codificação (informação sobre intraprevisão), tal como um índice de mesclagem para o modo de mesclagem, um índice de previsor de vetor de bloco e uma diferença de vetor de bloco para o modo diferente de mesclagem, é decodificada com base em uma sintaxe prescrita. Em um caso onde ela não é cópia intrabloco, a informação sobre codificação (informação sobre intraprevisão), tal como um modo de intraprevisão, é decodificada com base em uma sintaxe prescrita. Através do método de decodificação acima, a informação sobre codificação (informação sobre intraprevisão) é fornecida para a memória de armazenamento de informação sobre codificação 205 através da unidade de interprevisão 203 ou da unidade de intraprevisão 204 e através da unidade de divisão de blocos 202. A unidade de decodificação de sequências de bits 201 decodifica a segunda sequência de bits separada e calcula um residual ortogonalmente transformado/quantizado e, em seguida, fornece o residual ortogonalmente transformado/quantizado para o quantizador inverso/transformador ortogonal inverso 206.
[00119] Quando o modo de previsão PredMode do bloco de codificação alvo é interprevisão (MODE_INTER) e o modo previsor de vetor de movimento, a unidade de interprevisão 203 usa a informação sobre codificação do sinal de imagem já decodificado armazenado na memória de armazenamento de informação sobre codificação 205 para derivar um pluralidade de previsores de vetor de movimento candidatos. A unidade de interprevisão 203, então, adiciona a pluralidade de previsores de vetor de movimento candidatos derivados a uma lista de previsores de vetor de movimento candidatos descrita abaixo. A unidade de interprevisão 203 seleciona um previsor de vetor de movimento que corresponde ao índice do previsor de vetor de movimento a ser decodificado e fornecido pela unidade de decodificação de sequências de bits 201 dentre a pluralidade de previsores de vetor de movimento candidatos registrados na lista de previsores de vetor de movimento candidatos. A unidade de interprevisão 203, então, calcula um vetor de movimento com base na diferença de vetor de movimento decodificada pela unidade de decodificação de sequências de bits 201 e o previsor de vetor de movimento selecionado e armazena o vetor de movimento calculado na memória de armazenamento de informação sobre codificação 205 juntamente com outras informações sobre codificação. No presente documento, a informação sobre codificação do bloco de codificação a ser fornecida e armazenada inclui o modo de previsão PredMode, sinalizadores predFlagL0[xP][yP] e predFlagL1[xP][yP] que indica se deve ser usada previsão L0 e previsão L1, í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 codificação dentro da imagem. Em um caso onde o modo de previsão PredMode é interprevisão (MODE_INTER) e o modo de interprevisão é previsão L0 (Pred_L0), o sinalizador predFlagL0 que indica se deve usar previsão L0 é definido como 1 e o sinalizador predFlagL1 que indica se deve usar L1 -previsão é definido como 0. Em um caso onde o modo de interprevisão é previsão L1 (Pred_L1), um sinalizador predFlagL0 que indica se deve usar previsão L0 é definido como 0 e um sinalizador predFlagL1 que indica se deve usar previsão L1 é definido como 1. Em um caso onde o modo de interprevisão é biprevisão (Pred_BI), tanto o sinalizador predFlagL0 que indica se deve usar previsão L0 quanto o sinalizador predFlagL1 que indica se deve usar previsão L1 são definidos como 1. Além disso, quando o modo de previsão PredMode do bloco de codificação alvo está na interprevisão (MODE_INTER) e no modo de mesclagem, um candidato à mesclagem é derivado. Usando a informação sobre codificação do bloco de codificação já decodificado armazenado na memória de armazenamento de informação sobre codificação 205, uma pluralidade de candidatos à mesclagem é derivada e registrada em uma lista de candidatos à mesclagem descrita abaixo. Subsequentemente, um candidato à mesclagem que que corresponde ao índice de mesclagem que é decodificado pela unidade de decodificação de sequências de bits 201 fornecido é selecionado dentre a pluralidade de candidatos à mesclagem registrados na lista de candidatos à mesclagem e, em seguida, a informação sobre interprevisão, tais como sinalizadores predFlagL0[xP ][yP] e predFlagL1[xP][yP], que indica se deve ser usada a previsão L0 e a previsão L1 do candidato à mesclagem selecionado, índices de referência refIdxL0[xP][yP] e refIdxL1[xP][yP] de L0 e L1 e os vetores de movimento mvL0[xP][yP] e mvL1[xP][yP] de L0 e L1, será armazenada na memória de armazenamento de informação sobre codificação 205. No presente documento, xP e yP são índices que indicam a posição da amostra no canto superior esquerdo do bloco de codificação dentro da imagem. A configuração detalhada e a operação da unidade de interprevisão 203 serão descritas abaixo.
[00120] A unidade de intraprevisão 204 executa intraprevisão quando o modo de previsão PredMode do bloco de codificação alvo é intraprevisão (MODE_INTRA). A informação sobre codificação decodificada pela unidade de decodificação de sequências de bits 201 inclui um modo de intraprevisão. A unidade de intraprevisão 204 gera um sinal de imagem prevista por meio de 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 na informação sobre codificação decodificada pela unidade de decodificação de sequências de bits 201. A unidade de intraprevisão 204, então, fornece o sinal de imagem prevista gerado para o superimpositor de sinal de imagem decodificada 207. A unidade de intraprevisão 204 corresponde à unidade de intraprevisão 103 do dispositivo de codificação de imagem 100 e, assim, executa um processamento similar ao processamento da unidade de intraprevisão 103.
[00121] O quantizador inverso/transformador ortogonal inverso 206 executa transformação inversa/quantização inversa ortogonais no residual transformado/quantizado de forma ortogonal decodificado na unidade de decodificação de sequências de bits 201 e, assim, obtém o residual inversamente transformado/quantizado de forma ortogonal.
[00122] O superimpositor de sinal de imagem decodificada 207 sobrepõe um sinal de imagem prevista interprevisto pela unidade de interprevisão 203 ou um sinal de imagem de previsão intraprevisto pela unidade de intraprevisão 204 com o residual que foi inversamente transformado/quantizado de forma ortogonal pelo quantizador/transformador ortogonal inverso 206, deste modo, decodificando o sinal de imagem decodificada. O superimpositor de sinal de imagem decodificada 207, então, armazena 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 superimpositor de sinal de imagem decodificada 207 pode executar processamento de filtragem na imagem decodificada para reduzir a distorção de bloco ou similar em virtude da codificação e pode, subsequentemente, armazenar a imagem decodificada na memória de imagem decodificada 208.
[00123] A seguir, a operação da unidade de divisão de blocos 101 no dispositivo de codificação 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 a 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 da árvore sofre varredura em uma ordem predeterminada, isto é, em uma ordem de varredura de bitmaps - raster - (Etapa S1002) e um bloco de árvore alvo é dividido internamente (Etapa S1003).
[00124] 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).
[00125] Em um caso onde é determinado que o bloco alvo deve ser dividido em quatro, o bloco alvo será dividido em quatro (Etapa S1102). Cada um dos blocos obtidos pela divisão do bloco alvo sofre varredura na ordem de varredura 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 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).
[00126] Em um caso onde é 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ária-ternária (Etapa S1105).
[00127] A Figura 8 é um fluxograma que ilustra a operação detalhada do processo de divisão binária-ternária na Etapa S1105. Primeiro, é determinado se a divisão binária-ternária será executada no bloco alvo, isto é, se qualquer divisão binária ou divisão ternária deve ser executada (Etapa S1201).
[00128] Em um caso onde não é determinado que a divisão binária- ternária deve ser executada no bloco alvo, isto é, em um caso onde é 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 executado no bloco que foi dividido pelo processo de divisão recursiva.
[00129] Em um caso onde é determinado que a divisão binária- ternária será executada no bloco alvo, é ainda determinado se deve dividir o bloco alvo em dois (Etapa S1202).
[00130] Em um caso onde é determinado que o bloco alvo deve ser dividido em dois, é ainda determinado se deve dividir o bloco alvo na direção superior-inferior (vertical) (Etapa S1203) e, então, com base no resultado, o bloco alvo será dividido de forma binária na direção superior-inferior (vertical) (Etapa S1204) ou o bloco alvo será dividido de forma binária na direção esquerda-direita (horizontal) (Etapa S1205). Como um resultado da Etapa S1204, o bloco alvo é dividido de forma binária na direção superior-inferior (direção vertical), conforme ilustrado em 602 da Figura 6B. Como um resultado da Etapa S1205, o bloco alvo é dividido de forma binária na direção direita- esquerda (direção horizontal), conforme ilustrado em 604 da Figura 6D.
[00131] Na Etapa S1202, em um caso onde não é determinado que o bloco alvo deve ser dividido em dois, isto é, em um caso onde é determinado que o bloco alvo deve ser dividido em três, é ainda determinado se dividir o bloco alvo em três como porções superior, intermediária e inferior (direção vertical) (Etapa S1206). Com base no resultado, o bloco alvo é dividido em três como porções superior, intermediária e inferior (direção vertical) (Etapa S1207) ou porções esquerda, média e direita (direção horizontal) (Etapa S1208). Como um resultado da Etapa S1207, o bloco alvo é dividido em três como porções superior, intermediária e inferior (direção vertical), conforme ilustrado em 603 da Figura 6C. Como um resultado da Etapa S1208, o bloco alvo é dividido em três como porções esquerda, intermediária e direita (direção horizontal), conforme ilustrado em 605 da Figura 6E.
[00132] Após execução de uma das Etapas S1204, S1205, S1207 ou S1208, cada um dos blocos obtidos pela divisão do bloco alvo sofre varredura 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 de divisão, o processo de divisão binária-ternária na Figura 8 é executado recursivamente (Etapa S1210).
[00133] Na divisão de blocos 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 similar. A informação que restringe a propriedade de divisão pode ser executada em uma configuração na qual a informação não é transmitida ao fazer um acordo preliminar entre o dispositivo de codificação e o dispositivo de decodificação ou em uma configuração na qual o dispositivo de codificação determina informações para restringir a propriedade de dividir e registrar as informações em sequências de bits, deste modo, transmitindo as informações para o dispositivo de decodificação.
[00134] Quando um determinado bloco é dividido, um bloco antes da divisão é denominado como bloco pai e cada um dos blocos após a divisão é denominado como bloco filho.
[00135] Em seguida, a operação da unidade de divisão de blocos 202 no dispositivo de decodificação de imagem 200 será descrita. A unidade de divisão de blocos 202 divide um bloco de árvore usando um procedimento de processamento similar ao caso da unidade de divisão de blocos 101 do dispositivo de codificação de imagem 100. Observe que há uma diferença pelo fato de que, embora a unidade de divisão de blocos 101 do dispositivo de codificação de imagem 100 determine um forma de divisão de blocos ideal ao aplicar um método de otimização, tal como estimativa de uma forma ideal por meio de reconhecimento de imagem ou otimização da taxa de distorção, a unidade de divisão de blocos 202 do dispositivo de decodificação de imagem 200 determina a forma de divisão de blocos pela decodificação da informação sobre divisão de blocos registrada na sequência de bits.
[00136] A Figura 9 ilustra a sintaxe (regras de sintaxe de uma 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 em quadrantes do bloco. multi_type_tree () representa a sintaxe para o processo de divisão do bloco em dois ou três. qt_split é um sinalizador que indica se um bloco deve ser dividido em quatro. No caso de divisão do bloco em quatro, a configuração seria qt_split = 1. No caso de não dividir o bloco em quatro, a configuração seria qt_split = 0. No caso de divisão do bloco em quatro (qt_split = 1), um processo de divisão em quadrantes será executado recursivamente em cada divisão de blocos (coding_quadtree (0), coding_quadtree (1), coding_quadtree (2), coding_quadtree (3), em que os argumentos 0 a 3 correspondem aos números de 601 na Figura 6A). No caso onde a divisão em quadrantes não deve ser executada (qt_split = 0), a divisão subsequente é determinada de acordo com multi_type_tree (). mtt_split é um sinalizador que indica se deve ser executada uma divisão adicional. No caso onde a divisão adicional deve ser executada (mtt_split = 1), a transmissão de mtt_split_vertical, o qual é um sinalizador que indica se deve ser executada a divisão na direção vertical ou horizontal e mtt_split_binary, o qual é um sinalizador que determina se deve ser executada a divisão binária ou divisão ternária no bloco, é executada. 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 é uma divisão binária e mtt_split_binary = 0 indica que o bloco é uma divisão ternária. Em um caso onde o bloco deve ser dividido de forma binária (mtt_split_binary = 1), o processo de divisão é executado recursivamente em cada um dos dois blocos de divisão (multi_type_tree (0) e multi_type_tree (1) em que os argumentos 0 a 1 correspondem aos números em 602 ou 604 das Figuras 6B a 6D). No caso onde o bloco deve ser dividido de forma ternária (mtt_split_binary = 0), o processo de divisão é executado recursivamente em cada um dos três blocos de divisão (multi_type_tree (0), multi_type_tree (1) e multi_type_tree (2), em que 0 a 2 correspondem aos números em 603 da Figura 6B ou 605 da Figura 6E). Chamar recursivamente multi_type_tree até mtt_split = 0 alcançará a divisão de blocos hierárquica.
Intraprevisão
[00137] O método de intraprevisão de acordo com uma modalidade é implementado na unidade de intraprevisão 103 do dispositivo de codificação de imagem 100 na Figura 1 e na unidade de intraprevisão 204 do dispositivo de decodificação de imagem 200 na Figura 2.
[00138] Um método de intraprevisão de acordo com uma modalidade será descrito com referência aos desenhos. O método de intraprevisão é implementado em qualquer um dos processos de codificação e decodificação em unidades de blocos de codificação.
Unidade de Intraprevisão 103 no Lado da Codificação
[00139] A Figura 40 é um diagrama que ilustra uma configuração detalhada da unidade de intraprevisão 103 do dispositivo de codificação de imagem 100 da Figura 1. Uma unidade de intraprevisão normal 351 gera um sinal de imagem prevista através de intraprevisão normal a partir de uma amostra decodificada no vizinho de um bloco de codificação alvo, 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 um sinal de imagem prevista que corresponde ao modo de intraprevisão selecionado para o determinador de método de previsão 105. As Figuras 10A e 10B ilustram exemplos de intraprevisão. A Figura 10A ilustra uma correspondência entre uma direção de previsão da intraprevisão normal e um número do modo de intraprevisão. Por exemplo, um modo de intraprevisão 50 copia amostras na direção vertical e, assim, constrói uma imagem de intraprevisão. O modo de intraprevisão 1 é um modo DC no qual todos os valores de amostra de um bloco alvo são definidos para um valor médio de amostras de referência. O modo de intraprevisão 0 é um modo Planar 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. Para cada uma das amostras do bloco alvo, o valor da amostra de referência na direção indicada pelo modo de intraprevisão é copiado. Em um caso onde a amostra de referência no modo de intraprevisão não está em uma posição inteira, um valor de amostra de referência é determinado por meio de interpolação de valores de amostra de referência em posições inteiras no vizinho.
[00140] A unidade de previsão de cópia intrabloco 352 adquire uma região decodificada do mesmo sinal de imagem que o bloco de codificação alvo a partir da memória de imagem decodificada 104, gera um sinal de imagem prevista através do processo de cópia intrabloco e fornece o sinal de imagem prevista para o determinador de método de previsão 105. A configuração e processamento detalhados da unidade de previsão de cópia intrabloco 352 serão descritos abaixo.
Unidade de Intraprevisão 204 no Lado da Decodificação
[00141] A Figura 41 é um diagrama que ilustra uma configuração detalhada da unidade intraprevisão 204 do dispositivo de decodificação de imagem 200 na Figura 2.
[00142] Uma unidade de intraprevisão normal 361 gera um sinal de imagem prevista através de intraprevisão normal a partir de uma amostra decodificada no vizinho de um bloco de codificação alvo, seleciona um modo de intraprevisão adequado dentre uma pluralidade de modos de intraprevisão e obtém o modo de intraprevisão selecionado e um sinal de imagem prevista que corresponde ao modo de intraprevisão selecionado. Este sinal de imagem prevista é fornecido ao superimpositor de sinal de imagem descodificado 207 através de um comutador 364. Uma vez que o processo da unidade de intraprevisão normal 361 da Figura 41 corresponde à unidade de intraprevisão normal 351 da Figura 40, uma descrição detalhada do mesmo será omitida.
[00143] A unidade de previsão de cópia intrabloco 362 adquire uma região decodificada do mesmo sinal de imagem que o bloco de codificação alvo e, a partir da memória de imagem decodificada 208, gera um sinal de imagem prevista através do processo de cópia intrabloco. Este sinal de imagem prevista é fornecido ao superimpositor de sinal de imagem descodificado 207 através do comutador 364. A configuração detalhada e o processamento da unidade de previsão de cópia intrabloco 362 serão descritos abaixo.
Interprevisão
[00144] O método de interprevisão de acordo com uma modalidade é implementado na unidade de interprevisão 102 do dispositivo de codificação de imagem na Figura 1 e na unidade de interprevisão 203 do dispositivo de decodificação de imagem na Figura 2.
[00145] Um método de interprevisão de acordo com uma modalidade será descrito com referência aos desenhos. O método de interprevisão é implementado em qualquer um dos processos de codificação e decodificação em unidades de blocos de codificação.
Unidade de Interprevisão 102 no Lado da Codificação
[00146] A Figura 16 é um diagrama que ilustra uma configuração detalhada da unidade de interprevisão 102 do dispositivo de codificação de imagem na Figura 1. A unidade de derivação de modo previsor de vetor de movimento normal 301 deriva uma pluralidade de previsores de vetor de movimento normal candidatos, 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 de interprevisão detectado, índice de referência, vetor de movimento e diferença calculada do vetor de movimento serão a informação sobre interprevisão de modo previsor de vetor de movimento normal. Esta informação sobre interprevisão é fornecida para um determinador de modo de interprevisão 305. A configuração detalhada e o processamento da unidade de derivação de modo previsor de vetor de movimento normal 301 serão descritos abaixo.
[00147] A unidade de derivação de modo de mesclagem normal 302 deriva uma pluralidade de candidatos à mesclagem normal, seleciona um candidato à mesclagem normal e obtém informação sobre interprevisão do modo de mesclagem normal. Esta informação sobre interprevisão é fornecida para um determinador de modo de interprevisão 305. A configuração detalhada e o processamento da unidade de derivação de modo de mesclagem normal 302 serão descritos abaixo.
[00148] A unidade de derivação do modo previsor de vetor de movimento de sub-bloco 303 deriva uma pluralidade de previsores de vetor de movimento de sub-bloco candidatos, seleciona um previsor de vetor de movimento de 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, índice de referência, vetor de movimento e diferença de vetor de movimento calculada serão a informação sobre interprevisão de modo previsor de vetor de movimento de sub-bloco. Esta informação sobre interprevisão é fornecida para um determinador de modo de interprevisão 305.
[00149] A unidade de derivação do modo de mesclagem de sub- bloco 304 deriva uma pluralidade de candidatos à mesclagem de sub- bloco, seleciona um candidato à mesclagem de sub-bloco e obtém informação sobre interprevisão do modo de mesclagem de sub-bloco. Esta informação sobre interprevisão é fornecida para um determinador de modo de interprevisão 305.
[00150] O determinador de modo de interprevisão 305 determina a informação sobre interprevisão com base na informação sobre interprevisão fornecida a partir da unidade de derivação de modo previsor de vetor de movimento normal 301, a unidade de derivação de modo de mesclagem normal 302, a unidade de derivação de modo previsor de vetor de movimento de sub-bloco 303 e a unidade 304 de derivação do modo de mesclagem de sub-bloco. A informação sobre interprevisão de acordo com o resultado da determinação é fornecida do determinador 305 do modo de interprevisão para uma unidade de previsão de compensação de movimento 306.
[00151] A unidade de previsão de compensação de movimento 306 executa a interprevisão no sinal de imagem de referência armazenado na memória de imagem decodificada 104 com base na informação sobre 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 da Decodificação
[00152] 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.
[00153] A unidade de derivação do modo previsor de vetor de movimento normal 401 deriva uma pluralidade de previsores de vetor de movimento normal candidatos, seleciona um previsor de vetor de movimento, calcula um valor adicionado obtido ao adicionar o previsor de vetor de movimento selecionado e a diferença de vetor de movimento decodificado e define este valor adicionado como um vetor de movimento. O modo de interprevisão decodificado, índice de referência e vetor de movimento serão a informação sobre interprevisão do modo previsor de vetor de movimento normal. Esta informação sobre interprevisão é fornecida para uma unidade de previsão de compensação de movimento 406 através de um comutador 408. A configuração detalhada e o processamento da unidade de derivação de modo previsor de vetor de movimento normal 401 serão descritos abaixo.
[00154] A unidade de derivação de modo de mesclagem normal 402 deriva uma pluralidade de candidatos à mesclagem normal, seleciona um candidato à mesclagem normal e obtém informação sobre interprevisão do modo de mesclagem normal. Esta informação sobre interprevisão é fornecida para uma unidade de previsão de compensação de movimento 406 através de um comutador 408. A configuração detalhada e o processamento da unidade de derivação de modo de mesclagem normal 402 serão descritos abaixo.
[00155] Uma unidade de derivação de modo previsor de vetor de movimento de sub-bloco 403 deriva uma pluralidade de previsores de vetor de movimento de sub-bloco candidatos, seleciona um previsor de vetor de movimento de sub-bloco e calcula um valor adicionado obtido ao adicionar o previsor de vetor de movimento de sub-bloco selecionado e a diferença de vetor de movimento decodificado e define este valor agregado como um vetor de movimento. O modo de interprevisão decodificado, índice de referência e vetor de movimento serão a informação sobre interprevisão de modo previsor de vetor de movimento de sub-bloco. Esta informação sobre interprevisão é fornecida para uma unidade de previsão de compensação de movimento 406 através de um comutador 408.
[00156] Uma unidade de derivação de modo de mesclagem de sub- bloco 404 deriva uma pluralidade de candidatos à mesclagem de sub- bloco, seleciona um candidato à mesclagem de sub-bloco e obtém informação sobre interprevisão do modo de mesclagem de sub-bloco. Esta informação sobre interprevisão é fornecida para uma unidade de previsão de compensação de movimento 406 através de um comutador 408.
[00157] A unidade de previsão de compensação de movimento 406 executa a interprevisão no sinal de imagem de referência armazenado na memória de imagem decodificada 208 com base na informação sobre interprevisão determinada. A configuração detalhada e o processamento da unidade de previsão de compensação de movimento 406 são similares à unidade de previsão de compensação de movimento 306 no lado da codificação.
Unidade de Derivação de Modo Previsor de Vetor de Movimento Normal (AMVP Normal)
[00158] A unidade de derivação de modo previsor de vetor de movimento normal 301 da Figura 17 inclui uma unidade de derivação de previsores de vetor de movimento espacial candidatos 321, uma unidade de derivação de previsores de vetor de movimento temporal candidatos 322, uma unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 323, um previsor de vetor de movimento repositor candidato 325, um detector de vetor de movimento normal 326, um seletor de previsor de vetor de movimento candidato 327 e um subtrator de vetor de movimento 328.
[00159] A unidade de derivação de modo previsor de vetor de movimento normal 401 na Figura 23 inclui uma unidade de derivação de previsores de vetor de movimento espacial candidatos 421, uma unidade de derivação de previsores de vetor de movimento temporal candidatos 422, uma unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 423, um repositor de previsor de vetor de movimento candidato 425, um seletor de previsor de vetor de movimento candidato 426 e um somador de vetor de movimento 427.
[00160] Os procedimentos de processamento da unidade de derivação de modo previsor de vetor de movimento normal 301 no lado da codificação e da unidade de derivação de modo 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 previsor de vetor de movimento normal executado pela unidade de derivação do modo de vetor de movimento normal 301 no lado da codificação. A Figura 25 é um fluxograma que ilustra um procedimento de processamento de derivação de modo previsor de vetor de movimento normal executado pela unidade de derivação de modo de vetor de movimento normal 401 no lado de decodificação.
Unidade de Derivação de Modo Previsor de Vetor de Movimento Normal (AMVP Normal): Lado da Codificação
[00161] O procedimento de processamento de derivação do modo previsor de vetor de movimento normal no lado da codificação 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.
[00162] 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).
[00163] Subsequentemente, uma diferença de vetor de movimento de um vetor de movimento usado na interprevisão no modo previsor de vetor de movimento normal é calculada para cada uma de L0 e L1 (Etapas S101 à S106 na Figura 19) na unidade de derivação de previsores de vetor de movimento espacial candidatos 321, unidade de derivação de previsores de vetor de movimento temporal candidatos 322, unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 323, o repositor de previsor de vetor de movimento candidato 325, o seletor de previsor de vetor de movimento candidato 327 e o subtrator de vetor de movimento 328. Especificamente, em um caso onde 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 previsores de vetor de movimento candidatos mvpListL0 de L0 é calculada. Subsequentemente, o previsor do vetor de movimento mvpL0 é selecionado e, em seguida, uma diferença do vetor de movimento mvdL0 do vetor de movimento mvL0 de L0 é calculada. Em um caso onde o modo de interprevisão do bloco alvo é a previsão L1 (Pred_L1), uma lista de previsores de vetor de movimento candidatos mvpListL1 de L1 é calculada. 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 onde o modo de interprevisão do bloco alvo é biprevisão (Pred_BI), a previsão L0 e a previsão L1 são ambas executadas. Uma lista de previsores de vetor de movimento candidatos 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. Juntamente com este cálculo, uma lista de previsores de vetor de movimento candidatos mvpListL1 de L1 é calculada e um previsor de vetor de movimento mvpL1 de L1 é calculado e, então, uma diferença de vetor de movimento mvdL1 de um vetor de movimento mvL1 de L1 é calculada.
[00164] O processo de cálculo da diferença do vetor de movimento é executado para cada uma de L0 e L1, no qual o processo de cálculo é um processo em comum em L0 e L1. Consequentemente, L0 e L1 serão denotados como LX como um procedimento em comum. No processo de cálculo da diferença do vetor de movimento de L0, X de LX é definido como 0 enquanto que, no processo de cálculo da diferença do vetor de movimento de L1, X de LX é definido como 1. Além disso, em um caso onde a informação na outra lista é usada como referência em vez de um LX durante o processo de cálculo da diferença do vetor de movimento de um LX, a outra lista será representada como LY.
[00165] Em um caso onde um vetor de movimento mvLX de LX é usado (Etapa S102 na Figura 19: SIM), os previsores de vetor de movimento candidatos de LX são calculados, deste modo, construindo uma lista de previsores de vetor de movimento candidatos mvpListLX de LX (Etapa S103 na Figura 19). Na unidade de derivação de modo previsor de vetor de movimento normal 301, a unidade de derivação de previsores de vetor de movimento espacial candidatos 321, a unidade de derivação de previsores de vetor de movimento temporal candidatos 322, a unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 323 e o repositor de previsor de vetor de movimento candidato 325 derivam uma pluralidade de previsores de vetor de movimento candidatos e, assim, constroem a lista de previsores de vetor de movimento candidatos mvpListLX. O procedimento de processamento detalhado da Etapa S103 na Figura 19 será descrito abaixo usando o fluxograma na Figura 20.
[00166] Subsequentemente, o seletor de previsor de vetor de movimento candidato 327 seleciona um previsor de vetor de movimento mvpLX de LX da lista de previsores de vetor de movimento candidatos 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 previsores de vetor de movimento candidatos mvpListLX é representado como mvpListLX[i]. A diferença do vetor de movimento, a qual é uma diferença entre o vetor de movimento mvLX e cada um dos previsores de vetor de movimento candidatos mvpListLX[i] armazenados na lista de previsores de vetor de movimento candidatos mvpListLX é, cada uma, calculada. Uma quantidade de código no momento da codificação destas diferenças do vetor de movimento é calculada para cada um dos elementos (previsores de vetor de movimento candidatos) da lista de previsores de vetor de movimento candidatos mvpListLX. Subsequentemente, o previsor de vetor de movimento candidato mvpListLX[i] que minimiza a quantidade de código para cada um dos previsores de vetor de movimento candidatos entre os elementos individuais registrados na lista de previsores de vetor de movimento candidatos mvpListLX é selecionado como o previsor de vetor de movimento mvpLX e seu índice i é obtido. Em um caso onde há uma pluralidade de previsores de vetor de movimento candidatos que têm a quantidade mínima de código gerado na lista de previsores de vetor de movimento candidatos mvpListLX, o previsor de vetor de movimento candidato mvpListLX[i] que tem o índice i na lista de previsores de vetor de movimento candidatos mvpListLX representado por um pequeno número é selecionado como o previsor de vetor de movimento mvpLX ideal e seu índice i é obtido.
[00167] Subsequentemente, o subtrator de vetor de movimento 328 subtrai o previsor de vetor de movimento selecionado mvpLX de LX do vetor de movimento mvLX de LX e, assim, calcula uma diferença de vetor de movimento mvdLX de LX conforme em: mvdLX = mvLX - mvpLX (Etapa S105 na Figura 19).
Unidade de Derivação de Modo Previsor de Vetor de Movimento Normal (AMVP Normal): Lado da Decodificação
[00168] Em seguida, um procedimento de processamento de modo previsor de vetor de movimento normal no lado de decodificação será descrito com referência à Figura 25. No lado de decodificação, a unidade de derivação de previsores de vetor de movimento espacial candidatos 421, a unidade de derivação de previsores de vetor de movimento temporal candidatos 422, a unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 423 e o repositor de previsor de vetor de movimento candidato 425 calculam individualmente os vetores de movimento usados na interprevisão do modo previsor de vetor de movimento normal para cada uma de L0 e L1 (Etapas S201 à S206 na Figura 25). Especificamente, em um caso onde 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 previsores de vetor de movimento candidatos 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 onde o modo de interprevisão do bloco alvo é previsão L1 (Pred_L1), a lista de previsores de vetor de movimento candidatos L1 mvpListL1 é calculada. Subsequentemente, o previsor de vetor de movimento mvpL1 é selecionado e o vetor de movimento L1 mvL1 é calculado. Em um caso onde o modo de interprevisão do bloco alvo é biprevisão (Pred_BI), a previsão L0 e a previsão L1 são ambas executadas. Uma lista de previsores de vetor de movimento candidatos 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. Juntamente com este cálculo, uma lista de previsores de vetor de movimento candidatos mvpListL1 de L1 é calculada e um previsor de vetor de movimento mvpL1 de L1 é calculado e, então, o vetor de movimento mvL1 de L1 é calculado.
[00169] Similarmente ao lado da codificação, o lado da decodificação executa o processamento do cálculo do vetor de movimento para cada uma de L0 e L1, no qual o processamento é um processo em comum em L0 e L1. Consequentemente, L0 e L1 serão denotadas como LX como um procedimento em comum. LX representa um modo de interprevisão usado para interprevisão de um bloco de codificação alvo. 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 onde a informação em outra lista de referência é usada como referência em vez da mesma lista de referência que LX a ser calculada durante o processo de cálculo do vetor de movimento de LX, a outra lista de referência será representada como LY.
[00170] Em um caso onde o vetor de movimento mvLX de LX é usado (Etapa S202 na Figura 25: SIM), os previsores de vetor de movimento candidatos de LX são calculados para construir uma lista de previsores de vetor de movimento candidatos mvpListLX de LX (Etapa S203 na Figura 25). Na unidade de derivação de modo previsor de vetor de movimento normal 401, a unidade de derivação de previsores de vetor de movimento espacial candidatos 421, unidade de derivação de previsores de vetor de movimento temporal candidatos 422, unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 423 e o repositor de previsor de vetor de movimento candidato 425 calculam uma pluralidade de previsores de vetor de movimento candidatos e, assim, constroem a lista de previsores de vetor de movimento candidatos mvpListLX. O procedimento de processamento detalhado da Etapa S203 na Figura 25 será descrito abaixo usando o fluxograma na Figura 20.
[00171] Subsequentemente, o seletor de previsor de vetor de movimento 426 extrai um previsor de vetor de movimento candidato mvpListLX[mvpIdxLX] que corresponde ao índice de previsor de vetor de movimento mvpIdxLX decodificado e fornecido pela unidade de decodificação de sequências de bits 201 da lista de previsores de vetor de movimento candidatos mvpListLX como o previsor de vetor de movimento selecionado mvpLX (Etapa S204 na Figura 25).
[00172] Subsequentemente, o somador 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 decodificada e fornecida pela unidade de decodificação de sequências de bits 201 e calcula o vetor de movimento mvLX como: mvLX = mvpLX + mvdLX (Etapa S205 na Figura 25).
Unidade de Derivação de Modo Previsor de Vetor de Movimento Normal (AMVP Normal): Método de Previsão de Vetor de Movimento
[00173] A Figura 20 é um fluxograma que ilustra um procedimento de processamento do processo de derivação de modo previsor de vetor de movimento normal que tem uma função em comum à unidade de derivação de modo previsor de vetor de movimento normal 301 do dispositivo de codificação de imagem e a unidade de derivação de modo previsor de vetor de movimento normal 401 do dispositivo de descodificação de imagem de acordo com uma modalidade da presente invenção.
[00174] Cada uma da unidade de derivação de modo previsor de vetor de movimento normal 301 e a unidade de derivação de modo previsor de vetor de movimento normal 401 inclui uma lista de previsores de vetor de movimento candidatos mvpListLX. A lista de previsores de vetor de movimento candidatos 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 uma localização, na lista de previsores de vetor de movimento candidatos, de um previsor de vetor de movimento candidato que corresponde ao índice. O número de índice do previsor de vetor de movimento começa em 0 e os previsores de vetor de movimento candidatos devem ser armazenados na região de armazenamento da lista de previsores de vetor de movimento candidatos mvpListLX. Na presente modalidade, presume-se que a lista de previsores de vetor de movimento candidatos mvpListLX pode registrar pelo menos dois previsores de vetor de movimento candidatos (como informação sobre interprevisão). Além disso, uma variável numCurrMvpCand, a qual indica o número de previsores de vetor de movimento candidatos registrados na lista de previsores de vetor de movimento candidatos mvpListLX, é definida como 0.
[00175] Cada uma das unidades de derivação do previsor de vetor de movimento espacial candidatos 321 e 421 deriva um previsor de vetor de movimento candidato a partir de blocos no vizinho do lado esquerdo. Este processo deriva um previsor de vetor de movimento mvLXA com referência à informação sobre interprevisão a partir do bloco no vizinho do lado esquerdo (A0 ou A1 na Figura 11), a saber, um sinalizador que indica se um previsor de vetor de movimento candidato é utilizável, um vetor de movimento, um índice de referência ou similar e adiciona mvLXA derivado à lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S301 na Figura 20). Observe que X é 0 na previsão L0 e X é 1 na previsão L1 (o mesmo se aplica daqui em diante). Subsequentemente, as unidades de derivação de previsores de vetor de movimento espacial candidatos 321 e 421 derivam os previsores de vetor de movimento candidatos a partir de um bloco vizinho superior. Este processo deriva um previsor de vetor de movimento mvLXB com referência à informação sobre interprevisão do bloco vizinho superior (B0, B1 ou B2 na Figura 11), a saber, um sinalizador que indica se um previsor de vetor de movimento candidato é utilizável, um vetor de movimento, um índice de referência, ou similar, quando mvLXA derivado e mvLXB derivado não são iguais, mvLXB é adicionado à lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S302 na Figura 20). Os processos nas Etapas S301 e S302 na Figura 20 são fornecidos como um processo em comum, exceto que as posições e os números de blocos vizinhos de referência são diferentes e um sinalizador availableFlagLXN, o qual indica se um previsor de vetor de movimento candidato de um bloco de codificação é utilizável e um vetor de movimento mvLXN, um índice de referência refIdxN (N indica A ou B, o mesmo se aplica daqui em diante), será derivado nestes processos.
[00176] Subsequentemente, cada uma das unidades de derivação de previsores de vetor de movimento temporal candidatos 322 e 422 deriva um previsor de vetor de movimento candidato a partir de um bloco em uma imagem que tem uma diferença temporal da imagem alvo atual. Este processo deriva um sinalizador availableFlagLXCol que indica se um previsor de vetor de movimento candidato de um bloco de codificação de uma imagem que tem uma diferença temporal é utilizá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 previsores de vetor de movimento candidatos mvpListLX (Etapa S303 na Figura 20).
[00177] Observe que é assumido que os processos das unidades de derivação de previsores de vetor de movimento temporal candidatos 322 e 422 podem ser omitidos em unidades de uma sequência (SPS), uma imagem (PPS) ou uma fatia.
[00178] Subsequentemente, as unidades de derivação de previsores de vetor de movimento com base em histórico candidatos 323 e 423 adicionam os previsores de vetor de movimento com base em histórico candidatos registrados em uma lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList à lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S304 na Figura 20). Detalhes do procedimento de processamento de registro na Etapa S304 serão descritos abaixo com referência ao fluxograma na Figura 29.
[00179] Subsequentemente, os repositores de previsor de vetor de movimento candidato 325 e 425 adicionam um previsor de vetor de movimento candidato que tem um valor predeterminado, tal como (0, 0), até que a lista de previsores de vetor de movimento candidatos mvpListLX seja satisfeita (S305 na Figura 20).
Unidade de Derivação de Modo de Mesclagem Normal (Mesclagem Normal)
[00180] A unidade de derivação de modo de mesclagem normal 302 na Figura 18 inclui uma unidade de derivação de candidato à mesclagem espacial 341, uma unidade de derivação de candidato à mesclagem temporal 342, uma unidade de derivação de candidato à mesclagem média 344, uma unidade de derivação de candidato à mesclagem com base em histórico 345, um repositor de candidato à mesclagem 346 e um seletor de candidatos à mesclagem 347.
[00181] A unidade de derivação de modo de mesclagem normal 402 na Figura 24 inclui uma unidade de derivação de candidato à mesclagem espacial 441, uma unidade de derivação de candidato à mesclagem temporal 442, uma unidade de derivação de candidato à mesclagem média 444, uma unidade de derivação de candidato à mesclagem com base em histórico 445, um repositor de candidato à mesclagem 446 e um seletor de candidatos à mesclagem 447.
[00182] 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 em comum à unidade de derivação de modo de mesclagem normal 302 do dispositivo de codificação 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.
[00183] A seguir, vários processos serão descritos passo a passo. A descrição a seguir é um caso onde o tipo de fatia slice_type é uma fatia B, a menos que seja especificado de outra forma. No entanto, a presente invenção também pode ser aplicada ao caso da fatia P. Observe que há apenas previsão L0 (Pred_L0) como o modo de interprevisão, sem previsão L1 (Pred_L1) ou biprevisão (Pred_BI) no caso onde o tipo de fatia slice_type é uma fatia P. Assim, é possível omitir o processo relacionado à L1 neste caso.
[00184] 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 candidatos à mesclagem mergeCandList. A lista de candidatos à mesclagem mergeCandList tem uma estrutura de lista e inclui uma região de armazenamento que armazena, como elementos, um índice de mesclagem que indica uma localização, na lista de candidatos à mesclagem, de um candidato à mesclagem que corresponde ao índice. O número do índice de mesclagem começa em 0 e o candidato à mesclagem é armazenado na região de armazenamento da lista de candidatos à mesclagem mergeCandList. No processamento subsequente, o candidato à mesclagem do índice de mesclagem i registrado na lista de candidatos à mesclagem mergeCandList será representado por mergeCandList[i]. Na presente modalidade, presume-se que a lista de candidatos à mesclagem mergeCandList pode registrar pelo menos seis candidatos à mesclagem (como informação sobre interprevisão). Além disso, uma variável numCurrMergeCand, a qual indica o número de candidatos à mesclagem registrados na lista de candidatos à mesclagem mergeCandList, é definida como 0.
[00185] A unidade de derivação de candidato à mesclagem espacial 341 e a unidade de derivação de candidato à mesclagem espacial 441 derivam um candidato à mesclagem espacial de cada um dos blocos (B1, A1, B0, A0, B2 na Figura 11) no vizinho do bloco alvo na ordem de B1, A1, B0, A0 e B2 a partir da informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação 111 do dispositivo de codificação de imagem ou na memória de armazenamento de informação sobre codificação 205 do dispositivo de decodificação de imagem e, então, registra os candidatos à mesclagem espacial derivados à lista de candidatos à mesclagem mergeCandList (Etapa S401 na Figura 21). No presente documento, N, o qual indica um dentre B1, A1, B0, A0, B2 ou o candidato à mesclagem temporal Col, será definido. Os itens a serem derivados incluem um sinalizador availableFlagN que indica se a informação sobre interprevisão do bloco N é utilizável como um candidato à mesclagem espacial, um índice de referência refIdxL0N de L0 e um índice de referência refIdxL1N de L1 do candidato à mesclagem espacial N, um sinalizador de previsão L0 predFlagL0N que indica se a previsão L0 deve ser executada, um sinalizador de previsão L1 predFlagL1N que indica se a previsão L1 deve ser executada, um vetor de movimento mvL0N de L0 e um vetor de movimento mvL1N de L1. No entanto, uma vez que o candidato à mesclagem na presente modalidade é derivado sem referência à informação sobre interprevisão do bloco incluído no bloco de codificação alvo, o candidato à mesclagem espacial que usa a informação sobre interprevisão do bloco incluído no bloco de codificação alvo não será derivado.
[00186] Subsequentemente, a unidade de derivação de candidato à mesclagem temporal 342 e a unidade de derivação de candidato à mesclagem temporal 442 derivam candidatos à mesclagem temporal a partir de imagens que têm uma diferença temporal e registram os candidatos à mesclagem temporal derivados em uma lista de candidatos à mesclagem mergeCandList (Etapa S402 na Figura 21). Os itens a serem derivados incluem um sinalizador availableFlagCol que indica se o candidato à mesclagem temporal é utilizável, um sinalizador de previsão L0 predFlagL0Col que indica se previsão L0 do candidato à mesclagem temporal deve ser executada, um sinalizador de previsão L1 predFlagL1Col que indica se previsão L1 deve ser executada e um vetor de movimento mvL0Col de L0 e um vetor de movimento mvL1Col de L1.
[00187] Observe que é assumido que os processos das unidades de derivação de candidatos à mesclagem temporal 342 e 442 podem ser omitidos em unidades de uma sequência (SPS), uma imagem (PPS) ou uma fatia.
[00188] Subsequentemente, a unidade de derivação de candidato à mesclagem com base em histórico 345 e a unidade de derivação de candidato à mesclagem com base em histórico 445 registram os previsores de vetor de movimento com base em histórico candidatos registrados na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList na lista de candidatos à mesclagem mergeCandList ( Etapa S403 na Figura 21).
[00189] Em um caso onde o número de candidatos à mesclagem numCurrMergeCand registrados na lista de candidatos à mesclagem mergeCandList é menor do que o número máximo de candidatos à mesclagem MaxNumMergeCand, o candidato à mesclagem com base em histórico é derivado com o número de candidatos à mesclagem numCurrMergeCand registrados na lista de candidatos à mesclagem mergeCandList sendo limitado ao número máximo de candidatos à mesclagem MaxNumMergeCand e, em seguida, registrado na lista de candidatos à mesclagem mergeCandList.
[00190] Subsequentemente, a unidade de derivação de candidato à mesclagem média 344 e a unidade de derivação de candidato à mesclagem média 444 derivam um candidato à mesclagem média a partir da lista de candidatos à mesclagem mergeCandList e adiciona o candidato à mesclagem média derivado à lista de candidatos à mesclagem mergeCandList (Etapa S404 na Figura 21).
[00191] Em um caso onde o número de candidatos à mesclagem numCurrMergeCand registrados na lista de candidatos à mesclagem mergeCandList é menor do que o número máximo de candidatos à mesclagem MaxNumMergeCand, o candidato à mesclagem média é derivado com o número de candidatos à mesclagem numCurrMergeCand registrados na lista de candidatos à mesclagem mergeCandList sendo limitado para o número máximo de candidatos à mesclagem MaxNumMergeCand e, em seguida, registrado na lista de candidatos à mesclagem mergeCandList.
[00192] No presente documento, o candidato à mesclagem média é um novo candidato à mesclagem que inclui um vetor de movimento obtido pela média dos vetores de movimento do primeiro candidato à mesclagem e do segundo candidato à mesclagem registrados na lista de candidatos à mesclagem mergeCandList para cada uma da previsão L0 e previsão L1.
[00193] Subsequentemente, no repositor de candidato à mesclagem 346 e no repositor de candidato à mesclagem446, em um caso onde o número de candidatos à mesclagem numCurrMergeCand registrados na lista de candidatos à mesclagem mergeCandList é menor do que o número máximo de candidatos à mesclagem MaxNumMergeCand, um candidato à mesclagem adicional é derivado com o número de candidatos à mesclagem numCurrMergeCand registrados na lista de candidatos à mesclagem mergeCandList sendo limitado ao número máximo de candidatos à mesclagem MaxNumMergeCand e, então, registrados na lista de candidatos à mesclagem mergeCandList (Etapa S405 na Figura 21). Na fatia P, um candidato à 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 à mesclagem MaxNumMergeCand como o limite máximo. Na fatia B, um candidato à 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 à mesclagem é diferente do índice de referência que já foi adicionado.
[00194] Subsequentemente, o seletor de candidatos à mesclagem 347 e o seletor de candidatos à mesclagem 447 selecionam um candidato à mesclagem dentre os candidatos à mesclagem registrados na lista de candidatos à mesclagem mergeCandList. O seletor de candidatos à mesclagem 347 no lado da codificação calcula a quantidade de código e a quantidade de distorção e, assim, seleciona um candidato à mesclagem e, em seguida, fornece um índice de mesclagem que indica o candidato à mesclagem selecionado e informação sobre interprevisão do candidato à mesclagem para a unidade de previsão de compensação de movimento 306 por meio do determinador de modo de interprevisão 305. Em contraste, o seletor de candidatos à mesclagem 447 no lado de decodificação seleciona um candidato à mesclagem com base no índice de mesclagem decodificado e fornece o candidato à mesclagem selecionado para a unidade de previsão de compensação de movimento 406.
Atualizando a Lista de Previsores de Vetor de Movimento Candidatos com Base em Histórico
[00195] Em seguida, um método de inicialização e atualização da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList fornecida na memória de armazenamento de informação sobre codificação 111 no lado da codificação e na memória de armazenamento de informação sobre codificação 205 no lado de decodificação será descrito em detalhes. A Figura 26 é um fluxograma que ilustra o procedimento de processamento de inicialização/atualização de lista de previsores de vetor de movimento com base em histórico candidatos.
[00196] Na presente modalidade, a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é atualizada na memória de armazenamento de informação sobre codificação 111 e na memória de armazenamento de informação sobre codificação 205. Alternativamente, uma unidade de atualização de lista de previsores de vetor de movimento com base em histórico candidatos pode ser fornecida na unidade de interprevisão 102 e na unidade de interprevisão 203 para atualizar a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList.
[00197] As configurações iniciais da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList são executadas no início da fatia. No lado da codificação, a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é atualizada em um caso onde o modo 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 previsores de vetor de movimento com base em histórico candidatos HmvpCandList é atualizada em um caso onde a informação sobre previsão decodificada pela unidade de decodificação de sequências de bits 201 é o modo previsor de vetor de movimento normal ou o modo de mesclagem normal.
[00198] A informação sobre interprevisão usada no momento de executar a interprevisão no modo previsor de vetor de movimento normal ou no modo de mesclagem normal deve ser registrada na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList como uma informação sobre interprevisão de candidato hMvpCand. A informação sobre interprevisão de candidato hMvpCand inclui o índice de referência refIdxL0 de L0 e o índice de referência refIdxL1 de L1, o sinalizador de previsão L0 predFlagL0 que indica se a previsão L0 deve ser executada, o sinalizador de previsão L1 predFlagL1 que indica se a previsão L1 deve ser executada, o vetor de movimento mvL0 de L0 e o vetor de movimento mvL1 de L1.
[00199] Em um caso onde há informação sobre interprevisão que tem o mesmo valor que a informação sobre interprevisão de candidato hMvpCand entre os elementos (isto é, informação sobre interprevisão) registrada na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList fornecida na memória de armazenamento de informação sobre codificação 111 no lado da codificação e na memória de armazenamento de informação sobre codificação 205 no lado da decodificação, o elemento será removido da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList. Em contraste, em um caso onde não há informação sobre interprevisão que tem o mesmo valor que a informação sobre interprevisão de candidato hMvpCand, o elemento principal da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList será removido e a informação sobre interprevisão de candidato hMvpCand será adicionado ao final da lista de previsores de vetor de movimento com base em histórico candidatos, HmvpCandList.
[00200] O número de elementos da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList fornecida na memória de armazenamento de informação sobre codificação 111 no lado da codificação e na memória de armazenamento de informação sobre codificação 205 no lado de decodificação da presente invenção é definido como seis.
[00201] Primeiro, a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é inicializada em unidades de fatias (Etapa S2101 na Figura 26). Todos os elementos da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList são esvaziados no início da fatia e o número NumHmvpCand (número atual de candidatos) de previsores de vetor de movimento com base em histórico candidatos registrados na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é definido como 0.
[00202] Embora a inicialização da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList deva ser executada em unidades de fatias (primeiro bloco de codificação de uma fatia), a inicialização pode ser executada em unidades de imagens, blocos ou linhas de blocos de árvore.
[00203] Subsequentemente, o seguinte processo de atualização da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é repetidamente executado para cada um dos blocos de codificação na fatia (Etapas S2102 à S2107 na Figura 26).
[00204] Primeiro, as configurações iniciais são executadas em unidades de blocos de codificação. Um sinalizador "identicalCandExist" que indica se há um candidato idêntico é definido com um valor de FALSO (falso), um índice de alvo de remoção "removeIdx" que indica que a remoção do alvo candidato, é definido como 0 (Etapa S2103 na Figura 26).
[00205] É determinado se há uma informação sobre interprevisão de candidato hMvpCand a ser registrada (Etapa S2104 na Figura 26). Em um caso onde o determinador de método de previsão 105 no lado da codificação determina o modo previsor de vetor de movimento normal ou o modo de mesclagem normal ou onde a unidade de decodificação de sequências de bits 201 no lado de decodificação executa a decodificação como o modo previsor de vetor de movimento normal ou o modo de mesclagem normal, a informação sobre interprevisão correspondente é definida como uma informação sobre interprevisão de candidato hMvpCand a ser registrada. Em um caso onde o determinador de método de previsão 105 no lado da codificação determina o modo de intraprevisão, o modo previsor de vetor de movimento de sub-bloco ou o modo de mesclagem de sub- bloco ou em um caso onde a unidade de decodificação de sequências de bits 201 no lado de decodificação executa a decodificação como o modo de intraprevisão, o modo previsor de vetor de movimento de sub-bloco ou o modo de mesclagem de sub-bloco, o processo de atualização da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList não será executado e não haverá nenhuma informação sobre interprevisão de candidato hMvpCand a ser registrada. Em um caso onde não há nenhuma informação sobre interprevisão de candidato hMvpCand a ser registrada, as Etapas S2105 à S2106 serão ignoradas (Etapa S2104 na Figura 26: NÃO). Em um caso onde há uma informação sobre interprevisão de candidato hMvpCand a ser registrada, o processo da Etapa S2105 e subsequentes será executado (Etapa S2104 na Figura 26: SIM).
[00206] Subsequentemente, é determinado se os elementos individuais da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList incluem um elemento (informação sobre interprevisão) que tem o mesmo valor que a informação sobre interprevisão de candidato hMvpCand a ser registrada, isto é, se há um elemento idêntico (Etapa S2105 na Figura 26). A Figura 27 é um fluxograma do procedimento de processamento de confirmação de elemento idêntico. Em um caso onde o valor do número de previsores de vetor de movimento com base em histórico candidatos NumHmvpCand é 0 (Etapa S2121 na Figura 27: NÃO), a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList está vazia e não há um candidato idêntico. Consequentemente, as Etapas S2122 à S2125 na Figura 27 serão ignoradas, terminando o procedimento de processamento de confirmação de elemento idêntico. Em um caso onde o valor do número de previsores de vetor de movimento com base em histórico candidatos NumHmvpCand é maior do 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 com base em histórico hMvpIdx de 0 a NumHmvpCand-1 (Etapas S2122 à S2125 na Figura 27). Primeiro, é feita uma comparação se o hMvpIdx-ésimo elemento HmvpCandList [hMvpIdx] contado a partir de 0 na lista de previsores de vetor de movimento com base em histórico candidatos é idêntico à informação sobre interprevisão de candidato hMvpCand (Etapa S2123 na Figura 27). Em um caso onde eles são idênticos (Etapa S2123 na Figura 27: SIM), o sinalizador identityCandExist, o qual indica se há um candidato idêntico, é definido para um valor de VERDADEIRO e o índice do alvo de remoção removeIdx, o qual indica a posição do elemento a ser removido, é definido como um valor atual do índice de previsor de vetor de movimento com base em histórico hMvpIdx e o processamento de confirmação de elemento idêntico será concluído. No caso onde eles não são idênticos (Etapa S2123 na Figura 27: NÃO), hMvpIdx é incrementado em um. Em um caso onde o índice de previsor de vetor de movimento com base em histórico hMvpIdx é menor do que ou igual a NumHmvpCand-1, o processamento da Etapa S2123 e subsequentes são executados.
[00207] Voltando ao fluxograma da Figura 26, o processo de deslocamento e adição de elementos da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é executado (Etapa S2106 na Figura 26). A Figura 28 é um fluxograma do procedimento de processamento de deslocamento/adição de elemento da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList na Etapa S2106 na Figura 26. Primeiro, é determinado se deve adicionar um novo elemento após remoção do elemento armazenado na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList ou adicionar um novo elemento sem remover o elemento. Especificamente, é feita uma comparação para saber se o sinalizador IdentityCandExist que indica se há um candidato idêntico é VERDADEIRO ou se NumHmvpCand é 6 (Etapa S2141 na Figura 28). Em um caso onde uma das condições de que o sinalizador authenticCandExist que indica se há um candidato idêntico é VERDADEIRO ou que o número atual de candidatos NumHmvpCand é 6 é satisfeita (Etapa S2141 na Figura 28: SIM), o elemento armazenado na lista de previsores de vetor de movimento com base em histórico candidatos em HmvpCandList é removido e, subsequentemente, um novo elemento será adicionado. Um valor inicial de índice i é definido para um valor de removeIdx+1. O processo de deslocamento de elemento da Etapa S2143 é repetido a partir deste valor inicial para NumHmvpCand (Etapas S2142 à S2144 na Figura 28). Ao copiar os elementos de HmvpCandList[i] para HmvpCandList[i-1], os elementos são deslocados para a frente (Etapa S2143 na Figura 28) e i é incrementado em um (Etapas S2142 à S2144 na Figura 28). Subsequentemente, a informação sobre interprevisão de candidato hMvpCand é adicionada ao (NumHmvpCand-1)-ésimo elemento HmvpCandList [NumHmvpCand- 1] contando a partir de 0 que corresponde ao final da lista de previsores de vetor de movimento com base em histórico candidatos (Etapa S2145 na Figura 28) e o processo de deslocamento/adição de elementos na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList será concluído. Em contraste, em um caso onde nenhuma das condições de que o sinalizador authenticCandExist que indica se há um candidato idêntico é VERDADEIRO e que NumHmvpCand é 6 é satisfeita (Etapa S2141 na Figura 28: NÃO), a informação sobre interprevisão de candidato hMvpCand será adicionada ao final da lista de previsores de vetor de movimento com base em histórico candidatos sem remover o elemento armazenado na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList (Etapa S2146 na Figura 28). No presente documento, o final da lista de previsores de vetor de movimento com base em histórico candidatos é o NumHmvpCand-ésimo elemento HmvpCandList [NumHmvpCand] contado a partir de 0. Além disso, NumHmvpCand é incrementado em um e o processo de adição e deslocamento de elementos da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é concluído.
[00208] A Figura 31 é uma vista que ilustra um exemplo de um processo de atualização da lista de previsores de vetor de movimento com base em histórico candidatos. Em um caso onde um novo elemento deve ser adicionado à lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList em que seis elementos (informação sobre interprevisão) já foram registrados, a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList é comparada com a nova informação sobre interprevisão na ordem a partir do elemento principal (Figura 31A). Quando o novo elemento tem o mesmo valor que o terceiro elemento HMVP2 a partir do início da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList, o elemento HMVP2 é removido da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList e os elementos HMVP3 a HMVP5 são deslocados (copiados) um por um para a frente e um novo elemento é adicionado ao final da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList (Figura 31B) para concluir a atualização da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList ( Figura 31C).
Processo de Derivação de Previsores de Vetor de Movimento com Base em Histórico Candidatos
[00209] Em seguida, um método para derivar um previsor de vetor de movimento candidato com base em histórico a partir da lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList será descrito em detalhes. Isto corresponde a um procedimento de processamento da Etapa S304 na Figura 20 em relação ao processamento em comum executado pela unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 323 da unidade de derivação de modo previsor de vetor de movimento normal 301 no lado da codificação e a unidade de derivação de previsores de vetor de movimento com base em histórico candidatos 423 da unidade de derivação de modo 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 previsores de vetor de movimento com base em histórico candidatos.
[00210] Em um caso onde o número atual de previsores de vetor de movimento candidatos numCurrMvpCand é maior do que ou igual ao número máximo de elementos da lista de previsores de vetor de movimento candidatos mvpListLX (no presente documento, 2) ou o número de previsores de vetor de movimento com base em histórico candidatos NumHmvpCand é 0 (NÃO na Etapa S2201 na Figura 29), o processo das Etapas S2202 à S2209 da Figura 29 será omitido e o procedimento de processamento de derivação de previsor de vetor de movimento com base em histórico candidato será concluído. Em um caso onde o número atual numCurrMvpCand de previsores de vetor de movimento candidatos é menor do que 2, o qual é o número máximo de elementos da lista de previsores de vetor de movimento candidatos mvpListLX e em um caso onde o valor do número NumHmvpCand do previsor de vetor de movimento com base em histórico candidato é maior do que 0 (SIM na Etapa S2201 na Figura 29), o processo das Etapas S2202 à S2209 na Figura 29 será executado.
[00211] Subsequentemente, o processo das Etapas S2203 à S2208 na Figura 29 é repetido até que o índice i seja a partir de 1 a um valor menor do que 4 ou o número de previsores de vetor de movimento com base em histórico candidatos numCheckedHMVPCand (Etapas S2202 à S2209 na Figura 29). Em um caso onde o número atual de previsores de vetor de movimento candidatos numCurrMvpCand é maior do que ou igual a 2, o qual é o número máximo de elementos da lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S2203 na Figura 29: NÃO), o processo das Etapas S2204 à S2209 na Figura 29 será omitido e o procedimento de processamento de derivação do previsor de vetor de movimento com base em histórico candidato será concluído. Em um caso onde o número atual de previsores de vetor de movimento candidatos numCurrMvpCand é menor do que 2, o qual é o número máximo de elementos na lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S2203 na Figura 29: SIM), o processo na Etapa S2204 e subsequentes na Figura 29 serão executados.
[00212] Subsequentemente, o processo nas Etapas S2205 à S2207 é executado para os casos onde Y é 0 e Y é 1 (L0 e L1) (Etapas S2204 à S2208 na Figura 29). Em um caso onde o número atual de previsores de vetor de movimento candidatos numCurrMvpCand é maior do que ou igual a 2, o qual é o número máximo de elementos da lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S2205 na Figura 29: NÃO), o processo das Etapas S2206 à S2209 na Figura 29 será omitido e o procedimento de processamento de derivação do previsor de vetor de movimento com base em histórico candidato será concluído. Em um caso onde o número atual de previsores de vetor de movimento candidatos numCurrMvpCand é menor do que 2, o qual é o número máximo de elementos na lista de previsores de vetor de movimento candidatos mvpListLX (Etapa S2205 na Figura 29: SIM), o processo na Etapa S2206 e subsequentes na Figura 29 serão executados.
[00213] Em seguida, em um caso onde a lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList inclui um elemento que tem o mesmo índice de referência que o índice de referência refIdxLX do vetor de movimento alvo de codificação/decodificação e que é diferente de qualquer elemento da lista de previsores de vetor de movimento mvpListLX (etapa S2206 na Figura 29: SIM), um vetor de movimento de LY do previsor de vetor de movimento com base em histórico candidato HmvpCandList [NumHmvpCand-i] é adicionado ao numCurrMvpCand-ésimo elemento mvpListLX[numCurrMvpCand] contando a partir de 0 na lista de previsores de vetor de movimento candidatos (etapa S2207 na Figura 29) e o número atual de previsores de vetor de movimento candidatos numCurrMvpCand é incrementado em um. Em um caso onde não há nenhum elemento na lista de previsores de vetor de movimento com base em histórico candidatos HmvpCandList que tem o mesmo índice de referência que o índice de referência refIdxLX do vetor de movimento alvo de codificação/decodificação e é diferente de qualquer elemento da lista de previsores de vetor de movimento mvpListLX (etapa S2206 na Figura 29: NÃO), o processo adicional na etapa S2207 será ignorado.
[00214] O processo das Etapas S2205 à S2207 na Figura 29 é executado para L0 e L1 (Etapas S2204 à S2208 na Figura 29). O índice i é incrementado em um e, quando o índice i é menor do que ou igual a qualquer valor menor do que 4 ou o número de previsores de vetor de movimento com base em histórico candidatos NumHmvpCand, o processo da Etapa S2203 e subsequentes serão executados novamente (Etapas S2202 à S2209 na Figura 29).
Processo de Derivação de Candidato à Mesclagem com Base em Histórico
[00215] A seguir está uma descrição detalhada de um método para derivar um candidato à mesclagem com base em histórico a partir da lista de candidatos à mesclagem com base em histórico HmvpCandList, um procedimento de processamento da Etapa S404 na Figura 21, o qual é um processo em comum da unidade de derivação de candidato à mesclagem com base em histórico 345 da unidade de derivação de modo de mesclagem normal 302 no lado da codificação e da unidade de derivação de candidato à mesclagem com base em histórico 445 da unidade de derivação de modo de mesclagem normal 402 no lado de decodificação. A Figura 30 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato à mesclagem com base em histórico.
[00216] Primeiro, um processo de inicialização é executado (Etapa S2301 na Figura 30). Cada um dos elementos a partir de 0 a (numCurrMergeCand-1) de isPruned[i] é definido com o valor FALSO e a variável numOrigMergeCand é definida com o número numCurrMergeCand do número de elementos registrados na lista de candidatos à mesclagem atual.
[00217] Subsequentemente, o valor inicial do índice hMvpIdx é definido como 1 e o processo adicional da Etapa S2303 à Etapa S2310 na Figura 30 é repetido a partir deste valor inicial para NumHmvpCand (Etapas S2302 à S2311 na Figura 30). Quando o número numCurrMergeCand dos elementos registrados na lista de candidatos à mesclagem atual não é menor do que ou igual a (o número máximo de candidatos à mesclagem MaxNumMergeCand-1), os candidatos à mesclagem foram adicionados a todos os elementos na lista de candidatos à mesclagem. Consequentemente, o processo de derivação do candidato à mesclagem com base em histórico será concluído (NÃO na Etapa S2303 na Figura 30). No caso onde o número numCurrMergeCand dos elementos registrados na lista de candidatos à mesclagem atual é menor do que ou igual a (o número máximo de candidatos à mesclagem MaxNumMergeCand-1), o processo da Etapa S2304 e subsequentes serão executados. sameMotion é definido para um valor de FALSO (Etapa S2304 na Figura 30). Subsequentemente, o valor inicial do índice i é definido como 0 e o processo das Etapas S2306 e S2307 na Figura 30 é executado a partir deste valor inicial para numOrigMergeCand-1 (Etapas S2305 à S2308 na Figura 30). É feita uma comparação para verificar se o (NumHmvpCand-hMvpIdx)-ésimo elemento HmvpCandList [NumHmvpCand-hMvpIdx] contando a partir de 0 na lista de candidatos de previsão de vetor de movimento com base em histórico é o mesmo valor que o i-ésimo elemento mergeCandList[i] contando a partir de 0 na lista de candidatos à mesclagem (Etapa S2306 na Figura 30).
[00218] Os candidatos à mesclagem são determinados como tendo o mesmo valor em um caso onde todos os elementos constituintes (modo de interprevisão, índice de referência, vetor de movimento) do candidato à mesclagem têm o mesmo valor. Em um caso onde os candidatos à mesclagem têm o mesmo valor e isPruned[i] é definido como FALSO (SIM na Etapa S2306 na Figura 30), tanto sameMotion como isPruned[i] serão definidos como VERDADEIRO (Etapa S2307 na Figura 30). No caso onde 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 conclusão do processamento de repetição da Etapa S2305 à Etapa S2308 na Figura 30, é feita uma comparação se sameMotion é FALSO (Etapa S2309 na Figura 30). Em um caso onde sameMotion é FALSO (SIM na Etapa S2309 na Figura 30), isto é, o (NumHmvpCand- hMvpIdx)-ésimo elemento HmvpCandList [NumHmvpCand - hMvpIdx] contando a partir de 0 na lista de previsores de vetor de movimento com base em histórico candidatos não existe em mergeCandList e, portanto, o elemento HmvpCandList [NumHmvpCand - hMvpIdx], o qual é (NumHmvpCand - hMvpIdx)-ésimo elemento contado a partir de 0 da lista de previsores de vetor de movimento com base em histórico candidatos, é adicionado a mergeCandList[numCurrMergeCand], o qual é o numCurrMergeCand-ésimo elemento na lista de candidatos à mesclagem e numCurrMergeCand é incrementado em um (Etapa S2310 na Figura 30). O índice hMvpIdx é incrementado em um (Etapa S2302 na Figura 30) e o processo das Etapas S2302 à S2311 na Figura 30 é repetido.
[00219] Após conclusão da confirmação de todos os elementos na lista de previsores de vetor de movimento com base em histórico candidatos ou a conclusão da adição de candidatos à mesclagem a todos os elementos na lista de candidatos à mesclagem, o processo de derivação de candidatos à mesclagem com base em histórico é concluído.
Processo de Derivação de Candidato à Mesclagem Média
[00220] O que segue é uma descrição detalhada de um método para derivar um candidato à mesclagem média, um procedimento de processamento da Etapa S403 na Figura 21, o qual é um processo em comum da unidade de derivação de candidato à mesclagem média 344 da unidade de derivação de modo de mesclagem normal 302 no lado de codificação e da unidade de derivação de candidato à mesclagem média 444 da unidade de derivação de modo de mesclagem normal 402 no lado de decodificação. A Figura 38 é um fluxograma que ilustra um procedimento de processamento de derivação de candidato à mesclagem média.
[00221] Primeiro, um processo de inicialização é executado (Etapa S1301 na Figura 38). A variável numOrigMergeCand é definida para o número de elementos numCurrMergeCand registrados na lista de candidatos à mesclagem atual.
[00222] Subsequentemente, é executada uma varredura sequencialmente a partir de cima da lista de candidatos à mesclagem para determinar duas partes de informação sobre movimento. O índice i que indica a primeira informação sobre movimento é definido de modo que o índice i = 0 e o índice j que indica a segunda informação sobre movimento é definido de modo que o índice j = 1 (Etapas S1302 à S1303 na Figura 38). Quando o número numCurrMergeCand dos elementos registrados na lista de candidatos à mesclagem atual não é menor do que ou igual a (o número máximo de candidatos à mesclagem MaxNumMergeCand-1), os candidatos à mesclagem foram adicionados a todos os elementos na lista de candidatos à mesclagem. Consequentemente, o processo de derivação de candidato à mesclagem com base em histórico será concluído (Etapa S1304 na Figura 38). No caso onde o número numCurrMergeCand dos elementos registrados na lista de candidatos à mesclagem atual é menor do que ou igual a (o número máximo de candidatos à mesclagem MaxNumMergeCand-1), o processo da Etapa S1305 e subsequentes serão executados.
[00223] É feita uma determinação se tanto a i-ésima informação sobre movimento mergeCandList[i] da lista de candidatos à mesclagem e a j-ésima informação sobre movimento mergeCandList[j] da lista de candidatos à mesclagem é inválida (Etapa S1305 na Figura 38). Em um caso onde ambos são inválidos, o processo prossegue para o próximo elemento sem derivar um candidato à mesclagem média de mergeCandList[i] ou mergeCandList[j]. Em um caso onde a condição de que mergeCandList[i] e mergeCandList[j] são inválidos não é satisfeita, o seguinte processo é repetido com X definido como 0 e 1 (Etapas S1306 à S1314 na Figura 38).
[00224] É feita uma determinação se a previsão LX de mergeCandList[i] é válida (Etapa S1307 na Figura 38). Em um caso onde a previsão LX de mergeCandList[i] é válida, é feita uma determinação se a previsão LX de mergeCandList[j] é válida (Etapa S1308 na Figura 38). Em um caso onde a previsão LX de mergeCandList[j] é válida, isto é, em um caso onde tanto a previsão LX de mergeCandList[i] e a previsão LX de mergeCandList[j] são válidas, um vetor de movimento de previsão LX obtido ao calcular a média do vetor de movimento de previsão LX de mergeCandList[i] e o vetor de movimento de previsão LX de mergeCandList[j] será derivado e um candidato à mesclagem média de previsão LX que tem um índice de referência de previsão LX de mergeCandList[i] é derivado de modo a ser definido como previsão LX de averageCand e a previsão LX de averageCand será validada (Etapa S1309 na Figura 38). Na Etapa S1308 da Figura 38, em um caso onde a previsão LX de mergeCandList[j] não é válida, isto é, em um caso onde a previsão LX de mergeCandList[i] é válida e a previsão LX de mergeCandList[j] é inválida, um vetor de movimento de previsão LX de mergeCandList[i] e um candidato à mesclagem média de previsão LX que tem um índice de referência será derivado de modo a ser definido como previsão LX de averageCand e a previsão LX de averageCand será validada (Etapa S1310 na Figura 38). Em um caso onde a previsão LX de mergeCandList[i] não é válida na Etapa S1307 da Figura 38, é feita uma determinação se a previsão LX de mergeCandList[j] é válida (Etapa S1311 da Figura 38). Em um caso onde a previsão LX de mergeCandList[j] é válida, ou seja, em um caso onde 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 à mesclagem média de previsão LX que tem um índice de referência será derivado de modo a ser definido como previsão LX de averageCand e a previsão LX de averageCand será validada (Etapa S1312 na Figura 38). Na Etapa S1311 da Figura 38, em um caso onde a previsão LX de mergeCandList[j] não é válida, isto é, em um caso onde a previsão LX de mergeCandList[i] e a previsão LX de mergeCandList[j] são ambas inválidas, a previsão LX de AverageCand será invalidada (Etapa S1312 na Figura 38).
[00225] O candidato à mesclagem média averageCand da previsão L0, previsão de L1 ou previsão de BI construído conforme descrito acima é adicionado ao numCurrMergeCand-ésimo elemento mergeCandList[numCurrMergeCand] da lista de candidatos à mesclagem e numCurrMergeCand é incrementado em um (Etapa S1315 na Figura 38). Isto conclui o processo de derivação de candidato à mesclagem média.
[00226] O candidato à mesclagem média é obtido pela média de cada componente horizontal do vetor de movimento e o componente vertical do vetor de movimento.
Processo de Previsão de Compensação de Movimento
[00227] A unidade de previsão de compensação de movimento 306 adquire a posição e o tamanho de um bloco que está atualmente sendo submetido ao processamento de previsão na codificação. Além disso, a unidade de previsão de compensação de movimento 306 adquire a informação sobre interprevisão a partir do determinador de modo de interprevisão 305. Um índice de referência e um vetor de movimento são derivados a partir da informação sobre 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 alvo de previsão que está sendo submetido ao processamento de previsão pela quantidade do vetor de movimento. O sinal de imagem desta posição após o deslocamento é adquirido e, em seguida, um sinal de previsão é gerado.
[00228] Em um caso onde a previsão é feita a partir de uma imagem de referência de sinal, tal como quando o modo de interprevisão na interprevisão é previsão L0 ou previsão L1, um sinal de previsão adquirido de uma imagem de referência é definido como um sinal de previsão de compensação de movimento. Em um caso onde a previsão é feita a partir de duas imagens de referência, tal como quando o modo de interprevisão é a previsão BI, uma média ponderada de sinais de previsão adquiridos das duas imagens de referência é definida 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 proporção média ponderada na biprevisão é definida como 1:1. Alternativamente, a média ponderada pode usar outra proporção. Por exemplo, a proporção de ponderação pode ser definida de modo que, quanto mais curto o intervalo de imagem entre a imagem alvo de previsão e a imagem de referência, maior será a proporção de ponderação. O cálculo da proporção de ponderação também pode ser executado usando uma tabela de correspondência entre a combinação dos intervalos de imagem e as proporções de ponderação.
[00229] A unidade de previsão de compensação de movimento 406 tem uma função similar à unidade de previsão de compensação de movimento 306 no lado da codificação. A unidade de previsão de compensação de movimento 406 adquire a informação sobre interprevisão a partir da unidade de derivação de modo previsor de vetor de movimento normal 401, a unidade de derivação de modo de mesclagem normal 402, a unidade de derivação de modo previsor de vetor de movimento de sub-bloco 403 e a unidade de derivação de modo de mesclagem de sub-bloco 404 por meio 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 superimpositor de sinal de imagem decodificada 207.
Modo de Interprevisão
[00230] O processo para executar previsão a partir de uma única imagem de referência é definido como uniprevisão. A uniprevisão executa a previsão da previsão L0 ou previsão L1 usando uma das duas imagens de referência registradas nas listas de referência L0 ou L1.
[00231] A Figura 32 ilustra um caso de uniprevisão onde 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 onde 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 executada ao substituir 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).
[00232] O processo para executar previsão a partir de duas imagens de referência é definido como biprevisão. Biprevisão executa previsão, expressa como previsão BI, usando previsão L0 e previsão L1. A Figura 34 ilustra um caso de biprevisão onde 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 onde 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 onde 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.
[00233] Desta forma, é possível usar a previsão sem limitar a relação entre o tipo de previsão L0/L1 e o tempo, de modo que L0 esteja para a direção passada e L1 para a direção futura. Além disso, a biprevisão pode executar cada uma das previsões L0 e L1 usando uma mesma imagem de referência. A determinação se executar a previsão de compensação de movimento em uniprevisão ou biprevisão é feita com base na informação (por exemplo, um sinalizador) que indica se deve ser usada a previsão L0 e se deve ser usada a previsão L1, por exemplo.
Índice de Referência
[00234] Na modalidade da presente invenção, é possível selecionar uma imagem de referência ideal dentre 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. Portanto, 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 com Base no Modo Previsor de Vetor de Movimento Normal
[00235] Conforme ilustrado na unidade de interprevisão 102 no lado da codificação na Figura 16, em um caso onde a informação sobre interprevisão através da unidade de derivação de modo previsor de vetor de movimento normal 301 foi selecionada no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire esta informação sobre 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 um bloco alvo e, assim, 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 de método de previsão 105.
[00236] Da mesma forma, conforme ilustrado na unidade de interprevisão 203 no lado de decodificação na Figura 22, em um caso onde o comutador 408 está conectado à unidade de derivação de modo 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 a informação sobre interprevisão através da unidade de derivação de modo previsor de vetor de movimento normal 401 e deriva um modo de interprevisão, um índice de referência e um vetor de movimento de um bloco alvo e, assim, 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 superimpositor de sinal de imagem decodificada 207.
Processo de Compensação de Movimento com Base no Modo de Mesclagem Normal
[00237] Conforme ilustrado na unidade de interprevisão 102 no lado da codificação na Figura 16, em um caso onde a informação sobre interprevisão através da unidade de derivação de modo de mesclagem normal 302 foi selecionada no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire esta informação sobre 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 um bloco alvo, deste modo, gerando 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 de método de previsão 105.
[00238] Da mesma forma, conforme ilustrado na unidade de interprevisão 203 no lado de decodificação na Figura 22, em um caso onde 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 compensação de movimento 406 adquire a informação através da 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 um bloco alvo, deste modo, gerando um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao superimpositor de sinal de imagem decodificada 207.
Processo de Compensação de Movimento com Base no Modo Previsor de Vetor de Movimento de Sub-Bloco
[00239] Conforme ilustrado na unidade de interprevisão 102 no lado da codificação na Figura 16, em um caso onde a informação sobre interprevisão através da unidade de derivação de modo previsor de vetor de movimento de sub-bloco 303 foi selecionada no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire esta informação sobre 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 um bloco alvo, deste modo, gerando 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 de método de previsão 105.
[00240] Da mesma forma, conforme ilustrado na unidade de interprevisão 203 no lado de decodificação na Figura 22, em um caso onde o comutador 408 está conectado à unidade de derivação de modo 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 a informação sobre interprevisão através da unidade de derivação de modo 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, deste modo, gerando um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao superimpositor de sinal de imagem decodificada 207.
Processo de Compensação de Movimento com Base no Modo de Mesclagem de Sub-Bloco
[00241] Conforme ilustrado na unidade de interprevisão 102 no lado da codificação na Figura 16, em um caso onde a informação sobre interprevisão através da unidade de derivação de modo de mesclagem de sub-bloco 304 foi selecionada no determinador de modo de interprevisão 305, a unidade de previsão de compensação de movimento 306 adquire esta informação sobre 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 um bloco alvo, deste modo, gerando 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 de método de previsão 105.
[00242] Da mesma forma, conforme ilustrado na unidade de interprevisão 203 no lado de decodificação na Figura 22, em um caso onde o comutador 408 está conectado à 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 a informação sobre interprevisão através da 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, deste modo, gerando um sinal de previsão de compensação de movimento. O sinal de previsão de compensação de movimento construído é fornecido ao superimpositor de sinal de imagem decodificada 207.
Processo de Compensação de Movimento com Base na Previsão de Transformação Afim
[00243] No modo previsor de vetor de movimento normal e no modo de mesclagem normal, a compensação de movimento usando um modelo afim pode ser empregada com base nos sinalizadores a seguir. Os sinalizadores a seguir são refletidos nos sinalizadores a seguir com base nas condições de interprevisão determinadas pelo determinador do modo de interprevisão 305 no processo de codificação e são codificados no fluxo de bits. No processo de decodificação, é especificado se a compensação de movimento deve ser executada usando o modelo afim com base nos seguintes sinalizadores no fluxo de bits.
[00244] sps_affine_enabled_flag indica se a compensação de movimento usando um modelo afim pode ser usada na interprevisão. Quando sps_affine_enabled_flag é 0, o processo é suprimido de modo a não executar a compensação de movimento através do modelo afim em unidades de sequência. Além disso, inter_affine_flag e cu_affine_type_flag não são transmitidos na sintaxe do bloco de codificação (CU) de uma sequência de vídeo de codificação. Quando sps_affine_enabled_flag é 1, a compensação de movimento através de um modelo afim pode ser usada na sequência de vídeo de codificação.
[00245] sps_affine_type_flag indica se a compensação de movimento usando um modelo afim de 6 parâmetros pode ser usada na interprevisão. Quando sps_affine_type_flag é 0, o processo é suprimido de modo a não executar a compensação de movimento usando 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 codificação. Quando sps_affine_type_flag é 1, a compensação de movimento com base em um modelo afim de 6 parâmetros pode ser usada em uma sequência de vídeo de codificação. No caso onde sps_affine_type_flag não existe, deve ser 0.
[00246] Em um caso de decodificação de uma fatia P ou B, quando inter_affine_flag é 1 no CU atual, uma compensação de movimento que usa um modelo afim é empregada a fim de gerar um sinal de previsão de compensação de movimento do CU atual. Quando inter_affine_flag é 0, o modelo afim não é usado para o CU atual. No caso onde inter_affine_flag não existe, deve ser 0.
[00247] Em um caso de decodificação de uma fatia P ou B, quando cu_affine_type_flag é 1 no CU atual, uma compensação de movimento que usa um modelo afim de 6 parâmetros é empregada a fim de gerar um sinal de previsão de compensação de movimento do CU atual. Quando cu_affine_type_flag é 0, a compensação de movimento usando um modelo afim de quatro parâmetros é empregada para gerar um sinal de previsão de compensação de movimento do CU que está sendo atualmente processado.
[00248] 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 usando o índice de referência e o vetor de movimento a ser processado em unidades de sub-bloco.
[00249] O modelo afim de quatro parâmetros é um modo no qual um vetor de movimento de um sub-bloco é derivado a partir 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 é executada em unidades de sub-blocos.
Cópia Intrabloco (IBC)
[00250] Uma região de referência válida da cópia intrabloco será descrita com referência à Figura 39. A Figura 39A é um caso exemplificativo onde uma região de referência válida é determinada assumindo a unidade de bloco de árvore de codificação como um bloco de cópia intrabloco padrão. Os blocos 500, 501, 502, 503 e 504 na Figura 39A são blocos da árvore de codificação e o bloco 504 entre estes é um bloco de árvore de codificação alvo. Um bloco 505 é um bloco de codificação alvo. Os blocos da árvore de codificação são processados na ordem de 500, 501, 502, 503 e 504. Neste caso, os três blocos da árvore de codificação 501, 502 e 503 processados imediatamente antes do bloco de árvore de codificação 504 que inclui o bloco de codificação alvo 505 são definidas como regiões de referência válidas do bloco de codificação alvo 505. O bloco de árvore de codificação processado antes do bloco de árvore de codificação 501 e regiões incluídas no bloco de árvore de codificação 504 que incluem o bloco de codificação alvo 505 são todas definidas para regiões de referência inválidas independentemente do processamento ser concluído antes do bloco de codificação alvo 505.
[00251] A Figura 39B é um caso exemplificativo onde uma região de referência válida é determinada assumindo uma unidade obtida através de divisão em quadrantes da unidade de bloco de árvore de codificação como um bloco de cópia intrabloco padrão. Na Figura 39B, os blocos 515 e 516 são blocos da árvore de codificação e o bloco 516 é um bloco de árvore de codificação alvo. O bloco de árvore de codificação 515 é dividido em 506, 507, 508 e 509 e o bloco de árvore de codificação 516 é dividido nos blocos 510, 511, 512 e 513. O número de referência 514 é um bloco de codificação alvo. Os blocos de cópia intrabloco padrão são processados na ordem de 506, 507, 508, 509, 510, 511, 512 e 513. Neste caso, os três blocos de cópia intrabloco padrão 508, 509, 510 processados imediatamente antes do bloco de cópia de bloco padrão 511 que inclui o bloco de codificação alvo 514 são definidos como regiões de referência válidas do bloco de codificação alvo 514. O bloco de árvore de codificação processado antes do bloco de cópia intrabloco padrão 508 e todas as regiões incluídas no bloco de cópia intrabloco padrão 511 que inclui o bloco de codificação alvo 514 são todas configuradas como regiões de referência inválidas, independentemente do processamento ser concluído antes do bloco de codificação alvo 514.
Previsão de Cópia Intrabloco : Lado da Codificação
[00252] Um procedimento de processamento de previsão de cópia intrabloco no lado da codificação será descrito com referência à Figura 44.
[00253] Primeiro, um detector de vetor de bloco 375 detecta um vetor de bloco mvL (Etapa S4500 na Figura 44). Subsequentemente, uma unidade de derivação de vetor de bloco espacial IBC candidato 371, uma unidade de derivação de previsor de vetor de bloco com base em histórico IBC candidato 372, um repositor de previsor de vetor de bloco IBC candidato 373, um seletor de previsor de vetor de bloco IBC candidato 376 e um subtrator de vetor de bloco 378 calculam uma diferença de vetor de bloco do vetor de bloco usado em um modo previsor de vetor de bloco (Etapas S4501 à S4503 na Figura 44).
[00254] Previsores de vetor de bloco candidatos são calculados para construir uma lista de vetores de bloco candidatos mvpList (Etapa S4501 na Figura 44). Em uma unidade de previsão de cópia intrabloco 352, a unidade de derivação de vetor de bloco espacial IBC candidato 371, a unidade de derivação de vetor de bloco com base em histórico IBC candidato 372 e o repositor de previsor de vetor de bloco IBC candidato 373 derivam uma pluralidade de candidatos e constroem uma lista de previsores de vetor de bloco candidatos mvpList. O procedimento de processamento detalhado da Etapa S4501 na Figura 44 será descrito abaixo usando o fluxograma na Figura 47.
[00255] Subsequentemente, o seletor de previsor de vetor de bloco IBC candidato 376 seleciona um previsor de vetor de bloco mvpL a partir de uma lista de previsores de vetor de bloco mvpListL (Etapa S4502 na Figura 44). A diferença do vetor de bloco, a qual é uma diferença entre o vetor de bloco mvL e cada um dos previsores de vetor de bloco candidatos mvpListL[i] armazenados na lista de previsores de vetor de bloco candidatos mvpListL, é calculada. Uma quantidade de código no momento da codificação destas diferenças de vetor de bloco é calculada para cada um dos elementos da lista de previsores de vetor de bloco candidatos mvpListL. Subsequentemente, o previsor de vetor de bloco candidato mvpListL[i] que minimiza a quantidade de código para cada um dos previsores de vetor de bloco candidatos entre os elementos individuais registrados na lista de previsores de vetor de bloco candidatos mvpListL é selecionado como o previsor de vetor de bloco mvpL e seu índice i é obtido. Em um caso onde há uma pluralidade de previsores de vetor de bloco candidatos que têm a quantidade mínima de código gerado na lista de previsores de vetor de bloco candidatos mvpListL, o previsor de vetor de bloco candidato mvpListL[i] que tem o índice i na lista de previsores de vetor de bloco candidatos mvpListL representado por um pequeno número é selecionado como o previsor de vetor de bloco ideal mvpL e seu índice i é obtido.
[00256] Subsequentemente, o subtrator de vetor de bloco 378 subtrai o previsor de vetor de bloco selecionado mvpL do vetor de bloco mvL e, assim, calcula uma diferença de vetor de bloco mvdL como: mvdL = mvL - mvpL (Etapa S4503 na Figura 44).
Previsão de Cópia Intrabloco: Lado da Decodificação
[00257] Em seguida, um procedimento de processamento de modo previsor de vetor de bloco normal no lado da decodificação será descrito com referência à Figura 45. No lado da decodificação, uma unidade de derivação de previsor de vetor de bloco espacial IBC candidato 471, uma unidade de derivação de vetor de bloco com base em histórico IBC candidato 472 e um repositor de previsor de vetor de bloco IBC 473 calculam um vetor de bloco usado no modo previsor de vetor de bloco (Etapa S4600 à S4602 na Figura 45). Especificamente, a lista de previsores de vetor de bloco candidatos mvpListL é calculada, o previsor de vetor de bloco mvpL é selecionado e, em seguida, o vetor de bloco mvL é calculado.
[00258] Previsores de vetor de bloco candidatos são calculados para construir uma lista de previsores de vetor de bloco candidatos mvpListL (Etapa S4601 na Figura 45). Em uma unidade de previsão de cópia intrabloco 362, a unidade de derivação de vetor de bloco espacial IBC candidato 471, a unidade de derivação de vetor de bloco com base em histórico IBC candidato 472 e o repositor de vetor de bloco IBC 473 calculam uma pluralidade de previsores de vetor de bloco candidatos e constroem um lista de previsores de vetor de bloco candidatos mvpListL. A descrição do procedimento de processamento detalhado da Etapa S4601 na Figura 45 é omitida. Subsequentemente, o seletor de previsor de vetor de bloco IBC 476 extrai um previsor de vetor de bloco candidato mvpListL[mvpIdxL] que corresponde ao índice de previsor de vetor de bloco mvpIdxL decodificado e fornecido pela unidade de decodificação de sequências de bits 201 da lista de previsores de vetor de bloco candidatos mvpListL como o previsor de vetor de bloco selecionado mvpL (Etapa S4601 na Figura 45). Subsequentemente, o somador de vetor de bloco 478 adiciona a diferença de vetor de bloco mvdL e o previsor de vetor de bloco mvpL decodificado e fornecido pela unidade de decodificação de sequências de bits 201 e calcula (Etapa S4602 na Figura 45) o vetor de bloco mvL da seguinte forma: mvL = mvpL + mvdL
Modo Previsor de Vetor de Bloco: Método de Previsão de Vetor de Bloco
[00259] A Figura 47 é um fluxograma que ilustra um procedimento de processamento de um processo de derivação de modo de cópia intrabloco de previsão que tem uma função em comum à unidade de previsão de cópia intrabloco 352 do dispositivo de codificação de imagem em movimento e a unidade de previsão de cópia intrabloco 362 do dispositivo de decodificação de imagem em movimento de acordo com a modalidade da presente invenção.
[00260] Cada uma da unidade de previsão de cópia intrabloco 352 e a unidade de previsão de cópia intrabloco 362 inclui uma lista de previsores de vetor de bloco candidatos mvpListL. A lista de previsores de vetor de bloco candidatos mvpListL tem uma estrutura de lista e inclui uma região de armazenamento que armazena, como elementos, um índice de previsor de vetor de bloco que indica uma localização, na lista, de previsores de vetor de bloco candidatos e um previsor de vetor de bloco candidato que corresponde ao índice. O número de índice do previsor de vetor de bloco começa em 0 e os previsores de vetor de bloco candidatos devem ser armazenados na região de armazenamento da lista de previsores de vetor de bloco candidatos mvpListL. Na presente modalidade, é assumido que a lista de previsores de vetor de bloco candidatos mvpListL pode registrar três previsores de vetor de bloco candidatos. Além disso, uma variável numCurrMvpIbcCand, a qual indica o número de previsores de vetor de bloco candidatos registrados na lista de previsores de vetor de bloco candidatos mvpListL, é definida como 0.
[00261] As unidades de derivação do vetor de bloco espacial IBC candidato 371 e 471 derivam um previsor de vetor de bloco candidato a partir do bloco vizinho no lado esquerdo (Etapa S4801 na Figura 47). Neste processo, um sinalizador availableFlagLA, o qual indica se o previsor de vetor de bloco candidato do bloco vizinho (A0 ou A1) no lado esquerdo é utilizável, e um vetor de bloco mvLA são derivados e o mvLA derivado será adicionado à lista de previsores de vetor de bloco candidatos mvpListL. Subsequentemente, as unidades de derivação do vetor de bloco espacial IBC candidato 371 e 471 derivam um previsor de vetor de bloco candidato a partir do bloco vizinho (B0, B1 ou B2) no lado superior (Etapa S4802 da Figura 47). Este processo deriva um sinalizador availableFlagLB, o qual indica se os previsores de vetor de movimento candidatos do bloco vizinho no lado superior são utilizáveis, e um vetor de bloco mvLB. Quando o mvLA e o mvLB não são iguais, o vetor de bloco mvLB será adicionado à lista de previsores de vetor de bloco candidatos mvpListL. Os processos nas Etapas S4801 e S4802 na Figura 47 são fornecidos como um processo em comum, exceto que as posições e os números dos blocos vizinhos de referência são diferentes. Estes processos derivam um sinalizador availableFlagLN, o qual indica se um previsor de vetor de bloco candidato de um bloco de codificação é utilizável, e um vetor de movimento mvLN (N indica A ou B; o mesmo se aplica daqui em diante).
[00262] Subsequentemente, as unidades de derivação de vetor de bloco com base em histórico IBC candidato 372 e 472 adicionam os vetores de bloco com base em histórico candidatos registrados em uma lista de vetores de bloco com base em histórico candidatos HmvpIbcCandList à lista de previsores de vetor de bloco candidatos mvpListL. (Etapa S4803 na Figura 47). Para detalhes do procedimento de processamento de registro da Etapa S4803, basta executar uma operação similar à operação ilustrada no fluxograma da Figura 29, ou seja, a operação em um caso onde o vetor de movimento é substituído por um vetor de bloco, a lista de índices de referência é substituída por L0, a lista de vetores de movimento com base em histórico candidatos HmvpCandList é substituída pela lista de vetores de bloco com base em histórico candidatos HmvpIbcCandList e, portanto, a descrição para as mesmas será omitida.
[00263] Subsequentemente, o repositor de previsor de vetor de bloco IBC 373 e 473 adiciona um vetor de bloco com um valor predeterminado, tal como (0, 0) até que a lista de previsores de vetor de bloco candidatos mvpListL seja satisfeita (S4804 na Figura 47).
Unidade de Derivação de Modo de Cópia Intrabloco de Mesclagem
[00264] A unidade de previsão de cópia intrabloco 352 da Figura 42 inclui a unidade de derivação de vetor de bloco espacial IBC candidato 371, a unidade de derivação de vetor de bloco com base em histórico IBC candidato 372, o repositor de vetor de bloco IBC 373, uma unidade de correção de posição de referência 380, uma referência unidade de correção de limite de região 381, um seletor de candidatos à mesclagem IBC 374 e um determinador de modo de previsão IBC 377.
[00265] A unidade de previsão de cópia intrabloco 362 da Figura 43 inclui a unidade de derivação de vetor de bloco espacial IBC candidato 471, a unidade de derivação de vetor de bloco com base em histórico IBC candidato 472, o repositor de vetor de bloco IBC 473, um seletor de candidatos à mesclagem IBC 474, uma unidade de correção de posição de referência 480, uma unidade de correção de limite de região de referência 481 e uma unidade de cópia de bloco 477.
[00266] A Figura 46 é um fluxograma que ilustra um processo de derivação de modo de cópia intrabloco de mesclagem que tem uma função em comum à unidade de previsão de cópia intrabloco 352 do dispositivo de codificação de imagem em movimento e a unidade de previsão de cópia intrabloco 362 do dispositivo de decodificação de imagem em movimento de acordo com a modalidade da presente invenção.
[00267] A unidade de previsão de cópia intrabloco 352 e a unidade de previsão de cópia intrabloco 362 incluem uma lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList. A lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList tem uma estrutura de lista e inclui: uma região de armazenamento que armazena, como elementos, um índice de mesclagem que indica uma localização dentro de um candidato à mesclagem de cópia intrabloco; e um candidato à mesclagem de cópia intrabloco que corresponde ao índice. O número do índice de mesclagem começa em 0 e o candidato à mesclagem de cópia intrabloco é armazenado na região de armazenamento da lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList. Nos processos subsequentes, o candidato à mesclagem do índice de mesclagem i registrado na lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList será representado por mergeIbcCandList[i]. Na presente modalidade, presume-se que a lista de candidatos à mesclagem mergeCandList pode registrar pelo menos três candidatos à mesclagem de cópia intrabloco. Além disso, uma variável numCurrMergeIbcCand que indica o número de candidatos à mesclagem de cópia intrabloco registrados na lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList é definida como 0.
[00268] A unidade de derivação de vetor de bloco espacial IBC candidato 371 e a unidade de derivação de vetor de bloco espacial IBC candidato 471 derivam candidatos à mesclagem espacial A e B dos blocos vizinhos à esquerda e os lados superiores do bloco alvo a partir da informação sobre codificação armazenada na memória de armazenamento de informação sobre codificação 111 do dispositivo de codificação de imagem em movimento ou a memória de armazenamento de informação sobre codificação 205 do dispositivo de decodificação de imagem em movimento e, em seguida, adicionar os candidatos à mesclagem espacial derivados à lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList (Etapa S4701 na Figura 46). No presente documento, N que indica um dos candidatos à mesclagem espacial A e B será definido. Um sinalizador availableFlagN e um vetor de bloco mvL que indica se a informação sobre previsão de cópia intrabloco do bloco N pode ser usada como o vetor de bloco espacial candidato N são derivados. No entanto, na presente modalidade, o bloco de vetor candidato à mesclagem é derivado sem referência a outros blocos de codificação incluídos no bloco, incluindo o bloco de codificação alvo. Consequentemente, um candidato à mesclagem de vetor de bloco espacial incluído no bloco que inclui o bloco de codificação alvo não será derivado.
[00269] Subsequentemente, a unidade de derivação de vetor de bloco com base em histórico IBC candidato 372 e a unidade de derivação de candidata de vetor de bloco com base em histórico IBC 472 adicionam os previsores de vetor de bloco com base em histórico candidatos registrados na lista de previsores de vetor de bloco candidatos com base em histórico HmvpIbcCandList à lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList (Etapa S4702 na Figura 46). No presente exemplo, em um caso onde o vetor de bloco já adicionado a mergeIbcCandList e o vetor de bloco do previsor de vetor de bloco candidato com base em histórico têm o mesmo valor, a adição a mergeIbcCandList não será executada.
[00270] Subsequentemente, em um caso onde o número candidato à mesclagem numCurrMergeIbcCand registrado na lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList é menor do que o número máximo de candidatos à mesclagem intrabloco MaxNumMergeIbcCand, o repositor de previsor de vetor de bloco IBC 373 e o repositor de previsor de vetor de bloco IBC 473 derivam um candidato à mesclagem intrabloco adicional, de modo que o número de candidatos à mesclagem numCurrMergeIbcCand registrado na lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList esteja dentro de um limite máximo do número máximo de candidatos à mesclagem MaxNumMergeIbcCand e adiciona o candidato derivado à lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList (Etapa S4703 na Figura 46). Um vetor de bloco com um valor de (0,0) será adicionado à lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList dentro de um limite máximo do número máximo de candidatos à mesclagem MaxNumMergeIbcCand.
[00271] Subsequentemente, o seletor de candidatos à mesclagem IBC 374 e o seletor de candidatos à mesclagem IBC 474 selecionam um dentre os candidatos à mesclagem intrabloco registrados na lista de candidatos à mesclagem de cópia intrabloco mergeIbcCandList (Etapa S4704 na Figura 46). O seletor de candidatos à mesclagem IBC 374 adquire uma imagem decodificada na posição de referência a partir da memória de imagem decodificada 104, calcula a quantidade de código e a quantidade de distorção, deste modo, selecionando um candidato à mesclagem e, em seguida, fornece um índice de mesclagem que indica o candidato à mesclagem intrabloco selecionado para o determinador de modo de previsão IBC 377. O determinador de modo de previsão IBC 377 calcula a quantidade de código e a quantidade de distorção, deste modo, selecionando o modo de mesclagem e, em seguida, fornece o resultado para o determinador de método de previsão 105. Em contraste, o seletor de candidatos à mesclagem IBC 474 no lado de decodificação seleciona um candidato à mesclagem intrabloco com base no índice de mesclagem decodificado e, em seguida, fornece o candidato à mesclagem intrabloco selecionado para a unidade de correção de posição de referência 480.
[00272] Subsequentemente, a unidade de correção de posição de referência 380 e a unidade de correção de posição de referência 480 executam um processo de correção da posição de referência no candidato à mesclagem intrabloco (Etapa S4705 na Figura 46). Detalhes dos processos da unidade de correção de posição de referência 380 e a unidade de correção de posição de referência 480 serão descritos abaixo.
[00273] Subsequentemente, a unidade de correção de limite de região de referência 381 e a unidade de correção de limite de região de referência 481 executam um processo de correção de limite de região de referência no candidato à mesclagem intrabloco (Etapa S4706 na Figura 46). Detalhes dos processos executados pela unidade de correção de posição de referência 381 e a unidade de correção de posição de referência 481 serão descritos abaixo.
[00274] A unidade de cópia de bloco 477 adquire uma imagem decodificada na posição de referência a partir da memória de imagem decodificada 208 e fornece a imagem adquirida ao superimpositor de sinal de imagem decodificada 207. No presente documento, a unidade de cópia de bloco 477 copia um componente de luminosidade e um componente de crominância.
[00275] O vetor de bloco mvL acima representa um vetor de bloco de luminosidade. Quando o formato de crominância é 4:2:0, um vetor de bloco de crominância cor mvC é obtido como: mvC = ((mvL >> (3 + 2)) * 32
[00276] Com a equação acima, cada um dos componentes x e y de mvC será processado.
Unidade de Correção de Posição de Referência
[00277] A Figura 48 é um fluxograma que ilustra um processo executado pela unidade de correção de posição de referência 380 e a unidade de correção de posição de referência 480. No presente documento, é assumido que a unidade do bloco de cópia intrabloco padrão é um bloco de árvore de codificação (CTU) e seu tamanho não é 128 x 128 amostras.
[00278] Primeiro, as posições superior esquerda e inferior direita de um bloco de referência são calculadas (S6001). O bloco de referência refere-se a um bloco ao qual o bloco de codificação alvo refere-se usando um vetor de bloco. Quando for definido no bloco de referência que a posição superior esquerda é (xRefTL, yRefTL) e a posição inferior direita é (xRefBR, yRefBR), o seguinte será obtido: (xRefTL, yRefTL) = (xCb + (mvL [0] >> 4), yCb + (mvL [1] >> 4)) (xRefBR, yRefBR) = (xRefTL + cbWidth - 1, yRefTL + cbHeight - 1)
[00279] No presente documento, a posição do bloco de codificação alvo é (xCb, yCb), o vetor de bloco é (mvL [0], mvL [1]), a largura do bloco de codificação alvo é cbWidth e a altura é cbHeight.
[00280] Em seguida, é determinado se o tamanho do CTU é de 128 x 128 amostras (S6002). No presente documento, uma vez que o tamanho não é 128 x 128 amostras (S6002: NÃO), as posições superior esquerda e inferior direita da região referenciável são calculadas (S6003). Quando a posição superior esquerda é (xAvlTL, yAvlTL) e a posição inferior direita é (xAvlBR, yAvlBR) na região referenciável, as posições individuais serão obtidas como: NL = Min (1, 7-CtbLog2SizeY)-(1 << ((7-CtbLog2SizeY) << 1)) (xAvlTL, yAvlTL) = (((xCb >> CtbLog2SizeY) + NL) << CtbLog2SizeY, (yCb >> CtbLog2SizeY) << CtbLog2SizeY)) (xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY)-1, (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY)-1)
[00281] No presente documento, o tamanho do CTU é CtbLog2SizeY.
[00282] Em seguida, é determinado se a posição de referência do bloco de referência na direção x é menor do que o canto superior esquerdo da região referenciável (S6004). Quando a determinação for falsa (S6004: NÃO), o processo segue para a próxima etapa (S6006). Em contraste, quando a determinação é verdadeira (S6004: SIM), a posição de referência na direção x será corrigida de acordo com o canto superior esquerdo da região referenciável (S6005).
[00283] A Figura 49 é um diagrama que ilustra um estado de correção da posição de referência. O número de referência 6001 indica um bloco de árvore de codificação alvo, 6002 indica um bloco de codificação alvo e 6003 indica uma região referenciável. Agora, assumindo que um bloco de referência r2 está localizado em 6011, a posição de referência na direção x é menor do que o canto superior esquerdo da região referenciável (S6004: SIM). Portanto, a posição de referência é corrigida para a posição de 6012 assumindo xRefTL = xAvlTL (S6005). No presente documento, uma vez que xRefBR = xRefTL + cbWidth-1 é válido conforme em S6001, xRefBR também será corrigido juntamente com a correção de xRefTL. Nesta correção da posição de referência, o vetor de bloco mvL [0] pode ser corrigido. Ou seja, a correção é executada como: mvL [0] = (xAvlTL - xCb) << 4.
[00284] Isto satisfaz xRefTL = xAvlTL, permitindo a correção da posição de referência.
[00285] Desta forma, no caso onde o bloco de referência está localizado fora da região referenciável, a correção da posição de referência permitirá a referência ao bloco de referência.
[00286] Agora, é assumido que alguns vetores de bloco na lista de vetores de bloco candidatos construída pela unidade de previsão de cópia intrabloco 352 estão fora da região referenciável. Em um caso onde a posição de referência não deve ser corrigida, seria impossível fazer referência a estes vetores de bloco, desabilitando a adição destes vetores de bloco aos candidatos ao modo de mesclagem IBC. Em contraste, no caso onde a posição de referência deve ser corrigida na presente invenção, todos os vetores de bloco na lista de vetores de bloco candidatos construída estariam dentro da região referenciável. Isto definirá todos os vetores de bloco referenciáveis, permitindo a adição de todos os vetores de bloco aos candidatos ao modo de mesclagem IBC. Portanto, o seletor de modo de mesclagem IBC 374 pode selecionar um modo de previsão ideal de cada um dos candidatos a modo de mesclagem de IBC que correspondem a todos os vetores de bloco, levando a um aumento da eficiência de codificação.
[00287] Agora, é assumido que alguns vetores de bloco na lista de vetores de bloco candidatos construída pela unidade de previsão de cópia intrabloco 362 estão fora da região referenciável. Em um caso onde a posição de referência não deve ser corrigida, seria impossível referir-se a estes vetores de bloco, desabilitando a decodificação do modo de mesclagem IBC usando estes vetores de bloco. Em um dispositivo de codificação que não é a presente invenção, o índice de mesclagem que indica o modo de mesclagem IBC assumindo estes vetores de bloco opera como não sendo codificado. No entanto, este índice de mesclagem pode ser codificado para gerar um fluxo de bits em virtude de uma falha de operação ou similar. Em outros casos, uma parte do fluxo de bits pode ser perdida em virtude de perda de pacotes ou similar e o resultado da decodificação pode ser um índice de mesclagem. Ao tentar decodificar tal fluxo de bits incompleto, há a possibilidade de acessar a memória de imagem decodificada em uma posição incorreta na tentativa de referir-se ao exterior da região referenciável. Como uma consequência, o resultado da decodificação difere dependendo do dispositivo de decodificação ou o processo de decodificação é interrompido. Em contraste, no caso onde a posição de referência deve ser corrigida na presente invenção, todos os vetores de bloco na lista de vetores de bloco candidatos construída estariam dentro da região referenciável. Portanto, mesmo quando tal fluxo de bits incompleto é decodificado, a posição de referência será corrigida dentro da região referenciável, permitindo a referência. Deste modo, a correção da posição de referência assegurará a amplitude de acesso à memória. Isto resulta na aquisição do mesmo resultado de decodificação pelo dispositivo de decodificação, permitindo a continuação do processo de decodificação, levando a um aumento de robustez do dispositivo de decodificação.
[00288] Além disso, no caso onde o vetor de bloco deve ser corrigido na correção da posição de referência, o alvo é um vetor de bloco de luminosidade. No presente documento, um vetor de bloco de crominância é calculado a partir do vetor de bloco de luminosidade. Ou seja, corrigir o vetor de bloco de luminosidade também corrigirá o vetor de bloco de crominância. Portanto, não há necessidade de corrigir a posição de referência novamente na crominância. A quantidade de processamento pode ser reduzida comparado com um caso onde nenhuma correção de vetor de bloco é executada e há a necessidade de determinar se a referência é possível com base na luminosidade e na crominância.
[00289] Além disso, em um caso onde o vetor de bloco deve ser corrigido na correção da posição de referência, o vetor de bloco corrigido será armazenado na memória de armazenamento de informação sobre codificação 111 ou na memória de armazenamento de informação sobre codificação 205 como o vetor de bloco do bloco de codificação alvo. Ou seja, a posição de referência corrigida e a posição indicada pelo vetor de bloco são as mesmas. No presente documento, o armazenamento do resultado da decodificação na memória da imagem decodificada inclui, algumas vezes, um processo de filtragem de desbloqueio. Neste processo de filtragem, a intensidade do filtro é controlada pela diferença entre os vetores de bloco dos dois blocos voltados para um limite de bloco. Comparado com um caso onde o vetor de bloco não é corrigido e a posição de referência corrigida são diferentes da posição apontada pelo vetor de bloco, é possível obter a intensidade de filtro mais apropriada, levando a um aumento da eficiência de codificação.
[00290] Subsequentemente, é determinado se a posição de referência do bloco de referência na direção y é menor do que o canto superior esquerdo da região referenciável (S6006). Quando a determinação é falsa (S6006: NÃO), o processo segue para a próxima etapa (S6008). Em contraste, quando a determinação é verdadeira (S6006: SIM), a posição de referência na direção y será corrigida de acordo com o canto superior esquerdo da região referenciável (S6007).
[00291] Agora, assumindo que um bloco de referência r4 está localizado em 6021, a posição de referência na direção y é menor do que o canto superior esquerdo da região referenciável (S6006: SIM). Portanto, a posição de referência é corrigida para a posição de 6022 assumindo yRefTL = yAvlTL (S6007). No presente documento, uma vez que yRefBR = yRefTL + cbHeight-1 é válido conforme em S6001, yRefBR também será corrigido juntamente com a correção de yRefTL. Nesta correção da posição de referência, o vetor de bloco mvL [1] pode ser corrigido. Ou seja, a correção é executada como: mvL [1] = (yAvlTL - yCb) << 4
[00292] Isto satisfaz yRefTL = yAvlTL, permitindo a correção da posição de referência.
[00293] Subsequentemente, é determinado se a posição de referência do bloco de referência na direção x é maior do que o canto inferior direito da região referenciável (S6008). Quando a determinação é falsa (S6008: NÃO), o processo segue para a próxima etapa (S6010). Em contraste, quando a determinação é verdadeira (S6008: SIM), a posição de referência na direção x será corrigida de acordo com o canto inferior direito da região referenciável (S6009).
[00294] Agora, assumindo que um bloco de referência r7 está localizado em 6031, a posição de referência na direção x é maior do que o canto inferior direito da região referenciável (S6008: SIM). Portanto, a posição de referência é corrigida para a posição de 6032 assumindo xRefBR = xAvlBR (S6009). No presente documento, uma vez que xRefBR = xRefTL + cbWidth-1 é válido conforme em S6001, ou seja, xRefTL = xRefBR- (cbWidth-1) é válido, xRefTL também será corrigido juntamente com a correção de xRefBR. Nesta correção da posição de referência, o vetor de bloco mvL [0] pode ser corrigido. Ou seja, a correção é executada como: mvL [0] = (xAvlBR-(xCb + cbWidth-1)) << 4
[00295] Isto satisfaz xRefBR = xAvlBR, permitindo a correção da posição de referência.
[00296] Subsequentemente, é determinado se a posição de referência do bloco de referência na direção y é maior do que o canto inferior direito da região referenciável (S6010). Quando a determinação é falsa (S6010: NÃO), o processo termina. Em contraste, quando a determinação é verdadeira (S6010: SIM), a posição de referência na direção y será corrigida de acordo com o canto inferior direito da região referenciável (S6011).
[00297] Agora, assumindo que um bloco de referência r5 está localizado em 6041, a posição de referência na direção y é maior do que o canto inferior direito da região referenciável (S6010: SIM). Portanto, a posição de referência é corrigida para a posição de 6042 assumindo yRefBR = yAvlBR (S6011). No presente documento, uma vez que yRefBR = yRefTL + cbHeight-1 é mantido conforme em S6001, ou seja, yRefTL = yRefBR- (cbHeight-1) é mantido, yRefTL também será corrigido juntamente com a correção de yRefBR. Nesta correção da posição de referência, o vetor de bloco mvL [1] pode ser corrigido. Ou seja, a correção é executada como: mvL [1] = (yAvlBR-(yCb + cbHeitght-1)) << 4
[00298] Isto satisfaz yRefBR = yAvlBR, permitindo a correção da posição de referência.
[00299] No presente documento, um caso onde um bloco de referência r1 está localizado em 6051 será descrito. Neste caso, a posição de referência na direção x é corrigida de forma similar ao caso onde o bloco de referência é r2. Além disso, de forma similar ao caso onde o bloco de referência é r4, a posição de referência na direção y é corrigida. Como um resultado, o bloco de referência r1 estará localizado em 6052 dentro da região referenciável.
[00300] Em um caso onde um bloco de referência r3 está localizado em 6061, onde um bloco de referência r6 está localizado em 6062, ou onde um bloco de referência r8 está localizado em 6063, a posição de referência em cada uma das direções x e y é corrigida de forma similar ao caso acima. Como um resultado, cada bloco de referência está localizado dentro da região referenciável.
[00301] O procedimento acima conclui o processo para o caso onde o tamanho do CTU não é de 128 x 128 amostras. Em contraste, em um caso onde o tamanho do CTU é 128 x 128 amostras (S6002: SIM), as posições superior esquerda e inferior direita quando a região referenciável é retangular são calculadas (S6012).
[00302] A Figura 50 é um diagrama que ilustra as posições superior esquerda e inferior direita quando a região referenciável é retangular. No caso da Figura 50A, um bloco de árvore de codificação alvo 6101 é dividido em quatro e um bloco de codificação alvo 6102 está localizado na parte superior esquerda das posições de divisão. Neste ponto, a região referenciável tem um formato de L invertido, conforme a porção hachurada em 6103. Em um caso onde a região referenciável é retangular, a faixa seria a faixa da região retangular 6103. Em um caso onde a região referenciável é retangular e quando a parte superior esquerda do bloco de referência é definida como (xRefTL, yRefTL) e a parte inferior direita da mesma é definida como (xRefBR, yRefBR), o seguinte será obtido: offset [4] = {0, 64, 128, 128} NL = -offset [3-blk_idx], NR = offset [blk_idx] (xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY + NL, (yCb >> CtbLog2SizeY) << CtbLog2SizeY)) (xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY)-1 + NR, (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY)-1).
[00303] No presente documento, blk_idx é um índice que indica a posição do bloco de codificação alvo. Em um caso onde o bloco de codificação alvo está localizado na posição superior esquerda após a divisão do quadrante do bloco de árvore de codificação alvo, a configuração será; blk_idx = 0. Da mesma forma, em um caso onde os blocos de codificação alvo estão localizados nas posições superior direita, inferior esquerda e inferior direita, blk_idx será definido como 1, 2 e 3. A Figura 50A é um diagrama que ilustra um caso onde blk_idx = 0. Da mesma forma, as Figuras 50B a 50D são diagramas que ilustram casos onde blk_idx = 1 a blk_idx = 3, respectivamente.
[00304] Em seguida, a posição de referência da região referenciável não retangular é corrigida (S6013). A Figura 51 é um fluxograma que ilustra um processo de correção da posição de referência de uma porção da região referenciável que não é retangular. Primeiro, a posição superior esquerda da região referenciável é calculada (S6021). Uma vez que a região referenciável é uma porção tracejada na Figura 50, há duas posições superiores esquerdas 6111 e 6112, exceto no caso onde blk_idx = 3. Quando estes dois pontos são (X1, Y1), (X2, Y2), respectivamente, as posições são calculadas como: offset [4] = {64, 128, 64, 0}, NL = offset [blk_idx] (X1, Y1) = (xAvlTL, yAvlTL + 64) (X2, Y2) = (xAvlTL + NL, yAvlTL)
[00305] Em seguida, é determinado se a posição de referência deve ser corrigida de acordo com o canto superior esquerdo da região referenciável (S6022). Nesta determinação, é determinado como verdadeiro um caso onde blk_idx = 3 não é satisfeito e o bloco de referência está localizado em uma região menor do que X2 e Y1 (S6022: SIM). No caso de falso (S6022: NÃO), o processo segue para a próxima etapa (S6026).
[00306] Em seguida, é determinado se a diferença entre o bloco de referência e a região referenciável na direção x é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6023). No caso onde a determinação é verdadeira (S6023: SIM), a posição de referência na direção x será corrigida (S6024). Em contraste, em um caso onde a determinação é falsa (S6023: NÃO), a posição de referência na direção y será corrigida (S6025).
[00307] A Figura 52A é um diagrama que ilustra um estado de correção da posição de referência em S6024 e S6025. Agora, blk_idx = 0. Suponha que o bloco de referência r1 está localizado em 6201, blk_idx = 3 não é satisfeito e o canto superior esquerdo do bloco de referência está localizado em uma região menor do que X2 (direção x de 6112) e Y1 (direção y de 6111) (S6022: SIM). Além disso, a diferença entre o bloco de referência e a região referenciável na direção x é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6023: SIM). Portanto, a posição de referência na direção x será corrigida para a posição de 6202 assumindo xRefTL = xAvlTL + NL (S6024). No presente documento, uma vez que xRefBR = xRefTL + cbWidth-1 é válido conforme em S6001, xRefBR também será corrigido juntamente com a correção de xRefTL. Nesta correção da posição de referência, o vetor de bloco mvL [0] pode ser corrigido. Ou seja, a correção é executada como: mvL [0] = (xAvlTL + NL-xCb) << 4
[00308] Isto satisfaz xRefTL = xAvlTL + NL, permitindo a correção da posição de referência.
[00309] Em contraste, quando o bloco de referência r2 está localizado em 6203, blk_idx = 3 não é satisfeito e o canto superior esquerdo do bloco de referência está localizado em uma região menor do que X2 (6112 direção x) e Y1 (6111 direção y) (S6022: SIM). Além disso, a diferença entre o bloco de referência e a região referenciável na direção x não é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6023: NÃO). Portanto, a posição de referência na direção y é corrigida para a posição de 6204 assumindo yRefTL = yAvlTL + 64 (S6025). No presente documento, uma vez que yRefBR = yRefTL + cbHeight-1 é válido conforme em S6001, yRefBR também será corrigido juntamente com a correção de yRefTL. Nesta correção da posição de referência, o vetor de bloco mvL [0] pode ser corrigido. Ou seja, a correção é executada como: mvL [1] = (yAvlTL + 64-yCb) << 4
[00310] Isto satisfaz yRefTL = yAvlTL + 64, permitindo a correção da posição de referência.
[00311] No presente documento, assume-se que o bloco de referência r3 está localizado em 6205. Neste caso, a diferença entre o bloco de referência e a região referenciável na direção x é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6023: SIM). Consequentemente, a posição de referência na direção x é corrigida de forma similar ao bloco de referência r1 de modo a estar localizado em 6206 (S6024). Neste ponto, o bloco de referência está fora da região referenciável. No entanto, a posição de referência na direção y é corrigida pelos processos das etapas S6006 e S6007 descritos abaixo. Consequentemente, o bloco de referência está localizado dentro da região referenciável.
[00312] Subsequentemente, a posição inferior direita da região referenciável é calculada (S6026). Uma vez que a região referenciável é uma parte hachurada na Figura 50, há duas posições inferiores à direita, 6113 e 6114, exceto no caso onde blk_idx = 0. Quando estes dois pontos são (X3, Y3) e (X4, Y4), respectivamente, as posições são calculadas como: offset [4] = {0, 64, 128, 64}, NR = offset [blk_idx] (X3, Y3) = (xAvlBR, yAvlBR-64) (X4, Y4) = (xAvlBR-NR, yAvlBR)
[00313] Em seguida, é determinado se a posição de referência será corrigida de acordo com o canto inferior direito da região referenciável (S6027). Nesta determinação, é determinado como verdadeiro quando blk_idx não é 0 e o bloco de referência está localizado em uma região maior do que X4 e Y3 (S6027: SIM). Caso a determinação seja falsa (S6027: NÃO), o processo termina.
[00314] Em seguida, é determinado se a diferença entre o bloco de referência e a região referenciável na direção x é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6028). No caso onde a determinação é verdadeira (S6028: SIM), a posição de referência na direção x será corrigida (S6029). Em contraste, em um caso onde a determinação é falsa (S6028: NÃO), a posição de referência na direção y será corrigida (S6030).
[00315] A Figura 52B é um diagrama que ilustra um estado de correção da posição de referência em S6029 e S6030. Agora, blk_idx = 3. Supondo que o bloco de referência r1 está localizado em 6211, blk_idx = 0 não é satisfeito e o canto inferior direito do bloco de referência está localizado em uma região maior do que X4 (direção x de 6114) e Y3 (direção y de 6113) (S6027: SIM). Além disso, a diferença entre o bloco de referência e a região referenciável na direção x é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6028: SIM). Portanto, a posição de referência na direção x é corrigida para a posição 6212 assumindo xRefBR = xAvlBR (S6029). No presente documento, uma vez que xRefBR = xRefTL + cbWidth-1 é válido conforme em S6001, ou seja, xRefTL = xRefBR- (cbWidth-1) é válido, xRefTL também será corrigido juntamente com a correção de xRefBR. Nesta correção da posição de referência, o vetor de bloco mvL [0] pode ser corrigido. Ou seja, a correção é executada como: mvL [0] = (xAvlBR-NR-(xCb + cbWitdh-1)) << 4
[00316] Isto satisfaz xRefBR = xAvlBR, permitindo a correção da posição de referência.
[00317] Em contraste, assumindo que o bloco de referência r2 está localizado em 6213, blk_idx = 0 não é satisfeito e o canto inferior direito do bloco de referência está localizado em uma região maior do que X4 (direção x de 6114) e Y3 (direção y de 6113) (S6027: SIM). Além disso, a diferença entre o bloco de referência e a região referenciável na direção x não é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6028: NÃO). Portanto, a posição de referência da direção y é corrigida para a posição de 6214 assumindo yRefBR = yAvlBR (S6030). No presente documento, uma vez que yRefBR = yRefTL + cbHeight-1 é mantido conforme em S6001, ou seja, yRefTL = yRefBR- (cbHeight-1) é mantido, yRefTL também será corrigido juntamente com a correção de yRefBR. Nesta correção da posição de referência, o vetor de bloco mvL [1] pode ser corrigido. Ou seja, a correção é executada como: mvL [1] = (yAvlBR-64-(yCb + cbHeight - 1)) << 4
[00318] Isto satisfaz yRefBR = yAvlBR, permitindo a correção da posição de referência.
[00319] No presente documento, assume-se que o bloco de referência r3 está localizado em 6215. Neste caso, a diferença entre o bloco de referência e a região referenciável na direção x não é menor do que a diferença entre o bloco de referência e a região referenciável na direção y (S6028: NÃO). Consequentemente, a posição de referência na direção y é corrigida de forma similar ao bloco de referência r2 de modo a estar localizado em 6216 (S6030). Neste ponto, o bloco de referência está fora da região referenciável. No entanto, a posição de referência na direção x é corrigida pelos processos das etapas S6008 e S6009 descritos abaixo. Consequentemente, o bloco de referência está localizado dentro da região referenciável.
[00320] Na Figura 52, o processo de correção da posição de referência foi descrito usando casos exemplificativos onde blk_idx = 0 e blk_idx = 3. Em um caso onde blk_idx = 1 ou blk_idx = 2, o processo de correção da posição de referência é executado de forma similar aos casos onde blk_idx = 0 e blk_idx = 3.
[00321] Após o processo de correção da posição de referência da região referenciável não retangular (S6013), os processos das etapas S6004 à S6011 são executados. O procedimento acima conclui o processo para o caso onde o tamanho do CTU é de 128 x 128 amostras.
[00322] Agora, assume-se que no processo de correção da posição de referência da porção não retangular da região referenciável (S6013), o processo de correção da posição de referência na direção x é executado (S6024) de acordo com a parte superior esquerda da região referenciável. Neste caso, a posição de referência na direção x do bloco de referência não se tornaria menor do que o canto superior esquerdo da região referenciável e, portanto, a determinação em S6004 é sempre falsa (S6004: NÃO). Portanto, no caso onde o processo de S6024 foi executado, os processos das etapas S6004 e S6005 podem ser suprimidos. Da mesma forma, no caso onde o processamento da Etapa S6025 foi executado, os processos das etapas S6006 e S6007 podem ser suprimidos. No caso onde o processo de S6029 foi executado, os processos das etapas S6008 e S6009 podem ser suprimidos. No caso onde o processo de S6030 foi executado, os processos das etapas S6010 e S6011 podem ser suprimidos.
[00323] Além disso, é permitido usar uma configuração, no fluxograma da Figura 51, onde o processo de comparação da Etapa S6023 é omitido e a Etapa S6024 é sempre executada ou a Etapa S6025 é sempre executada. Da mesma forma, é permitido usar uma configuração na qual o processo de comparação da Etapa S6028 é omitido e a Etapa S6029 é sempre executada ou a Etapa S6030 é sempre executada. Em tal configuração, a posição de referência pode ser corrigida por meio de um processo simples.
[00324] Na Figura 48, a posição de referência é corrigida usando os processos das etapas S6012, S6013 e S6004 à S6011 em um caso onde o tamanho da CTU é de 128 x 128 amostras. Em vez disso, conforme ilustrado na Figura 53, isto também pode ser implementado pelo processo de dividir a região referenciável em duas e, em seguida, corrigir cada uma das posições de referência (S6101).
[00325] A Figura 54 é um diagrama que ilustra um estado de divisão de uma região referenciável em duas. Ao contrário da região referenciável retangular na Figura 50, a região referenciável é dividida em duas na Figura 54. Em um caso onde o bloco de codificação alvo (6102) está localizado na posição superior esquerda após a divisão em quadrantes do bloco de árvore de codificação alvo (6101), a configuração será: blk_idx = 0. Da mesma forma, em um caso onde os blocos de codificação de alvo estão localizados nas posições superior direita, inferior esquerda e inferior direita, blk_idx será definido como 1, 2 e 3. A Figura 54A é um diagrama que ilustra um caso onde blk_idx = 0. Da mesma forma, as Figuras 54B a 54D são diagramas que ilustram casos onde blk_idx = 1, blk_idx = 2 e blk_idx = 3, respectivamente. Além disso, uma região referenciável (6301) é definida como uma região referenciável A e a outra região referenciável (6302) é definida como uma região referenciável B.
[00326] A Figura 55 é um fluxograma que ilustra um processo (S6101) de dividir a região referenciável em duas e corrigir cada uma das posições de referência das regiões referenciáveis. Na Figura 55, o mesmo processo que aqueles na Figura 48 é designado pelos mesmos números de etapas e a sua descrição será omitida. Primeiro, as posições superior esquerda e inferior direita da região referenciável A são calculadas (S6111). Quando o canto superior esquerdo da região referenciável A é definido como (xAvlTL, yAvlTL) e o canto inferior direito como (xAvlBR, yAvlBR), o seguinte é obtido: xOffsetTL [4] = {-128, -128, -64, 0}, yOffsetTL [4] = {64, 64, 64, 0} xOffsetBR [4] = {0, 0, 0, 128}, yOffsetBR [4] = {128, 128, 128, 64} (xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY + xOffsetTL [blk_idx],
[00327] (yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL [blk_idx]) (xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1 + xOffsetBR [blk_idx], (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR [blk_idx])
[00328] Em seguida, o cálculo sobre se o bloco de referência está fora da região referenciável A é executado da seguinte forma (S6112): out_xRefTL = xRefTL < xAvlTL out_yRefTL = yRefTL < yAvlTL out_xRefBR = xRefBR > xAvlBR out_yRefBR = yRefBR > yAvlBR
[00329] Em seguida, as posições superior esquerda e inferior direita da região referenciável B são calculadas (S6113). Quando o canto superior esquerdo da região referenciável B é definido como (xAvlTL, yAvlTL) e o canto inferior direito como (xAvlBR, yAvlBR), o seguinte é obtido: xOffsetTL [4] = {-64, 0, 0, 0}, yOffsetTL [4] = {0, 0, 0, 0} xOffsetBR [4] = {0, 64, 128, 64}, yOffsetBR [4] = {128, 64, 64, 128} (xAvlTL, yAvlTL) = ((xCb >> CtbLog2SizeY) << CtbLog2SizeY + xOffsetTL [blk_idx], (yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL [blk_idx]) (xAvlBR, yAvlBR) = (((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1 + xOffsetBR [blk_idx] (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR [blk_idx])
[00330] Em seguida, é determinado se a posição de referência do bloco de referência na direção x é menor do que a parte superior esquerda da região referenciável A e se a posição de referência do bloco de referência na direção x é menor do que a parte superior esquerda da região referenciável B (S6114). Quando a determinação é falsa (S6114: NÃO), o processo segue para a próxima etapa (S6116). Em contraste, quando a determinação é verdadeira (S6114: SIM), a posição de referência na direção x será corrigida de acordo com o canto superior esquerdo da região referenciável B (S6005). Uma vez que o processo da Etapa S6005 já foi descrito, a descrição foi omitida.
[00331] Subsequentemente, é determinado se a posição de referência do bloco de referência na direção y é menor do que o canto superior esquerdo da região referenciável A e se a posição de referência do bloco de referência na direção y é menor do que o canto superior esquerdo da região referenciável B (S6116). Quando a determinação é falsa (S6116: NÃO), o processo segue para a próxima etapa (S6118). Em contraste, quando a determinação é verdadeira (S6116: SIM), a posição de referência na direção y será corrigida de acordo com o canto superior esquerdo da região referenciável B (S6007). Uma vez que o processamento da Etapa S6007 já foi descrito, a descrição foi omitida.
[00332] Em seguida, é determinado se a posição de referência na direção x do bloco de referência é maior do que a parte inferior direita da região referenciável A e se a posição de referência do bloco de referência na direção x é maior do que a parte inferior direita da região referenciável B (S6118). Quando a determinação é falsa (S6118: NÃO), o processo segue para a próxima etapa (S6120). Em contraste, quando a determinação é verdadeira (S6118: SIM), a posição de referência na direção x será corrigida de acordo com o canto inferior direito da região referenciável B (S6009). Uma vez que o processamento da Etapa S6009 já foi descrito, a descrição foi omitida.
[00333] Em seguida, é determinado se a posição de referência do bloco de referência na direção y é maior do que a parte inferior direita da região referenciável A e se a posição de referência do bloco de referência na direção y é maior do que a parte inferior direita da região referenciável B (S6120). Quando a determinação é falsa (S6120: NÃO), o processo termina. Em contraste, quando a determinação é verdadeira (S6120: SIM), a posição de referência na direção y será corrigida de acordo com o canto inferior direito da região referenciável B (S6011). Uma vez que o processamento da Etapa S6011 já foi descrito, a descrição foi omitida.
[00334] Conforme descrito acima, mesmo em um caso onde o bloco de referência está localizado fora da região referenciável quando o tamanho da CTU é de 128 x 128 amostras, a posição de referência pode ser corrigida e se tornar referenciável. Além disso, ao dividir a região referenciável em duas e corrigir cada uma das posições de referência, é possível simplificar o processo e reduzir a quantidade de cálculo. No presente documento, uma região referenciável (6301) é definida como a região referenciável A, enquanto que a outra região referenciável (6302) é definida como a região referenciável B. Alternativamente, a região referenciável A e a região referenciável B podem ser trocadas e uma região referenciável (6301) pode ser processada como a região referenciável B, enquanto que a outra região referenciável (6302) pode ser processada como a região referenciável A.
[00335] No presente exemplo, é determinado se o tamanho da CTU é de 128 x 128 amostras (S6002) e o processo é alternado em conformidade. Esta determinação pode ser substituída pela determinação se o bloco de cópia intrabloco padrão é fornecido em uma unidade obtida através de divisão em quadrantes do bloco de árvore de codificação ou determinação se o tamanho da CTU é maior do que o tamanho máximo do bloco de codificação.
[00336] Em todas as modalidades descritas acima, uma pluralidade de tecnologias pode ser combinada entre si.
[00337] Em todas as modalidades descritas acima, a saída de fluxo de bits do dispositivo de codificação de imagem tem um formato de dados específico de modo a ser decodificado seguindo o método de codificação usado na modalidade. O fluxo de bits pode ser fornecido ao ser gravado em um meio de gravação legível por um computador ou similar, tal como um HDD, um SSD, uma memória flash, um disco óptico ou pode ser fornecido a partir de um servidor através de uma rede com fio ou sem fio. Consequentemente, o dispositivo de decodificação de imagem que corresponde ao dispositivo de codificação de imagem é capaz de decodificar o fluxo de bits do formato de dados específico, individualmente dos tipos de meios de fornecimento.
[00338] Em um caso onde uma rede com fio ou sem fio é usada para trocar um fluxo de bits entre o dispositivo de codificação de imagem e o dispositivo de decodificação de imagem, o fluxo de bits pode ser convertido em um formato de dados adequado para a forma de transmissão do canal de comunicação na transmissão. Neste caso, é fornecido um dispositivo de transmissão que converte a saída de fluxo de bits do dispositivo de codificação de imagem em dados codificados em um formato de dados adequado para a forma de transmissão do canal de comunicação e transmite os dados codificados para a rede e um dispositivo de recepção que recebe os dados codificados da rede para serem restaurados ao fluxo de bits e fornece o fluxo de bits ao dispositivo de decodificação de imagem. O dispositivo de transmissão inclui memória que armazena em buffer uma saída de fluxo de bits do dispositivo de codificação de imagem, uma unidade de processamento de pacotes que comprime o fluxo de bits e um transmissor que transmite dados codificados em pacotes por meio de uma rede. O dispositivo de recepção inclui um receptor que recebe dados codificados em pacotes através de uma rede, uma memória que armazena os dados codificados recebidos e uma unidade de processamento de pacotes que comprime dados codificados para construir um fluxo de bits e fornece o fluxo de bits construído para o dispositivo de decodificação de imagem.
[00339] Em um caso onde uma rede com fio ou sem fio é usada para trocar fluxos de bits entre o dispositivo de codificação de imagem e o dispositivo de decodificação de imagem, é permitido fornecer, além do dispositivo de transmissão e o dispositivo de recepção, um dispositivo de retransmissão que recebe dados codificados transmitidos pelo dispositivo de transmissão e fornece os dados codificados ao dispositivo de recepção. O dispositivo de retransmissão inclui um receptor que recebe dados codificados em pacotes transmitidos pelo dispositivo de transmissão, memória que armazena em buffer os dados codificados recebidos e um transmissor que transmite os dados codificados em pacotes para a rede. Além disso, o dispositivo de retransmissão pode incluir uma unidade de processamento de pacotes de recepção que executa o processamento de compressão dos dados codificados em pacotes para gerar um fluxo de bits, um meio de gravação que acumula os fluxos de bits e uma unidade de processamento de pacotes de transmissão que comprime os fluxos de bits.
[00340] Além disso, uma unidade de exibição que exibe uma imagem decodificada pelo dispositivo de decodificação de imagem pode ser adicionada, tal como um dispositivo de exibição, à configuração. Neste caso, a unidade de exibição lê um sinal de imagem decodificada construído pelo superimpositor de sinal de imagem decodificada 207 e armazenado na memória de imagem decodificada 208 e exibe o sinal na tela.
[00341] Além disso, uma unidade de imagem pode ser adicionada à configuração de modo a funcionar como um dispositivo de imagem ao inserir uma imagem capturada no dispositivo de codificação de imagem. Neste caso, a unidade de imagem fornece o sinal de imagem capturado para a unidade de divisão de blocos 101.
[00342] A Figura 37 ilustra um exemplo de uma configuração de hardware do dispositivo de codificação-decodificação de acordo com a presente modalidade. O dispositivo de codificação-decodificação inclui as configurações do dispositivo de codificação de imagem e o dispositivo de decodificação de imagem de acordo com as modalidades da presente invenção. Um dispositivo de codificação- decodificação 9000 inclui uma CPU 9001, um codec IC 9002, uma interface I/O 9003, uma memória 9004, uma unidade de disco óptico 9005, uma interface de rede 9006 e uma interface de vídeo 9009, na qual unidades individuais são conectadas através de um barramento 9010.
[00343] Um codificador de imagem 9007 e um decodificador de imagem 9008 são, tipicamente, implementados como um codec IC 9002. O processo de codificação de imagem do dispositivo de codificação 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 I/O 9003 é implementada por uma interface USB, por exemplo, e se conecta a um teclado externo 9104, mouse 9105 ou similar. A CPU 9001 controla o dispositivo de codificação-decodificação 9000 com base na entrada de operação do usuário por meio da interface I/O 9003, de modo a executar a operação desejada pelo usuário. As operações do usuário no teclado 9104, no mouse 9105 ou similar incluem selecionar qual função de codificação ou decodificação deve ser executada, configurar a qualidade de codificação, alvo de entrada/saída de um fluxo de bits, alvo de entrada/saída de uma imagem ou similar.
[00344] Em um caso onde o usuário deseja a operação de reprodução de uma imagem gravada em um meio de gravação em disco 9100, a unidade de disco óptico 9005 lê um fluxo de bits do meio de gravação de disco 9100 inserido e transmite o fluxo de bits lido 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 codificação-decodificação 9000 tem uma interface de rede 9006 e pode ser conectado a um servidor de distribuição externo 9106 e um terminal móvel 9107 por meio de uma rede 9101. No caso onde o usuário deseja reproduzir uma imagem gravada no servidor de distribuição 9106 ou o terminal móvel 9107 em vez da imagem gravada no meio de gravação em disco 9100, a interface de rede 9006 obtém um fluxo de bits da rede 91 01 em vez de ler um fluxo de bits a partir do meio de gravação de disco 9100. Em um caso onde o usuário deseja reproduzir a imagem gravada na memória 9004, o processamento de decodificação de imagem é executado 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.
[00345] Em um caso onde o usuário deseja executar a operação de codificação de uma imagem capturada por uma câmera externa 9102 e gravar a imagem na memória 9004, a interface de vídeo 9009 insere 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 codificação de imagem pelo dispositivo de codificação 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. No caso onde o usuário deseja gravar um fluxo de bits no meio de gravação em disco 9100 em vez da memória 9004, a unidade de disco óptico 9005 grava o fluxo de bits no disco inserido meio de gravação 9100.
[00346] Também é possível implementar uma configuração de hardware que tem um dispositivo de codificação de imagem e não que tem um dispositivo de decodificação de imagem ou uma configuração de hardware que tem um dispositivo de decodificação de imagem e não que tem um dispositivo de codificação de imagem. Tal configuração de hardware é implementada ao substituir o codec IC 9002 pelo codificador de imagem 9007 ou o decodificador de imagem 9008.
[00347] O processo descrito acima relacionado à codificação e decodificação pode, naturalmente, ser implementado como um dispositivo de transmissão, armazenamento e recepção assumindo hardware e, alternativamente, o processo pode ser implementado por firmware armazenado em memória de leitura apenas (ROM), memória flash ou o similar, ou por um software fornecido para um computador ou similar. O programa de firmware e o programa de software podem ser fornecidos ao serem gravados em um meio de gravação legível em um computador ou similar, podem ser fornecidos a partir de um servidor por meio de uma rede com fio ou sem fio ou podem ser fornecidos por meio de transmissão de dados por satélite ou transmissão digital terrestre.
[00348] A presente invenção foi descrita com referência às presentes modalidades. A modalidade apresentada acima foi descrita apenas para fins exemplificativos. Em vez disso, pode ser facilmente concebida por aqueles versados na técnica que vários exemplos de modificação podem ser feitos ao fazer diversas combinações dos componentes ou processos acima descritos, as quais estão também abrangidas no âmbito técnico da presente invenção.
APLICABILIDADE INDUSTRIAL
[00349] A presente invenção pode ser usada para técnicas de codificação e decodificação de imagens que dividem uma imagem em blocos para executar a previsão. LISTA DE SINAIS DE REFERÊNCIA 100 Dispositivo de codificação de imagens 101 Unidade de divisão de blocos 102 Unidade de interprevisão 103 Unidade de intraprevisão 104 Memória de imagem decodificada 105 Determinador de método de previsão 106 Unidade geradora de residual 107 Transformador/quantizador ortogonais 108 Unidade de codificação de sequências de bits 109 Quantizador inverso/transformador ortogonal inverso 110 Superimpositor de sinal de imagem decodificada 111 Memória de armazenamento de informação sobre codificação 200 Dispositivo de decodificação de imagem 201 Unidade de decodificação de sequências de bits 202 Unidade de divisão de blocos 203 Unidade de interprevisão 204 Unidade de intraprevisão 205 Memória de armazenamento de informação sobre codificação 206 Quantizador inverso/transformador ortogonal inverso 207 Superimpositor de sinal de imagem decodificada 208 Memória de imagem decodificada

Claims (4)

1. Dispositivo de codificação de imagem (100) que executa codificação em unidades de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513), cada uma das quais é um bloco de árvore de codificação (501, 502, 503, 504, 515, 516) ou uma unidade obtida dividindo em quadrantes o bloco de árvore de codificação (501, 502, 503, 504, 515, 516), o dispositivo (100) compreendendo: uma unidade de derivação de vetor de bloco candidato estruturada para derivar vetores de bloco candidatos de um bloco alvo em uma imagem alvo a partir de informação sobre codificação armazenada em uma memória de armazenamento de informação sobre codificação (111); caracterizado pelo fato de que compreende ainda: uma unidade de correção de posição de referência (380, 480) estruturada para executar uma correção em relação a um bloco de referência a ser usado como referência pelos vetores de bloco candidatos de modo que uma posição de referência do bloco de referência seja localizada no interior de uma região referenciável; e um seletor estruturado para selecionar um vetor de bloco selecionado a partir dos vetores de bloco candidatos e adquirir uma amostra decodificada na imagem alvo a partir de memória de imagem decodificada (104, 208) como um valor de previsão do bloco alvo com base na posição de referência do bloco de referência, em que a unidade de correção de posição de referência (380, 480) define um número fixo de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) submetidos a um processo de codificação imediatamente antes de um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região referenciável, e define um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) antes da região referenciável e um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região de referência inválida, e corrige a posição de referência (380, 480) do bloco de referência com base em posições superior esquerda e inferior direita do bloco de referência.
2. Método de codificação de imagem para executar a codificação em unidades de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513), cada uma das quais é um bloco de árvore de codificação (501, 502, 503, 504, 515, 516) ou uma unidade obtida dividindo em quadrantes o bloco de árvore de codificação (501, 502, 503, 504, 515, 516), compreendendo: uma etapa de derivação de vetor de bloco candidato para derivar (S4701, S4702) vetores de bloco candidatos de um bloco alvo em uma imagem alvo a partir da informação sobre codificação armazenada em uma memória de armazenamento de informação sobre codificação (111); caracterizado pelo fato de que compreende ainda: uma etapa de correção de posição de referência para executar uma correção (S4705, S4706) em relação a um bloco de referência a ser usado como referência pelos vetores de bloco candidatos de modo que uma posição de referência do bloco de referência seja localizada no interior de uma região referenciável; e uma etapa de seleção para selecionar (S4704) um vetor de bloco selecionado a partir dos vetores de bloco candidatos e adquirir uma amostra decodificada na imagem alvo a partir da memória de imagem decodificada (104, 208) como um valor de previsão do bloco alvo com base na posição de referência do bloco de referência, em que a etapa de correção de posição de referência define um número fixo de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) submetidos a um processo de codificação imediatamente antes de um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região referenciável, e define um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) antes da região referenciável e um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região de referência inválida, e corrige a posição de referência (380, 480) do bloco de referência com base em posições superior esquerda e inferior direita do bloco de referência.
3. Dispositivo de decodificação de imagem (200) que executa a decodificação em unidades de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513), cada uma das quais é um bloco de árvore de codificação (501, 502, 503, 504, 515, 516) ou uma unidade obtida dividindo em quadrantes o bloco de árvore de codificação (501, 502, 503, 504, 515, 516), o dispositivo (200) compreendendo: uma unidade de derivação de vetor de bloco candidato estruturada para derivar vetores de bloco candidatos de um bloco alvo em uma imagem alvo a partir de informação sobre codificação armazenada em uma memória de armazenamento de informação sobre codificação (111); um seletor estruturado para selecionar um vetor de bloco selecionado a partir dos vetores de bloco candidatos; caracterizado pelo fato de que compreende ainda: uma unidade de correção de posição de referência (380, 480) estruturada para executar uma correção em relação a um bloco de referência a ser usado como referência pelos vetores de bloco candidatos de modo que uma posição de referência do bloco de referência seja localizada no interior de uma região referenciável; e uma unidade de cópia de bloco (477) estruturada para adquirir uma amostra decodificada na imagem alvo a partir de uma memória de imagem decodificada (104, 208) como um valor de previsão do bloco alvo com base na posição de referência do bloco de referência, em que a unidade de correção de posição de referência (380, 480) define um número fixo de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) submetidos a um processo de codificação imediatamente antes de um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região referenciável, e define um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) antes da região referenciável e um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região de referência inválida, e corrige a posição de referência (380, 480) do bloco de referência com base em posições superior esquerda e inferior direita do bloco de referência.
4. Método de decodificação de imagem para executar a decodificação em unidades de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513), cada uma das quais é um bloco de árvore de codificação (501, 502, 503, 504, 515, 516) ou uma unidade obtida dividindo em quadrantes o bloco de árvore de codificação (501, 502, 503, 504, 515, 516), compreendendo: uma etapa de derivação de vetor de bloco candidato para derivar (S4701, S4702) vetores de bloco candidatos de um bloco alvo em uma imagem alvo a partir de informação sobre codificação armazenada em uma memória de armazenamento de informação sobre codificação (111); uma etapa de seleção para selecionar (S4704) um vetor de bloco selecionado a partir dos vetores de bloco candidatos; caracterizado pelo fato de que compreende ainda: uma etapa de correção de posição de referência para executar uma correção (S4705, S4706) em relação a um bloco de referência a ser usado como referência pelos vetores de bloco candidatos de modo que uma posição de referência do bloco de referência seja localizada no interior de uma região referenciável; e uma etapa de cópia de bloco de aquisição de uma amostra decodificada na imagem alvo a partir da memória de imagem decodificada (104, 208) como um valor de previsão do bloco alvo com base na posição de referência do bloco de referência, em que a etapa de correção da posição de referência define um número fixo de blocos de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) submetidos a um processo de codificação imediatamente antes de um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região referenciável, e define um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) antes da região referenciável e um bloco de cópia intrabloco padrão (506, 507, 508, 509, 510, 511, 512, 513) que inclui o bloco alvo como uma região de referência inválida, e corrige a posição de referência (380, 480) do bloco de referência com base em posições superior esquerda e inferior direita do bloco de referência.
BR112021025852-3A 2019-06-20 2020-06-19 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 BR112021025852B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2019114395 2019-06-20
JP2019-114395 2019-06-20
PCT/JP2020/024137 WO2020256102A1 (ja) 2019-06-20 2020-06-19 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム

Publications (2)

Publication Number Publication Date
BR112021025852A2 BR112021025852A2 (pt) 2022-02-08
BR112021025852B1 true BR112021025852B1 (pt) 2023-05-16

Family

ID=74040853

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021025852-3A BR112021025852B1 (pt) 2019-06-20 2020-06-19 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

Country Status (8)

Country Link
US (2) US11936849B2 (pt)
EP (1) EP3989545A4 (pt)
JP (4) JP6958768B2 (pt)
KR (1) KR20210128482A (pt)
CN (2) CN115442594A (pt)
BR (1) BR112021025852B1 (pt)
MX (1) MX2021015089A (pt)
WO (1) WO2020256102A1 (pt)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210128482A (ko) * 2019-06-20 2021-10-26 가부시키가이샤 제이브이씨 켄우드 동화상 부호화 장치, 동화상 부호화 방법 및, 동화상 부호화 프로그램, 동화상 복호 장치, 동화상 복호 방법 및 동화상 복호 프로그램
WO2020256105A1 (ja) * 2019-06-21 2020-12-24 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
BR112021026156A2 (pt) * 2019-06-25 2022-02-08 Jvckenwood Corp Dispositivo de codificação de imagem dinâmica, método de codificação de imagem dinâmica, programa de codificação de imagem dinâmica, dispositivo de decodificação de imagem dinâmica, método de decodificação de imagem dinâmica e programa de decodificação de imagem dinâmica
CN116805968A (zh) * 2022-03-16 2023-09-26 腾讯科技(深圳)有限公司 视频编解码方法、装置、计算机可读介质及电子设备

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2106148A3 (en) 2008-03-28 2010-11-03 Samsung Electronics Co., Ltd. Method and apparatus for encoding/decoding information about intra-prediction mode of video
JP5170800B2 (ja) * 2009-01-15 2013-03-27 ルネサスエレクトロニクス株式会社 画像処理装置、デコード方法、フレーム内復号装置、フレーム内復号方法、及びフレーム内符号化装置
JP5857244B2 (ja) * 2011-03-07 2016-02-10 パナソニックIpマネジメント株式会社 動き補償装置、動画像符号化装置、動画像復号装置、動き補償方法、プログラム、及び集積回路
SI2717574T1 (sl) * 2011-05-31 2021-04-30 JVC Kenwood Corporation Naprava za dekodiranje gibljivih slik, postopek za dekodiranje gibljivih slik, program za dekodiranje gibljivih slik
JP5821542B2 (ja) * 2011-11-07 2015-11-24 富士通株式会社 動画像符号化装置、および動画像復号装置
JP2013102260A (ja) * 2011-11-07 2013-05-23 Jvc Kenwood Corp 動画像復号装置、動画像復号方法及び動画像復号プログラム
AU2013228045A1 (en) * 2013-09-13 2015-04-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
JP2015173404A (ja) * 2014-03-12 2015-10-01 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
US9756354B2 (en) 2014-03-17 2017-09-05 Qualcomm Incorporated Block vector predictor for intra block copying
US10666968B2 (en) 2014-05-06 2020-05-26 Hfi Innovation Inc. Method of block vector prediction for intra block copy mode coding
CN111432220B (zh) * 2014-06-19 2022-05-06 Vid拓展公司 采用块向量导出的帧内块复制编码的方法和系统
EP3152906B1 (en) 2014-07-07 2021-06-16 HFI Innovation Inc. Method of intra block copy search and compensation range
WO2016055001A1 (en) 2014-10-08 2016-04-14 Mediatek Inc. Method of block vector clipping and coding for screen content coding and video coding
WO2016051362A1 (en) 2014-10-03 2016-04-07 Nokia Technologies Oy Method and equipment for encoding and decoding an intra block copy vector
US9918105B2 (en) * 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
US9854237B2 (en) * 2014-10-14 2017-12-26 Qualcomm Incorporated AMVP and merge candidate list derivation for intra BC and inter prediction unification
US10200713B2 (en) * 2015-05-11 2019-02-05 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data
US20190068967A1 (en) * 2016-02-03 2019-02-28 Sharp Kabushiki Kaisha Predicted-image generation device, video decoding device, and video coding device
WO2018097078A1 (ja) * 2016-11-22 2018-05-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
TWI692690B (zh) * 2017-12-05 2020-05-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
KR20210128482A (ko) * 2019-06-20 2021-10-26 가부시키가이샤 제이브이씨 켄우드 동화상 부호화 장치, 동화상 부호화 방법 및, 동화상 부호화 프로그램, 동화상 복호 장치, 동화상 복호 방법 및 동화상 복호 프로그램

Also Published As

Publication number Publication date
KR20210128482A (ko) 2021-10-26
US20240179300A1 (en) 2024-05-30
EP3989545A4 (en) 2022-08-17
BR112021025852A2 (pt) 2022-02-08
JPWO2020256102A1 (ja) 2021-10-21
MX2021015089A (es) 2022-01-18
JP2022023855A (ja) 2022-02-08
CN115442594A (zh) 2022-12-06
US11936849B2 (en) 2024-03-19
JP6958768B2 (ja) 2021-11-02
CN113767622A (zh) 2021-12-07
US20220109829A1 (en) 2022-04-07
JP2024051142A (ja) 2024-04-10
WO2020256102A1 (ja) 2020-12-24
JP7287433B2 (ja) 2023-06-06
EP3989545A1 (en) 2022-04-27
JP2023099774A (ja) 2023-07-13

Similar Documents

Publication Publication Date Title
EP3905687B1 (en) Image encoding device, image encoding method, image encoding program, image decoding device, image decoding method and image decoding program
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
US12003755B2 (en) Picture decoding device, picture decoding method, and picture decoding program with history-based candidate selection
RU2768375C1 (ru) Устройство декодирования динамических изображений, способ декодирования динамических изображений, программа декодирования динамических изображений, устройство кодирования динамических изображений, способ кодирования динамических изображений и программа кодирования динамических изображений
JP2022191434A (ja) 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
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
WO2020137539A1 (ja) 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
JP7063416B2 (ja) 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
WO2020137814A1 (ja) 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
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
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
RU2779635C1 (ru) Устройство для кодирования видео, способ кодирования видео, программа кодирования видео, устройство для декодирования видео, способ декодирования видео и программа декодирования видео
RU2781517C1 (ru) Устройство кодирования динамического изображения, способ кодирования динамического изображения, программа кодирования динамического изображения, устройство декодирования динамического изображения, способ декодирования динамического изображения и программа декодирования динамического изображения
RU2779930C2 (ru) Устройство декодирования динамических изображений, способ декодирования динамических изображений, программа декодирования динамических изображений, устройство кодирования динамических изображений, способ кодирования динамических изображений и программа кодирования динамических изображений
WO2020137857A1 (ja) 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
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 19/06/2020, OBSERVADAS AS CONDICOES LEGAIS