BR122022013315A2 - Codificador, decodificador e meio legível por computador não transitório - Google Patents

Codificador, decodificador e meio legível por computador não transitório Download PDF

Info

Publication number
BR122022013315A2
BR122022013315A2 BR122022013315-0A BR122022013315A BR122022013315A2 BR 122022013315 A2 BR122022013315 A2 BR 122022013315A2 BR 122022013315 A BR122022013315 A BR 122022013315A BR 122022013315 A2 BR122022013315 A2 BR 122022013315A2
Authority
BR
Brazil
Prior art keywords
block
image
predictor
mode
current block
Prior art date
Application number
BR122022013315-0A
Other languages
English (en)
Inventor
Takahiro Nishi
Tadamasa Toma
Kiyofumi Abe
Original Assignee
Panasonic Intellectual Property Corporation Of America
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 Panasonic Intellectual Property Corporation Of America filed Critical Panasonic Intellectual Property Corporation Of America
Publication of BR122022013315A2 publication Critical patent/BR122022013315A2/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • 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/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Landscapes

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

Abstract

A presente invenção refere-se a um codificador (100) que inclui circuitos e memória conectados ao mesmo. Em operação, o circuito: alterna entre codificar um primeiro sinalizador, de acordo com o uso de um esquema de codificação multicamada para codificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.

Description

CODIFICADOR, DECODIFICADOR E MEIO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO Dividido do BR112022011635-7 depositado em 01 de fevereiro de 2021. CAMPO DA INVENÇÃO
[0001] A presente invenção refere-se a um codificador, um decodificador, um método de codificação, um método de decodificação e um meio.
ANTECEDENTES DA INVENÇÃO
[0002] Com o avanço na tecnologia de conversão em código de vídeo, de H.261 e MPEG-1 a H.264/AVC (Conversão em Código de Vídeo Avançada), MPEG-LA, H.265/HEVC (Conversão em Código de Vídeo de Alta Eficiência) e H.266/VVC (Codec de Vídeo Versátil), permanece uma necessidade constante de fornecer melhorias e otimizações para a tecnologia de conversão em código de vídeo para processar uma quantidade cada vez maior de dados de vídeo digital em várias aplicações. A presente invenção refere-se a outros desenvolvimentos, melhorias e otimizações na conversão em código de vídeo.
[0003] Observe que a Literatura de Não Patente (NPL) 1 refere-se a um exemplo de um padrão convencional em relação à tecnologia de conversão em código de vídeo descrita acima.
Lista de Citação Literatura de Não Patente
[0004] NPL 1: H.265 (ISO/IEC 23008-2 HEVC)/HEVC (Conversão em Código de Vídeo de Alta Eficiência)
SUMÁRIO DA INVENÇÃO PROBLEMA TÉCNICO
[0005] Em relação ao esquema de codificação conforme descrito acima, propostas de novos esquemas têm sido desejadas a fim de (i) melhorar a eficiência de conversão em código, melhorar a qualidade da imagem, reduzir as quantidades de processamento, reduzir as escalas de circuito ou (ii) selecionar adequadamente um elemento ou uma operação. O elemento é, por exemplo, um filtro, um bloco, um tamanho, um vetor de movimento, uma figuração de referência ou um bloco de referência.
[0006] A presente invenção fornece, por exemplo, uma configuração ou um método que pode contribuir para pelo menos um aumento na eficiência de conversão em código, aumento na qualidade da imagem, redução na quantidade de processamento, redução na escala do circuito, seleção adequada de um elemento ou uma operação, etc. Deve-se notar que a presente invenção pode abranger possíveis configurações ou métodos que podem contribuir para outras vantagens além das vantagens acima.
SOLUÇÃO PARA O PROBLEMA
[0007] Por exemplo, um codificador de acordo com um aspecto da presente invenção inclui circuitos e memória acoplados aos circuitos. Em operação, o circuito: alterna entre codificar um primeiro sinalizador, de acordo com se um esquema de codificação multicamada é usado para codificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas
[0008] Na tecnologia de conversão em código de vídeo, deseja-se a proposição de novos métodos a fim de melhorar a eficiência de conversão em código, melhorar a qualidade da imagem e reduzir as escalas do circuito.
[0009] Cada uma das modalidades, ou cada parte dos elementos constituintes e métodos na presente invenção permite, por exemplo, pelo menos um dos seguintes: melhoria na eficiência de conversão em código, aperfeiçoamento na qualidade de imagem, redução na quantidade de processamento de codificação/decodificação, redução na escala de circuito, melhoria na velocidade de processamento de codificação/decodificação, etc. Alternativamente, cada uma das modalidades, ou cada parte dos elementos e métodos constituintes na presente invenção permite, na codificação e decodificação, a seleção adequada de um elemento ou uma operação. O elemento é, por exemplo, um filtro, um bloco, um tamanho, um vetor de movimento, uma figuração de referência ou um bloco de referência. Deve-se notar que a presente invenção inclui a invenção a respeito de configurações ou métodos que podem fornecer vantagens diferentes das descritas acima. Os exemplos dessas configurações e métodos incluem uma configuração ou um método para melhorar a eficiência de conversão em código enquanto reduz o aumento na quantidade de processamento.
[0010] Os benefícios e vantagens adicionais de acordo com um aspecto da presente invenção se tornarão evidentes a partir do relatório descritivo e dos desenhos. Os benefícios e/ou vantagens podem ser individualmente obtidos pelas várias modalidades e particularidades do relatório descritivo e dos desenhos, nem todos os quais precisam ser fornecidos a fim de obter um ou mais desses benefícios e/ou vantagens
[0011] Deve-se notar que estes aspectos gerais ou específicos podem ser implantados usando um sistema, um circuito integrado, um programa de computador ou uma mídia legível por computador (mídia de gravação), como um CD-ROM, ou qualquer combinação de sistemas, métodos, circuitos integrados, programas de computador e mídias.
Efeitos vantajosos da Invenção
[0012] Uma configuração ou método de acordo com um aspecto da presente invenção permite, por exemplo, pelo menos um dos seguintes: melhoria na eficiência de conversão em código, aperfeiçoamento na qualidade da imagem, redução na quantidade de processamento, redução na escala de circuito, melhoria na velocidade de processamento, seleção adequada de um elemento ou operação, etc. Deve-se notar que a configuração ou método de acordo com um aspecto da presente invenção pode fornecer vantagens além daquelas descritas acima.
Breve Descrição Dos Desenhos
[0013] A Figura 1 é um diagrama esquemático que ilustra um exemplo de uma configuração de um sistema de transmissão de acordo com uma modalidade.
[0014] A Figura 2 é um diagrama que ilustra um exemplo de uma estrutura hierárquica de dados em um fluxo.
[0015] A Figura 3 é um diagrama que ilustra um exemplo de uma configuração de fatia.
[0016] A Figura 4 é um diagrama que ilustra um exemplo de uma configuração de ladrilho.
[0017] A Figura 5 é um diagrama que ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0018] A Figura 6 é um diagrama que ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0019] A Figura 7 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um codificador de acordo com uma modalidade.
[0020] A Figura 8 é um diagrama de blocos que ilustra um exemplo de montagem do codificador
[0021] A Figura 9 é um fluxograma que ilustra um exemplo de um processo geral de codificação realizado pelo codificador.
[0022] A Figura 10 é um diagrama que ilustra um exemplo de divisão de bloco.
[0023] A Figura 11 é um diagrama que ilustra um exemplo de uma configuração funcional de um divisor.
[0024] A Figura 12 é um diagrama que ilustra exemplos de padrões de divisão
[0025] A Figura 13A é um diagrama que ilustra um exemplo de uma árvore de sintaxe de um padrão de divisão
[0026] A Figura 13B é um diagrama que ilustra outro exemplo de uma árvore de sintaxe de um padrão de divisão.
[0027] A Figura 14 é um gráfico que ilustra funções de base de transformada para cada tipo de transformada.
[0028] A Figura 15 é um diagrama que ilustra exemplos de SVT.
[0029] A Figura 16 é um fluxograma que ilustra um exemplo de um processo realizado por um transformador.
[0030] A Figura 17 é um fluxograma que ilustra outro exemplo de um processo realizado pelo transformador.
[0031] A Figura 18 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um quantizador
[0032] A Figura 19 é um fluxograma que ilustra um exemplo de quantização realizada pelo quantizador.
[0033] A Figura 20 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um codificador por entropia.
[0034] A Figura 21 é um diagrama que ilustra um fluxo de CABAC no codificador por entropia.
[0035] A Figura 22 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um filtro de loop.
[0036] A Figura 23A é um diagrama que ilustra um exemplo de um formato de filtro usado em um filtro de loop adaptativo (ALF).
[0037] A Figura 23B é um diagrama que ilustra outro exemplo de um formato de filtro usado em um ALF.
[0038] A Figura 23C é um diagrama que ilustra outro exemplo de um formato de filtro usado em um ALF.
[0039] A Figura 23D é um diagrama que ilustra um exemplo em que amostras Y (primeiro componente) são usadas para um ALF de componente cruzado (CCALF) para Cb e um CCALF para Cr (componentes diferentes do primeiro componente).
[0040] A Figura 23E é um diagrama que ilustra um filtro em formato de diamante.
[0041] A Figura 23F é um diagrama que ilustra um exemplo para um CCALF de croma conjunta (JC-CCALF).
[0042] A Figura 23G é um diagrama que ilustra um exemplo para candidatos de índice de peso de JC-CCALF.
[0043] A Figura 24 é um diagrama de blocos que ilustra um exemplo de uma configuração específica de um filtro de loop que funciona como um DBF.
[0044] A Figura 25 é um diagrama que ilustra um exemplo de um filtro de desblocagem que tem uma característica de filtragem simétrica em relação a um limite de bloco.
[0045] A Figura 26 é um diagrama para ilustrar um limite de bloco no qual um processo de filtro de desblocagem é realizado.
[0046] A Figura 27 é um diagrama que ilustra exemplos de valores de Bs.
[0047] A Figura 28 é um fluxograma que ilustra um exemplo de um processo realizado por um previsor do codificador.
[0048] A Figura 29 é um fluxograma que ilustra outro exemplo de um processo realizado pelo previsor do codificador.
[0049] A Figura 30 é um fluxograma que ilustra outro exemplo de um processo realizado pelo previsor do codificador.
[0050] A Figura 31 é um diagrama que ilustra um exemplo de sessenta e sete modos de intraprevisão usados em intraprevisão.
[0051] A Figura 32 é um fluxograma que ilustra um exemplo de um processo realizado por um intraprevisor.
[0052] A Figura 33 é um diagrama que ilustra exemplos de figurações de referência.
[0053] A Figura 34 é um diagrama que ilustra exemplos de listas de figurações de referência.
[0054] A Figura 35 é um fluxograma que ilustra um fluxo de processamento básico de interprevisão.
[0055] A Figura 36 é um fluxograma que ilustra um exemplo de derivação de MV.
[0056] A Figura 37 é um fluxograma que ilustra outro exemplo de derivação de MV.
[0057] A Figura 38A é um diagrama que ilustra um exemplo de categorização de modos para derivação de MV.
[0058] A Figura 38B é um diagrama que ilustra um exemplo de categorização de modos para derivação de MV.
[0059] A Figura 39 é um fluxograma que ilustra um exemplo de interprevisão pelo modo internormal.
[0060] A Figura 40 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de mesclagem normal.
[0061] A Figura 41 é um diagrama para ilustrar um exemplo de um processo de derivação de MV pelo modo de mesclagem normal.
[0062] A Figura 42 é um diagrama para ilustrar um exemplo de um processo de derivação de MV pelo modo de HMVP.
[0063] A Figura 43 é um fluxograma que ilustra um exemplo de supraconversão de taxa de quadros (FRUC).
[0064] A Figura 44 é um diagrama para ilustrar um exemplo de correspondência de padrão (correspondência bilateral) entre dois blocos localizados ao longo de uma trajetória de movimento.
[0065] A Figura 45 é um diagrama para ilustrar um exemplo de correspondência de padrão (correspondência de modelo) entre um modelo em uma figuração atual e um bloco em uma figuração de referência.
[0066] A Figura 46A é um diagrama para ilustrar um exemplo de derivação de MV em unidades de um sub-bloco no modo afim no qual dois pontos de controle são usados.
[0067] A Figura 46B é um diagrama para ilustrar um exemplo de derivação de MV em unidades de um sub-bloco no modo afim no qual três pontos de controle são usados.
[0068] A Figura 47A é um diagrama conceitual para ilustrar um exemplo de derivação de MV em pontos de controle em um modo afim.
[0069] A Figura 47B é um diagrama conceitual para ilustrar um exemplo de derivação de MV em pontos de controle em um modo afim.
[0070] A Figura 47C é um diagrama conceitual para ilustrar um exemplo de derivação de MV em pontos de controle em um modo afim.
[0071] A Figura 48A é um diagrama para ilustrar um modo afim no qual dois pontos de controle são usados.
[0072] A Figura 48B é um diagrama para ilustrar um modo afim no qual três pontos de controle são usados.
[0073] A Figura 49A é um diagrama conceitual para ilustrar um exemplo de um método para derivação de MV em pontos de controle quando o número de pontos de controle para um bloco codificado e o número de pontos de controle para um bloco atual forem diferentes entre si.
[0074] A Figura 49B é um diagrama conceitual para ilustrar outro exemplo de um método para derivação de MV em pontos de controle quando o número de pontos de controle para um bloco codificado e o número de pontos de controle para um bloco atual forem diferentes entre si.
[0075] A Figura 50 é um fluxograma que ilustra um exemplo de um processo no modo de mesclagem afim.
[0076] A Figura 51 é um fluxograma que ilustra um exemplo de um processo em modo inter afim.
[0077] A Figura 52A é um diagrama para ilustrar a geração de duas imagens de previsão triangulares.
[0078] A Figura 52B é um diagrama conceitual que ilustra exemplos de uma primeira porção de uma primeira partição e primeiro e segundo conjuntos de amostras.
[0079] A Figura 52C é um diagrama conceitual que ilustra uma primeira porção de uma primeira partição.
[0080] A Figura 53 é um fluxograma que ilustra um exemplo de um modo de triângulo.
[0081] A Figura 54 é um diagrama que ilustra um exemplo de um modo de ATMVP no qual um MV é derivado em unidades de um subbloco.
[0082] A Figura 55 é um diagrama que ilustra uma relação entre um modo de mesclagem e atualização de vetor de movimento dinâmico (DMVR).
[0083] A Figura 56 é um diagrama conceitual para ilustrar um exemplo de DMVR.
[0084] A Figura 57 é um diagrama conceitual para ilustrar outro exemplo de DMVR para determinar um MV
[0085] A Figura 58A é um diagrama que ilustra um exemplo de estimativa de movimento em DMVR.
[0086] A Figura 58B é um fluxograma que ilustra um exemplo de estimativa de movimento em DMVR.
[0087] A Figura 59 é um fluxograma que ilustra um exemplo de geração de uma imagem de previsão.
[0088] A Figura 60 é um fluxograma que ilustra outro exemplo de geração de uma imagem de previsão.
[0089] A Figura 61 é um fluxograma que ilustra um exemplo de um processo de correção de uma imagem de previsão por compensação de movimento de bloco sobreposto (OBMC).
[0090] A Figura 62 é um diagrama conceitual para ilustrar um exemplo de um processo de correção de imagem de previsão por OBMC.
[0091] A Figura 63 é um diagrama para ilustrar um modelo que assume movimento linear uniforme.
[0092] A Figura 64 é um fluxograma que ilustra um exemplo de interprevisão de acordo com BIO.
[0093] A Figura 65 é um diagrama que ilustra um exemplo de uma configuração funcional de um interprevisor que realiza interprevisão de acordo com BIO.
[0094] A Figura 66A é um diagrama para ilustrar um exemplo de um método de geração de imagem de previsão usando um processo de correção de luminância por compensação de iluminação local (LIC).
[0095] A Figura 66B é um fluxograma que ilustra um exemplo de um método de geração de imagem de previsão usando um processo de correção de luminância por LIC.
[0096] A Figura 67 é um diagrama de blocos que ilustra uma configuração funcional de um decodificador de acordo com uma modalidade.
[0097] A Figura 68 é um diagrama de blocos que ilustra um exemplo de montagem de um decodificador.
[0098] A Figura 69 é um fluxograma que ilustra um exemplo de um processo geral de decodificação realizado pelo decodificador.
[0099] A Figura 70 é um diagrama que ilustra uma relação entre um determinador de divisão e outros elementos constituintes.
[00100] A Figura 71 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um decodificador por entropia.
[00101] A Figura 72 é um diagrama que ilustra um fluxo de CABAC no decodificador por entropia.
[00102] A Figura 73 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um quantizador inverso.
[00103] A Figura 74 é um fluxograma que ilustra um exemplo de quantização inversa realizada pelo quantizador inverso.
[00104] A Figura 75 é um fluxograma que ilustra um exemplo de um processo realizado por um transformador inverso.
[00105] A Figura 76 é um fluxograma que ilustra outro exemplo de um processo realizado pelo transformador inverso.
[00106] A Figura 77 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional de um filtro de loop.
[00107] A Figura 78 é um fluxograma que ilustra um exemplo de um processo realizado por um previsor do decodificador.
[00108] A Figura 79 é um fluxograma que ilustra outro exemplo de um processo realizado pelo previsor do decodificador.
[00109] A Figura 80A é um fluxograma que ilustra uma porção de outro exemplo de um processo realizado pelo previsor do decodificador.
[00110] A Figura 80B é um fluxograma que ilustra a porção restante do outro exemplo do processo realizado pelo previsor do decodificador.
[00111] A Figura 81 é um diagrama que ilustra um exemplo de um processo realizado por um intraprevisor do decodificador.
[00112] A Figura 82 é um fluxograma que ilustra um exemplo de derivação de MV no decodificador.
[00113] A Figura 83 é um fluxograma que ilustra outro exemplo de derivação de MV no decodificador.
[00114] A Figura 84 é um fluxograma que ilustra um exemplo de interprevisão pelo modo internormal no decodificador.
[00115] A Figura 85 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de mesclagem normal no decodificador
[00116] A Figura 86 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de FRUC no decodificador.
[00117] A Figura 87 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de mesclagem afim no decodificador.
[00118] A Figura 88 é um fluxograma que ilustra um exemplo de interprevisão pelo modo inter afim no decodificador.
[00119] A Figura 89 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de triângulo no decodificador.
[00120] A Figura 90 é um fluxograma que ilustra um exemplo de estimativa de movimento por DMVR no decodificador
[00121] A Figura 91 é um fluxograma que ilustra um exemplo específico de estimativa de movimento por DMVR no decodificador.
[00122] A Figura 92 é um fluxograma que ilustra um exemplo de geração de uma imagem de previsão no decodificador.
[00123] A Figura 93 é um fluxograma que ilustra outro exemplo de geração de uma imagem de previsão no decodificador.
[00124] A Figura 94 é um fluxograma que ilustra outro exemplo de correção de uma imagem de previsão por OBMC no decodificador
[00125] A Figura 95 é um fluxograma que ilustra outro exemplo de correção de uma imagem de previsão por BIO no decodificador
[00126] A Figura 96 é um fluxograma que ilustra outro exemplo de correção de uma imagem de previsão por LIC no decodificador.
[00127] A Figura 97 é um diagrama que indica um exemplo de uma estrutura de sintaxe para notificar as informações usadas para configurar uma lista de imagens de referência.
[00128] A Figura 98 é um diagrama que indica um exemplo de uma estrutura de sintaxe SPS para notificar um sinalizador presente de imagem de referência intercamadas no Aspecto 1.
[00129] A Figura 99 é um diagrama que indica um exemplo de uma operação para notificar o sinalizador presente da imagem de referência intercamadas no Aspecto 1.
[00130] A Figura 100 é um diagrama que indica um exemplo de uma sintaxe SPS para notificar um sinalizador de presença de imagem de referência intercamadas no Aspecto 2.
[00131] A Figura 101 é um fluxograma que indica uma operação que é realizada por um codificador de acordo com uma modalidade.
[00132] A Figura 102 é um fluxograma que indica uma operação mais detalhada que é realizada pelo codificador de acordo com a modalidade.
[00133] A Figura 103 é um fluxograma que indica uma operação que é realizada por um decodificador de acordo com a modalidade.
[00134] A Figura 104 é um fluxograma que indica uma operação mais detalhada que é realizada pelo decodificador de acordo com a modalidade.
[00135] A Figura 105 é um diagrama que ilustra uma configuração geral de um sistema de fornecimento de conteúdo para implantar um serviço de distribuição de conteúdo.
[00136] A Figura 106 é um diagrama que ilustra um exemplo de uma tela de exibição de uma página da web.
[00137] A Figura 107 é um diagrama que ilustra um exemplo de uma tela de exibição de uma página da web.
[00138] A Figura 108 é um diagrama que ilustra um exemplo de um smartphone.
[00139] A Figura 109 é um diagrama de blocos que ilustra um exemplo de uma configuração de um smartphone.
[00140] Descrição dAS Modalidades
[00141] Introdução
[00142] Na codificação de um vídeo, há um caso em que é usado um esquema de codificação multicamada que é, por exemplo, um esquema de codificação espacialmente escalável, um esquema de codificação de multivisualização ou semelhante. No esquema de codificação multicamada, a fim de aumentar a eficiência de codificação, a previsão intercamadas pode ser realizada usando uma ou mais imagens de referência intercamadas que são imagens de referência em uma camada de referência diferente de uma camada atual. As uma ou mais imagens de referência intercamadas usadas para a previsão intercamadas podem ser incluídas em uma lista de imagens de referência que pode incluir uma imagem de referência usada para previsão normal intercamadas.
[00143] Por exemplo, se uma ou mais imagens de referência intercamadas estão incluídas na lista de imagens de referência pode ser controlada com base em um sinalizador que indica se o uso de uma ou mais imagens de referência intercamadas é permitido, um sinalizador que indica se uma ou mais imagens de referência intercamadas são usados, etc. Esses sinalizadores podem ser codificados ou decodificados como parâmetros de codificação. Desta forma, a informação para controlar a previsão intercamadas é compartilhada entre um codificador e um decodificador.
[00144] Entretanto, existe a possibilidade de codificar e decodificar as informações para controlar a predição intercamadas à medida que os parâmetros de codificação aumentam a quantidade de códigos.
[00145] Em vista disso, por exemplo, um codificador de acordo com um aspecto da presente invenção inclui circuitos e memória acoplados aos circuitos. Em operação, o circuito: alterna entre codificar um primeiro sinalizador, de acordo com se um esquema de codificação multicamada é usado para codificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.
[00146] Deste modo, existe a possibilidade de o codificador ser capaz de saltar a codificação do primeiro sinalizador que indica se é permitida ao uso de uma ou mais imagens de referência intercamadas, de acordo com se o esquema de codificação multicamadas é usado. Consequentemente, existe a possibilidade de que o codificador seja capaz de contribuir com a redução da quantidade de códigos referentes às informações para o controle da predição intercamadas.
[00147] Além disso, por exemplo, o circuito: codifica o primeiro sinalizador quando o esquema de codificação multicamada é usado para codificar uma ou mais imagens; e não codifica o primeiro sinalizador quando o esquema de codificação multicamada não é usado para codificar uma ou mais imagens.
[00148] Deste modo, existe a possibilidade de o codificador ser capaz de controlar adaptativamente se o uso de uma ou mais imagens de referência intercamadas é permitido, quando o esquema de codificação multicamada é usado. Em outras palavras, neste caso, existe a possibilidade de que o codificador seja capaz de controlar adaptativamente se o uso da previsão intercamada é permitido.
[00149] Além disso, existe a possibilidade de que o codificador seja capaz de pular a codificação do primeiro sinalizador porque uma ou mais imagens de referência intercamadas não são usadas quando o esquema de codificação multicamadas não é usado. Desse modo, existe a possibilidade de que o codificador seja capaz de contribuir com a redução da quantidade de códigos. Deve-se notar que o não uso do esquema de codificação multicamada corresponde ao uso de um esquema de codificação de camada única
[00150] Além disso, por exemplo, o uso de uma ou mais imagens de referência intercamadas é permitido quando (i) o primeiro sinalizador é codificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas é permitido, o o uso de uma ou mais imagens de referência intercamadas não é permitido quando (i) o primeiro sinalizador é codificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas não é permitido, e o uso de um ou mais imagens de referência intercamadas não são permitidas quando o primeiro sinalizador não está codificado.
[00151] Deste modo, existe a possibilidade de o codificador ser capaz de controlar se uma ou mais imagens de referência intercamadas são usadas, a fim de conformar-se com o primeiro sinalizador quando o primeiro sinalizador é codificado. Além disso, existe a possibilidade de que o codificador seja capaz de simplificar o processo, pois o uso de uma ou mais imagens de referência intercamada não é permitido quando o primeiro sinalizador não está codificado.
[00152] Além disso, por exemplo, o circuito codifica um segundo sinalizador que indica se qualquer uma das uma ou mais imagens de referência intercamadas é usada como uma imagem de referência que está incluída em uma lista de imagens de referência, quando o uso de uma ou mais imagens de referência intercamadas é permitido.
[00153] Deste modo, existe a possibilidade de que o codificador seja capaz de controlar adaptativamente se o uso de uma ou mais imagens de referência intercamadas é permitido como as imagens de referência na lista de imagens de referência, quando o uso de uma ou mais imagens de referência intercamadas é permitido. Consequentemente, neste caso, existe a possibilidade de que o codificador seja capaz de codificar adequadamente uma imagem atual usando uma ou mais imagens de referência intercamadas ou sem usar uma ou mais imagens de referência intercamadas.
[00154] Além disso, por exemplo, uma imagem de referência diferente de qualquer uma das uma ou mais imagens de referência intercamadas é usada como a imagem de referência incluída na lista de imagens de referência, quando (I-i) o segundo sinalizador é codificado e (I-ii) o segundo sinalizador indica que qualquer uma das uma ou mais imagens de referência intercamadas não é usada como a imagem de referência que está incluída na lista de imagens de referência, ou (II) o segundo sinalizador não deve ser codificado.
[00155] Deste modo, existe a possibilidade de que o codificador seja capaz de usar a imagem de referência diferente de uma ou mais imagens de referência intercamada seja quando o uso de uma ou mais imagens de referência intercamada não for permitido ou quando uma ou mais imagens de referência intercamada não são usadas. Consequentemente, existe a possibilidade de que o codificador seja capaz de codificar adequadamente a imagem atual usando a imagem de referência diferente de uma ou mais imagens de referência intercamadas.
[00156] Além disso, por exemplo, os circuitos alternam para codificar o primeiro sinalizador, de acordo com um ID do conjunto de parâmetros de vídeo correspondente a se o esquema de codificação multicamada é usado para codificar uma ou mais imagens, o ID do conjunto de parâmetros de vídeo é 0 ou maior, quando o ID do conjunto de parâmetros de vídeo é 0, o esquema de codificação multicamada não é usado para codificar uma ou mais imagens e quando o ID do conjunto de parâmetros de vídeo é maior que 0, o esquema de codificação multicamada é usado para codificar uma ou mais imagens, e o ID do conjunto de parâmetros de vídeo indica um identificador de um conjunto de parâmetros de vídeo para codificar uma ou mais imagens usando o esquema de codificação multicamada.
[00157] Desta forma, existe a possibilidade de que o codificador seja capaz de pular a codificação do primeiro sinalizador de acordo com o ID do conjunto de parâmetros de vídeo. Assim, existe a possibilidade de que o codificador seja capaz de contribuir com a redução da quantidade de códigos referentes às informações para controle da predição intercamadas. Além disso, existe a possibilidade de que o codificador seja capaz de codificar adequadamente uma ou mais imagens usando o conjunto de parâmetros de vídeo identificado de acordo com o ID do conjunto de parâmetros de vídeo e o esquema de codificação multicamada, quando o ID do conjunto de parâmetros de vídeo for maior que 0.
[00158] Além disso, por exemplo, um codificador de acordo com um aspecto da presente invenção inclui circuitos e memória acoplados aos circuitos. Em operação, o circuito: alterna entre decodificar um primeiro sinalizador, de acordo com o uso de um esquema de codificação multicamada para decodificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.
[00159] Deste modo, existe a possibilidade de o decodificador ser capaz de saltar a decodificação do primeiro sinalizador que indica se é permitido o uso de uma ou mais imagens de referência intercamadas, de acordo com se esquema de codificação multicamadas é usado. Assim, existe a possibilidade de que o decodificador seja capaz de contribuir com redução na quantidade de códigos referentes às informações para controle da predição intercamada.
[00160] Além disso, por exemplo, o circuito: decodifica o primeiro sinalizador quando o esquema de codificação multicamada é usado para decodificar uma ou mais imagens; e não decodifica o primeiro sinalizador quando o esquema de codificação multicamada não é usado para decodificar uma ou mais imagens.
[00161] Desse modo, existe a possibilidade de o decodificador ser capaz de controlar de forma adaptável se é permitido o uso de uma ou mais imagens de referência intercamadas, quando é usado o esquema de codificação multicamadas. Por outras palavras, neste caso, existe a possibilidade de que o decodificador seja capaz de controlar de forma adaptativa se é permitida o uso da previsão de intercamadas.
[00162] Além disso, existe a possibilidade de que o decodificador seja capaz de pular a decodificação do primeiro sinalizador porque uma ou mais imagens de referência intercamadas não são usadas quando o esquema de codificação multicamada não é usado. Consequentemente, existe a possibilidade de que o decodificador seja capaz de contribuir com a redução da quantidade de códigos. Deve-se notar que o não uso do esquema de codificação multicamada corresponde ao uso de um esquema de codificação de camada única.
[00163] Além disso, por exemplo, o uso de uma ou mais imagens de referência intercamadas é permitido quando (i) o primeiro sinalizador é decodificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas é permitido, o o uso de uma ou mais imagens de referência intercamadas não é permitido quando (i) o primeiro sinalizador é decodificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas não é permitido, e o uso de um ou mais imagens de referência intercamadas não são permitidas quando o primeiro sinalizador não é decodificado.
[00164] Deste modo, existe a possibilidade de o decodificador ser capaz de controlar se uma ou mais imagens de referência intercamadas são usadas, a fim de estar em conformidade com o primeiro sinalizador quando o primeiro sinalizador é decodificado. Além disso, existe a possibilidade de que o decodificador seja capaz de simplificar o processo, pois o uso de uma ou mais imagens de referência intercamadas não é permitido quando o primeiro sinalizador não é decodificado.
[00165] Além disso, por exemplo, o circuito decodifica um segundo sinalizador que indica se qualquer uma das uma ou mais imagens de referência intercamadas é usada como uma imagem de referência que está incluída em uma lista de imagens de referência, quando o uso de uma ou mais imagens de referência intercamadas é permitido.
[00166] Deste modo, existe a possibilidade de que o decodificador seja capaz de controlar adaptativamente se o uso de uma ou mais imagens de referência intercamadas é permitido como as imagens de referência na lista de imagens de referência, quando o uso de uma ou mais imagens de referência intercamadas é permitido. Consequentemente, neste caso, existe a possibilidade de que o decodificador seja capaz de decodificar adequadamente uma imagem atual usando as imagens de referência intercamadas ou sem usar as imagens de referência intercamadas.
[00167] Além disso, por exemplo, uma imagem de referência diferente de qualquer uma das uma ou mais imagens de referência intercamadas é usada como a imagem de referência incluída na lista de imagens de referência, quando (I-i) o segundo sinalizador é decodificado e (I-ii) o segundo sinalizador indica que qualquer uma das uma ou mais imagens de referência intercamadas não é usado como a imagem de referência que está incluída na lista de imagens de referência, ou (II) o segundo sinalizador não deve ser decodificado.
[00168] Deste modo, existe a possibilidade de o decodificador ser capaz de usar a imagem de referência diferente de uma ou mais imagens de referência intercamadas, quer quando o uso de uma ou mais imagens de referência intercamadas não seja permitida ou quando uma ou mais imagens de referência intercamadas as imagens não são usadas. Consequentemente, existe a possibilidade de que o decodificador seja capaz de decodificar apropriadamente a imagem atual usando a imagem de referência diferente das uma ou mais imagens de referência intercamadas.
[00169] Além disso, por exemplo, os circuitos alternam entre decodificar o primeiro sinalizador, de acordo com um ID do conjunto de parâmetros de vídeo correspondente a se o esquema de codificação multicamada é usado para decodificar uma ou mais imagens, o ID do conjunto de parâmetros de vídeo é 0 ou maior, quando o ID do conjunto de parâmetros de vídeo é 0, o esquema de codificação multicamada não é usado para decodificar uma ou mais imagens e quando o ID do conjunto de parâmetros de vídeo é maior que 0, o esquema de codificação multicamada é usado para decodificar uma ou mais imagens, e o ID do conjunto de parâmetros de vídeo indica um identificador de um conjunto de parâmetros de vídeo para decodificar uma ou mais imagens usando o esquema de codificação multicamada.
[00170] Desse modo, existe a possibilidade de que o decodificador seja capaz de pular a decodificação do primeiro sinalizador de acordo com o ID do conjunto de parâmetros de vídeo. Assim, existe a possibilidade de que o decodificador seja capaz de contribuir com a redução da quantidade de códigos referentes à informação para o controle da predição intercamadas. Além disso, existe a possibilidade de que o decodificador seja capaz de decodificar apropriadamente uma ou mais imagens usando o conjunto de parâmetros de vídeo identificado de acordo com o ID do conjunto de parâmetros de vídeo e o esquema de codificação multicamada, quando o ID do conjunto de parâmetros de vídeo for maior que 0.
[00171] Além disso, por exemplo, um método de codificação de acordo com um aspecto da presente invenção é um método de codificação que é realizado por um codificador e inclui: determinar se um esquema de codificação multicamada é usado para codificar uma ou mais imagens; e alternar entre codificar um primeiro sinalizador, de acordo com se o esquema de codificação multicamada é usado para codificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.
[00172] Deste modo, existe um caso em que a codificação do primeiro sinalizador que indica se é permitida o uso de uma ou mais imagens de referência intercamadas pode ser ignorada, de acordo com se o esquema de codificação multicamada é usado. consequentemente, há um caso em que pode ser feita contribuição para a redução da quantidade de códigos em relação à informação para o controle da predição intercamadas.
[00173] Além disso, por exemplo, um método de decodificação de acordo com um aspecto da presente invenção é um método de decodificação que é realizado por um decodificador e inclui: determinar se um esquema de codificação multicamada é usado para decodificar uma ou mais imagens; e alternar entre decodificar um primeiro sinalizador, de acordo com se o esquema de codificação multicamada é usado para decodificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.
[00174] Deste modo, existe um caso em que a decodificação do primeiro sinalizador que indica se é permitida o uso de uma ou mais imagens de referência intercamada pode ser ignorada, consoante o esquema de codificação multicamada seja usado. Assim, há um caso em que pode ser feita contribuição para a redução da quantidade de códigos em relação à informação para o controle da predição intercamadas.
[00175] Além disso, por exemplo, um codificador, de acordo com um aspecto da presente invenção, inclui um introdutor, um divisor, um preditor intra, um preditor inter, uma unidade de filtro de circuito fechado, um transformador, um quantizador, um codificador de entropia e um emissor
[00176] Uma imagem atual é inserida no processador. O divisor divide a imagem atual em uma pluralidade de blocos.
[00177] O preditor intra gera sinais de previsão de um bloco atual incluído na imagem atual, usando uma imagem de referência incluída na imagem atual. O interprevisor gera sinais de previsão de um bloco atual incluído na imagem atual, usando uma imagem de referência incluída em uma imagem de referência diferente da imagem atual. A unidade de filtro de loop aplica um filtro a um bloco reconstruído em um bloco atual incluído na imagem atual.
[00178] O transformador gera coeficientes transformados transformando os erros de previsão entre os sinais originais do bloco atual incluído na imagem atual e os sinais de previsão gerados pelo preditor intra ou pelo preditor inter. O quantizador quantifica os coeficientes de transformada para gerar coeficientes quantizados. O codificador de entropia aplica a codificação de comprimento variável nos coeficientes quantizados para gerar um fluxo de bits codificado. Os coeficientes quantizados aos quais a codificação de comprimento variável foi aplicada e o fluxo de bits codificado incluindo informações de controle são então emitidos do emissor.
[00179] Além disso, por exemplo, em operação, o codificador de entropia muda para codificar um primeiro sinalizador, de acordo com se um esquema de codificação multicamada é usado para codificar uma ou mais imagens, o primeiro sinalizador indicando se o uso de uma ou mais imagens de referência intercamadas para a previsão intercamadas é permitida.
[00180] Além disso, por exemplo, um decodificador de acordo com um aspecto da presente invenção inclui um introdutor, um decodificador de entropia, um quantizador inverso, um preditor intra, um preditor inter, uma unidade de filtro de circuito fechado e um emissor.
[00181] Um fluxo de bits codificado é inserido no digitador. O decodificador de entropia aplica a decodificação de comprimento variável no fluxo de bits codificado para derivar coeficientes quantizados. O inverso do quantizador inverso quantifica os coeficientes quantizados para derivar os coeficientes de transformada. O inverso do transformador inverso transforma os coeficientes transformados para derivar os erros de previsão
[00182] O preditor intra gera sinais de previsão de um bloco atual incluído na imagem atual, usando uma imagem de referência incluída na imagem atual. O interprevisor gera sinais de previsão de um bloco atual incluído na imagem atual, usando uma imagem de referência incluída em uma imagem de referência diferente da imagem atual.
[00183] A unidade de filtro de loop aplica um filtro a um bloco reconstruído em um bloco atual incluído na imagem atual. A imagem atual é então emitida pelo emissor.
[00184] Por exemplo, o decodificador de entropia alterna entre decodificar um primeiro sinalizador, de acordo com se um esquema de codificação multicamada é usado para decodificar uma ou mais imagens, o primeiro sinalizador indicando se o uso de uma ou mais imagens de referência intercamada para previsão intercamada é permitido.
[00185] Além disso, esses aspectos gerais e específicos podem ser implementados usando um sistema, um dispositivo, um método, um circuito integrado, um programa de computador ou um meio legível não transitório por computador, tal como um CD-ROM, ou qualquer combinação de sistemas, dispositivos, métodos, circuitos integrados, programas de computador ou mídia legível por computador.
[00186] Definição de Termos
[00187] Os respectivos termos podem ser definidos conforme indicado abaixo como exemplos.
[00188] (1) imagem
[00189] Uma imagem é uma unidade de dados configurada com um conjunto de pixels, é uma figuração ou inclui blocos menores que uma figuração. As imagens incluem uma imagem estática além de um vídeo.
[00190] (2) figuração
[00191] Uma figuração é uma unidade de processamento de imagem configurada com um conjunto de pixels e também é chamada de quadro ou campo.
[00192] (3) bloco
[00193] Um bloco é uma unidade de processamento que é um conjunto de um número particular de pixels. O bloco também é referido como indicado nos exemplos a seguir. Os formatos dos blocos não são limitados. Os exemplos incluem uma forma de retângulo de pixels M×N e um formato quadrado de pixels M×M para o primeiro lugar, e também incluem um formato triangular, um formato circular e outros formatos.
[00194] exemplos de blocos
[00195] - fatia/ladrilho/tijolo
[00196] - CTU/superbloco/unidade de divisão básica
[00197] - VPDU/unidade de divisão de processamento para hardware
[00198] - CU/unidade de bloco de processamento/unidade de bloco de previsão (PU)/unidade de bloco de transformada ortogonal (TU)/ unidade
[00199] - sub-bloco
[00200] (4) pixel/amostra
[00201] Um pixel ou amostra é o menor ponto de uma imagem. Pixels ou amostras incluem não apenas um pixel em uma posição inteira, mas também um pixel em uma posição de subpixel gerada com base em um pixel em uma posição inteira.
[00202] (5) valor de pixel/valor de amostra
[00203] Um valor de pixel ou valor de amostra é um valor próprio de um pixel. Os valores de pixel ou amostra incluem naturalmente um valor de luma, um valor de croma, um nível de gradação de RGB e também abrange um valor de profundidade ou um valor binário de 0 ou 1.
[00204] (6) sinalizador
[00205] Um sinalizador indica um ou mais bits e pode ser, por exemplo, um parâmetro ou índice representado por dois ou mais bits. Alternativamente, o sinalizador pode indicar não apenas um valor binário representado por um número binário, mas também um valor múltiplo representado por um número diferente do número binário
[00206] (7) sinal
[00207] Um sinal é aquele simbolizado ou codificado para transmitir informações. Os sinais incluem um sinal digital discreto e um sinal analógico que assume um valor contínuo.
[00208] (8) fluxo/fluxo de bits
[00209] Um fluxo ou fluxo de bits é uma sequência de dados digitais ou um fluxo de dados digital. Um fluxo ou fluxo de bits pode ser um fluxo ou pode ser configurado com uma pluralidade de fluxos tendo uma pluralidade de camadas hierárquicas. Um fluxo ou fluxo de bits pode ser transmitido em comunicação serial usando um único caminho de transmissão ou pode ser transmitido em comunicação de pacote usando uma pluralidade de caminhos de transmissão.
[00210] (9) diferença
[00211] No caso de quantidade escalar, é necessário apenas incluir uma diferença simples (x - y) e um cálculo da diferença. As diferenças incluem um valor absoluto de uma diferença (|x - y|), uma diferença quadrada (x ^ 2 - y ^ 2), uma raiz quadrada de uma diferença (√ (x - y)), uma diferença ponderada (ax - por: a e b são constantes), uma diferença de desvio (x - y + a: a é um desvio).
[00212] (10) soma
[00213] No caso de grandeza escalar, é necessário apenas incluir uma soma simples (x + y) e um cálculo de soma. As somas incluem um valor absoluto de uma soma (|x + y|), uma soma quadrada (x ^ 2 + y ^ 2), uma raiz quadrada de uma soma (√ (x + y)), uma diferença ponderada (ax + por: a e b são constantes), uma soma de desvio (x + y + a: a é um desvio).
[00214] (11) com base em
[00215] Uma frase "com base em algo" significa que algo diferente do algo pode ser considerado. Além disso, "com base em" pode ser usado em um caso em que um resultado direto é obtido ou em um caso em que um resultado é obtido por meio de um resultado intermediário.
[00216] (12) usado, usando-se
[00217] Uma frase "algo usado" ou "usando-se algo" significa que algo diferente de algo pode ser considerado. Além disso, "usado" ou "usando-se" pode ser usado em um caso em que um resultado direto é obtido ou em um caso em que um resultado é obtido por meio de um resultado intermediário.
[00218] (13) proibir, impedir
[00219] O termo "proíbe" ou "impede" pode ser reformulado como "não permite" ou "não dá permissão". Além disso, "não ser proibido/impedido" ou "ser permitido/com permissão" nem sempre significa "obrigação".
[00220] (14) limite, restrição/restringir/restrito
[00221] O termo "limitar" ou "restrição/restringir/restringir" pode ser reformulado como "não permite/tem permissão" ou "não é permitido/teve permissão". Além disso, "não ser proibido/impedido" ou "ser permitido/com permissão" nem sempre significa "obrigação". Além disso, é necessário apenas que parte de algo seja proibido/impedido quantitativa ou qualitativamente, e algo pode ser totalmente proibido/impedido.
[00222] (15) croma
[00223] Um adjetivo, representado pelos símbolos Cb e Cr, especificando que uma matriz de amostra ou amostra única está representando um dos dois sinais de diferença de cores relacionados às cores primárias. O termo croma pode ser usado em vez do termo crominância.
[00224] (16) luma
[00225] Um adjetivo, representado pelo símbolo ou subscrito Y ou L, especificando que uma matriz de amostra ou amostra única está representando o sinal monocromático relacionado às cores primárias. O termo luma pode ser usado em vez do termo luminância.
[00226] Notas Relacionadas às Descrições
[00227] Nos desenhos, os mesmos números de referência indicam componentes iguais ou semelhantes. Os tamanhos e localizações relativas dos componentes não são necessariamente desenhados na mesma escala.
[00228] Doravante, as modalidades serão descritas com referência aos desenhos. Observe que as modalidades descritas abaixo mostram, cada uma, um exemplo geral ou específico. Os valores numéricos, formas, materiais, componentes, a disposição e conexão dos componentes, etapas, a relação e a ordem das etapas, etc., indicados nas seguintes modalidades são meros exemplos e não se destinam a limitar o escopo das concretizações.
[00229] As modalidades de um codificador e um decodificador serão descritas abaixo. As modalidades são exemplos de um codificador e um decodificador aos quais os processos e/ou configurações apresentadas na descrição de aspectos da presente invenção são aplicáveis. Os processos e/ou configurações também podem ser implantados em um codificador e um decodificador diferente daqueles de acordo com as modalidades. Por exemplo, em relação aos processos e/ou configurações aplicadas às modalidades, qualquer um dos seguintes pode ser implantado:
[00230] Qualquer um dos componentes do codificador ou do decodificador de acordo com as modalidades apresentadas na descrição dos aspectos da presente invenção pode ser substituído ou combinado com outro componente apresentado em qualquer lugar na descrição dos aspectos da presente invenção.
[00231] No codificador ou decodificador de acordo com as modalidades, alterações discricionárias podem ser feitas para funções ou processos realizados por um ou mais componentes do codificador ou decodificador, como adição, substituição, remoção, etc., das funções ou processos. Por exemplo, qualquer função ou processo pode ser substituído ou combinado com outra função ou processo apresentado em qualquer lugar na descrição de aspectos da presente invenção
[00232] Em métodos implantados pelo codificador ou decodificador de acordo com as modalidades, mudanças discricionárias podem ser feitas, como adição, substituição e remoção de um ou mais dos processos incluídos no método. Por exemplo, qualquer processo no método pode ser substituído ou combinado com outro processo apresentado em qualquer lugar na descrição de aspectos da presente invenção.
[00233] Um ou mais componentes incluídos no codificador ou o decodificador de acordo com as modalidades podem ser combinados com um componente apresentado em qualquer lugar na descrição dos aspectos da presente invenção, podem ser combinados com um componente que inclui uma ou mais funções apresentadas em qualquer lugar no descrição de aspectos da presente invenção e podem ser combinados com um componente que implanta um ou mais processos implantados por um componente apresentado na descrição de aspectos da presente invenção.
[00234] Um componente que inclui uma ou mais funções do codificador ou decodificador de acordo com as modalidades, ou um componente que implanta um ou mais processos do codificador ou decodificador de acordo com as modalidades, pode ser combinado ou substituído por um componente apresentado em qualquer lugar na descrição dos aspectos da presente invenção, com um componente que inclui uma ou mais funções apresentadas em qualquer lugar na descrição dos aspectos da presente invenção, ou com um componente que implanta um ou mais processos apresentados em qualquer lugar na descrição dos aspectos da presente invenção.
[00235] Em métodos implantados pelo codificador ou decodificador de acordo com as modalidades, qualquer um dos processos incluídos no método pode ser substituído ou combinado com um processo apresentado em qualquer lugar na descrição de aspectos da presente invenção ou com qualquer processo correspondente ou equivalente.
[00236] Um ou mais processos incluídos em métodos implantados pelo codificador ou decodificador de acordo com as modalidades podem ser combinados com um processo apresentado em qualquer lugar na descrição de aspectos da presente invenção.
[00237] A implantação dos processos e/ou configurações apresentadas na descrição dos aspectos da presente invenção não está limitada ao codificador ou ao decodificador de acordo com as modalidades. Por exemplo, os processos e/ou configurações podem ser implantados em um dispositivo usado para uma finalidade diferente do codificador de figuração em movimento ou do decodificador de figuração em movimento descrito nas modalidades.
[00238] Configuração de sistema
[00239] A Figura 1 é um diagrama esquemático que ilustra um exemplo de uma configuração de um sistema de transmissão de acordo com uma modalidade.
[00240] Sistema de transmissão Trs é um sistema que transmite um fluxo gerado pela codificação de uma imagem e decodifica o fluxo transmitido. O sistema de transmissão Trs como este inclui, por exemplo, codificador 100, rede Nw e decodificador 200 como ilustrado na Figura 1.
[00241] Uma imagem é inserida no codificador 100. O codificador 100 gera um fluxo codificando a imagem de entrada e envia o fluxo para a rede Nw. O fluxo inclui, por exemplo, a imagem codificada e informações de controle para decodificar a imagem codificada. A imagem é compactada pela codificação.
[00242] Deve-se notar que uma imagem anterior antes de ser codificada e ser inserida no codificador 100 também é referida como a imagem original, o sinal original ou a amostra original. A imagem pode ser um vídeo ou uma imagem estática. A imagem é um conceito genérico de uma sequência, uma figuração e um bloco e, portanto, não está limitada a uma região espacial com um tamanho particular e a uma região temporal com um tamanho particular, a menos que especificado de outra forma. A imagem é uma matriz de pixels ou valores de pixel e o sinal que representa a imagem ou os valores de pixel também são chamados de amostras. O fluxo pode ser referido como um fluxo de bits, um fluxo de bits codificado, um fluxo de bits compactado ou um sinal codificado. Além disso, o codificador pode ser referido como um codificador de imagem ou um codificador de vídeo. O método de codificação realizado pelo codificador 100 pode ser referido como um método de codificação, um método de codificação de imagem ou um método de codificação de vídeo.
[00243] A rede Nw transmite o fluxo gerado pelo codificador 100 para o decodificador 200. A rede Nw pode ser a Internet, a rede de longa distância (WAN), a rede de área local (LAN) ou qualquer combinação dessas redes. A rede Nw nem sempre é limitada a uma rede de comunicação bidirecional e pode ser uma rede de comunicação unidirecional que transmite ondas de difusão da difusão terrestre digital, difusão por satélite ou semelhantes. Como alternativa, a rede Nw pode ser substituída por uma mídia como um Disco Versátil Digital (DVD) e um Disco Blu-Ray (BD) (R), etc. em que um fluxo é gravado.
[00244] O decodificador 200 gera, por exemplo, uma imagem decodificada que é uma imagem não compactada pela decodificação de um fluxo transmitido pela rede Nw. Por exemplo, o decodificador decodifica um fluxo de acordo com um método de decodificação correspondente a um método de codificação pelo codificador 100.
[00245] Deve-se notar que o decodificador também pode ser referido como um decodificador de imagem ou um decodificador de vídeo, e que o método de decodificação realizado pelo decodificador 200 também pode ser referido como um método de decodificação, um método de decodificação de imagem ou um método de decodificação de vídeo.
[00246] Estrutura de dados
[00247] A Figura 2 é um diagrama que ilustra um exemplo de uma estrutura hierárquica de dados em um fluxo. Um fluxo inclui, por exemplo, uma sequência de vídeo. Conforme ilustrado em (a) da Figura 2, a sequência de vídeo inclui um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de figuração (PPS), informações de aperfeiçoamento suplementares (SEI) e uma pluralidade de figurações.
[00248] Em um vídeo com uma pluralidade de camadas, um VPS inclui: um parâmetro de conversão em código que é comum entre algumas da pluralidade de camadas; e um parâmetro de conversão em código relacionado a algumas da pluralidade de camadas incluídas no vídeo ou uma camada individual.
[00249] Um SPS inclui um parâmetro que é usado para uma sequência, isto é, um parâmetro de conversão em código ao qual o decodificador 200 se refere para decodificar a sequência. Por exemplo, o parâmetro de conversão em código pode indicar a largura ou altura de uma figuração. Deve-se notar que uma pluralidade de SPSs pode estar presente.
[00250] Um PPS inclui um parâmetro que é usado para uma figuração, isto é, um parâmetro de conversão em código ao qual o decodificador 200 se refere para decodificar cada uma das figurações na sequência. Por exemplo, o parâmetro de conversão em código pode incluir um valor de referência para a largura de quantização que é usado para decodificar uma figuração e um sinalizador que indica a aplicação de previsão ponderada. Deve-se notar que uma pluralidade de PPSs pode estar presente. Cada um dentre o SPS e i PPS pode ser simplesmente referido como um conjunto de parâmetros.
[00251] Conforme ilustrado em (b) da Figura 2, uma figuração pode incluir um cabeçalho de figuração e pelo menos uma fatia. Um cabeçalho de figuração inclui um parâmetro de conversão em código ao qual o decodificador 200 se refere a fim de decodificar pelo menos uma fatia.
[00252] Conforme ilustrado em (c) da Figura 2, uma fatia inclui um cabeçalho de fatia e pelo menos um tijolo. Um cabeçalho de fatia inclui um parâmetro de conversão em código ao qual o decodificador 200 se refere a fim de decodificar o pelo menos um tijolo.
[00253] Conforme ilustrado em (d) da Figura 2, um tijolo inclui pelo menos uma unidade de árvore de conversão em código (CTU).
[00254] Deve-se notar que uma figuração não pode incluir nenhuma fatia e pode incluir um grupo de ladrilhos em vez de uma fatia. Nesse caso, o grupo de ladrilhos inclui pelo menos um ladrilho. Além disso, um tijolo pode incluir uma fatia.
[00255] Uma CTU também é conhecida como superbloco ou unidade de divisão de base. Conforme ilustrado em (e) da Figura 2, uma CTU como esta inclui um cabeçalho de CTU e pelo menos uma unidade de conversão em código (CU). Um cabeçalho de CTU inclui um parâmetro de conversão em código ao qual o decodificador 200 se refere a fim de decodificar pelo menos uma CU.
[00256] Uma CU pode ser dividida em uma pluralidade de CUs menores. Conforme ilustrado em (f) da Figura 2, uma CU inclui um cabeçalho de CU, informações de previsão e informações de coeficiente residual. As informações de previsão são as informações para prever a CU, e as informações de coeficiente residual são as informações que indicam um resíduo de previsão a ser descrito posteriormente. Embora uma CU seja basicamente o mesmo que uma unidade de previsão (PU) e uma unidade de transformação (TU), deve-se notar que, por exemplo, um SBT a ser descrito posteriormente pode incluir uma pluralidade de TUs menores do que a CU. Além disso, a CU pode ser processada para cada unidade de decodificação de pipeline virtual (VPDU) incluída na CU. A VPDU é, por exemplo, uma unidade fixa que pode ser processada em um estágio quando o processamento de pipeline for realizado no hardware.
[00257] Deve-se notar que um fluxo pode não incluir parte das camadas hierárquicas ilustradas na Figura 2. A ordem das camadas hierárquicas pode ser trocada ou qualquer uma das camadas hierárquicas pode ser substituída por outra camada hierárquica. Aqui, uma figuração que é um alvo para um processo que está prestes a ser realizado por um dispositivo como o codificador 100 ou o decodificador 200 é referida como uma figuração atual. Uma figuração atual significa uma figuração atual a ser codificada quando o processo é um processo de codificação, e uma figuração atual significa uma figuração atual a ser decodificada quando o processo é um processo de decodificação. Da mesma forma, por exemplo, uma CU ou um bloco de CUs que é um alvo para um processo que está prestes a ser realizado por um dispositivo como o codificador 100 ou o decodificador 200 é referido como um bloco atual. Um bloco atual significa um bloco atual a ser codificado quando o processo é um processo de codificação, e um bloco atual significa um bloco atual a ser decodificado quando o processo é um processo de decodificação.
[00258] Estrutura da Figuração: Fatia/Ladrilho
[00259] Uma figuração pode ser configurada com uma ou mais unidades de fatia ou unidades de ladrilho para decodificar a figuração em paralelo.
[00260] As fatias são unidades básicas de codificação incluídas em uma figuração. Uma figuração pode incluir, por exemplo, uma ou mais fatias. Além disso, uma fatia inclui uma ou mais unidades de árvore de conversão em código (CTUs) sucessivas.
[00261] A Figura 3 é um diagrama que ilustra um exemplo de uma configuração de fatia. Por exemplo, uma figuração inclui 11×8 CTUs e é dividida em quatro fatias (fatias 1 a 4). A fatia 1 inclui dezesseis CTUs, a fatia 2 inclui vinte e uma CTUs, a fatia 3 inclui vinte e nove CTUs e a fatia 4 inclui vinte e duas CTUs. Aqui, cada CTU na figuração pertence a uma das fatias. O formato de cada fatia é um formato obtido dividindo-se a figuração horizontalmente. O limite de cada fatia não precisa coincidir com a extremidade de imagem e pode coincidir com qualquer um dos limites entre as CTUs na imagem. A ordem de processamento das CTUs em uma fatia (uma ordem de codificação ou uma ordem de decodificação) é, por exemplo, uma ordem de varredura raster. Uma fatia inclui um cabeçalho de fatia e dados codificados. Os recursos da fatia podem ser gravados no cabeçalho de fatia. Os recursos incluem um endereço de CTU de uma CTU superior na fatia, um tipo de fatia, etc.
[00262] Um ladrilho é uma unidade de uma região retangular incluída em uma figuração. Cada um dos ladrilhos pode ser atribuído com um número referido como TileId na ordem de varredura raster.
[00263] A Figura 4 é um diagrama que ilustra um exemplo de uma configuração de ladrilho. Por exemplo, uma figuração inclui 11×8 CTUs e é dividida em quatro ladrilhos de regiões retangulares (ladrilhos 1 a 4). Quando os ladrilhos são usados, a ordem de processamento das CTUs é alterada da ordem de processamento no caso em que nenhum ladrilho é usado. Quando nenhum ladrilho for usado, uma pluralidade de CTUs em uma figuração é processada na ordem de varredura raster. Quando uma pluralidade de ladrilhos for usada, pelo menos uma CTU em cada um dentre a pluralidade de ladrilhos é processada na ordem de varredura raster. Por exemplo, conforme ilustrado na Figura 4, a ordem de processamento das CTUs incluídas no ladrilho 1 é a ordem que começa da extremidade esquerda da primeira coluna do ladrilho 1 em direção à extremidade direita da primeira coluna do ladrilho 1 e, em seguida, começa a partir da extremidade esquerda da segunda coluna do ladrilho 1 em direção à extremidade direita da segunda coluna do ladrilho 1.
[00264] Deve-se notar que um ladrilho pode incluir uma ou mais fatias e uma fatia pode incluir um ou mais ladrilhos.
[00265] Deve-se notar que uma figuração pode ser configurada com um ou mais conjuntos de ladrilhos. Um conjunto de ladrilhos pode incluir um ou mais grupos de ladrilhos ou um ou mais ladrilhos. Uma figuração pode ser configurada com apenas um de um conjunto de ladrilhos, um grupo de ladrilhos e um ladrilho. Por exemplo, uma ordem para varrer uma pluralidade de ladrilhos para cada conjunto de ladrilhos na ordem de varredura raster é considerada uma ordem de codificação básica de ladrilhos. Um conjunto de um ou mais ladrilhos que são contínuos na ordem de codificação básica em cada conjunto de ladrilhos é considerado um grupo de ladrilhos. Tal figuração pode ser configurada pelo divisor 102 (consulte a Figura 7) a ser descrito posteriormente
[00266] Codificação Escalável
[00267] As Figuras 5 e 6 são diagramas que ilustram exemplos de estruturas de fluxo escalonáveis.
[00268] Conforme ilustrado na Figura 5, o codificador 100 pode gerar um fluxo temporal/espacialmente escalável dividindo-se cada uma de uma pluralidade de figurações em qualquer uma de uma pluralidade de camadas e codificando a figuração na camada. Por exemplo, o codificador 100 codifica a figuração para cada camada, conseguindo assim escalabilidade onde uma camada de realce está presente acima de uma camada de base. Essa codificação de cada figuração também é conhecida como codificação escalável. Desta forma, o decodificador 200 tem capacidade para mudar a qualidade de imagem de uma imagem que é exibida pela decodificação do fluxo. Em outras palavras, o decodificador 200 determina até qual camada decodificar com base em fatores internos, como a capacidade de processamento do decodificador 200 e fatores externos, como o estado de uma largura de banda de comunicação. Como resultado, o decodificador 200 tem capacidade para decodificar um conteúdo enquanto alterna livremente entre baixa resolução e alta resolução. Por exemplo, o usuário do fluxo assiste a um vídeo do fluxo na metade do caminho usando um smartphone a caminho de casa e continua assistindo ao vídeo em casa em um dispositivo como uma TV conectada à Internet. Deve-se notar que cada um dos telefones inteligentes e dispositivos descritos acima inclui o decodificador 200 tendo o mesmo desempenho ou desempenhos diferentes. Nesse caso, quando o dispositivo decodifica camadas até a camada superior do fluxo, o usuário pode assistir ao vídeo em alta qualidade em casa. Desta forma, o codificador 100 não precisa gerar uma pluralidade de fluxos com diferentes qualidades de imagem do mesmo conteúdo e, assim, a carga de processamento pode ser reduzida.
[00269] Além disso, a camada de aprimoramento pode incluir metainformações com base em informações estatísticas sobre a imagem. O decodificador 200 pode gerar um vídeo cuja qualidade de imagem foi aprimorada pela realização de imageamento de super resolução em uma figuração na camada de base com base nos metadados. O imageamento de super resolução pode ser qualquer uma de melhoria na relação SN na mesma resolução e aumento na resolução. Os metadados podem incluir informações para identificar um coeficiente de filtro linear ou não linear, conforme usado em um processo de super resolução, ou informações que identificam um valor de parâmetro em um processo de filtro, aprendizado de máquina ou um método de mínimos quadrados usado no processamento de super resolução.
[00270] Alternativamente, pode ser fornecida uma configuração na qual uma figuração é dividida em, por exemplo, ladrilhos de acordo com, por exemplo, o significado de um objeto na figuração. Neste caso, o decodificador 200 pode decodificar apenas uma região parcial em uma figuração, selecionando um ladrilho a ser decodificado. Além disso, um atributo do objeto (pessoa, carro, bola, etc.) e uma posição do objeto na figuração (coordenadas em imagens idênticas) podem ser armazenados como metadados. Neste caso, o decodificador 200 tem capacidade para identificar a posição de um objeto desejado com base nos metadados e determinar o ladrilho que inclui o objeto. Por exemplo, conforme ilustrado na Figura 6, os metadados podem ser armazenados usando uma estrutura de armazenamento de dados diferente dos dados de imagem, como SEI em HEVC. Esses metadados indicam, por exemplo, a posição, tamanho ou cor de um objeto principal.
[00271] Os metadados podem ser armazenados em unidades de uma pluralidade de figurações, como um fluxo, uma sequência ou uma unidade de acesso aleatório. Desta forma, o decodificador 200 tem capacidade para obter, por exemplo, o momento em que uma pessoa específica aparece no vídeo e, ao ajustar as informações de tempo com as informações da unidade de figuração, tem capacidade para identificar uma figuração na qual o objeto está presente e determinar a posição do objeto na figuração.
[00272] Codificador
[00273] A seguir, o codificador 100 de acordo com esta modalidade é descrito. A Figura 7 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do codificador 100 de acordo com esta modalidade. O codificador 100 codifica uma imagem em unidades de um bloco
[00274] Conforme ilustrado na Figura 7, o codificador 100 é um aparelho que codifica uma imagem em unidades de um bloco e inclui divisor 102, subtrator 104, transformador 106, quantizador 108, codificador por entropia 110, quantizador inverso 112, transformador inverso 114, adicionador 116, memória de bloco 118, filtro de loop 120, memória de quadro 122, intraprevisor 124, interprevisor 126, controlador de previsão 128 e gerador de parâmetro de previsão 130. Deve-se notar que o intraprevisor 124 e o interprevisor 126 são configurados como parte de um executor de previsão.
[00275] Exemplo de montagem do codificador
[00276] A Figura 8 é um diagrama de blocos que ilustra um exemplo de montagem do codificador 100. O codificador 100 inclui processador a1 e memória a2. Por exemplo, a pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 7 são montados no processador a1 e na memória a2 ilustrada na Figura 8.
[00277] O processador a1 é um conjunto de circuitos que realiza o processamento de informações e é acessível à memória a2. Por exemplo, o processador a1 é um conjunto de circuitos eletrônico dedicado ou geral que codifica uma imagem. O processador a1 pode ser um processador como uma CPU. Além disso, o processador a1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, por exemplo, o processador a1 pode assumir as funções de dois ou mais elementos constituintes diferentes de um elemento constituinte para armazenar informações da pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 7, etc.
[00278] A memória a2 é dedicada ou memória geral para armazenar informações que são usadas pelo processador a1 para codificar a imagem. A memória a2 pode ser um conjunto de circuitos eletrônico e pode ser conectada ao processador a1. Além disso, a memória a2 pode ser incluída no processador a1. Além disso, a memória a2 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, a memória a2 pode ser um disco magnético, um disco óptico ou semelhante, ou pode ser representada como armazenamento, um meio ou semelhante. Além disso, a memória a2 pode ser memória não volátil ou memória volátil.
[00279] Por exemplo, a memória a2 pode armazenar uma imagem a ser codificada ou um fluxo correspondente a uma imagem codificada. Além disso, a memória a2 pode armazenar um programa para fazer com que o processador a1 codifique uma imagem.
[00280] Além disso, por exemplo, a memória a2 pode assumir as funções de dois ou mais elementos constituintes para armazenar informações da pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 7. Mais especificamente, a memória a2 pode assumir as funções de memória de bloco 118 e memória de quadro 122 ilustrada na Figura 7. Mais especificamente, a memória a2 pode armazenar uma imagem reconstruída (especificamente, um bloco reconstruído, uma figuração reconstruída ou semelhante).
[00281] Deve-se notar que, no codificador 100, nem todos da pluralidade de elementos constituintes indicados na Figura 7, etc. podem ser implantados, e nem todos os processos descritos acima podem ser realizados. Parte dos elementos constituintes indicados na Figura 7 pode ser incluído em outro dispositivo, ou parte dos processos descritos acima podem ser realizados por outro dispositivo.
[00282] A seguir, um fluxo geral de processos realizados pelo codificador 100 é descrito e, em seguida, cada um dos elementos constituintes incluídos no codificador 100 é descrito.
[00283] Fluxo Geral do Processo de Codificação
[00284] A Figura 9 é um fluxograma que ilustra um exemplo de um processo geral de codificação realizado pelo codificador 100.
[00285] Em primeiro lugar, o divisor 102 do codificador 100 divide cada uma das figurações incluídas em uma imagem original em uma pluralidade de blocos com um tamanho fixo (128×128 pixels) (Etapa Sa_1). O divisor 102, então, seleciona um padrão de divisão para o bloco de tamanho fixo (Etapa Sa_2). Em outras palavras, o divisor 102 divide ainda mais o bloco de tamanho fixo em uma pluralidade de blocos que formam o padrão de divisão selecionado. O codificador 100 realiza, para cada um da pluralidade de blocos, as etapas Sa_3 a Sa_9 para o bloco.
[00286] O controlador de previsão 128 e um executor de previsão que é configurado com intraprevisor 124 e interprevisor 126 geram uma imagem de previsão de um bloco atual (Etapa Sa_3). Deve-se notar que a imagem de previsão também é referida como um sinal de previsão, um bloco de previsão ou amostras de previsão.
[00287] Em seguida, o subtrator 104 gera a diferença entre um bloco atual e uma imagem de previsão como um residual de previsão (Etapa Sa_4). Deve-se notar que o residual de previsão também é referido como um erro de previsão.
[00288] Em seguida, o transformador 106 transforma a imagem de previsão e o quantizador 108 quantifica o resultado, para gerar uma pluralidade de coeficientes quantizados (Etapa Sa_5).
[00289] Em seguida, o codificador por entropia 110 codifica (especificamente, a entropia codifica) a pluralidade de coeficientes quantizados e um parâmetro de previsão relacionado à geração de uma imagem de previsão para gerar um fluxo (Etapa Sa_6).
[00290] Em seguida, o quantizador inverso 112 realiza a quantização inversa da pluralidade de coeficientes quantizados e o transformador inverso 114 realiza a transformação inversa do resultado, para restaurar um residual de previsão (Etapa Sa_7).
[00291] Em seguida, o adicionador 116 adiciona a imagem de previsão ao residual de previsão restaurado para reconstruir o bloco atual (Etapa Sa_8). Desta forma, a imagem reconstruída é gerada. Deve-se notar que a imagem reconstruída também é referida como um bloco reconstruído e, em particular, que uma imagem reconstruída gerada pelo codificador 100 também é referida como um bloco decodificado local ou uma imagem decodificada local.
[00292] Quando a imagem reconstruída é gerada, o filtro de loop 120 realiza a filtragem da imagem reconstruída conforme necessário (Etapa Sa_9).
[00293] O codificador 100 determina então se a codificação de toda a figuração foi concluída (Etapa Sa_10). Ao determinar que a codificação ainda não foi concluída (Não na Etapa Sa_10), os processos da Etapa Sa_2 são executados repetidamente.
[00294] Embora o codificador 100 selecione um padrão de divisão para um bloco de tamanho fixo e codifique cada bloco de acordo com o padrão de divisão no exemplo descrito acima, deve-se notar que cada bloco pode ser codificado de acordo com um correspondente de uma pluralidade de padrões de divisão. Neste caso, o codificador 100 pode avaliar um custo para cada um da pluralidade de padrões de divisão e, por exemplo, pode selecionar o fluxo obtido pela codificação de acordo com o padrão de divisão que rende o menor custo como um fluxo que é finalmente enviado.
[00295] Alternativamente, os processos nas Etapas Sa_1 a Sa_10 podem ser realizados sequencialmente pelo codificador 100, ou dois ou mais dos processos podem ser realizados em paralelo ou podem ser reordenados.
[00296] O processo de codificação pelo codificador 100 é uma codificação híbrida usando codificação de previsão e codificação de transformação. Além disso, a codificação de previsão é realizada por um loop de codificação configurado com subtrator 104, transformador 106, quantizador 108, quantizador inverso 112, transformador inverso 114, adicionador 116, filtro de loop 120, memória de bloco 118, memória de quadro 122, intraprevisor 124, interprevisor 126 e controlador de previsão 128. Em outras palavras, o executor de previsão configurado com intraprevisor 124 e interprevisor 126 faz parte do loop de codificação.
[00297] Divisor
[00298] O divisor 102 divide cada uma das figurações incluídas na imagem original em uma pluralidade de blocos e envia cada bloco para o subtrator 104. Por exemplo, o divisor 102 primeiro divide uma figuração em blocos de tamanho fixo (por exemplo, 128×128 pixels). O bloco de tamanho fixo também é conhecido como unidade de árvore de conversão em código (CTU). O divisor 102 então divide cada bloco de tamanho fixo em blocos de tamanhos variáveis (por exemplo, 64×64 pixels ou menores), com base em divisão de bloco recursiva de árvore quaternária e/ou árvore binária. Em outras palavras, o divisor 102 seleciona um padrão de divisão. O bloco de tamanho variável também é referido como uma unidade de conversão em código (CU), uma unidade de previsão (PU) ou uma unidade de transformação (TU). Deve-se notar que, em vários tipos de exemplos de montagem, não há necessidade de diferenciar entre CU, PU e TU; todos ou alguns dos blocos em uma figuração podem ser processados em unidades de CU, PU ou TU.
[00299] A Figura 10 é um diagrama que ilustra um exemplo de divisão de blocos de acordo com esta modalidade. Na Figura 10, as linhas sólidas representam limites de bloco de blocos divididos por divisão de bloco de árvore quaternária e as linhas tracejadas representam limites de bloco de blocos divididos por divisão de bloco de árvore binária.
[00300] Aqui, o bloco 10 é um bloco quadrado com 128×128 pixels. Este bloco 10 é primeiro dividido em quatro blocos quadrados de 64×64 pixels (divisão de bloco de árvore quaternária).
[00301] O bloco superior esquerdo de 64×64 pixels é ainda dividido verticalmente em dois blocos retangulares de 32×64 pixels e o bloco esquerdo de 32×64 pixels é ainda dividido verticalmente em dois blocos retangulares de 16×64 pixels (divisão de bloco de árvore binária). Como resultado, o bloco de 64 x 64 pixels do quadrado superior esquerdo é dividido em dois blocos de 16 x 64 pixels 11 e 12 e um bloco de 32 x 64 pixels 13.
[00302] O bloco quadrado superior direito de 64×64 pixels é dividido horizontalmente em dois blocos retangulares de 64×32 pixels 14 e 15 (divisão de bloco de árvore binária).
[00303] O bloco quadrado inferior esquerdo de 64×64 pixels é primeiro dividido em quatro blocos quadrados de 32×32 pixels (divisão de bloco de árvore quaternária). O bloco superior esquerdo e o bloco inferior direito entre os quatro blocos quadrados de 32×32 pixels são divididos posteriormente. O bloco quadrado superior esquerdo de 32×32 pixels é dividido verticalmente em dois blocos retangulares de 16×32 pixels, e o bloco direito de 16×32 pixels é dividido horizontalmente em dois blocos de 16×16 pixels (divisão de bloco de árvore binária). O bloco inferior direito de 32×32 pixels é dividido horizontalmente em dois blocos de 32×16 pixels (divisão do bloco de árvore binária). O bloco quadrado superior direito de 32×32 pixels é dividido horizontalmente em dois blocos retangulares de 32×16 pixels (divisão de bloco de árvore binária). Como resultado, o bloco quadrado inferior esquerdo de 64×64 pixels é dividido em bloco retângulo de 16×32 pixels 16, dois blocos quadrados de 16×16 pixels 17 e 18, dois blocos quadrados de 32×32 pixels 19 e 20 e dois blocos retângulos de 32×16 pixels 21 e 22.
[00304] O bloco 23 de 64×64 pixels inferior direito não está dividido.
[00305] Conforme descrito acima, na Figura 10, o bloco 10 é dividido em treze blocos de tamanho variável 11 a 23 com base em divisão de bloco recursiva de árvore quaternária e árvore binária. Essa divisão também é conhecida como divisão de árvore quádrupla mais árvore binária (QTBT).
[00306] Deve-se notar que, na Figura 10, um bloco é dividido em quatro ou dois blocos (divisão de árvore quaternária ou árvore binária), mas a divisão não está limitada a estes exemplos. Por exemplo, um bloco pode ser dividido em três blocos (divisão de bloco ternário). A divisão, que inclui essa divisão de bloco ternário, também é conhecida como divisão de árvore de tipos múltiplos (MBT).
[00307] A Figura 11 é um diagrama que ilustra um exemplo de uma configuração funcional do divisor 102. Conforme ilustrado na Figura 11, o divisor 102 pode incluir o determinador de divisão de bloco 102a. O determinador de divisão de bloco 102a pode realizar os seguintes processos como exemplos.
[00308] Por exemplo, o determinador de divisão de bloco 102a coleta informações de bloco da memória de bloco 118 ou da memória de quadro 122 e determina o padrão de divisão descrito acima com base nas informações de bloco. O divisor 102 divide a imagem original de acordo com o padrão de divisão e gera pelo menos um bloco obtido pela divisão para o subtrator 104.
[00309] Além disso, por exemplo, o determinador de divisão de bloco 102a emite um parâmetro indicando o padrão de divisão descrito acima para o transformador 106, transformador inverso 114, intraprevisor 124, interprevisor 126 e codificador por entropia 110. O transformador 106 pode transformar um residual de previsão com base no parâmetro. O intraprevisor 124 e o interprevisor 126 podem gerar uma imagem de previsão com base no parâmetro. Além disso, o codificador por entropia 110 pode codificar a entropia do parâmetro.
[00310] O parâmetro relacionado ao padrão de divisão pode ser escrito em um fluxo conforme indicado abaixo como um exemplo.
[00311] A Figura 12 é um diagrama que ilustra exemplos de padrões de divisão. Exemplos de padrões de divisão incluem: divisão em quatro regiões (QT) em que um bloco é dividido em duas regiões horizontal e verticalmente; divisão em três regiões (HT ou VT) em que um bloco é dividido na mesma direção na proporção de 1: 2: 1; divisão em duas regiões (HB ou VB) em que um bloco é dividido na mesma direção em uma proporção de 1: 1; e sem divisão (NS).
[00312] Deve-se notar que o padrão de divisão não tem nenhuma direção de divisão de bloco no caso de divisão em quatro regiões e nenhuma divisão, e que o padrão de divisão tem informações de direção de divisão no caso de divisão em duas regiões ou três regiões.
[00313] As Figuras 13A e 13B são, cada um, um diagrama que ilustra um exemplo de uma árvore de sintaxe de um padrão de divisão. No exemplo da Figura 13A, em primeiro lugar, informações que indicam se deve realizar a divisão (S: sinalizador de divisão) estão presentes, e informações que indicam se deve realizar a divisão em quatro regiões (QT: sinalizador QT) estão presentes a seguir. Informações indicando qual divisão em três regiões e duas regiões deve ser realizada (TT: sinalizador TT ou BT: sinalizador BT) estão presentes a seguir e, por último, informações que indicam uma direção de divisão (Ver: sinalizador vertical ou Hor: sinalizador horizontal) estão presentes. Deve-se notar que cada um de pelo menos um bloco obtido por divisão de acordo com tal padrão de divisão pode ser ainda dividido repetidamente em um processo semelhante. Em outras palavras, como um exemplo, se a divisão é realizada, se a divisão em quatro regiões é realizada, qual da direção horizontal e a direção vertical é a direção na qual um método de divisão deve ser realizado, qual de divisão em três regiões e a divisão em duas regiões deve ser realizada pode ser determinada recursivamente e os resultados da determinação podem ser codificados em um fluxo de acordo com a ordem de codificação descrita pela árvore de sintaxe ilustrada na Figura 13A.
[00314] Além disso, embora os itens de informações que indicam respectivamente S, QT, TT e Ver estejam dispostos na ordem listada na árvore de sintaxe ilustrada na Figura 13A, itens de informações que indicam respectivamente S, QT, Ver e BT podem ser organizados na ordem listada. Em outras palavras, no exemplo da Figura 13B, em primeiro lugar, informações que indicam se deve realizar a divisão (S: sinalizador de divisão) estão presentes, e informações que indicam se deve realizar a divisão em quatro regiões (QT: sinalizador QT) estão presentes a seguir. Informações que indicam a direção da divisão (Ver: sinalizador vertical ou Hor: sinalizador horizontal) estão presentes a seguir e, por último, informações que indicam qual divisão em duas regiões e divisão em três regiões deve ser realizada (BT: sinalizador BT ou TT: sinalizador TT) estão presentes.
[00315] Deve-se notar que os padrões de divisão descritos acima são exemplos, e padrões de divisão diferentes dos padrões de divisão descritos podem ser usados ou parte dos padrões de divisão descritos podem ser usados.
[00316] Subtrator
[00317] O subtrator 104 subtrai uma imagem de previsão (imagem de previsão que é entrada do controlador de previsão 128) da imagem original em unidades de uma entrada de bloco do divisor 102 e dividida pelo divisor 102. Em outras palavras, o subtrator 104 calcula resíduos de previsão de um bloco atual. O subtrator 104, então, emite os resíduos de previsão calculados para o transformador 106.
[00318] O sinal original é um sinal de entrada que foi inserido no codificador 100 e representa uma imagem de cada figuração incluída em um vídeo (por exemplo, um sinal luma e dois sinais croma).
[00319] Transformador
[00320] O transformador 106 transforma os resíduos de previsão no domínio espacial em coeficientes de transformada no domínio da frequência e emite os coeficientes de transformada para o quantizador 108. Mais especificamente, o transformador 106 aplica-se, por exemplo, uma transformação de cosseno discreta predefinida (DCT) ou transformada de seno discreta (DST) para previsão de resíduos no domínio espacial.
[00321] Deve-se notar que o transformador 106 pode selecionar adaptativamente um tipo de transformada dentre uma pluralidade de tipos de transformada e transformar resíduos de previsão em coeficientes de transformada usando uma função de base de transformação correspondente ao tipo de transformada selecionado. Esse tipo de transformada também é conhecido como transformação de núcleo múltiplo explícito (EMT) ou transformação múltipla adaptativa (AMT). Além disso, uma função de base de transformação também é chamada simplesmente de base.
[00322] Os tipos de transformadas incluem, por exemplo, DCT-II, DCT-V, DCT-VIII, DST-I e DST-VII. Deve-se notar que esses tipos de transformada podem ser representados como DCT2, DCT5, DCT8, DST1 e DST7. A Figura 14 é um gráfico que ilustra funções de base de transformada para cada tipo de transformada. Na Figura 14, N indica o número de pixels de entrada. Por exemplo, a seleção de um tipo de transformada dentre a pluralidade de tipos de transformada pode depender de um tipo de previsão (um de intra e interprevisão) e pode depender de um modo de intraprevisão.
[00323] Informações indicando se deve ser aplicado tal EMT ou AMT (referido como, por exemplo, um sinalizador EMT ou um sinalizador AMT) e informações que indicam o tipo de transformada selecionado são normalmente sinalizadas no nível de CU. Deve-se notar que a sinalização dessas informações não precisa necessariamente ser realizada no nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU).
[00324] Além disso, o transformador 106 pode transformar novamente os coeficientes de transformada (que são resultados de transformação). Essa retransformada também é referida como transformada secundária adaptativa (AST) ou transformada secundária não separável (NSST). Por exemplo, o transformador 106 realiza a retransformada em unidades de um sub-bloco (por exemplo, sub-bloco de 4×4 pixels) incluído em um bloco de coeficiente de transformação correspondente a um residual intraprevisão. As informações que indicam se deve ser aplicado NSST e as informações relacionadas a uma matriz de transformação para uso em NSST são normalmente sinalizadas no nível de CU. Deve-se notar que a sinalização dessas informações não precisa necessariamente ser realizada no nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU).
[00325] O transformador 106 pode usar uma transformação separável e uma transformação não separável. Uma transformação separável é um método no qual uma transformação é realizada uma pluralidade de vezes, realizando separadamente uma transformação para cada uma das direções de acordo com o número de dimensões de entradas. Uma transformação não separável é um método de realizar uma transformação coletiva em que duas ou mais dimensões em entradas multidimensionais são consideradas coletivamente como uma única dimensão.
[00326] Em um exemplo da transformação não separável, quando uma entrada é um bloco de 4×4 pixels, o bloco de 4×4 pixels é considerado como uma única matriz que inclui dezesseis elementos, e a transformação aplica uma matriz de transformação de 16×16 à matriz.
[00327] Em outro exemplo da transformação não separável, um bloco de entrada de 4×4 pixels é considerado como uma única matriz que inclui dezesseis elementos e, em seguida, uma transformação (transformação de dados de hipercubo) em que a revolução de dados é realizada na matriz uma pluralidade de vezes pode ser realizada.
[00328] Na transformada no transformador 106, os tipos de transformada das funções de base da transformação a serem transformados no domínio da frequência de acordo com as regiões em uma CU podem ser comutados. Os exemplos incluem uma transformação espacialmente variável (SVT).
[00329] A Figura 15 é um diagrama que ilustra um exemplo de SVT.
[00330] Em SVT, conforme ilustrado na Figura 15, as CUs são divididas em duas regiões iguais horizontal ou verticalmente, e apenas uma das regiões é transformada no domínio da frequência. Um tipo de transformada pode ser definido para cada região. Por exemplo, DST7 e DST8 são usados. Por exemplo, entre as duas regiões obtidas pela divisão de uma CU verticalmente em duas regiões iguais, DST7 e DCT8 podem ser usados para a região na posição 0. Alternativamente, entre as duas regiões, DST7 é usado para a região na posição 1. Da mesma forma, entre as duas regiões obtidas pela divisão de uma CU horizontalmente em duas regiões iguais, DST7 e DCT8 são usados para a região na posição 0. Alternativamente, entre as duas regiões, DST7 é usado para a região na posição 1. Embora apenas uma das duas regiões em uma CU seja transformada e a outra não seja transformada no exemplo ilustrado na Figura 15, cada uma das duas regiões pode ser transformada. Além disso, o método de divisão pode incluir não apenas a divisão em duas regiões, mas também a divisão em quatro regiões. Além disso, o método de divisão pode ser mais flexível. Por exemplo, as informações que indicam o método de divisão podem ser codificadas e podem ser sinalizadas da mesma maneira que a divisão CU. Deve-se notar que a SVT também é conhecida como transformada de sub-bloco (SBT).
[00331] O AMT e EMT descritos acima podem ser referidos como MTS (seleção de transformada múltipla). Quando o MTS é aplicado, um tipo de transformada que é DST7, DCT8 ou semelhante pode ser selecionado e as informações que indicam o tipo de transformada selecionado podem ser codificadas como informações de índice para cada CU. Há outro processo denominado IMTS (MTS implícito) como um processo para selecionar, com base na forma de uma CU, um tipo de transformada a ser usado para transformada ortogonal realizada sem codificação de informações de índice. Quando o IMTS é aplicado, por exemplo, quando uma CU tem uma forma de retângulo, a transformada ortogonal da forma de retângulo é realizada usando DST7 para o lado curto e DST2 para o lado longo. Além disso, por exemplo, quando uma CU tem um formato quadrado, a transformada ortogonal da forma retângulo é realizada usando DCT2 quando o MTS é eficaz em uma sequência e usando DST7 quando o MTS é ineficaz na sequência. DCT2 e DST7 são meros exemplos. Outros tipos de transformada podem ser usados e também é possível alterar a combinação de tipos de transformada para uso em uma combinação diferente de tipos de transformada. IMTS pode ser usado apenas para blocos de intraprevisão, ou pode ser usado para blocos de intraprevisão e bloco de interprevisão.
[00332] Os três processos de MTS, SBT e IMTS foram descritos acima como processos de seleção para mudar seletivamente os tipos de transformadas para uso em transformadas ortogonais. No entanto, todos os três processos de seleção podem se tornar eficazes, ou apenas parte dos processos de seleção pode se tornar seletivamente eficaz. Se cada um dos processos de seleção se tornar eficaz, pode ser identificado com base nas informações da sinalizador ou semelhantes em um cabeçalho, como um SPS. Por exemplo, quando todos os três processos de seleção são eficazes, um dos três processos de seleção é selecionado para cada CU e a transformada ortogonal da CU é realizada. Deve-se notar que os processos de seleção para trocar seletivamente os tipos de transformada podem ser processos de seleção diferentes dos três processos de seleção acima, ou cada um dos três processos de seleção pode ser substituído por outro processo, desde que pelo menos um dos quatro seguintes as funções [1] a [4] podem ser alcançadas. A função [1] é uma função para realizar a transformada ortogonal de toda a CU e codificar as informações que indicam o tipo de transformada usado na transformação. A função [2] é uma função para realizar a transformada ortogonal de todo a CU e determinar o tipo de transformada com base em uma regra predeterminada sem codificação de informações que indiquem o tipo de transformada. A função [3] é uma função para realizar a transformada ortogonal de uma região parcial de uma CU e codificar informações que indicam o tipo de transformada usado na transformação. A função [4] é uma função para realizar a transformada ortogonal de uma região parcial de uma CU e determinar o tipo de transformada com base em uma regra predeterminada sem codificar informações que indiquem o tipo de transformada usado na transformação.
[00333] Deve-se notar que se cada um dos MTS, IMTS e SBT é aplicado pode ser determinado para cada unidade de processamento. Por exemplo, se cada um de MTS, IMTS e SBT é aplicado pode ser determinado para cada sequência, figuração, bloco, fatia, CTU ou CU.
[00334] Deve-se notar que uma ferramenta para trocar seletivamente os tipos de transformada na presente invenção pode ser reformulada por um método para selecionar seletivamente uma base para uso em um processo de transformação, um processo de seleção ou um processo para selecionar uma base. Além disso, a ferramenta para alternar seletivamente os tipos de transformada pode ser reformulada por um modo para selecionar de forma adaptativa um tipo de transformada.
[00335] A Figura 16 é um fluxograma que ilustra um exemplo de um processo realizado pelo transformador 106.
[00336] Por exemplo, o transformador 106 determina se deve realizar a transformada ortogonal (Etapa St_1). Aqui, ao determinar a realização da transformada ortogonal (Sim na Etapa St_1), o transformador 106 seleciona um tipo de transformada para uso na transformada ortogonal de uma pluralidade de tipos de transformada (Etapa St_2). Em seguida, o transformador 106 realiza a transformada ortogonal aplicando o tipo de transformada selecionado ao residual de previsão de um bloco atual (Etapa St_3). O transformador 106, então, emite informações que indicam o tipo de transformada selecionado para o codificador por entropia 110, de modo a permitir que o codificador por entropia 110 codifique as informações (Etapa St_4). Por outro lado, ao determinar não realizar a transformada ortogonal (Não na Etapa St_1), o transformador 106 emite informações que indicam que nenhuma transformada ortogonal é realizada, de modo a permitir que o codificador por entropia 110 codifique as informações (Etapa St_5). Deve-se notar que se realizar a transformada ortogonal na Etapa St_1 pode ser determinada com base, por exemplo, no tamanho de um bloco de transformação, um modo de previsão aplicado ao CU, etc. Alternativamente, a transformada ortogonal pode ser realizada usando um tipo de transformada sem informações de codificação que indica o tipo de transformada para uso na transformada ortogonal.
[00337] A Figura 17 é um fluxograma que ilustra outro exemplo de um processo realizado pelo transformador 106. Deve-se notar que o exemplo ilustrado na Figura 17 é um exemplo de transformada ortogonal no caso em que os tipos de transformada para uso na transformada ortogonal são seletivamente trocados como no caso do exemplo ilustrado na Figura 16.
[00338] Como um exemplo, um primeiro grupo de tipo de transformada pode incluir DCT2, DST7 e DCT8. Como outro exemplo, um segundo grupo de tipo de transformada pode incluir DCT2. Os tipos de transformada incluídos no primeiro grupo de tipo de transformada e os tipos de transformada incluídos no segundo grupo de tipo de transformada podem se sobrepor parcialmente uns aos outros ou podem ser totalmente diferentes uns dos outros.
[00339] Mais especificamente, o transformador 106 determina se um tamanho de transformação é menor ou igual a um valor predeterminado (Etapa Su_1). Aqui, ao determinar que o tamanho da transformação é menor ou igual ao valor predeterminado (Sim na Etapa Su_1), o transformador 106 realiza a transformada ortogonal do residual de previsão do bloco atual usando o tipo de transformada incluído no primeiro grupo de tipo de transformada (Etapa Su_2). Em seguida, o transformador 106 emite informações que indicam o tipo de transformada a ser usado entre pelo menos um tipo de transformada incluído no primeiro grupo de tipo de transformada para o codificador por entropia 110, de modo a permitir que o codificador por entropia 110 codifique as informações (Etapa Su_3). Por outro lado, ao determinar que o tamanho da transformação não é menor ou igual ao valor predeterminado (Não na Etapa Su_1), o transformador 106 realiza a transformada ortogonal do resíduo de previsão do bloco atual usando o segundo grupo de tipo de transformada (Etapa Su_4)
[00340] Na Etapa Su_3, as informações que indicam o tipo de transformada para uso na transformada ortogonal pode ser informações que indicam uma combinação do tipo de transformada a ser aplicada verticalmente no bloco atual e o tipo de transformada a ser aplicado horizontalmente no bloco atual. O primeiro grupo de tipo pode incluir apenas um tipo de transformada e as informações que indicam o tipo de transformada para uso na transformada ortogonal podem não ser codificadas. O segundo grupo de tipo de transformada pode incluir uma pluralidade de tipos de transformada e informações que indicam o tipo de transformada para uso na transformada ortogonal entre um ou mais tipos de transformada incluídos no segundo grupo de tipo de transformada podem ser codificadas.
[00341] Alternativamente, um tipo de transformada pode ser determinado com base apenas em um tamanho de transformação. Deve-se notar que tais determinações não estão limitadas à determinação de se o tamanho da transformação é menor ou igual ao valor predeterminado, e outros processos também são possíveis, desde que os processos sejam para determinar um tipo de transformada para uso em transformada ortogonal com base no tamanho da transformação.
[00342] Quantizador
[00343] O quantizador 108 quantiza a saída de coeficientes de transformada do transformador 106. Mais especificamente, o quantizador 108 varre, em uma ordem de varredura determinada, os coeficientes de transformada do bloco atual e quantifica os coeficientes de transformada varridos com base em parâmetros de quantização (QP) correspondentes aos coeficientes de transformada. O quantizador 108, então, emite os coeficientes de transformada quantizados (doravante também referidos como coeficientes quantizados) do bloco atual para o codificador por entropia 110 e o quantizador inverso 112.
[00344] Uma determinada ordem de varredura é uma ordem para quantizar/quantizar inversa os coeficientes de transformada. Por exemplo, uma determinada ordem de varredura é definida como ordem ascendente de frequência (de baixa para alta frequência) ou ordem decrescente de frequência (de alta para baixa frequência).
[00345] Um parâmetro de quantização (QP) é um parâmetro que define uma etapa de quantização (largura de quantização). Por exemplo, quando o valor do parâmetro de quantização aumenta, a etapa de quantização também aumenta. Em outras palavras, quando o valor do parâmetro de quantização aumenta, um erro nos coeficientes quantizados (erro de quantização) aumenta.
[00346] Além disso, uma matriz de quantização pode ser usada para quantização. Por exemplo, vários tipos de matrizes de quantização podem ser usados correspondentemente a tamanhos de transformação de frequência, como 4×4 e 8×8, modos de previsão, como intra e interprevisão, e componentes de pixel, como luma e componentes de pixel de croma. Deve-se notar que quantização significa digitalizar valores amostrados em intervalos predeterminados correspondentemente a níveis predeterminados. Nesse campo técnico, a quantização pode ser representada como outras expressões, como arredondamento e escala.
[00347] Os métodos que usam matrizes de quantização incluem um método que usa uma matriz de quantização que foi definida diretamente no lado do codificador 100 e um método que usa uma matriz de quantização que foi definida como padrão (matriz padrão). No lado do codificador 100, uma matriz de quantização adequada para características de uma imagem pode ser definida definindo diretamente uma matriz de quantização. Este caso, no entanto, tem a desvantagem de aumentar uma quantidade de codificação para codificar a matriz de quantização. Deve-se notar que uma matriz de quantização a ser usada para quantizar o bloco atual pode ser gerada com base em uma matriz de quantização padrão ou uma matriz de quantização codificada, em vez de usar diretamente a matriz de quantização padrão ou a matriz de quantização codificada.
[00348] Existe um método para quantizar um coeficiente de alta frequência e um coeficiente de baixa frequência da mesma maneira, sem usar uma matriz de quantização. Deve-se notar que este método equivale a um método que usa uma matriz de quantização (matriz plana) cujos todos os coeficientes têm o mesmo valor.
[00349] A matriz de quantização pode ser codificada, por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU.
[00350] Ao usar uma matriz de quantização, o quantizador 108 escala, para cada coeficiente de transformação, por exemplo, uma largura de quantização que pode ser calculada com base em um parâmetro de quantização, etc., usando o valor da matriz de quantização. O processo de quantização realizado sem o uso de qualquer matriz de quantização pode ser um processo de quantização de coeficientes de transformada com base em uma largura de quantização calculada com base em um parâmetro de quantização, etc. Deve-se notar que, no processo de quantização realizado sem o uso de qualquer matriz de quantização, a largura de quantização pode ser multiplicada por um valor predeterminado que é comum para todos os coeficientes de transformada em um bloco.
[00351] A Figura 18 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do quantizador 108.
[00352] Por exemplo, o quantizador 108 inclui gerador de parâmetro de quantização de diferença 108a, gerador de parâmetro de quantização predito 108b, gerador de parâmetro de quantização 108c, armazenamento de parâmetro de quantização 108d e executor de quantização 108e.
[00353] A Figura 19 é um fluxograma que ilustra um exemplo de quantização realizada pelo quantizador 108.
[00354] Como um exemplo, o quantizador 108 pode realizar a quantização para cada CU com base no fluxograma ilustrado na Figura 19. Mais especificamente, o gerador de parâmetros de quantização 108c determina se realizar a quantização (Etapa Sv_1). Aqui, ao determinar para realizar a quantização (Sim na Etapa Sv_1), o gerador de parâmetro de quantização 108c gera um parâmetro de quantização para um bloco atual (Etapa Sv_2) e armazena o parâmetro de quantização no armazenamento de parâmetro de quantização 108d (Etapa Sv_3).
[00355] Em seguida, o executor de quantização 108e quantiza os coeficientes de transformada do bloco atual usando o parâmetro de quantização gerado na Etapa Sv_2 (Etapa Sv_4). O gerador de parâmetro de quantização predito 108b então obtém um parâmetro de quantização para uma unidade de processamento diferente do bloco atual do armazenamento de parâmetro de quantização 108d (Etapa Sv_5). O gerador de parâmetro de quantização predito 108b gera um parâmetro de quantização predito do bloco atual com base no parâmetro de quantização obtido (Etapa Sv_6). O gerador de parâmetro de quantização de diferença 108a calcula a diferença entre o parâmetro de quantização do bloco atual gerado pelo gerador de parâmetro de quantização 108c e o parâmetro de quantização predito do bloco atual gerado pelo gerador de parâmetro de quantização predito 108b (Etapa Sv_7). O parâmetro de quantização da diferença é gerado calculando a diferença. O gerador de parâmetro de quantização de diferença 108a emite o parâmetro de quantização de diferença para o codificador por entropia 110, de modo a permitir que o codificador por entropia 110 codifique o parâmetro de quantização de diferença (Etapa Sv_8).
[00356] Deve-se notar que o parâmetro de quantização de diferença pode ser codificado, por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU. Além disso, o valor inicial do parâmetro de quantização pode ser codificado no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU. Neste momento, o parâmetro de quantização pode ser gerado usando o valor inicial do parâmetro de quantização e o parâmetro de quantização de diferença.
[00357] Deve-se notar que o quantizador 108 pode incluir uma pluralidade de quantizadores e pode aplicar a quantização dependente na qual os coeficientes de transformada são quantizados usando um método de quantização selecionado a partir de uma pluralidade de métodos de quantização.
[00358] Codificador por Entropia
[00359] A Figura 20 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do codificador por entropia 110.
[00360] O codificador por entropia 110 gera um fluxo por entropia que codifica a entrada de coeficientes quantizados do quantizador 108 e uma entrada de parâmetro de previsão do gerador de parâmetro de previsão 130. Por exemplo, a conversão em código aritmética binária adaptativa baseada no contexto (CABAC) é usada como a codificação de entropia. Mais especificamente, o codificador por entropia 110 inclui o binarizador 110a, o controlador de contexto 110b e o codificador aritmético binário 110c. O binarizador 110a realiza a binarização na qual sinais de vários níveis, como coeficientes quantizados e um parâmetro de previsão, são transformados em sinais binários. Exemplos de métodos de binarização incluem binarização de Rice truncada, códigos de Golomb exponenciais e binarização de comprimento fixo. O controlador de contexto 110b deriva um valor de contexto de acordo com uma característica ou um estado circundante de um elemento de sintaxe, isto é, uma probabilidade de ocorrência de um sinal binário. Exemplos de métodos para derivar um valor de contexto incluem bypass, referindo-se a um elemento de sintaxe, referindo-se a blocos adjacentes superior e esquerdo, referindo-se as informações hierárquicas e outros. O codificador aritmético binário 110c codifica aritmeticamente o sinal binário usando o valor de contexto derivado.
[00361] A Figura 21 é um diagrama que ilustra um fluxo de CABAC no codificador por entropia 110.
[00362] Primeiro, a inicialização é realizada em CABAC no codificador por entropia 110. Na inicialização, a inicialização no codificador aritmético binário 110c e a configuração de um valor de contexto inicial são realizadas. Por exemplo, o binarizador 110a e o codificador aritmético binário 110c executam a binarização e a codificação aritmética de uma pluralidade de coeficientes de quantização em uma CTU sequencialmente. Neste momento, o controlador de contexto 110b atualiza o valor de contexto cada vez que a codificação aritmética é realizada. O controlador de contexto 110b então salva o valor de contexto como um pós-processo. O valor de contexto salvo é usado, por exemplo, para inicializar o valor de contexto para a próxima CTU.
[00363] Quantizador inverso
[00364] Quantizador inverso 112 quantiza coeficientes quantizados inversos que foram introduzidos a partir do quantizador 108. Mais especificamente, o quantizador inverso 112 quantiza inversamente, em uma ordem de varredura determinada, os coeficientes quantizados do bloco atual. O quantizador inverso 112, então, emite os coeficientes de transformada quantizada inversa do bloco de corrente para o transformador inverso 114.
[00365] Transformador Inverso
[00366] O transformador inverso 114 restaura erros de previsão por transformação inversa dos coeficientes de transformada que foram introduzidos a partir do quantizador inverso 112. Mais especificamente, o transformador inverso 114 restaura os resíduos de previsão do bloco de corrente realizando uma transformação inversa correspondente à transformação aplicada aos coeficientes de transformada pelo transformador 106. O transformador inverso 114, então, emite os resíduos de previsão restaurados para o adicionador 116.
[00367] Deve-se notar que, uma vez que as informações são normalmente perdidas na quantização, os resíduos de previsão restaurados não correspondem aos erros de previsão calculados pelo subtrator 104. Em outras palavras, os resíduos de previsão restaurados normalmente incluem erros de quantização.
[00368] Adicionador
[00369] O adicionador 116 reconstrói o bloco atual adicionando os resíduos de previsão que foram inseridos do transformador inverso 114 e imagens de previsão que foram inseridas do controlador de previsão 128. Consequentemente, uma imagem reconstruída é gerada. O adicionador 116, então, emite a imagem reconstruída para a memória de bloco 118 e o filtro de loop 120.
[00370] Memória de Bloco
[00371] A memória de bloco 118 é um armazenamento para armazenar um bloco que está incluído em uma figuração atual e é referido na intraprevisão. Mais especificamente, a memória de bloco 118 armazena uma saída de imagem reconstruída do adicionador 116.
[00372] Memória de quadro
[00373] A memória de quadro 122 é, por exemplo, armazenamento para armazenar figurações de referência para uso em interprevisão e também é referida como um armazenamento temporário de quadro. Mais especificamente, a memória de quadro 122 armazena uma imagem reconstruída filtrada pelo filtro de loop 120.
[00374] Filtro de Loop
[00375] O filtro de loop 120 aplica um filtro de loop a uma saída de imagem reconstruída pelo adicionador 116 e envia a imagem reconstruída filtrada para a memória de quadro 122. Um filtro de loop é um filtro usado em um loop de codificação (filtro em loop). Exemplos de filtros de loop incluem, por exemplo, um filtro de loop adaptativo (ALF), um filtro de desblocagem (DF ou DBF), um desvio adaptativo de amostra (SAO), etc.
[00376] A Figura 22 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do filtro de loop 120.
[00377] Por exemplo, conforme ilustrado na Figura 22, o filtro de loop 120 inclui o executor do filtro de desblocagem 120a, o executor SAO 120b e o executor ALF 120c. O executor de filtro de desblocagem 120a realiza um processo de filtro de desblocagem da imagem reconstruída. O executor SAO 120b realiza um processo SAO da imagem reconstruída após ser submetido ao processo de filtro de desblocagem. O executor ALF 120c realiza um processo ALF da imagem reconstruída após ser submetida ao processo SAO. O ALF e os processos de filtro de desblocagem são descritos em detalhes posteriormente. O processo SAO é um processo para melhorar a qualidade da imagem reduzindo o zumbido (um fenômeno no qual os valores dos pixels são distorcidos como ondas ao redor de uma borda) e corrigindo o desvio no valor dos pixels. Exemplos de processos SAO incluem um processo de desvio de borda e um processo de desvio de banda. Deve-se notar que o filtro de loop 120 nem sempre precisa incluir todos os elementos constituintes descritos na Figura 22, e pode incluir apenas parte dos elementos constituintes. Além disso, o filtro de loop 120 pode ser configurado para realizar os processos acima em uma ordem de processamento diferente daquela descrita na Figura 22.
[00378] Filtro de LOOP > Filtro de Loop Adaptativo
[00379] Em um ALF, um filtro de erro mínimo para remover artefatos de compactação é aplicado. Por exemplo, um filtro selecionado entre uma pluralidade de filtros com base na direção e atividade de gradientes locais é aplicado para cada um dos sub-blocos de 2×2 pixels no bloco atual.
[00380] Mais especificamente, em primeiro lugar, cada sub-bloco (por exemplo, cada sub-bloco de 2×2 pixels) é categorizado em um de uma pluralidade de classes (por exemplo, quinze ou vinte e cinco classes). A categorização do sub-bloco é baseada, por exemplo, na direção e na atividade do gradiente. Em um exemplo específico, o índice de categoria C (por exemplo, C = 5D + A) é calculado com base na direcionalidade de gradiente D (por exemplo, 0 a 2 ou 0 a 4) e atividade de gradiente A (por exemplo, 0 a 4). Então, com base no índice de categoria C, cada sub-bloco é categorizado em um dentre uma pluralidade de classes.
[00381] Por exemplo, a direcionalidade de gradiente D é calculada comparando gradientes de uma pluralidade de direções (por exemplo, as direções horizontal, vertical e duas diagonais). Além disso, por exemplo, a atividade de gradiente A é calculada adicionando gradientes de uma pluralidade de direções e quantizando o resultado da adição.
[00382] O filtro a ser usado para cada sub-bloco é determinado a partir da pluralidade de filtros com base no resultado de tal categorização.
[00383] O formato de filtro a ser usada em um ALF é, por exemplo, um formato de filtro simétrico circular. A Figura 23A até a Figura 23C ilustram exemplos de formatos de filtro usados em ALFs. A Figura 23A ilustra um filtro em formato de diamante 5×5, Figura 23B ilustra um filtro em formato de diamante de 7×7 e a Figura 23C ilustra um filtro em formato de diamante 9×9. As informações que indicam o formato de filtro são normalmente sinalizadas no nível de figuração. Deve-se notar que a sinalização dessas informações que indicam o formato de filtro não precisa necessariamente ser realizada no nível de figuração e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de tijolo, nível de CTU ou nível de CU).
[00384] A ATIVAÇÃO ou DESATIVAÇÃO do ALF é determinado, por exemplo, no nível de figuração ou nível de CU. Por exemplo, a decisão de aplicar o ALF ao luma pode ser feita no nível de CU, e a decisão de aplicar ALF ao croma pode ser feita no nível de figuração. A informações que indicam ATIVAÇÃO ou DESATIVAÇÃO do ALF é normalmente sinalizada no nível de figuração ou nível de CU. Deve-se notar que a sinalização de informações que indicam ATIVAÇÃO ou DESATIVAÇÃO do ALF não precisa necessariamente ser realizada no nível de figuração ou nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de tijolo ou nível de CTU).
[00385] Além disso, conforme descrito acima, um filtro é selecionado da pluralidade de filtros e um processo ALF de um subbloco é realizado. Um conjunto de coeficientes de coeficientes a ser usado para cada um da pluralidade de filtros (por exemplo, até o décimo quinto ou vigésimo quinto filtro) é normalmente sinalizado no nível de figuração. Deve-se notar que o conjunto de coeficientes nem sempre precisa ser sinalizado no nível de figuração e pode ser sinalizado em outro nível (por exemplo, o nível de sequência, nível de fatia, nível de tijolo, nível de CTU, nível de CU ou nível de sub-bloco).
[00386] Filtro de LOOP > Filtro de Loop Adaptável de Componente Cruzado
[00387] A Figura 23D é um diagrama que ilustra um exemplo em que amostras Y (primeiro componente) são usadas para um ALF de componente cruzado (CCALF) para Cb e um CCALF para Cr (componentes diferentes do primeiro componente). A Figura 23E é um diagrama que ilustra um filtro em formato de diamante.
[00388] Um exemplo de CC-ALF opera aplicando um filtro linear em forma de diamante (Figuras 23D, 23E) para um canal de luma para cada componente de croma. Os coeficientes do filtro, por exemplo, podem ser transmitidos no APS, escalados por um fator de 2 ^ 10 e arredondados para representação de ponto fixo. A aplicação dos filtros é controlada em um tamanho de bloco variável e sinalizada por um sinalizador codificada pelo contexto recebida para cada bloco de amostras. O tamanho do bloco junto com um sinalizador de habilitação CC-ALF é recebido no nível da fatia para cada componente de croma. A sintaxe e a semântica para CC-ALF são fornecidas no Apêndice. Na contribuição, os seguintes tamanhos de bloco (em amostras de croma) foram suportados: 16×16, 32×32, 64×64 e 128×128.
[00389] Filtro de LOOP > Filtro de Loop Adaptável de Componente Cruzado de Croma Conjunta
[00390] A Figura 23F é um diagrama que ilustra um exemplo para um CCALF de croma conjunta (JC-CCALF).
[00391] Um exemplo de JC-CCALF, onde apenas um filtro CCALF será usado para gerar uma saída filtrada CCALF como um sinal de refinamento de croma para apenas um componente de cor, enquanto uma versão devidamente ponderada do mesmo sinal de refinamento de croma será aplicada à outra cor componente. Desta forma, a complexidade do CCALF existente é reduzida aproximadamente pela metade.
[00392] O valor do peso é codificado em um sinalizador de sinal e um índice de peso. O índice de peso (denotado como weight_index) é codificado em 3 bits e especifica a magnitude do peso JC-CCALF JcCcWeight. Não pode ser igual a 0. A magnitude de JcCcWeight é determinada como segue.
[00393] - Se weight_index for menor ou igual a 4, JcCcWeight será igual a weight_index >> 2.
[00394] - Caso contrário, JcCcWeight é igual a 4/(weight_index - 4).
[00395] O controle liga/desliga de nível de bloco da filtragem ALF para Cb e Cr são separados. É o mesmo que no CCALF, e dois conjuntos separados de sinalizadores de controle liga/desliga em nível de bloco serão codificados. Diferente de CCALF, aqui, os tamanhos de bloco de controle liga/desliga Cb, Cr são iguais e, portanto, apenas uma variável de tamanho de bloco é codificada
[00396] Filtro de LOOP > Filtro de desblocagem
[00397] Em um processo de filtro de desblocagem, o filtro de loop 120 realiza um processo de filtro em um limite de bloco em uma imagem reconstruída de modo a reduzir a distorção que ocorre no limite de bloco.
[00398] A Figura 24 é um diagrama de blocos que ilustra um exemplo de uma configuração específica do executor de filtro de desblocagem 120a.
[00399] Por exemplo, o executor de filtro de desblocagem 120a inclui: determinador de limite 1201; determinador de filtro 1203; executor de filtro 1205; determinador de processo 1208; filtro característico determinador 1207; e interruptores 1202, 1204 e 1206.
[00400] O determinador de limite 1201 determina se um pixel a ser filtrado por desblocagem (isto é, um pixel atual) está presente em torno de um limite de bloco. O determinador de limite 1201, então, emite o resultado da determinação para o comutador 1202 e o determinador de processo 1208.
[00401] No caso em que o determinador de limite 1201 determinou que um pixel atual está presente em torno de um limite de bloco, o comutador 1202 produz uma imagem não filtrada para o comutador 1204. No caso oposto, onde o determinador de limite 1201 determinou que nenhum pixel atual está presente em torno de um limite de bloco, o comutador 1202 produz uma imagem não filtrada para o comutador 1206. Deve-se notar que a imagem não filtrada é uma imagem configurada com um pixel atual e pelo menos um pixel circundante localizado em torno do pixel atual.
[00402] O determinador de filtro 1203 determina se deve ser realizada a filtragem por desblocagem do pixel atual, com base no valor do pixel de pelo menos um pixel circundante localizado em torno do pixel atual. O determinador de filtro 1203, então, emite o resultado da determinação para o comutador 1204 e o determinador de processo 1208.
[00403] No caso em que o determinador do filtro 1203 determinou realizar a filtragem por desblocagem do pixel atual, o comutador 1204 produz a imagem não filtrada obtida através do comutador 1202 para o executor do filtro 1205. No caso oposto, onde o determinador de filtro 1203 determinou não realizar a filtragem por desblocagem do pixel atual, o comutador 1204 emite a imagem não filtrada obtida através do comutador 1202 para o comutador 1206.
[00404] Ao obter a imagem não filtrada através dos interruptores 1202 e 1204, o executor de filtro 1205 executa, para o pixel atual, a filtragem por desblocagem com a característica de filtro determinada pelo determinador de característica de filtro 1207. O executor de filtro 1205, então, emite o pixel filtrado para o comutador 1206.
[00405] Sob controle pelo determinador de processo 1208, o comutador 1206 emite seletivamente um pixel que não foi filtrado por desblocagem e um pixel que foi filtrado por desblocagem pelo executor de filtro 1205.
[00406] O determinador de processo 1208 controla o interruptor 1206 com base nos resultados das determinações feitas pelo determinador de limite 1201 e o determinador de filtro 1203. Em outras palavras, o determinador de processo 1208 faz com que o interruptor 1206 emita o pixel que foi filtrado por desblocagem quando o determinador de limite 1201 determinou que o pixel atual está presente em torno do limite de bloco e o determinador de filtro 1203 determinou realizar a filtragem por desblocagem do pixel atual. Além disso, em um caso diferente do caso acima, o determinador de processo 1208 faz com que o interruptor 1206 emita o pixel que não foi filtrado por desblocagem. Uma imagem filtrada é emitida do comutador 1206 repetindo a saída de um pixel desta maneira. Deve-se notar que a configuração ilustrada na Figura 24 é um exemplo de uma configuração no executor de filtro de desblocagem 120a. O executor de filtro de desblocagem 120a pode ter outra configuração.
[00407] A Figura 25 é um diagrama que ilustra um exemplo de um filtro de desblocagem que tem uma característica de filtragem simétrica em relação a um limite de bloco.
[00408] Em um processo de filtro de desblocagem, um de dois filtros de desblocagem com características diferentes, isto é, um filtro forte e um filtro fraco, é selecionado usando valores de pixel e parâmetros de quantização, por exemplo. No caso do filtro forte, os pixels p0 a p2 e os pixels q0 a q2 estão presentes através de um limite de bloco, como ilustrado na Figura 25, os valores de pixel dos respectivos pixels q0 a q2 são alterados para valores de pixel q'0 a q'2 realizando cálculos de acordo com as expressões abaixo.
[00409] q'0 = (p1 + 2×p0 + 2×q0 + 2×q1 + q2 + 4)/8
[00410] q'1 = (p0 + q0 + q1 + q2 + 2)/4
[00411] q'2 = (p0 + q0 + q1 +3×q2 + 2×q3 +4)/8
[00412] Deve-se notar que, nas expressões acima, p0 a p2 e q0 a q2 são os valores de pixel dos respectivos pixels p0 a p2 e pixels q0 a q2. Além disso, q3 é o valor do pixel do pixel vizinho q3 localizado no lado oposto do pixel q2 em relação ao limite do bloco. Além disso, no lado direito de cada uma das expressões, os coeficientes que são multiplicados com os respectivos valores de pixel dos pixels a serem usados para a filtragem por desblocagem são coeficientes de filtro.
[00413] Além disso, na filtragem por desblocagem, o recorte pode ser realizado de modo que os valores de pixel calculados não mudem acima de um valor limite. No processo de recorte, os valores de pixel calculados de acordo com as expressões acima são recortados para um valor obtido de acordo com "um valor de pixel pré-cálculo ± 2×um valor de limite" usando o valor de limite determinado com base em um parâmetro de quantização. Desta forma, é possível evitar um alisamento excessivo.
[00414] A Figura 26 é um diagrama para ilustrar um exemplo de um limite de bloco no qual um processo de filtro de desblocagem é realizado. A Figura 27 é um diagrama que ilustra exemplos de valores de Bs.
[00415] O limite de bloco no qual o processo de filtro de desblocagem é realizado é, por exemplo, um limite entre CUs, PUs ou TUs com blocos de 8×8 pixels, conforme ilustrado na Figura 26. O processo de filtragem por desblocagem é realizado, por exemplo, em unidades de quatro linhas ou quatro colunas. Em primeiro lugar, os valores de limite de resistência (Bs) são determinados como indicado na Figura 27 para o bloco P e bloco Q ilustrado na Figura 26.
[00416] De acordo com os valores de Bs na Figura 27, pode ser determinada a realização de processos de filtro de desblocagem de limites de bloco pertencentes à mesma imagem usando intensidades diferentes. O processo de filtro de desblocagem para um sinal de croma é realizado quando um valor de Bs é 2. O processo de filtro de desblocagem para um sinal luma é realizado quando um valor de Bs é 1 ou mais e uma determinada condição é satisfeita. Deve-se notar que as condições para determinar os valores de Bs não estão limitadas àquelas indicadas na Figura 27, e um valor de Bs pode ser determinado com base em outro parâmetro.
[00417] Previsor (Intraprevisor, Interprevisor, Controlador de Previsão)
[00418] A Figura 28 é um fluxograma que ilustra um exemplo de um processo realizado por um previsor do codificador 100. Deve-se notar que o previsor, como um exemplo, inclui todos ou parte dos seguintes elementos constituintes: intraprevisor 124; interprevisor 126; e controlador de previsão 128. O executor de previsão inclui, por exemplo, intraprevisor 124 e interprevisor 126
[00419] O previsor gera uma imagem de previsão de um bloco atual (Etapa Sb_1). Deve-se notar que a imagem de previsão é, por exemplo, uma imagem de intraprevisão (sinal de intraprevisão) ou uma imagem de interprevisão (sinal de interprevisão). Mais especificamente, o previsor gera a imagem de previsão do bloco atual usando uma imagem reconstruída que já foi obtida para outro bloco por meio da geração de uma imagem de previsão, geração de um residual de previsão, geração de coeficientes quantizados, restauração de um residual de previsão e adição de uma imagem de previsão.
[00420] A imagem reconstruída pode ser, por exemplo, uma imagem em uma figuração de referência ou uma imagem de um bloco codificado (isto é, o outro bloco descrito acima) em uma figuração atual que é a imagem que inclui o bloco atual. O bloco codificado na figuração atual é, por exemplo, um bloco vizinho do bloco atual.
[00421] A Figura 29 é um fluxograma que ilustra outro exemplo de um processo realizado pelo previsor do codificador 100.
[00422] O previsor gera uma imagem de previsão usando um primeiro método (Etapa Sc_1a), gera uma imagem de previsão usando um segundo método (Etapa Sc_1b) e gera uma imagem de previsão usando um terceiro método (Etapa Sc_1c). O primeiro método, o segundo método e o terceiro método podem ser métodos mutuamente diferentes para gerar uma imagem de previsão. Cada um do primeiro ao terceiro métodos pode ser um método de interprevisão, um método de intraprevisão ou outro método de previsão. A imagem reconstruída acima descrita pode ser usada nestes métodos de previsão.
[00423] Em seguida, o previsor avalia as imagens de previsão geradas nas Etapas Sc_1a, Sc_1b e Sc_1c (Etapa Sc_2). Por exemplo, o previsor calcula os custos C para as imagens de previsão geradas na Etapa Sc_1a, Sc_1b e Sc_1c e avalia as imagens de previsão comparando os custos C das imagens de previsão. Deve-se notar que o custo C é calculado de acordo com uma expressão de um modelo de otimização RD, por exemplo, C = D + λ×R. Nesta expressão, D indica artefatos de compressão de uma imagem de previsão e é representado como, por exemplo, uma soma de diferenças absolutas entre o valor de pixel de um bloco atual e o valor de pixel de uma imagem de previsão. Além disso, R indica uma taxa de bits de um fluxo. Além disso, λ indica, por exemplo, um multiplicador de acordo com o método do multiplicador de Lagrange.
[00424] O previsor então seleciona uma das imagens de previsão geradas nas Etapas Sc_1a, Sc_1b e Sc_1c (Etapa Sc_3). Em outras palavras, o previsor seleciona um método ou modo para obter uma imagem de previsão final. Por exemplo, o previsor seleciona a imagem de previsão com o menor custo C, com base nos custos C calculados para as imagens de previsão. Alternativamente, a avaliação na Etapa Sc_2 e a seleção da imagem de previsão na Etapa Sc_3 podem ser feitas com base em um parâmetro que é usado em um processo de codificação. O codificador 100 pode transformar informações para identificar a imagem de previsão selecionada, o método ou o modo em um fluxo. A informações pode ser, por exemplo, um sinalizador ou semelhante. Desta forma, o decodificador 200 tem capacidade para gerar uma imagem de previsão de acordo com o método ou o modo selecionado pelo codificador 100, com base nas informações. Deve-se notar que, no exemplo ilustrado na Figura 29, o previsor seleciona qualquer uma das imagens de previsão após as imagens de previsão serem geradas usando os respectivos métodos. No entanto, o previsor pode selecionar um método ou um modo com base em um parâmetro para uso no processo de codificação descrito acima antes de gerar imagens de previsão e pode gerar uma imagem de previsão de acordo com o método ou modo selecionado.
[00425] Por exemplo, o primeiro método e o segundo método podem ser intraprevisão e interprevisão, respectivamente, e o previsor pode selecionar uma imagem de previsão final para um bloco atual a partir de imagens de previsão geradas de acordo com os métodos de previsão.
[00426] A Figura 30 é um fluxograma que ilustra outro exemplo de um processo realizado pelo previsor do codificador 100.
[00427] Em primeiro lugar, o previsor gera uma imagem de previsão usando intraprevisão (Etapa Sd_1a) e gera uma imagem de previsão usando interprevisão (Etapa Sd_1b). Deve-se notar que a imagem de previsão gerada por intraprevisão também é referida como uma imagem de intraprevisão, e a imagem de previsão gerada por interprevisão também é referida como uma imagem de interprevisão.
[00428] Em seguida, o previsor avalia cada imagem de intraprevisão e imagem de interprevisão (Etapa Sd_2). O custo C descrito acima pode ser usado na avaliação. O previsor pode então selecionar a imagem de previsão para a qual o menor custo C foi calculado entre a imagem de intraprevisão e a imagem de interprevisão, como a imagem de previsão final para o bloco atual (Etapa Sd_3). Em outras palavras, o método de previsão ou o modo para gerar a imagem de previsão para o bloco atual é selecionado.
[00429] Intraprevisor
[00430] O intraprevisor 124 gera uma imagem de previsão (isto é, imagem de intraprevisão) de um bloco atual realizando intraprevisão (também referida como previsão de intraquadro) do bloco atual referindo-se a um bloco ou blocos na figuração atual que é ou são armazenados na memória de bloco 118. Mais especificamente, o intraprevisor 124 gera uma imagem de intraprevisão realizando intraprevisão referindo-se a valores de pixel (por exemplo, valores de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco atual e, em seguida, envia a imagem de intraprevisão para previsão controlador 128.
[00431] Por exemplo, o intraprevisor 124 realiza a intraprevisão usando um modo entre uma pluralidade de modos de intraprevisão que foram predefinidos. Os modos de intraprevisão normalmente incluem um ou mais modos de previsão não direcional e uma pluralidade de modos de previsão direcional.
[00432] Os um ou mais modos de previsão não direcional incluem, por exemplo, modo de previsão planar e modo de previsão DC definido no padrão H.265/HEVC.
[00433] A pluralidade de modos de previsão direcional inclui, por exemplo, os trinta e três modos de previsão direcional definidos no padrão H.265/HEVC. Deve-se notar que a pluralidade de modos de previsão direcional pode incluir ainda trinta e dois modos de previsão direcional, além dos trinta e três modos de previsão direcional (para um total de sessenta e cinco modos de previsão direcional). A Figura 31 é um diagrama que ilustra sessenta e sete modos de intraprevisão no total usados em intraprevisão (dois modos de previsão não direcional e sessenta e cinco modos de previsão direcional). As setas sólidas representam as trinta e três direções definidas no padrão H.265/HEVC e as setas tracejadas representam as trinta e duas direções adicionais (os dois modos de previsão não direcional não são ilustrados na Figura 31).
[00434] Em vários tipos de exemplos de montagem, um bloco de luma pode ser referido na intraprevisão de um bloco de croma. Em outras palavras, um componente cromático do bloco atual pode ser previsto com base em um componente luma do bloco atual. Essa intraprevisão também é conhecida como modelo linear de componente cruzado (CCLM). O modo de intraprevisão para um bloco de croma em que tal bloco de luma é referido (também referido como, por exemplo, um modo CCLM) pode ser adicionado como um dos modos de intraprevisão para blocos de croma.
[00435] O intraprevisor 124 pode corrigir valores de pixel intraprevistos com base em gradientes de pixel de referência horizontal/vertical. A intraprevisão que acompanha este tipo de correção também é conhecida como combinação de intraprevisão dependente da posição (PDPC). As informações que indicam se deve ser aplicado o PDPC (referido como, por exemplo, um sinalizador PDPC) são normalmente sinalizadas no nível de CU. Deve-se notar que a sinalização dessas informações não precisa necessariamente ser realizada no nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU).
[00436] A Figura 32 é um fluxograma que ilustra um exemplo de um processo realizado pelo intraprevisor 124.
[00437] O intraprevisor 124 seleciona um modo de intraprevisão de uma pluralidade de modos de intraprevisão (Etapa Sw_1). O intraprevisor 124, então, gera uma imagem de previsão de acordo com o modo de intraprevisão selecionado (Etapa Sw_2). Em seguida, o intraprevisor 124 determina os modos mais prováveis (MPMs) (Etapa Sw_3). Os MPMs incluem, por exemplo, seis modos de intraprevisão. Dois modos entre os seis modos de intraprevisão podem ser o modo planar e o modo de previsão DC, e os outros quatro modos podem ser modos de previsão direcional. O intraprevisor 124 determina se o modo de intraprevisão selecionado na Etapa Sw_1 está incluído nos MPMs (Etapa Sw_4).
[00438] Aqui, ao determinar que o modo de intraprevisão selecionado na Etapa Sw_1 está incluído nos MPMs (Sim na Etapa Sw_4), o intraprevisor 124 define um sinalizador MPM para 1 (Etapa Sw_5) e gera informações que indicam o modo de intraprevisão selecionado entre os MPMs (Etapa Sw_6). Deve-se notar que o sinalizador MPM definido como 1 e as informações que indicam o modo de intraprevisão são codificados como parâmetros de previsão pelo codificador por entropia 110.
[00439] Ao determinar que o modo de intraprevisão selecionado não está incluído nos MPMs (Não na Etapa Sw_4), o intraprevisor 124 define o sinalizador MPM para 0 (Etapa Sw_7). Alternativamente, o intraprevisor 124 não define qualquer sinalizador MPM. O intraprevisor 124, então, gera informações que indicam o modo de intraprevisão selecionado entre pelo menos um modo de intraprevisão que não está incluído nos MPMs (Etapa Sw_8). Deve-se notar que o sinalizador MPM definido como 0 e as informações que indicam o modo de intraprevisão são codificados como parâmetros de previsão pelo codificador por entropia 110. A informações que indica o modo de intraprevisão indica, por exemplo, qualquer um de 0 a 60.
[00440] Interprevisor
[00441] O interprevisor 126 gera uma imagem de previsão (imagem de interprevisão) realizando interprevisão (também referida como previsão interquadro) do bloco atual, referindo-se a um bloco ou blocos em uma figuração de referência que é diferente da figuração atual e é armazenada na memória de quadro 122. A interprevisão é realizada em unidades de um bloco atual ou um sub-bloco atual no bloco atual. O sub-bloco está incluído no bloco e é uma unidade menor que o bloco. O tamanho do sub-bloco pode ser 4×4 pixels, 8×8 pixels ou outro tamanho. O tamanho do sub-bloco pode ser alterado para uma unidade, como fatia, tijolo, figuração, etc.
[00442] Por exemplo, o interprevisor 126 realiza estimativa de movimento em uma figuração de referência para um bloco atual ou um sub-bloco atual e descobre um bloco de referência ou um sub-bloco de referência que melhor corresponde ao bloco atual ou sub-bloco atual. O interprevisor 126, então, obtém informações de movimento (por exemplo, um vetor de movimento) que compensa um movimento ou uma mudança do bloco de referência ou sub-bloco de referência para o bloco atual ou o sub-bloco atual. O interprevisor 126 gera uma imagem de interprevisão do bloco atual ou do sub-bloco atual realizando compensação de movimento (ou previsão de movimento) com base nas informações de movimento. O interprevisor 126 emite a imagem de interprevisão gerada para o controlador de previsão 128.
[00443] As informações de movimento usadas na compensação de movimento podem ser sinalizadas como imagens de interprevisão em várias formas. Por exemplo, um vetor de movimento pode ser sinalizado. Como outro exemplo, a diferença entre um vetor de movimento e um previsor de vetor de movimento pode ser sinalizada.
[00444] Lista de figurações de referência
[00445] A Figura 33 é um diagrama que ilustra exemplos de figurações de referência. A Figura 34 é um diagrama conceitual que ilustra exemplos de listas de figurações de referência. Cada lista de figurações de referência é uma lista que indica pelo menos uma figuração de referência armazenada na memória de quadros 122. Deve-se notar que, na Figura 33, cada um dos retângulos indica uma figuração, cada uma das setas indica uma relação de referência de figuração, o eixo horizontal indica o tempo, I, P e B nos retângulos indicam uma figuração intraprevisão, uma figuração uniprevisão e uma biprevisão a figuração, respectivamente, e os números nos retângulos indicam uma ordem de decodificação. Conforme ilustrado na Figura 33, a ordem de decodificação das figurações é uma ordem de I0, P1, B2, B3 e B4, e a ordem de exibição das figurações é uma ordem de I0, B3, B2, B4 e P1. Conforme ilustrado na Figura 34, a lista de figurações de referência é uma lista que representa candidatas a figurações de referência. Por exemplo, uma figuração (ou uma fatia) pode incluir pelo menos uma lista de figurações de referência. Por exemplo, uma lista de figurações de referência é usada quando uma figuração atual é uma figuração uniprevisão, e duas listas de figurações de referência são usadas quando uma figuração atual é uma figuração biprevisão. Nos exemplos das Figuras 33 e 34, a figuração B3 que é a figuração atual currPic tem duas listas de figurações de referência que são a lista L0 e a lista L1. Quando a figuração atual currPic é a figuração B3, os candidatos a figuração de referência para a figuração atual currPic são I0, P1 e B2, e as listas de figurações de referência (que são a lista L0 e a lista L1) indicam essas figurações. O interprevisor 126 ou controlador de previsão 128 especifica qual figuração em cada lista de figurações de referência deve ser realmente referida na forma de um índice de figuração de referência refIdxLx. Na Figura 34, as figurações de referência P1 e B2 são especificadas pelos índices de figuração de referência refIdxL0 e refIdxL1.
[00446] Essa lista de figurações de referência pode ser gerada para cada unidade, como uma sequência, figuração, fatia, tijolo, CTU ou CU. Além disso, entre as figurações de referência indicadas nas listas de figurações de referência, um índice de figurações de referência que indica uma figuração de referência a ser referida na interprevisão pode ser sinalizado no nível de sequência, nível de figuração, nível de fatia, nível de tijolo, nível de CTU ou nível de CU. Além disso, uma lista de figurações de referência comum pode ser usada em uma pluralidade de modos de interprevisão.
[00447] Fluxo Básico de InterPrevisão
[00448] A Figura 35 é um fluxograma que ilustra um fluxo de processamento básico de interprevisão.
[00449] Em primeiro lugar, o interprevisor 126 gera um sinal de previsão (Passos Se_1 a Se_3). Em seguida, o subtrator 104 gera a diferença entre um bloco atual e uma imagem de previsão como um residual de previsão (Etapa Se_4).
[00450] Aqui, na geração da imagem de previsão, o interprevisor 126 gera a imagem de previsão através, por exemplo, da determinação de um vetor de movimento (MV) do bloco atual (Passos Se_1 e Se_2) e compensação de movimento (Passo Se_3). Além disso, na determinação de um MV, o interprevisor 126 determina o MV através, por exemplo, da seleção de um candidato de vetor de movimento (candidato de MV) (Etapa Se_1) e derivação de um MV (Etapa Se_2). A seleção do candidato de MV é feita por meio de, por exemplo, interprevisor 126 gerando uma lista de candidatos de MV e selecionando pelo menos um candidato de MV da lista de candidatos de MV. Deve-se notar que MVs derivados no passado podem ser adicionados à lista de candidatos de MV. Alternativamente, na derivação de um MV, o interprevisor 126 pode ainda selecionar pelo menos um candidato de MV a partir de pelo menos um candidato de MV e determinar o pelo menos um candidato de MV selecionado como o MV para o bloco atual. Alternativamente, o interprevisor 126 pode determinar o MV para o bloco atual realizando estimativa em uma região de figuração de referência especificada por cada um dos pelo menos um candidato de MV selecionado. Deve-se notar que a estimativa na região da figuração de referência pode ser referida como estimativa de movimento.
[00451] Além disso, embora as etapas Se_1 a Se_3 sejam realizadas pelo interprevisor 126 no exemplo descrito acima, um processo que é, por exemplo, Etapa Se_1, Etapa Se_2 ou semelhantes pode ser realizado por outro elemento constituinte incluído no codificador 100.
[00452] Deve-se notar que uma lista de candidatos de MV pode ser gerada para cada processo no modo de interprevisão, ou uma lista de candidatos de MV comum pode ser usada em uma pluralidade de modos de interprevisão. Os processos nas etapas Se_3 e Se_4 correspondem às etapas Sa_3 e Sa_4 ilustradas na Figura 9, respectivamente. O processo na Etapa Se_3 corresponde ao processo na Etapa Sd_1b na Figura 30.
[00453] Fluxo de Derivação de MV
[00454] A Figura 36 é um fluxograma que ilustra um exemplo de derivação de MV.
[00455] O interprevisor 126 pode derivar um MV para um bloco atual em um modo para codificar informações de movimento (por exemplo, um MV). Neste caso, por exemplo, as informações de movimento podem ser codificadas como um parâmetro de previsão e podem ser sinalizadas. Em outras palavras, as informações de movimento codificadas são incluídas em um fluxo.
[00456] Alternativamente, o interprevisor 126 pode derivar um MV em um modo no qual as informações de movimento não são codificadas. Nesse caso, nenhuma informação de movimento é incluída no fluxo.
[00457] Aqui, os modos de derivação de MV incluem um modo interno normal, um modo de mesclagem normal, um modo de FRUC, um modo afim, etc. que são descritos mais tarde. Os modos em que as informações de movimento são codificadas entre os modos incluem o modo internormal, o modo de mesclagem normal, o modo afim (especificamente, um modo inter afim e um modo de mesclagem afim), etc. Deve-se notar que as informações de movimento podem incluir não apenas um MV, mas também informações de seleção do previsor MV que são descritas mais tarde. Os modos em que nenhuma informação de movimento é codificada incluem o modo de FRUC, etc. O interprevisor 126 seleciona um modo para derivar um MV do bloco atual a partir da pluralidade de modos e deriva o MV do bloco atual usando o modo selecionado.
[00458] A Figura 37 é um fluxograma que ilustra outro exemplo de derivação de MV.
[00459] O interprevisor 126 pode derivar um MV para um bloco atual em um modo no qual uma diferença de MV é codificada. Nesse caso, por exemplo, a diferença de MV é codificada como um parâmetro de previsão e é sinalizada. Em outras palavras, a diferença MV codificada é incluída em um fluxo. A diferença de MV é a diferença entre o MV do bloco atual e o previsor de MV. Deve-se notar que o previsor de MV é um previsor de vetor de movimento
[00460] Alternativamente, o interprevisor 126 pode derivar um MV em um modo no qual nenhuma diferença de MV é codificada. Nesse caso, nenhuma diferença de MV codificada é incluída no fluxo.
[00461] Aqui, como descrito acima, os modos de derivação de MV incluem o modo internormal, o modo de mesclagem normal, o modo de FRUC, o modo afim, etc. que são descritos mais tarde. Os modos em que uma diferença MV é codificada entre os modos incluem o modo internormal, o modo afim (especificamente, o modo inter afim), etc. Os modos em que nenhuma diferença MV é codificada incluem o modo de FRUC, o modo de mesclagem normal, o modo afim (especificamente, o modo de mesclagem afim), etc. O interprevisor 126 seleciona um modo para derivar um MV do bloco atual da pluralidade de modos e deriva o MV para o bloco atual usando o modo selecionado.
[00462] Modos de derivação de MV
[00463] As Figuras 38A e 38B são, cada uma, um diagrama que ilustra um exemplo de categorização de modos para derivação de MV. Por exemplo, conforme ilustrado na Figura 38A, os modos de derivação de MV são aproximadamente categorizados em três modos de acordo com a possibilidade de codificar informações de movimento e se codificar diferenças de MV. Os três modos são modo interno, modo de mesclagem e modo de conversão de taxa de quadros (FRUC). O modo interno é um modo no qual a estimativa de movimento é realizada e no qual as informações de movimento e uma diferença de MV são codificadas. Por exemplo, conforme ilustrado na Figura 38B, o modo interno inclui modo interno afim e modo interno normal. O modo de mesclagem é um modo no qual nenhuma estimativa de movimento é realizada e no qual um MV é selecionado de um bloco circundante codificado e um MV para o bloco atual é derivado usando o MV. O modo de mesclagem é um modo no qual, basicamente, as informações de movimento são codificadas e nenhuma diferença de MV é codificada. Por exemplo, conforme ilustrado na Figura 38B, os modos de mesclagem incluem modo de mesclagem normal (também referido como modo de mesclagem normal ou modo de mesclagem regular), modo de mesclagem com diferença de vetor de movimento (MMVD), modo combinado de mesclagem/intraprevisão (CIIP), modo triângulo, modo de ATMVP, e modo de mesclagem afim. Aqui, uma diferença MV é codificada excepcionalmente no modo MMVD entre os modos incluídos nos modos de mesclagem. Deve-se notar que o modo de mesclagem afim e o modo inter afim são modos incluídos nos modos afins. O modo afim é um modo para derivar, como um MV de um bloco atual, um MV de cada um de uma pluralidade de sub-blocos incluídos no bloco atual, assumindo uma transformação afim. O modo de FRUC é um modo que se destina a derivar um MV do bloco atual, realizando estimativa entre regiões codificadas, e no qual nem as informações de movimento nem qualquer diferença de MV é codificada. Deve-se notar que os respectivos modos serão descritos em detalhes posteriormente.
[00464] Deve-se notar que a categorização dos modos ilustrados nas Figuras 38A e 38B são exemplos e a categorização não está limitada aos mesmos. Por exemplo, quando uma diferença de MV é codificada no modo CIIP, o modo CIIP é categorizado em modos inter.
[00465] Derivação de MV> Modo Internormal
[00466] O modo internormal é um modo de interprevisão para derivar um MV de um bloco atual descobrindo um bloco semelhante à imagem do bloco atual de uma região de figuração de referência especificada por um candidato de MV. Neste modo interno normal, uma diferença de MV é codificada.
[00467] A Figura 39 é um fluxograma que ilustra um exemplo de interprevisão pelo modo internormal.
[00468] Em primeiro lugar, o interprevisor 126 obtém uma pluralidade de candidatos de MV para um bloco atual com base em informações, como MVs de uma pluralidade de blocos codificados temporalmente ou espacialmente circundando o bloco atual (Etapa Sg_1). Em outras palavras, o interprevisor 126 gera uma lista de candidatos de MV.
[00469] Em seguida, o interprevisor 126 extrai N (um número inteiro de 2 ou mais) candidatos de MV da pluralidade de candidatos de MV obtidos na Etapa Sg_1, como candidatos ao previsor de vetor de movimento de acordo com uma ordem de prioridade predeterminada (Etapa Sg_2). Deve-se notar que a ordem de prioridade é determinada com antecedência para cada um dos N MV candidatos.
[00470] Em seguida, o interprevisor 126 seleciona um candidato a previsor MV dos N candidatos a previsor MV como o previsor MV para o bloco atual (Etapa Sg_3). Neste momento, o interprevisor 126 codifica, em um fluxo, informações de seleção do previsor MV para identificar o previsor MV selecionado. Em outras palavras, o interprevisor 126 emite as informações de seleção do previsor MV como um parâmetro de previsão para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130.
[00471] Em seguida, o interprevisor 126 deriva um MV de um bloco atual referindo-se a uma figuração de referência codificada (Etapa Sg_4). Neste momento, o interprevisor 126 codifica ainda, no fluxo, o valor de diferença entre o MV derivado e o previsor de MV como uma diferença de MV. Em outras palavras, o interprevisor 126 emite a diferença de MV como um parâmetro de previsão para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130. Deve-se notar que a figuração de referência codificada é uma figuração que inclui uma pluralidade de blocos que foram reconstruídos após serem codificados.
[00472] Por último, o interprevisor 126 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV derivado e a figuração de referência codificada (Etapa Sg_5). Os processos nas etapas Sg_1 a Sg_5 são executados em cada bloco. Por exemplo, quando os processos nas Etapas Sg_1 a Sg_5 são executados em cada um de todos os blocos na fatia, termina a interprevisão da fatia usando o modo interno normal. Por exemplo, quando os processos nas Etapas Sg_1 a Sg_5 são executados em cada um de todos os blocos na figuração, termina a interprevisão da figuração usando o modo internormal. Deve-se notar que nem todos os blocos incluídos na fatia podem ser submetidos aos processos nas Etapas Sg_1 a Sg_5, e a interprevisão da fatia usando o modo interno normal pode terminar quando parte dos blocos são submetidos aos processos. Da mesma forma, a interprevisão da figuração usando o modo internormal pode terminar quando os processos nas Etapas Sg_1 a Sg_5 são executados em parte dos blocos na figuração.
[00473] Deve-se notar que a imagem de previsão é um sinal de interprevisão conforme descrito acima. Além disso, as informações que indicam o modo de interprevisão (modo de internormal no exemplo acima) usada para gerar a imagem de previsão é, por exemplo, codificada como um parâmetro de previsão em um sinal codificado.
[00474] Deve-se notar que a lista de candidatos de MV também pode ser usada como uma lista para uso em outro modo. Além disso, os processos relacionados à lista de candidatos de MV podem ser aplicados a processos relacionados à lista para uso em outro modo. Os processos relacionados à lista de candidatos de MV incluem, por exemplo, extração ou seleção de um candidato de MV da lista de candidatos de MV, reordenamento de candidatos de MV ou exclusão de um candidato de MV.
[00475] Derivação de MV> Modo de Mesclagem Normal
[00476] O modo de mesclagem normal é um modo de interprevisão para selecionar um candidato de MV de uma lista de candidatos de MV como um MV para um bloco atual, derivando assim o MV. Deve-se observar que o modo de mesclagem normal é um modo de mesclagem em um significado restrito e também é conhecido simplesmente como modo de mesclagem. Nesta modalidade, o modo de mesclagem normal e o modo de mesclagem são distintos, e o modo de mesclagem é usado em um significado amplo.
[00477] A Figura 40 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de mesclagem normal.
[00478] Em primeiro lugar, o interprevisor 126 obtém uma pluralidade de candidatos de MV para um bloco atual com base em informações, como MVs de uma pluralidade de blocos codificados temporalmente ou espacialmente circundando o bloco atual (Etapa Sh_1). Em outras palavras, o interprevisor 126 gera uma lista de candidatos de MV.
[00479] Em seguida, o interprevisor 126 seleciona um candidato de MV da pluralidade de candidatos de MV obtidos na Etapa Sh_1, derivando assim um MV para o bloco atual (Etapa Sh_2). Neste momento, o interprevisor 126 codifica, em um fluxo, informações de seleção de MV para identificar o candidato de MV selecionado. Em outras palavras, o interprevisor 126 emite as informações de seleção de MV como um parâmetro de previsão para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130.
[00480] Por último, o interprevisor 126 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV derivado e a figuração de referência codificada (Etapa Sh_3). Os processos nas etapas Sh_1 a Sh_3 são executados, por exemplo, em cada bloco. Por exemplo, quando os processos nas Etapas Sh_1 a Sh_3 são executados em cada um dos blocos da fatia, termina a interprevisão da fatia usando o modo de mesclagem normal. Além disso, quando os processos nas Etapas Sh_1 a Sh_3 são executados em cada um dos blocos na figuração, termina a interprevisão da figuração usando o modo de mesclagem normal. Deve-se notar que nem todos os blocos incluídos na fatia podem ser submetidos aos processos nas etapas Sh_1 a Sh_3, e a interprevisão da fatia usando o modo de mesclagem normal pode terminar quando parte dos blocos são submetidos aos processos. Da mesma forma, a interprevisão da figuração usando o modo de mesclagem normal pode terminar quando os processos nas etapas Sh_1 a Sh_3 são executados em parte dos blocos na figuração.
[00481] Além disso, as informações que indicam o modo de interprevisão (modo de mesclagem normal no exemplo acima) usada para gerar a imagem de previsão é, por exemplo, codificada como um parâmetro de previsão em um fluxo.
[00482] A Figura 41 é um diagrama para ilustrar um exemplo de um processo de derivação de MV para uma figuração atual pelo modo de mesclagem normal.
[00483] Em primeiro lugar, o interprevisor 126 gera uma lista de candidatos de MV na qual os candidatos de MV são registrados. Exemplos de candidatos de MV incluem: candidatos de MV espacialmente vizinhos que são MVs de uma pluralidade de blocos codificados localizados espacialmente em torno de um bloco atual; Candidatos MV temporariamente vizinhos que são MVs de blocos circundantes nos quais a posição de um bloco atual em uma figuração de referência codificada é projetada; Candidatos MV combinados que são MVs gerados pela combinação do valor MV de um previsor MV espacialmente vizinho e o valor MV de um previsor MV vizinho temporalmente; e um candidato a zero MV que é um MV tendo um valor zero.
[00484] Em seguida, o interprevisor 126 seleciona um candidato de MV de uma pluralidade de candidatos de MV registrados em uma lista de candidatos de MV e determina o candidato de MV como o MV do bloco atual.
[00485] Além disso, o codificador por entropia 110 grava e codifica, em um fluxo, merge_idx que é um sinal indicando qual candidato de MV foi selecionado.
[00486] Deve-se notar que os candidatos de MV registrados na lista de candidatos de MV descrita na Figura 41 são exemplos. O número de candidatos de MV pode ser diferente do número de candidatos de MV no diagrama, a lista de candidatos de MV pode ser configurada de tal maneira que alguns dos tipos de candidatos de MV no diagrama podem não ser incluídos, ou aquele ou mais candidatos de MV diferentes dos tipos de candidatos de MV no diagrama estão incluídos.
[00487] Um MV final pode ser determinado realizando uma atualização de vetor de movimento dinâmico (DMVR) a ser descrito posteriormente usando o MV do bloco atual derivado do modo de mesclagem normal. Deve-se notar que, no modo de mesclagem normal, nenhuma diferença de MV é codificada, mas uma diferença de MV é codificada. No modo MMVD, um candidato de MV é selecionado de uma lista de candidatos de MV, pois no caso do modo de mesclagem normal, uma diferença MV é codificada. Conforme ilustrado na Figura 38B, o MMVD pode ser categorizado em modos de mesclagem junto com o modo de mesclagem normal. Deve-se notar que a diferença de MV no modo MMVD nem sempre precisa ser igual à diferença de MV para uso no modo inter. Por exemplo, a derivação da diferença MV no modo MMVD pode ser um processo que requer uma quantidade menor de processamento do que a quantidade de processamento necessária para a derivação da diferença MV no modo inter
[00488] Além disso, um modo combinado de intercalação/intraprevisão (CIIP) pode ser realizado. O modo se destina a sobrepor uma imagem de previsão gerada na interprevisão e uma imagem de previsão gerada na intraprevisão para gerar uma imagem de previsão para um bloco atual.
[00489] Deve-se notar que a lista de candidatos de MV pode ser referida como uma lista de candidatos. Além disso, merge_idx são informações de seleção de MV.
[00490] Derivação de MV> Modo de HMVP
[00491] A Figura 42 é um diagrama para ilustrar um exemplo de um processo de derivação de MV para uma figuração atual pelo modo de mesclagem HMVP.
[00492] No modo de mesclagem normal, um MV para, por exemplo, uma CU que é um bloco atual é determinado selecionando um candidato de MV de uma lista de candidatos de MV gerada por referência a um bloco codificado (por exemplo, uma CU). Aqui, outro candidato de MV pode ser registrado na lista de candidatos de MV. O modo no qual esse outro candidato de MV é registrado é referido como modo de HMVP.
[00493] No modo de HMVP, os candidatos de MV são gerenciados usando um armazenamento temporário primeiro a entrar, primeiro a sair (FIFO) para HMVP, separadamente da lista de candidatos de MV para o modo de mesclagem normal.
[00494] No armazenamento temporário FIFO, as informações de movimento, como MVs de blocos processados no passado, são armazenadas as mais recentes primeiro. No gerenciamento do armazenamento temporário FIFO, cada vez que um bloco é processado, o MV para o bloco mais novo (que é a CU processado imediatamente antes) é armazenado no armazenamento temporário FIFO, e o MV da CU mais antiga (isto é, a CU processada primeira) é excluído do armazenamento temporário FIFO. No exemplo ilustrado na Figura 42, HMVP1 é o MV para o bloco mais recente e HMVP5 é o MV para o MV mais antigo.
[00495] O interprevisor 126 então, por exemplo, verifica se cada MV gerenciado no armazenamento temporário FIFO é um MV diferente de todos os candidatos de MV que já foram registrados na lista de candidatos de MV para o modo de mesclagem normal começando em HMVP1. Ao determinar que o MV é diferente de todos os candidatos de MV, o interprevisor 126 pode adicionar o MV gerenciado no armazenamento temporário FIFO na lista de candidatos de MV para o modo de mesclagem normal como um candidato de MV. Neste momento, o candidato de MV registrado do armazenamento temporário FIFO pode ser um ou mais.
[00496] Usando o modo de HMVP desta forma, é possível adicionar não apenas o MV de um bloco vizinho ao bloco atual espacial ou temporalmente, mas também um MV para um bloco processado no passado. Como resultado, a variação de candidatos de MV para o modo de mesclagem normal é expandida, o que aumenta a probabilidade de que a eficiência de conversão em código possa ser aumentada.
[00497] Deve-se notar que o MV pode ser uma informação de movimento. Em outras palavras, as informações armazenadas na lista de candidatos de MV e no armazenamento temporário FIFO podem incluir não apenas valores MV, mas também informações de figuração de referência, direções de referência, o número de figurações, etc. Além disso, o bloco é, por exemplo, uma CU.
[00498] Deve-se notar que a lista de candidatos de MV e o armazenamento temporário FIFO ilustrado na Figura 42 são exemplos. A lista de candidatos de MV e o armazenamento temporário FIFO podem ser diferentes em tamanho daqueles na Figura 42, ou pode ser configurado para registrar candidatos de MV em uma ordem diferente daquela na Figura 42. Além disso, o processo descrito aqui é comum entre o codificador 100 e o decodificador 200.
[00499] Deve-se notar que o modo de HMVP pode ser aplicado para modos diferentes do modo de mesclagem normal. Por exemplo, também é excelente que as informações de movimento, como MVs de blocos processados no modo afim no passado, possam ser armazenadas como mais recentes primeiro e podem ser usadas como candidatos de MV. O modo obtido aplicando o modo de HMVP ao modo afim pode ser referido como modo afim de histórico
[00500] Derivação de MV> Modo de FRUC
[00501] A informações de movimento pode ser derivada no lado do decodificador 200 sem ser sinalizada do lado do codificador 100. Por exemplo, as informações de movimento podem ser derivadas realizando estimativa de movimento no lado do decodificador 200. Neste momento, no lado do decodificador 200, a estimativa de movimento é realizada sem usar qualquer valor de pixel em um bloco atual. Os modos em que a estimativa de movimento é realizada no lado do decodificador 200 desta forma incluem um modo de supraconversão de taxa de quadros (FRUC), um modo de derivação de vetor de movimento compatível com o padrão (PMMVD), etc.
[00502] Um exemplo de um processo de FRUC é ilustrado na Figura 43. Em primeiro lugar, uma lista que indica, como candidatos de MV, MVs para blocos codificados, cada um dos quais vizinhos do bloco atual espacial ou temporalmente, é gerada por referência aos MVs (a lista pode ser uma lista de candidatos de MV e também ser usada como o candidato de MV lista para modo de mesclagem normal) (Etapa Si_1). Em seguida, um melhor candidato de MV é selecionado da pluralidade de candidatos de MV registrados na lista de candidatos de MV (Etapa Si_2). Por exemplo, os valores de avaliação dos respectivos candidatos de MV incluídos na lista de candidatos de MV são calculados e um candidato de MV é selecionado como o melhor candidato de MV com base nos valores de avaliação. Com base no melhor candidato de MV selecionado, um vetor de movimento para o bloco atual é então derivado (Etapa Si_4). Mais especificamente, por exemplo, o melhor candidato de MV selecionado é derivado diretamente como o MV para o bloco atual. Além disso, por exemplo, o MV para o bloco atual pode ser derivado usando correspondência de padrões em uma região circundante de uma posição que está incluída em uma figuração de referência e corresponde ao melhor candidato de MV selecionado. Em outras palavras, a estimativa usando o casamento de padrão em uma figuração de referência e os valores de avaliação podem ser realizados na região circundante do melhor candidato de MV, e quando há um MV que produz um valor de avaliação melhor, o melhor candidato de MV pode ser atualizado para o MV que produz o melhor valor de avaliação, e o MV atualizado pode ser determinado como o MV final para o bloco atual. A atualização para o MV que produz o melhor valor de avaliação pode não ser realizada.
[00503] Por último, o interprevisor 126 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV derivado e a figuração de referência codificada (Etapa Si_5). Os processos nas etapas Si_1 a Si_5 são executados, por exemplo, em cada bloco. Por exemplo, quando os processos nas Etapas Si_1 a Si_5 são executados em cada um dos blocos da fatia, termina a interprevisão da fatia usando o modo de FRUC. Por exemplo, quando os processos nas Etapas Si_1 a Si_5 são executados em cada um dos blocos da figuração, termina a interprevisão da figuração usando o modo de FRUC. Deve-se notar que nem todos os blocos incluídos na fatia podem ser submetidos aos processos nas Etapas Si_1 a Si_5 e a interprevisão da fatia usando o modo de FRUC pode terminar quando parte dos blocos são submetidos aos processos. Da mesma forma, a interprevisão da figuração usando o modo de FRUC pode terminar quando os processos nas etapas Si_1 a Si_5 são executados em parte dos blocos incluídos na figuração.
[00504] Cada sub-bloco pode ser processado de forma semelhante ao caso acima descrito de processamento de cada bloco.
[00505] Os valores de avaliação podem ser calculados de acordo com vários tipos de métodos. Por exemplo, uma comparação é feita entre uma imagem reconstruída em uma região em uma figuração de referência correspondente a um MV e uma imagem reconstruída em uma determinada região (a região pode ser, por exemplo, uma região em outra figuração de referência ou uma região em um bloco vizinho de uma figuração atual, conforme indicado abaixo). A diferença entre os valores de pixel das duas imagens reconstruídas pode ser usada para um valor de avaliação do MV. Deve-se notar que um valor de avaliação pode ser calculado usando outras informações que não o valor da diferença.
[00506] A seguir, o casamento de padrões é descrito em detalhes. Primeiro, um candidato de MV incluído em uma lista de candidatos de MV (também referida como uma lista de mesclagem) é selecionado como um ponto de partida para estimativa por correspondência de padrões. Como correspondência de padrão, pode ser usada uma primeira correspondência de padrão ou uma segunda correspondência de padrão. A primeira correspondência de padrão e a segunda correspondência de padrão podem ser referidas como correspondência bilateral e correspondência de modelo, respectivamente.
[00507] Derivação de MV > FRUC > Correspondência Bilateral
[00508] Na primeira correspondência de padrões, a correspondência de padrões é realizada entre dois blocos que estão localizados ao longo de uma trajetória de movimento de um bloco atual e incluídos em duas figurações de referência diferentes. Consequentemente, na primeira correspondência de padrão, uma região em outra figuração de referência localizada ao longo da trajetória de movimento do bloco atual é usada como uma região determinada para calcular o valor de avaliação do candidato de MV descrito acima.
[00509] A Figura 44 é um diagrama para ilustrar um exemplo da primeira correspondência de padrão (correspondência bilateral) entre os dois blocos nas duas figurações de referência localizadas ao longo da trajetória de movimento. Conforme ilustrado na Figura 44, no primeiro casamento de padrão, dois vetores de movimento (MV0, MV1) são derivados estimando um par que melhor combina entre pares de dois blocos que estão incluídos nas duas figurações de referência diferentes (Ref0, Ref1) e localizados ao longo da trajetória de movimento do bloco atual (bloco Cur). Mais especificamente, uma diferença entre a imagem reconstruída em uma posição especificada na primeira figuração de referência codificada (Ref0) especificada por um candidato de MV e a imagem reconstruída em uma posição especificada na segunda figuração de referência codificada (Ref1) especificada por um MV simétrico obtido escalando o candidato de MV em um intervalo de tempo de exibição é derivado para o bloco atual e um valor de avaliação é calculado usando o valor da diferença obtida. É excelente selecionar, como o melhor MV, o candidato de MV que produz o melhor valor de avaliação entre a pluralidade de candidatos de MV.
[00510] Na suposição de uma trajetória de movimento contínuo, os vetores de movimento (MV0, MV1) especificando os dois blocos de referência são proporcionais às distâncias temporais (TD0, TD1) entre a figuração atual (Cur Pic) e as duas figurações de referência (Ref0, Ref1). Por exemplo, quando a figuração atual está temporariamente localizada entre as duas figurações de referência e as distâncias temporais da figuração atual às respectivas duas figurações de referência são iguais uma à outra, MVs bidirecionais simétricos são derivados na primeira correspondência de padrão.
[00511] Derivação de MV > FRUC > Correspondência de Modelo
[00512] Na segunda correspondência de padrões (correspondência de modelos), a correspondência de padrões é realizada entre um bloco em uma figuração de referência e um modelo na figuração atual (o modelo é um bloco vizinho ao bloco atual na figuração atual (o bloco vizinho é, por exemplo, um bloco vizinho superior e/ou esquerdo)). Consequentemente, na segunda correspondência de padrão, o bloco vizinho ao bloco atual na figuração atual é usado como a região determinada para calcular o valor de avaliação do candidato de MV descrito acima.
[00513] A Figura 45 é um diagrama para ilustrar um exemplo de correspondência de padrão (correspondência de modelo) entre um modelo em uma figuração atual e um bloco em uma figuração de referência. Conforme ilustrado na Figura 45, no segundo casamento de padrão, o MV para o bloco atual (bloco Cur) é derivado estimando, na figuração de referência (Ref0), o bloco que melhor corresponde ao bloco vizinho ao bloco atual na figuração atual (Cur Pic). Mais especificamente, a diferença entre uma imagem reconstruída em uma região codificada vizinha à esquerda e acima ou à esquerda ou acima e uma imagem reconstruída que está em uma região correspondente na figuração de referência codificada (Ref0) e é especificada por um candidato de MV é derivado, e um valor de avaliação é calculado usando o valor da diferença obtida. É excelente selecionar, como o melhor candidato de MV, o candidato de MV que produz o melhor valor de avaliação entre a pluralidade de candidatos de MV.
[00514] Essas informações que indicam se deve ser aplicado o modo de FRUC (referido como, por exemplo, um sinalizador FRUC) podem ser sinalizadas no nível de CU. Além disso, quando o modo de FRUC é aplicado (por exemplo, quando um sinalizador FRUC é verdadeiro), as informações que indicam um método de correspondência de padrão aplicável (ou a primeira correspondência de padrão ou a segunda correspondência de padrão) pode ser sinalizada no nível de CU. Deve-se notar que a sinalização dessas informações não precisa necessariamente ser realizada no nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo, nível de CTU, ou nível de sub-bloco).
[00515] Derivação de MV > Modo Afim
[00516] O modo afim é um modo para gerar um MV usando a transformação afim. Por exemplo, um MV pode ser derivado em unidades de um sub-bloco com base em vetores de movimento de uma pluralidade de blocos vizinhos. Este modo também é conhecido como modo de previsão de compensação de movimento afim.
[00517] A Figura 46A é um diagrama para ilustrar um exemplo de derivação de MV em unidades de um sub-bloco com base em MVs de uma pluralidade de blocos vizinhos. Na Figura 46A, o bloco atual inclui dezesseis sub-blocos de 4×4 pixels. Aqui, o vetor de movimento v0 em um ponto de controle do canto superior esquerdo no bloco atual é derivado com base em um MV de um bloco vizinho e, da mesma forma, o vetor de movimento v1 em um ponto de controle do canto superior direito no bloco atual é derivado com base em um MV de um sub-bloco vizinho. Dois vetores de movimento v0 e v1 são projetados de acordo com uma expressão (1A) indicada abaixo, e os vetores de movimento (vx, vy) para os respectivos sub-blocos no bloco atual são derivados
Figure img0001
[00518] Aqui, x e y indicam a posição horizontal e a posição vertical do sub-bloco, respectivamente, e w indica um coeficiente de ponderação predeterminado.
[00519] Essas informações que indicam o modo afim (por exemplo, referido como um sinalizador afim) podem ser sinalizadas no nível de CU. Deve-se notar que a sinalização dessas informações não precisa necessariamente ser realizada no nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de figuração, nível de fatia, nível de tijolo, nível de CTU, ou nível de sub-bloco).
[00520] Além disso, o modo afim pode incluir vários modos para diferentes métodos para derivar MVs nos pontos de controle de canto superior esquerdo e superior direito. Por exemplo, os modos afins incluem dois modos que são o modo inter afim (também referido como um modo internormal afim) e o modo de mesclagem afim.
[00521] A Figura 46B é um diagrama para ilustrar um exemplo de derivação de MV em unidades de um sub-bloco no modo afim no qual três pontos de controle são usados. Na Figura 46B, o bloco atual inclui, por exemplo, dezesseis sub-blocos de 4×4 pixels. Aqui, o vetor de movimento v0 em um ponto de controle do canto superior esquerdo no bloco atual é derivado com base em um MV de um bloco vizinho. Aqui, o vetor de movimento v1 em um ponto de controle do canto superior direito no bloco atual é derivado com base em um MV de um bloco vizinho e, da mesma forma, o vetor de movimento v2 em um ponto de controle do canto inferior esquerdo para o bloco atual é derivado com base em um MV de um bloco vizinho. Três vetores de movimento v0, v1 e v2 são projetados de acordo com uma expressão (1B) indicada abaixo, e os vetores de movimento (vx, vy) para os respectivos sub-blocos no bloco atual são derivados.
Figure img0002
[00522] Aqui, x e y indicam a posição horizontal e a posição vertical do sub-bloco, respectivamente, e cada um de w e h indica um coeficiente de ponderação predeterminado. Aqui, w pode indicar a largura de um bloco atual e h pode indicar a altura do bloco atual.
[00523] Os modos afins nos quais diferentes números de pontos de controle (por exemplo, dois e três pontos de controle) são usados podem ser trocados e sinalizados no nível de CU. Deve-se notar que as informações que indicam o número de pontos de controle no modo afim usados no nível de CU podem ser sinalizadas em outro nível (por exemplo, o nível de sequência, nível de figuração, nível de fatia, nível de tijolo, nível de CTU ou subnível de bloco).
[00524] Além disso, tal modo afim no qual três pontos de controle são usados pode incluir métodos diferentes para derivar MVs nos pontos de controle de canto superior esquerdo, superior direito e inferior esquerdo. Por exemplo, os modos afins em que três pontos de controle são usados incluem dois modos que são inter modo afim e modo de mesclagem afim, como no caso de modos afins em que dois pontos de controle são usados.
[00525] Deve-se notar que, nos modos afins, o tamanho de cada sub-bloco incluído no bloco atual não pode ser limitado a 4×4 pixels e pode ter outro tamanho. Por exemplo, o tamanho de cada sub-bloco pode ser de 8×8 pixels.
[00526] Derivação de MV > Modo Afim > Ponto de Controle
[00527] As Figuras 47A, 47B e 47C são, cada um, um diagrama conceitual para ilustrar um exemplo de derivação de MV em pontos de controle em um modo afim.
[00528] Conforme ilustrado na Figura 47A, no modo afim, por exemplo, os previsores MV nos respectivos pontos de controle para um bloco atual são calculados com base em uma pluralidade de MVs correspondentes aos blocos codificados de acordo com o modo afim entre o bloco codificado A (esquerda), bloco B (superior), bloco C (canto superior direito), bloco D (canto inferior esquerdo) e bloco E (canto superior esquerdo) que estão próximos ao bloco atual. Mais especificamente, o bloco codificado A (esquerda), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo) e bloco E (superior esquerdo) são verificados na ordem listada, e o primeiro bloco eficaz codificado de acordo com o modo afim é identificado. O MV em cada ponto de controle para o bloco atual é calculado com base na pluralidade de MVs correspondentes ao bloco identificado.
[00529] Por exemplo, conforme ilustrado na Figura 47B, quando o bloco A vizinho à esquerda do bloco atual foi codificado de acordo com um modo afim em que dois pontos de controle são usados, vetores de movimento v3 e v4 projetados na posição do canto superior esquerdo e no canto superior direito posição de canto do bloco codificado que inclui o bloco A são derivadas. O vetor de movimento v0 no ponto de controle superior esquerdo e o vetor de movimento v1 no ponto de controle superior direito para o bloco atual são calculados a partir dos vetores de movimento derivados v3 e v4.
[00530] Por exemplo, conforme ilustrado na Figura 47C, quando o bloco A vizinho à esquerda do bloco atual foi codificado de acordo com um modo afim no qual três pontos de controle são usados, vetores de movimento v3, v4 e v5 projetados na posição do canto superior esquerdo, a posição do canto superior direito e a posição do canto inferior esquerdo do bloco codificado que inclui o bloco A são derivadas. O vetor de movimento v0 no ponto de controle superior esquerdo para o bloco atual, o vetor de movimento v1 no ponto de controle superior direito para o bloco atual e o vetor de movimento v2 no ponto de controle inferior esquerdo para o bloco atual são então calculados a partir dos vetores de movimento derivados v3, v4 e v5.
[00531] Os métodos de derivação de MV ilustrados nas Figuras 47A a 47C podem ser usados na derivação de MV em cada ponto de controle para o bloco atual na Etapa Sk_1 ilustrada na Figura 50 descrito posteriormente, ou pode ser usado para derivação do previsor de MV em cada ponto de controle para o bloco atual na Etapa Sj_1 ilustrada na Figura 51 descrito posteriormente.
[00532] As Figuras 48A e 48B são, cada um, um diagrama conceitual para ilustrar outro exemplo de derivação de MV em pontos de controle no modo afim.
[00533] A Figura 48A é um diagrama para ilustrar um modo afim no qual dois pontos de controle são usados.
[00534] No modo afim, conforme ilustrado na Figura 48A, um MV selecionado de MVs no bloco codificado A, bloco B e bloco C vizinho ao bloco atual é usado como vetor de movimento v0 no ponto de controle do canto superior esquerdo para o bloco atual. Da mesma forma, um MV selecionado a partir de MVs do bloco codificado D e bloco E que está próximo ao bloco atual é usado como vetor de movimento v1 no ponto de controle do canto superior direito para o bloco atual.
[00535] A Figura 48B é um diagrama para ilustrar um modo afim no qual três pontos de controle são usados.
[00536] No modo afim, conforme ilustrado na Figura 48B, um MV selecionado a partir de MVs no bloco codificado A, bloco B e bloco C vizinho ao bloco atual é usado como vetor de movimento v0 no ponto de controle do canto superior esquerdo para o bloco atual. Da mesma forma, um MV selecionado a partir de MVs do bloco codificado D e bloco E que está próximo ao bloco atual é usado como vetor de movimento v1 no ponto de controle do canto superior direito para o bloco atual. Além disso, um MV selecionado a partir de MVs do bloco codificado F e bloco G que está próximo ao bloco atual é usado como vetor de movimento v2 no ponto de controle do canto esquerdo inferior para o bloco atual.
[00537] Deve ser notado que os métodos de derivação de MV ilustrados nas Figuras 48A e 48B podem ser usados na derivação de MV em cada ponto de controle para o bloco atual na Etapa Sk_1 ilustrada na Figura 50 descrito posteriormente, ou pode ser usado para derivação do previsor de MV em cada ponto de controle para o bloco atual na Etapa Sj_1 ilustrada na Figura 51 descrito posteriormente.
[00538] Aqui, quando os modos afins em que diferentes números de pontos de controle (por exemplo, dois e três pontos de controle) são usados, podem ser trocados e sinalizados no nível de CU, o número de pontos de controle para um bloco codificado e o número de pontos de controle para um bloco atual pode ser diferente um do outro.
[00539] As Figuras 49A e 49B são, cada um, um diagrama conceitual para ilustrar um exemplo de um método para derivação de MV em pontos de controle quando o número de pontos de controle para um bloco codificado e o número de pontos de controle para um bloco atual são diferentes um do outro.
[00540] Por exemplo, conforme ilustrado na Figura 49A, um bloco atual tem três pontos de controle no canto superior esquerdo, o canto superior direito e o canto inferior esquerdo, e o bloco A que fica próximo à esquerda do bloco atual foi codificado de acordo com um modo afim em quais dois pontos de controle são usados. Neste caso, os vetores de movimento v3 e v4 projetados na posição do canto superior esquerdo e a posição do canto superior direito no bloco codificado que inclui o bloco A são derivados. O vetor de movimento v0 no ponto de controle do canto superior esquerdo e o vetor de movimento v1 no ponto de controle do canto superior direito para o bloco atual são então calculados a partir dos vetores de movimento derivados v3 e v4. Além disso, o vetor de movimento v2 no ponto de controle do canto esquerdo inferior é calculado a partir dos vetores de movimento derivados v0 e v1.
[00541] Por exemplo, conforme ilustrado na Figura 49B, um bloco atual tem dois pontos de controle no canto superior esquerdo e no canto superior direito, e o bloco A que é vizinho à esquerda do bloco atual foi codificado de acordo com um modo afim no qual três pontos de controle são usados. Neste caso, os vetores de movimento v3, v4 e v5 projetados na posição do canto superior esquerdo no bloco codificado, que inclui o bloco A, a posição do canto superior direito no bloco codificado e a posição do canto inferior esquerdo em os blocos codificados são derivados. O vetor de movimento v0 no ponto de controle do canto superior esquerdo para o bloco atual e o vetor de movimento v1 no ponto de controle do canto superior direito para o bloco atual são calculados a partir dos vetores de movimento derivados v3, v4 e v5.
[00542] Deve ser notado que os métodos de derivação de MV ilustrados nas Figuras 49A e 49B podem ser usados na derivação de MV em cada ponto de controle para o bloco atual na Etapa Sk_1 ilustrada na Figura 50 descrito posteriormente, ou pode ser usado para derivação do previsor de MV em cada ponto de controle para o bloco atual na Etapa Sj_1 ilustrada na Figura 51 descrito posteriormente.
[00543] Derivação de MV > Modo Afim > Modo de Mesclagem Afim
[00544] A Figura 50 é um fluxograma que ilustra um exemplo do modo de mesclagem afim.
[00545] No modo de mesclagem afim, em primeiro lugar, o interprevisor 126 deriva MVs nos respectivos pontos de controle para um bloco atual (Etapa Sk_1). Os pontos de controle são um ponto de canto superior esquerdo do bloco atual e um ponto de canto superior direito do bloco atual, conforme ilustrado na Figura 46A, ou um ponto de canto superior esquerdo do bloco atual, um ponto de canto superior direito do bloco atual e um ponto de canto inferior esquerdo do bloco atual, como ilustrado na Figura 46B. Neste momento, o interprevisor 126 pode codificar informações de seleção de MV para identificar dois ou três MVs derivados em um fluxo
[00546] Por exemplo, quando os métodos de derivação de MV ilustrados nas Figuras 47A a 47C são usados, como ilustrado na Figura 47A, o interprevisor 126 verifica o bloco A codificado (esquerda), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo) e bloco E (superior esquerdo) na ordem listada e identifica o primeiro bloco eficaz codificado de acordo com o modo afim.
[00547] O interprevisor 126 deriva o MV no ponto de controle usando o primeiro bloco eficaz identificado codificado de acordo com o modo afim identificado. Por exemplo, quando o bloco A é identificado e o bloco A tem dois pontos de controle, conforme ilustrado na Figura 47B, o interprevisor 126 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco atual e o vetor de movimento v1 no ponto de controle do canto superior direito do bloco atual a partir dos vetores de movimento v3 e v4 no canto esquerdo superior do bloco codificado que inclui o bloco A e o canto superior direito do bloco codificado. Por exemplo, o interprevisor 126 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco atual e o vetor de movimento v1 no ponto de controle do canto superior direito do bloco atual projetando os vetores de movimento v3 e v4 em o canto superior esquerdo e o canto superior direito do bloco codificado no bloco atual.
[00548] Alternativamente, quando o bloco A é identificado e o bloco A tem três pontos de controle, como ilustrado na Figura 47C, o interprevisor 126 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco atual, o vetor de movimento v1 no ponto de controle do canto superior direito do bloco atual e o vetor de movimento v2 no canto inferior esquerdo ponto de controle de canto do bloco atual dos vetores de movimento v3, v4 e v5 no canto superior esquerdo do bloco codificado que inclui o bloco A, o canto superior direito do bloco codificado e o canto inferior esquerdo de o bloco codificado. Por exemplo, o interprevisor 126 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco atual, o vetor de movimento v1 no ponto de controle do canto superior direito do bloco atual e o vetor de movimento v2 no ponto inferior ponto de controle do canto esquerdo do bloco atual projetando vetores de movimento v3, v4 e v5 no canto superior esquerdo, canto superior direito e canto inferior esquerdo do bloco codificado no bloco atual.
[00549] Deve-se notar que, conforme ilustrado na Figura 49A descrito acima, MVs em três pontos de controle podem ser calculados quando o bloco A é identificado e o bloco A tem dois pontos de controle, e isso, conforme ilustrado na Figura 49B descrito acima, MVs em dois pontos de controle podem ser calculados quando o bloco A é identificado e o bloco A tem três pontos de controle.
[00550] Em seguida, o interprevisor 126 realiza compensação de movimento de cada um de uma pluralidade de sub-blocos incluídos no bloco atual. Em outras palavras, o interprevisor 126 calcula um MV para cada um da pluralidade de sub-blocos como um MV afim, usando dois vetores de movimento v0 e v1 e a expressão acima (1A) ou três vetores de movimento v0, v1 e v2 e a expressão acima (1B) (Etapa Sk_2). O interprevisor 126 realiza então a compensação de movimento dos sub-blocos usando esses MVs afins e figurações de referência codificadas (Etapa Sk_3). Quando os processos nas etapas Sk_2 e Sk_3 são executados para cada um dos sub-blocos incluídos no bloco atual, o processo para gerar uma imagem de previsão usando o modo de mesclagem afim para o bloco atual termina. Em outras palavras, a compensação de movimento do bloco atual é realizada para gerar uma imagem de previsão do bloco atual.
[00551] Deve-se notar que a lista de candidatos de MV descrita acima pode ser gerada na Etapa Sk_1. A lista de candidatos de MV pode ser, por exemplo, uma lista que inclui candidatos de MV derivados usando uma pluralidade de métodos de derivação de MV para cada ponto de controle. A pluralidade de métodos de derivação de MV pode ser qualquer combinação dos métodos de derivação de MV ilustrados nas Figuras 47A a 47C, os métodos de derivação de MV ilustrados nas Figuras 48A e 48B, os métodos de derivação de MV ilustrados nas Figuras 49A e 49B, e outros métodos de derivação de MV.
[00552] Deve-se notar que as listas de candidatos de MV podem incluir candidatos de MV em um modo no qual a previsão é realizada em unidades de um sub-bloco, diferente do modo afim.
[00553] Deve-se notar que, por exemplo, uma lista de candidatos de MV que inclui candidatos de MV em um modo de mesclagem afim em que dois pontos de controle são usados e um modo de mesclagem afim em que três pontos de controle são usados pode ser gerada como uma lista de candidatos de MV. Alternativamente, uma lista de candidatos de MV que inclui candidatos de MV no modo de mesclagem afim em que dois pontos de controle são usados e uma lista de candidatos de MV que inclui candidatos de MV no modo de mesclagem afim em que três pontos de controle são usados podem ser geradas separadamente. Alternativamente, uma lista de candidatos de MV que inclui candidatos de MV em um do modo de mesclagem afim em que dois pontos de controle são usados e o modo de mesclagem afim em que três pontos de controle são usados pode ser gerada. O candidato (ou candidatos) de MV podem ser, por exemplo, MVs para o bloco codificado A (esquerda), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo) e bloco E (superior esquerdo), ou um MV para um bloco eficaz entre os blocos.
[00554] Deve-se notar que o índice que indica um dos MVs em uma lista de candidatos de MV pode ser transmitido como informações de seleção MV.
[00555] Derivação de MV > Modo Afim > Modo Inter Afim
[00556] A Figura 51 é um fluxograma que ilustra um exemplo de um modo interno afim
[00557] No modo inter afim, primeiro, o interprevisor 126 deriva previsores MV (v0, v1) ou (v0, v1, v2) dos respectivos dois ou três pontos de controle para um bloco atual (Etapa Sj_1). Os pontos de controle são um ponto de canto superior esquerdo para o bloco atual, um ponto de canto superior direito do bloco atual e um ponto de canto inferior esquerdo para o bloco atual, conforme ilustrado na Figura 46A ou Figura 46B.
[00558] Por exemplo, quando os métodos de derivação de MV ilustrados nas Figuras 48A e 48B são usados, o interprevisor 126 deriva os previsores MV (v0, v1) ou (v0, v1, v2) nos respectivos dois ou três pontos de controle para o bloco atual selecionando MVs de qualquer um dos blocos entre blocos codificados na vizinhança dos respectivos pontos de controle para o bloco atual ilustrado em qualquer das Figura 48A ou Figura 48B. Neste momento, o interprevisor 126 codifica, em um fluxo, informações de seleção do previsor MV para identificar os dois ou três previsores MV selecionados.
[00559] Por exemplo, o interprevisor 126 pode determinar, usando uma avaliação de custo ou semelhante, o bloco a partir do qual um MV como um previsor de MV em um ponto de controle é selecionado dentre os blocos codificados próximos ao bloco atual e pode escrever, em um fluxo de bits, um sinalizador que indica qual previsor de MV foi selecionado. Em outras palavras, o interprevisor 126 emite, como um parâmetro de previsão, as informações de seleção do previsor MV, como um sinalizador para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130.
[00560] Em seguida, o interprevisor 126 realiza estimativa de movimento (Etapas Sj_3 e Sj_4) enquanto atualiza o previsor MV selecionado ou derivado na Etapa Sj_1 (Etapa Sj_2). Em outras palavras, o interprevisor 126 calcula, como um MV afim, um MV de cada um dos sub-blocos que corresponde a um previsor MV atualizado, usando a expressão (1A) ou a expressão (1B) descrita acima (Etapa Sj_3). O interprevisor 126 realiza então a compensação de movimento dos sub-blocos usando esses MVs afins e figurações de referência codificadas (Etapa Sj_4). Os processos nas etapas Sj_3 e Sj_4 são executados em todos os blocos no bloco atual cada vez que um previsor de MV é atualizado na etapa Sj_2. Como resultado, por exemplo, o interprevisor 126 determina o previsor MV que produz o menor custo como o MV em um ponto de controle em um loop de estimativa de movimento (Etapa Sj_5). Neste momento, o interprevisor 126 codifica ainda, no fluxo, o valor de diferença entre o MV determinado e o previsor de MV como uma diferença de MV. Em outras palavras, o interprevisor 126 emite a diferença de MV como um parâmetro de previsão para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130.
[00561] Por último, o interprevisor 126 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV determinado e a figuração de referência codificada (Etapa Sj_6).
[00562] Deve-se notar que a lista de candidatos de MV descrita acima pode ser gerada na Etapa Sj_1. A lista de candidatos de MV pode ser, por exemplo, uma lista que inclui candidatos de MV derivados usando uma pluralidade de métodos de derivação de MV para cada ponto de controle. A pluralidade de métodos de derivação de MV pode ser qualquer combinação dos métodos de derivação de MV ilustrados nas Figuras 47A a 47C, os métodos de derivação de MV ilustrados nas Figuras 48A e 48B, os métodos de derivação de MV ilustrados nas Figuras 49A e 49B, e outros métodos de derivação de MV.
[00563] Deve-se notar que a lista de candidatos de MV pode incluir candidatos de MV em um modo no qual a previsão é realizada em unidades de um sub-bloco, diferente do modo afim.
[00564] Deve-se notar que, por exemplo, uma lista de candidatos de MV que inclui candidatos de MV em um modo inter afim em que dois pontos de controle são usados e um modo inter afim no qual três pontos de controle são usados pode ser gerada como uma lista de candidatos de MV. Alternativamente, uma lista de candidatos de MV que inclui candidatos de MV no modo inter afim em que dois pontos de controle são usados e uma lista de candidatos de MV que inclui candidatos de MV no modo inter afim em que três pontos de controle são usados podem ser geradas separadamente. Alternativamente, uma lista de candidatos de MV que inclui candidatos de MV em um do modo inter afim em que dois pontos de controle são usados e o modo inter afim no qual três pontos de controle são usados pode ser gerada. O candidato (ou candidatos) de MV podem ser, por exemplo, MVs para o bloco codificado A (esquerda), bloco B (superior), bloco C (superior direito), bloco D (inferior esquerdo) e bloco E (superior esquerdo), ou um MV para um bloco eficaz entre os blocos.
[00565] Deve-se notar que o índice que indica um dos candidatos de MV em uma lista de candidatos de MV pode ser transmitido como informações de seleção do previsor MV.
[00566] Derivação de MV > Modo Triangular
[00567] O interprevisor 126 gera uma imagem de previsão retangular para um bloco atual retangular no exemplo acima. No entanto, o interprevisor 126 pode gerar uma pluralidade de imagens de previsão, cada uma tendo uma forma diferente de um retângulo para o bloco atual retangular, e pode combinar a pluralidade de imagens de previsão para gerar a imagem de previsão retangular final. O formato diferente de um retângulo pode ser, por exemplo, um triângulo.
[00568] A Figura 52A é um diagrama para ilustrar a geração de duas imagens de previsão triangulares.
[00569] O interprevisor 126 gera uma imagem de previsão triangular realizando compensação de movimento de uma primeira partição tendo um formato triangular em um bloco atual usando um primeiro MV da primeira partição, para gerar uma imagem de previsão triangular. Da mesma forma, o interprevisor 126 gera uma imagem de previsão triangular realizando compensação de movimento de uma segunda partição tendo um formato triangular em um bloco atual usando um segundo MV da segunda partição, para gerar uma imagem de previsão triangular. O interprevisor 126, então, gera uma imagem de previsão com a mesma forma retangular que a forma retangular do bloco atual combinando essas imagens de previsão.
[00570] Deve-se notar que uma primeira imagem de previsão com uma forma retangular correspondente a um bloco atual pode ser gerada como uma imagem de previsão para uma primeira partição, usando um primeiro MV. Além disso, uma segunda imagem de previsão com uma forma retangular correspondente a um bloco atual pode ser gerada como uma imagem de previsão para uma segunda partição, usando um segundo MV. Uma imagem de previsão para o bloco atual pode ser gerada realizando uma adição ponderada da primeira imagem de previsão e da segunda imagem de previsão. Deve-se notar que a parte que está sujeita à adição ponderada pode ser uma região parcial através do limite entre a primeira partição e a segunda partição.
[00571] A Figura 52B é um diagrama conceitual para ilustrar exemplos de uma primeira porção de uma primeira partição que se sobrepõe a uma segunda partição e primeiro e segundo conjuntos de amostras que podem ser ponderados como parte de um processo de correção. A primeira porção pode ser, por exemplo, um quarto da largura ou altura da primeira partição. Em outro exemplo, a primeira porção pode ter uma largura correspondente a N amostras adjacentes a uma borda da primeira partição, onde N é um número inteiro maior que zero, e N pode ser, por exemplo, o número inteiro 2. Conforme ilustrado, o exemplo esquerdo da Figura 52B mostra uma partição retangular tendo uma porção retangular com uma largura que é um quarto da largura da primeira partição, com o primeiro conjunto de amostras que inclui amostras fora da primeira porção e amostras dentro da primeira porção, e o segundo conjunto de amostras que inclui amostras dentro da primeira porção. O exemplo central da Figura 52B mostra uma partição retangular tendo uma porção retangular com uma altura que é um quarto da altura da primeira partição, com o primeiro conjunto de amostras que inclui amostras fora da primeira porção e amostras dentro da primeira porção, e o segundo conjunto de amostras que inclui amostras dentro da primeira porção. O exemplo certo da Figura 52B mostra uma partição triangular tendo uma porção poligonal com uma altura que corresponde a duas amostras, com o primeiro conjunto de amostras que inclui amostras fora da primeira porção e amostras dentro da primeira porção, e o segundo conjunto de amostras que inclui amostras dentro da primeira porção.
[00572] A primeira porção pode ser uma porção da primeira partição que se sobrepõe a uma partição adjacente. A Figura 52C é um diagrama conceitual para ilustrar uma primeira porção de uma primeira partição, que é uma porção da primeira partição que se sobrepõe a uma porção de uma partição adjacente. Para facilidade de ilustração, é mostrada uma partição retangular tendo uma porção sobreposta com uma partição retangular espacialmente adjacente. Podem ser empregues partições com outros formatos, como partições triangulares, e as porções sobrepostas podem sobrepor-se a uma partição espacial ou temporalmente adjacente.
[00573] Além disso, embora seja dado um exemplo em que uma imagem de previsão é gerada para cada uma das duas partições usando interprevisão, uma imagem de previsão pode ser gerada para pelo menos uma partição usando intraprevisão.
[00574] A Figura 53 é um fluxograma que ilustra um exemplo de um modo de triângulo
[00575] No modo triângulo, primeiro, o interprevisor 126 divide o bloco atual na primeira partição e na segunda partição (Etapa Sx_1). Neste momento, o interprevisor 126 pode codificar, em um fluxo, informações de partição que são informações relacionadas à divisão nas partições como um parâmetro de previsão. Em outras palavras, o interprevisor 126 pode emitir as informações de partição como o parâmetro de previsão para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130.
[00576] Em primeiro lugar, o interprevisor 126 obtém uma pluralidade de candidatos de MV para um bloco atual com base em informações, como MVs de uma pluralidade de blocos codificados temporalmente ou espacialmente circundando o bloco atual (Etapa Sx_2). Em outras palavras, o interprevisor 126 gera uma lista de candidatos de MV.
[00577] O interprevisor 126, então, seleciona o candidato de MV para a primeira partição e o candidato de MV para a segunda partição como um primeiro MV e um segundo MV, respectivamente, a partir da pluralidade de candidatos de MV obtidos na Etapa Sx_2 (Etapa Sx_3). Neste momento, o interprevisor 126 codifica, em um fluxo, informações de seleção de MV para identificar o candidato de MV selecionado, como um parâmetro de previsão. Em outras palavras, o interprevisor 126 emite as informações de seleção de MV como um parâmetro de previsão para o codificador por entropia 110 por meio do gerador de parâmetro de previsão 130.
[00578] Em seguida, o interprevisor 126 gera uma primeira imagem de previsão realizando compensação de movimento usando o primeiro MV selecionado e uma figuração de referência codificada (Etapa Sx_4). Da mesma forma, o interprevisor 126 gera uma segunda imagem de previsão realizando compensação de movimento usando o segundo MV selecionado e uma figuração de referência codificada (Etapa Sx_5).
[00579] Por último, o interprevisor 126 gera uma imagem de previsão para o bloco atual realizando uma adição ponderada da primeira imagem de previsão e da segunda imagem de previsão (Etapa Sx_6).
[00580] Deve-se notar que, embora a primeira partição e a segunda partição sejam triângulos no exemplo ilustrado na Figura 52A, a primeira partição e a segunda partição podem ser trapézios ou outros formatos diferentes umas das outras. Além disso, embora o bloco atual inclua duas partições no exemplo ilustrado na Figura 52A, o bloco atual pode incluir três ou mais partições.
[00581] Além disso, a primeira partição e a segunda partição podem se sobrepor. Em outras palavras, a primeira partição e a segunda partição podem incluir a mesma região de pixel. Neste caso, uma imagem de previsão para um bloco atual pode ser gerada usando uma imagem de previsão na primeira partição e uma imagem de previsão na segunda partição.
[00582] Além disso, embora o exemplo no qual a imagem de previsão é gerada para cada uma das duas partições usando interprevisão tenha sido ilustrado, uma imagem de previsão pode ser gerada para pelo menos uma partição usando intraprevisão.
[00583] Deve-se notar que a lista de candidatos de MV para selecionar o primeiro MV e a lista de candidatos de MV para selecionar o segundo MV podem ser diferentes entre si, ou a lista de candidatos de MV para selecionar o primeiro MV também pode ser usada como o candidato de MV lista para selecionar o segundo MV.
[00584] Deve-se notar que as informações de partição podem incluir um índice indicando a direção de divisão em que pelo menos um bloco atual é dividido em uma pluralidade de partições. As informações de seleção de MV podem incluir um índice indicando o primeiro MV selecionado e um índice indicando o segundo MV selecionado. Um índice pode indicar uma pluralidade de informações. Por exemplo, um índice que indica coletivamente uma parte ou a totalidade das informações de partição e uma parte ou a totalidade das informações de seleção de MV podem ser codificados.
[00585] Derivação de MV> Modo de ATMVP
[00586] A Figura 54 é um diagrama que ilustra um exemplo de um modo de ATMVP no qual um MV é derivado em unidades de um subbloco.
[00587] O modo de ATMVP é um modo categorizado no modo de mesclagem. Por exemplo, no modo de ATMVP, um candidato de MV para cada sub-bloco é registrado em uma lista de candidatos de MV para uso no modo de mesclagem normal.
[00588] Mais especificamente, no modo de ATMVP, primeiro, conforme ilustrado na Figura 54, um bloco de referência MV temporal associado a um bloco atual é identificado em uma figuração de referência codificada especificada por um MV (MV0) de um bloco vizinho localizado na posição inferior esquerda em relação ao bloco atual. A seguir, em cada sub-bloco no bloco atual, o MV usado para codificar a região correspondente ao sub-bloco no bloco de referência temporal MV é identificado. O MV identificado desta forma é incluído em uma lista de candidatos de MV como um candidato de MV para o sub-bloco no bloco atual. Quando o candidato de MV para cada subbloco é selecionado da lista de candidatos de MV, o sub-bloco é submetido à compensação de movimento na qual o candidato de MV é usado como o MV para o sub-bloco. Desta forma, uma imagem de previsão para cada sub-bloco é gerada.
[00589] Embora o bloco localizado na posição inferior esquerda em relação ao bloco atual seja usado como um bloco de referência MV circundante no exemplo ilustrado na Figura 54, deve-se notar que outro bloco pode ser usado. Além disso, o tamanho do sub-bloco pode ser 4×4 pixels, 8×8 pixels ou outro tamanho. O tamanho do sub-bloco pode ser alterado para uma unidade, como uma fatia, tijolo, figuração, etc.
[00590] Estimativa de movimento > DMVR
[00591] A Figura 55 é um diagrama que ilustra uma relação entre um modo de mesclagem e DMVR.
[00592] O interprevisor 126 deriva um MV para um bloco atual de acordo com o modo de mesclagem (Etapa Sl_1). Em seguida, o interprevisor 126 determina se deve realizar a estimativa de um MV que é estimativa de movimento (Etapa Sl_2). Aqui, ao determinar a não realização da estimativa de movimento (Não na Etapa Sl_2), o interprevisor 126 determina o MV derivado na Etapa Sl_1 como o MV final para o bloco atual (Etapa Sl_4). Em outras palavras, neste caso, o MV para o bloco atual é determinado de acordo com o modo de mesclagem.
[00593] Ao determinar a realização da estimativa de movimento na Etapa Sl_1 (Sim na Etapa Sl_2), o interprevisor 126 deriva o MV final para o bloco atual estimando uma região circundante da figuração de referência especificada pelo MV derivado na Etapa Sl_1 (Etapa Sl_3). Ou seja, neste caso, o MV para o bloco atual é determinado de acordo com o DMVR.
[00594] A Figura 56 é um diagrama conceitual para ilustrar outro exemplo de DMVR para determinar um MV.
[00595] Primeiro, no modo de mesclagem, por exemplo, os candidatos de MV (L0 e L1) são selecionados para o bloco atual. Um pixel de referência é identificado a partir de uma primeira figuração de referência (L0) que é uma figuração codificada na lista L0 de acordo com o candidato de MV (L0). Da mesma forma, um pixel de referência é identificado a partir de uma segunda figuração de referência (L1) que é uma figuração codificada na lista L1 de acordo com o candidato de MV (L1). Um modelo é gerado calculando uma média desses pixels de referência.
[00596] Em seguida, cada uma das regiões circundantes de candidatos de MV da primeira figuração de referência (L0) e da segunda figuração de referência (L1) são estimados usando o modelo, e o MV que produz o menor custo é determinado como o MV final. Deve-se notar que o custo pode ser calculado, por exemplo, usando um valor de diferença entre cada um dos valores de pixel no modelo e um correspondente dos valores de pixel na região de estimativa, os valores de candidatos de MV, etc.
[00597] Exatamente os mesmos processos descritos aqui nem sempre precisam ser realizados. Qualquer processo para permitir a derivação do MV final por estimativa em regiões circundantes de candidatos de MV pode ser usado.
[00598] A Figura 57 é um diagrama conceitual para ilustrar outro exemplo de DMVR para determinar um MV. Ao contrário do exemplo de DMVR ilustrado na Figura 56, no exemplo ilustrado na Figura 57, os custos são calculados sem gerar qualquer modelo.
[00599] Em primeiro lugar, o interprevisor 126 estima uma região circundante de um bloco de referência incluído em cada uma das figurações de referência na lista L0 e lista L1, com base em um MV inicial que é um candidato de MV obtido de cada lista de candidatos de MV. Por exemplo, conforme ilustrado na Figura 57, o MV inicial correspondente ao bloco de referência na lista L0 é InitMV_L0, e o MV inicial correspondente ao bloco de referência na lista L1 é InitMV_L1. Na estimativa de movimento, o interprevisor 126 primeiro define uma posição de busca para a figuração de referência na lista L0. Com base na posição indicada pela diferença do vetor que indica a posição de pesquisa a ser definida, especificamente, o MV inicial (isto é, InitMV_L0), a diferença do vetor para a posição de pesquisa é MVd_L0. O interprevisor 126 determina então a posição de estimativa na figuração de referência na lista L1. Esta posição de pesquisa é indicada pela diferença do vetor para a posição de pesquisa da posição indicada pelo MV inicial (isto é, InitMV_L1). Mais especificamente, o interprevisor 126 determina a diferença do vetor como MVd_L1 por espelhamento de MVd_L0. Em outras palavras, o interprevisor 126 determina a posição que é simétrica em relação à posição indicada pelo MV inicial para ser a posição de pesquisa em cada figuração de referência na lista L0 e na lista L1. O interprevisor 126 calcula, para cada posição de pesquisa, a soma total das diferenças absolutas (SADs) entre os valores dos pixels nas posições de pesquisa em blocos como um custo e descobre a posição de pesquisa que produz o menor custo.
[00600] A Figura 58A é um diagrama que ilustra um exemplo de estimativa de movimento em DMVR e a Figura 58B é um fluxograma que ilustra um exemplo da estimativa de movimento.
[00601] Em primeiro lugar, na Etapa 1, o interprevisor 126 calcula o custo entre a posição de pesquisa (também referida como um ponto de partida) indicada pelo MV inicial e oito posições de pesquisa circundantes. O interprevisor 126, então, determina se o custo em cada uma das posições de pesquisa diferente do ponto de partida é o menor. Aqui, ao determinar que o custo na posição de pesquisa diferente do ponto de partida é o menor, o interprevisor 126 muda um alvo para a posição de pesquisa na qual o menor custo é obtido e realiza o processo na Etapa 2. Quando o custo no ponto de partida é o menor, o interprevisor 126 ignora o processo na Etapa 2 e realiza o processo na Etapa 3.
[00602] Na Etapa 2, o interprevisor 126 realiza a pesquisa semelhante ao processo na Etapa 1, considerando, como um novo ponto de partida, a posição de pesquisa após a mudança de alvo de acordo com o resultado do processo na Etapa 1. O interprevisor 126, então, determina se o custo em cada uma das posições de pesquisa diferente do ponto de partida é o menor. Aqui, ao determinar que o custo na posição de busca diferente do ponto de partida é o menor, o interprevisor 126 realiza o processo na Etapa 4. Quando o custo no ponto de partida é o menor, o interprevisor 126 realiza o processo na Etapa 3.
[00603] Na Etapa 4, o interprevisor 126 considera a posição de pesquisa no ponto inicial como a posição de pesquisa final e determina a diferença entre a posição indicada pelo MV inicial e a posição de pesquisa final como uma diferença vetorial.
[00604] Na Etapa 3, o interprevisor 126 determina a posição do pixel na precisão do subpixel em que o menor custo é obtido, com base nos custos nos quatro pontos localizados nas posições superior, inferior, esquerda e direita em relação ao ponto inicial em Etapa 1 ou Etapa 2 e considera a posição do pixel como a posição de pesquisa final. A posição do pixel na precisão do subpixel é determinada realizando a adição ponderada de cada um dos quatro vetores superior, inferior, esquerdo e direito ((0, 1), (0, -1), (-1, 0), e (1, 0)), usando, como peso, o custo em uma das quatro posições de busca correspondente. O interprevisor 126 determina então a diferença entre a posição indicada pelo MV inicial e a posição de pesquisa final como sendo a diferença do vetor.
[00605] Compensação de movimento > BIO/OBMC/LIC
[00606] A compensação de movimento envolve um modo para gerar uma imagem de previsão e corrigir a imagem de previsão. O modo é, por exemplo, BIO, OBMC e LIC a ser descrito posteriormente.
[00607] A Figura 59 é um fluxograma que ilustra um exemplo de geração de uma imagem de previsão.
[00608] O interprevisor 126 gera uma imagem de previsão (Etapa Sm_1) e corrige a imagem de previsão de acordo com qualquer um dos modos descritos acima (Etapa Sm_2).
[00609] A Figura 60 é um fluxograma que ilustra outro exemplo de geração de uma imagem de previsão.
[00610] O interprevisor 126 deriva um MV de um bloco atual (Etapa Sn_1). Em seguida, o interprevisor 126 gera uma imagem de previsão usando o MV (Etapa Sn_2) e determina se deve realizar um processo de correção (Etapa Sn_3). Aqui, ao determinar a realização de um processo de correção (Sim na Etapa Sn_3), o interprevisor 126 gera a imagem de previsão final corrigindo a imagem de previsão (Etapa Sn_4). Deve-se notar que, no LIC descrito posteriormente, a luminância e a crominância podem ser corrigidas na Etapa Sn_4. Ao determinar não realizar um processo de correção (Não na Etapa Sn_3), o interprevisor 126 emite a imagem de previsão como a imagem de previsão final sem corrigir a imagem de previsão (Etapa Sn_5).
[00611] Compensação de movimento > OBMC
[00612] Deve-se notar que uma imagem de interprevisão pode ser gerada usando informações de movimento para um bloco vizinho, além de informações de movimento para o bloco atual obtidas por estimativa de movimento. Mais especificamente, uma imagem de interprevisão pode ser gerada para cada sub-bloco em um bloco atual realizando a adição ponderada de uma imagem de previsão com base nas informações de movimento obtidas por estimativa de movimento (em uma figuração de referência) e uma imagem de previsão com base nas informações de movimento do bloco vizinho (na figuração atual). Tal interprevisão (compensação de movimento) também é conhecida como compensação de movimento de bloco sobreposto (OBMC) ou um modo OBMC.
[00613] No modo OBMC, as informações que indicam um tamanho de sub-bloco para OBMC (referido como, por exemplo, um tamanho de bloco OBMC) podem ser sinalizadas no nível de sequência. Além disso, as informações que indicam se deve ser aplicado o modo OBMC (referido como, por exemplo, um sinalizador OBMC) podem ser sinalizadas no nível de CU. Deve-se notar que a sinalização dessas informações não precisa necessariamente ser realizada no nível de sequência e nível de CU, e pode ser realizada em outro nível (por exemplo, no nível de figuração, nível de fatia, nível de tijolo, nível de CTU, ou nível de sub-bloco).
[00614] O modo OBMC será descrito em mais detalhes. As Figuras 61 e 62 são um fluxograma e um diagrama conceitual para ilustrar um esboço de um processo de correção de imagem de previsão realizado por OBMC.
[00615] Primeiro, conforme ilustrado na Figura 62, uma imagem de previsão (Pred) por compensação de movimento normal é obtida usando um MV atribuído a um bloco atual. Na Figura 62, a seta "MV" aponta uma figuração de referência e indica a que o bloco atual da figuração atual se refere a fim de obter a imagem de previsão.
[00616] Em seguida, uma imagem de previsão (Pred_L) é obtida aplicando um vetor de movimento (MV_L) que já foi derivado para o bloco codificado vizinho à esquerda do bloco atual para o bloco atual (reutilizando o vetor de movimento para o bloco atual) O vetor de movimento (MV_L) é indicado por uma seta "MV_L" indicando uma figuração de referência de um bloco atual. Uma primeira correção de uma imagem de previsão é realizada pela sobreposição de duas imagens de previsão Pred e Pred_L. Isso fornece um efeito de mesclar a fronteira entre os blocos vizinhos.
[00617] Da mesma forma, uma imagem de previsão (Pred_U) é obtida aplicando um MV (MV_U) que já foi derivado para o bloco codificado vizinho acima do bloco atual para o bloco atual (reutilizando o MV para o bloco atual). O MV (MV_U) é indicado por uma seta "MV_U" indicando uma figuração de referência de um bloco atual. Uma segunda correção de uma imagem de previsão é realizada sobrepondo a imagem de previsão Pred_U às imagens de previsão (por exemplo, Pred e Pred_L) nas quais a primeira correção foi realizada. Isso fornece um efeito de mesclar a fronteira entre os blocos vizinhos. A imagem de previsão obtida pela segunda correção é aquela em que a fronteira entre os blocos vizinhos foi mesclada (suavizada) e, portanto, é a imagem de previsão final do bloco atual.
[00618] Embora o exemplo acima seja um método de correção de dois caminhos usando blocos vizinhos esquerdo e superior, deve-se notar que o método de correção pode ser um método de correção de três ou mais caminhos usando também o bloco vizinho direito e/ou o bloco vizinho inferior.
[00619] Deve-se notar que a região em que tal sobreposição é realizada pode ser apenas parte de uma região próxima a um limite de bloco em vez da região de pixel de todo o bloco.
[00620] Deve-se notar que o processo de correção da imagem de previsão de acordo com OBMC para obter uma imagem de previsão Pred de uma figuração de referência por sobreposição de imagens de previsão adicionais Pred_L e Pred_U foi descrito acima. No entanto, quando uma imagem de previsão é corrigida com base em uma pluralidade de figurações de referência, um processo semelhante pode ser aplicado a cada uma da pluralidade de figurações de referência. Em tal caso, após as imagens de previsão corrigidas serem obtidas das respectivas figurações de referência realizando correção de imagem OBMC com base na pluralidade de figurações de referência, as imagens de previsão corrigidas obtidas são ainda sobrepostas para obter a imagem de previsão final.
[00621] Deve-se notar que, em OBMC, uma unidade de bloco atual pode ser um PU ou uma unidade de sub-bloco obtida por divisão adicional do PU.
[00622] Um exemplo de um método para determinar se deve aplicar OBMC é um método para usar um obmc_flag que é um sinal que indica se deve aplicar OBMC. Como um exemplo específico, o codificador 100 pode determinar se o bloco atual pertence a uma região com movimento complicado. O codificador 100 define o obmc_flag para um valor de "1" quando o bloco pertence a uma região com movimento complicado e aplica OBMC durante a codificação, e define o obmc_flag para um valor de "0" quando o bloco não pertence a uma região complicada movimento e codifica o bloco sem aplicar OBMC. O decodificador 200 alterna entre a aplicação e a não aplicação do OBMC decodificando o obmc_flag escrito em um fluxo.
[00623] Compensação de movimento > BIO
[00624] A seguir, um método de derivação de MV é descrito. Em primeiro lugar, é descrito um modo para derivar um MV com base em um modelo que assume movimento linear uniforme. Este modo também é conhecido como modo de fluxo ótico bidirecional (BIO). Além disso, este fluxo óptico bidirecional pode ser escrito como BDOF em vez de BIO.
[00625] A Figura 63 é um diagrama para ilustrar um modelo que assume movimento linear uniforme. Na Figura 63, (vx, vy) indica um vetor de velocidade e τ0 e τ1 indicam distâncias temporais entre uma figuração atual (Cur Pic) e duas figurações de referência (Ref0, Ref1). (MVx0, MVy0) indica um MV correspondente à figuração de referência Ref0, e (MVx1, MVy1) indica um MV correspondente à figuração de referência Ref1.
[00626] Aqui, sob a suposição de movimento linear uniforme exibido por um vetor de velocidade (vx, vy), (MVx0, MVy0) e (MVx1, MVy1) são representados como (vxτ0, vyτ0) e (−vxτ1, −vyτ1), respectivamente, e a seguinte equação de fluxo óptico (2) é fornecida.
Figure img0003
[00627] Aqui, I(k) denota um valor de luma da figuração de referência k (k = 0, 1) após a compensação de movimento. Esta equação de fluxo óptico mostra que a soma de (i) o tempo derivado do valor de luma, (ii) o produto da velocidade horizontal e o componente horizontal do gradiente espacial de uma figuração de referência, e (iii) o produto da velocidade vertical e do componente vertical do gradiente espacial de uma figuração de referência é igual a zero. Um vetor de movimento de cada bloco obtido a partir de, por exemplo, uma lista de candidatos de MV pode ser corrigido em unidades de um pixel, com base em uma combinação da equação de fluxo óptico e interpolação de Hermite.
[00628] Deve-se notar que um vetor de movimento pode ser derivado no lado do decodificador 200 usando um método diferente de derivar um vetor de movimento com base em um modelo que assume movimento linear uniforme. Por exemplo, um vetor de movimento pode ser derivado em unidades de um sub-bloco com base em MVs de uma pluralidade de blocos vizinhos.
[00629] A Figura 64 é um fluxograma que ilustra um exemplo de interprevisão de acordo com BIO. A Figura 65 é um diagrama que ilustra um exemplo de uma configuração funcional do interprevisor 126 que realiza interprevisão de acordo com BIO.
[00630] Conforme ilustrado na Figura 65, o interprevisor 126 inclui, por exemplo, memória 126a, derivador de imagem interpolada 126b, derivador de imagem de gradiente 126c, derivador de fluxo óptico 126d, derivador de valor de correção 126e e corretor de imagem de previsão 126f. Deve-se notar que a memória 126a pode ser memória de quadro 122.
[00631] O interprevisor 126 deriva dois vetores de movimento (M0, M1), usando duas figurações de referência (Ref0, Ref1) diferentes da figuração (Cur Pic) que inclui um bloco atual. O interprevisor 126 então deriva uma imagem de previsão para o bloco atual usando os dois vetores de movimento (M0, M1) (Etapa Sy_1). Deve-se notar que o vetor de movimento M0 é o vetor de movimento (MVx0, MVy0) correspondendo à figuração de referência Ref0, e o vetor de movimento M1 é o vetor de movimento (MVx1, MVy1) correspondendo à figuração de referência Ref1.
[00632] Em seguida, o derivador de imagem interpolada 126b deriva a imagem interpolada I0 para o bloco atual, usando o vetor de movimento M0 e a figuração de referência L0 referindo-se à memória 126a. Em seguida, o derivador de imagem interpolada 126b deriva a imagem interpolada I1 para o bloco atual, usando o vetor de movimento M1 e a figuração de referência L1 referindo-se à memória 126a (Etapa Sy_2). Aqui, a imagem interpolada I0 é uma imagem incluída na figuração de referência Ref0 e a ser derivada para o bloco atual, e a imagem interpolada I1 é uma imagem incluída na figuração de referência Ref1 e a ser derivada para o bloco atual. Cada imagem interpolada I0 e imagem interpolada I1 podem ter o mesmo tamanho que o bloco atual. Alternativamente, cada imagem interpolada I0 e imagem interpolada I1 pode ser uma imagem maior do que o bloco atual. Além disso, a imagem interpolada I0 e a imagem interpolada I1 podem incluir uma imagem de previsão obtida usando vetores de movimento (M0, M1) e figurações de referência (L0, L1) e aplicando um filtro de compensação de movimento.
[00633] Além disso, o derivador de imagem de gradiente 126c deriva imagens de gradiente (Ix0, Ix1, Iy0, Iy1) do bloco atual, a partir da imagem interpolada I0 e da imagem interpolada I1. Deve-se notar que as imagens de gradiente na direção horizontal são (Ix0, Ix1), e as imagens de gradiente na direção vertical são (Iy0, Iy1). O derivador de imagem de gradiente 126c pode derivar cada imagem de gradiente, por exemplo, aplicando um filtro de gradiente às imagens interpoladas. É apenas necessário que uma imagem de gradiente indique a quantidade de mudança espacial no valor do pixel ao longo da direção horizontal ou vertical.
[00634] Em seguida, o derivador de fluxo óptico 126d deriva, para cada sub-bloco do bloco atual, um fluxo óptico (vx, vy) que é um vetor de velocidade, usando as imagens interpoladas (I0, I1) e as imagens de gradiente (Ix0, Ix1, Iy0, Iy1). O fluxo óptico indica coeficientes para corrigir a quantidade de movimento de pixel espacial e pode ser referido como um valor de estimativa de movimento local, um vetor de movimento corrigido ou um vetor de ponderação corrigido. Como um exemplo, um sub-bloco pode ser um sub-CU de 4×4 pixels. Deve-se notar que a derivação do fluxo óptico pode ser realizada para cada unidade de pixel, ou semelhante, em vez de ser realizada para cada sub-bloco.
[00635] Em seguida, o interprevisor 126 corrige uma imagem de previsão para o bloco atual usando o fluxo óptico (vx, vy). Por exemplo, o valor de correção derivado 126e deriva um valor de correção para o valor de um pixel incluído em um bloco atual, usando o fluxo óptico (vx, vy) (Etapa Sy_5). O corretor de imagem de previsão 126f pode, então, corrigir a imagem de previsão para o bloco atual usando o valor de correção (Etapa Sy_6). Deve-se notar que o valor de correção pode ser derivado em unidades de um pixel, ou pode ser derivado em unidades de uma pluralidade de pixels ou em unidades de um sub-bloco.
[00636] Deve-se notar que o fluxo de processo BIO não está limitado ao processo descrito na Figura 64. Apenas parte dos processos descritos na Figura 64 pode ser realizado, ou um processo diferente pode ser adicionado ou usado como uma substituição, ou os processos podem ser executados em uma ordem de processamento diferente.
[00637] Compensação de movimento > LIC
[00638] A seguir, um exemplo de um modo para gerar uma imagem de previsão (previsão) usando uma compensação de iluminação local (LIC) é descrito.
[00639] A Figura 66A é um diagrama para ilustrar um exemplo de um método de geração de imagem de previsão usando um processo de correção de luminância realizado por LIC. A Figura 66B é um fluxograma que ilustra um exemplo de um método de geração de imagem de previsão usando o LIC.
[00640] Em primeiro lugar, o interprevisor 126 deriva um MV de uma figuração de referência codificada e obtém uma figuração de referência correspondente ao bloco atual (Etapa Sz_1).
[00641] Em seguida, o interprevisor 126 extrai, para o bloco atual, informações que indicam como o valor de luma mudou entre o bloco atual e a figuração de referência (Etapa Sz_2). Esta extração é realizada com base nos valores de pixel luma da região de referência vizinha esquerda codificada (região de referência circundante) e a região de referência vizinha superior codificada (região de referência circundante) na figuração atual e os valores de pixel luma nas posições correspondentes na figuração de referência especificada pelos MVs derivados. O interprevisor 126 calcula um parâmetro de correção de luminância, usando as informações que indicam como o valor de luma mudou (Etapa Sz_3).
[00642] O interprevisor 126 gera uma imagem de previsão para o bloco atual realizando um processo de correção de luminância no qual o parâmetro de correção de luminância é aplicado à figuração de referência na figuração de referência especificada pelo MV (Etapa Sz_4). Em outras palavras, a imagem de previsão que é a figuração de referência na figuração de referência especificada pelo MV é submetida à correção com base no parâmetro de correção de luminância. Nessa correção, a luminância pode ser corrigida ou a crominância pode ser corrigida. Em outras palavras, um parâmetro de correção de crominância pode ser calculado usando informações que indicam como a crominância mudou e um processo de correção de crominância pode ser realizado
[00643] Deve-se notar que a forma da região de referência circundante ilustrada na Figura 66A é um exemplo; outra forma pode ser usada.
[00644] Além disso, embora o processo no qual uma imagem de previsão é gerada a partir de uma única figuração de referência tenha sido descrito aqui, os casos em que uma imagem de previsão é gerada a partir de uma pluralidade de figurações de referência podem ser descritos da mesma maneira. A imagem de previsão pode ser gerada após a realização de um processo de correção de luminância das figurações de referência obtidas a partir das figurações de referência da mesma maneira como descrito acima.
[00645] Um exemplo de um método para determinar se deve aplicar o LIC é um método para usar um lic_flag, que é um sinal que indica se deve aplicar o LIC. Como um exemplo específico, o codificador 100 determina se o bloco atual pertence a uma região com uma mudança de luminância. O codificador 100 define o lic_flag para um valor de "1" quando o bloco pertence a uma região com uma alteração de luminância e aplica LIC ao codificar, e define o lic_flag para um valor de "0" quando o bloco não pertence a uma região tendo uma mudança de luminância e realiza a codificação sem aplicar LIC. O decodificador 200 pode decodificar o lic_flag escrito no fluxo e decodificar o bloco atual alternando entre a aplicação e a não aplicação de LIC de acordo com o valor do sinalizador.
[00646] Um exemplo de um método diferente para determinar se um processo LIC deve ser aplicado é um método de determinação de acordo com se um processo LIC foi aplicado a um bloco circundante. Como um exemplo específico, quando um bloco atual foi processado no modo de mesclagem, o interprevisor 126 determina se um bloco circundante codificado selecionado na derivação de MV no modo de mesclagem foi codificado usando LIC. O interprevisor 126 realiza a codificação alternando entre a aplicação e a não aplicação de LIC de acordo com o resultado. Deve-se notar que, também neste exemplo, os mesmos processos são aplicados a processos no lado do decodificador 200.
[00647] O processo de correção de luminância (LIC) foi descrito com referência às Figuras 66A e 66B, e é descrito adicionalmente abaixo.
[00648] Em primeiro lugar, o interprevisor 126 deriva um MV para obter uma figuração de referência correspondente a um bloco atual de uma figuração de referência que é uma figuração codificada.
[00649] Em seguida, o interprevisor 126 extrai informações que indicam como o valor de luma da figuração de referência foi alterado para o valor de luma da figuração atual, usando os valores de pixel luma de regiões de referência circundantes codificadas que estão próximas à esquerda e acima do bloco atual e os valores de pixel luma nas posições correspondentes nas figurações de referência especificadas por MVs e calcula um parâmetro de correção de luminância. Por exemplo, assume-se que o valor do pixel luma de um determinado pixel na região de referência circundante na figuração atual é p0, e que o valor do pixel luma do pixel correspondente ao pixel dado na região de referência circundante na figuração de referência é p1. O interprevisor 126 calcula os coeficientes A e B para otimizar A×p1 + B = p0 como o parâmetro de correção de luminância para uma pluralidade de pixels na região de referência circundante.
[00650] Em seguida, o interprevisor 126 realiza um processo de correção de luminância usando o parâmetro de correção de luminância para a figuração de referência na figuração de referência especificada pelo MV, para gerar uma imagem de previsão para o bloco atual. Por exemplo, assume-se que o valor do pixel luma na figuração de referência é p2, e que o valor do pixel luma com correção de luminância da imagem de previsão é p3. O interprevisor 126 gera a imagem de previsão após ser submetido ao processo de correção de luminância calculando A×p2 + B = p3 para cada um dos pixels na figuração de referência.
[00651] Por exemplo, uma região com um determinado número de pixels extraídos de cada um de um pixel vizinho superior e um pixel vizinho esquerdo pode ser usada como uma região de referência circundante. Além disso, a região de referência circundante não está limitada a uma região vizinha ao bloco atual e pode ser uma região que não é vizinha ao bloco atual. No exemplo ilustrado na Figura 66A, a região de referência circundante na figuração de referência pode ser uma região especificada por outro MV em uma figuração atual, de uma região de referência circundante na figuração atual. Por exemplo, o outro MV pode ser um MV em uma região de referência circundante na figuração atual.
[00652] Embora as operações realizadas pelo codificador 100 tenham sido descritas aqui, deve-se notar que o decodificador 200 realiza operações semelhantes.
[00653] Deve-se notar que o LIC pode ser aplicado não apenas ao luma, mas também ao croma. Neste momento, um parâmetro de correção pode ser derivado individualmente para cada um de Y, Cb e Cr, ou um parâmetro de correção comum pode ser usado para qualquer um de Y, Cb e Cr.
[00654] Além disso, o processo LIC pode ser aplicado em unidades de um sub-bloco. Por exemplo, um parâmetro de correção pode ser derivado usando uma região de referência circundante em um subbloco atual e uma região de referência circundante em um sub-bloco de referência em uma figuração de referência especificada por um MV do sub-bloco atual.
[00655] Controlador de Previsão
[00656] O controlador de previsão 128 seleciona uma de uma imagem de intraprevisão (uma imagem ou uma saída de sinal do intraprevisor 124) e uma imagem de interprevisão na (uma imagem ou uma saída de sinal do interprevisor 126) e envia a imagem de previsão selecionada para o subtrator 104 e adicionador 116.
[00657] Gerador de Parâmetros de Previsão
[00658] O gerador de parâmetro de previsão 130 pode emitir informações relacionadas à intraprevisão, interprevisão, seleção de uma imagem de previsão no controlador de previsão 128, etc. como um parâmetro de previsão para o codificador por entropia 110. O codificador por entropia 110 pode gerar um fluxo, com base no parâmetro de previsão que é inserido do gerador de parâmetro de previsão 130 e coeficientes quantizados que são inseridos do quantizador 108. O parâmetro de previsão pode ser usado no decodificador 200. O decodificador 200 pode receber e decodificar o fluxo e realizar os mesmos processos que os processos de previsão realizados pelo intraprevisor 124, interprevisor 126 e controlador de previsão 128. O parâmetro de previsão pode incluir (i) um sinal de previsão de seleção (por exemplo, um MV, um tipo de previsão ou um modo de previsão usado por intraprevisor 124 ou interprevisor 126), ou (ii) um índice opcional, um sinalizador ou um valor que é baseado em um processo de previsão realizado em cada um do intraprevisor 124, interprevisor 126 e controlador de previsão 128, ou que indica o processo de previsão.
[00659] Decodificador
[00660] A seguir, o decodificador 200 capaz de decodificar uma saída de fluxo do codificador 100 descrito acima é descrito. A Figura 67 é um diagrama de blocos que ilustra uma configuração funcional do decodificador 200 de acordo com esta modalidade. O decodificador 100 é um aparelho que decodifica um fluxo que é uma imagem codificada em unidades de um bloco.
[00661] Conforme ilustrado na Figura 67, o decodificador 100 inclui o decodificador por entropia 202, quantizador inverso 204, transformador inverso 206, adicionador 208, memória de bloco 210, filtro de loop 212, memória de quadro 214, interprevisor 216, interprevisor 218, controlador de previsão 220, gerador de parâmetro de previsão 222, e determinador de divisão 224. Deve-se notar que o intraprevisor 216 e o interprevisor 218 são configurados como parte de um executor de previsão.
[00662] Exemplo de Montagem do Decodificador
[00663] A Figura 68 é um diagrama de blocos que ilustra um exemplo de montagem do decodificador 200. O decodificador 200 inclui processador b1 e memória b2. Por exemplo, a pluralidade de elementos constituintes do decodificador 200 ilustrado na Figura 67 são montados no processador b1 e memória b2 ilustrados na Figura 68.
[00664] O processador b1 é um conjunto de circuitos que realiza o processamento de informações e é acessível à memória b2. Por exemplo, o processador b1 é um circuito eletrônico dedicado ou geral que decodifica um fluxo. O processador b1 pode ser um processador como uma CPU. Além disso, o processador b1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, por exemplo, o processador b1 pode assumir as funções de dois ou mais elementos constituintes diferentes de um elemento constituinte para armazenar informações da pluralidade de elementos constituintes do decodificador 200 ilustrado na Figura 67, etc.
[00665] A memória b2 é dedicada ou memória geral para armazenar informações que são usadas pelo processador b1 para decodificar um fluxo. A memória b2 pode ser um conjunto de circuitos eletrônico e pode ser conectada ao processador b1. Além disso, a memória b2 pode ser incluída no processador b1. Além disso, a memória b2 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Além disso, a memória b2 pode ser um disco magnético, um disco óptico ou semelhante, ou pode ser representado como um armazenamento, um meio ou semelhante. Além disso, a memória b2 pode ser memória não volátil ou memória volátil.
[00666] Por exemplo, a memória b2 pode armazenar uma imagem ou um fluxo. Além disso, a memória b2 pode armazenar um programa para fazer com que o processador b1 decodifique um fluxo.
[00667] Além disso, por exemplo, a memória b2 pode assumir as funções de dois ou mais elementos constituintes para armazenar informações da pluralidade de elementos constituintes do decodificador 200 ilustrado na Figura 67, etc. Mais especificamente, a memória b2 pode assumir as funções de memória de bloco 210 e memória de quadro 214 ilustrada na Figura 67. Mais especificamente, a memória b2 pode armazenar uma imagem reconstruída (especificamente, um bloco reconstruído, uma figuração reconstruída ou semelhante).
[00668] Deve-se notar que, no decodificador 200, nem todos da pluralidade de elementos constituintes ilustrados na Figura 67, etc. podem ser implantados, e nem todos os processos descritos acima podem ser realizados. Parte dos elementos constituintes indicados na Figura 67, etc. podem ser incluídos em outro dispositivo, ou parte dos processos descritos acima podem ser realizados por outro dispositivo.
[00669] A seguir, um fluxo geral dos processos realizados pelo decodificador 200 é descrito e, em seguida, cada um dos elementos constituintes incluídos no decodificador 200 é descrito. Deve-se notar que, alguns dos elementos constituintes incluídos no decodificador 200 realizam os mesmos processos realizados por alguns dos elementos constituintes incluídos no codificador 100 e, portanto, os mesmos processos não são repetidamente descritos em detalhes. Por exemplo, quantizador inverso 204, transformador inverso 206, adicionador 208, memória de bloco 210, memória de quadro 214, interprevisor 216, interprevisor 218, controlador de previsão 220 e filtro de loop 212 incluído no decodificador 200 realizam processos semelhantes aos realizados pelo quantizador inverso 112, transformador inverso 114, adicionador 116, memória de bloco 118, memória de quadro 122, intraprevisor 124, interprevisor 126, controlador de previsão 128 e filtro de loop 120 incluídos no codificador 100, respectivamente.
[00670] Fluxo geral do Processo de Decodificação
[00671] A Figura 69 é um fluxograma que ilustra um exemplo de um processo geral de decodificação realizado pelo decodificador 200.
[00672] Em primeiro lugar, o determinador de divisão 224 no decodificador 200 determina um padrão de divisão de cada um de uma pluralidade de blocos de tamanho fixo (128×128 pixels) incluídos em uma figuração, com base em um parâmetro que é inserido do decodificador por entropia 202 (Etapa Sp_1). Este padrão de divisão é um padrão de divisão selecionado pelo codificador 100. O decodificador 200 realiza então os processos das etapas Sp_2 a Sp_6 para cada um de uma pluralidade de blocos do padrão de divisão.
[00673] O decodificador por entropia 202 decodifica (especificamente, decodifica a entropia) coeficientes quantizados codificados e um parâmetro de previsão de um bloco atual (Etapa Sp_2).
[00674] Em seguida, o quantizador inverso 204 realiza a quantização inversa da pluralidade de coeficientes quantizados e o transformador inverso 206 realiza a transformação inversa do resultado, para restaurar os resíduos de previsão do bloco atual (Etapa Sp_3).
[00675] Em seguida, o executor de previsão que inclui todo ou parte do intraprevisor 216, interprevisor 218 e controlador de previsão 220 gera uma imagem de previsão do bloco atual (Etapa Sp_4).
[00676] Em seguida, o adicionador 208 adiciona a imagem de previsão a um residual de previsão para gerar uma imagem reconstruída (também referida como um bloco de imagem decodificado) do bloco atual (Etapa Sp_5).
[00677] Quando a imagem reconstruída é gerada, o filtro de loop 212 realiza a filtragem da imagem reconstruída (Etapa Sp_6).
[00678] O decodificador 200 determina então se a decodificação de toda a figuração foi concluída (Etapa Sp_7). Ao determinar que a decodificação ainda não foi concluída (Não na Etapa Sp_7), o decodificador 200 executa repetidamente os processos começando na Etapa Sp_1.
[00679] Deve-se notar que os processos dessas etapas Sp_1 a Sp_7 podem ser realizados sequencialmente pelo decodificador 200, ou dois ou mais dos processos podem ser realizados em paralelo. A ordem de processamento de dois ou mais dos processos pode ser modificada.
[00680] Determinador de Divisão
[00681] A Figura 70 é um diagrama que ilustra uma relação entre o determinador de divisão 224 e outros elementos constituintes. O determinador de divisão 224 pode realizar os seguintes processos como exemplos.
[00682] Por exemplo, o determinador de divisão 224 coleta informações de bloco da memória de bloco 210 ou memória de quadro 214 e, além disso, obtém um parâmetro do decodificador por entropia 202. O determinador de divisão 224 pode, então, determinar o padrão de divisão de um bloco de tamanho fixo, com base nas informações do bloco e no parâmetro. O determinador de divisão 224 pode, então, enviar informações que indicam o padrão de divisão determinado para o transformador inverso 206, intraprevisor 216 e interprevisor 218. O transformador inverso 206 pode realizar a transformação inversa dos coeficientes de transformada, com base no padrão de divisão indicado pelas informações do determinador de divisão 224. O intraprevisor 216 e o interprevisor 218 podem gerar uma imagem de previsão, com base no padrão de divisão indicado pelas informações do determinador de divisão 224.
[00683] Decodificador por Entropia
[00684] A Figura 71 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do decodificador por entropia 202
[00685] O decodificador por entropia 202 gera coeficientes quantizados, um parâmetro de previsão e um parâmetro relacionado a um padrão de divisão, por entropia decodificando o fluxo. Por exemplo, CABAC é usado na decodificação de entropia. Mais especificamente, o decodificador por entropia 202 inclui, por exemplo, o decodificador aritmético binário 202a, o controlador de contexto 202b e o desbinarizador 202c. O decodificador aritmético binário 202a decodifica aritmeticamente o fluxo usando um valor de contexto derivado pelo controlador de contexto 202b para um sinal binário. O controlador de contexto 202b deriva um valor de contexto de acordo com uma característica ou um estado circundante de um elemento de sintaxe, isto é, uma probabilidade de ocorrência de um sinal binário, da mesma maneira realizada pelo controlador de contexto 110b do codificador 100. O desbinarizador 202c realiza a debinarização para transformar a saída do sinal binário do decodificador aritmético binário 202a em um sinal de vários níveis indicando coeficientes quantizados, conforme descrito acima. Essa binarização é realizada de acordo com o método de binarização descrito acima.
[00686] Com isso, o decodificador por entropia 202 emite coeficientes quantizados de cada bloco para o quantizador inverso 204. O decodificador por entropia 202 pode gerar um parâmetro de previsão incluído em um fluxo (consulte a Figura 1) para o intraprevisor 216, o interprevisor 218 e o controlador de previsão 220. O interprevisor 216, o interprevisor 218 e o controlador de previsão 220 são capazes de executar os mesmos processos de previsão que aqueles realizados pelo interprevisor 124, interprevisor 126 e controlador de previsão 128 no lado do codificador 100.
[00687] Decodificador por Entropia
[00688] A Figura 72 é um diagrama que ilustra um fluxo de CABAC no decodificador por entropia 202.
[00689] Primeiro, a inicialização é realizada em CABAC no decodificador por entropia 202. Na inicialização, a inicialização no decodificador aritmético binário 202a e a configuração de um valor de contexto inicial são realizadas. O decodificador aritmético binário 202a e o desbinarizador 202c então executam a decodificação aritmética e a desbinarização de, por exemplo, dados codificados de uma CTU. Neste momento, o controlador de contexto 202b atualiza o valor de contexto cada vez que a decodificação aritmética é realizada. O controlador de contexto 202b então salva o valor de contexto como um pós-processo. O valor de contexto salvo é usado, por exemplo, para inicializar o valor de contexto para a próxima CTU.
[00690] Quantizador inverso
[00691] Quantizador inverso 204 quantiza coeficientes quantizados inversos de um bloco atual que são entradas do decodificador por entropia 202. Mais especificamente, o quantizador inverso 204 quantiza inversamente os coeficientes quantizados do bloco atual, com base nos parâmetros de quantização correspondentes aos coeficientes quantizados. O quantizador inverso 204, então, emite os coeficientes de transformada quantizada inversa (que são coeficientes de transformada) do bloco atual para o transformador inverso 206.
[00692] A Figura 73 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do quantizador inverso 204.
[00693] O quantizador inverso 204 inclui, por exemplo, gerador de parâmetro de quantização 204a, gerador de parâmetro de quantização predito 204b, armazenamento de parâmetro de quantização 204d e executor de quantização inversa 204e.
[00694] A Figura 74 é um fluxograma que ilustra um exemplo de quantização inversa realizada pelo quantizador inverso 204
[00695] O quantizador inverso 204 pode realizar um processo de quantização inversa como um exemplo para cada CU com base no fluxo ilustrado na Figura 74. Mais especificamente, o gerador de parâmetro de quantização 204a determina se realizar a quantização inversa (Etapa Sv_11). Aqui, ao determinar para realizar a quantização inversa (Sim na Etapa Sv_11), o gerador de parâmetro de quantização 204a obtém um parâmetro de quantização de diferença para o bloco atual do decodificador por entropia 202 (Etapa Sv_12).
[00696] Em seguida, o gerador de parâmetro de quantização predito 204b obtém então um parâmetro de quantização para uma unidade de processamento diferente do bloco atual do armazenamento de parâmetro de quantização 204d (Etapa Sv_13). O gerador de parâmetro de quantização previsto 204b gera um parâmetro de quantização previsto do bloco atual com base no parâmetro de quantização obtido (Etapa Sv_14).
[00697] O gerador de parâmetro de quantização 204a então adiciona o parâmetro de quantização de diferença para o bloco atual obtido do decodificador por entropia 202 e o parâmetro de quantização predito para o bloco atual gerado pelo gerador de parâmetro de quantização predito 204b (Etapa Sv_15). Esta adição gera um parâmetro de quantização para o bloco atual. Além disso, o gerador de parâmetro de quantização 204a armazena o parâmetro de quantização para o bloco atual no armazenamento de parâmetro de quantização 204d (Etapa Sv_16).
[00698] Em seguida, o executor de quantização inversa 204e quantiza inversamente os coeficientes quantizados do bloco atual em coeficientes de transformada, usando o parâmetro de quantização gerado na Etapa Sv_15 (Etapa Sv_17).
[00699] Deve-se notar que o parâmetro de quantização de diferença pode ser decodificado no nível de sequência de bits, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU. Além disso, o valor inicial do parâmetro de quantização pode ser decodificado no nível de sequência, nível de figuração, nível de fatia, nível de tijolo ou nível de CTU. Neste momento, o parâmetro de quantização pode ser gerado usando o valor inicial do parâmetro de quantização e o parâmetro de quantização de diferença.
[00700] Deve-se notar que o quantizador inverso 204 pode incluir uma pluralidade de quantizadores inversos e pode quantizar inversamente os coeficientes quantizados usando um método de quantização inversa selecionado a partir de uma pluralidade de métodos de quantização inversa.
[00701] Transformador Inverso
[00702] O transformador inverso 206 restaura resíduos de previsão pela transformação inversa dos coeficientes de transformada que são entradas do quantizador inverso 204.
[00703] Por exemplo, quando as informações analisadas de um fluxo indicam que EMT ou AMT deve ser aplicado (por exemplo, quando um sinalizador AMT é verdadeiro), o transformador inverso 206 transforma os coeficientes de transformada do bloco atual com base nas informações que indicam o tipo de transformada analisada.
[00704] Além disso, por exemplo, quando as informações analisadas de um fluxo indicam que NSST deve ser aplicado, o transformador inverso 206 aplica uma transformação inversa secundária aos coeficientes de transformada.
[00705] A Figura 75 é um fluxograma que ilustra um exemplo de um processo realizado pelo transformador inverso 206.
[00706] Por exemplo, o transformador inverso 206 determina se as informações que indicam que nenhuma transformada ortogonal é realizada está presente em um fluxo (Etapa St_11). Aqui, ao determinar que nenhuma tal informações está presente (Não na Etapa St_11), o transformador inverso 206 obtém informações que indicam o tipo de transformada decodificado pelo decodificador por entropia 202 (Etapa St_12). Em seguida, com base nas informações, o transformador inverso 206 determina o tipo de transformada usado para a transformada ortogonal no codificador 100 (Etapa St_13). O transformador inverso 206 então realiza a transformada ortogonal inversa usando o tipo de transformada determinado (Etapa St_14).
[00707] A Figura 76 é um fluxograma que ilustra outro exemplo de um processo realizado pelo transformador inverso 206.
[00708] Por exemplo, o transformador inverso 206 determina se um tamanho de transformação é menor ou igual a um valor predeterminado (Etapa Su_11). Aqui, ao determinar que o tamanho da transformação é menor ou igual a um valor predeterminado (Sim na Etapa Su_11), o transformador inverso 206 obtém, a partir do decodificador por entropia 202, informações que indicam qual tipo de transformada foi usado pelo codificador 100 entre pelo menos uma transformação tipo incluído no primeiro grupo de tipo de transformada (Etapa Su_12). Deve-se notar que tal informações é decodificada pelo decodificador por entropia 202 e enviada para o transformador inverso 206.
[00709] Com base nas informações, o transformador inverso 206 determina o tipo de transformada usado para a transformada ortogonal no codificador 100 (Etapa Su_13). O transformador inverso 206, então, ortogonal inverso transforma os coeficientes de transformada do bloco atual usando o tipo de transformada determinado (Etapa Su_14). Ao determinar que um tamanho de transformação não é menor ou igual ao valor predeterminado (Não na Etapa Su_11), o transformador inverso 206 transforma os coeficientes de transformada do bloco atual usando o segundo grupo de tipo de transformada (Etapa Su_15).
[00710] Deve-se notar que a transformada ortogonal inversa pelo transformador inverso 206 pode ser realizada de acordo com o fluxo ilustrado na Figura 75 ou Figura 76 para cada TU como um exemplo. Além disso, a transformada ortogonal inversa pode ser realizada usando um tipo de transformada predefinido sem informações de decodificação indicando um tipo de transformada usado para transformada ortogonal. Além disso, o tipo de transformada é especificamente DST7, DCT8 ou semelhantes. Na transformada ortogonal inversa, uma função de base da transformação inversa correspondente ao tipo de transformada é usada.
[00711] Adicionador
[00712] O adicionador 208 reconstrói o bloco atual adicionando um residual de previsão que é uma entrada do transformador inverso 206 e uma imagem de previsão que é uma entrada do controlador de previsão 220. Em outras palavras, uma imagem reconstruída do bloco atual é gerada. O adicionador 208, então, emite a imagem reconstruída do bloco atual para bloquear a memória 210 e o filtro de loop 212.
[00713] Memória DE Bloco
[00714] A memória de bloco 210 é o armazenamento para armazenar um bloco que está incluído em uma figuração atual e é referido na intraprevisão. Mais especificamente, a memória de bloco 210 armazena uma saída de imagem reconstruída do adicionador 208.
[00715] Filtro de Loop
[00716] O filtro de loop 212 aplica um filtro de loop à imagem reconstruída gerada pelo adicionador 208 e envia a imagem reconstruída filtrada para a memória de quadro 214 e um dispositivo de exibição, etc.
[00717] Quando as informações que indicam ATIVAÇÃO ou DESATIVAÇÃO de um ALF analisado a partir de um fluxo indica que um ALF está ON, um filtro entre uma pluralidade de filtros é selecionado com base na direção e atividade de gradientes locais, e o filtro selecionado é aplicado à imagem reconstruída.
[00718] A Figura 77 é um diagrama de blocos que ilustra um exemplo de uma configuração funcional do filtro de loop 212. Deve-se notar que o filtro de loop 212 tem uma configuração semelhante à configuração do filtro de loop 120 do codificador 100.
[00719] Por exemplo, conforme ilustrado na Figura 77, o filtro de loop 212 inclui o executor de filtro de desblocagem 212a, o executor SAO 212b e o executor ALF 212c. O executor de filtro de desblocagem 212a realiza um processo de filtro de desblocagem da imagem reconstruída. O executor SAO 212b realiza um processo SAO da imagem reconstruída após ser submetido ao processo de filtro de desblocagem. O executor ALF 212c realiza um processo ALF da imagem reconstruída após ser submetida ao processo SAO. Deve-se notar que o filtro de loop 212 nem sempre precisa incluir todos os elementos constituintes descritos na Figura 77, e pode incluir apenas parte dos elementos constituintes. Além disso, o filtro de loop 212 pode ser configurado para realizar os processos acima em uma ordem de processamento diferente daquela descrita na Figura 77.
[00720] Memória de quadro
[00721] A memória de quadro 214 é, por exemplo, armazenamento para armazenar figurações de referência para uso em interprevisão e também é referida como um armazenamento temporário de quadro. Mais especificamente, a memória de quadro 214 armazena uma imagem reconstruída filtrada pelo filtro de loop 212.
[00722] Previsor (Intraprevisor, Interprevisor, Controlador de Previsão)
[00723] A Figura 78 é um fluxograma que ilustra um exemplo de um processo realizado por um previsor do decodificador 200. Deve-se notar que o executor de previsão inclui todos ou parte dos seguintes elementos constituintes: intraprevisor 216; interprevisor 218; e controlador de previsão 220. O executor de previsão inclui, por exemplo, intraprevisor 216 e interprevisor 218.
[00724] O previsor gera uma imagem de previsão de um bloco atual (Etapa Sq_1). Esta imagem de previsão também é conhecida como um sinal de previsão ou um bloco de previsão. Deve-se notar que o sinal de previsão é, por exemplo, um sinal de intraprevisão ou um sinal de interprevisão. Mais especificamente, o previsor gera a imagem de previsão do bloco atual usando uma imagem reconstruída que já foi obtida para outro bloco por meio da geração de uma imagem de previsão, restauração de um residual de previsão e adição de uma imagem de previsão. O previsor do decodificador 200 gera a mesma imagem de previsão que a imagem de previsão gerada pelo previsor do codificador 100. Em outras palavras, as imagens de previsão são geradas de acordo com um método comum entre os previsores ou métodos mutuamente correspondentes.
[00725] A imagem reconstruída pode ser, por exemplo, uma imagem em uma figuração de referência, ou uma imagem de um bloco decodificado (isto é, o outro bloco descrito acima) em uma figuração atual que é a figuração que inclui o bloco atual. O bloco decodificado na figuração atual é, por exemplo, um bloco vizinho do bloco atual.
[00726] A Figura 79 é um fluxograma que ilustra outro exemplo de um processo realizado pelo previsor do decodificador 200.
[00727] O previsor determina um método ou um modo para gerar uma imagem de previsão (Etapa Sr_1). Por exemplo, o método ou modo pode ser determinado com base, por exemplo, em um parâmetro de previsão, etc.
[00728] Ao determinar um primeiro método como um modo para gerar uma imagem de previsão, o previsor gera uma imagem de previsão de acordo com o primeiro método (Etapa Sr_2a). Ao determinar um segundo método como um modo para gerar uma imagem de previsão, o previsor gera uma imagem de previsão de acordo com o segundo método (Etapa Sr_2b). Ao determinar um terceiro método como um modo para gerar uma imagem de previsão, o previsor gera uma imagem de previsão de acordo com o terceiro método (Etapa Sr_2c).
[00729] O primeiro método, o segundo método e o terceiro método podem ser métodos mutuamente diferentes para gerar uma imagem de previsão. Cada um do primeiro ao terceiro métodos pode ser um método de interprevisão, um método de intraprevisão ou outro método de previsão. A imagem reconstruída acima descrita pode ser usada nestes métodos de previsão.
[00730] A Figura 80A e a Figura 80B ilustram um fluxograma que ilustra outro exemplo de um processo realizado por um previsor do decodificador 200.
[00731] O previsor pode realizar um processo de previsão de acordo com o fluxo ilustrado na Figura 80A e na Figura 80B como um exemplo. Deve-se notar que a cópia intrabloco ilustrada na Figura 80A e na Figura 80B é um modo que pertence à interprevisão, e no qual um bloco incluído em uma figuração atual é referido como uma figuração de referência ou um bloco de referência. Em outras palavras, nenhuma figuração diferente da figuração atual é referida na cópia intrabloco. Além disso, o modo PCM ilustrado na Figura 80A é um modo que pertence à intraprevisão e no qual nenhuma transformação e quantização são realizadas.
[00732] Intraprevisor
[00733] O intraprevisor 216 realiza intraprevisão referindo-se a um bloco em uma figuração atual armazenada na memória de bloco 210, com base no modo de intraprevisão analisado a partir do fluxo, para gerar uma imagem de previsão de um bloco atual (isto é, uma imagem de intraprevisão). Mais especificamente, o intraprevisor 216 realiza intraprevisão referindo-se aos valores de pixel (por exemplo, valores de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco atual para gerar uma imagem intraprevisão e, em seguida, envia a imagem intraprevisão para a previsão controlador 220.
[00734] Deve-se notar que quando um modo de intraprevisão em que um bloco de luma é referido na intraprevisão de um bloco de croma é selecionado, o interprevisor 216 pode prever o componente de croma do bloco de corrente com base no componente de luma do bloco de corrente.
[00735] Além disso, quando as informações analisadas a partir de um fluxo indicam que o PDPC deve ser aplicado, o interprevisor 216 corrige os valores de pixel preditos intra com base em gradientes de pixel de referência horizontal/vertical.
[00736] A Figura 81 é um diagrama que ilustra um exemplo de um processo realizado pelo intraprevisor 216 do decodificador 200.
[00737] O intraprevisor 216 determina em primeiro lugar se um sinalizador MPM indicando 1 está presente no fluxo (Etapa Sw_11). Aqui, ao determinar que o sinalizador MPM indicando 1 está presente (Sim na Etapa Sw_11), o intraprevisor 216 obtém, a partir do decodificador por entropia 202, informações que indicam o modo de intraprevisão selecionado no codificador 100 entre MPMs (Etapa Sw_12). Deve-se notar que tal informações é decodificada pelo decodificador por entropia 202 e saída para o intraprevisor 216. Em seguida, o intraprevisor 216 determina um MPM (Etapa Sw_13). Os MPMs incluem, por exemplo, seis modos de intraprevisão. O intraprevisor 216 determina então o modo de intraprevisão que está incluído em uma pluralidade de modos de intraprevisão incluídos nos MPMs e é indicado pelas informações obtidas na Etapa Sw_12 (Etapa Sw_14)
[00738] Ao determinar que nenhum sinalizador MPM indicando 1 está presente (Não na Etapa Sw_11), o intraprevisor 216 obtém informações que indicam o modo de intraprevisão selecionado no codificador 100 (Etapa Sw_15). Em outras palavras, o intraprevisor 216 obtém, a partir do decodificador por entropia 202, informações que indicam o modo de intraprevisão selecionado no codificador 100 de entre pelo menos um modo de intraprevisão que não está incluído nos MPMs. Deve-se notar que tal informações é decodificada pelo decodificador por entropia 202 e saída para o intraprevisor 216. O intraprevisor 216 determina então o modo de intraprevisão que não está incluído em uma pluralidade de modos de intraprevisão incluídos nos MPMs e é indicado pelas informações obtidas na Etapa Sw_15 (Etapa Sw_17).
[00739] O intraprevisor 216 gera uma imagem de previsão de acordo com o modo de intraprevisão determinado na Etapa Sw_14 ou Etapa Sw_17 (Etapa Sw_18).
[00740] Interprevisor
[00741] O interprevisor 218 prevê o bloco atual referindo-se a uma figuração de referência armazenada na memória de quadro 214. A previsão é realizada em unidades de um bloco atual ou um sub-bloco atual no bloco atual. Deve-se notar que o sub-bloco está incluído no bloco e é uma unidade menor que o bloco. O tamanho do sub-bloco pode ser 4×4 pixels, 8×8 pixels ou outro tamanho. O tamanho do subbloco pode ser alterado para uma unidade, como uma fatia, tijolo, figuração, etc.
[00742] Por exemplo, o interprevisor 218 gera uma imagem de interprevisão de um bloco atual ou um sub-bloco atual realizando compensação de movimento usando informações de movimento (por exemplo, um MV) analisado a partir de um fluxo (por exemplo, uma saída de parâmetro de previsão do decodificador por entropia 202), e envia a imagem de interprevisão para o controlador de previsão 220.
[00743] Quando as informações analisadas a partir do fluxo indicam que o modo OBMC deve ser aplicado, o interprevisor 218 gera a imagem de interprevisão usando informações de movimento de um bloco vizinho, além de informações de movimento do bloco atual obtidas através da estimativa de movimento.
[00744] Além disso, quando as informações analisadas a partir do fluxo indicam que o modo de FRUC deve ser aplicado, o interprevisor 218 deriva informações de movimento realizando estimativa de movimento de acordo com o método de correspondência de padrão (correspondência bilateral ou correspondência de modelo) analisado a partir do fluxo. O interprevisor 218 então realiza a compensação de movimento (previsão) usando as informações de movimento derivadas.
[00745] Além disso, quando o modo BIO deve ser aplicado, o interprevisor 218 deriva um MV com base em um modelo que assume movimento linear uniforme. Além disso, quando as informações analisadas a partir do fluxo indicam que o modo afim deve ser aplicado, o interprevisor 218 deriva um MV para cada sub-bloco, com base nos MVs de uma pluralidade de blocos vizinhos.
[00746] Fluxo de Derivação de MV
[00747] A Figura 82 é um fluxograma que ilustra um exemplo de derivação de MV no decodificador 200.
[00748] O interprevisor 218 determina, por exemplo, se decodificar informações de movimento (por exemplo, um MV). Por exemplo, o interprevisor 218 pode fazer a determinação de acordo com o modo de previsão incluído no fluxo, ou pode fazer a determinação com base em outras informações incluídas no fluxo. Aqui, ao determinar a decodificação de informações de movimento, o interprevisor 218 deriva um MV para um bloco atual em um modo no qual as informações de movimento são decodificadas. Ao determinar a não decodificação de informações de movimento, o interprevisor 218 deriva um MV em um modo no qual nenhuma informação de movimento é decodificada.
[00749] Aqui, os modos de derivação de MV incluem um modo interno normal, um modo de mesclagem normal, um modo de FRUC, um modo afim, etc. que são descritos mais tarde. Os modos em que as informações de movimento são decodificadas entre os modos incluem o modo internormal, o modo de mesclagem normal, o modo afim (especificamente, um modo inter afim e um modo de mesclagem afim), etc. Deve-se notar que as informações de movimento podem incluir não apenas um MV, mas também informações de seleção do previsor MV que são descritas mais tarde. Os modos nos quais nenhuma informação de movimento é decodificada incluem o modo de FRUC, etc. O interprevisor 218 seleciona um modo para derivar um MV para o bloco atual a partir da pluralidade de modos e deriva o MV para o bloco atual usando o modo selecionado.
[00750] A Figura 83 é um fluxograma que ilustra outro exemplo de derivação de MV no decodificador 200.
[00751] Por exemplo, o interprevisor 218 pode determinar se decodificar uma diferença de MV, isto é, pode fazer a determinação de acordo com o modo de previsão incluído no fluxo, ou pode fazer a determinação com base em outras informações incluídas no fluxo. Aqui, ao determinar a decodificação de uma diferença de MV, o interprevisor 218 pode derivar um MV para um bloco atual em um modo no qual a diferença de MV é decodificada. Neste caso, por exemplo, a diferença MV incluída no fluxo é decodificada como um parâmetro de previsão.
[00752] Ao determinar a não decodificação de qualquer diferença de MV, o interprevisor 218 deriva um MV em um modo no qual nenhuma diferença de MV é decodificada. Nesse caso, nenhuma diferença de MV codificada é incluída no fluxo.
[00753] Aqui, como descrito acima, os modos de derivação de MV incluem o modo internormal, o modo de mesclagem normal, o modo de FRUC, o modo afim, etc. que são descritos mais tarde. Os modos em que uma diferença MV é codificada entre os modos incluem o modo internormal e o modo afim (especificamente, o modo inter afim), etc. Os modos em que nenhuma diferença MV é codificada incluem o modo de FRUC, o modo de mesclagem normal, o modo afim (especificamente, o modo de mesclagem afim), etc. O interprevisor 218 seleciona um modo para derivar um MV para o bloco atual da pluralidade de modos e deriva o MV para o bloco atual usando o modo selecionado.
[00754] Derivação de MV > Modo Internormal
[00755] Por exemplo, quando as informações analisadas a partir de um fluxo indicam que o modo internormal deve ser aplicado, o interprevisor 218 deriva um MV com base nas informações analisadas a partir do fluxo e realiza a compensação de movimento (previsão) usando o MV.
[00756] A Figura 84 é um fluxograma que ilustra um exemplo de interprevisão pelo modo internormal no decodificador 200.
[00757] O interprevisor 218 do decodificador 200 realiza compensação de movimento para cada bloco. Neste momento, primeiro, o interprevisor 218 obtém uma pluralidade de candidatos de MV para um bloco atual com base em informações como MVs de uma pluralidade de blocos decodificados temporalmente ou espacialmente circundando o bloco atual (Etapa Sg_11). Em outras palavras, o interprevisor 218 gera uma lista de candidatos de MV.
[00758] Em seguida, o interprevisor 218 extrai N (um inteiro de 2 ou mais) candidatos de MV da pluralidade de candidatos de MV obtidos na Etapa Sg_11, como candidatos a previsor de vetor de movimento (também referidos como candidatos ao previsor MV) de acordo com as classificações predeterminadas em ordem de prioridade (Etapa Sg_12). Deve-se notar que as classificações em ordem de prioridade são determinadas antecipadamente para os respectivos N candidatos a previsor de MV.
[00759] Em seguida, o interprevisor 218 decodifica as informações de seleção do previsor MV do fluxo de entrada e seleciona um candidato ao previsor MV dos N candidatos ao previsor MV como o previsor MV para o bloco atual usando as informações de seleção do previsor MV decodificadas (Etapa Sg_13).
[00760] Em seguida, o interprevisor 218 decodifica uma diferença de MV do fluxo de entrada e deriva um MV para o bloco atual adicionando um valor de diferença que é a diferença de MV decodificada e o previsor de MV selecionado (Etapa Sg_14).
[00761] Por último, o interprevisor 218 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV derivado e a figuração de referência decodificada (Etapa Sg_15). Os processos nas etapas Sg_11 a Sg_15 são executados em cada bloco. Por exemplo, quando os processos nas Etapas Sg_11 a Sg_15 são executados em cada um de todos os blocos na fatia, termina a interprevisão da fatia usando o modo interno normal. Por exemplo, quando os processos nas Etapas Sg_11 a Sg_15 são executados em cada um de todos os blocos na figuração, a interprevisão da figuração usando o modo interno normal termina. Deve-se notar que nem todos os blocos incluídos na fatia podem ser submetidos aos processos nas Etapas Sg_11 a Sg_15, e a interprevisão da fatia usando o modo internormal pode terminar quando parte dos blocos são submetidos aos processos. Da mesma forma, a interprevisão da figuração usando o modo internormal pode terminar quando os processos nas Etapas Sg_11 a Sg_15 são executados em parte dos blocos na figuração.
[00762] Derivação de MV > Modo de Mesclagem Normal
[00763] Por exemplo, quando as informações analisadas a partir de um fluxo indicam que o modo de mesclagem normal deve ser aplicado, o interprevisor 218 deriva um MV e realiza a compensação de movimento (previsão) usando o MV.
[00764] A Figura 85 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de mesclagem normal no decodificador 200.
[00765] Neste momento, primeiro, o interprevisor 218 obtém uma pluralidade de candidatos de MV para um bloco atual com base em informações como MVs de uma pluralidade de blocos decodificados temporalmente ou espacialmente circundando o bloco atual (Etapa Sh_11). Em outras palavras, o interprevisor 218 gera uma lista de candidatos de MV.
[00766] Em seguida, o interprevisor 218 seleciona um candidato de MV da pluralidade de candidatos de MV obtidos na Etapa Sh_11, derivando assim um MV para o bloco atual (Etapa Sh_12). Mais especificamente, o interprevisor 218 obtém informações de seleção de MV incluídas como um parâmetro de previsão em um fluxo e seleciona o candidato de MV identificado pelas informações de seleção de MV como o MV para o bloco atual.
[00767] Por último, o interprevisor 218 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV derivado e a figuração de referência decodificada (Etapa Sh_13). Os processos nas etapas Sh_11 a Sh_13 são executados, por exemplo, em cada bloco. Por exemplo, quando os processos nas etapas Sh_11 a Sh_13 são executados em cada um de todos os blocos na fatia, termina a interprevisão da fatia usando o modo de mesclagem normal. Além disso, quando os processos nas Etapas Sh_11 a Sh_13 são executados em cada um de todos os blocos na figuração, termina a interprevisão da figuração usando o modo de mesclagem normal. Deve-se notar que nem todos os blocos incluídos na fatia são submetidos aos processos nas etapas Sh_11 a Sh_13, e a interprevisão da fatia usando o modo de mesclagem normal pode terminar quando parte dos blocos são submetidos aos processos. Da mesma forma, a interprevisão da figuração usando o modo de mesclagem normal pode terminar quando os processos nas etapas Sh_11 a Sh_13 são executados em parte dos blocos na figuração.
[00768] Derivação de MV> Modo de FRUC
[00769] Por exemplo, quando as informações analisadas de um fluxo indicam que o modo de FRUC deve ser aplicado, o interprevisor 218 deriva um MV no modo de FRUC e realiza a compensação de movimento (previsão) usando o MV. Neste caso, as informações de movimento são derivadas no lado do decodificador 200 sem serem sinalizadas do lado do codificador 100. Por exemplo, o decodificador 200 pode derivar as informações de movimento realizando estimativa de movimento. Neste caso, o decodificador 200 realiza estimativa de movimento sem usar qualquer valor de pixel em um bloco atual.
[00770] A Figura 86 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de FRUC no decodificador 200.
[00771] Em primeiro lugar, o interprevisor 218 gera uma lista indicando MVs de blocos decodificados espacialmente ou temporalmente vizinhos ao bloco atual, referindo-se aos MVs como candidatos de MV (a lista é uma lista de candidatos de MV e pode ser usada também como uma lista de candidatos de MV para fusão normal modo (Etapa Si_11). Em seguida, um melhor candidato de MV é selecionado da pluralidade de candidatos de MV registrados na lista de candidatos de MV (Etapa Si_12). Por exemplo, o interprevisor 218 calcula o valor de avaliação de cada candidato de MV incluído na lista de candidatos de MV e seleciona um dos candidatos de MV como o melhor candidato de MV com base nos valores de avaliação. Com base no melhor candidato de MV selecionado, o interprevisor 218 então deriva um MV para o bloco atual (Etapa Si_14). Mais especificamente, por exemplo, o melhor candidato de MV selecionado é derivado diretamente como o MV para o bloco atual. Além disso, por exemplo, o MV para o bloco atual pode ser derivado usando correspondência de padrões em uma região circundante de uma posição que está incluída em uma figuração de referência e corresponde ao melhor candidato de MV selecionado. Em outras palavras, a estimativa usando o casamento de padrão em uma figuração de referência e os valores de avaliação podem ser realizados na região circundante do melhor candidato de MV, e quando há um MV que produz um valor de avaliação melhor, o melhor candidato de MV pode ser atualizado para o MV que produz o melhor valor de avaliação, e o MV atualizado pode ser determinado como o MV final para o bloco atual. A atualização para o MV que produz o melhor valor de avaliação pode não ser realizada.
[00772] Por último, o interprevisor 218 gera uma imagem de previsão para o bloco atual ao realizar a compensação de movimento do bloco atual usando o MV derivado e a figuração de referência decodificada (Etapa Si_15). Os processos nas etapas Si_11 a Si_15 são executados, por exemplo, em cada bloco. Por exemplo, quando os processos nas etapas Si_11 a Si_15 são executados em cada um de todos os blocos na fatia, termina a interprevisão da fatia usando o modo de FRUC. Por exemplo, quando os processos nas Etapas Si_11 a Si_15 são executados em cada um dos blocos da figuração, termina a interprevisão da figuração usando o modo de FRUC. Cada sub-bloco pode ser processado de forma semelhante ao caso acima descrito de processamento de cada bloco.
[00773] Derivação de MV > Modo de Mesclagem Afim
[00774] Por exemplo, quando as informações analisadas de um fluxo indicam que o modo de mesclagem afim deve ser aplicado, o interprevisor 218 deriva um MV no modo de mesclagem afim e realiza compensação de movimento (previsão) usando o MV.
[00775] A Figura 87 é um fluxograma que ilustra um exemplo de interprevisão pelo modo de mesclagem afim no decodificador 200.
[00776] No modo de mesclagem afim, em primeiro lugar, o interprevisor 218 deriva MVs nos respectivos pontos de controle para um bloco atual (Etapa Sk_11). Os pontos de controle são um ponto de canto superior esquerdo do bloco atual e um ponto de canto superior direito do bloco atual, conforme ilustrado na Figura 46A, ou um ponto de canto superior esquerdo do bloco atual, um ponto de canto superior direito do bloco atual e um ponto de canto inferior esquerdo do bloco atual, como ilustrado na Figura 46B.
[00777] Por exemplo, quando os métodos de derivação de MV ilustrados nas Figuras 47A a 47C são usados, como ilustrado na Figura 47A, o interprevisor 218 verifica o bloco A (esquerdo), bloco B (superior), bloco C (direito superior), bloco D (esquerdo inferior) e bloco E (esquerdo superior) decodificado nesta ordem, e identifica o primeiro bloco eficaz decodificado de acordo com o modo afim.
[00778] O interprevisor 218 deriva o MV no ponto de controle usando o primeiro bloco eficaz identificado decodificado de acordo com o modo afim. Por exemplo, quando o bloco A é identificado e o bloco A tem dois pontos de controle, conforme ilustrado na Figura 47B, o interprevisor 218 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco atual e o vetor de movimento v1 no ponto de controle do canto superior direito do bloco atual projetando os vetores de movimento v3 e v4 no canto superior esquerdo e canto superior direito do bloco decodificado, que inclui o bloco A no bloco atual. Desta forma, o MV em cada ponto de controle é derivado.
[00779] Deve-se notar que, conforme ilustrado na Figura 49A, MVs em três pontos de controle podem ser calculados quando o bloco A é identificado e o bloco A tem dois pontos de controle, e isso, conforme ilustrado na Figura 49B, MVs em dois pontos de controle podem ser calculados quando o bloco A é identificado e quando o bloco A tem três pontos de controle.
[00780] Além disso, quando as informações de seleção de MV são incluídas como um parâmetro de previsão em um fluxo, o interprevisor 218 pode derivar o MV em cada ponto de controle para o bloco atual usando as informações de seleção de MV
[00781] Em seguida, o interprevisor 218 realiza compensação de movimento de cada um de uma pluralidade de sub-blocos incluídos no bloco atual. Em outras palavras, o interprevisor 218 calcula um MV para cada um da pluralidade de sub-blocos como um MV afim, usando dois vetores de movimento v0 e v1 e a expressão acima (1A) ou três vetores de movimento v0, v1 e v2 e a expressão acima (1B) (Etapa Sk_12). O interprevisor 218 então realiza a compensação de movimento dos sub-blocos usando esses MVs afins e figurações de referência decodificadas (Etapa Sk_13). Quando os processos nas etapas Sk_12 e Sk_13 são executados para cada um dos sub-blocos incluídos no bloco atual, termina a interprevisão usando o modo de mesclagem afim para o bloco atual. Em outras palavras, a compensação de movimento do bloco atual é realizada para gerar uma imagem de previsão do bloco atual.
[00782] Deve-se notar que a lista de candidatos de MV descrita acima pode ser gerada na Etapa Sk_11. A lista de candidatos de MV pode ser, por exemplo, uma lista que inclui candidatos de MV derivados usando uma pluralidade de métodos de derivação de MV para cada ponto de controle. A pluralidade de métodos de derivação de MV pode ser qualquer combinação dos métodos de derivação de MV ilustrados nas Figuras 47A a 47C, os métodos de derivação de MV ilustrados nas Figuras 48A e 48B, os métodos de derivação de MV ilustrados nas Figuras 49A e 49B, e outros métodos de derivação de MV.
[00783] Deve-se notar que uma lista de candidatos de MV pode incluir candidatos de MV em um modo no qual a previsão é realizada em unidades de um sub-bloco, diferente do modo afim.
[00784] Deve-se notar que, por exemplo, uma lista de candidatos de MV que inclui candidatos de MV em um modo de mesclagem afim em que dois pontos de controle são usados e um modo de mesclagem afim em que três pontos de controle são usados pode ser gerada como uma lista de candidatos de MV. Alternativamente, uma lista de candidatos de MV que inclui candidatos de MV no modo de mesclagem afim em que dois pontos de controle são usados e uma lista de candidatos de MV que inclui candidatos de MV no modo de mesclagem afim em que três pontos de controle são usados podem ser geradas separadamente. Alternativamente, uma lista de candidatos de MV que inclui candidatos de MV em um do modo de mesclagem afim em que dois pontos de controle são usados e o modo de mesclagem afim em que três pontos de controle são usados pode ser gerada.
[00785] Derivação de MV > Modo Inter Afim
[00786] Por exemplo, quando as informações analisadas a partir de um fluxo indicam que o modo inter afim deve ser aplicado, o interprevisor 218 deriva um MV no modo inter afim e realiza compensação de movimento (previsão) usando o MV.
[00787] A Figura 88 é um fluxograma que ilustra um exemplo de interprevisão pelo modo inter afim no decodificador 200.
[00788] No modo inter afim, primeiro, o interprevisor 218 deriva previsores MV (v0, v1) ou (v0, v1, v2) dos respectivos dois ou três pontos de controle para um bloco atual (Etapa Sj_11). Os pontos de controle são um ponto de canto superior esquerdo do bloco atual, um ponto de canto superior direito do bloco atual e um ponto de canto inferior esquerdo do bloco atual, conforme ilustrado na Figura 46A ou Figura 46B.
[00789] O interprevisor 218 obtém informações de seleção do previsor MV incluídas como um parâmetro de previsão no fluxo e deriva o previsor MV em cada ponto de controle para o bloco atual usando o MV identificado pelas informações de seleção do previsor MV. Por exemplo, quando os métodos de derivação de MV ilustrados nas Figuras 48A e 48B são usados, o interprevisor 218 deriva os previsores de vetor de movimento (v0, v1) ou (v0, v1, v2) em pontos de controle para o bloco atual selecionando o MV do bloco identificado pelo MV informações de seleção de previsor entre blocos decodificados na vizinhança dos respectivos pontos de controle para o bloco atual ilustrado em qualquer das Figura 48A ou Figura 48B.
[00790] Em seguida, o interprevisor 218 obtém cada diferença de MV incluída como um parâmetro de previsão no fluxo e adiciona o previsor de MV em cada ponto de controle para o bloco atual e a diferença de MV correspondente ao previsor de MV (Etapa Sj_12). Desta forma, o MV em cada ponto de controle para o bloco atual é derivado.
[00791] Em seguida, o interprevisor 218 realiza compensação de movimento de cada um de uma pluralidade de sub-blocos incluídos no bloco atual. Em outras palavras, o interprevisor 218 calcula um MV para cada um da pluralidade de sub-blocos como um MV afim, usando dois vetores de movimento v0 e v1 e a expressão acima (1A) ou três vetores de movimento v0, v1 e v2 e a expressão acima (1B) (Etapa Sj_13). O interprevisor 218 então realiza compensação de movimento dos sub-blocos usando esses MVs afins e figurações de referência decodificadas (Etapa Sj_14). Quando os processos nas etapas Sj_13 e Sj_14 são executados para cada um dos sub-blocos incluídos no bloco atual, a interprevisão usando o modo de mesclagem afim para o bloco atual termina. Em outras palavras, a compensação de movimento do bloco atual é realizada para gerar uma imagem de previsão do bloco atual.
[00792] Deve-se notar que a lista de candidatos de MV descrita acima pode ser gerada na Etapa Sj_11 como na Etapa Sk_11.
[00793] Derivação de MV > Modo Triangular
[00794] Por exemplo, quando as informações analisadas de um fluxo indicam que o modo triângulo deve ser aplicado, o interprevisor 218 deriva um MV no modo triângulo e realiza a compensação de movimento (previsão) usando o MV.
[00795] A Figura 89 é um fluxograma que ilustra um exemplo de interprevisão pelo modo triângulo no decodificador 200.
[00796] No modo de triângulo, primeiro, o interprevisor 218 divide o bloco atual em uma primeira partição e uma segunda partição (Etapa Sx_11). Neste momento, o interprevisor 218 pode obter, a partir do fluxo, informações de partição que são informações relacionadas à divisão como um parâmetro de previsão. O interprevisor 218 pode então dividir um bloco atual em uma primeira partição e uma segunda partição de acordo com as informações da partição.
[00797] Em seguida, em primeiro lugar, o interprevisor 218 obtém uma pluralidade de candidatos de MV para um bloco atual com base em informações como MVs de uma pluralidade de blocos decodificados temporalmente ou espacialmente circundando o bloco atual (Etapa Sx_12). Em outras palavras, o interprevisor 218 gera uma lista de candidatos de MV.
[00798] O interprevisor 218, então, seleciona o candidato de MV para a primeira partição e o candidato de MV para a segunda partição como um primeiro MV e um segundo MV, respectivamente, a partir da pluralidade de candidatos de MV obtidos na Etapa Sx_11 (Etapa Sx_13). Neste momento, o interprevisor 218 pode obter, a partir do fluxo, informações de seleção de MV para identificar cada candidato de MV selecionado, como um parâmetro de previsão. O interprevisor 218 pode, então, selecionar o primeiro MV e o segundo MV de acordo com as informações de seleção de MV.
[00799] Em seguida, o interprevisor 218 gera uma primeira imagem de previsão realizando compensação de movimento usando o primeiro MV selecionado e uma figuração de referência decodificada (Etapa Sx_14). Da mesma forma, o interprevisor 218 gera uma segunda imagem de previsão realizando compensação de movimento usando o segundo MV selecionado e uma figuração de referência decodificada (Etapa Sx_15).
[00800] Por último, o interprevisor 218 gera uma imagem de previsão para o bloco atual, realizando uma adição ponderada da primeira imagem de previsão e da segunda imagem de previsão (Etapa Sx_16).
[00801] Estimativa de movimento > DMVR
[00802] Por exemplo, as informações analisadas a partir de um fluxo indicam que DMVR deve ser aplicado, o interprevisor 218 realiza a estimativa de movimento usando DMVR.
[00803] A Figura 90 é um fluxograma que ilustra um exemplo de estimativa de movimento por DMVR no decodificador 200.
[00804] O interprevisor 218 deriva um MV para um bloco atual de acordo com o modo de mesclagem (Etapa Sl_11). Em seguida, o interprevisor 218 deriva o MV final para o bloco atual pesquisando a região em torno da figuração de referência indicada pelo MV derivado em Sl_11 (Etapa Sl_12). Em outras palavras, o MV do bloco atual é determinado de acordo com o DMVR.
[00805] A Figura 91 é um fluxograma que ilustra um exemplo específico de estimativa de movimento por DMVR no decodificador 200.
[00806] Primeiro, na Etapa 1 ilustrada na Figura 58A, o interprevisor 218 calcula o custo entre a posição de pesquisa (também referida como um ponto de partida) indicada pelo MV inicial e oito posições de pesquisa circundantes. O interprevisor 218 então determina se o custo em cada uma das posições de pesquisa diferente do ponto de partida é o menor. Aqui, ao determinar que o custo em uma das posições de pesquisa diferente do ponto de partida é o menor, o interprevisor 218 muda um alvo para a posição de pesquisa na qual o menor custo é obtido e realiza o processo na Etapa 2 ilustrada na Figura 58A. Quando o custo no ponto de partida é o menor, o interprevisor 218 pula o processo na Etapa 2 ilustrada na Figura 58A e realiza o processo na Etapa 3.
[00807] Na Etapa 2 ilustrada na Figura 58A, o interprevisor 218 realiza uma pesquisa semelhante ao processo na Etapa 1, em relação à posição de pesquisa após a mudança de alvo como um novo ponto de partida de acordo com o resultado do processo na Etapa 1. O interprevisor 218 então determina se o custo em cada uma das posições de pesquisa diferente do ponto de partida é o menor. Aqui, ao determinar que o custo em uma das posições de pesquisa diferente do ponto de partida é o menor, o interprevisor 218 realiza o processo na Etapa 4. Quando o custo no ponto de partida é o menor, o interprevisor 218 realiza o processo na Etapa 3.
[00808] Na Etapa 4, o interprevisor 218 considera a posição de pesquisa no ponto inicial como a posição de pesquisa final e determina a diferença entre a posição indicada pelo MV inicial e a posição de pesquisa final como uma diferença vetorial.
[00809] Na Etapa 3 ilustrada na Figura 58A, o interprevisor 218 determina a posição do pixel na precisão do subpixel em que o menor custo é obtido, com base nos custos nos quatro pontos localizados nas posições superior, inferior, esquerda e direita em relação ao ponto inicial na Etapa 1 ou Etapa 2, e considera a posição do pixel como a posição de pesquisa final. A posição do pixel na precisão do subpixel é determinada realizando a adição ponderada de cada um dos quatro vetores superior, inferior, esquerdo e direito ((0, 1), (0, -1), (-1, 0), e (1, 0)), usando, como peso, o custo em uma das quatro posições de busca correspondente. O interprevisor 218 determina então a diferença entre a posição indicada pelo MV inicial e a posição de pesquisa final como sendo a diferença do vetor.
[00810] Compensação de movimento > BIO/OBMC/LIC
[00811] Por exemplo, quando as informações analisadas a partir de um fluxo indicam que a correção de uma imagem de previsão deve ser realizada, ao gerar uma imagem de previsão, o interprevisor 218 corrige a imagem de previsão com base no modo para a correção. O modo é, por exemplo, um de BIO, OBMC e LIC descrito acima.
[00812] A Figura 92 é um fluxograma que ilustra um exemplo de geração de uma imagem de previsão no decodificador 200.
[00813] O interprevisor 218 gera uma interprevisor de previsão (Etapa Sm_11) e corrige a imagem de previsão de acordo com qualquer um dos modos descritos acima (Etapa Sm_12)
[00814] A Figura 93 é um fluxograma que ilustra outro exemplo de geração de uma imagem de previsão no decodificador 200.
[00815] O interprevisor 218 deriva um MV para um bloco atual (Etapa Sn_11). Em seguida, o interprevisor 218 gera uma imagem de previsão usando o MV (Etapa Sn_12) e determina se deve ser realizado um processo de correção (Etapa Sn_13). Por exemplo, o interprevisor 218 obtém um parâmetro de previsão incluído no fluxo e determina se deve realizar um processo de correção com base no parâmetro de previsão. Este parâmetro de previsão é, por exemplo, um sinalizador que indica se cada um dos modos descritos acima deve ser aplicado. Aqui, ao determinar a realização de um processo de correção (Sim na Etapa Sn_13), o interprevisor 218 gera a imagem de previsão final corrigindo a imagem de previsão (Etapa Sn_14). Devese notar que, em LIC, a luminância e crominância da imagem de previsão podem ser corrigidas na Etapa Sn_14. Ao determinar a não realização de um processo de correção (Não na Etapa Sn_13), o interprevisor 218 emite a imagem de previsão final sem corrigir a imagem de previsão (Etapa Sn_15).
[00816] Compensação de movimento > OBMC
[00817] Por exemplo, quando as informações analisadas de um fluxo indicam que OBMC deve ser realizado, ao gerar uma imagem de previsão, o interprevisor 218 corrige a imagem de previsão de acordo com o OBMC.
[00818] A Figura 94 é um fluxograma que ilustra um exemplo de correção de uma imagem de previsão por OBMC no decodificador 200. Deve-se observar que o fluxograma na Figura 94 indica o fluxo de correção de uma imagem de previsão usando a figuração atual e a figuração de referência ilustrada na Figura 62.
[00819] Primeiro, conforme ilustrado na Figura 62, o interprevisor 218 obtém uma imagem de previsão (Pred) por compensação de movimento normal usando um MV atribuído ao bloco atual.
[00820] Em seguida, o interprevisor 218 obtém uma imagem de previsão (Pred_L) aplicando um vetor de movimento (MV_L) que já foi derivado para o bloco decodificado vizinho à esquerda do bloco atual para o bloco atual (reutilizando o vetor de movimento para o bloco atual). O interprevisor 218 então realiza uma primeira correção de uma imagem de previsão sobrepondo duas imagens de previsão Pred e Pred_L. Isso fornece um efeito de mesclar a fronteira entre os blocos vizinhos.
[00821] Da mesma forma, o interprevisor 218 obtém uma imagem de previsão (Pred_U) aplicando um MV (MV_U) que já foi derivado para o bloco decodificado vizinho acima do bloco atual para o bloco atual (reutilizando o vetor de movimento para o bloco atual). O interprevisor 218 então realiza uma segunda correção da imagem de previsão sobrepondo a imagem de previsão Pred_U às imagens de previsão (por exemplo, Pred e Pred_L) nas quais a primeira correção foi realizada. Isso fornece um efeito de mesclar a fronteira entre os blocos vizinhos. A imagem de previsão obtida pela segunda correção é aquela em que a fronteira entre os blocos vizinhos foi mesclada (suavizada) e, portanto, é a imagem de previsão final do bloco atual.
[00822] Compensação de movimento > BIO
[00823] Por exemplo, quando as informações analisadas a partir de um fluxo indicam que BIO deve ser realizado, ao gerar uma imagem de previsão, o interprevisor 218 corrige a imagem de previsão de acordo com o BIO.
[00824] A Figura 95 é um fluxograma que ilustra um exemplo de correção de uma imagem de previsão pelo BIO no decodificador 200.
[00825] Conforme ilustrado na Figura 63, o interprevisor 218 deriva dois vetores de movimento (M0, M1), usando duas figurações de referência (Ref0, Ref1) diferentes da figuração (Cur Pic) que inclui um bloco atual. O interprevisor 218 então deriva uma imagem de previsão para o bloco atual usando os dois vetores de movimento (M0, M1) (Etapa Sy_11). Deve-se notar que o vetor de movimento M0 é um vetor de movimento (MVx0, MVy0) correspondendo à figuração de referência Ref0, e o vetor de movimento M1 é um vetor de movimento (MVx1, MVy1) correspondendo à figuração de referência Ref1.
[00826] Em seguida, o interprevisor 218 deriva a imagem interpolada I0 para o bloco atual usando o vetor de movimento M0 e a figuração de referência L0. Além disso, o interprevisor 218 deriva a imagem interpolada I1 para o bloco atual usando o vetor de movimento M1 e a figuração de referência L1 (Etapa Sy_12). Aqui, a imagem interpolada I0 é uma imagem incluída na figuração de referência Ref0 e a ser derivada para o bloco atual, e a imagem interpolada I1 é uma imagem incluída na figuração de referência Ref1 e a ser derivada para o bloco atual. Cada imagem interpolada I0 e imagem interpolada I1 podem ter o mesmo tamanho que o bloco atual. Alternativamente, cada imagem interpolada I0 e imagem interpolada I1 pode ser uma imagem maior do que o bloco atual. Além disso, a imagem interpolada I0 e a imagem interpolada I1 podem incluir uma imagem de previsão obtida usando vetores de movimento (M0, M1) e figurações de referência (L0, L1) e aplicando um filtro de compensação de movimento.
[00827] Além disso, o interprevisor 218 deriva imagens de gradiente (Ix0, Ix1, Iy0, Iy1) do bloco atual, a partir da imagem interpolada I0 e da imagem interpolada I1 (Etapa Sy_13). Deve-se notar que as imagens de gradiente na direção horizontal são (Ix0, Ix1), e as imagens de gradiente na direção vertical são (Iy0, Iy1). O interprevisor 218 pode derivar as imagens de gradiente, por exemplo, aplicando um filtro de gradiente às imagens interpoladas. As imagens de gradiente podem ser aquelas em que cada uma indica a quantidade de mudança espacial no valor do pixel ao longo da direção horizontal ou a quantidade de mudança espacial no valor do pixel ao longo da direção vertical.
[00828] Em seguida, o interprevisor 218 deriva, para cada subbloco do bloco atual, um fluxo óptico (vx, vy) que é um vetor de velocidade, usando as imagens interpoladas (I0, I1) e as imagens de gradiente (Ix0, Ix1, Iy0, Iy1). Como um exemplo, um sub-bloco pode ser um sub-CU de 4×4 pixels.
[00829] Em seguida, o interprevisor 218 corrige uma imagem de previsão para o bloco atual usando o fluxo óptico (vx, vy). Por exemplo, o interprevisor 218 deriva um valor de correção para o valor de um pixel incluído em um bloco atual, usando o fluxo óptico (vx, vy) (Etapa Sy_15). O interprevisor 218 pode, então, corrigir a imagem de previsão para o bloco atual usando o valor de correção (Etapa Sy_16). Deve-se notar que o valor de correção pode ser derivado em unidades de um pixel, ou pode ser derivado em unidades de uma pluralidade de pixels ou em unidades de um sub-bloco.
[00830] Deve-se notar que o fluxo de processo BIO não está limitado ao processo descrito na Figura 95. Apenas parte dos processos descritos na Figura 95 pode ser realizado, ou um processo diferente pode ser adicionado ou usado como uma substituição, ou os processos podem ser executados em uma ordem de processamento diferente.
[00831] Compensação de movimento > LIC
[00832] Por exemplo, quando as informações analisadas a partir de um fluxo indicam que o LIC deve ser realizado, ao gerar uma imagem de previsão, o interprevisor 218 corrige a imagem de previsão de acordo com o LIC
[00833] A Figura 96 é um fluxograma que ilustra um exemplo de correção de uma imagem de previsão pelo LIC no decodificador 200.
[00834] Em primeiro lugar, o interprevisor 218 obtém uma figuração de referência correspondente a um bloco atual de uma figuração de referência decodificada usando um MV (Etapa Sz_11).
[00835] Em seguida, o interprevisor 218 extrai, para o bloco atual, informações que indicam como o valor de luma mudou entre a figuração atual e a figuração de referência (Etapa Sz_12). Esta extração é realizada com base nos valores de pixel luma para a região de referência vizinha esquerda decodificada (região de referência circundante) e a região de referência vizinha superior decodificada (região de referência circundante) e os valores de pixel luma nas posições correspondentes na figuração de referência especificada pelos MVs derivados. O interprevisor 218 calcula um parâmetro de correção de luminância, usando as informações que indicam como o valor de luma mudou (Etapa Sz_13).
[00836] O interprevisor 218 gera uma imagem de previsão para o bloco atual realizando um processo de correção de luminância no qual o parâmetro de correção de luminância é aplicado à figuração de referência na figuração de referência especificada pelo MV (Etapa Sz_14). Em outras palavras, a imagem de previsão que é a figuração de referência na figuração de referência especificada pelo MV é submetida à correção com base no parâmetro de correção de luminância. Nessa correção, a luminância pode ser corrigida ou a crominância pode ser corrigida.
[00837] Controlador de Previsão
[00838] O controlador de previsão 220 seleciona uma imagem de intraprevisão ou uma imagem de interprevisão e envia a imagem selecionada para o adicionador 208. Como um todo, as configurações, funções e processos do controlador de previsão 220, intraprevisor 216 e interprevisor 218 no lado do decodificador 200 podem corresponder às configurações, funções e processos do controlador de previsão 128, intraprevisor 124 e interprevisor 126 no lado do codificador 100.
ESPECIFICAÇÃO DE IMAGENS DE REFERÊNCIA INTERCAMADAS
[00839] Na codificação multicamada, tal como codificação espacialmente escalável e codificação multivista, é realizada a predição intercamadas usando correlação intercamadas e, assim, uma ou mais imagens de referência intercamadas podem ser incluídas em uma lista de imagens de referência. Deve-se notar que a codificação multicamada pode ser representada como um esquema de codificação multicamada. Que a codificação multicamada seja realizada corresponde à codificação e decodificação de uma ou mais imagens são realizadas usando o esquema de codificação multicamada
[00840] A figura 97 é um diagrama que indica um exemplo de uma estrutura de sintaxe para notificação de informações usadas para configurar uma lista de imagens de referência. Especificamente, ref_pic_list_struct(listIdx, rplsIdx) na FIG. 97 representa a estrutura de sintaxe para notificação das informações usadas para configurar a lista de imagens de referência que é identificada com base em listldx e rplsIdx.
[00841] Por exemplo, em um conjunto de parâmetros de sequência (SPS), uma ou mais listas de imagens de referência podem ser definidas para cada um de L0 e L1. Em pelo menos um de um conjunto de parâmetros de imagem, um cabeçalho de imagem ou um cabeçalho de fatia, pode ser selecionável para referir-se a uma ou mais listas de imagens de referência definidas no SPS e para definir novamente uma lista de imagens de referência.
[00842] Especificamente, no SPS, [i] o número de listas de imagens de referência indicadas por sps_num_ref_pic_lists[i] pode ser definido (sps_num_ref_pic_lists[i] não é ilustrado). Neste caso, a lista de imagens de referência que é definida recentemente em pelo menos um do conjunto de parâmetros de imagem, o cabeçalho de imagem ou o cabeçalho de fatia pode ser tratado como sps_num_ref_pic_lists[i]+1-th lista de imagens de referência.
[00843] Além disso, por exemplo, listIdx pode ser um índice que indica L0 ou L1. Além disso, rplsIdx pode ser um índice da lista de imagens de referência correspondente a uma ou mais listas de imagens de referência definidas para L0 ou L1.
[00844] Além disso, inter_layer_ref_pic_flag[listIdx][rplsIdx][i] indica se a i-ésima imagem na lista de imagens de referência identificada com base em listIdx e rplsIdx é uma imagem de referência intercamadas.
[00845] Esse sinalizador também é chamado de sinalizador de imagem de referência intercamadas.
[00846] Por exemplo, quando o sinalizador de imagem de referência intercamadas indica verdadeiro, uma imagem de referência intercamadas (ILRP) é especificada por um índice de imagem de referência intercamadas.
[00847] Especificamente, quando inter_layer_ref_pic_flag[listIdx][rplsIdx][i] é 1, uma imagem de referência intercamadas é especificada como uma i-ésima imagem de referência i-th por ilrp_idx[listIdx][rplsIdx][i]. Aqui, ilrp_idx[listIdx][rplsIdx][i] especifica um índice que é atribuído para a imagem de referência intercamadas em uma camada de referência direta quando a i-ésima imagem de referência na lista de imagens de referência identificada com base em listIdx e rplsIdx é uma referência intercamadas foto.
[00848] Em outras palavras, quando inter_layer_ref_pic_flag[listIdx] [rplsIdx][i] é 1, a i-ésima imagem de referência na lista de imagens de referência identificada com base em listIdx e rplsIdx é uma imagem de referência intercamadas. Por outro lado, quando inter_layer_ref_pic_ flag[listIdx][rplsIdx][i] é 0, a i-ésima imagem de referência na lista de imagens de referência identificada com base em listIdx e rplsIdx não é uma imagem de referência intercamadas.
[00849] Além disso, quando inter_layer_ref_pic_flag[listIdx] [rplsIdx][i] não está predefinido (não está codificado), inter_layer_ref_pic_ flag[listIdx][rplsIdx][i] é considerado 0.
[00850] Deve-se notar que o índice da imagem de referência intercamadas está em uma faixa de 0 a NumDirectRefLayers[GeneralLayerIdx[nuh_layer_id]] - 1. Aqui, NumDirectRefLayers[GeneralLayerI-dx[nuh_layer_id]] corresponde ao número de camadas de referência referenciadas.
[00851] Além disso, a camada de referência direta acima descrita significa uma camada que é diretamente referida na referência intercamada. Por exemplo, na referência intercamadas, pode estar presente uma relação de dependência na qual uma segunda camada se refere a uma primeira camada e uma terceira camada se refere à segunda camada. A terceira camada depende indiretamente da primeira camada, mas se refere diretamente apenas à segunda camada. A camada que é referida indiretamente e a camada que é referida diretamente são distinguidas uma da outra, e a camada que é referida diretamente é chamada de camada de referência direta.
[00852] Na FIG. 97, quando inter_layer_ref_pics_present_flag é 0, a notificação de inter_layer_ref_pic_flag[listIdx][rplsIdx][i] é ignorada.
[00853] Nesse caso, inter_layer_ref_pic_flag[listIdx][rplsIdx][i] é considerado 0. Como resultado, nenhuma imagem de referência intercamadas é especificada.
[00854] Aqui, inter_layer_ref_pics_present_flag é um sinalizador de presença de imagem de referência intercamadas incluído em um conjunto de parâmetros de sequência (SPS) e indica, por exemplo, se o uso de uma ou mais imagens de referência de camada intermediária é permitido.
[00855] Quando o sinalizador de presença de imagem de referência intercamadas é 1 que indica verdadeiro, é permitido o uso de uma ou mais imagens de referência de camadas intermediárias. Neste caso, uma ou mais imagens de referência intercamadas podem ser usadas para previsão entre uma ou mais das imagens incluídas em um fluxo de vídeo de camada codificada.
[00856] Quando o sinalizador de presença de imagem de referência intercamadas é 0, o que indica falso, o uso de uma ou mais imagens de referência de camadas intermediárias não é permitido. Neste caso, nenhuma imagem de referência intercamada é usada para previsão inter em relação a qualquer uma das imagens incluídas no fluxo de vídeo da camada codificada.
[00857] Por exemplo, inter_layer_ref_pic_flag[listIdx][rplsIdx][i] descrito acima é um sinalizador de imagem de referência intercamadas e indica se uma ou mais imagens de referência intercamadas são usadas. Mais especificamente, a imagem de referência intercamadas indica se cada uma das imagens de referência na lista de imagens de referência que é usada para codificar e decodificar uma imagem atual é uma ou mais imagens de referência intercamadas.
[00858] Além disso, quando o sinalizador de presença de imagem de referência intercamadas indica que o uso de uma ou mais imagens de referência de camada intermediária é permitido, o sinalizador de imagem de referência de camada intermediária que indica se uma ou mais imagens de referência de camada intermediária são usados é codificado e decodificado. Quando o sinalizador de imagem de referência intercamadas indica que a imagem de referência intercamadas é usada, a imagem de referência intercamadas é usada como uma imagem de referência na lista de imagens de referência.
[00859] Por outro lado, quando a codificação e decodificação do sinalizador de imagem de referência intercamada não é realizada ou o sinalizador de imagem de referência intercamada indica que uma ou mais imagens de referência intercamada não são usadas, uma imagem de referência diferente de uma ou mais imagens de referência intercamada é usado.
[00860] Deve-se observar que a codificação multicamada é desabilitada quando sps_video_parameter_set_id, que é um ID de conjunto de parâmetros de vídeo notificado no SPS, é 0. Por esse motivo, nesse caso, nenhuma previsão intercamadas é executada e nenhuma imagem de referência intercamadas é especificada. Por exemplo, neste caso, inter_layer_ref_pics_present_flag é considerado 0.
[00861] Além disso, quando vps_independent_layer_flag [GeneralLayerIdx[nuh_layer_id]] (não ilustrado) é 1, inter_layer_ref_pics_present_flag é 0. Em outras palavras, quando a previsão intercamadas não é usada, o uso de uma ou mais imagens de referência intercamadas não é permitido.
[00862] Aqui, vps_independent_layer_flag[GeneralLayerIdx[nuh_ layer_id]] é um sinalizador de camada independente incluído em um conjunto de parâmetros de vídeo (VPS) e indica, por exemplo, se a previsão intercamadas é usada. Quando o sinalizador de camada independente é 1, a previsão intercamadas não é usada. Quando o sinalizador de camada independente é 0, a previsão intercamadas pode ser usada.
ASPECTO 1 SOBRE NOTIFICAÇÃO DE SINALIZADORES PRESENTES DE IMAGEM DE REFERÊNCIA INTERCAMADA
[00863] A Figura 98 é um diagrama que indica um exemplo de uma estrutura de sintaxe SPS para notificação de um sinalizador presente de imagem de referência intercamadas neste aspecto.
[00864] Neste exemplo, sps_video_parameter_set_id, que é um ID de conjunto de parâmetros de vídeo, é notificado. Subsequentemente, a notificação de inter_layer_ref_pics_present_flag que é um sinalizador de presente de imagem de referência intercamadas é alternada de acordo com o valor de sps_video_parameter_set_id.
[00865] Especificamente, sps_video_parameter_set_id é um ID de conjunto de parâmetros de vídeo que é notificado em um conjunto de parâmetros de sequência (SPS), como um identificador do conjunto de parâmetros de vídeo aplicado a uma sequência. Além disso, sps_video_parameter_set_id é representado como um número inteiro de 0 ou maior e corresponde à execução da codificação multicamada.
[00866] Mais especificamente, a codificação multicamada é executada quando sps_video_parameter_set_id é maior que 0. Nesse caso, o ID do conjunto de parâmetros de vídeo representa um identificador do conjunto de parâmetros de vídeo para executar a codificação multicamadas. Por outro lado, a codificação multicamada não é executada quando sps_video_parameter_set_id é 0.
[00867] Por exemplo, quando sps_video_parameter_set_id tem um valor indicando que a codificação multicamada é executada, inter_ layer_ref_pics_present_flag é notificado. Especificamente, quando sps_ video_parameter_set_id é maior que 0, inter_layer_ref_pics_present _flag é notificado.
[00868] Por exemplo, quando sps_video_parameter_set_id tem um valor que indica que a codificação multicamada não é executada, a notificação de inter_layer_ref_pics_present_flag é ignorada.
[00869] Especificamente, quando sps_video_parameter_set_id é 0, inter_layer_ref_pics_present_flag não é notificado. Neste caso, inter_layer_ref_pics_present_flag pode ser considerado como 0.
[00870] A Fig. 99 é um diagrama que indica um exemplo de uma operação para notificação da sinalizador de presente de imagem de referência intercamada
[00871] Como na FIG. 99, quando sps_video_parameter_set_id for maior que 0 (Sim em S101), inter_layer_ref_pics_present_flag é notificado (S102). Quando sps_video_parameter_set_id não é maior que 0 (Não em S101), inter_layer_ref_pics_present_flag não é notificado.
[00872] Em outras palavras, quando a codificação multicamada é usada, o sinalizador predefinido de imagem de referência intercamadas que indica se o uso de uma ou mais imagens de referência intercamadas é permitido é codificado e decodificado. Por outro lado, quando a codificação multicamada não é usada, o sinalizador predefinido de imagem de referência intercamadas que indica se o uso de uma ou mais imagens de referência intercamadas é permitido não é codificado e decodificado. Quando a codificação e decodificação do sinalizador de presente de imagem de referência intercamadas não é executada, o uso de uma ou mais imagens de referência de camadas intermediárias não é permitido.
[00873] Conforme descrito acima, com a configuração neste aspecto, existe a possibilidade de que a notificação de inter_layer_ref_ pics_present_flag seja ignorada e a quantidade de códigos seja reduzida de acordo com um caso de uso, quando a codificação multicamada não for realizada.
[00874] Deve-se notar que na estrutura de sintaxe descrita acima, a codificação e a decodificação de sps_video_parameter_set_id são executadas. No entanto, a codificação e a decodificação de sps_ video_parameter_set_id não podem ser executadas. Por exemplo, sps_video_parameter_set_id pode ser definido de acordo com outro parâmetro de codificação ou similar.
[00875] Além disso, na descrição acima, a execução da codificação multicamada é determinada usando sps_video_parameter_set_id. No entanto, sps_video_parameter_set_id não pode ser usado para determinar se a codificação multicamada é executada. Por exemplo, a realização de codificação multicamada pode ser determinada de acordo com outro parâmetro de codificação ou semelhante.
[00876] Além disso, este aspecto pode ser combinado com pelo menos parte de outro aspecto e executado. Além disso, uma parte deste aspecto pode ser combinada com outro aspecto e executada. Além disso, as sintaxes e valores descritos acima são exemplos, e processos semelhantes podem ser realizados usando sintaxes e valores diferentes das sintaxes e valores descritos acima. Nem todos os elementos constituintes deste aspecto são sempre necessários, podendo ser usada apenas uma parte dos elementos constituintes deste aspecto.
ASPECTO 2 SOBRE NOTIFICAÇÃO DE SINALIZADORES PRESENTES DE IMAGEM DE REFERÊNCIA INTERCAMADA
[00877] A figura 100 é um diagrama que indica um exemplo de uma sintaxe SPS para notificar um sinalizador presente de imagem de referência intercamadas neste aspecto.
[00878] Neste exemplo, sps_video_parameter_set_id, que é um ID de conjunto de parâmetros de vídeo, é notificado. Subsequentemente, independentemente do valor de sps_video_parameter_set_id, inter_layer_ref_pics_present_flag que é um sinalizador presente de imagem de referência intercamadas é sempre notificado.
[00879] Por exemplo, quando sps_video_parameter_set_id tem um valor que indica que a codificação multicamada não é executada, inter_layer_ref_pics_present_flag é fixado em 0. Especificamente, quando sps_video_parameter_set_id é 0, inter_layer_ref_pics_present_flag é fixado em 0.
[00880] Em outras palavras, inter_layer_ref_pics_present_flag que é notificado quando a codificação multicamada não é executada indica que o uso de uma ou mais imagens de referência intercamadas não é permitido.
[00881] Por outro lado, quando sps_video_parameter_set_id tem um valor que indica que a codificação multicamada é executada, inter_layer_ref_pics_present_flag pode ser um de 0 e 1.
[00882] Especificamente, quando sps_video_parameter_set_id é 0, inter_layer_ref_pics_present_flag pode ser um de 0 e 1.
[00883] Em outras palavras, inter_layer_ref_pics_present_flag que é notificado quando a codificação multicamada é executada indica que o uso de uma ou mais imagens de referência intercamadas não é permitido ou que o uso é permitido.
[00884] Conforme descrito acima, com a configuração neste aspecto, inter_layer_ref_pics_present_flag é fixado em 0 quando a codificação multicamada não é realizada. Consequentemente, na estrutura de sintaxe para notificar informações que são usadas para configurar uma lista de imagens de referência conforme indicado na FIG. 97, existe a possibilidade de que a ocorrência de incompatibilidade de informações relacionadas a uma imagem de referência intercamadas seja evitada.
[00885] Deve-se notar que este aspecto pode ser combinado com pelo menos parte de outro aspecto e executado. Além disso, este aspecto pode ser combinado com pelo menos parte de outro aspecto e executado. Além disso, as sintaxes e valores descritos acima são exemplos, e processos semelhantes podem ser realizados usando sintaxes e valores diferentes das sintaxes e valores descritos acima.
[00886] Nem todos os elementos constituintes deste aspecto são sempre necessários, podendo ser usada apenas uma parte dos elementos constituintes deste aspecto.
EXEMPLOS REPRESENTATIVOS DE CONFIGURAÇÕES E PROCESSOS
[00887] Exemplos representativos de configurações e processos realizados pelo codificador 100 e decodificador 200 descritos acima são indicados abaixo.
[00888] A figura 101 é um fluxograma que indica uma operação que é realizada pelo codificador 100. Por exemplo, o codificador 100 inclui circuitos e memória acoplados aos circuitos. O circuito e a memória incluídos no codificador 100 podem corresponder ao processador a1 e à memória a2 ilustrados na FIG. 8. Em operação, o circuito do codificador 100 realiza o seguinte.
[00889] Por exemplo, o circuito do codificador 100 muda para codificar o primeiro sinalizador, de acordo com o uso de um esquema de codificação multicamada para codificar uma ou mais imagens (S201). Aqui, o primeiro sinalizador indica se o uso de uma ou mais imagens de referência intercamadas é permitido.
[00890] Desse modo, existe a possibilidade de que o codificador 100 seja capaz de pular a codificação do primeiro sinalizador indicando se o uso de uma ou mais imagens de referência intercamadas é permitido, de acordo com o esquema de codificação multicamada usado. Consequentemente, existe a possibilidade de que o codificador 100 seja capaz de contribuir com a redução da quantidade de códigos referentes à informação para controlar a previsão de intercamadas.
[00891] A figura 102 é um fluxograma que indica uma operação mais detalhada que é realizada pelo codificador 100. Em operação, o circuito do codificador 100 pode realizar o seguinte.
[00892] Por exemplo, quando o esquema de codificação multicamada é usado para codificar uma ou mais imagens (Sim em S301), o circuito do codificador 100 codifica o primeiro sinalizador (S302). Além disso, quando o esquema de codificação multicamada não é usado para codificar uma ou mais imagens (No em S301), o circuito do codificador 100 não codifica o primeiro sinalizador.
[00893] Desta forma, existe a possibilidade de que o codificador 100 seja capaz de controlar adaptativamente se o uso de uma ou mais imagens de referência intercamadas é permitido, quando o esquema de codificação multicamada é usado. Em outras palavras, neste caso, existe a possibilidade de que o codificador 100 seja capaz de controlar de forma adaptativa se o uso da previsão intercamadas é permitido.
[00894] Além disso, existe a possibilidade de que o codificador 100 seja capaz de pular a codificação do primeiro sinalizador porque uma ou mais imagens de referência intercamadas não são usadas quando o esquema de codificação multicamadas não é usado. Assim, existe a possibilidade de que o codificador 100 seja capaz de contribuir com a redução da quantidade de códigos. Deve-se notar que o não uso do esquema de codificação multicamada corresponde ao uso de um esquema de codificação de camada única.
[00895] Além disso, por exemplo, quando (i) o primeiro sinalizador é codificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas é permitido, o uso de uma ou mais imagens de referência intercamadas pode ser permitido. Além disso, por exemplo, quando (i) o primeiro sinalizador é codificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas não é permitido, o uso de uma ou mais imagens de referência intercamadas pode não ser permitido. Além disso, por exemplo, quando o primeiro sinalizador não é codificado, o uso de uma ou mais imagens de referência intercamadas pode não ser permitido.
[00896] Deste modo, existe a possibilidade de que o codificador 100 seja capaz de controlar se uma ou mais imagens de referência intercamadas são usadas de modo a conformar-se ao primeiro sinalizador quando o primeiro sinalizador é codificado. Além disso, existe a possibilidade de que o codificador 100 seja capaz de simplificar o processo porque o uso de uma ou mais imagens de referência intercamadas não é permitido quando o primeiro sinalizador não está codificado.
[00897] Além disso, por exemplo, os circuitos do codificador 100 podem codificar um segundo sinalizador quando o uso de uma ou mais imagens de referência intercamadas é permitido. O segundo sinalizador indica se qualquer uma das uma ou mais imagens de referência intercamadas é usada como uma imagem de referência que está incluída em uma lista de imagens de referência.
[00898] Desse modo, existe a possibilidade de que o codificador 100 seja capaz de controlar adaptativamente se o uso de uma ou mais imagens de referência intercamadas for permitido como as imagens de referência na lista de imagens de referência, quando o uso de uma ou mais imagens de referência intercamadas é permitido. Consequentemente, neste caso, existe a possibilidade de que o codificador 100 seja capaz de codificar apropriadamente uma imagem atual usando as imagens de referência intercamadas ou sem usar as imagens de referência intercamadas.
[00899] Além disso, por exemplo, quando (i) o segundo sinalizador que é codificado indica que qualquer uma das uma ou mais imagens de referência intercamadas não é usada ou (ii) o segundo sinalizador não é codificado, uma imagem de referência diferente de uma ou mais imagens de referência intercamadas podem ser usadas.
[00900] Desse modo, existe a possibilidade de que o codificador 100 seja capaz de usar a imagem de referência diferente de uma ou mais imagens de referência de intercamada quando o uso de uma ou mais imagens de referência de intercamada não é permitido ou quando uma ou mais imagens de referência de intercamada as imagens não são usadas. Consequentemente, existe a possibilidade de que o codificador 200 seja capaz de codificar apropriadamente a imagem atual usando a imagem de referência diferente de uma ou mais imagens de referência intercamadas
[00901] Além disso, por exemplo, os circuitos do codificador 100 podem alternar para codificar o primeiro sinalizador, de acordo com um ID de conjunto de parâmetros de vídeo correspondente a se o esquema de codificação multicamada é usado para codificar uma ou mais imagens.
[00902] Aqui, o ID do conjunto de parâmetros de vídeo é 0 ou maior. Quando o ID do conjunto de parâmetros de vídeo é 0, o esquema de codificação multicamada não é usado para codificar uma ou mais imagens. O esquema de codificação multicamada é usado para codificar uma ou mais imagens quando o ID do conjunto de parâmetros de vídeo é maior que 0. Além disso, neste caso, o ID do conjunto de parâmetros de vídeo indica um identificador de um conjunto de parâmetros de vídeo para codificar um ou mais imagens usando o esquema de codificação multicamada.
[00903] Desse modo, existe a possibilidade de que o codificador 100 seja capaz de pular a codificação do primeiro sinalizador de acordo com o ID do conjunto de parâmetros de vídeo. Consequentemente, existe a possibilidade de que o codificador 100 seja capaz de contribuir com a redução da quantidade de códigos referentes à informação para controlar a previsão de intercamadas.
[00904] Além disso, existe a possibilidade de que o codificador 100 seja capaz de codificar adequadamente uma ou mais imagens usando o conjunto de parâmetros de vídeo identificado de acordo com o ID do conjunto de parâmetros de vídeo e o esquema de codificação multicamada, quando o ID do conjunto de parâmetros de vídeo for maior que 0.
[00905] Deve-se notar que inter_layer_ref_pics_present_flag é um exemplo de um primeiro sinalizador. Além disso, inter_layer_ref_ pics_present_flag é um exemplo de um segundo sinalizador. Além disso, sps_video_parameter_set_id é um exemplo de um ID de conjunto de parâmetros de vídeo.
[00906] Alternativamente, o codificador de entropia 110 do codificador 100 pode realizar a operação descrita acima como o circuito do codificador 100.
[00907] A figura 103 é um fluxograma que indica uma operação que é realizada pelo decodificador 200. Por exemplo, o decodificador 200 inclui circuitos e memória acoplados aos circuitos. O circuito e a memória incluídos no decodificador 200 podem corresponder ao processador b1 e à memória b2 ilustrados na FIG. 68. Em operação, o circuito do decodificador 200 pode realizar o seguinte.
[00908] Por exemplo, os circuitos do decodificador 200 comutam para decodificar o primeiro sinalizador, consoante seja usado um esquema de codificação multicamada para decodificar uma ou mais imagens (S401). Aqui, o primeiro sinalizador indica se o uso de uma ou mais imagens de referência intercamadas é permitido.
[00909] Deste modo, existe a possibilidade de o decodificador 200 ser capaz de saltar a decodificação do primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas, consoante o esquema de codificação multicamada seja usado. Consequentemente, existe a possibilidade de que o decodificador 200 seja capaz de contribuir com a redução da quantidade de códigos referentes à informação para controlar a previsão de intercamadas.
[00910] A figura 104 é um fluxograma que indica uma operação mais detalhada que é realizada pelo decodificador 200. Em operação, o circuito do decodificador 200 pode realizar o seguinte.
[00911] Por exemplo, quando o esquema de codificação multicamada é usado para decodificar uma ou mais imagens (Sim em S501), o circuito do decodificador 200 decodifica o primeiro sinalizador (S502). Além disso, quando o esquema de codificação multicamada não é usado para decodificar uma ou mais imagens (No em S501), o circuito do decodificador 200 não decodifica o primeiro sinalizador.
[00912] Deste modo, existe a possibilidade de que o decodificador 200 seja capaz de controlar de forma adaptativa se o uso de uma ou mais imagens de referência intercamada é permitido, quando é usado o esquema de codificação multicamada. Em outras palavras, neste caso, existe a possibilidade de que o decodificador 200 seja capaz de controlar de forma adaptativa se o uso da previsão intercamadas é permitido.
[00913] Além disso, existe a possibilidade de que o decodificador 200 seja capaz de pular a decodificação do primeiro sinalizador porque uma ou mais imagens de referência intercamadas não são usadas quando o esquema de codificação multicamada não é usado. Assim, existe a possibilidade de que o decodificador 200 seja capaz de contribuir com a redução da quantidade de códigos. Deve-se notar que o não uso do esquema de codificação multicamada corresponde ao uso de um esquema de codificação de camada única.
[00914] Além disso, por exemplo, quando (i) o primeiro sinalizador é decodificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas é permitido, o uso de uma ou mais imagens de referência intercamadas pode ser permitido. Além disso, por exemplo, quando (i) o primeiro sinalizador é decodificado e (ii) o primeiro sinalizador indica que o uso de uma ou mais imagens de referência intercamadas não é permitido, o uso de uma ou mais imagens de referência intercamadas pode não ser permitido. Além disso, por exemplo, quando o primeiro sinalizador não é decodificado, o uso de uma ou mais imagens de referência intercamadas pode não ser permitido.
[00915] Desse modo, existe a possibilidade de que o decodificador 200 seja capaz de controlar se uma ou mais imagens de referência intercamadas são usadas de modo a estar em conformidade com o primeiro sinalizador quando o primeiro sinalizador é decodificado. Além disso, existe a possibilidade de que o decodificador 200 seja capaz de simplificar o processo porque o uso de uma ou mais imagens de referência intercamadas não é permitido quando o primeiro sinalizador não é decodificado.
[00916] Além disso, por exemplo, os circuitos do decodificador 200 podem decodificar um segundo sinalizador quando o uso de uma ou mais imagens de referência intercamadas é permitido. O segundo sinalizador indica se qualquer uma das uma ou mais imagens de referência intercamadas é usada como uma imagem de referência que está incluída em uma lista de imagens de referência.
[00917] Desse modo, existe a possibilidade de que o decodificador 200 seja capaz de controlar adaptativamente se o uso de uma ou mais imagens de referência intercamadas é permitido como as imagens de referência na lista de imagens de referência, quando o uso de uma ou mais imagens de referência intercamadas é permitido.
[00918] Consequentemente, neste caso, existe a possibilidade de que o decodificador 200 seja capaz de decodificar apropriadamente uma imagem atual usando uma ou mais imagens de referência intercamadas ou sem usar uma ou mais imagens de referência intercamadas.
[00919] Além disso, por exemplo, quando (i) a segunda sinalizador que é decodificada indica que qualquer uma das uma ou mais imagens de referência intercamadas não é usada ou (ii) a segunda sinalizador não é decodificada, uma imagem de referência diferente da uma ou mais imagens de referência intercamadas podem ser usadas.
[00920] Desse modo, existe a possibilidade de que o decodificador 200 seja capaz de usar a imagem de referência diferente de uma ou mais imagens de referência de intercamada quando o uso de uma ou mais imagens de referência de intercamada não é permitido ou quando uma ou mais imagens de referência de intercamada as imagens não são usadas. Consequentemente, existe a possibilidade de que o decodificador 200 seja capaz de decodificar apropriadamente a imagem atual usando a imagem de referência diferente de uma ou mais imagens de referência intercamadas.
[00921] Além disso, por exemplo, os circuitos do decodificador 200 podem alternar para decodificar o primeiro sinalizador, de acordo com um ID de conjunto de parâmetros de vídeo correspondente a se o esquema de codificação multicamada é usado para decodificar uma ou mais imagens.
[00922] Aqui, o ID do conjunto de parâmetros de vídeo é 0 ou maior. Quando o ID do conjunto de parâmetros de vídeo é 0, o esquema de codificação multicamada não é usado para decodificar uma ou mais imagens. O esquema de codificação multicamada é usado para decodificar uma ou mais imagens quando o ID do conjunto de parâmetros de vídeo é maior que 0. Além disso, neste caso, o ID do conjunto de parâmetros de vídeo indica um identificador de um conjunto de parâmetros de vídeo para decodificar um ou mais imagens usando o esquema de codificação multicamada.
[00923] Deste modo, existe a possibilidade de o decodificador 200 ser capaz de saltar a decodificação do primeiro sinalizador de acordo com o ID do conjunto de parâmetros de vídeo. Consequentemente, existe a possibilidade de que o decodificador 200 seja capaz de contribuir com a redução da quantidade de códigos referentes à informação para controlar a previsão de intercamadas. Além disso, existe a possibilidade de que o decodificador 200 seja capaz de decodificar apropriadamente uma ou mais imagens usando o conjunto de parâmetros de vídeo identificado de acordo com o ID do conjunto de parâmetros de vídeo e o esquema de codificação multicamada, quando o ID do conjunto de parâmetros de vídeo for maior que 0.
[00924] Deve-se notar que inter_layer_ref_pics_present_flag é um exemplo de um primeiro sinalizador. Além disso, inter_layer_ref_pics_ present_flag é um exemplo de um segundo sinalizador. Além disso, sps_video_parameter_set_id é um exemplo de um ID de conjunto de parâmetros de vídeo.
[00925] Além disso, o decodificador de entropia 202 do decodificador 200 pode realizar a operação descrita acima como o circuito do decodificador 200.
OUTROS EXEMPLOS
[00926] O codificador 100 e o decodificador 200 em cada um dos exemplos descritos acima podem ser usados como um codificador de imagem e um decodificador de imagem, respectivamente, ou podem ser usados como um codificador de vídeo e um decodificador de vídeo, respectivamente.
[00927] Alternativamente, o codificador 100 e o decodificador 200 podem ser usados como um codificador de entropia e um decodificador de entropia, respectivamente. Em outras palavras, o codificador 100 e o decodificador 200 podem corresponder apenas ao codificador de entropia 110 e ao decodificador de entropia 202, respectivamente. Os outros elementos constituintes podem ser incluídos em outros dispositivos.
[00928] Além disso, o codificador 100 pode incluir uma entrada e uma saída. Por exemplo, uma ou mais imagens são inseridas em uma entrada do codificador 100 e um fluxo de bits codificado é emitido a partir de uma saída do codificador 100. Além disso, o decodificador 200 pode incluir uma entrada e uma saída. Por exemplo, um fluxo de bits codificado é introduzido em uma entrada do decodificador 200, e uma ou mais imagens são emitidas de um emissor do decodificador 200. O fluxo de bits codificado pode incluir coeficientes quantificados aos quais a codificação de comprimento variável foi aplicada e informações de controle.
[00929] Além disso, na descrição acima descrita, o esquema de codificação multicamada corresponde a um esquema para codificação e decodificação de uma ou mais imagens usando uma estrutura multicamada. Em outras palavras, o esquema de codificação multicamada corresponde a um esquema para classificar cada uma das imagens em qualquer uma das camadas e codificar e decodificar a imagem. Além disso, embora cada esquema correspondente à codificação e o esquema correspondente à decodificação seja representado como o esquema de codificação multicamada na descrição descrita acima, deve-se notar que o esquema de codificação multicamada correspondente à decodificação pode ser representado como um esquema de decodificação multicamada.
[00930] Além disso, na descrição acima descrita, se o esquema de codificação multicamada deve ser usado para decodificar uma ou mais imagens pode corresponder a se o esquema de codificação multicamada foi usado para codificar uma ou mais imagens. Além disso, na descrição acima descrita, que um parâmetro de um sinalizador ou semelhante é 0, 1 ou semelhante significa que o valor do parâmetro do sinalizador é 0, 1 ou semelhante.
[00931] Além disso, na descrição acima descrita, o sinalizador de presente de imagem de referência intercamadas é definido como um sinalizador que indica se o uso de uma ou mais imagens de referência de camadas intermediárias é permitido. O sinalizador presente de imagem de referência intercamada pode ser definido como um sinalizador que indica se o sinalizador de imagem de referência intercamada indicando se a imagem de referência intercamada indicando se uma ou mais imagens de referência intercamada são usadas é notificada. Alternativamente, o sinalizador de presente de imagem de referência intercamada pode ser definido como um sinalizador que indica se o uso da previsão intercamada é permitido.
[00932] Além disso, na descrição acima descrita, o sinalizador de imagem de referência intercamada é definido como um sinalizador que indica se o uso de uma ou mais imagens de referência intercamada é permitido. O sinalizador de imagem de referência intercamadas pode ser definida como um sinalizador que indica se cada uma das imagens de referência na lista de imagens de referência é uma imagem de referência intercamadas.
[00933] Além disso, a expressão de codificação pode ser interpretada como qualquer uma das expressões que armazenam, escrevem, descrevem, sinalizam, enviam, notificam, etc. Além disso, a expressão de decodificação pode ser interpretada como qualquer uma das expressões que são ler, analisar, interpretar, obter, receber, extrair, etc.
[00934] Além disso, pelo menos uma parte de cada exemplo descrito acima pode ser usado como um método de codificação ou um método de decodificação, pode ser usado como um método de codificação de entropia ou um método de decodificação de entropia, ou pode ser usado como outros métodos.
[00935] Além disso, cada elemento constituinte pode ser configurado com hardware dedicado ou pode ser implementado executando um programa de software adequado ao elemento constituinte. Cada elemento constituinte pode ser implementado por um executor de programa tal como uma CPU ou um processador lendo e executando um programa de software gravado em um meio como um disco rígido ou uma memória semicondutora.
[00936] Mais especificamente, cada codificador 100 e decodificador 200 pode incluir circuitos de processamento e armazenamento que são acoplados eletricamente ao circuito de processamento e são acessíveis a partir do circuito de processamento. Por exemplo, o circuito de processamento corresponde ao processador a1 ou b1 e o armazenamento corresponde à memória a2 ou b2.
[00937] O circuito de processamento inclui pelo menos um hardware dedicado ou o executor de programa e executa o processamento usando o armazenamento. Além disso, o armazenamento armazena um programa de software executado pelo executor do programa quando o circuito de processamento inclui o executor do programa.
[00938] Aqui, o software que implementa o codificador 100, o decodificador 200 ou semelhante descrito acima é um programa indicado abaixo.
[00939] Por exemplo, o programa pode fazer com que um computador execute: um método de codificação incluindo: determinar se um esquema de codificação multicamada é usado para codificar uma ou mais imagens; e comutar se deve codificar um primeiro sinalizador, de acordo com se o esquema de codificação multicamada é usado para codificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.
[00940] Por exemplo, o programa pode fazer com que um computador execute: um método de decodificação incluindo: determinar se um esquema de codificação multicamada é usado para decodificar uma ou mais imagens; e alternar entre decodificar um primeiro sinalizador, de acordo com se o esquema de codificação multicamada é usado para decodificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas.
[00941] Além disso, cada elemento constituinte pode ser um conjunto de circuitos conforme descrito acima. Os circuitos podem compor o conjunto de circuitos como um todo ou podem ser circuitos separados. Alternativamente, cada elemento constituinte pode ser implantado como um processador geral ou pode ser implantado como um processador exclusivo.
[00942] Além disso, o processo executado por um elemento constituinte específico pode ser executado por outro elemento constituinte. Além disso, a ordem de execução do processamento pode ser modificada ou uma pluralidade de processos pode ser executada em paralelo. Além disso, um codificador e decodificador podem incluir codificador 100 e decodificador 200.
[00943] Além disso, os números ordinais como "primeiro" e "segundo" usados para explicação podem ser alterados adequadamente. Um novo número ordinal pode ser ligado a um elemento constituinte, ou o número ordinal ligado a um elemento constituinte pode ser removido. Além disso, esses números ordinais podem ser atribuídos a elementos para identificar os elementos e podem não corresponder a uma ordem significativa
[00944] Embora aspectos do codificador 100 e do decodificador 200 tenham sido descritos com base nos exemplos, os aspectos do codificador 100 e do decodificador 200 não estão limitados a esses exemplos. O escopo dos aspectos do codificador 100 e do decodificador 200 pode abranger modalidades que podem ser obtidas adicionando, a qualquer um desses exemplos, vários tipos de modificações que uma pessoa versada na técnica chegaria sem se desviar do escopo da presente invenção e modalidades configuráveis combinando elementos constituintes em diferentes exemplos.
[00945] O presente aspecto pode ser realizado combinando um ou mais aspectos descritos aqui com pelo menos parte de outros aspectos de acordo com a presente invenção. Além disso, o presente aspecto pode ser realizado combinando, com os outros aspectos, parte dos processos indicados em qualquer um dos fluxogramas de acordo com os aspectos, parte da configuração de qualquer um dos dispositivos, parte das sintaxes, etc..
[00946] Implantações e Aplicações
[00947] Conforme descrito em cada uma das modalidades acima, cada bloco funcional ou operacional pode ser tipicamente realizado como uma MPU (unidade de microprocessamento) e memória, por exemplo. Além disso, os processos realizados por cada um dos blocos funcionais podem ser realizados como uma unidade de execução de programa, como um processador que lê e executa software (um programa) gravado em um meio, como ROM. O software pode ser distribuído. O software pode ser gravado em uma variedade de mídias, como memória de semicondutor. Observe que cada bloco funcional também pode ser realizado como hardware (circuito dedicado).
[00948] O processamento descrito em cada uma das modalidades pode ser realizado por meio de processamento integrado usando um único aparelho (sistema) e, alternativamente, pode ser realizado por meio de processamento descentralizado usando uma pluralidade de aparelhos. Além disso, o processador que executa o programa descrito acima pode ser um único processador ou uma pluralidade de processadores. Em outras palavras, o processamento integrado pode ser realizado e, alternativamente, o processamento descentralizado pode ser realizado.
[00949] As modalidades da presente invenção não estão limitadas às modalidades exemplares acima; várias modificações podem ser feitas às modalidades exemplares, os resultados das quais também estão incluídos no escopo das modalidades da presente invenção.
[00950] A seguir, exemplos de aplicação do método de codificação de figuração em movimento (método de codificação de imagem) e o método de decodificação de figuração em movimento (método de decodificação de imagem) descritos em cada uma das modalidades acima serão descritos, bem como vários sistemas que implantam os exemplos de aplicação. Tal sistema pode ser caracterizado como que inclui um codificador de imagem que usa o método de codificação de imagem, um decodificador de imagem que usa o método de decodificação de imagem ou um codificador-decodificador de imagem que inclui o codificador e o decodificador de imagem. Outras configurações de tal sistema podem ser modificadas caso a caso.
[00951] Exemplos de Uso
[00952] A Figura 105 ilustra uma configuração geral do sistema de fornecimento de conteúdo ex100 adequado para implantar um serviço de distribuição de conteúdo. A área em que o serviço de comunicação é fornecido é dividida em células de tamanhos desejados e as estações base ex106, ex107, ex108, ex109 e ex110, que são estações sem fio fixas no exemplo ilustrado, estão localizadas nas respectivas células.
[00953] No sistema de fornecimento de conteúdo ex100, dispositivos que inclui computador ex111, dispositivo de jogo ex112, câmera ex113, eletrodoméstico ex114 e smartphone ex115 são conectados à internet ex101 através do provedor de serviços de internet ex102 ou rede de comunicações ex104 e estações base ex106 a ex110. O conteúdo que fornece o sistema ex100 pode combinar e conectar qualquer um dos dispositivos acima. Em várias implantações, os dispositivos podem ser direta ou indiretamente conectados entre si por meio de uma rede telefônica ou comunicação de campo próximo, em vez de via estações base ex106 a ex110. Além disso, o servidor de transmissão contínua ex103 pode ser conectado a dispositivos que inclui computador ex111, dispositivo de jogo ex112, câmera ex113, eletrodomésticos ex114 e smartphone ex115 via, por exemplo, internet ex101. O servidor de transmissão contínua ex103 também pode ser conectado a, por exemplo, um terminal em um ponto de acesso no avião ex117 via satélite ex116.
[00954] Observe que, em vez de estações base ex106 a ex110, podem ser usados pontos de acesso sem fio ou hotspots. O servidor de transmissão contínua ex103 pode ser conectado à rede de comunicações ex104 diretamente em vez de via internet ex101 ou provedor de serviços de internet ex102, e pode ser conectado ao avião ex117 diretamente em vez de via satélite ex116.
[00955] A câmera ex113 é um dispositivo capaz de capturar imagens estáticas e vídeo, como uma câmera digital. O smartphone ex115 é um dispositivo smartphone, telefone celular ou telefone com sistema de telefone pessoal à mão (PHS) que pode operar sob os padrões de sistema de comunicações móveis dos sistemas 2G, 3G, 3.9G e 4G, bem como o sistema 5G de próxima geração.
[00956] O aparelho doméstico ex114 é, por exemplo, um refrigerador ou um dispositivo incluído em um sistema de cogeração de célula de combustível doméstico.
[00957] No sistema de fornecimento de conteúdo ex100, um terminal que inclui uma função de captura de imagem e/ou vídeo tem capacidade para, por exemplo, transmissão ao vivo conectando-se ao servidor de transmissão ex103 através, por exemplo, da estação base ex106. Quando a transmissão ao vivo, um terminal (por exemplo, computador ex111, dispositivo de jogo ex112, câmera ex113, aparelho doméstico ex114, smartphone ex115 ou um terminal no avião ex117) pode realizar o processamento de codificação descrito nas modalidades acima em imagem estática ou conteúdo de vídeo capturado por um usuário através do terminal, pode multiplexar dados de vídeo obtidos por meio da codificação e dados de áudio obtidos pela codificação de áudio correspondente ao vídeo e pode transmitir os dados obtidos para o servidor de transmissão contínua ex103. Em outras palavras, o terminal funciona como o codificador de imagem de acordo com um aspecto da presente invenção.
[00958] O servidor de transmissão contínua ex103 transmite dados de conteúdo transmitidos para clientes que solicitam o fluxo. Os exemplos de clientes incluem computador ex111, dispositivo de jogo ex112, câmera ex113, eletrodomésticos ex114, smartphone ex115 e terminais dentro do avião ex117, que são capazes de decodificar os dados codificados descritos acima. Os dispositivos que recebem os dados transmitidos decodificam e reproduzem os dados recebidos. Em outras palavras, os dispositivos podem funcionar cada um como o decodificador de imagem, de acordo com um aspecto da presente invenção.
[00959] Processamento Descentralizado
[00960] O servidor de transmissão contínua ex103 pode ser realizado como uma pluralidade de servidores ou computadores entre os quais tarefas como o processamento, gravação e transmissão contínua de dados são divididos. Por exemplo, o servidor de transmissão contínua ex103 pode ser realizado como uma rede de distribuição de conteúdo (CDN) que transmite conteúdo por meio de uma rede conectando vários servidores de borda localizados em todo o mundo. Em um CDN, um servidor de borda fisicamente próximo a um cliente é atribuído dinamicamente ao cliente. O conteúdo é armazenado em cache e transmitido ao servidor de borda para reduzir os tempos de carregamento. No caso de, por exemplo, algum tipo de erro ou alteração na conectividade devido, por exemplo, a um pico no tráfego, é possível fazer transmissão contínua de dados de forma estável em altas velocidades, uma vez que é possível evitar partes afetadas da rede por, por exemplo, dividir o processamento entre uma pluralidade de servidores de borda ou alternar as tarefas de transmissão contínua para um servidor de borda diferente e continuar a transmissão contínua.
[00961] A descentralização não se limita apenas à divisão do processamento para transmissão contínua; a codificação dos dados capturados pode ser dividida e realizada pelos terminais, no lado do servidor ou em ambos. Em um exemplo, na codificação típica, o processamento é realizado em dois loops. O primeiro loop serve para detectar o quão complicada é a imagem quadro a quadro ou cena a cena, ou detectar a carga de codificação. O segundo loop se destina ao processamento que mantém a qualidade da imagem e melhora a eficiência da codificação. Por exemplo, é possível reduzir a carga de processamento dos terminais e melhorar a qualidade e a eficiência da codificação do conteúdo fazendo com que os terminais executem o primeiro loop da codificação e fazendo com que o lado do servidor que recebeu o conteúdo execute o segundo loop da codificação. Nesse caso, após o recebimento de um pedido de decodificação, é possível que os dados codificados resultantes do primeiro loop realizado por um terminal sejam recebidos e reproduzidos em outro terminal em tempo aproximadamente real. Isso possibilita a realização de um fluxo contínuo em tempo real.
[00962] Em outro exemplo, a câmera ex113 ou semelhante extrai uma quantidade de recurso de uma imagem, compacta dados relacionados à quantidade de recurso como metadados e transmite os metadados compactados para um servidor. Por exemplo, o servidor determina a importância de um objeto com base na quantidade de recursos e altera a precisão da quantização de acordo para realizar a compactação adequada para o significado (ou significado do conteúdo) da imagem. Os dados de quantidade de recursos são particularmente eficazes para melhorar a precisão e a eficiência da previsão do vetor de movimento durante a segunda passagem de compressão realizada pelo servidor. Além disso, a codificação que tem uma carga de processamento relativamente baixa, como a conversão em código de comprimento variável (VLC), pode ser tratada pelo terminal, e a codificação que tem uma carga de processamento relativamente alta, como a conversão em código aritmética binária adaptável ao contexto (CABAC), pode ser manipulado pelo servidor.
[00963] Em ainda outro exemplo, há casos em que uma pluralidade de vídeos de aproximadamente a mesma cena é capturada por uma pluralidade de terminais em, por exemplo, um estádio, shopping center ou fábrica. Nesse caso, por exemplo, a codificação pode ser descentralizada dividindo-se as tarefas de processamento entre a pluralidade de terminais que capturaram os vídeos e, se necessário, outros terminais que não capturaram os vídeos e o servidor, por unidade. As unidades podem ser, por exemplo, grupos de figurações (GOP), figurações ou blocos resultantes da divisão de uma figuração. Isso possibilita reduzir os tempos de carregamento e obter uma transmissão contínua mais próximo do tempo real.
[00964] Uma vez que os vídeos são aproximadamente da mesma cena, o gerenciamento e/ou instruções podem ser realizadas pelo servidor para que os vídeos capturados pelos terminais possam ser referenciados. Além disso, o servidor pode receber dados codificados dos terminais, alterar a relação de referência entre itens de dados ou corrigir ou substituir as próprias figurações e, em seguida, realizar a codificação. Isso torna possível gerar um fluxo com maior qualidade e eficiência para os itens individuais de dados.
[00965] Além disso, o servidor pode transmitir dados de vídeo após realizar a transcodificação para converter o formato de codificação dos dados de vídeo. Por exemplo, o servidor pode converter o formato de codificação de MPEG em VP (por exemplo, VP9) e pode converter H.264 em H.265.
[00966] Desta forma, a codificação pode ser realizada por um terminal ou um ou mais servidores. Por conseguinte, embora o dispositivo que realiza a codificação seja referido como um "servidor" ou "terminal" na descrição a seguir, alguns ou todos os processos realizados pelo servidor podem ser realizados pelo terminal e, da mesma forma, alguns ou todos os processos realizados pelo terminal podem ser realizados pelo servidor. Isso também se aplica aos processos de decodificação.
[00967] 3D, Multiângulos
[00968] Houve um aumento no uso de imagens ou vídeos combinados de imagens ou vídeos de diferentes cenas capturadas simultaneamente, ou da mesma cena capturada de diferentes ângulos, por uma pluralidade de terminais, como câmera ex113 e/ou smartphone ex115. Os vídeos capturados pelos terminais são combinados com base, por exemplo, na relação posicional relativa obtida separadamente entre os terminais, ou regiões em um vídeo com pontos de recurso correspondentes.
[00969] Além da codificação de figurações em movimento bidimensionais, o servidor pode codificar uma imagem estática com base na análise de cena de uma figuração em movimento, automaticamente ou em um ponto no tempo especificado pelo usuário, e transmitir a imagem estática codificada para uma recepção terminal. Além disso, quando o servidor pode obter a relação posicional relativa entre os terminais de captura de vídeo, além de figurações em movimento bidimensionais, o servidor pode gerar a geometria tridimensional de uma cena com base no vídeo da mesma cena capturada de diferentes ângulos. O servidor pode codificar separadamente dados tridimensionais gerados a partir de, por exemplo, uma nuvem de pontos e, com base em um resultado de reconhecimento ou rastreamento de uma pessoa ou objeto usando dados tridimensionais, pode selecionar ou reconstruir e gerar um vídeo a ser transmitido para um terminal de recepção, a partir de vídeos capturados por uma pluralidade de terminais.
[00970] Isso permite que o usuário desfrute de uma cena selecionando livremente vídeos correspondentes aos terminais de captura de vídeo e permite que o usuário aprecie o conteúdo obtido extraindo um vídeo em um ponto de vista selecionado a partir de dados tridimensionais reconstruídos a partir de uma pluralidade de imagens ou vídeos. Além disso, como acontece com o vídeo, o som pode ser gravado de ângulos relativamente diferentes e o servidor pode multiplexar o áudio de um ângulo ou espaço específico com o vídeo correspondente e transmitir o vídeo e áudio multiplexados.
[00971] Nos últimos anos, o conteúdo que é uma composição do mundo real e um mundo virtual, como conteúdo de realidade virtual (VR) e realidade aumentada (AR), também se tornou popular. No caso de imagens VR, o servidor pode criar imagens dos pontos de vista de ambos os olhos esquerdo e direito e realizar a codificação que tolera a referência entre as duas imagens do ponto de vista, como conversão em código multi-view (MVC), e, alternativamente, pode codifique as imagens como fluxos separados sem referência. Quando as imagens são decodificadas como fluxos separados, os fluxos podem ser sincronizados ao serem reproduzidos, de modo a recriar um espaço tridimensional virtual de acordo com o ponto de vista do usuário.
[00972] No caso de imagens AR, o servidor sobrepõe informações do objeto virtual existente em um espaço virtual às informações da câmera que representam um espaço do mundo real, com base em uma posição tridimensional ou movimento da perspectiva do usuário. O decodificador pode obter ou armazenar informações de objetos virtuais e dados tridimensionais, gerar imagens bidimensionais com base no movimento da perspectiva do usuário e, em seguida, gerar dados sobrepostos conectando-se perfeitamente as imagens. Alternativamente, o decodificador pode transmitir, para o servidor, movimento da perspectiva do usuário, além de uma solicitação de informações do objeto virtual. O servidor pode gerar dados sobrepostos com base em dados tridimensionais armazenados no servidor, de acordo com o movimento recebido, e codificar e transmitir os dados sobrepostos gerados para o decodificador. Observe que os dados sobrepostos incluem, além dos valores RGB, um valor α indicando transparência, e o servidor define o valor α para seções diferentes do objeto gerado a partir de dados tridimensionais para, por exemplo, 0, e pode realizar a codificação enquanto essas seções são transparentes. Alternativamente, o servidor pode definir o plano de fundo para um determinado valor RGB, como um chroma key, e gerar dados em que outras áreas além do objeto são definidas como plano de fundo.
[00973] A decodificação de dados transmitidos de forma semelhante pode ser realizada pelo cliente (isto é, os terminais), no lado do servidor, ou dividida entre eles. Em um exemplo, um terminal pode transmitir uma solicitação de recepção para um servidor, o conteúdo solicitado pode ser recebido e decodificado por outro terminal e um sinal decodificado pode ser transmitido para um dispositivo com um display. É possível reproduzir dados de alta qualidade de imagem descentralizando o processamento e selecionando o conteúdo de maneira adequada, independentemente da capacidade de processamento do próprio terminal de comunicação. Em ainda outro exemplo, enquanto uma TV, por exemplo, está recebendo dados de imagem de grande tamanho, uma região de uma figuração, como um ladrilho obtido pela divisão da figuração, pode ser decodificada e exibida em um terminal pessoal ou terminais de um ou mais espectadores da TV. Isso possibilita que os visualizadores compartilhem uma visão geral, bem como para que cada visualizador verifique sua área atribuída ou inspecione uma região com mais detalhes de perto.
[00974] Em situações em que uma pluralidade de conexões sem fio é possível em distâncias próximas, médias e distantes, em ambientes internos ou externos, pode ser possível receber conteúdo perfeitamente usando um padrão de sistema de transmissão contínua, como MPEG-DASH. O usuário pode alternar entre os dados em tempo real enquanto seleciona livremente um decodificador ou aparelho de exibição, que inclui o terminal do usuário, exibições dispostas em ambientes internos ou externos, etc. Além disso, usando, por exemplo, informações sobre a posição do usuário, a decodificação pode ser realizada enquanto alternar qual terminal controla a decodificação e qual terminal controla a exibição do conteúdo. Isso torna possível mapear e exibir informações, enquanto o usuário está se movendo em direção a um destino, na parede de um prédio próximo no qual um dispositivo capaz de exibir conteúdo está embutido, ou em parte do solo. Além disso, também é possível mudar a taxa de bits dos dados recebidos com base na acessibilidade aos dados codificados em uma rede, como quando os dados codificados são armazenados em cache em um servidor rapidamente acessível a partir do terminal de recepção, ou quando os dados codificados são copiados para um servidor de borda em um serviço de entrega de conteúdo.
[00975] Otimização da Página da Web
[00976] A Figura 106 ilustra um exemplo de uma tela de exibição de uma página da web no computador ex111, por exemplo. A Figura 107 ilustra um exemplo de uma tela de exibição de uma página da web no smartphone ex115, por exemplo. Conforme ilustrado na Figura 106 e na Figura 107, uma página da web pode incluir uma pluralidade de links de imagem que são links para o conteúdo da imagem e a aparência da página da web difere dependendo do dispositivo usado para visualizar a página da web. Quando uma pluralidade de links de imagem são visualizáveis na tela, até que o usuário selecione explicitamente um link de imagem, ou até que o link de imagem esteja no centro aproximado da tela ou todo o link de imagem caiba na tela, o aparelho de exibição (decodificador) pode exibir, como links de imagens, imagens estáticas incluídas no conteúdo ou figurações; pode exibir vídeo como um GIF animado usando uma pluralidade de imagens estáticas ou figurações I; ou pode receber apenas a camada de base e decodificar e exibir o vídeo.
[00977] Quando um link de imagem é selecionado pelo usuário, o aparelho de exibição realiza a decodificação enquanto dá a mais alta prioridade à camada de base. Observe que se houver informações no código HTML da página da web indicando que o conteúdo é escalável, o aparelho de exibição pode decodificar até a camada de aprimoramento. Além disso, a fim de garantir a reprodução em tempo real, antes que uma seleção seja feita ou quando a largura de banda é severamente limitada, o aparelho de exibição pode reduzir o atraso entre o ponto no tempo em que a figuração principal é decodificada e o ponto no tempo em que o a figuração decodificada é exibida (isto é, o atraso entre o início da decodificação do conteúdo e a exibição do conteúdo) pela decodificação e exibindo apenas figurações de referência direta (figuração I, figuração P, figuração B de referência direta). Além disso, o aparelho de exibição pode ignorar propositalmente a relação de referência entre as figurações e decodificar grosseiramente todas as figurações B e P como figurações de referência direta e, então, realizar a decodificação normal conforme o número de figurações recebidas ao longo do tempo aumenta.
[00978] Direção Autônoma
[00979] Ao transmitir e receber imagens estáticas ou dados de vídeo, como informações de mapa bidimensional ou tridimensional para direção autônoma ou direção assistida de um automóvel, o terminal de recepção pode receber, além de dados de imagem pertencentes a uma ou mais camadas, informações sobre, por exemplo, o clima ou a construção de estradas como metadados e associar os metadados aos dados da imagem na decodificação. Observe que os metadados podem ser atribuídos por camada e, alternativamente, podem simplesmente ser multiplexados com os dados da imagem.
[00980] Em tal caso, uma vez que o automóvel, drone, avião, etc., contendo o terminal de recepção é móvel, o terminal de recepção pode perfeitamente receber e realizar a decodificação enquanto comuta entre as estações base entre as estações base ex106 a ex110 transmitindo informações que indicam a posição de o terminal de recepção. Além disso, de acordo com a seleção feita pelo usuário, a situação do usuário e/ou a largura de banda da conexão, o terminal de recepção pode selecionar dinamicamente em que medida os metadados são recebidos, ou em que medida as informações do mapa, por exemplo, é atualizado.
[00981] No sistema de fornecimento de conteúdo ex100, o cliente pode receber, decodificar e reproduzir, em tempo real, as informações codificadas transmitidas pelo usuário.
[00982] Transmissão Contínua de Conteúdo Individual
[00983] No sistema de fornecimento de conteúdo ex100, além da alta qualidade de imagem, também são possíveis conteúdos longos distribuídos por uma entidade de distribuição de vídeo, transmissão contínua por difusão ponto a ponto ou difusão seletiva de baixa qualidade de imagem e conteúdo curto de um indivíduo. Esse tipo de conteúdo de indivíduos provavelmente aumentará ainda mais sua popularidade. O servidor pode primeiro realizar o processamento de edição no conteúdo antes do processamento de codificação, a fim de refinar o conteúdo individual. Isso pode ser alcançado usando a seguinte configuração, por exemplo.
[00984] Em tempo real, durante a captura de conteúdo de vídeo ou imagem, ou depois que o conteúdo foi capturado e acumulado, o servidor realiza o processamento de reconhecimento com base nos dados brutos ou dados codificados, como processamento de erro de captura, processamento de busca de cena, análise de significado e/ou processamento de detecção de objetos. Então, com base no resultado do processamento de reconhecimento, o servidor - quando solicitado ou automaticamente - edita o conteúdo, exemplos dos quais incluem: correção como foco e/ou correção de desfoque de movimento; remover cenas de baixa prioridade, como cenas com baixo brilho em comparação com outras fotos, ou fora de foco; ajuste da borda do objeto; e ajuste de tom de cor. O servidor codifica os dados editados com base no resultado da edição. É sabido que vídeos excessivamente longos tendem a receber menos visualizações. Assim, a fim de manter o conteúdo dentro de uma duração específica que se adapte à duração do vídeo original, o servidor pode, além das cenas de baixa prioridade descritas acima, recortar automaticamente cenas com baixo movimento, com base em um processamento de imagem resultado. Alternativamente, o servidor pode gerar e codificar um sumário de vídeo com base no resultado de uma análise do significado de uma cena.
[00985] Pode haver casos em que o conteúdo individual pode incluir conteúdo que infringe direitos autorais, direitos morais, direitos de retratos, etc. Tal caso pode levar a uma situação desfavorável para o criador, como quando o conteúdo é compartilhado além do escopo pretendido pelo criador. Assim, antes da codificação, o servidor pode, por exemplo, editar imagens de modo a desfocar rostos de pessoas na periferia da tela ou desfocar o interior de uma casa, por exemplo. Além disso, o servidor pode ser configurado para reconhecer os rostos de pessoas que não sejam uma pessoa registrada nas imagens a serem codificadas e, quando tais rostos aparecem em uma imagem, pode aplicar um filtro de mosaico, por exemplo, ao rosto da pessoa. Alternativamente, como pré ou pós-processamento para codificação, o usuário pode especificar, por razões de direitos autorais, uma região de uma imagem que inclui uma pessoa ou uma região do fundo a ser processada. O servidor pode processar a região especificada, por exemplo, substituindo a região por uma imagem diferente ou borrando a região. Se a região incluir uma pessoa, a pessoa pode ser rastreada na figuração em movimento e a região da cabeça da pessoa pode ser substituída por outra imagem conforme a pessoa se move.
[00986] Uma vez que existe uma demanda para visualização em tempo real do conteúdo produzido por indivíduos, que tende a ser pequeno no tamanho dos dados, o decodificador primeiro recebe a camada de base como a prioridade mais alta e realiza a decodificação e reprodução, embora isso possa diferir dependendo da largura de banda. Quando o conteúdo é reproduzido duas ou mais vezes, como quando o decodificador recebe a camada de aprimoramento durante a decodificação e reprodução da camada de base e faz um loop na reprodução, o decodificador pode reproduzir um vídeo de alta qualidade de imagem que inclui a camada de aprimoramento. Se o fluxo for codificado usando tal codificação escalável, o vídeo pode ser de baixa qualidade quando em um estado não selecionado ou no início do vídeo, mas pode oferecer uma experiência em que a qualidade da imagem do fluxo aumenta progressivamente de maneira inteligente. Isso não se limita apenas à codificação escalável; a mesma experiência pode ser oferecida configurando um único fluxo de um fluxo de baixa qualidade reproduzido pela primeira vez e um segundo fluxo codificado usando o primeiro fluxo como referência.
[00987] Outros Exemplos de Implantação e Aplicação
[00988] A codificação e decodificação podem ser realizadas por LSI (conjunto de circuitos de integração em grande escala) ex500 (consulte a Figura 105), que normalmente está incluído em cada terminal. O LSI ex500 pode ser configurado com um único chip ou uma pluralidade de chips. O software para codificar e decodificar figurações em movimento pode ser integrado em algum tipo de meio (como um CD-ROM, um disco flexível ou um disco rígido) que é legível, por exemplo, por computador ex111, e a codificação e decodificação podem ser realizadas usando o software. Além disso, quando o smartphone ex115 está equipado com uma câmera, os dados de vídeo obtidos pela câmera podem ser transmitidos. Neste caso, os dados de vídeo são codificados pelo LSI ex500 incluído no smartphone ex115.
[00989] Observe que o LSI ex500 pode ser configurado para baixar e ativar um aplicativo. Nesse caso, o terminal primeiro determina se é compatível com o esquema usado para codificar o conteúdo ou se tem capacidade para executar um serviço específico. Quando o terminal não é compatível com o esquema de codificação do conteúdo, ou quando o terminal não tem capacidade para executar um serviço específico, o terminal primeiro baixa um codec ou software aplicativo e, em seguida, obtém e reproduz o conteúdo.
[00990] Além do exemplo de sistema de fornecimento de conteúdo ex100 que usa internet ex101, pelo menos o codificador de figuração em movimento (codificador de imagem) ou o decodificador de figuração em movimento (decodificador de imagem) descrito nas modalidades acima pode ser implantado em um sistema de transmissão digital. O mesmo processamento de codificação e processamento de decodificação pode ser aplicado para transmitir e receber ondas de rádio de transmissão sobrepostas com dados de áudio e vídeo multiplexados usando, por exemplo, um satélite, mesmo que seja voltado para difusão seletiva, enquanto difusão ponto a ponto é mais fácil com o sistema de fornecimento de conteúdo ex100.
[00991] Configuração de Hardware
[00992] A Figura 108 ilustra mais detalhes do smartphone ex115 mostrado na Figura 105. A Figura. 109 ilustra um exemplo de configuração do smartphone ex115. Smartphone ex115 inclui antena ex450 para transmitir e receber ondas de rádio de e para a estaçãobase ex110, câmera ex465 capaz de capturar vídeo e imagens fixas e exibir ex458 que exibe dados decodificados, como vídeo capturado pela câmera ex465 e vídeo recebido pela antena ex450. Smartphone ex115 inclui ainda a interface de usuário ex466, como um painel de toque, unidade de saída de áudio ex457, como um alto-falante para a saída de voz ou outro áudio, unidade de entrada de áudio ex456, como um microfone para entrada de áudio, memória ex467 capaz de armazenar dados decodificados, como capturados vídeo ou imagens estáticas, áudio gravado, vídeo ou imagens estáticas recebidas e correio, bem como dados decodificados e slot ex464 que é uma interface para SIM ex468 para autorizar o acesso a uma rede e vários dados. Observe que a memória externa pode ser usada em vez da memória ex467.
[00993] Controlador principal ex460, que controla de forma abrangente o display ex458 e a interface do usuário ex466, circuito de alimentação ex461, controlador de entrada da interface do usuário ex462, processador de sinal de vídeo ex455, interface de câmera ex463, controlador de display ex459, modulador/demodulador ex452, multiplexador/demultiplexador ex453, sinal de áudio o processador ex454, o slot ex464 e a memória ex467 estão conectados por meio do barramento ex470.
[00994] Quando o usuário liga o botão liga/desliga do circuito da fonte de alimentação ex461, o smartphone ex115 é ligado em um estado operacional e cada componente é alimentado por uma bateria.
[00995] O smartphone ex115 realiza o processamento, por exemplo, de chamadas e transmissão de dados, com base no controle realizado pelo controlador principal ex460, que inclui uma CPU, ROM e RAM. Ao fazer chamadas, um sinal de áudio gravado pela unidade de entrada de áudio ex456 é convertido em um sinal de áudio digital pelo processador de sinal de áudio ex454, ao qual o processamento de espalhamento de espectro é aplicado pelo modulador/demodulador ex452 e a conversão digital-analógica e o processamento de conversão de frequência são aplicados por transmissor/receptor ex451 e o sinal resultante é transmitido através da antena ex450. Os dados recebidos são amplificados, convertidos em frequência e analógicodigital convertidos, espectro de propagação inverso processado pelo modulador/demodulador ex452, convertido em um sinal de áudio analógico pelo processador de sinal de áudio ex454 e, em seguida, emitido pela unidade de saída de áudio ex457. No modo de transmissão de dados, texto, imagem estática ou dados de vídeo são transmitidos pelo controlador principal ex460 via controlador de entrada de interface de usuário ex462 com base na operação da interface de usuário ex466 do corpo principal, por exemplo. É realizado um processamento de transmissão e recepção semelhante. No modo de transmissão de dados, ao enviar um vídeo, imagem estática ou vídeo e áudio, a compressão do processador de sinal de vídeo ex455 codifica, pelo método de codificação de figuração em movimento descrito nas modalidades acima, um sinal de vídeo armazenado na memória ex467 ou uma entrada de sinal de vídeo de câmera ex465 e transmite os dados de vídeo codificados para o multiplexador/demultiplexador ex453. O processador de sinal de áudio ex454 codifica um sinal de áudio gravado pela unidade de entrada de áudio ex456 enquanto a câmera ex465 está capturando um vídeo ou imagem estática e transmite os dados de áudio codificados para o multiplexador/demultiplexador ex453. Multiplexador/demultiplexador ex453 multiplexa os dados de vídeo codificados e dados de áudio codificados usando um determinado esquema, modula e converte os dados usando modulador/demodulador (circuito modulador/demodulador) ex452 e transmissor/receptor ex451 e transmite o resultado através da antena ex450.
[00996] Quando um vídeo anexado a um e-mail ou bate-papo, ou um vídeo vinculado a uma página da web, é recebido, por exemplo, a fim de decodificar os dados multiplexados recebidos via antena ex450, o multiplexador/demultiplexador ex453 demultiplexa os dados multiplexados para dividir os multiplexados dados em um fluxo de bits de dados de vídeo e um fluxo de bits de dados de áudio, fornece os dados de vídeo codificados para o processador de sinal de vídeo ex455 via barramento síncrono ex470 e fornece os dados de áudio codificados para o processador de sinal de áudio ex454 via barramento síncrono ex470. O processador de sinal de vídeo ex455 decodifica o sinal de vídeo usando um método de decodificação de figuração em movimento correspondente ao método de codificação de figuração em movimento descrito nas modalidades acima, e o vídeo ou uma imagem estática incluída no arquivo de figuração em movimento vinculada é exibida no monitor ex458 através do controlador de exibição ex459. O processador de sinal de áudio ex454 decodifica o sinal de áudio e produz áudio da unidade de saída de áudio ex457. Como a transmissão contínua em tempo real está se tornando cada vez mais popular, pode haver casos em que a reprodução do áudio pode ser socialmente inadequada, dependendo do ambiente do usuário. Assim, como valor inicial, pode ser preferível uma configuração em que apenas os dados de vídeo sejam reproduzidos, isto é, o sinal de áudio não seja reproduzido; e o áudio pode ser sincronizado e reproduzido apenas quando uma entrada é recebida do usuário clicando nos dados de vídeo, por exemplo.
[00997] Embora o smartphone ex115 tenha sido usado no exemplo acima, três outras implantações são concebíveis: um terminal transceptor que inclui um codificador e um decodificador; um terminal de transmissor que inclui apenas um codificador; e um terminal receptor que inclui apenas um decodificador. Na descrição do sistema de transmissão digital, é dado um exemplo em que dados multiplexados obtidos como resultado de dados de vídeo sendo multiplexados com dados de áudio são recebidos ou transmitidos. Os dados multiplexados, no entanto, podem ser dados de vídeo multiplexados com outros dados que não dados de áudio, como dados de texto relacionados ao vídeo. Além disso, os próprios dados de vídeo em vez de dados multiplexados podem ser recebidos ou transmitidos.
[00998] Embora o controlador principal ex460 que inclui uma CPU seja descrito como controlando os processos de codificação ou decodificação, vários terminais geralmente incluem GPUs. Consequentemente, é aceitável uma configuração em que uma grande área seja processada de uma só vez, fazendo uso da capacidade de desempenho da GPU por meio da memória compartilhada pela CPU e pela GPU, ou memória que inclui um endereço que é gerenciado de modo a permitir o uso comum pelo CPU e GPU. Isso torna possível encurtar o tempo de codificação, manter a natureza da transmissão contínua em tempo real e reduzir o atraso. Em particular, o processamento relacionado à estimativa de movimento, filtragem por desblocagem, desvio adaptativo de amostra (SAO) e transformação/quantização pode ser eficazmente realizado pela GPU, em vez da CPU, em unidades de figurações, por exemplo, tudo de uma vez.
Aplicabilidade Industrial
[00999] A presente invenção é aplicável a, por exemplo, receptores de televisão, gravadores de vídeo digital, sistemas de navegação automotiva, telefones celulares, câmeras digitais, câmeras de vídeo digitais, sistemas de teleconferência, espelhos eletrônicos, etc
Lista de Sinais de Referência
100 codificador
102 divisor
102a determinador de divisão de bloco
104 subtrator
106 transformador
108 quantizador
108a gerador de parâmetro de quantização de diferença
108b, 204b gerador de parâmetro de quantização prevista
108c, 204a gerador de parâmetro de quantização
108d, 204d armazenamento de parâmetro de quantização
108e executor de quantização
110 codificador por entropia
110a binarizador
110b, 202b controlador de contexto
110c codificador aritmético binário
112, 204 quantizador inverso
114, 206 transformador inverso
116, 208 adicionador
118, 210 memória de bloco
120, 212 filtro de loop
120a, 212a executor de filtro de desblocagem
120b, 212b executor SAO
120c, 212c, executor ALF
122, 214 memória de quadro
124, 216 intraprevisor
126, 218 interprevisor
126a, a2, b2 memória
126b derivador de imagem interpolada
126c derivador de imagem de gradiente
126d derivador de fluxo óptico
126e derivador de valor de correção
126f corretor de imagem de previsão
128, 220 controlador de previsão
130, 222 gerador de parâmetro de previsão
200 decodificador
202 decodificador por entropia
202a decodificador aritmético binário
202c desbinarizador
204e executor de quantização inversa
224 determinador de divisão
1201 determinador de limite
1202, 1204, 1206 comutador
1203 determinador de filtro
1205 executor de filtragem
1207 determinador de característica de filtro
1208 determinador de processo
a1, b1 processador

Claims (3)

  1. Codificador, caracterizado pelo fato de que compreende: um circuito; e uma memória acoplada ao circuito, em que, em operação, o circuito: alterna entre codificar um primeiro sinalizador, de acordo com se um esquema de codificação multicamada é usado para codificar uma ou mais imagens, o primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas, e em que o circuito: codifica o primeiro sinalizador quando o esquema de codificação multicamada é usado para codificar uma ou mais imagens; e não codifica o primeiro sinalizador quando o esquema de codificação multicamada não é usado para codificar uma ou mais imagens.
  2. Decodificador, caracterizado pelo fato de que compreende: um circuito; e uma memória acoplada ao circuito, em que, em operação, o circuito: alterna entre decodifidar um primeiro sinalizador, de acordo com se um esquema de codificação multicamada é usado para decodificar uma ou mais imagens, o primeiro sinalizador indicando se o uso de uma ou mais imagens de referência intercamadas para previsão intercamadas é permitido, e em que o circuito: decodifica o primeiro sinalizador quando o esquema de codificação multicamada é usado para decodificar as uma ou mais imagens; e não decodifica o primeiro sinalizador quando o esquema de codificação multicamada não é usado para decodificar uma ou mais imagens.
  3. Meio legível por computador não transitório caracterizado pelo fato de que armazena um fluxo de bits, o fluxo de bits compreendendo: informação que corresponde a se um esquema de codificação multicamada é usado para decodificar uma ou mais imagens, e de acordo com a qual um decodificador executa um processo de decodificação; e no processo de decodificação, é comutado de acordo com a informação a possibilidade de decodificar um primeiro sinalizador indicando se é permitido o uso de uma ou mais imagens de referência de intercamada para previsão de intercamada, em que, no processo de decodificação: o primeiro sinalizador é decodificado quando o esquema de codificação multicamada é usado para decodificar as uma ou mais imagens; e o primeiro sinalizador não é decodificado quando o esquema de codificação multicamada não é usado para decodificar as uma ou mais imagens.
BR122022013315-0A 2020-02-13 2021-02-01 Codificador, decodificador e meio legível por computador não transitório BR122022013315A2 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062976027P 2020-02-13 2020-02-13
US62/976,027 2020-02-13
PCT/JP2021/003491 WO2021161833A1 (ja) 2020-02-13 2021-02-01 符号化装置、復号装置、符号化方法、および復号方法
BR112022011635-7 2021-02-01

Publications (1)

Publication Number Publication Date
BR122022013315A2 true BR122022013315A2 (pt) 2022-09-13

Family

ID=77293069

Family Applications (4)

Application Number Title Priority Date Filing Date
BR122022013319-3A BR122022013319A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador e meio legível por computador não transitório
BR112022011635A BR112022011635A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador, método de codificação, método de decodificação e meio legível por computador não transitório
BR122022013315-0A BR122022013315A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador e meio legível por computador não transitório
BR122022013317-7A BR122022013317A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador e meio legível por computador não transitório

Family Applications Before (2)

Application Number Title Priority Date Filing Date
BR122022013319-3A BR122022013319A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador e meio legível por computador não transitório
BR112022011635A BR112022011635A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador, método de codificação, método de decodificação e meio legível por computador não transitório

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR122022013317-7A BR122022013317A2 (pt) 2020-02-13 2021-02-01 Codificador, decodificador e meio legível por computador não transitório

Country Status (7)

Country Link
US (1) US20220360805A1 (pt)
JP (1) JP2024023810A (pt)
KR (1) KR20220097532A (pt)
CN (1) CN114902683A (pt)
BR (4) BR122022013319A2 (pt)
MX (1) MX2022008330A (pt)
WO (1) WO2021161833A1 (pt)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11310492B2 (en) * 2019-09-20 2022-04-19 Tencent America LLC Signaling of inter layer prediction in video bitstream

Also Published As

Publication number Publication date
KR20220097532A (ko) 2022-07-07
JPWO2021161833A1 (pt) 2021-08-19
MX2022008330A (es) 2022-08-08
WO2021161833A1 (ja) 2021-08-19
BR112022011635A2 (pt) 2022-08-30
CN114902683A (zh) 2022-08-12
BR122022013319A2 (pt) 2022-09-13
JP2024023810A (ja) 2024-02-21
US20220360805A1 (en) 2022-11-10
BR122022013317A2 (pt) 2022-09-13

Similar Documents

Publication Publication Date Title
BR112021014711A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
EP4131963A1 (en) Coding device, decoding device, coding method, and decoding method
EP4075807A1 (en) Encoding device, decoding device, encoding method, and decoding method
BR112020021187A2 (pt) codificador, decodificador, método de codificação, e método de decodificação
US11770561B2 (en) Encoder, decoder, encoding method, and decoding method
US20220159273A1 (en) Encoder, decoder, and medium
BR112021001245A2 (pt) codificador, decodificador, método de codificação e método de decodificação
BR112021011019A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR112021012769A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR112021001890A2 (pt) codificador, decodificador, método de codificação e método de decodificação
EP4210339A1 (en) Reproduction device, transmission device, reproduction method, and transmission method
EP4117292A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP4027645A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP4030758A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP3975566A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP3849196A1 (en) Encoding device, decoding device, encoding method, and decoding method
BR122022013317A2 (pt) Codificador, decodificador e meio legível por computador não transitório
EP4124043A1 (en) Image processing device, image processing method, bitstream transmission device, and non-temporary storage medium
EP4075806A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP4124042A1 (en) Coding device, decoding device, image processing device, coding method, decoding method, image processing method, bitstream transmission device, and non-temporary storage medium
EP4106332A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP4068785A1 (en) Encoding device, decoding device, encoding method, and decoding method
EP4113996A1 (en) Encoding mergable bitstreams with subpictures
EP4156689A1 (en) Coding device, decoding device, coding method, and decoding method
EP4262204A1 (en) Encoder, decoder, encoding method, and decoding method

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]