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

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

Info

Publication number
BR112021005161A2
BR112021005161A2 BR112021005161-9A BR112021005161A BR112021005161A2 BR 112021005161 A2 BR112021005161 A2 BR 112021005161A2 BR 112021005161 A BR112021005161 A BR 112021005161A BR 112021005161 A2 BR112021005161 A2 BR 112021005161A2
Authority
BR
Brazil
Prior art keywords
block
coefficient
current block
value
flag
Prior art date
Application number
BR112021005161-9A
Other languages
English (en)
Inventor
Bae Keun Lee
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp., Ltd. filed Critical Guangdong Oppo Mobile Telecommunications Corp., Ltd.
Publication of BR112021005161A2 publication Critical patent/BR112021005161A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

MÉTODO DE DECODIFICAÇÃO DE VÍDEO, E MÉTODO DE CODIFICAÇÃO DE VÍDEO. Trata-se de um método de decodificação de imagem de acordo com a presente invenção que compreende as etapas de: gerar uma lista de candidatos de mesclagem de um bloco atual; especificar qualquer um dentre uma pluralidade de candidatos a mesclagem incluídos na lista de candidatos a mesclagem; com base em um primeiro vetor de semente afim e um segundo vetor de semente afim do candidato a mesclagem especificado, induzir um primeiro vetor de semente afim e um segundo vetor de semente afim do bloco atual; usar o primeiro vetor de semente afim e o segundo vetor de semente afim do bloco atual, induzindo um vetor afim em relação a um sub-bloco no bloco atual; e, com base no vetor afim, realizar previsão de compensação de movimento em relação ao sub-bloco.

Description

MÉTODO DE DECODIFICAÇÃO DE VÍDEO, E MÉTODO DE CODIFICAÇÃO DE VÍDEO CAMPO DA TÉCNICA
[001] A presente invenção refere-se a um método e aparelho para codificar ou decodificar sinal de vídeo.
ANTECEDENTES
[002] Com a tendência de os painéis de exibição se tornarem cada vez maiores, os serviços de vídeo de alta definição estão em alta. O maior problema dos serviços de vídeo de alta definição é que a quantidade de dados aumenta significativamente e, para resolver esse problema, pesquisas têm sido realizadas ativamente para melhorar a taxa de compressão de vídeo. Como um exemplo representativo, a Joint Collaborative Team on Video Coding (JCT-VC) foi estabelecida no Video Coding Experts Group (VCEG) sob a International Telecommunication Union-Telecommunication (ITU-T) e Movement Picture Experts Group (MPEG) em 2009. A JCT-VC propôs a codificação de vídeo de alta eficiência (HEVC), que é um padrão de compressão de vídeo cujo desempenho de compressão é cerca de duas vezes maior do que o de H.264/AVC, e foi aprovado como padrão em 25 de janeiro de 2013. Com o rápido desenvolvimento dos serviços de vídeo de alta definição, o desempenho do HEVC está gradualmente revelando suas limitações.
SUMÁRIO [PROBLEMA TÉCNICO]
[003] A presente invenção se refere ao fornecimento de um método e um aparelho para codificar ou decodificar um coeficiente residual ao codificar ou decodificar um sinal de vídeo.
[004] A presente invenção se refere ao fornecimento de um método e um aparelho para codificar ou decodificar um coeficiente residual com o uso de um sinalizador para comparar o tamanho do coeficiente residual a um valor de limiar ao codificar ou decodificar um sinal de vídeo.
[005] A presente invenção se refere ao fornecimento de um método e um aparelho para codificar ou decodificar um coeficiente residual com o uso de um sinalizador indicando se o coeficiente residual é um número par ou um número ímpar ao codificar ou decodificar um sinal de vídeo.
[006] Os problemas técnicos destinados a serem resolvidos pela invenção não estão limitados aos problemas acima mencionados e outros problemas técnicos que não são descritos neste documento devem ser claramente compreendidos por aqueles versados na técnica a partir da seguinte descrição. [SOLUÇÃO TÉCNICA]
[007] De acordo com um aspecto amplo, a invenção fornece um método para decodificar um vídeo, sendo que o método compreende: analisar um sinalizador diferente de zero indicando se um coeficiente residual é diferente de zero de um fluxo de bits; analisar informações de valor absoluto para determinar um valor absoluto do coeficiente residual do fluxo de bits quando o sinalizador diferente de zero indica que o coeficiente residual não é diferente de zero; e determinar o valor absoluto do coeficiente residual com base nas informações do valor absoluto, em que as informações do valor absoluto compreendem um sinalizador de comparação do coeficiente residual que indica a possibilidade de o coeficiente residual ser maior do que um primeiro valor e um sinalizador de paridade ser posteriormente analisado a partir do fluxo de bits, apenas quando o coeficiente residual for maior do que o primeiro valor.
[008] De acordo com outro aspecto amplo, a invenção fornece um método para codificar um vídeo, o método compreendendo: codificar um sinalizador diferente de zero indicando se um coeficiente residual é diferente de zero; e codificar informações de valor absoluto para determinar um valor absoluto do coeficiente residual quando o coeficiente residual não for diferente de zero, em que as informações de valor absoluto incluem um sinalizador de comparação de coeficiente residual que indica a possibilidade de o coeficiente residual ser maior do que um primeiro valor e um sinalizador de paridade para o coeficiente residual ser ainda codificado apenas quando o coeficiente residual for maior do que o primeiro valor.
[009] Em algumas modalidades, o sinalizador de paridade pode indicar se o valor do coeficiente residual é um número par ou um número ímpar.
[010] Em algumas modalidades, quando o coeficiente residual é maior do que o primeiro valor, um primeiro sinalizador de comparação de coeficiente remanescente ajustado indicando se um coeficiente remanescente ajustado derivado por deslocamento de bit do coeficiente residual para a direita em 1 é maior do que um segundo valor pode ser adicionalmente analisado.
[011] Em algumas modalidades, quando o coeficiente remanescente ajustado é menor ou igual ao segundo valor, o coeficiente residual pode ser determinado como 2N ou 2N+1, dependendo de um valor do sinalizador de paridade.
[012] Em algumas modalidades, quando o coeficiente remanescente ajustado é maior do que o segundo valor, um segundo sinalizador de comparação do coeficiente remanescente ajustado que indica se o coeficiente remanescente ajustado é maior do que um terceiro valor pode ser analisado posteriormente.
[013] Em algumas modalidades, quando o coeficiente remanescente ajustado é maior do que o segundo valor, as informações do valor residual podem ser analisadas posteriormente e as informações do valor residual podem ser um valor obtido subtraindo-se o segundo valor do coeficiente remanescente ajustado.
[014] As características resumidas brevemente acima em relação à presente invenção são aspectos meramente exemplares da descrição detalhada da presente invenção descrita abaixo e não limitam o escopo da presente invenção. [EFEITOS VANTAJOSOS]
[015] De acordo com a presente invenção, é possível codificar ou decodificar eficientemente um coeficiente residual.
[016] De acordo com a presente invenção, é possível codificar ou decodificar eficientemente um coeficiente residual usando-se um sinalizador para comparar o tamanho do coeficiente residual a um valor limiar.
[017] De acordo com a presente invenção, é possível codificar ou decodificar eficientemente um coeficiente residual usando-se um sinalizador indicando se o coeficiente residual é um número par ou um número ímpar.
[018] Os efeitos vantajosos da invenção não estão limitados aos efeitos acima mencionados, e outros efeitos vantajosos que não são descritos no presente documento devem ser claramente compreendidos por aqueles versados na técnica a partir da seguinte descrição.
BREVE DESCRIÇÃO DAS FIGURAS
[019] A Figura 1 é um diagrama de blocos de um codificador de vídeo de acordo com uma modalidade da presente invenção.
[020] A Figura 2 é um diagrama de blocos de um decodificador de vídeo de acordo com uma modalidade da presente invenção.
[021] A Figura 3 é um diagrama que mostra uma unidade de árvore de codificação básica de acordo com uma modalidade da presente invenção.
[022] A Figura 4 é um diagrama que mostra vários tipos de divisão de um bloco de codificação.
[023] A Figura 5 é um diagrama que ilustra um aspecto de divisão de uma unidade de árvore de codificação.
[024] A Figura 6 mostra um exemplo no qual um bloco menor do que uma unidade de árvore de codificação de um tamanho predeterminado ocorre em uma borda da imagem.
[025] A Figura 7 é um diagrama que mostra um exemplo no qual a divisão de árvore quádrupla é realizada em um bloco de borda de limite atípico.
[026] A Figura 8 é um diagrama que mostra um exemplo em que a divisão de árvore quádrupla é executada em um bloco adjacente a uma borda da imagem.
[027] A Figura 9 é um diagrama que mostra um aspecto de divisão de um bloco adjacente a uma borda da imagem.
[028] A Figura 10 é um diagrama que mostra um aspecto de codificação de um bloco adjacente a uma borda da imagem.
[029] A Figura 11 é um fluxograma de um método de interpredição de acordo com uma modalidade da presente invenção.
[030] A Figura 12 é um fluxograma de um processo de derivar informações de movimento do bloco atual em um modo de mesclagem.
[031] A Figura 13 é um diagrama que ilustra os blocos candidatos usados para derivar um candidato a mesclagem.
[032] A Figura 14 é um diagrama que mostra os locais das amostras de referência.
[033] A Figura 15 é um diagrama que ilustra os blocos candidatos usados para derivar um candidato a mesclagem.
[034] A Figura 16 é um diagrama que mostra um exemplo em que a localização de uma amostra de referência é alterada.
[035] A Figura 17 é um diagrama que mostra um exemplo em que a localização de uma amostra de referência é alterada.
[036] A Figura 18 é um diagrama para descrever um aspecto de atualização de uma tabela de informações de movimento inter-região.
[037] A Figura 19 é um diagrama que mostra um aspecto de atualização de uma tabela de candidato a mesclagem inter-região.
[038] A Figura 20 é um diagrama que mostra um exemplo no qual um índice de um candidato a mesclagem inter- região pré-armazenado é atualizado.
[039] A Figura 21 é um diagrama que mostra a localização de um sub-bloco representativo.
[040] A Figura 22 mostra um exemplo no qual uma tabela de informações de movimento inter-região é gerada para cada modo de interpredição.
[041] A Figura 23 é um diagrama que mostra um exemplo no qual um candidato a mesclagem inter-região incluído em uma tabela de informações de movimento de longo prazo é adicionado a uma lista de candidatos a mesclagem.
[042] A Figura 24 é um diagrama que mostra um exemplo no qual uma verificação de redundância é executada em apenas alguns candidatos a mesclagem.
[043] A Figura 25 é um diagrama que mostra um exemplo no qual uma verificação de redundância em um candidato a mesclagem específico é omitida.
[044] A Figura 26 é um diagrama que mostra um exemplo no qual um bloco candidato incluído na mesma área de mesclagem paralela do bloco atual é definido como indisponível como um candidato a mesclagem.
[045] A Figura 27 é um diagrama que mostra uma tabela de informações de movimento temporário.
[046] A Figura 28 é um diagrama que mostra um exemplo de mesclagem de uma tabela de informações de movimento temporário com uma tabela de informações de movimento inter- região.
[047] A Figura 29 é um fluxograma de um método de intrapredição de acordo com uma modalidade da presente invenção.
[048] A Figura 30 é um diagrama que mostra as amostras de referência incluídas em cada linha de amostra de referência.
[049] A Figura 31 é um diagrama que mostra modos de intrapredição.
[050] As Figuras 32 e 33 são diagramas que mostram um exemplo de uma matriz unidimensional em que as amostras de referência são dispostas em uma linha.
[051] A Figura 34 é um diagrama que ilustra ângulos formados entre uma linha reta paralela ao eixo geométrico x e os modos intrapredição direcional.
[052] A Figura 35 é um diagrama que mostra um aspecto no qual uma amostra de predição é adquirida quando o bloco atual não é quadrado.
[053] A Figura 36 é um diagrama que mostra modos de intrapredição de ângulo amplo.
[054] A Figura 37 é um diagrama que mostra um aspecto de aplicativo do PDPC.
[055] As Figuras 38 e 39 são diagramas que mostram um sub-bloco a ser submetido a uma segunda transformação.
[056] A Figura 40 é um diagrama para descrever um exemplo em que o tipo de transformação do bloco atual é determinado.
[057] A Figura 41 é um fluxograma que mostra um método de codificação de um coeficiente residual.
[058] As Figuras 42 e 43 são diagramas que mostram uma ordem da disposição de coeficientes residuais para cada ordem de varredura.
[059] A Figura 44 mostra um exemplo no qual a localização do último coeficiente diferente de zero é codificada.
[060] A Figura 45 é um fluxograma de um processo de codificação do valor absoluto de um coeficiente residual.
[061] A Figura 46 é um fluxograma de um processo de codificação do valor absoluto de um coeficiente residual.
[062] A Figura 47 é um fluxograma de um processo de codificação do valor absoluto de um coeficiente residual.
[063] A Figura 48 é um fluxograma que mostra um processo de determinação da força de bloqueio.
[064] A Figura 49 mostra candidatos de filtro predefinidos.
DESCRIÇÃO DETALHADA
[065] Doravante, as modalidades da presente invenção serão descritas em detalhes com referência aos desenhos anexos.
[066] Um vídeo é codificado e decodificado em unidades de blocos. Como um exemplo, o processamento de codificação e decodificação, como transformação, quantização, predição, filtragem em laço ou reconstrução pode ser realizado em um bloco de codificação, um bloco de transformação ou um bloco de predição.
[067] Doravante, um bloco a ser codificado ou decodificado será referido como "o bloco atual". Como exemplo, o bloco atual pode indicar um bloco de codificação, um bloco de transformação ou um bloco de predição, dependendo da etapa atual para o processamento de codificação ou decodificação.
[068] Além disso, o termo "unidade" usado no presente documento pode ser entendido como indicando uma unidade básica para realizar um processo de codificação e decodificação específico, e o termo "bloco" pode ser entendido como indicando uma matriz de amostra de um tamanho predeterminado. A menos que especificado de outra forma, os termos "bloco" e "unidade" podem ser usados indistintamente. Como exemplo, nas seguintes modalidades, um bloco de codificação e uma unidade de codificação podem ser entendidos como tendo significados equivalentes.
[069] A Figura 1 é um diagrama de blocos de um codificador de vídeo de acordo com uma modalidade da presente invenção.
[070] Referindo-se à Figura 1, um aparelho de codificação de vídeo 100 pode incluir um divisor de imagem 110, preditores 120 e 125, um transformador 130, um quantizador 135, um reordenador 160, um codificador de entropia 165, um quantizador inverso 140, um transformador inverso 145, um filtro 150 e uma memória 155.
[071] Os elementos da Figura 1 são mostrados independentemente de modo a representar diferentes funções características no aparelho de codificação de vídeo, e cada um dos elementos não se destina a ser configurado em uma unidade de hardware separada ou como uma unidade de software. Em outras palavras, os elementos são organizados de forma independente para conveniência de descrição. Para executar funções, pelo menos dois elementos podem ser combinados em um elemento, ou um elemento pode ser dividido em uma pluralidade de elementos. Neste caso, uma modalidade para a combinação dos elementos e uma modalidade para a divisão do elemento estão incluídas no escopo da presente invenção sem se afastar da essência da presente invenção.
[072] Além disso, alguns dos elementos podem não ser elementos essenciais para desempenhar funções essenciais na presente invenção e podem ser apenas elementos opcionais para melhorar o desempenho. A presente invenção pode ser implementada incluindo apenas os elementos necessários para implementar a essência da presente invenção, em vez de elementos usados apenas para melhorar o desempenho. Mesmo uma estrutura que inclui apenas elementos essenciais, em vez de elementos opcionais usados apenas para melhorar o desempenho, está incluída no escopo da presente invenção.
[073] O divisor de imagem 110 pode dividir uma imagem de entrada em pelo menos uma unidade de processamento. Neste caso, a unidade de processamento pode ser uma unidade de previsão (PU), uma unidade de transformação (TU) ou uma unidade de codificação (CU). O divisor de imagem 110 pode dividir uma imagem em uma pluralidade de combinações de unidades de codificação, unidades de predição e unidades de transformação e pode selecionar uma combinação de unidades de codificação, unidades de predição e unidades de transformação de acordo com um critério predeterminado (por exemplo, uma função de custo) para codificar a imagem.
[074] Por exemplo, uma imagem pode ser dividida em uma pluralidade de unidades de codificação. Uma estrutura de árvore recursiva, como uma estrutura de árvore quádrupla, pode ser usada para dividir uma imagem em unidades de codificação. Uma unidade de codificação dividida em outras unidades de codificação usando uma imagem ou a maior unidade de codificação como uma raiz pode ter um número de nós filhos correspondendo ao número de unidades de codificação divididas. Uma unidade de codificação que não é mais dividida devido a uma limitação predeterminada serve como um nó tipo folha. Ou seja, quando se assume que apenas a divisão quadrada é possível para uma unidade de codificação, uma unidade de codificação pode ser dividida em até quatro outras unidades de codificação.
[075] Nas seguintes modalidades da presente invenção, uma unidade de codificação pode se referir a uma unidade configurada para realizar a codificação ou uma unidade configurada para realizar a decodificação.
[076] Uma unidade de codificação pode ser dividida em pelo menos uma ou mais unidades de previsão do mesmo tamanho em uma forma quadrada ou retangular e pode ser dividida em unidades de predição de modo que uma das unidades de predição seja diferente de outra unidade de predição em forma e/ou tamanho.
[077] Quando uma unidade de predição submetida a intrapredição com base em uma unidade de codificação é gerada e a unidade de codificação não é uma unidade de codificação mínima, a intrapredição pode ser realizada sem dividir a unidade de codificação em uma pluralidade de N×N unidades de predição.
[078] Os preditores 120 e 125 podem incluir um interpreditor 120 configurado para realizar a interpredição e um intrapreditor 125 configurado para realizar a intrapredição. Os preditores 120 e 125 podem determinar se devem realizar intrapredição ou usar interpredição em unidades de predição e podem determinar informações detalhadas (por exemplo, um modo intrapredição, um vetor de movimento, uma imagem de referência e semelhantes) que correspondem a cada método de predição. Neste caso, uma unidade de processamento na qual a predição é realizada pode ser diferente de uma unidade de processamento na qual um método de predição e detalhes específicos são determinados. Por exemplo, um método de predição, um modo de predição e semelhantes podem ser determinados por uma unidade de predição e a predição pode ser realizada por uma unidade de transformação. Um valor residual (um bloco residual) entre um bloco de predição gerado e um bloco original pode ser inserido no transformador 130. Além disso, informações de vetor de movimento, informações de modo de previsão e semelhantes, que são usadas para previsão, além do valor residual, podem ser codificadas pelo codificador de entropia 165 e entregues a um decodificador. Quando um modo de codificação particular é usado, o bloco original pode ser codificado intactamente e transmitido para o decodificador sem os preditores 120 e 125 gerando o bloco de predição.
[079] O interpreditor 120 pode prever a unidade de predição com base nas informações de pelo menos uma de uma imagem anterior à imagem atual ou uma imagem após a imagem atual, e, em alguns casos, a unidade de predição pode ser prevista com base nas informações sobre alguma área da imagem atual onde a codificação é concluída. O interpreditor 120 pode incluir um interpolador de imagem de referência, um preditor de movimento e um compensador de movimento.
[080] O interpolador de imagem de referência pode receber informações de imagem de referência da memória 155 e pode gerar informações em pixels menores ou iguais a pixels inteiros de uma imagem de referência. No caso de pixels de luminância, um filtro de interpolação de 8 toques baseado em DCT com coeficientes de filtro diferentes pode ser usado para gerar informações em pixels menores ou iguais a pixels inteiros em unidades de 1/4 pixels. No caso de sinais de crominância, um filtro de interpolação de 4 toques baseado em DCT com coeficientes de filtro diferentes pode ser usado para gerar informações em pixels menores ou iguais a pixels inteiros em unidades de 1/8 pixels.
[081] O preditor de movimento pode realizar predição de movimento com base na imagem de referência interpolada pelo interpolador de imagem de referência. Como um método para calcular um vetor de movimento, vários métodos, como um algoritmo de correspondência de bloco baseado em pesquisa completa (FBMA), um algoritmo de pesquisa em três etapas (TSS) e um novo algoritmo de pesquisa em três etapas (NTS) podem ser usados. O vetor de movimento pode ter um valor de vetor de movimento em unidades de 1/2 ou 1/4 pixels com base nos pixels interpolados. A unidade de predição de movimento pode prever a unidade de predição atual usando um método de predição de movimento de forma diferente. Como método de predição de movimento, vários métodos, como um método de salto, um método de mesclagem, um método de predição de vetor de movimento avançado (AMVP) e um método de cópia intrabloco podem ser usados.
[082] O intrapreditor 125 pode gerar uma unidade de predição com base nas informações de um pixel de referência próximo ao bloco atual, que são as informações do pixel na imagem atual. Quando o bloco próximo da unidade de predição atual é um bloco sujeito a interpredição e, portanto, o pixel de referência é um pixel sujeito a interpredição, as informações de pixel de referência do bloco próximo sujeito a intrapredição pode ser usada no lugar do pixel de referência incluído no bloco sujeito a interpredição. Ou seja, quando o pixel de referência não está disponível, pelo menos um pixel de referência disponível pode ser usado no lugar de informações de pixel de referência indisponíveis.
[083] Os modos de predição em intrapredição podem incluir um modo de predição direcional que usa informações de pixel de referência dependendo de uma direção de predição e um modo não direcional que não usa informações de direcionalidade ao realizar a predição. Um modo para prever informações de luminância e um modo para prever informações de crominância podem ser diferentes, e informações de modo intrapredição usadas para prever as informações de luminância, ou informações de sinal de luminância previstas podem ser utilizadas para prever as informações de crominância.
[084] Quando a intrapredição é realizada e a unidade de predição é igual em tamanho à unidade de transformação, a intrapredição pode ser realizada na unidade de predição com base em pixels localizados à esquerda da unidade de predição, pixels localizados no canto superior esquerdo da unidade de previsão e pixels localizados no topo da unidade de previsão. No entanto, quando a intrapredição é realizada e a unidade de predição é diferente em tamanho da unidade de transformação, a intrapredição pode ser realizada usando o pixel de referência com base na unidade de transformação. Além disso, intrapredição usando divisão N×N apenas para a unidade de codificação mínima pode ser usada.
[085] No método de intrapredição, um bloco de predição pode ser gerado após a aplicação de um filtro intrassuavização adaptativo (AIS) a um pixel de referência, dependendo do modo de predição. O tipo de filtro AIS aplicado ao pixel de referência pode variar. A fim de realizar o método de intrapredição, um modo de intrapredição da unidade de predição atual pode ser previsto a partir de um modo de intrapredição de uma unidade de predição perto da unidade de predição atual. Quando o modo de previsão da unidade de previsão atual é previsto usando informações de modo previstas a partir da unidade de previsão próxima, informações que indicam que a unidade de predição atual e a unidade de predição próxima têm o mesmo modo de predição podem ser transmitidas usando informações de sinalização predeterminadas quando o modo de intrapredição da unidade de predição atual é o mesmo que o modo de intrapredição da unidade de predição próxima, e a codificação de entropia pode ser realizada para codificar as informações do modo de predição do bloco atual quando o modo de predição da unidade de predição atual é diferente do modo de predição da unidade de predição próxima.
[086] Além disso, um bloco residual incluindo informações sobre um valor residual, que é uma diferença entre uma unidade de predição sujeita à predição e um bloco original da unidade de predição, pode ser gerado com base nas unidades de predição geradas pelos preditores 120 e 125. O bloco residual gerado pode ser inserido no transformador 130.
[087] O transformador 130 pode transformar o bloco residual incluindo as informações sobre o valor residual entre o bloco original e as unidades de predição geradas pelos preditores 120 e 125 com o uso de um método de transformação, tal como transformada discreta de cosseno (DCT), transformada de seno discreta (DST) e KLT. A aplicação de DCT, DST ou KLT para transformar o bloco residual pode ser determinada com base nas informações do modo intrapredição da unidade de predição usada para gerar o bloco residual
[088] O quantizador 135 pode quantizar valores que são transformados no domínio de frequência pelo transformador 130. Os coeficientes de quantização podem variar dependendo do bloco ou da importância de uma imagem. Os valores calculados pelo quantizador 135 podem ser fornecidos ao quantizador inverso 140 e ao reordenador 160.
[089] O reordenador 160 pode realizar a reordenação de valores de coeficiente nos valores residuais quantizados.
[090] O reordenador 160 pode alterar os coeficientes de uma forma de bloco bidimensional para uma forma de vetor unidimensional através de um método de varredura de coeficiente. Por exemplo, o reordenador 160 pode escanear coeficientes DC e até coeficientes de alta frequência usando um método de varredura em zigue-zague para alterar os coeficientes para uma forma de vetor unidimensional. Dependendo do modo de intrapredição e do tamanho da unidade de transformação, varredura vertical em que coeficientes de tipo de bloco bidimensional são varridos em uma direção de coluna ou varredura horizontal em que coeficientes de tipo de bloco bidimensional são varridos em uma direção de linha podem ser usados em vez da digitalização em zigue-zague. Ou seja, o reordenador pode determinar um método de varredura a ser usado entre a varredura em zigue-zague, a varredura vertical e a varredura horizontal, dependendo do tamanho da unidade de transformação e do modo de intrapredição.
[091] O codificador de entropia 165 pode realizar a codificação de entropia com base nos valores calculados pelo reordenador 160. A codificação de entropia pode usar, por exemplo, vários métodos de codificação, como codificação exponencial de Golomb, codificação de comprimento variável adaptável ao contexto (CAVLC) e codificação aritmética binária adaptável ao contexto (CABAC).
[092] O codificador de entropia 165 pode codificar uma variedade de informações, como informações de coeficiente de valor residual e informações de tipo de bloco da unidade de codificação, informações de modo de predição, informações de unidade de divisão, informações de unidade de predição, informações de unidade de transmissão, informações de vetor de movimento, informações de quadro de referência, informações de interpolação de bloco e informações de filtragem do reordenador 160 e dos preditores 120 e 125.
[093] O codificador de entropia 165 pode realizar a codificação de entropia nos valores de coeficiente da unidade de codificação de entrada do reordenador 160.
[094] O quantizador inverso 140 pode quantizar inversamente os valores quantizados pelo quantizador 135 e o transformador inverso 145 pode transformar inversamente os valores transformados pelo transformador 130. O valor residual gerado pelo quantizador inverso 140 e pelo transformador inverso 145 pode ser combinado com uma unidade de predição prevista através de um estimador de movimento, um compensador de movimento e um intrapreditor dos preditores 120 e 125 para gerar um bloco reconstruído.
[095] O filtro 150 pode aplicar pelo menos um dentre um filtro de desbloqueio, um corretor de deslocamento e um filtro de filtro de laço adaptativo (ALF).
[096] O filtro de desbloqueio pode remover a distorção de bloco que ocorreu devido a uma borda entre os blocos de uma imagem reconstruída. A fim de determinar se deve ser realizado o desbloqueio, a aplicação do filtro de desbloqueio ao bloco atual pode ser determinada com base nos pixels incluídos em várias linhas ou colunas do bloco. Quando o filtro de desbloqueio é aplicado ao bloco, um filtro forte ou um filtro fraco pode ser aplicado dependendo da força de filtragem de desbloqueio necessária. Além disso, quando o filtro de desbloqueio é aplicado, a filtragem vertical e a filtragem horizontal podem ser realizadas de modo que a filtragem horizontal e a filtragem vertical sejam processadas em paralelo.
[097] O corretor de deslocamento pode corrigir um deslocamento de uma imagem original em uma imagem sujeita a desbloqueio em unidades de pixels. Um método de classificação de pixels incluídos em uma imagem em um certo número de áreas, determinando-se uma área a ser sujeita a deslocamento, e aplicando-se um deslocamento à área determinada ou um método de aplicação de um deslocamento em consideração às informações de borda de cada pixel pode ser usado para realizar a correção de deslocamento em uma imagem particular.
[098] ALF pode ser executado com base em valores obtidos comparando-se a imagem reconstruída filtrada e a imagem original. Ao classificar os pixels incluídos na imagem em grupos predeterminados e determinar um filtro a ser aplicado a cada um dos grupos, a filtragem diferencial pode ser realizada para cada grupo. As informações sobre a aplicação de ALF podem ser transmitidas para cada unidade de codificação (CU), e a forma e os coeficientes de filtro de um filtro AFL a ser aplicado podem variar dependendo do bloco. Além disso, o filtro ALF na mesma forma (forma fixa) pode ser aplicado independentemente da característica de um bloco a ser filtrado.
[099] A memória 155 pode armazenar um bloco reconstruído ou imagem calculada através do filtro 150. O bloco reconstruído armazenado ou imagem pode ser fornecido aos preditores 120 e 125 quando a interpredição é realizada.
[100] A Figura 2 é um diagrama de blocos de um decodificador de vídeo de acordo com uma modalidade da presente invenção.
[101] Referindo-se à Figura 2, um decodificador de vídeo 200 pode incluir um decodificador de entropia 210, um reordenador 215, um quantizador inverso 220, um transformador inverso 225, preditores 230 e 235, um filtro 240 e uma memória
245.
[102] Quando um fluxo de bits de vídeo é recebido de um codificador de vídeo, o fluxo de bits de entrada pode ser decodificado em um procedimento reverso ao do codificador de vídeo.
[103] O decodificador de entropia 210 pode realizar a decodificação de entropia em um procedimento reverso ao procedimento no qual o codificador de entropia do codificador de vídeo realiza a codificação de entropia. Por exemplo, vários métodos, como codificação de Golomb exponencial, codificação de comprimento variável adaptável ao contexto (CAVLC) e codificação aritmética binária adaptável ao contexto (CABAC), podem ser aplicados para corresponder ao método realizado pelo codificador de vídeo.
[104] O decodificador de entropia 210 pode decodificar informações relacionadas à intrapredição e interpredição realizada pelo codificador.
[105] O reordenador 215 pode realizar o reordenamento no fluxo de bits sujeito a decodificação de entropia pelo decodificador de entropia 210 com base no método de reordenamento usado pelo codificador. O reordenador 215 pode reconstruir coeficientes expressos na forma de um vetor unidimensional em coeficientes de tipo de bloco bidimensional para reordenar os coeficientes de tipo de bloco bidimensional. O reordenador 215 pode receber informações relacionadas à varredura de coeficiente realizada pelo codificador e realizar a reordenação por meio de um método de varredura reversa com base na ordem de varredura do codificador.
[106] O quantizador inverso 220 pode realizar a quantização inversa com base nos valores de coeficiente de bloco reordenado e parâmetros de quantização fornecidos pelo codificador.
[107] O transformador inverso 225 pode realizar DCT inverso, DST inverso e KLT inverso em um resultado da quantização realizada pelo codificador de vídeo, em que o DCT inverso, o DST inverso e o KLT inverso são o inverso das transformações que foram realizadas pela unidade de transformação, ou seja, DCT, DST e KLT. A transformação inversa pode ser realizada com base em uma unidade de transmissão determinada pelo codificador de vídeo. No transformador inverso 225 do decodificador de vídeo, as técnicas de transformação (por exemplo, DCT, DST e KLT) podem ser realizadas seletivamente, dependendo de várias informações, como um método de predição, o tamanho do bloco atual e uma direção de predição.
[108] Os preditores 230 e 235 podem gerar um bloco de predição com base nas informações relacionadas à geração do bloco de predição, que é fornecida pelo decodificador de entropia 210, e informações sobre um bloco ou imagem previamente decodificado, que é fornecida pela memória
245.
[109] Conforme descrito acima, quando intrapredição é realizada da mesma maneira que aquela do codificador de vídeo e a unidade de predição é igual em tamanho à unidade de transformação, a intrapredição pode ser realizada na unidade de predição com base em pixels localizados à esquerda da unidade de predição, pixels localizados no canto superior esquerdo da unidade de predição e pixels localizados no topo da unidade de predição. Por outro lado, quando intrapredição é realizada e a unidade de predição é diferente em tamanho da unidade de transformação, a intrapredição pode ser realizada usando um pixel de referência com base na unidade de transformação. Além disso, intrapredição usando divisão N×N apenas para a unidade de codificação mínima pode ser usada.
[110] Os preditores 230 e 235 podem incluir um determinador de unidade de predição, um interpreditor e um intrapreditor. O determinador da unidade de predição pode receber uma variedade de informações, como informações da unidade de predição, informações do modo de predição para o método de intrapredição e informações relacionadas à predição de movimento para o método de interpredição do decodificador de entropia 210, classificar a unidade de predição na unidade de codificação atual e determinar se a unidade de predição realiza interpredição ou intrapredição. Ao usar as informações necessárias para a interpredição da unidade de predição atual fornecida pelo codificador de vídeo, o interpreditor 230 pode realizar a interpredição na unidade de predição atual com base nas informações incluídas em pelo menos uma de uma imagem anterior à imagem atual, incluindo a unidade de previsão atual ou uma imagem após a imagem atual. Alternativamente, a interpredição pode ser realizada com base em informações sobre algumas áreas pré-reconstruídas na imagem atual, incluindo a unidade de predição atual.
[111] O interpreditor 230 pode determinar se o método de predição de movimento para a unidade de predição incluída na unidade de codificação correspondente é um modo de ignorar, um modo de mesclagem, um modo AMVP ou um modo de cópia intrabloco com base na unidade de codificação para realizar a interpredição.
[112] O intrapreditor 235 pode gerar um bloco de predição com base nas informações em pixels na imagem atual. Quando a unidade de predição é uma unidade de predição sujeita a intrapredição, o intrapreditor 235 pode realizar intrapredição com base nas informações do modo de intrapredição da unidade de predição fornecida pelo codificador de vídeo. O intrapreditor 235 pode incluir um filtro AIS, um interpolador de pixel de referência e um filtro DC. O filtro AIS, que é uma parte que realiza a filtragem no pixel de referência do bloco atual, pode determinar se deve ser aplicada a filtragem dependendo do modo de previsão da unidade de previsão atual. O filtro AIS pode realizar a filtragem AIS no pixel de referência do bloco atual usando informações do filtro AIS e o modo de predição da unidade de predição fornecida pelo codificador de vídeo. Quando o modo de predição do bloco atual é um modo em que a filtragem AIS não é realizada, o filtro AIS pode não ser aplicado.
[113] Quando o modo de predição da unidade de predição é um modo de predição no qual intrapredição é realizada com base em um valor de pixel obtido pela interpolação do pixel de referência, o interpolador de pixel de referência pode interpolar o pixel de referência para gerar o pixel de referência em uma unidade de pixel menor ou igual a um inteiro. Quando o modo de predição da unidade de predição atual é um modo de predição no qual o bloco de predição é gerado sem interpolar o pixel de referência, o pixel de referência não pode ser interpolado. Quando o modo de previsão do bloco atual é um modo DC, o filtro DC pode gerar o bloco de previsão por meio da filtragem.
[114] O bloco reconstruído ou imagem pode ser fornecido ao filtro 240. O filtro 240 pode incluir um filtro de desbloqueio, um corretor de deslocamento e um filtro ALF.
[115] O filtro 240 pode receber informações sobre se o filtro de desbloqueio é aplicado a um bloco ou imagem correspondente ou informações sobre se um filtro forte ou um filtro fraco é aplicado quando o filtro de desbloqueio é aplicado a partir do codificador de vídeo. O filtro de desbloqueio do decodificador de vídeo pode receber informações relacionadas ao filtro de desbloqueio, que é fornecido pelo codificador de vídeo, e o decodificador de vídeo pode realizar a filtragem de desbloqueio em um bloco correspondente.
[116] O corretor de deslocamento pode executar correção de deslocamento na imagem reconstruída com base no tipo de correção de deslocamento, informações de valor de deslocamento e semelhantes que são aplicados à imagem após a codificação.
[117] O ALF pode ser aplicado à unidade de codificação com base nas informações sobre a aplicação do ALF, informações do coeficiente ALF e semelhantes que são fornecidos pelo codificador. As informações ALF podem ser fornecidas ao serem incluídas em um conjunto de parâmetros específico.
[118] A memória 245 pode armazenar a imagem reconstruída ou bloco de modo que a imagem ou bloco possa ser usado como uma imagem de referência ou um bloco de referência e também pode fornecer a imagem reconstruída para uma unidade de saída.
[119] A Figura 3 é um diagrama que mostra uma unidade de árvore de codificação básica de acordo com uma modalidade da presente invenção.
[120] Uma unidade de codificação de maior tamanho pode ser definida como um bloco de árvore de codificação. Uma imagem é dividida em uma pluralidade de unidades de árvore de codificação (CTUs). Uma unidade de árvore de codificação, que é uma unidade de codificação do maior tamanho, pode ser referida como uma unidade de codificação maior (LCU). A Figura 3 mostra um exemplo no qual uma imagem é dividida em uma pluralidade de unidades de árvore de codificação.
[121] O tamanho da unidade da árvore de codificação pode ser definido ao nível da imagem ou ao nível da sequência. Para este fim, as informações que indicam o tamanho da unidade da árvore de codificação podem ser sinalizadas através de um conjunto de parâmetros de imagem ou um conjunto de parâmetros de sequência.
[122] Como exemplo, o tamanho da unidade de árvore de codificação para a imagem inteira em uma sequência pode ser definido para 128×128. Alternativamente, um de 128×128 ou 256×256 pode ser determinado como o tamanho da unidade da árvore de codificação no nível da imagem. Como um exemplo, o tamanho de uma unidade de árvore de codificação em uma primeira imagem pode ser definido para 128x128, e o tamanho de uma unidade de árvore de codificação em uma segunda imagem pode ser definido para 256x256.
[123] A unidade da árvore de codificação pode ser dividida para gerar um bloco de codificação. Um bloco de codificação indica uma unidade básica para o processamento de codificação ou decodificação. Como um exemplo, a predição ou transformação pode ser realizada para cada bloco de codificação, ou um modo de predição pode ser determinado para cada bloco de codificação. Aqui, o modo de predição indica um método de geração de uma imagem de predição. Como um exemplo, o modo de predição pode incluir intrapredição, interpredição, referência de imagem atual (CPR) (ou cópia intrabloco (IBC)) ou predição combinada. Um bloco de predição para um bloco de codificação pode ser gerado usando pelo menos um modo de predição entre intrapredição, interpredição, referência de imagem atual ou predição combinada para o bloco de codificação.
[124] As informações que indicam o modo de predição do bloco atual podem ser sinalizadas em um fluxo de bits. Como um exemplo, as informações podem ser um sinalizador de 1 bit indicando se o modo de predição é intramodo ou intermodo. A referência da imagem atual ou predição combinada pode estar disponível apenas quando é determinado que o modo de predição do bloco atual é o intermodo.
[125] A referência da imagem atual é para definir a imagem atual como a imagem de referência e adquirir o bloco de predição do bloco atual de uma área da imagem atual onde a codificação ou decodificação é concluída. Aqui, a imagem atual refere-se a uma imagem que inclui o bloco atual. As informações que indicam que a referência da imagem atual é aplicada ao bloco atual podem ser sinalizadas em um fluxo de bits. Por exemplo, as informações podem ser uma sinalizador de 1 bit. Pode ser determinado que o modo de predição do bloco atual é a referência da imagem atual quando o sinalizador é verdadeiro, e pode ser determinado que o modo de predição do bloco atual é interpredição quando o sinalizador é falso.
[126] Alternativamente, o modo de predição do bloco atual pode ser determinado com base em um índice de imagem de referência. A título de exemplo, quando o índice de imagem de referência indica a imagem atual, pode ser determinado que o modo de predição do bloco atual é a referência da imagem atual. Quando o índice de imagem de referência indica uma imagem diferente da imagem atual, pode ser determinado que o modo de predição do bloco atual é interpredição. Ou seja, a referência de imagem atual é um método de predição que usa informações de uma área da imagem atual onde a codificação ou decodificação é concluída, e a interpredição é um método de predição que usa informações de outra imagem onde a codificação ou decodificação é concluída.
[127] A predição combinada indica um modo de codificação obtido pela combinação de dois ou mais de intrapredição, interpredição e referência de imagem atual. Como um exemplo, quando a predição combinada é aplicada, um primeiro bloco de predição pode ser gerado com base em um de intrapredição, interpredição ou referência de imagem atual e um segundo bloco de predição pode ser gerado com base em outro. Quando o primeiro bloco de predição e o segundo bloco de predição são gerados, um bloco de predição final pode ser gerado por meio de uma operação de média ou uma operação de soma ponderada entre o primeiro bloco de predição e o segundo bloco de predição. As informações que indicam se a predição combinada é aplicada podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit.
[128] A Figura 4 é um diagrama que mostra vários tipos de divisão de um bloco de codificação.
[129] Um bloco de codificação pode ser dividido em uma pluralidade de blocos de codificação com base na divisão em árvore quádrupla, divisão em árvore binária ou divisão em árvore tripla. Um bloco de codificação obtido através da divisão pode ser redividido em uma pluralidade de blocos de codificação com base na divisão em árvore quádrupla, divisão em árvore binária ou divisão em árvore tripla.
[130] A divisão em árvore quádrupla indica uma técnica de divisão para dividir o bloco atual em quatro blocos. Como resultado da divisão em árvore quádrupla, o bloco atual pode ser dividido em quatro partições quadradas (ver "SPLIT_QT" da Figura 4A).
[131] A divisão em árvore binária indica uma técnica de divisão para dividir o bloco atual em dois blocos. A divisão do bloco atual em dois blocos em uma direção vertical (ou seja, usando uma linha vertical através do bloco atual) pode ser referida como divisão de árvore binária vertical, e dividir o bloco atual em dois blocos em uma direção horizontal (isto é, usando uma linha horizontal através do bloco atual) pode ser referido como divisão horizontal de árvore binária. Como resultado da divisão da árvore binária, o bloco atual pode ser dividido em duas partições não quadradas. Na Figura 4B, “SPLIT_BT_VER” representa um resultado da divisão da árvore binária vertical. Na Figura 4C, “SPLIT_BT_HOR” representa um resultado da divisão da árvore binária horizontal.
[132] A divisão de árvore tripla indica uma técnica de divisão para dividir o bloco atual em três blocos. A divisão do bloco atual em três blocos em uma direção vertical (ou seja, usando duas linhas verticais através do bloco atual) pode ser referida como divisão de árvore tripla vertical, e dividir o bloco atual em três blocos em uma direção horizontal (isto é, usando duas linhas horizontais através do bloco atual) pode ser referido como divisão de árvore tripla horizontal.
Como resultado da divisão da árvore tripla, o bloco atual pode ser dividido em três partições não quadradas. Neste caso, a largura e a altura da partição localizada no centro do bloco atual podem ser o dobro das outras partições. Na Figura 4D, “'SPLIT_TT_VER'“ representa um resultado da divisão vertical da árvore tripla. Na Figura 4E, “SPLIT_TT_HOR” representa um resultado da divisão da árvore tripla horizontal.
[133] O número de vezes que uma unidade de árvore de codificação é dividida pode ser definido como uma profundidade de divisão (profundidade de partição). A profundidade máxima de divisão da unidade de árvore de codificação pode ser determinada no nível da sequência ou no nível da imagem. Assim, a profundidade máxima de divisão da unidade da árvore de codificação pode variar dependendo da sequência ou da imagem.
[134] Alternativamente, a profundidade máxima de divisão pode ser determinada individualmente para cada técnica de divisão. Como um exemplo, a profundidade de divisão máxima permitida para divisão de árvore quádrupla pode ser diferente da profundidade de divisão máxima permitida para divisão de árvore binária e/ou divisão de árvore tripla.
[135] O codificador pode sinalizar informações indicando pelo menos um do tipo de divisão ou a profundidade de divisão do bloco atual em um fluxo de bits. O decodificador pode determinar o tipo de divisão e a profundidade de divisão da unidade de árvore de codificação com base nas informações analisadas a partir do fluxo de bits.
[136] A Figura 5 é um diagrama que ilustra um aspecto de divisão de uma unidade de árvore de codificação.
[137] A divisão de um bloco de codificação usando uma técnica de divisão, como divisão de árvore quádrupla, divisão de árvore binária e/ou divisão de árvore tripla, pode ser referida como divisão de árvore múltipla.
[138] Os blocos de codificação gerados pela aplicação de divisão de árvores múltiplas ao bloco de codificação podem ser referidos como blocos de codificação inferiores. Quando a profundidade de divisão do bloco de codificação é k, a profundidade de divisão dos blocos de codificação inferiores é definida como k+1.
[139] Pelo contrário, no que diz respeito aos blocos de codificação com uma profundidade de divisão de k+1, um bloco de codificação com uma profundidade de divisão de k pode ser referido como um bloco de codificação superior.
[140] O tipo de divisão do bloco de codificação atual pode ser determinado com base em pelo menos um do tipo de divisão do bloco de codificação superior ou do tipo de divisão de um bloco de codificação vizinho. Aqui, o bloco de codificação vizinho é adjacente ao bloco de codificação atual e pode incluir pelo menos um de um bloco vizinho localizado acima do bloco de codificação atual, um bloco vizinho localizado à esquerda do bloco de codificação atual ou um bloco vizinho adjacente ao canto superior esquerdo do bloco de codificação atual. Aqui, o tipo de divisão pode incluir pelo menos um dentre a presença de divisão de árvore quádrupla, a presença de divisão de árvore binária, a direção de divisão de árvore binária, a presença de divisão de árvore tripla ou a direção de árvore tripla divisão.
[141] A fim de determinar o tipo de divisão do bloco de codificação, as informações que indicam se o bloco de codificação está dividido podem ser sinalizadas em um fluxo de bits. As informações são um sinalizador de 1 bit “split_cu_flag,” e o sinalizador sendo verdadeiro indica que o bloco de codificação é dividido por uma técnica de divisão multiárvore.
[142] Quando split_cu_flag for verdadeiro, as informações que indicam se o bloco de codificação é dividido através da divisão árvore quádrupla pode ser sinalizada em um fluxo de bits. As informações são um sinalizador de 1 bit “split_qt_flag,” e quando o sinalizador for verdadeiro, o bloco de codificação pode ser dividido em quatro blocos.
[143] Por exemplo, é mostrado na Figura 5 que quatro blocos de codificação com uma profundidade de divisão de um são gerados porque a unidade da árvore de codificação é dividida através da divisão de árvore quádrupla. Também é mostrado que a divisão de árvore quádrupla é reaplicada ao primeiro bloco de codificação e ao quarto bloco de codificação entre os quatro blocos de codificação gerados pela execução da divisão de árvore quádrupla. Como resultado, quatro blocos de codificação com uma profundidade de divisão de dois podem ser gerados.
[144] Além disso, ao reaplicar a divisão de árvore quádrupla a um bloco de codificação com uma profundidade de divisão de dois, um bloco de codificação com uma profundidade de divisão de três pode ser gerado.
[145] Quando a divisão de árvore quádrupla não é aplicada a um bloco de codificação, se deve realizar a divisão de árvore binária ou divisão de árvore tripla no bloco de codificação pode ser determinada em consideração a pelo menos um dentre o tamanho do bloco de codificação, a possibilidade de o bloco de codificação estar localizado em uma borda da imagem, a profundidade máxima de divisão ou o aspecto de divisão de um bloco vizinho. Quando é determinado que a divisão da árvore binária ou divisão da árvore tripla é realizada no bloco de codificação, as informações que indicam que uma direção da divisão pode ser sinalizada em um fluxo de bits. As informações podem ser um sinalizador de 1 bit mtt_split_cu_vertical_flag. Com base no sinalizador, pode-se determinar se a direção da divisão é vertical ou horizontal. Além disso, as informações que indicam qual divisão de árvore binária e divisão de árvore tripla é aplicada ao bloco de codificação pode ser sinalizada em um fluxo de bits. As informações podem ser um sinalizador de 1 bit mtt_split_cu_binary_flag. Com base no sinalizador, pode-se determinar se a divisão da árvore binária ou a divisão da árvore tripla é aplicada ao bloco de codificação.
[146] Como exemplo, é mostrado na Figura 5 que a divisão da árvore binária vertical é aplicada a um bloco de codificação com uma profundidade de divisão de um, a divisão da árvore tripla vertical é aplicada a um bloco de codificação esquerdo entre os blocos de codificação gerados como resultado da divisão da árvore binária vertical, e a divisão vertical da árvore binária é aplicada a um bloco de codificação direito.
[147] Uma vez que uma imagem é dividida em unidades de árvore de codificação, um bloco menor do que um tamanho predefinido pode estar presente em uma área adjacente a uma borda direita ou uma borda inferior da imagem. Quando se assume que o bloco é uma unidade de árvore de codificação, uma unidade de árvore de codificação menor que um tamanho predefinido pode ser gerada na borda direita ou na borda inferior da imagem. Neste caso, o tamanho da unidade da árvore de codificação pode ser determinado com base nas informações sinalizadas através de um conjunto de parâmetros de sequência ou um conjunto de parâmetros de imagem.
[148] A Figura 6 mostra um exemplo no qual um bloco menor do que uma unidade de árvore de codificação de um tamanho predeterminado ocorre em uma borda da imagem.
[149] Quando uma imagem 1292×1080 é dividida em unidades de árvore de codificação 128×128, um bloco menor do que 128×128 está presente em uma borda direita e uma borda inferior da imagem no exemplo mostrado na Figura 6. Nas modalidades a seguir, um bloco menor do que uma unidade de árvore de codificação de um tamanho predefinido que ocorre em uma borda da imagem é referido como um bloco de borda de limite atípico.
[150] Apenas um método de divisão predefinido pode ser permitido para o bloco de borda de limite atípico. Aqui, o método de divisão predefinido pode incluir pelo menos um de divisão de árvore quádrupla, divisão de árvore tripla ou divisão de árvore binária.
[151] Como um exemplo, apenas a divisão quad- tree pode ser permitida para um bloco de borda de limite atípico. Neste caso, a divisão de árvore quádrupla pode ser repetida até que o bloco correspondente à borda da imagem se torne um tamanho mínimo de divisão de árvore quádrupla. Aqui, o tamanho mínimo de divisão de árvore quádrupla pode ser predefinido em um codificador e um decodificador. Alternativamente, as informações que indicam o tamanho mínimo de divisão de árvore quádrupla podem ser sinalizadas em um fluxo de bits.
[152] A Figura 7 é um diagrama que mostra um exemplo no qual a divisão de árvore quádrupla é realizada em um bloco de borda de limite atípico. Por conveniência de descrição, assume-se que o tamanho mínimo de divisão de árvore quádrupla é 4×4.
[153] O bloco de borda de limite atípico pode ser dividido na base de um bloco quadrado. O bloco quadrado pode ser derivado com base em um maior entre a largura e a altura do bloco de borda de limite atípico. Como um exemplo, uma potência de 2 maior do que o valor de referência e mais próxima do valor de referência pode ser considerada como o comprimento de um lado do bloco quadrado. Como exemplo, um bloco de 12×20 mostrado na Figura 7 pode ser considerado como pertencente a um bloco de 32×32 e o resultado da divisão para o bloco de 32×32 pode ser aplicado ao bloco de 12×20.
[154] Quando a divisão árvore quádrupla é realizada no bloco 12×20, o bloco pode ser dividido em um bloco 12×16 e um bloco 12×4. Quando a divisão árvore quádrupla é realizada em cada um dos blocos, o bloco 12×16 é dividido em dois blocos 8×8 e dois blocos 4×8, e o bloco 12×4 é dividido em um bloco 8×4 e um 4×4 bloco.
[155] A divisão de árvore quádrupla pode ser realizada novamente no bloco 4×8 localizado na borda da imagem novamente e, portanto, dois blocos 4×4 podem ser gerados. De modo semelhante, a divisão de árvore quádrupla pode ser realizada novamente no bloco 8×8 localizado na borda da imagem e, portanto, dois blocos 4×4 podem ser gerados.
[156] Alternativamente, quando pelo menos uma da largura ou altura de um bloco é menor ou igual ao tamanho mínimo de divisão de árvore quádrupla, a divisão de árvore binária pode ser realizada. Aqui, o tamanho mínimo de divisão de árvore quádrupla pode indicar uma largura de divisão de árvore quádrupla mínima ou uma altura mínima de divisão de árvore quádrupla. Por exemplo, quando o tamanho mínimo de divisão de árvore quádrupla é 4×4, a largura de divisão de árvore quádrupla mínima e a altura de divisão de árvore quádrupla mínima pode ser 4.
[157] Neste caso, a divisão da árvore binária vertical pode ser realizada quando a largura do bloco é menor ou igual ao tamanho mínimo da divisão da árvore quádrupla, e a divisão da árvore binária horizontal pode ser realizada quando a altura do bloco é menor ou igual à altura mínima de divisão de árvore quádrupla.
[158] Pelo contrário, a divisão de árvore quádrupla pode ser realizada quando a largura ou altura do bloco é maior que o tamanho mínimo de divisão de árvore quádrupla. Por exemplo, quando a localização superior direita e a localização inferior esquerda do bloco se desvia da imagem e a largura ou altura do bloco é maior do que o tamanho mínimo de divisão de árvore quádrupla, a divisão de árvore quádrupla pode ser aplicada ao bloco correspondente.
[159] A Figura 8 é um diagrama que mostra um exemplo em que a divisão de árvore quádrupla é executada em um bloco adjacente a uma borda direita e uma borda inferior de uma imagem. Por conveniência de descrição, assume-se que o tamanho mínimo de divisão de árvore quádrupla é 4×4.
[160] No exemplo mostrado na Figura 8, quando a divisão de árvore quádrupla é realizada em um bloco de 32×32 incluindo um bloco de 12×20, quatro blocos de 16×16 são gerados. Entre os blocos gerados, a divisão de árvore quádrupla pode ser realizada novamente em dois blocos 16×16, incluindo dados de textura. Como resultado, a coordenada x e a coordenada y podem se desviar da borda da imagem e um bloco 8×8 incluindo dados de textura com um tamanho de 4×4 pode ser gerado. Uma vez que a largura e a altura do bloco 8×8 são maiores do que o tamanho mínimo de divisão de árvore quádrupla, a divisão de árvore quádrupla pode ser realizada no bloco correspondente.
[161] Quando a divisão árvore quádrupla é realizada em um bloco 12×20, o bloco 12×20 pode ser dividido em um bloco 12×16 e um bloco 12×4. Quando a divisão árvore quádrupla é realizada novamente nos blocos, o bloco 12×16 é dividido em dois blocos 8×8 e dois blocos 4×8, e o bloco 12×4 é dividido em um bloco 8×4 e um 4×4 bloco.
[162] Uma vez que a largura de um bloco 4×8 localizado na borda da imagem é igual ao tamanho mínimo da divisão da árvore quádrupla, a divisão da árvore binária pode ser realizada no bloco 4×8. Em detalhes, a divisão vertical da árvore binária pode ser realizada com base em um bloco quadrado (ou seja, 8×8) incluindo um bloco 4×8.
[163] Além disso, uma vez que a largura de um bloco 8×4 localizado na borda da imagem é igual ao tamanho mínimo da divisão da árvore quádrupla, a divisão da árvore binária pode ser realizada no bloco 8×4. Em detalhes, a divisão horizontal da árvore binária pode ser realizada com base em um bloco quadrado (ou seja, 8×8) incluindo um bloco 4×8.
[164] Como resultado da divisão, o bloco 8×4, o bloco 4×4 e o bloco 4×8 podem estar localizados adjacentes à borda da imagem.
[165] Alternativamente, quando pelo menos um da largura ou altura de um bloco é menor ou igual a um valor limiar, a divisão da árvore binária pode ser realizada. Caso contrário, a divisão de árvore quádrupla pode ser executada. Aqui, o valor limiar pode ser derivado com base no tamanho de divisão de árvore quádrupla mínimo. Por exemplo, quando o tamanho mínimo de divisão de árvore quádrupla é minQTsize, o valor limiar pode ser definido como "minQTsize<<1." Alternativamente, as informações para determinar o valor limiar podem ser sinalizadas separadamente em um fluxo de bits.
[166] A Figura 9 é um diagrama que mostra um aspecto de divisão de um bloco adjacente a uma borda da imagem. Por conveniência de descrição, assume-se que o tamanho mínimo de divisão de árvore quádrupla é 4×4. O valor limiar pode ser definido como 8.
[167] Primeiro, a divisão de árvore quádrupla pode ser realizada no bloco 12×20. Como resultado, o bloco pode ser dividido em um bloco 12×16 e um bloco 12×4. Uma vez que a largura e a altura do bloco 12×16 são maiores do que um valor limiar, a divisão de árvore quádrupla pode ser aplicada ao bloco. Por conseguinte, o bloco pode ser dividido em dois blocos de 8×8 e dois blocos de 4×8.
[168] A largura do bloco 12×4 é maior que um valor limiar. Por conseguinte, a divisão árvore quádrupla pode ser aplicada ao bloco 12×4. Como resultado, o bloco pode ser dividido em um bloco 8×4 e um bloco 4×4.
[169] Posteriormente, uma vez que as larguras e alturas do bloco 4×8 e do bloco 8×4 localizado na borda da imagem são menores ou iguais ao valor limiar, a divisão da árvore binária pode ser aplicada aos blocos.
[170] Ao contrário do exemplo acima, quando pelo menos uma da largura ou altura de um bloco é maior do que o valor limiar, a divisão da árvore binária pode ser realizada.
Caso contrário, a divisão de árvore quádrupla pode ser executada.
[171] Alternativamente, apenas a divisão de árvore quádrupla ou divisão de árvore binária pode ser aplicada a um bloco de borda de limite atípico. Como exemplo, a divisão de árvore quádrupla pode ser repetida até que um bloco localizado na borda da imagem tenha o tamanho mínimo, ou a divisão da árvore binária pode ser repetida até que um bloco localizado na borda da imagem tenha o tamanho mínimo.
[172] Um bloco de borda de limite atípico pode ser definido como uma unidade de codificação. Um modo de salto pode ser aplicado fixamente a um bloco de borda de limite atípico ou todos os coeficientes de transformação podem ser definidos como 0. Assim, o valor de um sinalizador de bloco codificado (CBF) indicando se o bloco de borda de limite atípico tem coeficientes de transformação diferente de zero pode ser definido como 0. Uma unidade de codificação codificada no modo de salto ou uma unidade de codificação tendo um coeficiente de transformação definido como 0 pode ser referida como uma unidade de codificação de limite zero.
[173] Alternativamente, comparando pelo menos um da largura ou altura de um bloco de codificação gerado pela divisão do bloco de borda de limite atípico com o valor limiar, se deve definir a unidade de codificação correspondente como a unidade de codificação de zero de limite pode ser determinado. Como um exemplo, um bloco de codificação em que pelo menos uma dentre a largura ou altura do bloco de codificação é menor do que o valor limiar pode ser codificado no modo de salto, ou os coeficientes de transformação podem ser ajustados para 0.
[174] A Figura 10 é um diagrama que mostra um aspecto de codificação de um bloco adjacente a uma borda da imagem. Presume-se que o valor limiar seja 8.
[175] Um bloco de codificação em que pelo menos um da largura ou altura é menor do que o valor limiar entre os blocos de codificação gerados pela divisão do bloco de borda de limite atípico pode ser definido como a unidade de codificação de zero de limite.
[176] Como um exemplo, no exemplo mostrado na Figura 10, o bloco de codificação 4×16, o bloco de codificação 8×4 e o bloco de codificação 4×4 podem ser definidos como unidades de codificação de zero de limite. Por conseguinte, os blocos podem ser codificados no modo de salto, ou os coeficientes de transformação dos blocos podem ser ajustados para 0.
[177] Se o modo de salto ou o coeficiente de transformação é definido como 0 pode ser aplicado seletivamente a um bloco de codificação com uma largura e altura maior ou igual a um valor limiar. Para este fim, um sinalizador indicando se o modo de salto é aplicado ao bloco de codificação ou um sinalizador indicando se o coeficiente de transformação está definido como 0 pode ser codificado e sinalizado.
[178] Alternativamente, apenas unidades de codificação geradas pela divisão de árvore binária podem ser definidas como unidades de codificação de zero de limite. Alternativamente, apenas unidades de codificação geradas pela divisão de árvore quádrupla podem ser definidas como unidades de codificação de zero de limite.
[179] A interpredição é um modo de predição em que o bloco atual é predito usando as informações da imagem anterior. A título de exemplo, um bloco incluído na imagem anterior e colocado no mesmo local que aquele do bloco atual (doravante referido como um bloco colocado) pode ser definido como um bloco de predição do bloco atual. Um bloco de predição gerado com base em um bloco colocado no mesmo local que aquele do bloco atual será referido como um bloco de predição colocado.
[180] Enquanto isso, quando um objeto presente na imagem anterior é movido para um local diferente na imagem atual, o bloco atual pode ser efetivamente previsto usando o movimento do objeto. Por exemplo, quando a direção do movimento e o tamanho do objeto podem ser encontrados comparando a imagem anterior com a imagem atual, um bloco de predição (ou uma imagem de previsão) do bloco atual pode ser gerado em consideração às informações de movimento do objeto. Daqui em diante, o bloco de predição gerado usando as informações de movimento pode ser referido como um bloco de predição de movimento.
[181] Um bloco residual pode ser gerado subtraindo o bloco de predição do bloco atual. Neste momento, quando o movimento do objeto está presente, é possível reduzir a energia do bloco residual e, consequentemente, é possível melhorar o desempenho de compressão do bloco residual usando um bloco de predição de movimento em vez do bloco de predição colocado.
[182] Conforme descrito acima, gerar um bloco de predição usando informações de movimento pode ser referido como previsão de compensação de movimento. Na interpredição, um bloco de predição pode geralmente ser gerado com base na predição de compensação de movimento.
[183] As informações de movimento podem incluir pelo menos um de um vetor de movimento, um índice de imagem de referência, uma direção de predição ou um índice de peso bidirecional. O vetor de movimento indica a direção do movimento e o tamanho do objeto. O índice de imagem de referência especifica uma imagem de referência do bloco atual entre as imagens de referência incluídas em uma lista de imagens de referência. A direção de predição indica uma de predição L0 unidirecional, predição L1 unidirecional ou predição bidirecional (predição L0 e predição L1). Pelo menos uma das informações de movimento de direção L0 ou informações de movimento de direção L1 pode ser usada dependendo da direção de predição do bloco atual. O índice de peso bidirecional especifica um peso aplicado a um bloco de previsão L0 e um peso aplicado a um bloco de previsão L1.
[184] A Figura 11 é um fluxograma de um método de interpredição de acordo com uma modalidade da presente invenção.
[185] Referindo-se à Figura 11, o método de interpredição inclui determinar um modo de interpredição do bloco atual (S1101), adquirir informações de movimento do bloco atual de acordo com o modo de interpredição determinado (S1102) e realizar predição de compensação de movimento no bloco atual com base nas informações de movimento adquiridas (S1103).
[186] Aqui, o modo de interpredição, que representa várias técnicas para determinar as informações de movimento do bloco atual, pode incluir um modo de interpredição usando informações de movimento de tradução e um modo de interpredição usando informações de movimento afins. Como um exemplo, o modo de interpredição usando informações de movimento de tradução pode incluir um modo de mesclagem e um modo de predição de vetor de movimento, e o modo de interpredição usando informações de movimento afim pode incluir um modo de mesclagem afim e um modo de predição de vetor de movimento afim. As informações de movimento do bloco atual podem ser determinadas com base nas informações analisadas a partir do fluxo de bits ou dos blocos vizinhos ao bloco atual de acordo com o modo de interpredição.
[187] O método de interpredição usando informações de movimento de tradução será descrito em detalhes abaixo.
[188] As informações de movimento do bloco atual podem ser derivadas de informações de movimento de um bloco diferente do bloco atual. Aqui, o outro bloco pode ser um bloco que é codificado ou decodificado por meio de interpredição anterior ao bloco atual. Definir as informações de movimento do bloco atual para serem iguais às informações de movimento do outro bloco pode ser definido como um modo de mesclagem. Além disso, configurar o vetor de movimento do outro bloco como um valor de predição do vetor de movimento do bloco atual pode ser definido como um modo de predição de vetor de movimento.
[189] A Figura 12 é um fluxograma de um processo de derivar informações de movimento do bloco atual em um modo de mesclagem.
[190] Um candidato a mesclagem do bloco atual pode ser derivado (S1201). O candidato a mesclagem do bloco atual pode ser derivado de um bloco que é codificado ou decodificado por interpredição anterior ao bloco atual.
[191] A Figura 13 é um diagrama que ilustra os blocos candidatos usados para derivar um candidato a mesclagem.
[192] Os blocos candidatos podem incluir pelo menos um dos blocos vizinhos, incluindo uma amostra adjacente ao bloco atual ou blocos não vizinhos, incluindo uma amostra não adjacente ao bloco atual. Doravante, as amostras para determinar os blocos candidatos são definidas como amostras de referência. Além disso, uma amostra de referência adjacente ao bloco atual será referida como uma amostra de referência vizinha, e uma amostra de referência não adjacente ao bloco atual será referida como uma amostra de referência não vizinha.
[193] A amostra de referência vizinha pode ser incluída em uma coluna vizinha à coluna mais à esquerda do bloco atual ou uma linha vizinha à linha superior do bloco atual. Por exemplo, quando as coordenadas da amostra superior esquerda do bloco atual são (0, 0), pelo menos uma de um bloco que inclui uma amostra de referência localizada em (-1, H-1), um bloco que inclui uma amostra de referência localizada em (W-1, -1), um bloco que inclui uma amostra de referência localizada em (W, -1), um bloco que inclui uma amostra de referência localizada em (-1, H), ou um bloco que inclui uma amostra de referência localizada em (-1, -1) pode ser usado como um bloco candidato. Com referência ao desenho, blocos vizinhos com índices de 0 a 4 podem ser usados como blocos candidatos.
[194] Uma amostra de referência não vizinha indica uma amostra em que pelo menos um de uma distância do eixo geométrico x ou uma distância do eixo geométrico y da amostra de referência adjacente ao bloco atual tem um valor predefinido. Como exemplo, pelo menos um de um bloco que inclui uma amostra de referência em que uma distância do eixo geométrico x de uma amostra de referência esquerda tem um valor predefinido, um bloco que inclui uma amostra não vizinha na qual uma distância do eixo geométrico y de uma amostra referência superior tem um valor predefinido, ou um bloco que inclui uma amostra não vizinha na qual uma distância do eixo geométrico x e uma distância do eixo geométrico y de uma amostra de referência superior esquerda têm um valor predefinido pode ser usado como um bloco candidato. O valor predefinido pode ser um número natural, como 4, 8, 12 e 16. Com referência ao desenho, pelo menos um dos blocos com índices de 5 a 26 pode ser usado como bloco candidato.
[195] Uma amostra não localizada na mesma linha vertical, linha horizontal ou linha diagonal que a de uma amostra de referência vizinha pode ser definida como uma amostra de referência não vizinha.
[196] A Figura 14 é um diagrama que mostra os locais das amostras de referência.
[197] Como no exemplo mostrado na Figura 14, as coordenadas x das amostras de referência não vizinhas superiores podem ser definidas para serem diferentes das coordenadas x das amostras de referência vizinhas superiores. Como exemplo, quando a localização da amostra de referência vizinha superior é (W-1, -1), a localização da amostra de referência não vizinha superior espaçada da amostra de referência vizinha superior por N no eixo geométrico y é definida para ((W/2)-1, -1-N), e a localização da amostra de referência não vizinha superior espaçada da amostra de referência vizinha superior no eixo geométrico y por 2N pode ser definida como (0, -1-2N). Ou seja, a localização da amostra de referência não adjacente pode ser determinada com base na localização da amostra de referência adjacente e uma distância da amostra de referência adjacente.
[198] Doravante, entre os blocos candidatos, um bloco candidato que inclui uma amostra de referência vizinha será referido como um bloco vizinho e um bloco que inclui uma amostra de referência não vizinha será referido como um bloco não vizinho.
[199] Quando a distância entre o bloco atual e o bloco candidato é maior ou igual a um valor limiar, o bloco candidato pode ser definido como indisponível como o candidato a mesclagem. O valor limiar pode ser determinado com base no tamanho da unidade da árvore de codificação. Como exemplo, o valor limiar pode ser definido para a altura da unidade de árvore de codificação (ctu_height) ou a altura da unidade de árvore de codificação mais ou menos um deslocamento (por exemplo, ctu_height ± N). O deslocamento N, que é um valor predefinido em um codificador ou decodificador, pode ser definido como 4, 8, 16, 32 ou ctu_height.
[200] Quando uma distância entre a coordenada y do bloco atual e a coordenada y de uma amostra incluída no bloco candidato é maior do que o valor limiar, pode ser determinado que o bloco candidato não está disponível como um candidato a mesclagem.
[201] Alternativamente, um bloco candidato que não pertence à mesma unidade da árvore de codificação que o bloco atual pode ser definido como indisponível como o candidato a mesclagem. Por exemplo, quando a amostra de referência se desvia da borda superior da unidade da árvore de codificação à qual o bloco atual pertence, o bloco candidato incluindo a amostra de referência pode ser definido como indisponível como um candidato a mesclagem.
[202] Quando a borda superior do bloco atual está adjacente à borda superior da unidade de árvore de codificação, pode ser determinado que uma pluralidade de blocos candidatos não estão disponíveis como candidatos de mesclagem e a eficiência de codificação ou decodificação do bloco atual pode ser reduzida. Para resolver tal problema, os blocos candidatos podem ser configurados de modo que o número de blocos candidatos localizados à esquerda do bloco atual seja maior do que o número de blocos candidatos localizados acima do bloco atual.
[203] A Figura 15 é um diagrama que ilustra os blocos candidatos usados para derivar um candidato a mesclagem.
[204] Como no exemplo mostrado na Figura 15, blocos superiores pertencentes a N colunas de bloco superior do bloco atual e blocos esquerdos pertencentes a M colunas de bloco esquerdo do bloco atual podem ser definidos como blocos candidatos. Neste caso, ao definir M para que seja maior do que N, o número de blocos candidatos à esquerda pode ser definido para ser maior do que o número de blocos candidatos superiores.
[205] Como exemplo, uma configuração pode ser feita de modo que uma diferença entre a coordenada y da amostra de referência no bloco atual e a coordenada y de um bloco superior disponível como um bloco candidato não ultrapasse N vezes a altura do bloco atual. Além disso, uma configuração pode ser feita de modo que uma diferença entre a coordenada x da amostra de referência no bloco atual e a coordenada x de um bloco esquerdo disponível como um bloco candidato não ultrapasse M vezes a largura do bloco atual.
[206] Como exemplo, é mostrado na Figura 15 que os blocos pertencentes às duas colunas do bloco superior do bloco atual e os blocos pertencentes às cinco colunas do bloco esquerdo do bloco atual são definidos como blocos candidatos.
[207] Como outro exemplo, quando um bloco candidato não pertence à unidade da árvore de codificação de amostra como o bloco atual, um candidato a mesclagem pode ser derivado usando um bloco pertencente à mesma unidade da árvore de codificação que o bloco atual ou um bloco que inclui uma amostra de referência adjacente a uma borda da unidade da árvore de codificação em vez do bloco candidato.
[208] A Figura 16 é um diagrama que mostra um exemplo em que a localização de uma amostra de referência é alterada.
[209] Quando a amostra de referência é incluída em uma unidade de árvore de codificação diferente daquela do bloco atual e não é adjacente à borda da unidade de árvore de codificação, um bloco candidato pode ser determinado usando uma amostra de referência adjacente à borda da unidade de árvore de codificação em vez da amostra de referência.
[210] A título de exemplo, nos exemplos mostrados nas Figuras 16A e 16B, quando uma borda superior do bloco atual é contígua a uma borda superior da unidade da árvore de codificação, as amostras de referência localizadas acima do bloco atual pertencem a uma unidade da árvore de codificação diferente daquela do bloco atual. Uma amostra de referência não adjacente à borda superior da unidade da árvore de codificação entre as amostras de referência pertencentes à unidade da árvore de codificação diferente daquela do bloco atual pode ser substituída por uma amostra adjacente à borda superior da unidade da árvore de codificação.
[211] Por exemplo, uma amostra de referência no local #6 pode ser substituída por uma amostra no local #6' colocada na borda superior da unidade de árvore de codificação, como no exemplo mostrado na Figura 16A e uma amostra de referência no local #15 pode ser substituída por uma amostra no local #15' colocada na borda superior da unidade de árvore de codificação, como no exemplo mostrado na Figura 16B. Neste caso, a coordenada y da amostra alternativa pode ser alterada para aquela de uma localização adjacente à unidade da árvore de codificação e a coordenada x da amostra alternativa pode ser definida para ser a mesma da amostra de referência. Como exemplo, a amostra na localização #6’ pode ter a mesma coordenada x que a amostra na localização #6, e a amostra na localização #15' pode ter a mesma coordenada x que a amostra na localização #15.
[212] Alternativamente, um valor obtido pela adição ou subtração de um deslocamento para ou da coordenada x da amostra de referência pode ser definido como a coordenada x da amostra alternativa. Por exemplo, quando uma amostra de referência não vizinha e uma amostra de referência vizinha localizada acima do bloco atual têm a mesma coordenada x, um valor obtido pela adição ou subtração de um deslocamento para ou da coordenada x da amostra de referência pode ser definido como a coordenada x da amostra alternativa. Isso evita que a amostra alternativa que substitui a amostra de referência não vizinha seja colocada no mesmo local que outra amostra de referência não vizinha ou amostra de referência vizinha.
[213] A Figura 17 é um diagrama que mostra um exemplo em que a localização de uma amostra de referência é alterada.
[214] Quando uma amostra de referência que está incluída em uma unidade da árvore de codificação diferente daquela do bloco atual e que não é adjacente a uma borda da unidade da árvore de codificação é substituída por uma amostra localizada na borda da unidade da árvore de codificação, um valor obtido pela adição ou subtração de um deslocamento para ou da coordenada x da amostra de referência pode ser definido como a coordenada x da amostra alternativa.
[215] Como um exemplo, no exemplo mostrado na Figura 17, a amostra de referência na localização #6 e a amostra de referência na localização #15 podem ser substituídas pela amostra na localização #6’ e a amostra na localização #15', que têm a mesma coordenada y que uma linha adjacente à borda superior da unidade da árvore de codificação. Neste caso, a coordenada x da amostra na localização #6' pode ser definida para um valor obtido subtraindo W/2 da coordenada x da amostra de referência na localização #6, e a coordenada x da amostra na localização #15' pode ser definida para um valor obtido subtraindo W-1 da coordenada x da amostra de referência na localização #15.
[216] Ao contrário dos exemplos mostrados nas Figuras 16 e 17, a coordenada y de uma linha localizada acima da linha superior do bloco atual ou a coordenada y de uma borda superior da unidade da árvore de codificação pode ser definida para a coordenada y da amostra alternativa.
[217] Embora não mostrado, uma amostra que substitui a amostra de referência pode ser determinada com base em uma borda esquerda da unidade da árvore de codificação. Por exemplo, quando uma amostra de referência não está incluída na mesma unidade da árvore de codificação que a do bloco atual e não está adjacente à borda esquerda da unidade da árvore de codificação, a amostra de referência pode ser substituída por uma amostra adjacente à borda esquerda da unidade da árvore de codificação. Neste caso, a amostra alternativa pode ter a mesma coordenada y que a amostra de referência e pode ter uma coordenada y adquirida adicionando ou subtraindo um deslocamento para ou da coordenada y da amostra de referência.
[218] Em seguida, um bloco incluindo a amostra alternativa pode ser definido como um bloco candidato e um candidato a mesclagem do bloco atual pode ser derivado com base no bloco candidato.
[219] Um candidato a mesclagem pode ser derivado de um bloco vizinho temporal incluído em uma imagem diferente daquela do bloco atual. Como um exemplo, um candidato a mesclagem pode ser derivado de um bloco colocado incluído em uma imagem colocada.
[220] As informações de movimento do candidato a mesclagem podem ser definidas para serem as mesmas que as informações de movimento do bloco candidato. Como um exemplo, pelo menos um do vetor de movimento, índice de imagem de referência, direção de predição ou índice de peso bidirecional do bloco candidato pode ser definido como as informações de movimento do candidato a mesclagem.
[221] Uma lista de candidatos a mesclagem incluindo candidatos a mesclagem pode ser gerada (S1202). Os candidatos a mesclagem podem ser classificados em candidatos a mesclagem adjacentes derivados de blocos vizinhos adjacentes ao bloco atual e candidatos a mesclagem não adjacentes derivados de blocos não vizinhos.
[222] Os índices podem ser atribuídos aos candidatos a mesclagem da lista de candidatos a mesclagem em uma ordem predeterminada. Como exemplo, um índice atribuído a um candidato a mesclagem adjacente pode ter um valor menor do que um índice atribuído a um candidato a mesclagem não adjacente. Alternativamente, um índice pode ser atribuído a cada um dos candidatos à mesclagem com base nos índices dos blocos mostrados na Figura 13 ou 15.
[223] Quando uma pluralidade de candidatos a mesclagem é incluída no candidato a mesclagem, pelo menos um da pluralidade de candidatos a mesclagem pode ser selecionado (S1203). Nesse caso, as informações que indicam se as informações de movimento do bloco atual são derivadas do candidato a mesclagem adjacente podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit. Como exemplo, o elemento de sintaxe isAdjancentMergeFlag, que indica se as informações de movimento do bloco atual são derivadas do candidato a mesclagem adjacente, pode ser sinalizado em um fluxo de bits. Quando o valor do elemento de sintaxe isAdjancentMergeFlag é 1, as informações de movimento do bloco atual podem ser derivadas com base no candidato a mesclagem adjacente. Por outro lado, quando o valor do elemento de sintaxe isAdjancentMergeFlag é 0, as informações de movimento do bloco atual podem ser derivadas com base no candidato a mesclagem não adjacente.
[224] A Tabela 1 representa uma tabela de sintaxe, incluindo o elemento de sintaxe isAdjancentMergeFlag. [TABELA 1]
coding_unit( x0, y0, cbWidth, cbHeight, treeType ) Descriptor { if( slice_type != I ) { pred_mode_flag ae(v) } if( CuPredMode[ x0 ][ y0 ] = = MODE_INTRA ) { if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_LUMA ) { intra_luma_mpm_flag[ x0 ][ y0 ] if( intra_luma_mpm_flag[ x0 ][ y0 ] ) intra_luma_mpm_idx[ x0 ][ y0 ] ae(v) else intra_luma_mpm_remainder[ x0 ][ y0 ] ae(v) } if( treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_CHROMA ) intra_chroma_pred_mode[ x0 ][ y0 ] ae(v) } else { if (cu_skip_falg[x0][y0]) { if (MaxNumMergeCand > 1){ isAdjacentMergeflag ae(v) if (isAdjcanetMergeflag){ merge_idx[x0][y0] ae(v) } else{ NA_merge_idx[x0][y0] ae(v) } } } else { /* MODE_INTER*/ merge_flag[x0][y0] ae(v) if (merge_flag[x0][y0]){ if (MaxNumMergeCand > 1){ isAdjacentMergeflag ae(v)
coding_unit( x0, y0, cbWidth, cbHeight, treeType ) Descriptor { if (isAdjcanetMergeflag){ merge_idx[x0][y0] ae(v) } else{ NA_merge_idx[x0][y0] ae(v) } } } if( CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) cu_cbf ae(v) if( cu_cbf ) { transform_tree( x0, y0, cbWidth, cbHeight, treeType ) }
[225] As informações para especificar um de uma pluralidade de candidatos a mesclagem podem ser sinalizadas em um fluxo de bits. Como exemplo, as informações que indicam um índice de um dos candidatos a mesclagem incluídos na lista de candidatos a mesclagem podem ser sinalizadas em um fluxo de bits.
[226] Quando isAdjacentMergeflag é 1, o elemento de sintaxe merge_idx, que é para especificar um dos candidatos de mesclagem adjacentes, pode ser sinalizado. O valor máximo do elemento de sintaxe merge_idx pode ser definido como um valor obtido subtraindo um do número de candidatos de mesclagem adjacentes.
[227] Quando isAdjacentMergeflag é 0, o elemento de sintaxe NA_merge_idx, que é para especificar um dos candidatos de mesclagem não adjacentes, pode ser sinalizado.
O elemento de sintaxe NA_merge_idx representa um valor obtido subtraindo-se o número de candidatos a mesclagem adjacentes do índice do candidato a mesclagem não adjacente. O decodificador pode selecionar um candidato a mesclagem não adjacente adicionando o número de candidatos a mesclagem adjacentes a um índice especificado por NA_merge_idx.
[228] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é menor do que o valor máximo, um candidato a mesclagem incluído em uma tabela de informações de movimento inter-região pode ser adicionado à lista de candidatos a mesclagem. A tabela de informações de movimento inter-região pode incluir um candidato a mesclagem derivado com base em um bloco que é codificado ou decodificado antes do bloco atual.
[229] A tabela de informações de movimento inter-região inclui um candidato a mesclagem derivado de um bloco que é codificado ou decodificado com base na interpredição na imagem atual. Como um exemplo, as informações de movimento do candidato a mesclagem incluídas na tabela de informações de movimento inter-região podem ser definidas para serem as mesmas que as informações de movimento do bloco codificado ou decodificado com base na interpredição. Aqui, as informações de movimento podem incluir pelo menos um de um vetor de movimento, um índice de imagem de referência, uma direção de predição ou um índice de peso bidirecional.
[230] Por conveniência de descrição, o candidato a mesclagem incluído na tabela de informações de movimento inter-regiões será referido como um candidato a mesclagem inter-regiões.
[231] O número máximo de candidatos a mesclagem que podem ser incluídos na tabela de informações de movimento inter-região pode ser predefinido em um codificador e um decodificador. Como um exemplo, o número máximo de candidatos a mesclagem que podem ser incluídos na tabela de informações de movimento inter-região pode ser 1, 2, 3, 4, 5, 6, 7, 8 ou mais (por exemplo, 16).
[232] Alternativamente, as informações que indicam o número máximo de candidatos a mesclagem da tabela de informações de movimento inter-região podem ser sinalizadas em um fluxo de bits. As informações podem ser sinalizadas no nível de sequência, imagem ou fatia.
[233] Alternativamente, o número máximo de candidatos a mesclagem da tabela de informações de movimento inter-região pode ser determinado dependendo do tamanho da imagem, do tamanho da fatia ou do tamanho da unidade de árvore de codificação.
[234] A tabela de informações de movimento inter-região pode ser inicializada em unidades de imagens, fatias, tijolos, unidades de árvore de codificação ou linhas de unidade de árvore de codificação (linhas e colunas). Por exemplo, quando uma fatia é inicializada, a tabela de informações de movimento inter-região também é inicializada e pode não incluir nenhum candidato a mesclagem.
[235] Alternativamente, as informações que indicam se deve ser inicializada a tabela de informações de movimento inter-região pode ser sinalizada em um fluxo de bits. As informações podem ser sinalizadas no nível de fatia, ladrilho, tijolo ou bloco. Uma tabela de informações de movimento inter-região pré-configurada pode ser usada até que as informações indiquem a inicialização da tabela de informações de movimento inter-região.
[236] Alternativamente, as informações relativas a um candidato inicial a mesclagem inter-região podem ser sinalizadas por meio de um conjunto de parâmetros de imagem ou um cabeçalho de fatia. Mesmo que uma fatia seja inicializada, a tabela de informações de movimento inter-região pode incluir o candidato inicial de mesclagem inter-região. Consequentemente, o candidato a mesclagem inter-região pode ser usado para um bloco que deve ser codificado ou decodificado primeiro na fatia.
[237] Os blocos podem ser codificados ou decodificados em uma ordem de codificação ou decodificação, e os blocos codificados ou decodificados com base na interpredição podem ser sequencialmente configurados como os candidatos de mesclagem inter-região na ordem de codificação ou decodificação.
[238] A Figura 18 é um diagrama para descrever um aspecto de atualização de uma tabela de informações de movimento inter-região.
[239] Quando a interpredição é realizada no bloco atual (S1801), um candidato a mesclagem inter-região pode ser derivado com base no bloco atual (S1802). As informações de movimento do candidato a mesclagem inter-região podem ser definidas para serem as mesmas que as informações de movimento do bloco atual.
[240] Quando a tabela de informações de movimento inter-região está vazia (S1803), o candidato a mesclagem inter-região derivado com base no bloco atual pode ser adicionado à tabela de informações de movimento inter- região (S1804).
[241] Quando a tabela de informações de movimento inter-região já inclui um candidato a mesclagem inter-região (S1803), uma verificação de redundância pode ser realizada nas informações de movimento do bloco atual (ou um candidato a mesclagem inter-região derivado com base nas informações de movimento) (S1805). A verificação de redundância é para determinar se as informações de movimento do bloco atual são iguais às informações de movimento do candidato a mesclagem inter-região pré-armazenadas na tabela de informações de movimento inter-região. A verificação de redundância pode ser realizada em todos os candidatos a mesclagem inter-região pré-armazenados na tabela de informações de movimento inter-região. Alternativamente, a verificação de redundância pode ser realizada em candidatos a mesclagem inter-região com índices maiores ou iguais a um valor de limiar ou índices menores ou iguais a um valor de limiar entre os candidatos a mesclagem inter-região pré-armazenados na tabela de informações de movimento inter-região.
[242] Quando nenhum candidato de mesclagem interpredição com as mesmas informações de movimento que o bloco atual é incluído, o candidato de mesclagem inter-região derivado com base no bloco atual pode ser adicionado à tabela de informações de movimento inter-região (S1808). Se os candidatos de mesclagem de interpredição são idênticos pode ser determinado com base em se os candidatos de mesclagem de interpredição têm as mesmas informações de movimento (por exemplo, vetor de movimento e/ou índice de imagem de referência).
[243] Neste caso, quando um número máximo de candidatos a mesclagem inter-região são pré-armazenados na tabela de informações de movimento inter-região (S1806), o candidato a mesclagem inter-região mais antigo é excluído (S1807), e o candidato a mesclagem inter-região derivado com base no bloco atual pode ser adicionado à tabela de informações de movimento inter-região (S1808).
[244] Os candidatos à mesclagem inter-regional podem ser identificados por seus índices. Quando o candidato a mesclagem inter-região derivado do bloco atual é adicionado à tabela de informações de movimento inter-região, o índice mais baixo (por exemplo, 0) é atribuído ao candidato a mesclagem entre regiões, e os índices dos candidatos à mesclagem inter-região pré-configurados podem ser aumentados em um. Neste caso, quando um número máximo de candidatos a mesclagem interpredição são pré-armazenados na tabela de informações de movimento inter-região, o candidato a mesclagem inter-região com o maior índice é removido.
[245] Alternativamente, quando o candidato a mesclagem inter-região derivado do bloco atual é adicionado à tabela de informações de movimento inter-região, o maior índice pode ser atribuído ao candidato a mesclagem inter-regiões. Por exemplo, quando o número de candidatos de mesclagem entre predição inseridos na tabela de informações de movimento inter- região é menor do que o valor máximo, um índice com o mesmo valor que o número dos candidatos de mesclagem entre predições pré-armazenados pode ser atribuído ao candidato de mesclagem inter-região. Alternativamente, quando o número de candidatos de mesclagem entre predições pré-armazenados na tabela de informações de movimento inter-região é igual ao valor máximo, um índice com o valor máximo menos 1 pode ser atribuído ao candidato de mesclagem inter-região. Além disso, o candidato a mesclagem inter-região com o menor índice é removido e os índices dos outros candidatos a mesclagem inter-região pré- armazenados são reduzidos em 1.
[246] A Figura 19 é um diagrama que mostra um aspecto de atualização de uma tabela de candidato a mesclagem inter-região.
[247] Uma vez que o candidato a mesclagem inter- região derivado do bloco atual é adicionado à tabela de candidatos a mesclagem inter-região, presume-se que o maior índice é atribuído ao candidato a mesclagem inter-regiões. Além disso, presume-se que um número máximo de candidatos a mesclagem inter-regiões são armazenados na tabela de candidatos a mesclagem inter-regiões.
[248] Quando um candidato a mesclagem inter- região HmvpCand [n+1], que é derivado do bloco atual, é adicionado a uma tabela de candidatos a mesclagem inter-regiões HmvpCandList, um candidato a mesclagem inter-região HmvpCand
[0], que tem o menor índice entre os candidatos a mesclagem inter-regiões pré-armazenados, pode ser excluído e os índices dos outros candidatos a mesclagem inter-regiões podem ser diminuídos em 1. Além disso, o índice do candidato a mesclagem inter-região HmvpCand[n+1], que é derivado do bloco atual, pode ser definido como o valor máximo (n no exemplo mostrado na Figura 19).
[249] Quando um candidato a mesclagem inter- regiões idêntico ao candidato a mesclagem inter-regiões derivado com base no bloco atual é pré-armazenado (S1805), o candidato a mesclagem inter-regiões derivado com base no bloco atual não pode ser adicionado à tabela de informações de movimento inter-região (S1809).
[250] Alternativamente, enquanto o candidato de mesclagem inter-região derivado com base no bloco atual é adicionado à tabela de informações de movimento inter-região, um candidato de mesclagem inter-região pré-armazenado idêntico ao candidato de mesclagem inter-região pode ser removido. Isso causa o mesmo efeito que atualizar os índices dos candidatos a mesclagem inter-região pré-armazenados.
[251] A Figura 20 é um diagrama que mostra um exemplo no qual um índice de um candidato a mesclagem inter- região pré-armazenado é atualizado.
[252] Quando o índice do candidato a mesclagem entre predição pré-armazenado é idêntico ao candidato a mesclagem inter-região mvCand, que é derivado com base no bloco atual, é hIdx, o candidato a mesclagem entre predição pré- armazenado pode ser excluído e os índices dos candidatos a mesclagem entre predição maiores que hIdx podem ser diminuídos em 1. Como exemplo, é mostrado na Figura 20 que HmvpCand[2], que é idêntico a mvCand, é excluído da tabela de informações de movimento inter-região HvmpCandList e que os índices HmvpCand[3] a HmvpCand[n] são diminuídos em 1.
[253] Além disso, o mvCand candidato a mesclagem inter-região, que é derivado com base no bloco atual, pode ser adicionado ao final da tabela de informações de movimento inter-região.
[254] Alternativamente, o índice atribuído ao candidato a mesclagem inter-região pré-armazenado idêntico ao candidato a mesclagem inter-região derivado com base no bloco atual pode ser atualizado. Por exemplo, o índice do candidato a mesclagem inter-região pré-armazenado pode ser alterado para o valor mínimo ou máximo.
[255] Uma configuração pode ser feita de modo que as informações de movimento dos blocos incluídos em uma área predeterminada não sejam adicionadas à tabela de informações de movimento inter-região. Como um exemplo, um candidato a mesclagem inter-região derivado com base nas informações de movimento de um bloco incluído em uma área de mesclagem paralela não pode ser adicionado à tabela de informações de movimento inter-região. Uma vez que uma ordem de codificação ou decodificação não é definida para blocos incluídos na área de mesclagem paralela, é inapropriado usar as informações de movimento de um dos blocos para realizar a interpredição nos outros blocos. Por conseguinte, os candidatos de mesclagem inter-regiões derivados com base nos blocos incluídos na área de mesclagem paralela não podem ser adicionados à tabela de informações de movimento inter- regiões.
[256] Quando a predição de compensação de movimento é realizada em unidades de sub-blocos, um candidato a mesclagem inter-região pode ser derivado com base nas informações de movimento de um sub-bloco representativo entre a pluralidade de sub-blocos incluídos no bloco atual. Como exemplo, quando um candidato a mesclagem de sub-bloco é usado para o bloco atual, um candidato a mesclagem inter-regiões pode ser derivado com base nas informações de movimento de um sub-bloco representativo entre os sub-blocos.
[257] Os vetores de movimento dos sub-blocos podem ser derivados na seguinte ordem. Primeiro, um candidato a mesclagem pode ser selecionado entre os candidatos a mesclagem incluídos em uma lista de candidatos a mesclagem do bloco atual e um shVector de vetor de deslocamento inicial pode ser derivado com base no vetor de movimento do candidato a mesclagem selecionado. Então, um sub-bloco de deslocamento tendo uma amostra de referência localizada em (xColSb,yColSb) pode ser derivado adicionando o vetor de deslocamento inicial à localização (xSb,ySb) da amostra de referência (por exemplo, a amostra superior esquerda ou a amostra do meio) de cada sub- bloco no bloco de codificação. A Equação 1 abaixo indica uma equação para derivar o sub-bloco de deslocamento. [EQUAÇÃO 1]
[258] Então, o vetor de movimento do bloco colocado correspondendo à posição central do sub-bloco incluindo (xColSb,yColSb) pode ser definido como o vetor de movimento do sub-bloco incluindo (xSb,ySb).
[259] O sub-bloco representativo pode referir-se a um sub-bloco incluindo a amostra superior esquerda ou a amostra central do bloco atual.
[260] A Figura 21 é um diagrama que mostra a localização de um sub-bloco representativo.
[261] A Figura 21A mostra um exemplo em que um sub-bloco localizado no canto superior esquerdo do bloco atual e a Figura 21B mostra um exemplo em que um sub-bloco localizado no centro do bloco atual é definido como um sub-bloco representativo. Quando a previsão de compensação de movimento é realizada em unidades de sub-blocos, o candidato a mesclagem inter-região do bloco atual pode ser derivado com base no vetor de movimento de um sub-bloco, incluindo a amostra superior esquerda do bloco atual ou um sub-bloco que inclui a amostra central do bloco atual.
[262] Se usar o bloco atual como o candidato a mesclagem inter-região também pode ser determinado com base no modo de interpredição do bloco atual. Como um exemplo, um bloco que é codificado ou decodificado com base no modelo de movimento afim pode ser definido como indisponível como um candidato a mesclagem inter-região. Por conseguinte, embora o bloco atual seja codificado ou decodificado por meio de interpredição, a tabela de informações de movimento de interpredição pode não ser atualizada com base no bloco atual quando o modo de interpredição do bloco atual é o modo de predição afim.
[263] Alternativamente, o candidato a mesclagem inter-região pode ser derivado com base no vetor de sub-bloco de pelo menos um sub-bloco incluído no bloco que é codificado ou decodificado com base no modelo de movimento afim. Como um exemplo, o candidato a mesclagem inter-região pode ser derivado usando um sub-bloco localizado no canto superior esquerdo do bloco atual, um sub-bloco localizado no centro do bloco atual, ou um sub-bloco localizado no canto superior direito do bloco atual. Alternativamente, a média dos vetores de sub-bloco da pluralidade de sub-blocos pode ser definida como o vetor de movimento do candidato a mesclagem inter-região.
[264] Alternativamente, o candidato a mesclagem inter-região pode ser derivado com base na média dos vetores de semente afins do bloco que é codificado ou decodificado com base no modelo de movimento afim. Como um exemplo, uma média de pelo menos um dentre o primeiro vetor de semente afim, o segundo vetor de semente afim ou o terceiro vetor de semente afim do bloco atual pode ser definido como o vetor de movimento do candidato a mesclagem inter-região.
[265] Alternativamente, a tabela de informações de movimento inter-região pode ser configurada para cada modo de interpredição. Como um exemplo, pelo menos uma de uma tabela de informações de movimento inter-região para um bloco codificado ou decodificado com uma cópia intrabloco, uma tabela de informações de movimento inter-região para um bloco codificado ou decodificado com base no modelo de movimento de translação, ou pode ser definida uma tabela de informações de movimento inter-região para um bloco codificado ou decodificado com base no modelo de movimento afim. Uma dentre a pluralidade de tabelas de informações de movimento inter- região pode ser selecionada de acordo com o modo de interpredição do bloco atual.
[266] A Figura 22 mostra um exemplo no qual uma tabela de informações de movimento inter-região é gerada para cada modo de interpredição.
[267] Quando um bloco é codificado ou decodificado com base em um modelo de movimento não afim, um candidato a mesclagem inter-região mvCand, que é derivado com base no bloco, pode ser adicionado a uma tabela de informações de movimento não afim inter-região HmvpCandList. Por outro lado, quando um bloco é codificado ou decodificado com base em um modelo de movimento afim, um candidato a mesclagem inter- região mvAfCand, que é derivado com base no bloco, pode ser adicionado a uma tabela de informações de movimento afim inter- região HmvpAfCandList.
[268] Os vetores de sementes afins do bloco podem ser armazenados em um candidato a mesclagem inter-região derivado do bloco que é codificado ou decodificado com base no modelo de movimento afim. Por conseguinte, o candidato a mesclagem inter-região pode ser usado como um candidato a mesclagem para derivar o vetor de semente afim do bloco atual.
[269] Uma tabela adicional de informações de movimento inter-região pode ser definida além da tabela de informações de movimento inter-região acima descrita. Além da tabela de informações de movimento inter-regiões acima descrita (doravante referida como uma primeira tabela de informações de movimento inter-regiões), uma tabela de informações de movimento de longo prazo (doravante referida como uma segunda tabela de informações de movimento inter- regiões) pode ser definida. Aqui, a tabela de informações de movimento de longo prazo inclui candidatos a mesclagem de longo prazo.
[270] Quando a primeira tabela de informações de movimento inter-região e a segunda tabela de informações de movimento inter-região estão vazias, os candidatos a mesclagem inter-região podem ser preferencialmente adicionados à segunda tabela de informações de movimento inter-região. Até que o número de candidatos de mesclagem inter-região permitido para a segunda tabela de informações de movimento inter-região atinja o número máximo, os candidatos de mesclagem inter-região não podem ser adicionados à primeira tabela de informações de movimento inter-região.
[271] Alternativamente, um candidato a mesclagem interpredição pode ser adicionado tanto à primeira tabela de informações de movimento inter-regiões quanto à segunda tabela de informações de movimento inter-regiões.
[272] Neste caso, a segunda tabela de informações de movimento inter-região onde a configuração está concluída pode não realizar mais uma atualização. Alternativamente, quando uma área decodificada é maior ou igual a uma proporção predeterminada de uma fatia, a segunda tabela de informações de movimento inter-região pode ser atualizada. Alternativamente, a segunda tabela de informações de movimento inter-região pode ser atualizada a cada N linhas de unidade de árvore de codificação.
[273] Por outro lado, a primeira tabela de informações de movimento inter-região pode ser atualizada sempre que um bloco codificado ou decodificado por interpredição for gerado. No entanto, uma configuração pode ser feita de modo que os candidatos de mesclagem inter-região adicionados à segunda tabela de informações de movimento inter- região não sejam usados para atualizar a primeira tabela de informações de movimento inter-região.
[274] As informações para selecionar uma da primeira tabela de informações de movimento inter-região ou a segunda tabela de informações de movimento inter-região podem ser sinalizadas em um fluxo de bits. Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for menor que o valor máximo, os candidatos a mesclagem incluídos na tabela de informações de movimento inter-região indicada pelas informações podem ser adicionados à lista de candidatos a mesclagem.
[275] Alternativamente, uma tabela de informações de movimento inter-região pode ser selecionada com base no tamanho, forma ou modo de interpredição do bloco atual, a presença de predição bidirecional, a presença de refinamento do vetor de movimento ou a presença de divisão triangular .
[276] Alternativamente, quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for menor do que o número máximo de mesclagem, embora os candidatos a mesclagem inter-região incluídos na primeira tabela de informações de movimento inter-regiões sejam adicionados à lista de candidatos a mesclagem, os candidatos de mesclagem inter-região incluídos na segunda tabela de informações de movimento inter-região podem ser adicionados à lista de candidatos de mesclagem.
[277] A Figura 23 é um diagrama que mostra um exemplo no qual um candidato a mesclagem inter-região incluído em uma tabela de informações de movimento de longo prazo é adicionado a uma lista de candidatos a mesclagem.
[278] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem é menor que o número máximo, os candidatos a mesclagem inter-região incluídos na primeira tabela de informações de movimento inter- regiões HmvpCandList podem ser adicionados à lista de candidatos a mesclagem. Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem for menor do que o número máximo, embora os candidatos a mesclagem inter-regiões incluídos na primeira tabela de informações de movimento inter-regiões sejam adicionados à lista de candidatos a mesclagem, os candidatos a mesclagem inter-região incluídos na tabela de informações de movimento de longo prazo HmvpLTCandList podem ser adicionados à lista de candidatos a mesclagem.
[279] A Tabela 2 mostra um processo de adição de candidatos a mesclagem inter-região incluídos na tabela de informações de movimento de longo prazo à lista de candidatos a mesclagem. [TABELA 2] Para cada candidato em HMVPCandList com índice HMVPLTIdx =
1..numHMVPLTCand, as etapas ordenadas a seguir são repetidas até que combStop seja igual a verdadeiro - sameMovement é definido como FALSE - Se hmvpStop for igual a FALSE e numCurrMergecand for menor que (MaxNumMergeCand-1), hmvpLT é definido como TRUE - Se HMVPLTCandList[NumLTHmvp-HMVPLTIdx] tiver os mesmos vetores de movimento e os mesmos índices de referência com qualquer mergeCandList[i] sendo que I é 0.. numOrigMergeCand- 1 e HasBeenPruned[i] igual a falso, sameMovement é definido como verdadeiro - Se sameMovement for igual a falso, mergeCandList[numCurrMergeCand++] é definido como HMVPLTCandList[NumLTHmvp-HMVPLTIdx] - Se numCurrMergeCand for igual a (MaxNumMergeCand-1), hmvpLTStop é definido como TRUE
[280] Uma configuração pode ser feita de modo que o candidato a mesclagem inter-região inclua informações adicionais, bem como as informações de movimento. Como um exemplo, o tamanho, forma ou informações de partição de um bloco podem ser armazenados adicionalmente para o candidato a mesclagem inter-região. Ao configurar a lista de candidatos de mesclagem do bloco atual, apenas os candidatos de mesclagem de interpredição tendo o mesmo tamanho, formato ou informações de partição semelhantes ao bloco atual entre os candidatos de mesclagem de interpredição podem ser usados, ou os candidatos de mesclagem de interpredição tendo o mesmo tamanho, formato ou informações de partição semelhantes ao bloco atual podem ser preferencialmente adicionados à lista de candidatos de mesclagem.
[281] Alternativamente, a tabela de informações de movimento inter-região pode ser gerada para cada tamanho, forma ou pedaço de informações de partição do bloco. A lista de candidatos de mesclagem do bloco atual pode ser gerada usando uma tabela de informações de movimento inter-região que correspondem ao formato, tamanho ou informações de partição do bloco atual entre uma pluralidade de tabelas de informações de movimento inter-região.
[282] Alternativamente, uma tabela de informações de movimento inter-região pode ser criada para cada resolução do vetor de movimento. Por exemplo, quando o vetor de movimento do bloco atual tem uma resolução de 1/4 pel, um candidato a mesclagem inter-regiões derivado do bloco atual pode ser adicionado a uma lista de informações de movimento quarter-pel inter-regiões. Quando o vetor de movimento do bloco atual tem uma resolução de 1 pel inteiro, um candidato a mesclagem inter-região derivado do bloco atual pode ser adicionado a uma lista de informações de movimento pel-inteiro inter-regiões. Quando o vetor de movimento do bloco atual tem uma resolução de 4 pel inteiros, um candidato a mesclagem inter-região derivado do bloco atual pode ser adicionado a uma lista de informações de movimento de 4 pel inteiros inter-regiões. Uma da pluralidade de listas de informações de movimento inter-região pode ser selecionada de acordo com a resolução do vetor de movimento de um bloco a ser codificado ou decodificado.
[283] Quando um método de codificação de vetor de deslocamento de mesclagem é aplicado ao bloco atual, um candidato de mesclagem inter-região derivado do bloco atual pode ser adicionado a uma lista de informações de movimento de deslocamento de mesclagem inter-região HmvpHMVDCandList em vez de ser adicionada a uma tabela de informações de movimento inter-regiões HmvpCandList. Neste caso, o candidato a mesclagem inter-região pode incluir informações de deslocamento de vetor de movimento do bloco atual.
HmvpHMVDCandList pode ser usado para derivar um deslocamento do bloco ao qual o método de codificação de vetor de deslocamento de mesclagem é aplicado.
[284] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual não é igual ao valor máximo, o candidato a mesclagem inter- região incluído na tabela de informações de movimento inter- regiões pode ser adicionado à lista de candidatos a mesclagem. O processo de adição pode ser em ordem crescente ou decrescente com base nos índices. Como exemplo, um candidato a mesclagem inter-região com o maior índice pode ser adicionado preferencialmente à lista de candidatos a mesclagem.
[285] Quando o candidato a mesclagem inter- região incluído na tabela de informações de movimento inter- região deve ser adicionado à lista de candidatos a mesclagem, uma verificação de redundância entre o candidato a mesclagem inter-região e os candidatos a mesclagem pré-armazenados na lista de candidatos a mesclagem pode ser realizada.
[286] Como exemplo, a Tabela 3 mostra um processo de adição de um candidato a mesclagem inter-regional à lista de candidatos a mesclagem. [TABELA 3] Para cada candidato em HMVPCandList com índice HMVPIdx = 1.. numCheckedHMVPCand, as etapas ordenadas a seguir são repetidas até que combStop seja igual a verdadeiro - sameMovement é definido como falso - Se HMVPCandList[NumHmvp-HMVPIdx] tiver os mesmos vetores de movimento e os mesmos índices de referência com qualquer mergeCandList[i] com I sendo 0.. numOrigMergeCand-1 e HasBeenPruned[i] for igual a falso, sameMovement é definido como verdadeiro - Se sameMovement for igual a falso, mergeCandList[numCurrMergeCand++] é definido como
HMVPCandList[NumHmvp-HMVPIdx] - Se numCurrMergeCand for igual a (MaxNumMergeCand-1), hmvpStop é definido como TRUE
[287] A verificação de redundância pode ser realizada em apenas alguns dos candidatos a mesclagem inter- região incluídos na tabela de informações de movimento inter- região. Como um exemplo, a verificação de redundância pode ser realizada apenas em candidatos de mesclagem inter-região com índices maiores ou iguais ao valor de limiar ou índices menores ou iguais ao valor de limiar.
[288] Como alternativa, a verificação de redundância pode ser executada em apenas alguns dos candidatos a mesclagem inseridos na lista de candidatos a mesclagem. Por exemplo, a verificação de redundância pode ser realizada em apenas um candidato a mesclagem com um índice maior ou igual ao valor limiar ou um índice menor ou igual ao valor limiar ou um candidato a mesclagem derivado de um bloco em um local específico. Aqui, a localização específica pode incluir pelo menos um do bloco vizinho esquerdo, o bloco vizinho superior, o bloco vizinho superior direito ou o bloco vizinho inferior esquerdo do bloco atual.
[289] A Figura 24 é um diagrama que mostra um exemplo no qual uma verificação de redundância é executada em apenas alguns candidatos a mesclagem.
[290] Quando um candidato a mesclagem inter- região HmvpCand[j] deve ser adicionado à lista de candidatos a mesclagem, uma verificação de redundância pode ser realizada no candidato a mesclagem inter-região em relação a dois candidatos a mesclagem mergeCandList[NumMerge-2] e mergeCandList[NumMerge-1], que têm os maiores índices. Aqui,
NumMerge pode representar o número de candidatos de mesclagem espacial e candidatos de mesclagem temporal disponíveis.
[291] Quando um candidato a mesclagem idêntico ao primeiro candidato a mesclagem inter-região é encontrado, a verificação de redundância no candidato a mesclagem idêntica ao primeiro candidato a mesclagem inter-região pode ser omitida enquanto a verificação de redundância é realizada no segundo candidato a mesclagem inter-região.
[292] A Figura 25 é um diagrama que mostra um exemplo no qual uma verificação de redundância em um candidato a mesclagem específico é omitida.
[293] Quando um candidato a mesclagem inter- região HmvpCand[i] com um índice de i deve ser adicionado à lista de candidatos a mesclagem, uma verificação de redundância entre o candidato a mesclagem inter-região e os candidatos a mesclagem fornecidos na lista de candidatos a mesclagem pode ser realizada. Neste caso, quando um candidato a mesclagem mergeCandList[j] idêntico ao candidato a mesclagem inter- região HmvpCand[i] é encontrado, o candidato a mesclagem inter- regiões HmvpCand[i] não pode ser adicionado à lista de candidatos a mesclagem, e uma verificação de redundância entre um candidato a mesclagem inter-região HmvpCand [i-1], que tem um índice de i-1, e os candidatos a mesclagem podem ser realizados. Neste caso, uma verificação de redundância entre o candidato a mesclagem inter-região HmvpCand[i-1] e o candidato a mesclagem mergeCandList[j] pode ser omitida.
[294] Como um exemplo, no exemplo mostrado na Figura 25, é determinado que HmvpCand[i] e mergeCandList[2] são idênticos entre si. Consequentemente, HmvpCand [i] não pode ser adicionado à lista de candidatos a mesclagem e uma verificação de redundância pode ser realizada em HmvpCand [i- 1]. Nesse caso, uma verificação de redundância entre HvmpCand[i-1] e mergeCandList[2] pode ser omitida.
[295] Quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual for menor do que o número máximo, pelo menos um de um candidato a mesclagem par a par ou um candidato a mesclagem zero pode ser incluído adicionalmente ao candidato a mesclagem inter- região. O candidato a mesclagem par a par se refere a um candidato a mesclagem com um vetor de movimento igual à média dos vetores de movimento de dois ou mais candidatos a mesclagem, e um candidato a mesclagem zero se refere a um candidato a mesclagem com um vetor de movimento 0.
[296] Um candidato a mesclagem pode ser adicionado à lista de candidatos a mesclagem do bloco atual na seguinte ordem.
[297] Candidato a mesclagem espacial - Candidato a mesclagem temporal - Candidato a mesclagem inter-regional - (candidato a mesclagem inter-regional afim) - Candidato a mesclagem par a par - Candidato a mesclagem zero.
[298] O candidato a mesclagem espacial se refere a um candidato a mesclagem derivado de pelo menos um de um bloco vizinho ou não vizinho, e o candidato a mesclagem temporal se refere a um candidato a mesclagem derivado de uma imagem de referência anterior. O candidato a mesclagem inter- região se refere a um candidato a mesclagem inter-região derivado de um bloco codificado ou decodificado por um modelo de movimento afim.
[299] A tabela de informações de movimento inter-região pode ser usada mesmo no modo de previsão de vetor de movimento. Por exemplo, quando o número de candidatos de predição de vetor de movimento incluídos na lista de candidatos de predição de vetor de movimento do bloco atual é menor que o número máximo, o candidato a mesclagem inter-região incluído na tabela de informações de movimento inter-região pode ser definido como o candidato de predição de vetor de movimento para o bloco atual. Em detalhe, o vetor de movimento do candidato a mesclagem inter-região pode ser definido como o candidato de predição de vetor de movimento.
[300] Quando um dos candidatos de predição de vetor de movimento incluídos na lista de candidatos de predição de vetor de movimento do bloco atual é selecionado, o candidato selecionado pode ser definido como um preditor de vetor de movimento do bloco atual. Subsequentemente, o vetor de movimento do bloco atual pode ser adquirido pela decodificação de um valor residual do vetor de movimento do bloco atual e, em seguida, adicionando o preditor do vetor de movimento e o valor residual do vetor de movimento.
[301] A lista de candidatos de previsão de vetor de movimento do bloco atual pode ser configurada na seguinte ordem.
[302] Candidato de predição de vetor de movimento espacial - Candidato de predição de vetor de movimento temporal - Candidato de mesclagem entre áreas de decodificação - (candidato a mesclagem afim entre áreas de decodificação) - Candidato de previsão de vetores de movimento zero
[303] O candidato de predição de vetor de movimento espacial se refere a um candidato de predição de vetor de movimento derivado de pelo menos um de um bloco vizinho ou não vizinho e o candidato de predição de vetor de movimento temporal se refere a um candidato de predição de vetor de movimento derivado de uma imagem de referência anterior. O candidato à mesclagem afim inter-região se refere a um candidato de predição de vetor de movimento inter-região derivado de um bloco codificado ou decodificado por um modelo de movimento afim. O candidato a predição de vetor de movimento zero representa um candidato com um vetor de movimento 0.
[304] Uma área de processamento de mesclagem maior do que o bloco de codificação pode ser definida. Os blocos de codificação incluídos na área de processamento de mesclagem podem ser processados em paralelo sem serem sequencialmente codificados ou decodificados. Aqui, a codificação ou decodificação não sequencial significa que uma codificação ou ordem de decodificação não está definida. Por conseguinte, um processo de codificação ou decodificação dos blocos incluídos na área de processamento de mesclagem pode ser processado de forma independente. Alternativamente, os blocos incluídos na área de processamento de mesclagem podem compartilhar candidatos a mesclagem. Aqui, os candidatos a mesclagem podem ser derivados com base na área de processamento de mesclagem.
[305] De acordo com as características descritas acima, a área de processamento de mesclagem pode ser referida como uma área de processamento paralelo, uma região de mesclagem compartilhada (SMR) ou uma região de estimativa de mesclagem (MER).
[306] O candidato a mesclagem do bloco atual pode ser derivado com base no bloco de codificação. No entanto, quando o bloco atual é incluído na área de mesclagem paralela maior do que o bloco atual, um bloco candidato incluído na mesma área de mesclagem paralela do bloco atual pode ser definido como indisponível como um candidato de mesclagem.
[307] A Figura 26 é um diagrama que mostra um exemplo no qual um bloco candidato incluído na mesma área de mesclagem paralela do bloco atual é definido como indisponível como um candidato a mesclagem.
[308] No exemplo mostrado na Figura 26A, quando CU5 é codificado ou decodificado, blocos incluindo amostras de referência adjacentes a CU5 podem ser configurados como blocos candidatos. Neste caso, os blocos candidatos X3 e X4, que estão incluídos na mesma área de mesclagem paralela que a de CU5, podem ser configurados como indisponíveis como candidatos de mesclagem. Por outro lado, os blocos candidatos X0, X1 e X2, que não estão incluídos na mesma área de mesclagem paralela que a de CU5, podem ser configurados para estar disponíveis como candidatos de mesclagem.
[309] No exemplo mostrado na Figura 26B, quando CU8 é codificado ou decodificado, blocos incluindo amostras de referência adjacentes a CU8 podem ser configurados como blocos candidatos. Neste caso, os blocos candidatos X6, X7 e X8, que estão incluídos na mesma área de mesclagem paralela que a de CU8, podem ser configurados como indisponíveis como candidatos de mesclagem. Por outro lado, os blocos candidatos X5 e X9, que não estão incluídos na mesma área de mesclagem que a de CU8, podem ser configurados para estar disponíveis como candidatos de mesclagem.
[310] A área de mesclagem paralela pode ser quadrada ou não quadrada. As informações para determinar a área de mesclagem paralela podem ser sinalizadas em um fluxo de bits. As informações podem incluir pelo menos uma das informações que indicam a forma da área de mesclagem paralela ou informações que indicam o tamanho da área de mesclagem paralela. Quando a área de mesclagem paralela não é quadrada, pelo menos uma das informações indicando o tamanho da área de mesclagem paralela, informações indicando a largura e/ou altura da área de mesclagem paralela ou informações indicando uma proporção entre a largura e a altura da área de mesclagem paralela pode ser sinalizada em um fluxo de bits.
[311] O tamanho da área de mesclagem paralela pode ser determinado com base em pelo menos uma das informações sinalizadas em um fluxo de bits, resolução de imagem, tamanho de fatia ou tamanho de bloco.
[312] Quando a previsão de compensação de movimento é realizada em um bloco incluído na área de mesclagem paralela, um candidato de mesclagem inter-região derivado com base nas informações de movimento de um bloco sujeito à predição de compensação de movimento pode ser adicionado à tabela de informações de movimento inter-região.
[313] No entanto, quando um candidato a mesclagem inter-região derivado do bloco incluído na área de mesclagem paralela é adicionado à tabela de informações de movimento inter-região, um candidato a mesclagem inter-regiões derivado do bloco pode ser usado quando outro bloco incluído na área de mesclagem paralela estiver realmente codificado ou decodificado depois do bloco. Isto é, embora a dependência entre os blocos deva ser excluída ao codificar ou decodificar blocos incluídos na área de mesclagem paralela, a compensação de previsão de movimento pode ser realizada usando informações de movimento do outro bloco incluído na área de mesclagem paralela. A fim de resolver tal problema, mesmo que a codificação ou decodificação de um bloco incluído na área de mesclagem paralela seja concluída, as informações de movimento do bloco em que a codificação ou decodificação é concluída não podem ser adicionadas à tabela de informações de movimento inter-região.
[314] Alternativamente, quando a predição de compensação de movimento é realizada em blocos incluídos na área de mesclagem paralela, o candidato de mesclagem inter- região derivado dos blocos pode ser adicionado à tabela de informações de movimento inter-região em uma ordem predefinida. Aqui, a ordem predefinida pode ser determinada na ordem de varredura dos blocos de codificação na unidade de árvore de codificação ou na área de mesclagem paralela. A ordem de varredura pode ser pelo menos uma varredura de varredura, varredura horizontal, varredura vertical ou varredura em zigue-zague. Alternativamente, a ordem predefinida pode ser determinada com base nas informações de movimento de cada um dos blocos ou no número de blocos com as mesmas informações de movimento.
[315] Alternativamente, um candidato de mesclagem inter-região incluindo informações de movimento unidirecional pode ser adicionado à lista de mesclagem inter- região antes de um candidato de mesclagem inter-região incluindo informações de movimento bidirecional. Pelo contrário, um candidato de mesclagem inter-região incluindo informações de movimento bidirecional pode ser adicionado à lista de candidatos de mesclagem inter-regiões mais cedo do que um candidato de mesclagem inter-região incluindo informações de movimento unidirecional.
[316] Alternativamente, os candidatos de mesclagem inter-região podem ser adicionados à tabela de informações de movimento inter-região em ordem crescente ou decrescente de frequência de uso na área de mesclagem paralela ou na unidade de árvore de codificação.
[317] Quando o bloco atual é incluído na área de mesclagem paralela e o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual é menor do que o número máximo, o candidato a mesclagem inter- regiões incluído na tabela de informações de movimento inter- região pode ser adicionado à lista de candidatos a mesclagem. Neste caso, uma configuração pode ser feita de modo que um candidato a mesclagem inter-região derivado de um bloco incluído na mesma área de mesclagem paralela que a do bloco atual é adicionado à lista de candidatos a mesclagem do bloco atual.
[318] Alternativamente, uma configuração pode ser feita de modo que quando o bloco atual é incluído na área de mesclagem paralela, um candidato de mesclagem inter-região incluído na tabela de informações de movimento inter-região não é usado. Ou seja, mesmo quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual for menor do que o número máximo, o candidato a mesclagem inter-regiões incluído na tabela de informações de movimento inter-regiões não pode ser adicionado à lista de candidato a mesclagem.
[319] A tabela de informações de movimento inter-região pode ser configurada para a área de mesclagem paralela ou a unidade de árvore de codificação. Esta tabela de informações de movimento inter-região serve para armazenar temporariamente informações de movimento de blocos incluídos na área de mesclagem paralela. A fim de distinguir uma tabela geral de informações de movimento inter-região de uma tabela de informações de movimento inter-região para a área de mesclagem paralela ou a unidade de árvore de codificação, a tabela de informações de movimento inter-região para a área de mesclagem paralela ou a unidade de árvore de codificação será referida como uma tabela de informações de movimento temporário. Além disso, um candidato a mesclagem inter-região armazenado na tabela de informações de movimento temporário será referido como um candidato a mesclagem temporária.
[320] A Figura 27 é um diagrama que mostra uma tabela de informações de movimento temporário.
[321] A tabela de informações de movimento temporário pode ser configurada para a unidade de árvore de codificação ou a área de mesclagem paralela. Quando a predição de compensação de movimento é realizada no bloco atual incluído na unidade de árvore de codificação ou na área de mesclagem paralela, as informações de movimento do bloco não podem ser adicionadas à tabela de informações de movimento de interpredição HmvpCandList. Em vez disso, um candidato a mesclagem temporário derivado do bloco pode ser adicionado a uma tabela de informações de movimento temporário HmvpMERCandList. Ou seja, o candidato a mesclagem temporária adicionado à tabela de informações de movimento temporário não pode ser adicionado à tabela de informações de movimento inter- regiões. Consequentemente, a tabela de informações de movimento inter-região pode não incluir um candidato a mesclagem inter-região derivado com base nas informações de movimento de blocos incluídos na área de mesclagem paralela ou unidade de árvore de codificação incluindo o bloco atual.
[322] O número máximo de candidatos de mesclagem que podem ser incluídos na tabela de informações de movimento temporário pode ser definido para ser o mesmo que o da tabela de informações de movimento inter-região. Alternativamente, o número máximo de candidatos a mesclagem que podem ser incluídos na tabela de informações de movimento temporário pode ser determinado de acordo com o tamanho da unidade de árvore de codificação ou a área de mesclagem paralela.
[323] O bloco atual incluído na unidade de árvore de codificação ou na área de mesclagem paralela pode ser configurado para não usar a tabela de informações de movimento temporário para a unidade de árvore de codificação correspondente ou a área de mesclagem paralela correspondente. Ou seja, quando o número de candidatos a mesclagem incluídos na lista de candidatos a mesclagem do bloco atual é menor do que o valor máximo, o candidato a mesclagem inter-regiões incluído na tabela de informações de movimento inter-regiões pode ser adicionado à lista de candidatos a mesclagem, e o candidato a mesclagem temporário incluído na tabela de informações de movimento temporário não pode ser adicionado à lista de candidatos a mesclagem. Consequentemente, as informações de movimento de outros blocos incluídos na mesma unidade de árvore de codificação ou área de mesclagem paralela como aquela do bloco atual não podem ser usadas para a previsão de compensação de movimento do bloco atual.
[324] Quando a codificação ou decodificação de todos os blocos incluídos na unidade de árvore de codificação ou na área de mesclagem paralela é concluída, a tabela de informações de movimento inter-região e a tabela de informações de movimento temporário podem ser combinadas.
[325] A Figura 28 é um diagrama que mostra um exemplo de mesclagem de uma tabela de informações de movimento temporário com uma tabela de informações de movimento inter- região.
[326] Quando a codificação ou decodificação de todos os blocos incluídos na unidade da árvore de codificação ou na área de mesclagem paralela for concluída, a tabela de informações de movimento inter-região pode ser atualizada com o candidato de mesclagem temporário incluído na tabela de informações de movimento temporário no exemplo mostrado na Figura 28.
[327] Neste caso, os candidatos de mesclagem temporária incluídos na tabela de informações de movimento temporário podem ser adicionados à tabela de informações de movimento inter-região na ordem em que os candidatos de mesclagem temporária foram inseridos na tabela de informações de movimento temporário (ou seja, em ordem crescente ou decrescente de valores de índice).
[328] Como outro exemplo, os candidatos de mesclagem temporária incluídos na tabela de informações de movimento temporário podem ser adicionados à tabela de informações de movimento inter-região em uma ordem predefinida.
[329] Aqui, a ordem predefinida pode ser determinada na ordem de varredura dos blocos de codificação na unidade de árvore de codificação ou na área de mesclagem paralela. A ordem de varredura pode ser pelo menos uma varredura de varredura, varredura horizontal, varredura vertical ou varredura em zigue-zague. Alternativamente, a ordem predefinida pode ser determinada com base nas informações de movimento de cada um dos blocos ou no número de blocos com as mesmas informações de movimento.
[330] Alternativamente, um candidato de mesclagem temporário incluindo informações de movimento unidirecional pode ser adicionado à lista de mesclagem inter- região antes de um candidato de mesclagem temporário incluindo informações de movimento bidirecional. Pelo contrário, um candidato a mesclagem temporária incluindo informações de movimento bidirecional pode ser adicionado à lista de candidatos a mesclagem inter-região antes de um candidato a mesclagem temporário incluindo informações de movimento unidirecional.
[331] Alternativamente, os candidatos de mesclagem temporária podem ser adicionados à tabela de informações de movimento inter-região em ordem crescente ou decrescente de frequência de uso na área de mesclagem paralela ou na unidade de árvore de codificação.
[332] Quando um candidato a mesclagem temporário incluído na tabela de informações de movimento temporário é adicionado à tabela de informações de movimento inter-região, uma verificação de redundância para o candidato a mesclagem temporária pode ser realizada. Por exemplo, quando um candidato a mesclagem inter-região idêntico ao candidato a mesclagem temporário incluído na tabela de informações de movimento temporário é pré-armazenado na tabela de informações de movimento inter-regiões, o candidato a mesclagem temporária não pode ser adicionado à tabela de informações de movimento inter-região. Neste caso, a verificação de redundância pode ser realizada em apenas alguns dos candidatos a mesclagem inter-região incluídos na tabela de informações de movimento inter-região. Como um exemplo, a verificação de redundância pode ser realizada em apenas candidatos de mesclagem de interpredição com índices maiores ou iguais a um valor limiar ou índices menores ou iguais a um valor limiar. Por exemplo, quando o candidato a mesclagem temporário é idêntico a um candidato a mesclagem inter-região com um índice maior ou igual a um valor predefinido, o candidato a mesclagem temporário não pode ser adicionado à tabela de informações de movimento inter- região.
[333] A intrapredição é para prever o bloco atual usando uma amostra reconstruída onde a codificação ou decodificação é concluída e que está perto do bloco atual. Neste caso, uma amostra reconstruída antes de um filtro em laço ser aplicado pode ser usada para a intrapredição do bloco atual.
[334] Uma técnica de intrapredição inclui intrapredição baseada em matriz e intrapredição normal considerando a direcionalidade em relação a uma amostra reconstruída próxima. As informações que indicam a técnica de intrapredição do bloco atual podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit. Alternativamente, a técnica de intrapredição do bloco atual pode ser determinada com base em pelo menos um dentre a localização, tamanho ou formato do bloco atual ou a técnica de intrapredição de um bloco vizinho. Como um exemplo, quando um bloco atual está presente através de um limite de imagem, uma configuração pode ser feita de modo que intrapredição baseada em matriz não seja aplicada ao bloco atual.
[335] A intrapredição com base em matriz pode ser um método para adquirir um bloco de predição do bloco atual com base em um produto de matriz entre uma matriz pré- armazenada em um codificador e um decodificador e amostras reconstruídas perto do bloco atual. As informações para especificar uma de uma pluralidade de matrizes pré-armazenadas podem ser sinalizadas em um fluxo de bits. O decodificador pode determinar uma matriz para intrapredição do bloco atual com base nas informações e no tamanho do bloco atual.
[336] A intrapredição normal é um método de aquisição de um bloco de predição para o bloco atual com base em um modo intrapredição não direcional ou um modo intrapredição direcional. Um processo de realização de intrapredição com base na intrapredição normal será descrito em detalhes abaixo com referência aos desenhos.
[337] A Figura 29 é um fluxograma de um método de intrapredição de acordo com uma modalidade da presente invenção.
[338] Uma linha de amostra de referência do bloco atual pode ser determinada (S2901). A linha de amostra de referência refere-se a um conjunto de amostras de referência incluídas na k-ésima linha longe do topo e/ou à esquerda do bloco atual. As amostras de referência podem ser derivadas de amostras reconstruídas onde a codificação ou decodificação é concluída e que estão perto do bloco atual.
[339] As informações de índice para identificar a linha de amostra de referência do bloco atual entre uma pluralidade de linhas de amostra de referência podem ser sinalizadas em um fluxo de bits. A pluralidade de linhas de amostra de referência pode incluir pelo menos uma dentre a primeira linha, a segunda linha, a terceira linha ou a quarta linha a partir do topo e/ou à esquerda do bloco atual. A Tabela 4 representa os índices atribuídos às linhas de amostra de referência. A Tabela 4 assume que a primeira linha, a segunda linha e a quarta linha são usadas como candidatas de linha de amostra de referência. [TABELA 4] Índice Linha de Amostra de Referência 0 Primeira Linha de Amostra de Referência 1 Segunda Linha de Amostra de Referência 2 Quarta Linha de Amostra de Referência
[340] A linha de amostra de referência do bloco atual pode ser determinada com base em pelo menos um dentre a localização, tamanho ou formato do bloco atual ou o modo de predição de um bloco vizinho. Como exemplo, quando o bloco atual é contíguo a uma borda de uma imagem, ladrilho, fatia ou unidade de árvore de codificação, a primeira linha de amostra de referência pode ser determinada como a linha de amostra de referência do bloco atual.
[341] A linha de amostra de referência pode incluir amostras de referência superiores localizadas acima do bloco atual e amostras de referência à esquerda localizadas à esquerda do bloco atual. As amostras de referência superiores e as amostras de referência esquerdas podem ser derivadas de amostras reconstruídas perto do bloco atual. As amostras reconstruídas podem estar em um estado antes de um filtro em laço ser aplicado.
[342] A Figura 30 é um diagrama que mostra as amostras de referência incluídas em cada linha de amostra de referência.
[343] Uma amostra de predição pode ser adquirida usando pelo menos uma amostra de referência pertencente a uma linha de amostra de referência de acordo com um modo de intrapredição do bloco atual.
[344] Em seguida, o modo intrapredição do bloco atual pode ser determinado (S2902). Pelo menos um de um modo intrapredição não direcional ou um modo intrapredição direcional pode ser determinado como o modo intrapredição do bloco atual. O modo de predição intradirecional inclui Planar e DC, e a predição intradirecional inclui 33 ou 65 modos de uma direção diagonal inferior esquerda para uma direção diagonal superior direita.
[345] A Figura 31 é um diagrama que mostra modos de intrapredição.
[346] A Figura 31A mostra 35 modos de intrapredição e a Figura 31B mostra 67 modos de intrapredição.
[347] Um número maior de modos de intrapredição ou um número menor de modos de intrapredição pode ser definido do que é mostrado na Figura 31.
[348] Um modo mais provável (MPM) pode ser definido com base no modo intrapredição de um bloco vizinho ao bloco atual. Aqui, o bloco vizinho pode incluir um bloco vizinho esquerdo adjacente à esquerda do bloco atual e um bloco vizinho superior adjacente ao topo do bloco atual. Quando as coordenadas da amostra superior esquerda do bloco atual são (0, 0), o bloco vizinho à esquerda pode incluir uma amostra localizada em (-1, 0), (-1, H-1) ou (-1, (H-1)/2). Aqui, H representa a altura do bloco atual. O bloco vizinho superior pode incluir uma amostra localizada em (0, -1), (W-1, -1) ou ((W-1)/2, -1). Aqui, W representa a largura do bloco atual.
[349] Quando o bloco vizinho é codificado por meio de intrapredição normal, um MPM pode ser derivado com base em um modo de intrapredição de um bloco vizinho. Em detalhe, um modo intrapredição de um bloco vizinho esquerdo pode ser definido usando variável candIntraPredModeA, e um modo intrapredição de um bloco vizinho superior pode ser definido usando variável candIntraPredModeB.
[350] Neste caso, quando um bloco vizinho não está disponível (por exemplo, quando um bloco vizinho ainda não foi codificado ou decodificado ou quando a localização de um bloco vizinho se desvia de uma borda da imagem), quando um bloco vizinho é codificado por intrapredição baseada em matriz, quando um bloco vizinho é codificado por interpredição, ou quando um bloco vizinho é incluído em uma unidade de árvore de codificação diferente daquela do bloco atual, a variável candIntraPredModeX (aqui, X é A ou B), que é derivada com base no modo intrapredição do bloco vizinho, pode ser definida como um modo padrão. Aqui, o modo padrão pode incluir pelo menos um dos modos Planar, DC, Vertical ou Horizontal.
[351] Alternativamente, quando um bloco vizinho é codificado por intrapredição baseada em matriz, um modo intrapredição correspondente a um valor de índice para especificar uma de uma pluralidade de matrizes pode ser definido como candIntraPredModeX. Para este fim, uma tabela de pesquisa indicando uma relação de mapeamento entre modos intrapredição e valores de índice para especificar matrizes pode ser pré-armazenada em um codificador e um decodificador.
[352] Os MPMs podem ser derivados com base na variável candIntraPredModeA e na variável candIntraPredModeB. O número de MPMs incluídos em uma lista de MPM pode ser predefinido em um codificador e um decodificador. Por exemplo, o número de MPMs pode ser três, quatro, cinco ou seis. Alternativamente, as informações que indicam o número de MPMs podem ser sinalizadas em um fluxo de bits. Alternativamente, o número de MPMs pode ser determinado com base em pelo menos um dos modos de predição do bloco vizinho ou o tamanho ou forma do bloco atual.
[353] As modalidades a seguir assumem que o número de MPMs é três e três MPMs são referidos como MPM[0], MPM[1] e MPM[2]. Quando o número de MPMs é maior que três, os MPMs podem ser configurados para incluir três MPMs que serão descritos nas seguintes modalidades.
[354] Quando candIntraPredA e candIntraPredB são idênticos e candIntraPredA é o modo Planar ou DC, MPM[0] e MPM[1] podem ser definidos para o modo Planar e DC, respectivamente. MPM[2] pode ser definido para um modo de intrapredição vertical, um modo de intrapredição horizontal ou um modo de intrapredição diagonal. O modo de intrapredição diagonal pode ser o modo de intrapredição diagonal inferior esquerdo, modo de intrapredição superior esquerdo ou modo de intrapredição superior direito.
[355] Quando candIntraPredA e candIntraPredB são idênticos e candIntraPredA é o modo de predição intradirecional, MPM[0] pode ser definido para ser idêntico a candIntraPredA. MPM[1] e MPM[2] podem ser definidos para modos de intrapredição semelhantes a candIntraPredA. Um modo intrapredição semelhante a candIntraPredA pode ser um modo intrapredição em que um valor de diferença de índice em relação a candIntraPredA é ±1 ou ±2. Uma operação modular (%) e um deslocamento podem ser usados para derivar o modo intrapredição semelhante ao candIntraPredA.
[356] Quando candIntraPredA e candIntraPredB são diferentes, MPM[0] pode ser configurado para ser idêntico a candIntraPredA e MPM[1] pode ser configurado para ser idêntico a candIntraPredB. Neste caso, quando ambos candIntraPredA e candIntraPredB são modos intrapredição não direcional, MPM[2] pode ser definido para ser um modo intrapredição vertical, um modo intrapredição horizontal ou um modo intrapredição diagonal. Alternativamente, quando pelo menos um de candIntraPredA e candIntraPredB é um modo de intrapredição direcional, MPM[2] pode ser definido para ser um modo de intrapredição derivado da adição ou subtração do deslocamento de ou para Planer, DC ou um maior dentre candIntraPredA e candIntraPredB. Aqui, o deslocamento pode ser 1 ou 2.
[357] Uma lista de MPM incluindo uma pluralidade de MPMs é criada e as informações indicando se um MPM idêntico ao modo intrapredição do bloco atual está incluído na lista de MPM podem ser sinalizadas em um fluxo de bits. As informações são um sinalizador de 1 bit e o sinalizador pode ser referido como um sinalizador MPM. Quando o sinalizador MPM indica que um MPM idêntico ao bloco atual está incluído na lista de MPM, as informações de índice para identificar um dos MPMs podem ser sinalizadas em um fluxo de bits. O MPM especificado pelas informações de índice pode ser definido como o modo intrapredição do bloco atual. Quando o sinalizador MPM indica que um MPM idêntico ao bloco atual não está incluído na lista de MPM, as informações de modo residual indicando um dos modos intrapredição restantes que não os MPMs pode ser sinalizada em um fluxo de bits. As informações do modo residual indicam um valor de índice correspondente ao modo intrapredição do bloco atual quando os índices são reatribuídos aos modos intrapredição restantes que não os MPMs. O decodificador pode classificar os MPMs em ordem crescente e comparar os MPMs com as informações de modo residual para determinar o modo intrapredição do bloco atual. Por exemplo, quando as informações do modo residual forem menores ou iguais a um MPM, o modo intrapredição do bloco atual pode ser derivado adicionando um às informações do modo residual.
[358] Em vez de definir um MPM como modo padrão, as informações que indicam se o modo intrapredição do bloco atual é o modo padrão podem ser sinalizadas em um fluxo de bits. As informações podem ser um sinalizador de 1 bit e o sinalizador pode ser referido como um sinalizador de modo padrão. O sinalizador de modo padrão pode ser sinalizado apenas quando o sinalizador MPM indica que um MPM idêntico ao bloco atual está incluído na lista de MPM. Conforme descrito acima, o modo padrão pode incluir pelo menos um dos modos Planar, DC, Vertical ou Horizontal. Por exemplo, quando Planar é definido como o modo padrão, o sinalizador de modo padrão pode indicar se o modo intrapredição do bloco atual é Planar. Quando o sinalizador de modo padrão indica que o modo intrapredição do bloco atual não é o modo padrão, um dos MPMs indicados pelas informações de índice pode ser definido como o modo intrapredição do bloco atual.
[359] Quando uma pluralidade de modos de intrapredição é definida como modos padrão, as informações de índice que indicam um dos modos padrão podem ser sinalizadas adicionalmente. O modo intrapredição do bloco atual pode ser definido como o modo padrão indicado pelas informações de índice.
[360] Quando o índice da linha de amostra de referência do bloco atual não é zero, uma configuração pode ser feita de forma que o modo padrão não seja usado. Por conseguinte, quando o índice da linha de amostra de referência não é zero, o sinalizador de modo padrão pode não ser sinalizado e o valor do sinalizador de modo padrão pode ser definido para um valor predefinido (ou seja, falso).
[361] Quando o modo intrapredição do bloco atual é determinado, as amostras de predição para o bloco atual podem ser adquiridas com base no modo intrapredição determinado (S2903).
[362] Quando o modo DC é selecionado, as amostras de predição para o bloco atual podem ser geradas com base na média das amostras de referência. Em detalhe, os valores de todas as amostras no bloco de previsão podem ser gerados com base na média das amostras de referência. A média pode ser derivada usando pelo menos uma das amostras de referência superiores localizadas acima do bloco atual e as amostras de referência à esquerda localizadas à esquerda do bloco atual.
[363] O número ou intervalo de amostras de referência usadas para derivar a média pode variar dependendo da forma do bloco atual. Como exemplo, quando o bloco atual é um bloco não quadrado no qual a largura é maior do que a altura, a média pode ser calculada usando apenas as amostras de referência superiores. Por outro lado, quando o bloco atual é um bloco não quadrado no qual a largura é menor que a altura, a média pode ser calculada usando apenas as amostras de referência à esquerda. Ou seja, quando a largura e a altura do bloco atual são diferentes uma da outra, a média pode ser calculada usando apenas amostras de referência adjacentes a uma mais longa entre a largura e a altura. Alternativamente, se deve calcular a média usando as amostras de referência superiores ou calcular a média usando as amostras de referência à esquerda pode ser determinado com base na proporção largura- altura do bloco atual.
[364] Quando o modo Planar é selecionado, a amostra de predição pode ser adquirida usando uma amostra de predição horizontal e uma amostra de predição vertical. Aqui, a amostra de predição horizontal é adquirida com base em uma amostra de referência esquerda e uma amostra de referência direita localizada na mesma linha horizontal que a amostra de predição, e a amostra de predição vertical é adquirida com base em uma amostra de referência superior e uma amostra de referência inferior localizada na mesma linha vertical que a amostra de predição. Aqui, a amostra de referência direita pode ser gerada copiando uma amostra de referência adjacente ao canto superior direito do bloco atual e a amostra de referência inferior pode ser gerada copiando uma amostra de referência adjacente ao canto inferior esquerdo do bloco atual. A amostra de predição horizontal pode ser adquirida com base em uma operação de soma ponderada da amostra de referência esquerda e da amostra de referência direita, e a amostra de predição vertical pode ser adquirida com base em uma operação de soma ponderada da amostra de referência superior e a amostra de referência inferior. Neste caso, um peso atribuído a cada amostra de referência pode ser determinado dependendo da localização da amostra de predição. A amostra de predição pode ser adquirida com base em uma operação de média ou uma operação de soma ponderada da amostra de predição horizontal e da amostra de predição vertical. Quando a operação de soma ponderada é realizada, os pesos atribuídos à amostra de predição horizontal e à amostra de predição vertical podem ser determinados com base na localização da amostra de predição.
[365] Quando um modo de predição direcional é selecionado, um parâmetro indicando a direção de predição (ou o ângulo de predição) do modo de predição direcional selecionado pode ser determinado. A Tabela 5 abaixo representa o parâmetro intraPredAng intradireção para cada modo intrapredição. [TABELA 5] PredModeIntra 1- 232 326 421 517 613 79 IntraPredAng PredModeIntra 85 92 100 11-2 12-5 13-9 14-13 IntraPredAng PredModeIntra 15-17 16-21 17-26 18-32 19-26 20-21 21-17 IntraPredAng PredModeIntra 22-13 23-9 24-5 25-2 260 272 285 IntraPredAng PredModeIntra 299 3013 3117 3221 3326 3432 IntraPredAng
[366] A Tabela 5 representa um parâmetro de intradireção para cada modo de intrapredição com um índice entre 2 e 34 quando 35 modos de intrapredição são definidos. Quando mais de 33 modos de intrapredição direcional são definidos, a Tabela 5 pode ser subdividida para definir parâmetros de intradireção para cada modo de intrapredição direcional.
[367] Depois de organizar as amostras de referência superiores e as amostras de referência esquerdas do bloco atual em uma linha, a amostra de predição pode ser adquirida com base no valor do parâmetro intradireção. Neste caso, quando o valor do parâmetro intradireção é negativo, as amostras de referência esquerdas e as amostras de referência superiores podem ser dispostas em uma linha.
[368] As Figuras 32 e 33 são diagramas que mostram um exemplo de uma matriz unidimensional em que as amostras de referência são dispostas em uma linha.
[369] A Figura 32 mostra um exemplo de uma matriz vertical unidimensional em que as amostras de referência são dispostas verticalmente, e a Figura 33 mostra um exemplo de uma matriz horizontal unidimensional em que as amostras de referência são dispostas horizontalmente. As modalidades das Figuras 32 e 33 serão descritas na suposição de que 35 modos intrapredição são definidos.
[370] Uma matriz horizontal unidimensional na qual as amostras de referência superiores são giradas no sentido anti-horário pode ser aplicada quando um índice de modo intrapredição está entre 11 e 18, e uma matriz vertical unidimensional em que as amostras de referência esquerda são giradas no sentido horário pode ser quando um índice de modo intrapredição está entre 19 e 25. Quando as amostras de referência são dispostas em uma linha, um ângulo de modo intrapredição pode ser considerado.
[371] Um parâmetro de determinação de amostra de referência pode ser determinado com base no parâmetro intradireção. O parâmetro de determinação de amostra de referência pode incluir um índice de amostra de referência para especificar uma amostra de referência e um parâmetro de peso para determinar um peso a ser aplicado a uma amostra de referência.
[372] O índice de amostra de referência iIdx e o parâmetro de peso ifact podem ser adquiridos por meio das Equações 2 e 3 abaixo. [EQUAÇÃO 2] [EQUAÇÃO 3]
[373] Nas Equações 2 e 3, Pang representa um parâmetro intradireção. Uma amostra de referência especificada pelo índice de amostra de referência iIdx corresponde a pel inteiro.
[374] A fim de derivar a amostra de predição, pelo menos uma amostra de referência pode ser especificada. Em detalhes, a localização da amostra de referência a ser usada para derivar a amostra de predição pode ser especificada em consideração à inclinação do modo de predição. Como exemplo, a amostra de referência a ser usada para derivar a amostra de predição pode ser especificada usando o índice de amostra de referência iIdx.
[375] Neste caso, quando a inclinação do modo de intrapredição não pode ser expressa com uma amostra de referência, a amostra de predicação pode ser gerada pela interpolação de uma pluralidade de amostras de referência. Por exemplo, quando a inclinação do modo intrapredição é um valor entre a inclinação entre a amostra de predição e uma primeira amostra de referência e a inclinação entre a amostra de predição e uma segunda amostra de referência, a amostra de predição pode ser adquirida interpolando a primeira amostra de referência e a segunda amostra de referência. Ou seja, uma linha angular em conformidade com o ângulo de infra-predição não passa a amostra de referência localizada no pel inteiro, a amostra de predição pode ser adquirida por interpolação de amostras de referência adjacentes à esquerda, à direita, ao topo ou ao fundo de um local por onde passa a linha angular.
[376] A Equação 4 abaixo mostra um exemplo de aquisição de uma amostra de predição com base em amostras de referência. [EQUAÇÃO 4]
[377] Na Equação 4, P representa uma amostra de predição e Ref_1D representa uma das amostras de referência dispostas em uma dimensão. Neste caso, a localização da amostra de referência pode ser determinada pelo índice de amostra de referência iIdx e a localização (x, y) da amostra de predição.
[378] Quando a inclinação do modo intrapredição pode ser expressa com uma amostra de referência, o parâmetro de peso ifact pode ser definido como zero. Consequentemente, a Equação 4 pode ser simplificada na Equação 5 abaixo. [EQUAÇÃO 5]
[379] A intrapredição pode ser realizada no bloco atual com base em uma pluralidade de modos de intrapredição. Como um exemplo, um modo intrapredição pode ser derivado para cada amostra de predição e uma amostra de predição pode ser derivada com base no modo intrapredição atribuído à amostra de predição correspondente.
[380] Alternativamente, um modo intrapredição pode ser derivado para cada área, e intrapredição pode ser realizada na área correspondente com base no modo intrapredição atribuído à área correspondente. Aqui, a área pode incluir pelo menos uma amostra. Pelo menos um do tamanho ou formato da área pode ser determinado de forma adaptativa com base em pelo menos um do tamanho, forma ou modo intrapredição do bloco atual. Alternativamente, pelo menos um do tamanho ou formato da área pode ser predefinido em um codificador e um decodificador, independentemente do tamanho ou formato do bloco atual.
[381] Alternativamente, intrapredição pode ser realizada várias vezes e uma amostra de predição final pode ser derivada com base em uma operação de média ou uma operação de soma ponderada de uma pluralidade de amostras de predição adquiridas realizando a intrapredição várias vezes. Como exemplo, uma primeira amostra de predição pode ser adquirida realizando intrapredição com base em um primeiro modo de intrapredição e uma segunda amostra de predição pode ser adquirida realizando-se intrapredição com base em um segundo modo de intrapredição. Subsequentemente, a amostra de predição final pode ser adquirida com base na operação de cálculo da média ou na operação de soma ponderada entre a primeira amostra de predição e a segunda amostra de predição. Neste caso, os pesos atribuídos à primeira amostra de predição e à segunda amostra de predição podem ser determinados em consideração a pelo menos um dentre se o primeiro modo de predição intra é um modo de predição não direcional ou um modo de predição direcional, se o segundo modo de intrapredição é um modo de predição não direcional ou um modo de predição direcional, ou o modo de intrapredição de um bloco vizinho.
[382] A pluralidade de modos de intrapredição pode ser uma combinação de um modo de intrapredição não direcional e um modo de intrapredição direcional, uma combinação de modos de intrapredição direcionais ou uma combinação de modos de intrapredição não-direcionais.
[383] A Figura 34 é um diagrama que ilustra ângulos formados entre uma linha reta paralela ao eixo geométrico x e os modos intrapredição direcional.
[384] No exemplo mostrado na Figura 34, os modos de predição direcional podem variar de uma direção diagonal inferior esquerda a uma direção diagonal superior direita. Quando a seguinte descrição assume um ângulo formado entre o eixo geométrico x e o modo de predição direcional, os modos de predição direcional podem variar entre 45 graus (na direção diagonal inferior esquerda) e -135 graus (na direção diagonal superior direita).
[385] Quando o bloco atual não é quadrado, uma amostra de predição pode ser derivada usando uma amostra de referência longe da amostra de predição entre as amostras de referência localizadas na linha angular em conformidade com o ângulo de intrapredição em vez de uma amostra de referência próxima à amostra de predição que depende do modo de intrapredição do bloco atual.
[386] A Figura 35 é um diagrama que mostra um aspecto no qual uma amostra de predição é adquirida quando o bloco atual não é quadrado.
[387] Por exemplo, como no exemplo mostrado na Figura 35A, presume-se que o bloco atual tem uma forma não quadrada em que a largura é maior do que a altura e que o modo intrapredição do bloco atual é um modo intrapredição direcional tendo um ângulo entre 0 graus e 45 graus. Neste caso, ao derivar a amostra de predição A perto da coluna direita do bloco atual, a amostra de referência esquerda L longe da amostra de predição, em vez da amostra de referência superior T perto da amostra de predição entre as amostras de referência localizadas na linha angular em conformidade com o ângulo pode ser usado.
[388] Como outro exemplo, como no exemplo mostrado na Figura 35B, presume-se que o bloco atual tem uma forma não quadrada em que a altura é maior do que a largura e que o modo intrapredição do bloco atual é um modo intrapredição direcional tendo um ângulo entre -90 graus e -135 graus. Neste caso, ao derivar a amostra de predição A perto da linha inferior do bloco atual, a amostra de referência superior T longe da amostra de predição entre as amostras de referência localizadas na linha angular em conformidade com o ângulo pode ser usada em vez da amostra de referência esquerda L próxima da amostra de predição.
[389] A fim de resolver tal problema, quando o bloco atual não é quadrado, o modo intrapredição do bloco atual pode ser substituído pelo modo intrapredição na direção oposta. Assim, os modos de previsão direcional tendo um ângulo maior ou menor do que os modos de previsão direcional mostrados na Figura 31 pode ser usado para blocos não quadrados. Tal modo de intrapredição direcional pode ser definido como um modo de intrapredição de grande angular. O modo de intrapredição de grande angular representa um modo de intrapredição direcional que não está no intervalo entre 45 graus e -135 graus.
[390] A Figura 36 é um diagrama que mostra modos de intrapredição de ângulo amplo.
[391] No exemplo mostrado na Figura 36, modos de intrapredição com um índice entre -1 e -14 e modos de intrapredição com um índice entre 67 e 80 indicam modos de intrapredição de grande angular.
[392] Na Figura 36, 14 modos de intrapredição de grande angular tendo um ângulo maior que 45 graus (-1 a -14) e 14 modos de intrapredição de grande angular tendo um ângulo menor que -135 graus (67 a 80) são ilustrados, mas um número maior ou menor de modos de intrapredição de grande angular pode ser definido.
[393] Quando um modo de intrapredição de ângulo amplo é usado, o comprimento das amostras de referência superiores pode ser definido como 2W+1, e o comprimento das amostras de referência esquerdas pode ser definido como 2H+1.
[394] Quando um modo de intrapredição de ângulo amplo é usado, a amostra A mostrada na Figura 35A pode ser previsto usando a amostra de referência T e a amostra A mostrada na Figura 35B pode ser previsto usando a amostra de referência L.
[395] Um total de 67+N modos de intrapredição pode ser usado adicionando N modos de intrapredição de grande angular aos modos de intrapredição existentes. Como um exemplo, a Tabela 6 mostra parâmetros de intradireção dos modos de intrapredição quando 20 modos de intrapredição de grande angular são definidos. [TABELA 6] PredModeIntra -10 -9 -8 -7 -6 -5 -4 -3 -2 intraPredAngle 114 93 79 68 60 54 49 45 39 PredModeIntra -1 2 3 4 5 6 7 8 9
PredModeIntra -10 -9 -8 -7 -6 -5 -4 -3 -2 intraPredAngle 35 32 29 26 23 21 19 17 15 PredModeIntra 10 11 12 13 14 15 16 17 18 intraPredAngle 13 11 9 7 5 3 2 1 0 PredModeIntra 19 20 21 22 23 24 25 26 27 intraPredAngle -1 -2 -3 -5 -7 -9 -11 -13 -15 PredModeIntra 28 29 30 31 32 33 34 35 36 intraPredAngle -17 -19 -21 -23 -26 -29 -32 -29 -26 PredModeIntra 37 38 39 40 41 42 43 44 45 intraPredAngle -23 -21 -19 -17 -15 -13 -11 -9 -7 PredModeIntra 46 47 48 49 50 51 52 53 54 intraPredAngle -5 -3 -2 -1 0 1 2 3 5 PredModeIntra 55 56 57 58 59 60 61 62 63 intraPredAngle 7 9 11 13 15 17 19 21 23 PredModeIntra 64 65 66 67 68 69 70 71 72 intraPredAngle 26 29 32 35 39 45 49 54 60 PredModeIntra 73 74 75 76 intraPredAngle 68 79 93 114
[396] Os parâmetros de intradireção podem ser definidos de forma diferente com base em pelo menos um dentre o tamanho, o formato ou a linha de amostra de referência do bloco atual. Como um exemplo, um parâmetro de intradireção para um modo de intrapredição específico quando o bloco atual é quadrado pode ser diferente daquele quando o bloco atual é não quadrado. Como um exemplo, o parâmetro de intradireção intraPredAngle do modo de intrapredição #15 pode ter um valor maior quando o bloco atual é quadrado do que quando o bloco atual é não quadrado.
[397] Alternativamente, o parâmetro intraPredAngle do modo intrapredição #75 pode ter um valor maior quando o índice da linha de amostra de referência do bloco atual é 1 ou maior do que quando o índice da linha de amostra de referência do bloco atual é 0.
[398] Quando o bloco atual não é quadrado e o modo intrapredição do bloco atual adquirido em S2902 se enquadra dentro da faixa de transformação, o modo intrapredição do bloco atual pode ser transformado no modo intrapredição grande angular. A faixa de transformação pode ser determinada com base em pelo menos um dentre o tamanho, forma ou proporção do bloco atual. Aqui, a proporção pode indicar uma proporção entre a largura e a altura do bloco atual.
[399] Quando o bloco atual tem uma forma não quadrada em que a largura é maior do que a altura, a faixa de transformação pode ser definida em uma faixa do índice de modo intrapredição da direção diagonal superior direita (por exemplo, 66) para o índice de modo intrapredição da direção diagonal superior direita menos N. Aqui, N pode ser determinado com base na proporção do bloco atual. Quando o modo intrapredição do bloco atual se enquadra dentro da faixa de transformação, o modo intrapredição pode ser transformado no modo intrapredição de grande angular. A transformação pode ser para subtrair um valor predefinido do modo intrapredição e o valor predefinido pode ser o número total (por exemplo, 67) de modos intrapredição, exceto os modos intrapredição de grande angular.
[400] De acordo com a modalidade acima, os modos de intrapredição #66 a #53 podem ser transformados em modos de intrapredição de grande angular #-1 a #-14, respectivamente.
[401] Quando o bloco atual tem uma forma não quadrada em que a altura é maior do que a largura, a faixa de transformação pode ser definida em uma faixa a partir do índice de modo intrapredição da direção diagonal inferior esquerda (por exemplo, 2) para o índice do modo intrapredição da direção diagonal inferior esquerda mais M. Aqui, M pode ser determinado com base na razão do bloco atual. Quando o modo intrapredição do bloco atual se enquadra dentro da faixa de transformação, o modo intrapredição pode ser transformado no modo intrapredição de grande angular. A transformação pode ser para adicionar um valor predefinido ao modo de intrapredição e o valor predefinido pode ser o número total (por exemplo, 65) de modos de intrapredição direcional, excluindo os modos de intrapredição de grande angular.
[402] De acordo com a modalidade acima, os modos de intrapredição #2 a #15 podem ser transformados em modos de intrapredição de grande angular #67 a #80, respectivamente.
[403] Os modos intrapredição que caem dentro da faixa de transformação serão referidos como modos intrapredição alternativos de grande angular.
[404] A faixa de transformação pode ser determinada com base na proporção do bloco atual. Como um exemplo, a Tabela 7 e a Tabela 8 representam uma faixa de transformação quando 35 modos de intrapredição, exceto modos de intrapredição de grande angular, são definidos e uma faixa de transformação quando 67 modos de intrapredição são definidos. [TABELA 7] Condição Modos De intrapredição Substituídos W/H = 2 Modos 2, 3, 4 W/H > 2 Modos 2, 3, 4, 5, 6
Condição Modos De intrapredição Substituídos W/H = 1 Nenhum H/W = 1/2 Modos 32, 33, 34 H/W < 1/2 Modos 30, 31, 32, 33, 34 [TABELA 8] Condição Modos De intrapredição Substituídos W/H = 2 Modos 2, 3, 4, 5, 6, 7 W/H > 2 Modos 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 W/H = 1 Nenhum H/W = 1/2 Modos 61, 62, 63, 64, 65, 66 H/W < 1/2 Modos 57, 58, 59, 60, 61, 62, 63, 64, 65, 66
[405] Nos exemplos mostrados na Tabela 7 e na Tabela 8, o número de modos alternativos de intrapredição de grande angular que caem dentro da faixa de transformação pode diferir dependendo da razão do bloco atual.
[406] Como os modos de intrapredição de grande ângulo são usados além dos modos de intrapredição existentes, os recursos necessários para codificar os modos de intrapredição de grande ângulo podem ser aumentados e, assim, a eficiência de codificação pode ser reduzida. Consequentemente, codificando modos alternativos de intrapredição para os modos de intrapredição de grande ângulo, em vez de codificar os modos de intrapredição de grande ângulo como eles são, é possível melhorar a eficiência da codificação.
[407] Por exemplo, quando o bloco atual é codificado no modo intrapredição de grande angular #67, modo de intrapredição grande angular #2, que é um modo de intrapredição de grande angular alternativo para # 67, pode ser codificado para o modo de intrapredição do bloco atual. Além disso, quando o bloco atual é codificado no modo intrapredição de grande angular #-1, modo de intrapredição grande angular #66, que é um modo de intrapredição de grande angular alternativo para #-1, pode ser codificado para o modo de intrapredição do bloco atual.
[408] O decodificador pode decodificar o modo intrapredição do bloco atual e pode determinar se o modo intrapredição decodificado se enquadra dentro do intervalo de transformação. Quando o modo de intrapredição decodificado é um modo de intrapredição de grande angular alternativo, o modo de intrapredição pode ser transformado no modo de intrapredição de grande ângulo.
[409] Alternativamente, quando o bloco atual é codificado no modo de intrapredição de grande ângulo, o modo de intrapredição de grande ângulo pode ser codificado como está.
[410] A codificação do modo intrapredição pode ser realizada com base na lista MPM descrita acima. Em detalhe, quando um bloco vizinho é codificado no modo de intrapredição de grande ângulo, um MPM pode ser definido com base em um modo de intrapredição de grande ângulo alternativo correspondente ao modo de intrapredição de grande ângulo. Como um exemplo, quando um bloco vizinho é codificado no modo de intrapredição de grande angular, variável candIntraPredX (X é A ou B) pode ser definido para ser um modo alternativo de intrapredição de grande ângulo.
[411] Quando um bloco de predição é gerado como resultado da realização de intrapredição, as amostras de predição podem ser atualizadas com base nas localizações das amostras de predição incluídas no bloco de predição. O método de atualização pode ser referido como um método de predição intra-ponderada com base na posição de amostra (ou Combinação de Predição Dependente de Posição (PDPC)).
[412] O uso de PDPC pode ser determinado levando- se em consideração o modo intrapredição do bloco atual, a linha de amostra de referência do bloco atual, o tamanho do bloco atual ou um componente de cor. Como um exemplo, o PDPC pode ser usado quando o modo intrapredição do bloco atual é pelo menos um de um modo com um valor de índice menor do que Planar, DC, Vertical e Horizontal ou um modo com um valor de índice maior do que Horizontal. Alternativamente, o PDPC pode ser usado apenas quando pelo menos um da largura e altura do bloco atual for maior que 4. Alternativamente, o PDPC pode ser usado apenas quando o índice da linha da imagem de referência do bloco atual é 0. Alternativamente, o PDPC pode ser usado apenas quando o índice da linha da imagem de referência do bloco atual é maior ou igual a um valor predefinido. Alternativamente, o PDPC pode ser usado apenas para um componente de luminância. Alternativamente, se usar PDPC pode ser determinado de acordo com se duas ou mais das condições acima são satisfeitas.
[413] Como outro exemplo, as informações que indicam se o PDPC é aplicado podem ser sinalizadas em um fluxo de bits.
[414] Quando uma amostra de predição é adquirida por meio de uma amostra de intrapredição, uma amostra de referência usada para corrigir a amostra de predição pode ser determinada com base na localização da amostra de predição adquirida. Por conveniência de descrição, nas seguintes modalidades, uma amostra de referência usada para corrigir uma amostra de predição será referida como uma amostra de referência de PDPC. Além disso, uma amostra de predição adquirida por meio de intrapredição será referida como uma primeira amostra de predição, e uma amostra de predição adquirida corrigindo a primeira amostra de predição será referida como uma segunda amostra de predição.
[415] A Figura 37 é um diagrama que mostra um aspecto de aplicativo do PDPC.
[416] A primeira amostra de predição pode ser corrigida usando pelo menos uma amostra de referência de PDPC. A amostra de referência de PDPC pode incluir pelo menos uma de uma amostra de referência adjacente ao canto superior esquerdo do bloco atual, uma amostra de referência superior localizada no topo do bloco atual ou uma amostra de referência esquerda localizada à esquerda do bloco atual.
[417] Pelo menos uma das amostras de referência pertencentes à linha de amostra de referência do bloco atual pode ser definida como uma amostra de referência de PDPC. Alternativamente, independentemente da linha de amostra de referência do bloco atual, pelo menos uma amostra de referência pertencente a uma linha de amostra de referência com índice 0 pode ser definida como uma amostra de referência PDPC. Por exemplo, embora a primeira amostra de predição seja adquirida usando amostras de referência incluídas em uma linha de amostra de referência com índice 1 ou índice 2, a segunda amostra de predição pode ser adquirida usando amostras de referência incluídas em uma linha de amostra de referência com índice 0.
[418] O número ou locais de amostras de referência de PDPC usados para corrigir a primeira amostra de predição podem ser determinados em consideração a pelo menos um dos modos de intrapredição do bloco atual, o tamanho do bloco atual, a forma do bloco atual ou a localização da primeira amostra de predição.
[419] Como um exemplo, quando o modo intrapredição do bloco atual é o modo Planar ou DC, a segunda amostra de predição pode ser adquirida usando uma amostra de referência superior e uma amostra de referência esquerda. Neste caso, a amostra de referência superior pode ser uma amostra de referência perpendicular à primeira amostra de predição (por exemplo, uma amostra de referência com a mesma coordenada x), e a amostra de referência esquerda pode ser uma amostra de referência paralela à primeira amostra de predição (por exemplo, uma amostra de referência com a mesma coordenada y).
[420] Quando o modo intrapredição do bloco atual é um modo intrapredição horizontal, a segunda amostra de predição pode ser adquirida pelo uso de uma amostra de referência superior. Neste caso, a amostra de referência superior pode ser uma amostra de referência perpendicular à primeira amostra de predição.
[421] Quando o modo intrapredição do bloco atual é um modo intrapredição vertical, a segunda amostra de predição pode ser adquirida pelo uso de uma amostra de referência esquerda. Neste caso, a amostra de referência esquerda pode ser uma amostra de referência paralela à primeira amostra de predição.
[422] Quando o modo intrapredição do bloco atual é um modo intrapredição diagonal inferior esquerdo ou um modo intrapredição diagonal superior direito, a segunda amostra de predição pode ser adquirida com base em uma amostra de referência superior esquerda, uma amostra de referência superior e uma amostra de referência esquerda. A amostra de referência superior esquerda pode ser uma amostra de referência adjacente ao canto superior esquerdo do bloco atual (por exemplo, uma amostra de referência localizada em (-1, -1)). A amostra de referência superior pode ser uma amostra de referência localizada diagonalmente acima e à direita da primeira amostra de predição, e a amostra de referência esquerda pode ser uma amostra de referência localizada diagonalmente abaixo e à esquerda da primeira amostra de predição.
[423] Em resumo, quando a localização da primeira amostra de predição é (x, y), R (-1, -1) pode ser definido como a amostra de referência superior esquerda e R (x+y+1, -1) ou R (x, -1) pode ser definido como a amostra de referência superior. Além disso, R(-1, x+y+1) ou R(-1, y) pode ser definido como a amostra de referência esquerda.
[424] Como outro exemplo, a localização da amostra de referência esquerda ou a amostra de referência superior pode ser determinada em consideração a pelo menos uma das formas do bloco atual ou se um intramodo de grande angular é aplicado.
[425] Em detalhes, quando o modo de intrapredição do bloco atual é um modo de intrapredição de ângulo amplo, uma amostra de referência espaçada por um deslocamento da amostra de referência localizada diagonalmente da primeira amostra de predição pode ser definida como uma amostra de referência de PDPC. Como um exemplo, uma amostra de referência superior R (x+y+k+1, -1) e uma amostra de referência esquerda R (-1, x+y-k+1) podem ser definidas como amostras de referência PDPC.
[426] Neste caso, um deslocamento k pode ser determinado com base no modo intrapredição de grande ângulo. A Equação 6 e a Equação 7 representam um exemplo de derivação de um deslocamento com base em um modo intrapredição de grande angular. [EQUAÇÃO 6] [EQUAÇÃO 7]
[427] A segunda amostra de predição pode ser determinada com base em uma operação de soma ponderada entre a primeira amostra de predição e as amostras de referência de PDPC. Como exemplo, a segunda amostra de predição pode ser adquirida com base na Equação 8 abaixo. [EQUAÇÃO 8]
[428] Na Equação 8, RL representa uma amostra de referência esquerda, RT representa uma amostra de referência superior e RTL representa uma amostra de referência superior esquerda. O pred(x, y) representa uma amostra de predição localizada em (x, y). wL representa um peso atribuído à amostra de referência esquerda, wT representa um peso atribuído à amostra de referência superior e wTL representa um peso atribuído à amostra de referência superior esquerda. O peso atribuído à primeira amostra de predição pode ser derivado subtraindo os pesos atribuídos às amostras de referência do valor máximo. Por conveniência de descrição, um peso atribuído à amostra de referência PDPC será referido como um peso PDPC.
[429] Um peso atribuído a cada amostra de referência pode ser determinado com base em pelo menos um do modo intrapredição do bloco atual ou a localização da primeira amostra de predição.
[430] Como exemplo, pelo menos um de wL, wT ou wTL pode ser direta ou inversamente proporcional a pelo menos uma das coordenadas x ou y da amostra de predição. Alternativamente, pelo menos um de wL, wT ou wTL pode ser direta ou inversamente proporcional a pelo menos um da largura ou altura do bloco atual.
[431] Quando o modo intrapredição do bloco atual é DC, os pesos do PDPC podem ser determinados pela Equação 9 abaixo. [EQUAÇÃO 9]
[432] Na Equação 9, x e y representam a localização da primeira amostra de predição.
[433] Na Equação 9, o deslocamento variável, que é usado para uma operação de deslocamento de bits, pode ser derivado com base na largura ou altura do bloco atual. Como um exemplo, o deslocamento variável pode ser derivado com base na Equação 10 ou 11 abaixo. [EQUAÇÃO 10] [EQUAÇÃO 11]
[434] Alternativamente, o deslocamento variável pode ser derivado em consideração a um parâmetro intradireção do bloco atual.
[435] O número ou tipos de parâmetros usados para derivar o deslocamento variável podem ser determinados de forma diferente, dependendo do modo de intrapredição do bloco atual. Como um exemplo, quando o modo intrapredição do bloco atual é Planar, DC, Vertical ou Horizontal, o deslocamento variável pode ser derivado usando a largura e a altura do bloco atual, como no exemplo mostrado na Equação 10 ou Equação 11. Quando o modo intrapredição do bloco atual é um modo intrapredição com um índice maior do que o modo intrapredição vertical, o deslocamento variável pode ser derivado usando o parâmetro intradireção e a altura do bloco atual. Quando o modo intrapredição do bloco atual é um modo intrapredição com um índice menor do que o modo intrapredição horizontal, o deslocamento variável pode ser derivado usando o parâmetro de intradireção e a largura do bloco atual.
[436] Quando o modo intrapredição do bloco atual é Planar, o valor de wTL pode ser definido como 0. wL e wT podem ser derivados com base na Equação 12 abaixo. [EQUAÇÃO 12]
[437] Quando o modo intrapredição do bloco atual é um modo intrapredição horizontal, wT pode ser definido como 0, e wTL e wL podem ser definidos de forma idêntica. Por outro lado, quando o modo intrapredição do bloco atual é um modo intrapredição vertical, wL pode ser definido como 0, e wTL e wL podem ser definidos de forma idêntica.
[438] Quando o modo intrapredição do bloco atual é um modo intrapredição para cima e para a direita tendo um valor de índice maior do que o modo intrapredição vertical, os pesos de PDPC podem ser derivados usando a Equação 13 abaixo. [EQUAÇÃO 13]
[439] Por outro lado, quando o modo intrapredição do bloco atual é um modo intrapredição para baixo e para a esquerda tendo um valor de índice menor do que o modo intrapredição horizontal, os pesos de PDPC podem ser derivados usando a Equação 14 abaixo. [EQUAÇÃO 14]
[440] Como nas modalidades descritas acima, os pesos de PDPC podem ser determinados com base nas posições x e y da amostra de predição.
[441] Como outro exemplo, um peso atribuído a cada amostra de referência PDPC pode ser determinado em unidades de sub-blocos. Amostras de predição incluídas em um sub-bloco podem compartilhar os mesmos pesos PDPC.
[442] O tamanho do sub-bloco, que é uma unidade básica para determinar pesos, pode ser predefinido em um codificador e um decodificador. Como um exemplo, os pesos podem ser determinados para sub-blocos 2×2 ou 4×4.
[443] Alternativamente, o tamanho, formato ou número de sub-blocos pode ser determinado dependendo do tamanho ou formato do bloco atual. Como exemplo, o bloco de codificação pode ser dividido em quatro sub-blocos, independentemente do tamanho do bloco de codificação. Alternativamente, o bloco de codificação pode ser dividido em quatro ou dezesseis sub-blocos dependendo do tamanho do bloco de codificação.
[444] Alternativamente, o tamanho, forma ou número de sub-blocos pode ser determinado dependendo do modo de intrapredição do bloco atual. Como um exemplo, N colunas (ou N linhas) podem ser definidas como um sub-bloco quando o modo intrapredição do bloco atual é horizontal, e N linhas (ou N colunas) podem ser definidas como um sub-bloco quando o modo intrapredição do bloco atual é vertical.
[445] As Equações 15 a 17 representam um exemplo de determinação dos pesos PDPC para um sub-bloco 2×2. A Equação 15 ilustra que o modo intrapredição do bloco atual é o modo DC. [EQUAÇÃO 15]
[446] Na Equação 15, K pode ser um valor determinado com base no modo intrapredição ou no tamanho do sub-bloco.
[447] A Equação 16 ilustra que o modo intrapredição do bloco atual é um modo intrapredição para cima e para a direita tendo um valor de índice maior do que o modo intrapredição vertical. [EQUAÇÃO 16]
[448] A Equação 17 ilustra que o modo intrapredição do bloco atual é um modo intrapredição para baixo e para a esquerda com um valor de índice menor do que o modo intrapredição horizontal. [EQUAÇÃO 17]
[449] Nas Equações 15 a 17, x e y representam a localização de uma amostra de referência no sub-bloco. A amostra de referência pode ser uma amostra localizada em um canto superior esquerdo do sub-bloco, uma amostra localizada no centro do sub-bloco ou uma amostra localizada em um canto inferior direito do sub-bloco.
[450] As Equações 18 a 20 representam um exemplo de determinação dos pesos PDPC para um sub-bloco 4×4. A Equação 18 ilustra que o modo intrapredição do bloco atual é o modo DC. [EQUAÇÃO 18]
[451] A Equação 19 ilustra que o modo intrapredição do bloco atual é um modo intrapredição para cima e para a direita tendo um valor de índice maior do que o modo intrapredição vertical. [EQUAÇÃO 19]
[452] A Equação 20 ilustra que o modo intrapredição do bloco atual é um modo intrapredição para baixo e para a esquerda com um valor de índice menor do que o modo intrapredição horizontal. [EQUAÇÃO 20]
[453] Nas modalidades acima, os pesos de PDPC são descritos como sendo determinados em consideração aos locais das amostras de predição incluídas no sub-bloco ou na primeira amostra de predição. Os pesos PDPC podem ser determinados em consideração adicional do bloco atual.
[454] Por exemplo, no caso do modo DC, um método de derivar os pesos PDPC pode variar dependendo se o bloco atual tem uma forma não quadrada em que uma largura é maior que uma altura ou uma forma não quadrada em que uma altura é maior que a largura.
[455] A Equação 21 mostra um exemplo de derivação dos pesos PDPC quando o bloco atual tem uma forma não quadrada em que a largura é maior do que a altura, e a Equação 22 mostra um exemplo de derivação dos pesos PDPC quando o bloco atual tem um formato não quadrado em que a altura é maior que a largura. [EQUAÇÃO 21] [EQUAÇÃO 22]
[456] Quando o bloco atual não é quadrado, o bloco atual pode ser previsto usando um modo intrapredição de grande angular. Mesmo quando a intrapredição de grande angular é aplicada, a primeira amostra de predição pode ser atualizada aplicando PDPC.
[457] Quando a intrapredição de grande ângulo é aplicada ao bloco atual, os pesos de PDPC podem ser determinados levando em consideração a forma do bloco de codificação.
[458] Por exemplo, quando o bloco atual tem uma forma não quadrada em que a largura é maior do que a altura, uma amostra de referência superior localizada à direita e acima da primeira amostra de predição pode estar mais próxima da primeira amostra de predição do que uma amostra de referência esquerda localizada à esquerda e abaixo da primeira amostra de predição, dependendo da localização da primeira amostra de predição. Por conseguinte, quando a primeira amostra de predição é corrigida, um peso aplicado à amostra de referência superior pode ser definido para ter um valor maior do que um peso aplicado à amostra de referência esquerda.
[459] Por outro lado, quando o bloco atual tem uma forma não quadrada em que uma altura é maior do que uma largura, uma amostra de referência esquerda localizada à esquerda e abaixo da primeira amostra de predição pode estar mais perto da primeira amostra de predição do que uma amostra de referência superior localizada à direita e acima da primeira amostra de predição, dependendo da localização da primeira amostra de predição. Por conseguinte, quando a primeira amostra de predição é corrigida, um peso aplicado à amostra de referência esquerda pode ser definido para ter um valor maior do que um peso aplicado à amostra de referência superior.
[460] A Equação 23 representa um exemplo de derivação dos pesos PDPC quando o modo intrapredição do bloco atual é um modo intrapredição grande angular com um índice maior que 66. [EQUAÇÃO 23]
[461] A Equação 24 representa um exemplo de derivação dos pesos PDPC quando o modo intrapredição do bloco atual é um modo intrapredição grande angular com um índice menor que 0. [EQUAÇÃO 24]
[462] Os pesos PDPC podem ser determinados com base na razão do bloco atual. A proporção do bloco atual indica uma proporção de largura e altura do bloco atual e pode ser definida usando a Equação 25 abaixo. [EQUAÇÃO 25]
[463] O método de derivar os pesos PDPC pode ser determinado de forma variável, dependendo do modo de intrapredição do bloco atual.
[464] Como um exemplo, a Equação 26 e a Equação
27 representam um exemplo de derivação dos pesos PDPC quando o modo intrapredição do bloco atual é DC. Em detalhes, a Equação 26 é um exemplo em que o bloco atual tem uma forma não quadrada em que a largura é maior que a altura, e a Equação 27 é um exemplo em que o bloco atual tem uma forma não quadrada em que uma altura é maior que uma largura. [EQUAÇÃO 26] [EQUAÇÃO 27]
[465] A Equação 28 representa um exemplo de derivação dos pesos PDPC quando o modo intrapredição do bloco atual é um modo intrapredição grande angular com um índice maior que 66. [EQUAÇÃO 28]
[466] A Equação 29 representa um exemplo de derivação dos pesos PDPC quando o modo intrapredição do bloco atual é um modo intrapredição grande angular com um índice menor que 0. [EQUAÇÃO 29]
[467] Um bloco residual pode ser derivado subtraindo uma predição de um bloco original. Nesse caso, quando o bloco residual é alterado para o domínio da frequência, a qualidade subjetiva do vídeo não diminui significativamente, mesmo se os componentes de alta frequência forem removidos dos componentes de frequência. Consequentemente, quando os valores dos componentes de alta frequência são alterados para valores pequenos ou quando os valores dos componentes de alta frequência são definidos como 0, é possível aumentar a eficiência de compressão sem causar distorção visual significativa. Considerando as características acima, o bloco atual pode ser transformado a fim de decompor o bloco residual em componentes de frequência bidimensionais. A transformação pode ser realizada usando uma técnica de transformação, como Discrete Cosine Transform (DCT) ou Discrete Sine Transform (DST).
[468] DCT está usando a transformação de cosseno para decompor (ou transformar) o bloco residual em componentes de frequência bidimensionais, e DST está usando a transformação de seno para decompor (ou transformar) o bloco residual em componentes de frequência bidimensionais. Como resultado da transformação do bloco residual, os componentes de frequência podem ser expressos com um padrão básico. Por exemplo, quando o DCT é realizado em um bloco N×N, os componentes do padrão básico N2 podem ser adquiridos. O tamanho de cada um dos componentes do padrão básico incluídos no bloco N×N pode ser adquirido por meio da transformação. De acordo com a técnica de transformação usada, o tamanho do componente de padrão básico pode ser referido como um coeficiente DCT ou um coeficiente DST.
[469] A técnica de transformação DCT é usada principalmente para transformar um bloco no qual muitos componentes de baixa frequência diferentes de zero são distribuídos. A técnica de transformação DST é usada principalmente para um bloco no qual muitos componentes de alta frequência são distribuídos.
[470] O bloco residual pode ser transformado usando uma técnica de transformação diferente de DCT ou DST.
[471] Transformar o bloco residual em componentes de frequência bidimensionais será referido como uma transformação bidimensional. Além disso, o tamanho dos componentes básicos do padrão adquiridos por meio do resultado da transformação será referido como um coeficiente de transformação. Como um exemplo, o coeficiente de transformação pode se referir a um coeficiente DCT ou um coeficiente DST. Quando a primeira transformação e a segunda transformação a serem descritas abaixo são aplicadas, o coeficiente de transformação pode se referir ao tamanho de um componente de padrão básico gerado como resultado da segunda transformação.
[472] A técnica de transformação pode ser determinada em unidades de blocos. A técnica de transformação pode ser determinada com base em pelo menos um dos modos de predição do bloco atual ou o tamanho do bloco atual. Por exemplo, quando o bloco atual é codificado no modo intrapredição e o tamanho do bloco atual é menor do que N×N, a transformação pode ser realizada usando a técnica de transformação DST. Por outro lado, quando a condição acima não for satisfeita, a transformação pode ser realizada usando a técnica de transformação DCT.
[473] A transformação bidimensional não pode ser realizada em alguns dos blocos residuais. Não realizar a transformação bidimensional pode ser referido como salto de transformação. Quando o salto de transformação é aplicado, a quantização pode ser aplicada a valores residuais nos quais a transformação não é realizada.
[474] Depois que o bloco atual é transformado usando DCT ou DST, o bloco atual transformado pode ser transformado novamente. Neste caso, a transformação com base em DCT ou DST pode ser definida como a primeira transformação, e a retransformação de um bloco submetido à primeira transformação pode ser definida como a segunda transformação.
[475] A primeira transformação pode ser realizada usando um de uma pluralidade de candidatos a núcleo de transformação. Como exemplo, a primeira transformação pode ser realizada usando um de DCT2, DCT8 ou DCT7.
[476] Diferentes núcleos de transformação podem ser usados na direção horizontal e na direção vertical. As informações que indicam uma combinação do núcleo de transformação vertical e do núcleo de transformação horizontal podem ser sinalizadas em um fluxo de bits.
[477] A primeira transformação e a segunda transformação podem ser realizadas em unidades diferentes. A título de exemplo, a primeira transformação pode ser realizada em um bloco 8×8 e a segunda transformação pode ser realizada em um sub-bloco 4×4 do bloco 8×8 transformado. Neste caso, o coeficiente de transformação de áreas residuais onde a segunda transformação não é realizada pode ser definido como 0.
[478] Alternativamente, a primeira transformação pode ser realizada em um bloco 4×4 e a segunda transformação pode ser realizada na área de um bloco 8×8 incluindo o bloco 4×4 transformado.
[479] As informações que indicam se a segunda transformação deve ser realizada podem ser sinalizadas em um fluxo de bits.
[480] Alternativamente, a realização da segunda transformação pode ser determinada com base em se um núcleo de transformação horizontal e um núcleo de transformação vertical são idênticos. Por exemplo, a segunda transformação pode ser realizada apenas quando o núcleo de transformação horizontal e o núcleo de transformação vertical são idênticos. Alternativamente, a segunda transformação pode ser realizada apenas quando o núcleo de transformação horizontal e o núcleo de transformação vertical são diferentes.
[481] Alternativamente, a segunda transformação pode ser permitida apenas quando a transformação horizontal e a transformação vertical usam um núcleo de transformação predefinido. Por exemplo, quando um núcleo de transformação DCT2 é usado para a transformação horizontal e a transformação vertical, a segunda transformação pode ser permitida.
[482] Alternativamente, a execução da segunda transformação pode ser determinada com base no número de coeficientes de transformação diferente de zero do bloco atual. Como exemplo, pode ser definido para não usar a segunda transformação quando um coeficiente de transformação diferente de zero do bloco atual é menor ou igual a um valor de limite, e pode ser configurado para usar a segunda transformação quando o coeficiente de transformação diferente de zero do bloco atual é maior do que o valor limiar. Ele pode ser configurado para usar a segunda transformação apenas quando o bloco atual é codificado por intrapredição.
[483] O tamanho ou formato de um sub-bloco a ser submetido à segunda transformação pode ser determinado com base no formato do bloco atual.
[484] As Figuras 38 e 39 são diagramas que mostram um sub-bloco a ser submetido a uma segunda transformação.
[485] Quando o bloco atual é quadrado, a segunda transformação pode ser realizada em um sub-bloco N×N localizado no canto superior esquerdo do bloco atual após a primeira transformação ser realizada. Por exemplo, quando o bloco atual é um bloco de codificação 8×8, a segunda transformação pode ser realizada em um sub-bloco 4×4 localizado no canto superior esquerdo do bloco atual após a primeira transformação ser realizada na corrente bloco (ver Figura 38).
[486] Quando o bloco atual tem uma forma não quadrada em que a largura é quatro ou mais vezes a altura, a segunda transformação pode ser realizada em um sub-bloco kN×4kN localizado no canto superior esquerdo do bloco atual após a primeira transformação ser executada. Por exemplo, quando o bloco atual tem uma forma não quadrada com um tamanho de 16×4, a primeira transformação pode ser realizada no bloco atual e, então, a segunda transformação pode ser realizada em um sub- bloco 2×8 localizado no canto superior esquerdo do bloco atual (Consulte Figura 39A).
[487] Quando o bloco atual tem uma forma não quadrada em que a altura é quatro ou mais vezes a largura, a segunda transformação pode ser realizada em um sub-bloco de 4kN×kN localizado no canto superior esquerdo do bloco atual após a primeira transformação ser executada. Por exemplo, quando o bloco atual tem uma forma não quadrada com um tamanho de 16×4, a primeira transformação pode ser realizada no bloco atual e, então, a segunda transformação pode ser realizada em um sub-bloco 2×8 localizado no canto superior esquerdo do bloco atual (Consulte Figura 39B).
[488] O decodificador pode realizar uma transformação inversa da segunda transformação (uma segunda transformação inversa) e pode realizar uma transformação inversa da primeira transformação (uma primeira transformação inversa) em um resultado da segunda transformação inversa. Como resultado da realização da segunda transformação inversa e da primeira transformação inversa, sinais residuais para o bloco atual podem ser adquiridos.
[489] A quantização é para reduzir a energia de um bloco, e o processo de quantização inclui dividir um coeficiente de transformação por um valor constante específico. O valor constante pode ser derivado por um parâmetro de quantização e o parâmetro de quantização pode ser definido como um valor entre 1 e 63.
[490] Quando uma transformação e quantização são realizadas pelo codificador, o decodificador pode adquirir um bloco residual por meio de uma quantização inversa e uma transformação inversa. O decodificador pode adquirir um bloco reconstruído para o bloco atual adicionando o bloco de predição e o bloco residual.
[491] As informações que indicam o tipo de transformação do bloco atual podem ser sinalizadas em um fluxo de bits. As informações podem informações de índice tu_mts_idx, que indicam uma de uma pluralidade de combinações de um tipo de transformação horizontal e um tipo de transformação vertical.
[492] Um núcleo de transformação vertical e um núcleo de transformação horizontal podem ser determinados com base em candidatos de tipo de transformação especificados pelas informações de índice tu_mts_idx. A Tabela 9 e a Tabela 10 representam combinações de tipo de transformação correspondentes a tu_mts_idx. [TABELA 9] tu_mts_idx Tipo de Transformação Horizontal Vertical 0 SALTO SALTO 1 DCT-II DCT-II 2 DST-VII DST-VII 3 DCT-VIII DST-VII 4 DST-VII DCT-VIII 5 DCT-VIII DCT-VIII [TABELA 10] tu_mts_idx Tipo de Transformação Horizontal Vertical 0 DCT-II DCT-II 1 SALTO SALTO 2 DST-VII DST-VII 3 DCT-VIII DST-VII 4 DST-VII DCT-VIII 5 DCT-VIII DCT-VIII
[493] Pode ser determinado que o tipo de transformação é um de DCT2, DST7, DCT8 ou salto de transformação. Alternativamente, os candidatos de combinação de tipo de transformação podem ser construídos usando apenas os núcleos de transformação, excluindo o salto de transformação.
[494] Quando a Tabela 9 é usada e tu_mts_idx é 0, o salto de transformação pode ser aplicado na direção horizontal e na direção vertical. Quando tu_mts_idx é 1, DCT2 pode ser aplicado na direção horizontal e na direção vertical. Quando tu_mts_idx é 3, DCT8 pode ser aplicado na direção horizontal e DCT7 pode ser aplicado na direção vertical.
[495] Quando a Tabela 10 é usada e tu_mts_idx é 0, DCT2 pode ser aplicado na direção horizontal e na direção vertical. Quando tu_mts_idx é 1, o salto de transformação pode ser aplicado na direção horizontal e na direção vertical. Quando tu_mts_idx é 3, DCT8 pode ser aplicado na direção horizontal e DCT7 pode ser aplicado na direção vertical.
[496] O fato de codificar as informações de índice pode ser determinado com base em pelo menos um do tamanho ou forma do bloco atual ou o número de coeficientes diferentes de zero. Por exemplo, quando o número de coeficientes diferentes de zero é menor ou igual a um valor limiar, as informações de índice podem não ser sinalizadas e um tipo de transformação padrão pode ser aplicado ao bloco atual. Aqui, o tipo de transformação padrão pode ser DST7. Alternativamente, um modo padrão pode variar dependendo do tamanho, formato ou modo intrapredição do bloco atual.
[497] O valor limiar pode ser determinado com base no tamanho ou forma do bloco atual. Por exemplo, o valor de limite pode ser definido como 2 quando o tamanho do bloco atual é menor ou igual a 32×32 e o valor de limite pode ser definido como 4 quando o bloco atual é maior que 32×32 (por exemplo, quando o bloco atual é um bloco de codificação de 32×64 ou 64×32).
[498] Uma pluralidade de tabelas de pesquisa pode ser armazenada em um codificador ou decodificador. Pelo menos um dos valores de índice atribuídos aos candidatos de combinação de tipo de transformação, os tipos de candidatos de combinação de tipo de transformação ou o número de candidatos de combinação de tipo de transformação podem diferir para cada uma da pluralidade de tabelas de consulta.
[499] Uma tabela de pesquisa para o bloco atual pode ser selecionada com base em pelo menos um dentre o tamanho, forma, modo de predição ou modo intrapredição do bloco atual, seja para aplicar a transformação secundária ou para aplicar o salto de transformação para um bloco vizinho.
[500] Como exemplo, a tabela de pesquisa da Tabela 9 pode ser usada quando o tamanho do bloco atual é menor ou igual a 4×4 ou quando o bloco atual é codificado por interpredição, e a tabela de pesquisa da Tabela 10 pode ser usada quando o tamanho do bloco atual é maior do que 4×4 ou quando o bloco atual é codificado por intrapredição.
[501] Alternativamente, as informações indicando uma da pluralidade de tabelas de pesquisa podem ser sinalizadas em um fluxo de bits. O decodificador pode selecionar uma tabela de pesquisa para o bloco atual com base nas informações.
[502] Como outro exemplo, um índice atribuído a um candidato de combinação de tipo de transformação pode ser determinado de forma adaptativa com base em pelo menos um dentre tamanho, forma, modo de predição, ou modo intrapredição do bloco atual, seja para aplicar a transformação secundária ou para aplicar o salto de transformação para um bloco vizinho. Por exemplo, um índice atribuído ao salto de transformação quando o tamanho do bloco atual é 4×4 pode ter um valor menor do que um índice atribuído ao salto de transformação quando o tamanho do bloco atual é maior que 4×4. Em detalhes, o índice 0 pode ser atribuído ao salto de transformação quando o tamanho do bloco atual é 4×4, e um índice maior que 0 (por exemplo, índice 1) pode ser atribuído ao salto de transformação quando o bloco atual é maior que 4×4 e é menor ou igual a 16×16. Quando o bloco atual é maior do que 16×16, o valor máximo (por exemplo, 5) pode ser atribuído ao índice do salto de transformação.
[503] Alternativamente, quando o bloco atual é codificado por interpredição, o índice 0 pode ser aplicado ao salto de transformação. Quando o bloco atual é codificado por intrapredição, um índice maior que 0 (por exemplo, índice 1) pode ser atribuído ao salto de transformação.
[504] Alternativamente, quando o bloco atual é um bloco 4×4 que é codificado por meio de interpredição, o índice 0 pode ser atribuído ao salto de transformação. Por outro lado, quando o bloco atual não é codificado por interpredição ou quando o bloco atual é maior que 4×4, um índice maior que 0 (por exemplo, índice 1) pode ser atribuído ao salto de transformação.
[505] Candidatos de combinação de tipo de transformação que são diferentes dos candidatos de combinação de tipo de transformação listados na Tabela 9 e Tabela 10 podem ser definidos e usados. Como um exemplo, o salto de transformação pode ser aplicado a uma das transformadas horizontais ou verticais, e um candidato de combinação de tipo de transformação ao qual um núcleo de transformação, como DCT7, DCT8 ou DST2 é aplicado, pode ser usado para o outro. Neste caso, se usar o salto de transformação para um candidato do tipo de transformação horizontal ou um candidato do tipo de transformação vertical pode ser determinado com base em pelo menos um dos tamanhos (por exemplo, largura e/ou altura), formato, modo de predição ou modo intrapredição do bloco atual.
[506] Alternativamente, as informações que indicam se um candidato a tipo de transformação específico está disponível podem ser sinalizadas em um fluxo de bits. Como exemplo, um sinalizador que indica a possibilidade de usar o salto de transformação para a direção horizontal e a direção vertical como um candidato do tipo de transformação pode ser sinalizado. Se um candidato de combinação de tipo de transformação específico entre uma pluralidade de candidatos de combinação de tipo de transformação está incluído pode ser determinado de acordo com o sinalizador.
[507] Alternativamente, se o candidato de tipo de transformação específico é aplicado ao bloco atual pode ser sinalizado em um fluxo de bits. Como exemplo, um sinalizador cu_mts_flag, que indica se deve ser aplicado DCT2 na direção horizontal e na direção vertical, pode ser sinalizado. Quando o valor de cu_mts_flag é 1, DCT2 pode ser definido como o núcleo de transformação para a direção vertical e a direção horizontal. Quando o valor de cu_mts_flag é 0, DCT8 ou DST7 pode ser definido como o núcleo de transformação para a direção vertical e a direção horizontal. Alternativamente, quando o valor de cu_mts_flag é 0, as informações tu_mts_idx, que especificam um da pluralidade de candidatos de combinação de tipo de transformação, podem ser sinalizadas.
[508] Quando o bloco atual tem uma forma não quadrada na qual a largura é maior do que a altura ou uma forma não quadrada na qual a altura é maior que a largura, a codificação de cu_mts_flag pode ser omitida e o valor de cu_mts_flag pode ser considerado zero.
[509] O número de candidatos de combinação de tipo de transformação disponíveis pode ser definido de forma diferente, dependendo do tamanho, forma ou modo de intrapredição do bloco atual. Como um exemplo, três ou mais candidatos de combinação de tipo de transformação podem ser usados quando o bloco atual é quadrado, e dois candidatos de combinação de tipo de transformação podem ser usados quando o bloco atual é não quadrado. Alternativamente, quando o bloco atual é quadrado, apenas os candidatos de combinação de tipo de transformação tendo um tipo de transformação horizontal e um tipo de transformação vertical diferentes um do outro entre os candidatos de combinação de tipo de transformação podem ser usados.
[510] Quando o bloco atual pode usar três ou mais candidatos de combinação de tipo de transformação, as informações de índice tu_mts_idx, que indicam um dos candidatos de combinação de tipo de transformação, podem ser sinalizadas. Por outro lado, quando o bloco atual pode usar dois candidatos de combinação de tipo de transformação, um sinalizador mts_flag, que indica um dos candidatos de combinação de tipo de transformação, pode ser sinalizado. A Tabela 11 abaixo representa um aspecto de codificação de informações para especificar candidatos de combinação de tipo de transformação de acordo com a forma do bloco atual. [TABELA 11] residual_coding(x0, y0, log2TbWidth, log2TbHeight, cIdx) { Descriptor ... if( cu_mts_flag[x0][y0] && (cIdx == 0) && !transform_skip_flag[ x0 ][ y0 ][ cIdx ] && ( ( CuPredMode[ x0 ][ y0 ] = = MODE_INTRA && numSigCoeff > 2 ) | | ( CuPredMode[ x0 ][ y0 ] = = MODE_INTER ) ) ) { if (cbHeight == cbWidth) { mts_idx[ x0 ][ y0 ] ae(v) } else { mts_flag[ x0 ][ y0 ] u(1) } }
[511] Os índices dos candidatos à combinação do tipo de transformação podem ser reorganizados (ou reordenados) de acordo com a forma do bloco atual. Como um exemplo, os índices atribuídos a candidatos de combinação de tipo de transformação quando o bloco atual é quadrado podem ser diferentes dos índices atribuídos a candidatos de combinação de tipo de transformação quando o bloco atual não é quadrado. Como um exemplo, uma combinação de tipo de transformação pode ser selecionada com base na Tabela 12 quando o bloco atual é quadrado, e uma combinação de tipo de transformação pode ser selecionada com base na Tabela 13 quando o bloco atual é não quadrado. [TABELA 12]
mts_idx INTRA INTER Núcleo de Núcleo de Núcleo de Núcleo de Transformaçã Transformaçã Transformaçã Transforma o Horizontal o Vertical o Horizontal ção Vertical 0 DST7 DST7 DCT8 DCT8 1 DCT8 DST7 DST7 DCT8 2 DST7 DCT8 DCT8 DST7 3 DCT8 DCT8 DST7 DST7 [TABELA 13] mts_idx INTRA INTER Núcleo de Núcleo de Núcleo de Núcleo de Transformaçã Transforma Transformação Transforma o Horizontal ção Horizontal ção Vertical Vertical 0 DST8 DST7 DCT7 DCT8 1 DCT7 DST8 DST8 DCT7 2 DST7 DCT7 DCT7 DST7 3 DCT8 DCT8 DST7 DST7
[512] Um tipo de transformada pode ser determinado com base no número de coeficientes horizontais diferentes de zero do bloco atual ou o número de coeficientes verticais diferentes de zero do bloco atual. Aqui, o número de coeficientes horizontais diferentes de zero indica o número de coeficientes diferentes de zero incluídos em 1×N (aqui, N é a largura do bloco atual), e o número de coeficientes verticais diferentes de zero indica o número de coeficientes diferentes de zero incluídos em N×1 (aqui, N é a altura do bloco atual). Um primeiro tipo de transformação pode ser aplicado na direção horizontal quando o valor máximo dos coeficientes horizontais diferentes de zero é menor ou igual a um valor limiar, e um segundo tipo de transformação pode ser aplicado na direção horizontal quando o valor máximo dos coeficientes horizontais diferentes de zero é maior do que o valor limiar. O primeiro tipo de transformação pode ser aplicado na direção vertical quando o valor máximo dos coeficientes verticais diferentes de zero é menor ou igual a um valor limiar, e um segundo tipo de transformação pode ser aplicado na direção vertical quando o valor máximo dos coeficientes verticais diferentes de zero é maior do que o valor limiar.
[513] A Figura 40 é um diagrama para descrever um exemplo em que o tipo de transformação do bloco atual é determinado.
[514] Como um exemplo, quando o bloco atual é codificado através de intrapredição e o valor máximo dos coeficientes horizontais diferentes de zero do bloco atual é menor ou igual a 2 (ver Figura 40A), DST7 pode ser determinado como o tipo de transformação horizontal.
[515] Quando o bloco atual é codificado por intrapredição e o valor máximo dos coeficientes verticais diferentes de zero do bloco atual é maior do que 2 (ver a Figura 40B), DCT2 ou DCT8 podem ser determinados como o tipo de transformação vertical.
[516] Um coeficiente residual pode ser codificado em unidades de transformação ou em unidades de subtransformação. Aqui, o coeficiente residual se refere a um coeficiente de transformação gerado por meio de transformada, um coeficiente de salto de transformação gerado por meio de salto de transformação ou um coeficiente quantizado gerado pela quantização de um coeficiente ou coeficiente de transformação.
[517] A unidade de transformação pode se referir a um bloco submetido à primeira transformação ou à segunda transformação. A unidade de subtransformação se refere a um bloco menor que a unidade de transformação. Como exemplo, a unidade de subtransformação pode ser um bloco 4×4, 2×8 ou 8×2.
[518] Pelo menos um do tamanho ou formato da unidade de subtransformação pode ser determinado com base no tamanho ou formato do bloco atual. Como um exemplo, a unidade de subtransformação também é definida para ter uma forma não quadrada em que a largura é maior do que uma altura (por exemplo, 8×2) quando o bloco atual tem uma forma não quadrada em que a largura é maior do que uma altura, e a unidade de subtransformação também pode ser configurada para ter uma forma não quadrada em que a altura é maior que uma largura (por exemplo, 2×8) quando o bloco atual tem uma forma não quadrada em que a altura é maior que uma largura. Quando o bloco atual é quadrado, a unidade de subtransformação também pode ser configurada para ter uma forma quadrada (por exemplo, 4×4).
[519] Quando uma pluralidade de unidades de subtransformação é incluída no bloco atual, as unidades de subtransformação podem ser sequencialmente codificadas ou decodificadas. Um coeficiente residual pode ser codificado usando codificação de entropia, como codificação aritmética. Um método de codificação ou decodificação de um coeficiente residual será descrito em detalhes abaixo com referência ao desenho.
[520] A Figura 41 é um fluxograma que mostra um método de codificação de um coeficiente residual.
[521] Nessa modalidade, assume-se que o bloco atual inclui uma ou mais unidades de subtransformação. Além disso, assume-se que uma unidade de subtransformação tem um tamanho de 4×4. No entanto, essa modalidade pode ser aplicada como é mesmo quando o tamanho da unidade de subtransformação ou a forma da unidade de subtransformação é diferente do descrito acima.
[522] Se um coeficiente diferente de zero está presente no bloco atual pode ser determinado (S4101). O coeficiente diferente de zero indica um coeficiente residual cujo valor absoluto é maior que 0. As informações que indicam se um coeficiente diferente de zero está presente no bloco atual podem ser codificadas e sinalizadas. Como um exemplo, as informações podem ser um sinalizador de 1 bit e podem ser um sinalizador de bloco codificado (CBF).
[523] Quando um coeficiente diferente de zero está presente no bloco atual, se um coeficiente diferente de zero está presente para cada unidade de subtransformação pode ser determinado (S4102). As informações que indicam se um coeficiente diferente de zero está presente para cada unidade de subtransformação podem ser codificadas e sinalizadas. Como um exemplo, as informações podem ser um sinalizador de 1 bit e podem ser um sinalizador de sub-bloco codificado (CSBF). As unidades de subtransformação podem ser codificadas em uma ordem de varredura pré-selecionada.
[524] Quando um coeficiente diferente de zero está presente em uma unidade de subtransformação, os coeficientes residuais na unidade de subtransformação podem ser dispostos em uma dimensão a fim de codificar os coeficientes residuais da unidade de subtransformação (S4103). Os coeficientes residuais podem ser dispostos em uma dimensão em uma ordem de varredura pré-selecionada.
[525] A ordem de varredura pode incluir pelo menos uma varredura diagonal, varredura horizontal, varredura vertical ou varreduras inversas das mesmas.
[526] As Figuras 42 e 43 são diagramas que mostram uma ordem da disposição de coeficientes residuais para cada ordem de varredura.
[527] As Figuras 42A a 42C representam varredura diagonal, varredura horizontal e varredura vertical e a Figura 43A a 43C representam varreduras inversas dos mesmos.
[528] Os coeficientes residuais podem ser dispostos em uma dimensão em uma ordem de varredura selecionada.
[529] A ordem de varredura pode ser determinada em consideração a pelo menos um dentre o tamanho, forma ou modo intrapredição do bloco atual, um núcleo de transformação usado para a transformação primária ou se deve ser aplicada a transformação secundária. Por exemplo, quando o bloco atual tem uma forma não quadrada em que a largura é maior que a altura, o coeficiente residual pode ser codificado usando a varredura horizontal inversa. Por outro lado, quando o bloco atual tem uma forma não quadrada em que a altura é maior do que a largura, o coeficiente residual pode ser codificado usando a varredura vertical inversa.
[530] Alternativamente, a otimização de distorção de taxa (RDO) pode ser calculada para cada uma de uma pluralidade de ordens de varredura, e uma ordem de varredura tendo o RDO mais baixo pode ser determinada como a ordem de varredura do bloco atual. Neste caso, as informações que indicam a ordem de varredura do bloco atual podem ser codificadas e sinalizadas.
[531] Um candidato de ordem de varredura que pode ser usado quando um coeficiente de salto de transformação é codificado pode ser diferente de um candidato de ordem de varredura que pode ser usado quando um coeficiente de transformação é codificado. Como um exemplo, o inverso do candidato de ordem de varredura que pode ser usado quando o coeficiente de transformação é codificado pode ser definido como o candidato de ordem de varredura que pode ser usado para codificar o coeficiente de salto de transformação.
[532] Como exemplo, quando o coeficiente de transformação é codificado usando um de varredura diagonal inversa, varredura horizontal inversa ou varredura vertical inversa, o coeficiente de salto de transformação pode ser codificado usando um de varredura diagonal, varredura horizontal ou varredura vertical.
[533] Em seguida, a localização do último coeficiente diferente de zero varrido no bloco de transformação pode ser codificada (S4103). A localização do eixo geométrico x e localização do eixo geométrico y do último coeficiente diferente de zero podem ser codificados.
[534] A Figura 44 mostra um exemplo no qual a localização do último coeficiente diferente de zero é codificada.
[535] No exemplo mostrado na Figura 44, quando a varredura diagonal é aplicada, um coeficiente residual localizado no canto superior direito do bloco de transformação pode ser definido como o último coeficiente diferente de zero. A coordenada x LastX do coeficiente residual é 3, e a coordenada y LastY do coeficiente residual é 0. LastX pode ser codificado enquanto separado em last_sig_coeff_x_prefix, que é uma parte do prefixo, e last_sig_coeff_x_suffix, que é uma parte do sufixo. LastY também pode ser codificado enquanto separado em last_sig_coeff_y_prefix, que é uma parte do prefixo, e last_sig_coeff_y_suffix, que é uma parte do sufixo.
[536] Quando a localização do último coeficiente diferente de zero é determinada, informações que indicam se os coeficientes residuais anteriores ao último coeficiente diferente de zero na ordem de varredura são coeficientes diferentes de zero podem ser codificadas (S4104). As informações podem ser um sinalizador sig_coeff_flag de 1 bit. O valor do sinalizador de coeficiente diferente de zero sig_coeff_flag pode ser definido como 0 quando o coeficiente residual é 0, e o valor do sinalizador de coeficiente diferente de zero sig_coeff_flag pode ser definido como 1 quando o coeficiente residual é 1. A codificação do sinalizador de coeficiente diferente de zero sig_coeff_flag para o último coeficiente diferente de zero pode ser omitida. Quando a codificação do sinalizador de coeficiente diferente de zero sig_coeff_flag é omitida, o coeficiente residual correspondente é considerado diferente de zero.
[537] As informações sobre a localização do último coeficiente diferente de zero para o coeficiente de salto de transformação não podem ser codificadas. Neste caso, sinalizador de coeficiente diferente de zero sig_coeff_flag para todos os coeficientes de salto de transformação em um bloco pode ser codificado.
[538] Alternativamente, as informações que indicam se as informações sobre a localização do último coeficiente diferente de zero estão codificadas podem ser codificadas e sinalizadas. As informações podem ser um sinalizador de 1 bit. O decodificador pode determinar se deve decodificar as informações sobre a localização do último coeficiente diferente de zero de acordo com o valor do sinalizador. Quando a localização do último coeficiente diferente de zero não é decodificada, um sinalizador de coeficiente diferente de zero pode ser decodificado para todos os coeficientes de salto de transformação. Por outro lado, quando a localização do último coeficiente diferente de zero é decodificada, as informações indicando se os coeficientes de salto de transformação que são varridos antes do último coeficiente diferente de zero são coeficientes diferentes de zero podem ser codificados.
[539] O componente DC de um coeficiente de transformação ou um coeficiente de salto de transformação não pode ser definido como zero. Aqui, o componente DC pode indicar uma última amostra digitalizada ou uma amostra localizada em um canto superior esquerdo do bloco. Para o componente DC, a codificação do sinalizador de coeficiente diferente de zero sig_coeff_flag pode ser omitida. Quando a codificação do sinalizador de coeficiente diferente de zero sig_coeff_flag é omitida, o coeficiente residual correspondente é considerado diferente de zero.
[540] Quando o coeficiente residual é diferente de zero, as informações que indicam o valor absoluto do coeficiente residual e as informações que indicam o sinal do coeficiente residual podem ser codificadas (S4105). Um processo de codificação das informações que indicam o valor absoluto do coeficiente residual será descrito em detalhes com referência à Figure 45.
[541] A codificação do coeficiente residual pode ser realizada sequencialmente nas unidades de subtransformação incluídas no bloco atual e todos os coeficientes residuais após o último coeficiente diferente de zero (S4106 e S4107).
[542] A Figura 45 é um fluxograma de um processo de codificação do valor absoluto de um coeficiente residual.
[543] Quando o valor absoluto de um coeficiente residual é maior que 0, informações indicando se o coeficiente residual ou um coeficiente remanescente é um número par ou ímpar podem ser codificadas (S4501). Aqui, o coeficiente remanescente pode ser definido como o valor absoluto do coeficiente residual menos 1. As informações podem ser um sinalizador de paridade de 1 bit. Por exemplo, o valor do elemento da sintaxe par_level_flag sendo 0 significa que o coeficiente residual ou o coeficiente remanescente é um número par, e o valor do elemento de sintaxe par_level_flag sendo 1 significa que o coeficiente residual ou o coeficiente remanescente é um número ímpar. O valor do elemento de sintaxe par_level_flag pode ser determinado usando a Equação 30 abaixo. [EQUAÇÃO 30]
[544] Na Equação 30, Tcoeff representa um coeficiente residual e abs() representa uma função de valor absoluto.
[545] Um coeficiente remanescente ajustado pode ser derivado dividindo o coeficiente residual ou o coeficiente remanescente por 2 ou aplicando uma operação de deslocamento de bit ao coeficiente residual ou ao coeficiente remanescente (S4502). Em detalhe, um quociente obtido pela divisão do coeficiente residual por 2 pode ser definido como o coeficiente remanescente ajustado, ou um valor obtido pelo deslocamento do coeficiente residual para a direita em 1 pode ser definido como o coeficiente remanescente ajustado.
[546] Como exemplo, o coeficiente remanescente ajustado pode ser derivado usando a Equação 31 abaixo. [EQUAÇÃO 31]
[547] Na Equação 31, ReRemLevel representa um coeficiente remanescente ajustado e RemLevel representa um coeficiente remanescente.
[548] Em seguida, as informações que indicam o tamanho do coeficiente remanescente ajustado podem ser codificadas. As informações que indicam o tamanho do coeficiente remanescente ajustado podem incluir informações que indicam se o coeficiente remanescente ajustado é maior do que N. Aqui, N é um número natural, como 1, 2, 3 e 4.
[549] A título de exemplo, podem ser codificadas informações indicando se o valor do coeficiente remanescente ajustado é maior que 1. As informações podem ser um sinalizador de 1 bit rem_abs_gt1_flag.
[550] Quando o coeficiente remanescente é 0 ou 1, o valor de rem_abs_gt1_flag pode ser definido como 0. Ou seja, quando o coeficiente residual é 1 ou 2, o valor de rem_abs_gt1_flag pode ser definido como 0. Nesse caso, par_level_flag pode ser definido como 0 quando o coeficiente remanescente é 0, e par_level_flag pode ser definido como 1 quando o coeficiente remanescente é 1.
[551] Quando o coeficiente remanescente ajustado é 2 ou mais (S4504), o valor de rem_abs_gt1_flag pode ser definido como 1 e as informações que indicam se o valor do coeficiente remanescente ajustado é maior que 2 podem ser codificadas (S4505). As informações podem ser um sinalizador de 1 bit rem_abs_gt2_flag.
[552] Quando o coeficiente remanescente é 1 ou 2, o valor de rem_abs_gt2_flag pode ser definido como 0. Ou seja, quando o coeficiente residual é 3 ou 4, o valor de rem_abs_gt2_flag pode ser definido como 0. Nesse caso, par_level_flag pode ser definido como 2 quando o coeficiente remanescente é 0, e par_level_flag pode ser definido como 1 quando o coeficiente remanescente é 3.
[553] Quando o coeficiente de remanescente ajustado é maior que 2, as informações do valor residual indicando o coeficiente de remanescente ajustado menos 2 podem ser codificadas (S4506). Ou seja, um valor obtido subtraindo- se 5 do valor absoluto do coeficiente residual e depois dividindo-se o resultado da subtração por 2 pode ser codificado como as informações do valor residual.
[554] Embora não mostrado, o coeficiente residual pode ser codificado adicionalmente usando um sinalizador que indica se o coeficiente remanescente ajustado é maior que 3 (por exemplo, rem_abs_gt3_flag) ou um sinalizador que indica se o coeficiente remanescente ajustado é maior do que 4 (por exemplo, rem_abs_gt4_flag). Nesse caso, o coeficiente remanescente ajustado menos o valor máximo pode ser definido como o valor residual. O valor máximo representa o N máximo aplicado a rem_abs_gtN_flag.
[555] Em vez dos sinalizadores para comparar o valor do coeficiente remanescente ajustado com um valor específico, podem ser usados sinalizadores para comparar o valor absoluto do coeficiente ajustado ou o coeficiente residual com um valor específico. Por exemplo, gr2_flag, que indica se o valor absoluto do coeficiente residual é maior que 2, pode ser usado em vez de rem_abs_gt1_flag, e gr4_flag, que indica se o valor absoluto do coeficiente residual é maior que 4, pode ser usado em vez de rem_abs_gt2_flag.
[556] A Tabela 14 simplesmente representa um processo de codificação de coeficientes residuais usando elementos de sintaxe. [TABELA 14] Sig_coeff_flag = (abs(TCoeff) != 0) ? 1 : 0 Encode Sig_coeff_flag if (Sig_coeff_flag) { RemLevel = abs(Tcoeff) - 1 Parity_level_flag = RemLevel %2 Encode parity_level_flag ReRemLevel = RemLevel >> 1 Rem_abs_gt1_flag = (ReRemLevel > 1) ? 1 : 0 Encode rem_abs_gt1_flag if (Rem_abs_gt1_flag == 1) { Rem_abs_gt2_flag = absLevel > 4 ? 1 : 0 if (Rem_abs_gt1_flag ==1) { Encode rem_abs_gt2_flag Rem = ( absLevel - 5 ) >> 1 Encode Rem } } Sign_Coeff = TCoeff > 0 ? 0 : 1 Encode Sign_Coeff }
[557] No exemplo acima, o coeficiente residual pode ser codificado usando par_level_flag e pelo menos um sinalizador rem_abs_gtN_flag (aqui, N é um número natural, como 1, 2, 3 e 4).
[558] rem_abs_gtN_flag representa se o coeficiente residual é maior que 2N. Para um coeficiente residual 2N-1 ou 2N, rem_abs_gt(N-1)_flag é definido como verdadeiro e rem_abs_gtN_flag é definido como falso. Além disso, o valor de par_level_flag pode ser definido como 0 para o coeficiente residual 2N-1 e o valor de par_level_flag pode ser definido como 1 para o coeficiente residual 2N. Ou seja, os coeficientes residuais menores ou iguais a 2N podem ser codificados usando rem_abs_gtN_flag e par_level_flag.
[559] Para coeficientes residuais maiores ou iguais a 2MAX+1, as informações do valor residual indicando um valor obtido pela divisão de uma diferença com 2MAX por 2 podem ser codificadas. Aqui, MAX representa o valor máximo de N. Por exemplo, quando rem_abs_gt1_flag e rem_abs_gt2_flag são usados, MAX pode ser 2.
[560] Um decodificador também pode decodificar coeficientes residuais na ordem mostrada na Figura 45. Em detalhes, o decodificador pode determinar a localização do último coeficiente diferente de zero e pode decodificar sig_coeff_flag para cada coeficiente residual que é varrido antes do último coeficiente diferente de zero.
[561] Quando sig_coeff_flag for true, o decodificador pode decodificar par_level_flag do coeficiente residual correspondente. Além disso, o decodificador pode decodificar rem_abs_gt1_flag do coeficiente residual correspondente. Nesse caso, rem_abs_gtN_flag pode ser adicionalmente decodificado dependendo do valor de rem_abs_gt(N-1)_flag. Por exemplo, quando o valor de rem_abs_gt(N-1)_flag é 1, o decodificador pode decodificar rem_abs_gtN_flag. Por exemplo, quando o valor de rem_abs_gt1_flag para o coeficiente residual é 1, o decodificador pode ainda analisar rem_abs_gt2_flag para o coeficiente residual. Quando o valor de rem_abs_gt(MAX)_flag é 1, o decodificador pode decodificar as informações do valor residual.
[562] Quando o valor de rem_abs_gtN_flag do coeficiente residual é 0, o valor do coeficiente residual pode ser determinado como 2N-1 ou 2N, dependendo do valor de par_level_flag. Em detalhes, o coeficiente residual pode ser definido como 2N-1 quando par_level_flag for 0 e o coeficiente residual pode ser definido como 2N quando par_level_flag for
1.
[563] Por exemplo, quando rem_abs_gt1_flag é 0, o valor absoluto do coeficiente residual pode ser definido como 1 ou 2, dependendo do valor de par_level_flag. Em detalhes, o valor absoluto do coeficiente residual é 1 quando o valor de par_level_flag é 0, e o valor absoluto do coeficiente residual é 2 quando o valor de par_level_flag é 1.
[564] Por exemplo, quando rem_abs_gt2_flag é 0, o valor absoluto do coeficiente residual pode ser definido como 3 ou 4, dependendo do valor de par_level_flag. Em detalhes, o valor absoluto do coeficiente residual é 3 quando o valor de par_level_flag é 0, e o valor absoluto do coeficiente residual é 4 quando o valor de par_level_flag é 1.
[565] Quando as informações do valor residual são decodificadas, o coeficiente residual pode ser definido como 2(MAX+R)-1 ou 2(MAX+R) dependendo do valor de par_level_flag. Aqui, R representa um valor indicado pelas informações do valor residual. Como um exemplo, o coeficiente residual pode ser definido como 2(MAX+R)-1 quando par_level_flag é 0, e o coeficiente residual pode ser definido como 2(MAX+R) quando par_level_flag é 1. Por exemplo, quando
MAX é 2, o coeficiente residual pode ser derivado usando a Equação 32 abaixo. [EQUAÇÃO 32]
[566] Quando o coeficiente residual é codificado no exemplo mostrado na Figura 45, um sinalizador de paridade pode ser codificado para cada coeficiente diferente de zero. Por exemplo, mesmo quando o coeficiente residual é 1, par_level_flag e rem_abs_gt1_flag devem ser codificados. O método de codificação acima pode fazer com que o número de bits necessários para codificar coeficientes residuais com um valor absoluto de 1 seja aumentado. A fim de resolver o problema, as informações que indicam se o coeficiente residual é maior que 1 podem ser codificadas primeiro e um sinalizador de paridade pode ser codificado quando o coeficiente residual é 1.
[567] A Figura 46 é um fluxograma de um processo de codificação do valor absoluto de um coeficiente residual.
[568] Para um coeficiente residual diferente de zero, as informações gr1_flag, que indicam se o valor absoluto do coeficiente residual é maior que 1, podem ser codificadas (S4601). O gr1_flag pode ser definido como 0 quando o coeficiente residual é 1 e gr1_flag pode ser definido como 1 quando o coeficiente residual é maior que 1.
[569] Quando o valor absoluto do coeficiente residual é maior que 1, um sinalizador de paridade indicando se o coeficiente residual ou o coeficiente remanescente é um número par ou ímpar pode ser codificado (S4602 e S4603). Aqui, o coeficiente remanescente pode ser definido como o coeficiente residual menos 2. Como exemplo, par_level_flag pode ser derivado usando a Equação 33 abaixo. [EQUAÇÃO 33]
[570] Um coeficiente remanescente ajustado pode ser derivado dividindo o coeficiente residual ou o coeficiente remanescente por 2 ou realizando bit-shifting do coeficiente residual ou do coeficiente remanescente para a direita por 1, e então as informações indicando se o coeficiente remanescente ajustado é maior que 1 podem ser codificadas (S4604). Como exemplo, para um coeficiente residual do qual gr1_flag é 1, rem_abs_gt1_flag, que indica se o coeficiente remanescente ajustado é maior do que 1, pode ser codificado.
[571] Quando o coeficiente remanescente é 0 ou 1, o valor de rem_abs_gt1_flag pode ser definido como 0. Ou seja, quando o coeficiente residual é 2 ou 3, o valor de rem_abs_gt1_flag pode ser definido como 0. Neste caso, par_level_flag pode ser definido como 0 quando o coeficiente remanescente ajustado é 0, e par_level_flag pode ser definido como 1 quando o coeficiente remanescente é 1.
[572] Quando o coeficiente remanescente ajustado é 2 ou mais (S4605), o valor de rem_abs_gt1_flag pode ser definido como 1 e as informações que indicam se o valor do coeficiente remanescente ajustado é maior que 2 podem ser codificadas (S4606). Como exemplo, para um coeficiente residual do qual rem_abs_gt1_flag é 1, rem_abs_gt2_flag, que indica se o coeficiente remanescente ajustado é maior do que 2, pode ser codificado.
[573] Quando o coeficiente remanescente é 2 ou 3, o valor de rem_abs_gt2_flag pode ser definido como 1. Ou seja, quando o coeficiente residual é 4 ou 5, o valor de rem_abs_gt2_flag pode ser definido como 0. Nesse caso, par_level_flag pode ser definido como 0 quando o coeficiente remanescente é 2, e par_level_flag pode ser definido como 1 quando o coeficiente remanescente é 3.
[574] Quando o coeficiente de remanescente ajustado é maior que 2 (S4607), as informações do valor residual indicando o coeficiente de remanescente ajustado menos 2 podem ser codificadas (S4608). Ou seja, um valor obtido subtraindo-se 6 do valor absoluto do coeficiente residual e depois dividindo-se o resultado da subtração por 2 pode ser codificado como as informações do valor residual.
[575] O coeficiente residual pode ser codificado adicionalmente usando um sinalizador que indica se o coeficiente remanescente ajustado é maior que 3 (por exemplo, rem_abs_gt3_flag) ou um sinalizador que indica se o coeficiente remanescente ajustado é maior do que 4 (por exemplo, rem_abs_gt4_flag). Nesse caso, o coeficiente remanescente ajustado menos o valor máximo pode ser definido como o valor residual. O valor máximo representa o N máximo aplicado a rem_abs_gtN_flag.
[576] Em vez dos sinalizadores para comparar o valor do coeficiente remanescente ajustado com um valor específico, podem ser usados sinalizadores para comparar o valor absoluto do coeficiente ajustado ou o coeficiente residual com um valor específico. Por exemplo, gr3_flag, que indica se o valor absoluto do coeficiente residual é maior que 3, pode ser usado em vez de rem_abs_gt1_flag, e gr5_flag, que indica se o valor absoluto do coeficiente residual é maior que 5, pode ser usado em vez de rem_abs_gt2_flag.
[577] A Tabela 15 simplesmente representa um processo de codificação de coeficientes residuais usando elementos de sintaxe. [TABELA 15] Sig_coeff_flag = (abs(TCoeff) != 0) ? 1 : 0 Encode Sig_coeff_flag if (Sig_coeff_flag) { Gr1_flag = abs(TCoeff) > 1 ? 1 : 0 Encode Gr1_flag if (Gr1_flag) { RemLevel = abs(Tcoeff) - 2 Parity_level_flag = RemLevel %2 Encode Parity_level_flag ReRemLevel = RemLevel >> 1 Rem_abs_gt1_flag = (ReRemLevel > 1) ? 1 : 0 Encode Rem_abs_gt1_flag if (Rem_abs_gt1_flag == 1) { Rem_abs_gt2_flag = absLevel > 5 ? 1 : 0 if (Rem_abs_gt1_flag ==1) { Encode Rem_abs_gt2_flag Rem = ( absLevel - 6 ) >> 1 Encode Rem } } } Sign_Coeff = TCoeff > 0 ? 0 : 1 Encode Sign_Coeff }
[578] Um decodificador também pode decodificar coeficientes residuais na ordem mostrada na Figura 46. Em detalhes, o decodificador pode determinar a localização do último coeficiente diferente de zero e pode decodificar sig_coeff_flag para cada coeficiente residual que é varrido antes do último coeficiente diferente de zero.
[579] Quando sig_coeff_flag for true, o decodificador pode decodificar gr1_flag do coeficiente residual correspondente. O decodificador pode determinar que o valor absoluto do coeficiente residual correspondente é 1 quando gr1_flag é 0 e pode decodificar par_level_flag do coeficiente residual correspondente quando gr1_flag é 1. Subsequentemente, o decodificador pode decodificar rem_abs_gt1_flag do coeficiente residual correspondente. Nesse caso, rem_abs_gtN_flag pode ser adicionalmente decodificado dependendo do valor de rem_abs_gt(N-1)_flag. Por exemplo, quando o valor de rem_abs_gt(N-1)_flag é 1, o decodificador pode decodificar rem_abs_gtN_flag. Por exemplo, quando o valor de rem_abs_gt1_flag para o coeficiente residual é 1, o decodificador pode ainda analisar rem_abs_gt2_flag para o coeficiente residual. Quando o valor de rem_abs_gt(MAX)_flag é 1, o decodificador pode decodificar as informações do valor residual.
[580] Quando o valor de rem_abs_gtN_flag do coeficiente residual é 0, o valor do coeficiente residual pode ser determinado como 2N ou 2N+1, dependendo do valor de par_level_flag. Em detalhes, o coeficiente residual pode ser definido como 2N quando par_level_flag for 0 e o coeficiente residual pode ser definido como 2N+1 quando par_level_flag for
1.
[581] Por exemplo, quando rem_abs_gt1_flag é 0, o valor absoluto do coeficiente residual pode ser definido como 2 ou 3, dependendo do valor de par_level_flag. Em detalhes, o valor absoluto do coeficiente residual é 2 quando o valor de par_level_flag é 0, e o valor absoluto do coeficiente residual é 3 quando o valor de par_level_flag é 1.
[582] Por exemplo, quando rem_abs_gt2_flag é 0, o valor absoluto do coeficiente residual pode ser definido como 4 ou 5, dependendo do valor de par_level_flag. Em detalhes, o valor absoluto do coeficiente residual é 4 quando o valor de par_level_flag é 0, e o valor absoluto do coeficiente residual é 5 quando o valor de par_level_flag é 1.
[583] Quando as informações do valor residual são decodificadas, o coeficiente residual pode ser definido como 2(MAX+R) ou 2(MAX+R)+1 dependendo do valor de par_level_flag. Aqui, R representa um valor das informações do valor residual. Como um exemplo, o coeficiente residual pode ser definido como 2(MAX+R) quando par_level_flag é 0, e o coeficiente residual pode ser definido como 2(MAX+R)+1 quando par_level_flag é 1.
[584] Como outro exemplo, um sinalizador de paridade pode ser codificado apenas quando o valor do coeficiente residual é maior que 2. Por exemplo, após informações indicando se o valor do coeficiente residual é maior que 1 e informações indicando se o valor do coeficiente residual é maior que 2 forem codificadas, um sinalizador de paridade para o coeficiente residual correspondente pode ser codificado quando for determinado que o valor do coeficiente residual é maior que 2.
[585] A Figura 47 é um fluxograma de um processo de codificação do valor absoluto de um coeficiente residual.
[586] Para um coeficiente residual diferente de zero, as informações gr1_flag, que indicam se o valor absoluto do coeficiente residual é maior que 1, podem ser codificadas (S4701). O gr1_flag pode ser definido como 0 quando o coeficiente residual é 1 e gr1_flag pode ser definido como 1 quando o coeficiente residual é maior que 1.
[587] Para um coeficiente residual cujo valor absoluto é maior que 1, as informações gr2_flag, que indicam se o valor absoluto do coeficiente residual é maior que 2,
podem ser codificadas (S4702 e S4703). gr2_flag pode ser definido como 0 quando o coeficiente residual é 2, e gr2_flag pode ser definido como 1 quando o coeficiente residual é maior que 2.
[588] Quando o valor absoluto é maior que 2, um sinalizador de paridade indicando se o coeficiente residual ou o coeficiente remanescente é um número par ou ímpar pode ser codificado (S4704 e S4705). Aqui, o coeficiente remanescente pode ser definido como o coeficiente residual menos 3. Como exemplo, par_level_flag pode ser derivado usando a Equação 34 abaixo. [EQUAÇÃO 34]
[589] Um coeficiente remanescente ajustado pode ser derivado dividindo o coeficiente residual ou o coeficiente remanescente por 2 ou realizando bit-shifting do coeficiente residual ou do coeficiente remanescente para a direita por 1, e então as informações indicando se o coeficiente remanescente ajustado é maior que 1 podem ser codificadas. Como exemplo, para um coeficiente residual do qual gr1_flag é 1, rem_abs_gt1_flag, que indica se o coeficiente remanescente ajustado é maior do que 1, pode ser codificado (S4706).
[590] Quando o coeficiente remanescente é 0 ou 1, o valor de rem_abs_gt1_flag pode ser definido como 0. Ou seja, quando o coeficiente residual é 3 ou 4, o valor de rem_abs_gt1_flag pode ser definido como 0. Neste caso, par_level_flag pode ser definido como 0 quando o coeficiente remanescente ajustado é 0, e par_level_flag pode ser definido como 1 quando o coeficiente remanescente é 1.
[591] Quando o coeficiente remanescente ajustado é 2 ou mais (S4707), o valor de rem_abs_gt1_flag pode ser definido como 1 e as informações que indicam se o valor do coeficiente remanescente ajustado é maior que 2 podem ser codificadas (S4708). Como exemplo, para um coeficiente residual do qual rem_abs_gt1_flag é 1, rem_abs_gt2_flag, que indica se o coeficiente remanescente ajustado é maior do que 2, pode ser codificado.
[592] Quando o coeficiente remanescente é 2 ou 3, o valor de rem_abs_gt2_flag pode ser definido como 1. Ou seja, quando o coeficiente residual é 5 ou 6, o valor de rem_abs_gt2_flag pode ser definido como 0. Nesse caso, par_level_flag pode ser definido como 0 quando o coeficiente remanescente é 2, e par_level_flag pode ser definido como 1 quando o coeficiente remanescente é 3.
[593] Quando o coeficiente de remanescente ajustado é maior que 2, um valor residual igual ao coeficiente de remanescente ajustado menos 2 pode ser codificado (S4710). Ou seja, um valor obtido subtraindo 7 do valor absoluto do coeficiente residual e então dividindo o resultado da subtração por 2 pode ser codificado como o valor residual.
[594] O coeficiente residual pode ser codificado adicionalmente usando um sinalizador que indica se o coeficiente remanescente ajustado é maior que 3 (por exemplo, rem_abs_gt3_flag) ou um sinalizador que indica se o coeficiente remanescente ajustado é maior do que 4 (por exemplo, rem_abs_gt4_flag). Nesse caso, o coeficiente remanescente ajustado menos o valor máximo pode ser definido como o valor residual. O valor máximo representa o N máximo aplicado a rem_abs_gtN_flag.
[595] Em vez dos sinalizadores para comparar o valor do coeficiente remanescente ajustado com um valor específico, podem ser usados sinalizadores para comparar o valor absoluto do coeficiente ajustado ou o coeficiente residual com um valor específico. Por exemplo, gr4_flag, que indica se o valor absoluto do coeficiente residual é maior que 4, pode ser usado em vez de rem_abs_gt1_flag, e gr6_flag, que indica se o valor absoluto do coeficiente residual é maior que 6, pode ser usado em vez de rem_abs_gt2_flag.
[596] Um decodificador também pode decodificar coeficientes residuais na mesma ordem como mostrado na Figura
47. Em detalhes, o decodificador pode determinar a localização do último coeficiente diferente de zero e pode decodificar sig_coeff_flag para cada coeficiente residual que é varrido antes do último coeficiente diferente de zero.
[597] Quando sig_coeff_flag for true, o decodificador pode decodificar gr1_flag do coeficiente residual correspondente. O decodificador pode determinar que o valor absoluto do coeficiente residual correspondente é 1 quando gr1_flag é 0 e pode decodificar gr2_flag quando gr1_flag é 1. O decodificador pode determinar que o valor absoluto do coeficiente residual correspondente é 2 quando gr2_flag é 0 e pode decodificar par_level_flag do coeficiente residual correspondente quando gr2_flag é 1. Subsequentemente, o decodificador pode decodificar rem_abs_gt1_flag do coeficiente residual correspondente. Nesse caso, rem_abs_gtN_flag pode ser adicionalmente decodificado dependendo do valor de rem_abs_gt(N-1)_flag. Por exemplo, quando o valor de rem_abs_gt(N-1)_flag é 1, o decodificador pode decodificar rem_abs_gtN_flag. Por exemplo, quando o valor de rem_abs_gt1_flag para o coeficiente residual é 1, o decodificador pode ainda analisar rem_abs_gt2_flag para o coeficiente residual. Quando o valor de rem_abs_gt(MAX)_flag é 1, o decodificador pode decodificar as informações do valor residual.
[598] Quando o valor de rem_abs_gtN_flag do coeficiente residual é 0, o valor do coeficiente residual pode ser determinado como 2N+1 ou 2(N+1) dependendo do valor de par_level_flag. Em detalhes, o coeficiente residual pode ser definido como 2N+1 quando par_level_flag for 0 e o coeficiente residual pode ser definido como 2(N+1) quando par_level_flag for 1.
[599] Por exemplo, quando rem_abs_gt1_flag é 0, o valor absoluto do coeficiente residual pode ser definido como 3 ou 4, dependendo do valor de par_level_flag. Em detalhes, o valor absoluto do coeficiente residual é 3 quando o valor de par_level_flag é 0, e o valor absoluto do coeficiente residual é 4 quando o valor de par_level_flag é 1.
[600] Por exemplo, quando rem_abs_gt2_flag é 0, o valor absoluto do coeficiente residual pode ser definido como 5 ou 6, dependendo do valor de par_level_flag. Em detalhes, o valor absoluto do coeficiente residual é 5 quando o valor de par_level_flag é 0, e o valor absoluto do coeficiente residual é 6 quando o valor de par_level_flag é 1.
[601] Quando as informações do valor residual são decodificadas, o coeficiente residual pode ser definido como 2(MAX+R) ou 2(MAX+R)+1 dependendo do valor de par_level_flag. Aqui, R representa um valor das informações do valor residual. Como um exemplo, o coeficiente residual pode ser definido como 2(MAX+R) quando par_level_flag é 0, e o coeficiente residual pode ser definido como 2(MAX+R)+1 quando par_level_flag é 1.
[602] Pelo menos um do número ou tipos de sinalizadores de comparação para comparar os coeficientes remanescentes ajustados a um valor específico com base em pelo menos um do tamanho ou forma do bloco atual, a presença de um salto de transformação, um núcleo de transformação, o número de coeficientes diferentes de zero ou a localização do último coeficiente diferente de zero podem ser determinados. Por exemplo, quando um coeficiente de transformação é codificado, apenas rem_abs_gt1_flag pode ser usado. Por outro lado, quando um coeficiente de salto de transformação é codificado, rem_abs_gt1_flag e rem_abs_gt2_flag podem ser usados.
[603] Alternativamente, em uma unidade de subtransformação de 4×4, o número de sinalizadores rem_abs_gt1_fag pode ser definido para até 8 e o número de sinalizadores rem_abs_gt2_flag pode ser definido para até 1. Alternativamente, quando o número de sinalizadores de coeficiente diferente de zero é (16-N), o número de sinalizadores rem_abs_gt1_flag pode ser definido para até 8+(N/2), e o número de sinalizadores rem_abs_gt2_flag pode ser definido para até 1+(N-(N/2)).
[604] Quando o bloco reconstruído do bloco atual é adquirido, a perda de informações que ocorre durante a quantização e codificação pode ser reduzida por meio de filtragem em laço. Um filtro em laço pode incluir pelo menos um de um filtro de desbloqueio, um filtro de deslocamento adaptativo de amostra (SAO) ou um filtro de laço adaptativo (ALF). Um bloco reconstruído antes de um filtro em laço ser aplicado será referido como um primeiro bloco reconstruído, e um bloco reconstruído após um filtro em laço ser aplicado será referido como um segundo bloco reconstruído.
[605] O segundo bloco reconstruído pode ser adquirido aplicando pelo menos um dentre o filtro de desbloqueio, SAO ou ALF para o primeiro bloco reconstruído. Neste caso, o SAO ou ALF pode ser aplicado após a aplicação do filtro de desbloqueio.
[606] O filtro de desbloqueio é para aliviar a deterioração da qualidade do vídeo (artefato de bloqueio) que ocorre na borda de um bloco quando uma quantização é realizada em unidades de blocos. O filtro de desbloqueio é para aliviar a deterioração da qualidade do vídeo (artefato de bloqueio) que ocorre na borda de um bloco quando uma quantização é realizada em unidades de blocos.
[607] A Figura 48 é um fluxograma que mostra um processo de determinação da força de bloqueio.
[608] No exemplo mostrado na Figura 48, P representa o primeiro bloco reconstruído e Q representa o bloco reconstruído vizinho. Aqui, o bloco reconstruído vizinho pode ser um bloco vizinho à esquerda ou ao topo do bloco atual.
[609] No exemplo mostrado na Figura 48, é mostrado que a força de bloqueio é determinada em consideração aos modos de predição de P e Q, se coeficientes de transformação diferente de zero estão incluídos, se a interpredição é realizada usando a mesma imagem de referência, ou se um valor de diferença entre vetores de movimento é maior ou igual a um valor limiar.
[610] A aplicação do filtro de desbloqueio pode ser determinada com base na resistência de bloqueio. Por exemplo, a filtragem não pode ser realizada quando a força de bloqueio é 0.
[611] O SAO é para aliviar um artefato de toque que ocorre quando uma quantização é realizada no domínio da frequência. O SAO pode ser realizado adicionando ou subtraindo um deslocamento determinado em consideração a um padrão do primeiro bloco reconstruído. Um método para determinar o deslocamento inclui um deslocamento de borda (EO) ou um deslocamento de banda (BO). O EO indica um método para determinar um deslocamento da amostra atual de acordo com um padrão de pixels próximos. O BO indica um método de aplicação de um deslocamento comum a um conjunto de pixels com valores de brilho semelhantes em uma área. Em detalhes, o brilho do pixel é dividido em 32 seções iguais e pixels com valores de brilho semelhantes podem ser definidos como um conjunto. Como um exemplo, quatro bandas adjacentes entre 32 bandas podem ser definidas como um grupo, e o mesmo valor de deslocamento pode ser aplicado a amostras pertencentes às quatro bandas.
[612] O ALF é um método para gerar o segundo bloco reconstruído aplicando-se um filtro de um tamanho ou forma predefinidos ao primeiro bloco reconstruído ou a um bloco reconstruído ao qual o filtro de desbloqueio é aplicado. A Equação 35 abaixo representa um exemplo de aplicação do ALF. [EQUAÇÃO 35] , = , ∙ + , +
[613] Um dos candidatos de filtro predefinidos pode ser selecionado em unidades de imagens, unidades de árvore de codificação, blocos de codificação, blocos de predição ou blocos de transformação. Os candidatos a filtro podem ser diferentes em tamanho ou forma.
[614] A Figura 49 mostra candidatos de filtro predefinidos.
[615] No exemplo mostrado na Figura 49, pelo menos um de um formato de diamante 5×5, um formato de diamante 7×7 ou um formato de diamante 9×9 pode ser selecionado.
[616] Apenas o formato de diamante 5×5 pode ser usado para um componente de croma.
[617] A aplicação das modalidades que foram descritas com foco em um processo de decodificação ou um processo de codificação para o processo de decodificação ou o processo de codificação se enquadra dentro do escopo da presente invenção. A mudança de uma ordem predeterminada, na qual as modalidades foram descritas, para uma ordem diferente da descrita acima também está dentro do escopo da presente invenção.
[618] Embora as modalidades acima tenham sido descritas com base em uma série de etapas ou fluxos, as etapas ou fluxos não limitam a ordem da série temporal da invenção e podem ser realizados simultaneamente ou em diferentes ordens, conforme necessário. Além disso, cada um dos componentes (por exemplo, unidades, módulos, etc.) que constituem o diagrama de blocos nas modalidades descritas acima pode ser implementado por um dispositivo de hardware ou software, e uma pluralidade de componentes pode ser combinada e implementada por um único dispositivo de hardware ou software. As modalidades acima podem ser implementadas na forma de instruções de programa que podem ser executadas por meio de vários elementos de computador e gravadas em uma mídia de gravação legível por computador. O meio de gravação legível por computador pode incluir uma instrução de programa, um arquivo de dados, uma estrutura de dados e semelhantes, isoladamente ou em combinação. Exemplos de mídia de gravação legível por computador incluem mídia magnética, como um disco rígido, um disquete, e uma fita magnética, mídia ótica como uma memória somente leitura de disco compacto (CD-ROM) e um disco versátil digital (DVD), mídia magneto-ótica como um disco flexível e dispositivos de hardware como um ROM, uma memória de acesso (RAM), e uma memória flash, que são especialmente projetadas para armazenar e executar instruções de programa. O dispositivo de hardware pode ser configurado para operar como um ou mais módulos de software, a fim de realizar as operações da presente invenção e vice-versa. [APLICABILIDADE INDUSTRIAL]
[619] A presente invenção pode ser aplicada a um dispositivo eletrônico para codificação ou decodificação de vídeo.

Claims (10)

REIVINDICAÇÕES
1. MÉTODO DE DECODIFICAÇÃO DE VÍDEO, caracterizado por compreender as etapas de: analisar um sinalizador diferente de zero indicando se um coeficiente residual é diferente de zero de um fluxo de bits; analisar informações de valor absoluto para determinar um valor absoluto do coeficiente residual do fluxo de bits quando o sinalizador diferente de zero indica que o coeficiente residual não é diferente de zero; e determinar o valor absoluto do coeficiente residual com base nas informações de valor absoluto, em que as informações de valor absoluto compreendem um sinalizador de comparação de coeficiente residual que indica se o coeficiente residual é maior do que um primeiro valor, e um sinalizador de paridade é posteriormente analisado a partir do fluxo de bits apenas quando o coeficiente residual é maior que o primeiro valor; e o sinalizador de paridade indicar se o valor do coeficiente residual é um número par ou um número ímpar.
2. MÉTODO, de acordo com a reivindicação 1, caracterizado por um primeiro sinalizador de comparação de coeficiente remanescente ajustado que indica se um coeficiente remanescente ajustado derivado por deslocamento de bits do coeficiente residual para a direita em 1 é maior do que um segundo valor ser analisado adicionalmente quando o coeficiente residual é maior que o primeiro valor.
3. MÉTODO, de acordo com a reivindicação 2, caracterizado pelo coeficiente residual ser determinado como
2N ou 2N+1 (N é o segundo valor) dependendo do sinalizador de paridade quando o coeficiente remanescente ajustado é menor ou igual ao segundo valor.
4. MÉTODO, de acordo com a reivindicação 2, caracterizado por um segundo sinalizador de comparação de coeficiente remanescente ajustado que indica se o coeficiente remanescente ajustado é maior do que um terceiro valor ser ainda analisado quando o coeficiente remanescente ajustado é maior do que o segundo valor.
5. MÉTODO, de acordo com a reivindicação 2, caracterizado por informações de valor residual serem analisadas posteriormente quando o coeficiente remanescente ajustado é maior do que o segundo valor, e as informações do valor residual incluírem um valor obtido subtraindo-se o segundo valor do coeficiente remanescente ajustado.
6. MÉTODO DE CODIFICAÇÃO DE VÍDEO, caracterizado por compreender as etapas de: codificar um sinalizador diferente de zero indicando se um coeficiente residual é diferente de zero; e codificar informações de valor absoluto para determinar um valor absoluto do coeficiente residual quando o coeficiente residual não é diferente de zero, em que as informações de valor absoluto incluem um sinalizador de comparação de coeficiente residual que indica se o coeficiente residual é maior do que um primeiro valor, e um sinalizador de paridade para o coeficiente residual é ainda codificado apenas quando o coeficiente residual é maior do que o primeiro valor; e o sinalizador de paridade indicar se o valor do coeficiente residual é um número par ou um número ímpar.
7. MÉTODO, de acordo com a reivindicação 6, caracterizado por um primeiro sinalizador de comparação de coeficiente remanescente ajustado que indica se um coeficiente remanescente ajustado derivado por deslocamento de bits do coeficiente residual para a direita em 1 é maior do que um segundo valor ser codificado adicionalmente quando o coeficiente residual é maior que o primeiro valor.
8. MÉTODO, de acordo com a reivindicação 7, caracterizado pelo coeficiente residual ser determinado como 2N ou 2N+1 dependendo do sinalizador de paridade quando o coeficiente remanescente ajustado é menor ou igual ao segundo valor.
9. MÉTODO, de acordo com a reivindicação 7, caracterizado por um segundo sinalizador de comparação de coeficiente remanescente ajustado que indica se o coeficiente remanescente ajustado é maior do que um terceiro valor ser ainda codificado quando o coeficiente remanescente ajustado é maior do que o segundo valor.
10. MÉTODO, de acordo com a reivindicação 7, caracterizado por informações de valor residual serem codificadas posteriormente quando o coeficiente remanescente ajustado é maior do que o segundo valor, e as informações do valor residual incluírem um valor obtido subtraindo-se o segundo valor do coeficiente remanescente ajustado.
BR112021005161-9A 2018-09-21 2019-09-20 método de decodificação de vídeo, e método de codificação de vídeo BR112021005161A2 (pt)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
KR10-2018-0114347 2018-09-21
KR10-2018-0114350 2018-09-21
KR20180114350 2018-09-21
KR20180114345 2018-09-21
KR10-2018-0114345 2018-09-21
KR10-2018-0114346 2018-09-21
KR20180114347 2018-09-21
KR20180114346 2018-09-21
KR20190022754 2019-02-26
KR10-2019-0022754 2019-02-26
PCT/KR2019/012291 WO2020060328A1 (ko) 2018-09-21 2019-09-20 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
BR112021005161A2 true BR112021005161A2 (pt) 2021-06-15

Family

ID=69887731

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021005161-9A BR112021005161A2 (pt) 2018-09-21 2019-09-20 método de decodificação de vídeo, e método de codificação de vídeo

Country Status (15)

Country Link
US (2) US11290737B2 (pt)
EP (2) EP3843402B1 (pt)
JP (2) JP7451504B2 (pt)
KR (1) KR20200034645A (pt)
CN (3) CN113225561B (pt)
AU (2) AU2019343079B2 (pt)
BR (1) BR112021005161A2 (pt)
CA (1) CA3113584C (pt)
IL (2) IL281629B2 (pt)
MX (1) MX2021003321A (pt)
PH (1) PH12021550644A1 (pt)
PL (1) PL3843402T3 (pt)
SG (1) SG11202102908YA (pt)
WO (1) WO2020060328A1 (pt)
ZA (1) ZA202102080B (pt)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117201785A (zh) * 2018-09-11 2023-12-08 Lg电子株式会社 图像解码设备、图像编码设备和比特流发送设备
PL3843402T3 (pl) * 2018-09-21 2024-06-24 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Sposób kodowania/dekodowania sygnału obrazu i urządzenie do nich
KR102639970B1 (ko) * 2019-03-11 2024-02-22 닛폰 호소 교카이 화상 부호화 장치, 화상 복호 장치 및 프로그램
WO2020197154A1 (ko) * 2019-03-22 2020-10-01 엘지전자 주식회사 영상 코딩 시스템에서 인트라 예측 기반 영상 디코딩 방법 및 그 장치
CN113678453B (zh) 2019-04-12 2024-05-14 北京字节跳动网络技术有限公司 基于矩阵的帧内预测的上下文确定
WO2020221372A1 (en) 2019-05-01 2020-11-05 Beijing Bytedance Network Technology Co., Ltd. Context coding for matrix-based intra prediction
WO2020233663A1 (en) 2019-05-22 2020-11-26 Beijing Bytedance Network Technology Co., Ltd. Matrix-based intra prediction using upsampling
JP2022535726A (ja) 2019-05-31 2022-08-10 北京字節跳動網絡技術有限公司 行列ベースイントラ予測における制約されたアップサンプリングプロセス
KR20220016833A (ko) 2019-06-05 2022-02-10 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 행렬 기반의 인트라 예측을 위한 컨텍스트 결정
JP7404526B2 (ja) 2019-10-28 2023-12-25 北京字節跳動網絡技術有限公司 カラーコンポーネントに基づくシンタックスシグナリング及び構文解析
WO2021193775A1 (ja) * 2020-03-27 2021-09-30 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
CN113852816A (zh) * 2021-09-28 2021-12-28 浙江大华技术股份有限公司 视频帧处理方法、装置、计算机设备和可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2654301A4 (en) * 2010-12-14 2016-02-17 M&K Holdings Inc METHOD FOR INTER-PREDICTIVE DECODING OF ENCODED FILMS
ES2776925T3 (es) 2012-01-20 2020-08-03 Velos Media Int Ltd Ocultación de múltiples bits de signo dentro de una unidad de transformación
US9313498B2 (en) * 2012-04-16 2016-04-12 Qualcomm Incorporated Sign hiding techniques for quantized transform coefficients in video coding
US9294779B2 (en) 2012-06-15 2016-03-22 Blackberry Limited Multi-bit information hiding using overlapping subsets
US20140003530A1 (en) 2012-06-28 2014-01-02 Qualcomm Incorporated Sign hiding techniques for quantized transform coefficients in video coding
CN108293139A (zh) * 2015-09-08 2018-07-17 三星电子株式会社 用于熵编码和熵解码的设备和方法
CN117201808A (zh) * 2016-08-01 2023-12-08 韩国电子通信研究院 图像编码/解码方法和装置以及存储比特流的记录介质
KR20180089290A (ko) * 2017-01-31 2018-08-08 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
KR102662646B1 (ko) 2018-07-02 2024-05-03 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 종속 스칼라 양자화에 적합한 변환 계수의 엔트로피 코딩
US11019346B2 (en) * 2018-07-02 2021-05-25 Qualcomm Incorporated Coefficient coding with grouped bypass remaining levels for dependent quantization
CN112567754B (zh) * 2018-08-22 2022-09-20 寰发股份有限公司 转换系数编码或解码的方法与装置
US11483575B2 (en) * 2018-08-24 2022-10-25 Hfi Innovation Inc. Coding transform coefficients with throughput constraints
US11336918B2 (en) * 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
BR112021005152A2 (pt) 2018-09-20 2021-06-15 Lg Electronics Inc. método de codificação de nível de fator de conversão e dispositivo para o mesmo
PL3843402T3 (pl) * 2018-09-21 2024-06-24 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Sposób kodowania/dekodowania sygnału obrazu i urządzenie do nich

Also Published As

Publication number Publication date
PL3843402T3 (pl) 2024-06-24
EP3843402A1 (en) 2021-06-30
US20220166999A1 (en) 2022-05-26
JP7451504B2 (ja) 2024-03-18
CA3113584C (en) 2023-09-19
IL281629B2 (en) 2024-01-01
EP3843402B1 (en) 2024-03-27
IL281629B1 (en) 2023-09-01
US20210211704A1 (en) 2021-07-08
PH12021550644A1 (en) 2021-10-11
IL281629A (en) 2021-05-31
IL304931A (en) 2023-10-01
US11290737B2 (en) 2022-03-29
ZA202102080B (en) 2022-08-31
EP3843402A4 (en) 2021-10-27
CN116320397A (zh) 2023-06-23
AU2023203259A1 (en) 2023-06-08
CN113225561B (zh) 2023-04-21
CN112956200A (zh) 2021-06-11
CN113225561A (zh) 2021-08-06
MX2021003321A (es) 2021-05-14
EP4340356A3 (en) 2024-05-29
KR20200034645A (ko) 2020-03-31
JP2024063204A (ja) 2024-05-10
EP4340356A2 (en) 2024-03-20
JP2022501896A (ja) 2022-01-06
AU2019343079B2 (en) 2023-04-27
CA3113584A1 (en) 2020-03-26
WO2020060328A1 (ko) 2020-03-26
AU2019343079A1 (en) 2021-04-29
SG11202102908YA (en) 2021-04-29

Similar Documents

Publication Publication Date Title
BR112021005161A2 (pt) método de decodificação de vídeo, e método de codificação de vídeo
CN111512628B (zh) 视频信号处理方法和设备
KR102402045B1 (ko) 비디오 신호 처리 방법 및 장치
ES2972076T3 (es) Procedimiento de codificación/decodificación de señales de imagen y dispositivo para lo mismo
BR112021008731A2 (pt) método de decodificação de vídeo e método de codificação de vídeo
KR20200041810A (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
BR112021008298A2 (pt) método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e codificador de vídeo
BR112021008091A2 (pt) método de codificação e decodificação de sinal de vídeo e aparelho de decodificação de vídeo
JP2022537767A (ja) 映像信号の符号化/復号化方法及びそのための装置
KR102619997B1 (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
US20210227219A1 (en) Method for encoding/decoding image signal, and device for same
IL281625B2 (en) A method for encoding/decoding image signals and a device therefor
BR112021008625A2 (pt) método de decodificação e codificação de vídeo e aparelho de decodificação e codificação de vídeo
BR112021004922A2 (pt) método de decodificação de vídeo, decodificador de vídeo, codificador de vídeo, e mídia legível por computador não transitório
JP2022548220A (ja) 映像信号符号化/復号化方法及びそのための装置
KR20200104252A (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
CN116962720A (zh) 通过使用交叉分量线性模型来处理视频信号的方法和设备
US11659163B2 (en) Video encoding/decoding method and device
JP2023509347A (ja) 画像信号の符号化/復号方法およびそのための装置
RU2818972C2 (ru) Способ и устройство для кодирования/декодирования сигналов изображений
RU2801585C2 (ru) Способ и устройство для кодирования/декодирования сигналов изображений
RU2811985C2 (ru) Способ и устройство для кодирования/декодирования сигналов изображений
RU2811980C2 (ru) Способ и устройство для кодирования/декодирования сигналов изображений
KR20230002095A (ko) 서브 블록 단위의 화면 내 예측에 기반한 비디오 신호 부호화/복호화 방법, 그리고 비트스트림을 저장한 기록 매체