BR112020025664A2 - dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação - Google Patents

dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação Download PDF

Info

Publication number
BR112020025664A2
BR112020025664A2 BR112020025664-1A BR112020025664A BR112020025664A2 BR 112020025664 A2 BR112020025664 A2 BR 112020025664A2 BR 112020025664 A BR112020025664 A BR 112020025664A BR 112020025664 A2 BR112020025664 A2 BR 112020025664A2
Authority
BR
Brazil
Prior art keywords
image
block
motion vector
predictor
current
Prior art date
Application number
BR112020025664-1A
Other languages
English (en)
Inventor
Jing Ya LI
Chong Soon Lim
Sughosh Pavan SHASHIDHAR
Ru Ling LIAO
Hai Wei Sun
Han Boon Teo
Kiyofumi Abe
Tadamasa Toma
Takahiro Nishi
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 BR112020025664A2 publication Critical patent/BR112020025664A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

DISPOSITIVO CODIFICADOR, DISPOSITIVO DECODIFICADOR, MÉTODO DE CODIFICAÇÃO E MÉTODO DE DECODIFICAÇÃO. A presente invenção refere-se a um dispositivo codificador (100) que inclui o conjunto de circuitos (160) e a memória (162) conectada ao conjunto de circuitos (160). Durante a operação, o conjunto de circuitos (160): seleciona uma primeira tabela a ser utilizada para uma partição atual, a ser codificada em uma imagem de um vídeo, dentre as tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que apresentam diferenças variáveis entre os índices; escreve um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e codifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.

Description

Relatório Descritivo da Patente de Invenção para "DISPOSITIVO CODIFICADOR, DISPOSITIVO DECODIFICADOR, MÉTODO DE CODIFICAÇÃO E MÉTODO DE DECODIFICAÇÃO". Campo Técnico
[001] A presente invenção refere-se a um codificador, a um decodificador, a um método de codificação e a um método de decodificação. Técnica Antecedente
[002] Convencionalmente, H.265 existe como um padrão para a codificação de um vídeo (ver, Literatura de Não Patente (NPL) 1). H.265 e também é referido como uma codificação de vídeo de alta eficiência (HEVC). Lista de Citação Literatura de Não Patente
[003] NPL 1: H.265 (ISO/IEC 23008-2 HEVC)/HEVC(High Efficiency Video Coding) Sumário da Invenção Problemas Técnicos
[004] Tem havido uma demanda por tal método de codificação e método de decodificação envolvendo novas etapas de aperfeiçoamento na eficiência de processo, aperfeiçoamento na qualidade de imagem, uma redução no tamanho de circuito, etc.
[005] Cada uma das configurações ou métodos descritos nas modalidades, ou em parte das modalidades na presente descrição, pode contribuir para pelo menos uma dentre, por exemplo, aperfeiçoamento na eficiência de codificação, redução na quantidade de codificação/decodificação, redução no tamanho do circuito, aceleração da codificação/decodificação, seleção adequada de elementos/operações constituintes, tal como filtros, blocos, tamanho, vetores de movimento, imagens de referência e blocos de referência, na codificação e decodificação.
[006] Deve-se notar que a presente descrição inclui configurações ou métodos que podem produzir benefícios além dos citados acima. Exemplos dos mesmos incluem uma configuração ou um método que aperfeiçoa a eficiência de codificação enquanto suprime um aumento na quantidade de processamento. Solução para os Problemas
[007] Um codificador, de acordo com um aspecto da presente descrição, é um codificador que inclui um conjunto de circuitos e uma memória conectada ao conjunto de circuitos. Em operação, o conjunto de circuitos seleciona uma primeira tabela, a ser utilizada para uma partição atual, a fim de ser codificada em uma imagem de um vídeo, dentre as tabelas a serem utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que possuem diferentes variáveis entre os índices; escreve um parâmetro indicando um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e codifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
[008] Um decodificador, de acordo com um aspecto da presente descrição, é um decodificador que inclui o conjunto de circuitos e a memória conectada ao conjunto de circuitos. Durante a operação, o conjunto de circuitos seleciona uma primeira tabela a ser utilizada para uma partição atual a ser decodificada em uma imagem de um vídeo, dentre as tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; analisa um parâmetro indicando um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e decodifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
[009] Deve-se notar que esses aspectos gerais ou específicos podem ser implementados por um sistema, um dispositivo, um método, um circuito integrado, um programa de computador, ou um meio de gravação legível por computador não transitório, tal como uma memória de leitura apenas de disco compacto (CD-ROM), ou por qualquer combinação de sistemas, dispositivos, métodos, circuitos integrados, programas de computador, ou meio de gravação.
[010] Benefícios e vantagens adicionais das modalidades descritas se tornarão aparentes a partir da especificação e dos desenhos. Os benefícios e/ou vantagens podem ser obtidos individualmente pelas várias modalidades e características da especificação e dos desenhos, nem todos os quais precisam ser fornecidos a fim de se obter um ou mais dos ditos benefícios e/ou vantagens. Efeito Vantajoso da Invenção
[011] A presente descrição fornece um dispositivo de codificação, um dispositivo de decodificação, um método de codificação, e um método de decodificação que podem aperfeiçoar a eficiência de codificação. Breve Descrição dos Desenhos
[012] A figura 1 é um diagrama em bloco ilustrando uma configuração funcional de um codificador, de acordo com uma modalidade.
[013] A figura 2 é um fluxograma indicando um exemplo de um processo de codificação geral realizado pelo codificador.
[014] A figura 3 é um diagrama conceitual ilustrando um exemplo de divisão de bloco.
[015] A figura 4A é um diagrama conceitual ilustrando um exemplo de uma configuração de fatia.
[016] A figura 4B é um diagrama conceitual ilustrando um exemplo de uma configuração de tile.
[017] A figura 5A é um gráfico ilustrando as funções básicas de transformação para vários tipos de transformação.
[018] A figura 5B é um diagrama conceitual ilustrando transformações de variação espacial ilustrativas (SVT).
[019] A figura 6A é um diagrama conceitual ilustrando um exemplo de um formato de filtro utilizado em um filtro de circuito adaptativo (ALF).
[020] A figura 6B é um diagrama conceitual ilustrando outro exemplo de um formato de filtro utilizado em um ALF.
[021] A figura 6C é um diagrama conceitual ilustrando outro exemplo de um formato de filtro utilizado em um ALF.
[022] A figura 7 é um diagrama em bloco indicando um exemplo de uma configuração específica de um filtro de circuito que funciona com um filtro de desbloqueio (DBF).
[023] A figura 8 é um diagrama conceitual indicando um exemplo de um filtro de desbloqueio possuindo uma característica de filtragem simétrica com relação a um limite de bloco.
[024] A figura 9 é um diagrama conceitual para ilustrar um limite de bloco no qual um processo de filtro de desbloqueio é realizado.
[025] A figura 10 é um diagrama conceitual indicando exemplos de valores Bs.
[026] A figura 11 é um fluxograma ilustrando um exemplo de um processo realizado por um processador de previsão do codificador.
[027] A figura 12 é um fluxograma ilustrando outro exemplo de um processo realizado pelo processo de previsão do codificador.
[028] A figura 13 é um fluxograma ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador.
[029] A figura 14 é um diagrama conceitual ilustrando sessenta e sete modos de intraprevisão utilizados na intraprevisão em uma modalidade.
[030] A figura 15 é um fluxograma ilustrando um fluxo de processamento básico ilustrativo de interprevisão.
[031] A figura 16 é um fluxograma ilustrando um exemplo da derivação de vetores de movimento.
[032] A figura 17 é um fluxograma ilustrando outro exemplo de derivação de vetores de movimento.
[033] A figura 18 é um fluxograma ilustrando outro exemplo de derivação de vetores de movimento.
[034] A figura 19 é um fluxograma ilustrando um exemplo de interprevisão no intermodo normal.
[035] A figura 20 é um fluxograma ilustrando um exemplo de interprevisão no modo de mistura.
[036] A figura 21 é um diagrama conceitual para ilustrar um exemplo de um processo de derivação de vetor de movimento no modo de mistura.
[037] A figura 22 é um fluxograma ilustrando um exemplo do processo de conversão ascendente de taxa de quadro (FRUC).
[038] A figura 23 é um diagrama conceitual para ilustrar um exemplo de combinação de padrão (combinação bilateral) entre dois blocos ao longo de uma trajetória de movimento.
[039] A figura 24 é um diagrama conceitual para ilustrar um exemplo de combinação de padrão (combinação de gabarito) entre um gabarito em uma imagem atual e um bloco em uma imagem de referência.
[040] A figura 25A é um diagrama conceitual para ilustrar um exemplo de derivação e um vetor de movimento de cada sub-bloco com base nos vetores de movimento de uma pluralidade de blocos vizinhos.
[041] A figura 25B é um diagrama conceitual para ilustrar um exemplo de derivação de um vetor de movimento de cada sub-bloco no modo afim no qual três pontos de controle são utilizados.
[042] A figura 26A é um diagrama conceitual para ilustrar um modo de mistura afim.
[043] A figura 26B é um diagrama conceitual para ilustrar um modo de mistura afim no qual dois pontos de controle são utilizados.
[044] A figura 26C é um diagrama conceitual para ilustrar um modo de mistura afim no qual três pontos de controle são utilizados.
[045] A figura 27 é um fluxograma ilustrando um exemplo de um processo no modo de mistura afim.
[046] A figura 28A é um diagrama conceitual para ilustrar um intermodo afim no qual dois pontos de controle são utilizados.
[047] A figura 28B é um diagrama conceitual para ilustrar um intermodo afim no qual três pontos de controle são utilizados.
[048] A figura 29 é um fluxograma ilustrando um exemplo de um processo no intermodo afim.
[049] A figura 30A é um diagrama conceitual para ilustrar um intermodo afim no qual um bloco atual possui três pontos de controle e um bloco vizinho possui dois pontos de controle.
[050] A figura 30B é um diagrama conceitual para ilustrar um intermodo afim no qual um bloco atual possui dois pontos de controle e um bloco vizinho possui três pontos de controle.
[051] A figura 31A é um fluxograma ilustrando um processo de modo de mistura incluindo o refinamento de vetor de movimento de decodificador (DMVR).
[052] A figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo DMVR.
[053] A figura 32 é um fluxograma ilustrando um exemplo de geração de uma imagem de previsão.
[054] A figura 33 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão.
[055] A figura 34 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão.
[056] A figura 35 é um fluxograma ilustrando um exemplo de um processo de correção de imagem de previsão realizado por um processo de compensação de movimento de bloco sobreposto (OBMC).
[057] A figura 36 é um diagrama conceitual para ilustrar um exemplo de um processo de correção de imagem de previsão realizado por um processo OBMC.
[058] A figura 37 é um diagrama conceitual para ilustrar a geração de duas imagens de previsão triangulares.
[059] A figura 38 é um diagrama conceitual para ilustrar um modelo assumindo o movimento linear uniforme.
[060] A figura 39 é um diagrama conceitual para ilustrar um exemplo de um método de geração de imagem de previsão utilizando um processo de correção de luminescência realizado por um processo de compensação de iluminação local (LIC).
[061] A figura 40 é um diagrama em bloco ilustrando um exemplo de montagem do codificador.
[062] A figura 41 é um diagrama em bloco ilustrando uma configuração funcional de um decodificador, de acordo com uma modalidade.
[063] A figura 42 é um fluxograma ilustrando um exemplo de um processo de decodificação geral realizado pelo decodificador.
[064] A figura 43 é um fluxograma ilustrando um exemplo de um processo realizado por um processador de previsão do decodificador.
[065] A figura 44 é um fluxograma ilustrando outro exemplo de um processo realizado pelo processador de previsão do decodificador.
[066] A figura 45 é um fluxograma ilustrando um exemplo de interprevisão no intermodo normal no decodificador.
[067] A figura 46 é um diagrama em bloco ilustrando um exemplo de montagem do decodificador.
[068] A figura 47 é um diagrama ilustrando um vetor de movimento delta para uso em um processo de interprevisão, de acordo com a modalidade 1.
[069] A figura 48 é um fluxograma ilustrando um processo de seleção de vetor de movimento no processo de interprevisão realizado por um interprevisor de um decodificador, de acordo com o primeiro aspecto da modalidade 1.
[070] A figura 49 ilustra um exemplo da lista 1 incluindo as tabelas para uso no processo de seleção de vetor de movimento, de acordo com o primeiro aspecto da modalidade 1.
[071] A figura 50 ilustra um exemplo da lista 2 incluindo as tabelas para uso no processo de seleção de vetor de movimento, de acordo com o primeiro aspecto da modalidade 1.
[072] A figura 51 é um fluxograma ilustrando um processo de seleção de vetor de movimento em um processo de interprevisão realizado pelo interprevisor do decodificador, de acordo com o segundo aspecto da modalidade 1.
[073] A figura 52 é um diagrama em bloco ilustrando um exemplo de implementação de um codificador, de acordo com a modalidade 1.
[074] A figura 53 é um fluxograma ilustrando um exemplo das operações realizadas pelo codificador ilustrado na figura 52.
[075] A figura 54 é um diagrama em bloco ilustrando um exemplo de implementação de um decodificador, de acordo com a modalidade
1.
[076] A figura 55 é um fluxograma ilustrando um exemplo das operações realizadas pelo decodificador ilustrado na figura 54.
[077] A figura 56 é um diagrama em bloco ilustrando uma configuração geral de um sistema de fornecimento de conteúdo para implementar um serviço de distribuição de conteúdo.
[078] A figura 57 é um diagrama conceitual ilustrando um exemplo de uma estrutura de codificação na codificação escalonável.
[079] A figura 58 é um diagrama conceitual ilustrando um exemplo de uma estrutura de codificação na codificação escalonável.
[080] A figura 59 é um diagrama conceitual ilustrando um exemplo de uma tela de exibição de uma página da rede.
[081] A figura 60 é um diagrama conceitual ilustrando um exemplo de uma tela de exibição de uma página da rede.
[082] A figura 61 é um diagrama em bloco ilustrando um exemplo de um smartphone.
[083] A figura 62 é um diagrama em bloco ilustrando um exemplo de uma configuração de um smartphone. Descrição das Modalidades Ilustrativas
[084] Por exemplo, um codificador, de acordo com um aspecto da presente descrição, é um codificador que inclui um conjunto de circuitos e uma memória conectada ao conjunto de circuitos. Durante a operação, o conjunto de circuitos seleciona uma primeira tabela, a ser utilizada para uma partição atual, a ser codificada em uma imagem de um vídeo; dentre as tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; escreve um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e codifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
[085] Com isso, quando um vetor de movimento mais preciso do que o vetor de movimento de base é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando um índice que possui um valor inferior (menos informação) na primeira tabela selecionada dentre a pluralidade de tabelas. De acordo, o codificador tem a possibilidade de aperfeiçoar o desempenho da codificação de um processo de interprevisão.
[086] Aqui, por exemplo, o conjunto de circuitos seleciona a primeira tabela pela análise de um primeiro parâmetro que especifica a primeira tabela dentre a pluralidade de tabelas.
[087] Ademais, por exemplo, o conjunto de circuitos obtém um cabeçalho de fatia de uma fatia atual incluindo a partição atual, e o primeiro parâmetro é escrito no cabeçalho de fatia.
[088] Adicionalmente, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando um vetor de movimento em um quadro codificado.
[089] Ademais, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando uma diferença do vetor de movimento em um quadro codificado.
[090] Adicionalmente, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando uma resolução de uma imagem incluindo a partição atual.
[091] Ademais, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando um ID temporal de uma imagem, incluindo a partição atual.
[092] Adicionalmente, por exemplo, o conjunto de circuitos seleciona a primeira tabela a partir da pluralidade de tabelas utilizando uma distância entre uma imagem atual, que inclui a partição atual, e uma imagem de referência.
[093] Ademais, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando um valor de um previsor de vetor de movimento na partição atual.
[094] Por exemplo, um decodificador, de acordo com um aspecto da presente descrição, é um decodificador que inclui o conjunto de circuitos e a memória conectada ao conjunto de circuitos. Durante a operação, o conjunto de circuitos seleciona uma primeira tabela, a ser utilizada para uma partição atual, a ser decodificada em uma imagem de um vídeo, dentre as tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, as tabelas incluindo os valores de correção possuindo diferenças variáveis entre os índices; analisa um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e decodifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
[095] Com isso, quando um vetor de movimento mais preciso do que o vetor de movimento de base é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando-se um índice que possui um valor menor (menos informação) na primeira tabela selecionada dentre a pluralidade de tabelas. De acordo, o decodificador tem a possibilidade de aperfeiçoar o desempenho de codificação do processo de interprevisão.
[096] Aqui, por exemplo, o conjunto de circuitos seleciona a primeira tabela pela análise de um primeiro parâmetro que especifica a primeira tabela dentre a pluralidade de tabelas.
[097] Ademais, por exemplo, o conjunto de circuitos obtém um cabeçalho de fatia de uma fatia atual incluindo a partição atual, e o primeiro parâmetro é escrito no cabeçalho de fatia.
[098] Adicionalmente, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando um vetor de movimento em um quadro decodificado.
[099] Ademais, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando uma diferença de vetor de movimento em um quadro decodificado.
[100] Adicionalmente, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando uma resolução de uma imagem que inclui a partição atual.
[101] Ademais, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando um ID temporal de uma imagem que inclui a partição atual.
[102] Adicionalmente, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando uma distância entre uma imagem atual, que inclui a partição atual, e uma imagem de referência.
[103] Ademais, por exemplo, o conjunto de circuitos seleciona a primeira tabela dentre a pluralidade de tabelas utilizando um valor de um previsor de vetor de movimento na partição atual.
[104] Por exemplo, um método de codificação, de acordo com um aspecto da presente descrição, é um método de codificação de codificação de um vídeo. O método de codificação inclui selecionar uma primeira tabela a ser utilizada para uma partição atual a ser codificada em uma imagem de um vídeo, dentre as tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; escrever um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e codificar a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
[105] Com isso, quando um vetor de movimento, mais preciso do que o vetor de movimento de base, é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando-se um índice que possui um valor menor (menos informação) na primeira tabela selecionada dentre a pluralidade de tabelas. De acordo, o método de codificação tem a possibilidade de aperfeiçoar o desempenho de codificação do processo de interprevisão.
[106] Por exemplo, um método de decodificação, de acordo com um aspecto da presente descrição, é um método de decodificação de decodificação de um vídeo. O método de decodificação inclui selecionar uma primeira tabela a ser utilizada para uma partição atual a ser decodificada em uma imagem de um vídeo, dentre as tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; analisar um parâmetro indicando um primeiro índice a ser selecionado a partir dos índices incluídos na primeira tabela; e decodificar a partição atual utilizando o vetor de movimento de base corrigido utilizando-se um valor de correção especificado pelo primeiro índice.
[107] Com isso, quando um vetor de movimento, mais preciso do que o vetor de movimento de base, é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando-se um índice que possui um valor menor (menos informação) na primeira tabela selecionada dentre a pluralidade de tabelas. De acordo, o método de decodificação tem a possibilidade de aperfeiçoar o desempenho de codificação do processo de interprevisão.
[108] Por exemplo, um decodificador, de acordo com um aspecto da presente descrição, é um decodificador que decodifica um vídeo e inclui um conjunto de circuitos e uma memória conectada ao conjunto de circuitos. Durante a operação, o conjunto de circuitos corrige um vetor de movimento de base utilizando um valor de correção para corrigir o vetor de movimento de base em uma direção predeterminada; e decodifica uma partição atual a ser processada em uma imagem de vídeo utilizando o vetor de movimento de base corrigido. O valor de correção é especificado por um primeiro parâmetro que indica um dos valores incluídos em uma tabela, e a tabela é selecionada dentre uma pluralidade de tabelas.
[109] Com isso, quando um vetor de movimento mais preciso do que o vetor de movimento de base é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando-se um índice que possui um valor menor (menos informação) na primeira tabela selecionada dentre a pluralidade de tabelas. De acordo, o método de decodificação tem a possibilidade de aperfeiçoar o desempenho de codificação do processo de interprevisão.
[110] Adicionalmente, esses aspectos gerais ou específicos podem ser implementados por um sistema, um método, um circuito integrado, um programa de computador, ou um meio de gravação legível por computador não transitório, tal como uma memória de leitura apenas em disco compacto (CD-ROM), ou por qualquer combinação de sistemas, dispositivos, métodos, circuitos integrados, programas de computador, ou meio de gravação.
[111] Doravante, as modalidades serão descritas com referência aos desenhos.
[112] Note-se que as modalidades descritas abaixo ilustram, cada uma, um exemplo geral ou específico. Os valores numéricos, formatos, materiais, componentes, a disposição e conexão dos componentes, etapas, a relação e ordem das etapas, etc., indicados nas modalidades a seguir, são meramente ilustrativos, e não devem limitar o escopo das reivindicações.
[113] As modalidades de um codificador e de um decodificador serão descritas abaixo. As modalidades são exemplos de um codificador e de um decodificador ao qual os processos e/ou configurações, apresentados na descrição dos aspectos da presente descrição, são aplicáveis. Os processos e/ou configurações também podem ser implementados em um codificador e um decodificador diferentes dos apresentados de acordo com as modalidades. Por exemplo, com relação aos processos e/ou configurações, como aplicados às modalidades, qualquer um dos seguintes pode ser implementado:
[114] (1) qualquer um dos componentes do codificador ou do decodificador, de acordo com as modalidades apresentadas na descrição dos aspectos da presente descrição, pode ser substituído ou combinado com outro componente apresentado em outro local na descrição de aspectos da presente descrição.
[115] (2) no codificador ou no decodificador, de acordo com as modalidades, as mudanças discricionárias podem ser realizadas às funções ou processos realizados por um ou mais componentes do codificador ou decodificador, tal 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 outro local na descrição dos aspectos da presente descrição.
[116] (3) nos métodos implementados pelo codificador ou pelo decodificador, de acordo com as modalidades, as mudanças discricionárias podem ser realizadas, tal 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 outro local na descrição dos aspectos da presente descrição.
[117] (4) um ou mais componentes incluídos no codificador ou no decodificador, de acordo com as modalidades, podem ser combinados com um componente apresentado em outro local na descrição dos aspectos da presente descrição, podem ser combinados com um componente que inclui uma ou mais funções apresentadas em outro local na descrição dos aspectos da presente descrição, e podem ser combinados com um componente que implementa um ou mais processos implementados por um componente apresentado na descrição de aspectos da presente descrição.
[118] (5) um componente incluindo uma ou mais funções do codificador ou do decodificador, de acordo com as modalidades, ou um componente que implementa um ou mais processos do codificador ou do decodificador, de acordo com as modalidades, podem ser combinados ou substituídos por um componente apresentado em outro local na descrição dos aspectos da presente descrição, com um componente incluindo uma ou mais funções apresentadas em outro local na descrição de aspectos da presente descrição, ou com um componente que implementa um ou mais processos apresentados em outro local na descrição dos aspectos da presente descrição.
[119] (6) nos métodos implementados pelo codificador ou pelo 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 outro local na descrição de aspectos da presente descrição ou com qualquer processo correspondente ou equivalente.
[120] (7) um ou mais processos incluídos nos métodos implementados pelo codificador ou pelo decodificador, de acordo com as modalidades, podem ser combinados com um processo apresentado em outro local na descrição dos aspectos da presente descrição.
[121] (8) a implementação dos processos e/ou configurações apresentados na descrição dos aspectos da presente descriçã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 implementados em um dispositivo utilizado para uma finalidade diferente do codificador de imagem em movimento ou decodificador de imagem em movimento descritos nas modalidades. Modalidade 1 Codificador
[122] Primeiro, um codificador, de acordo com uma modalidade, será descrito. A figura 1 é um diagrama em bloco ilustrando uma configuração funcional do codificador 100, de acordo com a modalidade. O codificador 100 é um codificador de vídeo que codifica um vídeo em unidades de um bloco.
[123] Como ilustrado na figura 1, o codificador 100 é um aparelho que codifica uma imagem em unidades de um bloco, e inclui o divisor 102, o subtraidor 104, o transformador 106, o quantizador 108, o codificador por entropia 110, o quantizador inverso 112, o transformador inverso 114, o somador 116, a memória de bloco 118, o filtro de circuito 120, a memória de quadro 122, o intraprevisor 124, o interprevisor 126 e o controlador de previsão 128.
[124] O codificador 100 é implementado como, por exemplo, um processador genérico e uma memória. Nesse caso, quando um programa de software armazenado na memória é executado pelo processador, o processador funciona como o divisor 102, o subtraidor 104, o transformador 106, o quantizador 108, o codificador por entropia 110, o quantizador inverso 112, o transformador inverso 114, o somador 116, o filtro de circuito 120, o intraprevisor 124, o interprevisor 126 e o controlador de previsão 128. Alternativamente, o codificador 100 pode ser implementado como um ou mais circuitos eletrônicos dedicados correspondendo ao divisor 102, subtraidor 104, transformador 106, quantizador 108, codificador por entropia 110, quantizador inverso 112, transformador inverso 114, somador 116, filtro de circuito 120,
intraprevisor 124, interprevisor 126 e controlador de previsão 128.
[125] Doravante, um fluxo geral de processos realizados pelo codificador 100 é descrito e, então, cada um dos elementos constituintes incluídos no codificador 100 será descrito. Fluxo Geral do Processo de Codificação
[126] A figura 2 é um fluxograma ilustrando um exemplo de um processo de codificação geral realizado pelo codificador 100.
[127] Primeiro, o divisor 102 do codificador 100 divide cada uma das imagens incluídas em uma imagem de entrada, que é um vídeo em uma pluralidade de blocos possuindo um tamanho fixo (por exemplo, 128 x 128 pixels) (Etapa Sa_1). O divisor 102, então, seleciona um padrão de divisão para o bloco de tamanho fixo (também referido como um formato de bloco) (Etapa Sa_2). Em outras palavras, o divisor 102 divide adicionalmente 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 dentre a pluralidade de blocos, Etapas Sa_3 a Sa_9 para o bloco (que é um bloco atual a ser codificado).
[128] Em outras palavras, um processador de previsão, que inclui todo ou parte do intraprevisor 124, interprevisor 126 e controlador de previsão 128 gera um sinal de previsão (também referido como um bloco de previsão) do bloco atual a ser codificado (também referido como um bloco atual) (Etapa Sa_3).
[129] A seguir, o subtraidor 104 gera uma diferença entre o bloco atual e um bloco de previsão como um resíduo de previsão (também referido como um bloco de diferença) (Etapa Sa_4).
[130] A seguir, o transformador 106 transforma o bloco de diferença e o quantizador 108 quantiza o resultado, para gerar uma pluralidade de coeficientes quantizados (Etapa Sa_5). Deve-se notar que o bloco que possui a pluralidade de coeficientes quantizados também é referido como um bloco de coeficiente.
[131] A seguir, o codificador por entropia 110 codifica (especificamente, codifica por entropia) o bloco de coeficiente e um parâmetro de previsão relacionado com a geração de um sinal de previsão para gerar um sinal codificado (Etapa Sa_6). Deve-se notar que o sinal codificado também é referido como uma sequência de bits codificados, uma sequência de bits comprimidos, ou uma sequência.
[132] A seguir, o quantizador inverso 112 realiza a quantização inversa do bloco de coeficiente e o transformador inverso 114 realiza a transformação inversa do resultado, para restaurar uma pluralidade de resíduos de previsão (isso é, um bloco de diferença) (Etapa Sa_7).
[133] A seguir, o somador 116 adiciona o bloco de previsão ao bloco de diferença restaurada para reconstruir o bloco atual como uma imagem reconstruída (também referida como um bloco reconstruído ou um bloco de imagem decodificada) (Etapa Sa_8). Dessa forma, a imagem reconstruída é gerada.
[134] Quando a imagem reconstruída é gerada, o filtro de circuito 120 realiza a filtragem da imagem reconstruída como necessário (Etapa Sa_9).
[135] O codificador 100, então, determina se a codificação de toda a imagem foi terminada (Etapa Sa_10). Quando da determinação de que a codificação não foi terminada ainda (Não na Etapa Sa_10), os processos da Etapa Sa_2 são executados repetidamente.
[136] Apesar de o codificador 100 selecionar um padrão de divisão para um bloco de tamanho fixo, e codificar 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 padrão correspondente dentre uma pluralidade de padrões de divisão. Nesse caso, o codificador 100 pode avaliar um custo para cada um dentre a pluralidade de padrões de divisão, e, por exemplo, pode selecionar o sinal codificado obtenível pela codificação de acordo com o padrão de divisão que resulta no custo mais baixo como um sinal codificado que é enviado.
[137] Como ilustrado, os processos nas Etapas Sa_1 a Sa_10 são realizados sequencialmente pelo codificador 100. Alternativamente, dois ou mais dos processos podem ser realizados em paralelo, os processos podem ser reordenados, etc. Divisor
[138] O divisor 102 divide cada uma das imagens incluídas em um vídeo de entrada em uma pluralidade de blocos, e envia cada bloco para o subtraidor 104. Por exemplo, o divisor 102 primeiro divide uma imagem em blocos de um tamanho fixo (por exemplo, 128 x 128). Outros tamanhos de bloco fixo podem ser empregados. O bloco de tamanho fixo é referido, também, como uma unidade de árvore de codificação (CTU). O divisor 102, então, divide cada bloco de tamanho fixo em blocos de tamanhos variáveis (por exemplo, 64 x 64 ou menor), com base na divisão de bloco de quadtree recursivo e/ou de á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 codificação (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 processamento, não existe necessidade de se diferenciar entre CU, PU e TU; todos ou alguns dos blocos em uma imagem podem ser processados em unidades de uma CU, uma PU ou uma TU.
[139] A figura 3 é um diagrama conceitual ilustrando um exemplo de divisão de bloco de acordo com uma modalidade. Na figura 3, as linhas sólidas representam os limites de blocos dos blocos divididos pela divisão de bloco quadtree, e as linhas tracejadas representam os limites de bloco dos blocos divididos pela divisão de bloco de árvore binária.
[140] Aqui, o bloco 10 é um bloco quadrado possuindo 128 x 128 pixels (bloco de 128 x 128). Esse bloco de 128 x 128 10 é primeiramente dividido em quatro blocos quadrados de 64 x 64 (divisão de bloco quadtree).
[141] O bloco superior esquerdo de 64 x 64 é adicionalmente dividido verticalmente em dois blocos retangulares de 32 x 64, e o bloco esquerdo de 32 x 64 é adicionalmente dividido verticalmente em dois blocos retangulares de 16 x 64 (divisão de bloco de árvore binária). Como resultado disso, o bloco superior esquerdo de 64 x 64 é dividido em dois blocos de 16 x 64 11 e 12 e um bloco de 32 x 64 13.
[142] O bloco superior direito de 64 x 64 é dividido horizontalmente em dois blocos retangulares de 64 x 32 14 e 15 (divisão de bloco de árvore binária).
[143] O bloco inferior esquerdo de 64 x 64 é primeiramente dividido em quatro blocos quadrados de 32 x 32 (divisão de bloco quadtree). O bloco superior esquerdo e o bloco inferior direito, dentre os quatro blocos de 32 x 32, são divididos adicionalmente. O bloco superior esquerdo de 32 x 32 é dividido verticalmente em dois blocos retangulares de 16 x 32, e o bloco direito de 16 x 32 é adicionalmente dividido horizontalmente em dois blocos de 16 x 16 (divisão de bloco de árvore binária). O bloco inferior direito de 32 x 32 é horizontalmente dividido em dois blocos de 32 x 16 (divisão de bloco de árvore binária). Como resultado disso, o bloco inferior esquerdo de 64 x 64 é dividido no bloco de 16 x 32 16, dois blocos de 16 x 16 17 e 18, dois blocos de 32 x 32 19 e 20, e dois blocos de 32 x 16 21 e 22.
[144] O bloco inferior direito de 64 x 64 não é dividido.
[145] Como descrito acima, na figura 3, o bloco 10 é dividido em treze blocos de tamanho variável de 11 a 23 com base na divisão de bloco de quadtree recursivo e árvore binária. Esse tipo de divisão também é referido como divisão de quadtree mais árvore binária (QTBT).
[146] Deve-se notar que, na figura 3, um bloco é dividido em quatro ou dois blocos (divisão de bloco quadtree ou de árvore binária), mas a divisão não está limitada a esses exemplos. Por exemplo, um bloco pode ser dividido em três blocos (divisão de bloco ternário). A divisão que inclui tal divisão de bloco ternário também é referida como divisão de árvore de múltiplos tipos (MBT). Estrutura de Imagem: Fatia/Tile
[147] Uma imagem pode ser configurada em unidades de uma ou mais fatias ou tiles a fim de decodificar a imagem em paralelo. A imagem configurada em unidades de uma ou mais fatias ou tiles pode ser configurada pelo divisor 102.
[148] As fatias são unidades de codificação básica incluídas em uma imagem. Uma imagem pode incluir, por exemplo, uma ou mais fatias. Adicionalmente, uma fatia inclui uma ou mais unidades de árvore de codificação sucessivas (CTU).
[149] A figura 4A é um diagrama conceitual ilustrando um exemplo de uma configuração de fatia. Por exemplo, uma imagem inclui CTUs de 11 x 8, e é dividida em quatro fatias (fatias de 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 imagem pertence a uma das fatias. O formato de cada fatia é um formato obtenível pela divisão horizontal da imagem. Um limite de cada fatia não precisa coincidir com uma extremidade da 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 digitalização raster. Uma fatia inclui informação de cabeçalho e dados codificados. Características da fatia podem ser descritas na informação de cabeçalho. As características incluem um endereço de CTU e uma CTU superior na fatia, um tipo de fatia, etc.
[150] Um tile é uma unidade de uma região retangular incluída em uma imagem. Cada um dos tiles pode receber um número referido como
TileId na ordem de digitalização raster.
[151] A figura 4B é um diagrama conceitual indicando um exemplo de uma configuração de tile. Por exemplo, uma imagem inclui CTUs de 11 x 8 e é dividida em quatro tiles de regiões retangulares (tiles de 1 a 4). Quando os tiles são utilizados, a ordem de processamento das CTUs é alterada da ordem de processamento no caso no qual nenhum tile é utilizado. Quando nenhum tile é utilizado, as CTUs em uma imagem são processadas na ordem de digitalização raster. Quando os tiles são utilizados, pelo menos uma CTU em cada um dos tiles é processada na ordem de digitalização raster. Por exemplo, como ilustrado na figura 4B, a ordem de processamento das CTUs incluídas no tile 1 é a ordem que começa a partir da extremidade esquerda da primeira fileira do tile 1 na direção da extremidade direita da primeira fileira do tile 1 e, então, começa a partir da extremidade esquerda da segunda fileira de tile 1 na direção da extremidade direita da segunda fileira de tile 1.
[152] É notado que um tile pode incluir uma ou mais fatias, e uma fatia pode incluir um ou mais tiles. Subtraidor
[153] O subtraidor 104 subtrai um sinal de previsão (amostra de previsão que é registrada a partir do controlador de previsão 128 indicado abaixo) a partir de um sinal original (amostra original) em unidades de um bloco registrado a partir do divisor 102 e dividido pelo divisor 102. Em outras palavras, o subtraidor 104 calcula os erros de previsão (também referidos como resíduos) de um bloco a ser codificado (doravante também referido como um bloco atual). O subtraidor 104, então, envia os erros de previsão calculados (resíduos) para o transformador 106.
[154] O sinal original é um sinal que foi registrado no codificador 100 e representa uma imagem de cada imagem incluída em um vídeo (por exemplo, um sinal de luminescência e dois sinais de crominância).
Doravante, um sinal que representa uma imagem também é referido como uma amostra. Transformador
[155] O transformador 106 transforma os erros de previsão em domínio espacial em coeficientes de transformação em domínio de frequência, e envia os coeficientes de transformação para o quantizador
108. Mais especificamente, o transformador 106 aplica, por exemplo, uma transformação de cosseno discreto definida (DCT) ou transformação de seno discreto (DST) aos erros de previsão no domínio espacial. A DCT ou DST definida pode ser pré-definida.
[156] Deve-se notar que o transformador 106 pode selecionar, de forma adaptativa, um tipo de transformação dentre uma pluralidade de tipos de transformação, e transformar os erros de previsão em coeficientes de transformação pela utilização de uma função de base de transformação que corresponde ao tipo de transformação selecionado. Esse tipo de transformação também é referido como transformação explícita de múltiplos núcleos (EMT) ou transformação múltipla adaptativa (AMT).
[157] Os tipos de transformação incluem, por exemplo, DCT-II, DCT-V, DCT-VIII, DST-I e DST-VII. A figura 5A é um gráfico indicando as funções básicas de transformação para os tipos de transformação ilustrativos. Na figura 5A, N indica o número de pixels de entrada. Por exemplo, a seleção de um tipo de transformação dentre a pluralidade de tipos de transformação pode depender de um tipo de previsão (uma intraprevisão ou interprevisão), e pode depender de um modo de intraprevisão.
[158] A informação que indica se aplica tal EMT ou AMT (referida, por exemplo, como um indicador EMT ou um indicador AMT) e a informação que indica o tipo de transformação selecionado, é normalmente sinalizada no nível de CU. Deve-se notar que a sinalização de tal informação não precisa, necessariamente, ser realizada no nível da CU, e pode ser realizada em outro nível (por exemplo, no nível de sequência de bits, nível de imagem, nível de fatia, nível de tile, ou nível de CTU).
[159] Adicionalmente, o transformador 106 pode transformar adicionalmente os coeficientes transformados (resultado da transformação). Tal transformação adicional também é referida como uma transformação secundária adaptativa (AST) ou transformação secundária não separável (NSST). Por exemplo, o transformador 106 realiza a transformação adicional em unidades de um sub-bloco (por exemplo, sub-bloco de 4 x 4) incluídas em um bloco de coeficiente de transformação correspondendo a um erro de intraprevisão. A informação que indica se aplica NSST e a informação relacionada com uma matriz de transformação para uso na NSST é normalmente sinalizada no nível de CU. Deve-se notar que a sinalização de tal informação 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 imagem, nível de fatia, nível de tile, ou nível de CTU).
[160] O transformador 106 pode utilizar 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 várias vezes pela realização, em separado, de uma transformação para cada uma dentre as várias direções, de acordo com o número de dimensões de entradas. Uma transformação não separável é um método de realização de uma transformação coletiva na qual duas ou mais dimensões nas entradas multidimensionais são coletivamente consideradas uma única dimensão.
[161] Em um exemplo de uma transformação não separável, quando uma entrada é um bloco de 4 x 4, o bloco de 4 x 4 é considerado um conjunto singular que inclui dezesseis elementos, e a transformação aplica uma matriz de transformação de 16 x 16 ao conjunto.
[162] Em outro exemplo de uma transformação não separável, um bloco de entrada de 4 x 4 é considerado um conjunto singular incluindo dezesseis elementos, e, então, uma transformação (transformação givens de hipercubo), na qual a revolução givens é realizada no conjunto várias vezes, pode ser realizada.
[163] Na transformação no transformador 106, os tipos de bases a serem transformadas no domínio de frequência, de acordo com as regiões em uma CU, podem ser comutados. Exemplos incluem transformações espacialmente variáveis (SVT). Na SVT, como ilustrado na figura 5B, as CUs são divididas em duas regiões iguais, horizontalmente e verticalmente, e apenas uma das regiões é transformada no domínio de frequência. Um tipo de base de transformação pode ser determinado para cada região. Por exemplo, DST7 e DST8 são utilizadas. Nesse exemplo, apenas uma dessas duas regiões na CU é transformada, e a outra não é transformada. No entanto, ambas essas duas regiões podem ser transformadas. Adicionalmente, o método de divisão não está limitado à divisão em duas regiões iguais, e pode ser mais flexível. Por exemplo, a CU pode ser dividida em quatro regiões iguais, ou a informação que indica a divisão pode ser codificada separadamente e ser sinalizada da mesma forma que a divisão CU. Deve-se notar que SVT também é referida como transformação de sub-bloco (SBT). Quantizador
[164] O quantizador 108 quantiza os coeficientes de transformação enviados a partir do transformador 106. Mais especificamente, o quantizador 108 digitaliza, em uma ordem de digitalização determinada, os coeficientes de transformação do bloco atual, e quantiza os coeficientes de transformação digitalizados com base nos parâmetros de quantização (QP) que correspondem aos coeficientes de transformação. O quantizador 108, então, envia os coeficientes de transformação quantizados (doravante também referidos como coeficientes quantizados) do bloco atual para o codificador por entropia 110 e o quantizador inverso 112. A ordem de digitalização determinada pode ser predeterminada.
[165] Uma ordem de digitalização determinada é uma ordem para coeficientes de transformação de quantização/quantização inversa. Por exemplo, uma ordem de digitalização determinada pode ser definida como a ordem ascendente de frequência (de frequência baixa para alta) ou ordem descendente de frequência (de frequência alta para baixa).
[166] 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, o erro de quantização aumenta.
[167] Adicionalmente, uma matriz de quantização pode ser utilizada para quantização. Por exemplo, vários tipos de matrizes de quantização podem ser utilizados de forma correspondente aos tamanhos de transformação de frequência, tal como 4 x 4 e 8 x 8, modos de previsão, tal como intraprevisão e interprevisão, e componentes de pixel, tal como componentes de pixel de luminescência e crominância. Deve-se notar que quantização significa a digitalização dos valores amostrados em intervalos determinados de forma correspondente aos níveis determinados. Nesse campo técnico, a quantização pode ser referida utilizando-se outras expressões, tal como arredondamento e escalonamento, e pode utilizar o arredondamento e escalonamento. Os intervalos e níveis determinados podem ser predeterminados.
[168] Os métodos que utilizam as matrizes de quantização incluem um método utilizando uma matriz de quantização que foi configurada diretamente no lado do codificador e um método utilizando uma matriz de quantização que foi configurado como um padrão (matriz padrão). No lado do codificador, uma matriz de quantização adequada para as características de uma imagem pode ser configurada pela configuração direta de uma matriz de quantização. Esse caso, no entanto, apresenta uma desvantagem de aumento de uma quantidade de codificação para a codificação da matriz de quantização.
[169] Existe um método de quantização de um coeficiente de alta frequência e um coeficiente de baixa frequência sem utilização de uma matriz de quantização. Deve-se notar que esse método é equivalente a um método que utiliza uma matriz de quantização (matriz plana) cujos coeficientes possuem o mesmo valor.
[170] A matriz de quantização pode ser especificada utilizando-se, por exemplo, um conjunto de parâmetros de sequência (SPS), ou um conjunto de parâmetros de imagem (PPS). O PPS inclui um parâmetro que é utilizado para uma sequência, e o PPS inclui um parâmetro que é utilizado para uma imagem. Cada um dentre o SPS e o PPS pode ser simplesmente referido como um conjunto de parâmetros. Codificador por Entropia
[171] O codificador por entropia 110 gera um sinal codificado (sequência de bits codificados) com base nos coeficientes quantizados que foram registrados a partir do quantizador 108. Mais especificamente, o codificador por entropia 110, por exemplo, binariza os coeficientes quantizados, e codifica de forma aritmética o sinal binário, e envia uma sequência de bits comprimidos. Quantizador Inverso
[172] O quantizador inverso 112 quantiza de forma inversa os coeficientes quantizados que foram registrados a partir do quantizador
108. Mais especificamente, o quantizador inverso 112 quantiza de forma inversa, em uma ordem de digitalização determinada, os coeficientes quantizados do bloco atual. O quantizador inverso 112, então, envia os coeficientes de transformação quantizados inversos do bloco atual para o transformador inverso 114. A ordem de digitalização determinada pode ser predeterminada. Transformador Inverso
[173] O transformador inverso 114 restaura os erros de previsão (resíduos) pela transformação inversa dos coeficientes de transformação que foram registrados a partir do quantizador inverso
112. Mais especificamente, o transformador inverso 114 restaura os erros de previsão do bloco atual pela aplicação de uma transformação inversa que corresponde à transformação aplicada pelo transformador 106 nos coeficientes de transformação. O transformador inverso 114, então, envia os erros de previsão restaurados para o somador 116.
[174] Deve-se notar que visto que a informação é perdida na quantização, os erros de previsão restaurados não coincidem com os erros de previsão calculados pelo subtraidor 104. Em outras palavras, os erros de previsão restaurados incluem, normalmente, os erros de quantização. Somador
[175] O somador 116 reconstrói o bloco atual pela adição de erros de previsão que foram registrados a partir do transformador inverso 114 e amostras de previsão que foram registradas a partir do controlador de previsão 128. O somador 116, então, envia o bloco reconstruído para a memória de bloco 118 e filtro de circuitos 120. Um bloco reconstruído também é referido como um bloco decodificado local. Memória de Bloco
[176] A memória de bloco 118 é, por exemplo, o armazenador para armazenar blocos em uma imagem a ser codificada (doravante referida como uma imagem atual), que é referida como intraprevisão. Mais especificamente, a memória de bloco 118 armazena blocos reconstruídos enviados pelo somador 116.
Memória de Quadro
[177] A memória de quadro 122 é, por exemplo, o armazenador para armazenar imagens de referência para uso na interprevisão, e também é referida como um armazenador de quadro. Mais especificamente, a memória de quadro 122 armazena blocos reconstruídos filtrados pelo filtro de circuito 120. Filtro de Circuito
[178] O filtro de circuito 120 aplica um filtro de circuito aos blocos reconstruídos pelo somador 116, e envia os blocos reconstruídos filtrados para a memória do quadro 122. Um filtro de circuito é um filtro utilizado em um circuito de codificação (filtro em circuito) e inclui, por exemplo, um filtro de desbloqueio (DF ou DBF), um desvio adaptativo de amostra (SAO) e um filtro de circuito adaptativo (ALF).
[179] Em um ALF, um filtro de erro de quadrados médios para remoção de artefatos de compressão é aplicado. Por exemplo, um filtro selecionado dentre uma pluralidade de filtros, com base na direção e atividade dos gradientes locais, é aplicado a cada um dos sub-blocos de 2 x 2 no bloco atual.
[180] Mais especificamente, cada sub-bloco (por exemplo, cada um dos sub-blocos 2 x 2) é categorizado em uma dentre uma pluralidade de classes (por exemplo, quinze ou vinte e cinco classes). A classificação do sub-bloco é baseada em direcionalidade e atividade de gradiente. Por exemplo, o índice de classificação C (por exemplo, C = 5D + A) é derivado com base na direcionalidade de gradiente D (por exemplo, de 0 a 2 ou de 0 a 4) e na atividade de gradiente A (por exemplo, de 0 a 4). Então, com base no índice de classificação C, cada sub-bloco é categorizado em uma dentre uma pluralidade de classes.
[181] Por exemplo, a direcionalidade de gradiente D é calculada pela comparação de gradientes dentre uma pluralidade de direções (por exemplo, as direções horizontal, vertical e duas direções diagonais).
Ademais, por exemplo, a atividade de gradiente A é calculada pela adição de gradientes, dentre uma pluralidade de direções e quantização do resultado da adição.
[182] O filtro a ser utilizado para cada sub-bloco é determinado dentre a pluralidade de filtros com base no resultado de tal categorização.
[183] O formato de filtro a ser utilizado em um ALF é, por exemplo, um formato de filtro simétrico circular. As figuras de 6A a 6C ilustram exemplos de formatos de filtro utilizados em ALFs. A figura 6A ilustra um filtro em formato de diamante de 5 x 5, a figura 6B ilustra um filtro em formato de diamante de 7 x 7, e a figura 6C ilustra um filtro em formato de diamante de 9 x 9. A informação que indica o formato de filtro é normalmente sinalizada no nível de imagem. Deve-se notar que a sinalização de tal informação que indica o formato de filtro não precisa, necessariamente, ser realizada no nível de imagem, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de tile, nível de CTU ou nível de CU).
[184] O LIGAR e DESLIGAR do ALF é determinado, por exemplo, no nível de imagem ou nível de CU. Por exemplo, a decisão de se é necessário se aplicar o ALF à luminescência pode ser tomada no nível de CU, e a decisão de se é necessário se aplicar ALF à crominância pode ser tomada no nível de imagem. A informação que indica o LIGAR ou DESLIGAR do ALF é normalmente sinalizada no nível de imagem ou nível de CU. Deve-se notar que a sinalização da informação que indica o LIGAR ou DESLIGAR do ALF não precisa, necessariamente, ser realizada no nível de imagem 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 tile ou nível de CTU).
[185] O conjunto de coeficientes para a pluralidade de filtros selecionáveis (por exemplo, de quinze até vinte e cinco filtros) é normalmente sinalizado no nível de imagem. É notado que a sinalização do conjunto de coeficientes não precisa, necessariamente, ser realizada no nível de imagem, e pode ser realizada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de tile, nível de CTU, nível de CU ou nível de sub-bloco). Filtro de Circuito > Filtro de Desbloqueio
[186] Em um filtro de desbloqueio, o filtro de circuito 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.
[187] A figura 7 é um diagrama em bloco ilustrando um exemplo de uma configuração específica do filtro de circuito 120 que funciona como um filtro de desbloqueio.
[188] O filtro de circuito 120 inclui o determinador de limite 1201; o determinador de filtro 1203; o executor de filtragem 1205; o determinador de processo 1208; o determinador de característica de filtro 1207; e os comutadores 1202, 1204 e 1206.
[189] O determinador de limite 1201 determina se um pixel a ser filtrado por desbloqueio (isso é, um pixel atual) está presente em torno de um limite de bloco. O determinador de limite 1201, então, envia o resultado da determinação para o comutador 1202 e o determinador de processamento 1208.
[190] No caso no qual o determinador de limite 1201 determinou que um pixel atual está presente em torno de um limite de bloco, o comutador 1202 envia uma imagem não filtrada para o comutador 1204. No caso oposto, no qual o determinador de limite 1201 determinou que nenhum pixel atual está presente em torno de um limite de bloco, o comutador 1202 envia uma imagem não filtrada para o comutador 1206.
[191] O determinador de filtro 1203 determina se realiza a filtragem de desbloqueio do pixel atual, com base no valor de pixel de pelo menos um pixel circundante localizado em torno do pixel atual. O determinador de filtro 1203, então, envia o resultado da determinação para o comutador 1204 e para o determinador de processamento 1208.
[192] No caso no qual o determinador de filtro 1203 determinou a realização da filtragem de desbloqueio do pixel atual, o comutador 1204 envia a imagem não filtrada, obtida através do comutador 1202, para o executor de filtragem 1205. No caso oposto, no qual o determinador de filtro 1203 determinou a não realização da filtragem de desbloqueio do pixel atual, o comutador 1204 envia a imagem não filtrada, obtida através do comutador 1202, para o comutador 1206.
[193] Quando da obtenção da imagem não filtrada através dos comutadores 1202 e 1204, o executor de filtragem 1205 executa, para o pixel atual, a filtragem de desbloqueio com a característica de filtro determinada pelo determinador de característica de filtro 1207. O executor de filtragem 1205, então, envia o pixel filtrado para o comutador 1206.
[194] Sob o controle do determinador de processamento 1208, o comutador 1206 envia, seletivamente, um pixel que não foi filtrado por desbloqueio, e um pixel que foi filtrado por desbloqueio pelo executor de filtragem 1205.
[195] O determinador de processamento 1208 controla o comutador 1206 com base nos resultados ou na determinação feita pelo determinador de limite 1201 e determinador de filtro 1203. Em outras palavras, o determinador de processamento 1208 faz com que o comutador 1206 envie o pixel que foi filtrado por desbloqueio quando o determinador de limite 1201 determinar que o pixel atual está presente em torno do limite do bloco e o determinador de filtro 1203 determinar a realização da filtragem de desbloqueio do pixel atual. Adicionalmente, além do caso acima, o determinador de processamento 1208 faz com que o comutador 1206 envie o pixel que não foi filtrado por desbloqueio.
Uma imagem filtrada é enviada, a partir do comutador 1206, pela repetição do envio de um pixel nessa direção.
[196] A figura 8 é um diagrama conceitual indicando um exemplo de um filtro de desbloqueio possuindo uma característica de filtragem simétrica com relação a um limite de bloco.
[197] Em um processo de filtragem de desbloqueio, um dos dois filtros de desbloqueio possuindo características diferentes, isso é, um filtro forte e um filtro fraco, é selecionado utilizando-se valores de pixel e parâmetros de quantização. 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 8, os valores de pixel do pixel respectivo q0 a q2 são alterados para valores de pixel q'0 a q'2 pela realização, por exemplo, de computações de acordo com as expressões abaixo. q'0 = (p1 + 2 x p0 + 2 x q0 + 2 x q1 + q2 + 4)/8 q'1 = (p0 + q0 + q1 + q2 + 2)/4 q'2 = (p0 + q0 + q1 + 3 x q2 + 2 x q3 + 4)/8
[198] Deve-se notar que, nas expressões acima, p0 a p2 e q0 a q2 são os valores de pixel dos pixels respectivos p0 a p2 e pixels q0 a q2. Adicionalmente, q3 é o valor de pixel do pixel vizinho q3 localizado no lado oposto do pixel q2 com relação ao limite de bloco. Adicionalmente, no lado direito de cada uma das expressões, coeficientes, que são multiplicados pelos valores de pixel respectivos, dos pixels a serem utilizados para filtragem de desbloqueio, são coeficientes de filtro.
[199] Adicionalmente, na filtragem de desbloqueio, a fixação pode ser realizada de modo que os valores de pixel calculados não sejam configurados sobre um valor limite. No processo de fixação, os valores de pixel calculados de acordo com as expressões acima são fixados em um valor obtido de acordo com "um valor de pixel de computação +/- 2 x a o valor limite" utilizando o valor limite determinado com base em um parâmetro de quantização. Dessa forma, é possível se evitar a suavização excessiva.
[200] A figura 9 é um diagrama conceitual para ilustrar um limite de bloco no qual um processo de filtro de desbloqueio é realizado. A figura 10 é um diagrama conceitual indicando exemplos de valores Bs.
[201] O limite de bloco no qual o processo de filtro de desbloqueio é realizado é, por exemplo, um limite entre as unidades de previsão (PUs) que possuem blocos de pixel de 8 x 8, como ilustrado na figura 9, ou um limite entre as unidades de transformação (TU). O processo de filtro de desbloqueio pode ser realizado em unidades de quatro fileiras ou quatro colunas. Primeiro, os valores de intensidade de limite (Bs) são determinados como indicado na figura 10 para o bloco P e o bloco Q, ilustrados na figura 9.
[202] De acordo com os valores Bs na figura 10, é determinado se a realização dos processos de filtro de desbloqueio dos limites de bloco, pertencentes à mesma imagem, utilizando intensidades diferentes, deve ocorrer. O processo de filtro de desbloqueio para um sinal de crominância é realizado quando um valor Bs é igual a 2. O processo de filtro de desbloqueio para um sinal de luminescência é realizado quando um valor Bs é igual a 1 ou mais, e uma condição determinada é satisfeita. A condição determinada pode ser predeterminada. Deve-se notar que as condições para a determinação de valores Bs não estão limitadas às indicadas na figura 10 e um valor Bs pode ser determinado com base em outro parâmetro. Processador de Previsão (Intraprevisor, Interprevisor, Controlador de Previsão)
[203] A figura 11 é um fluxograma ilustrando um exemplo de um processo realizado pelo processador de previsão do codificador 100. É notado que o processador de previsão inclui todos ou parte dos elementos constituintes a seguir: intraprevisor 124; interprevisor 126; e controlador de previsão 128.
[204] O processador de precisão gera uma imagem de previsão de um bloco atual (Etapa Sb_1). Essa imagem de previsão também é referida 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. Especificamente, o processador de previsão gera a imagem de previsão do bloco atual utilizando uma imagem reconstruída que já foi obtida através da geração de um bloco de previsão, geração de um bloco de diferença, geração de um bloco de coeficiente, restauração de um bloco de diferença, e geração de um bloco de imagem decodificada.
[205] A imagem reconstruída pode ser, por exemplo, uma imagem em uma imagem de referência, ou uma imagem de um bloco codificado em uma imagem atual, que é a imagem que inclui o bloco atual. O bloco codificado na imagem atual é, por exemplo, um bloco vizinho ao bloco atual.
[206] A figura 12 é um fluxograma ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador 100.
[207] O processador de previsão gera uma imagem de previsão utilizando um primeiro método (Etapa Sc_1a), gera uma imagem de previsão utilizando um segundo método (Etapa Sc_1b), e gera uma imagem de previsão utilizando 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 dos primeiro a 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 descrita acima pode ser utilizada nesses métodos de previsão.
[208] A seguir, o processador de previsão seleciona qualquer um dentre uma pluralidade de métodos de previsão gerados nas Etapas Sc_1a, Sc_1b e Sc_1c (Etapa Sc_2). A seleção da imagem de previsão,
que é a seleção de um método ou de um modo para obtenção de uma imagem de previsão final, pode ser realizada pelo cálculo de um custo para cada uma das imagens de previsão geradas e com base no custo. Alternativamente, a seleção da imagem de previsão pode ser realizada com base em um parâmetro que é utilizado em um processo de codificação. O codificador 100 pode transformar a informação de identificação de uma imagem de previsão, um método ou um modo selecionado em um sinal codificado (também referido como uma sequência de bits codificados). A informação pode ser, por exemplo, um indicador ou similar. Dessa forma, o decodificador é capaz de gerar uma imagem de previsão de acordo com o método ou o modo selecionado com base na informação no codificador 100. Deve-se notar que, no exemplo ilustrado na figura 12, o processador de previsão seleciona qualquer uma das imagens de previsão depois de as imagens de previsão serem geradas utilizando-se os métodos respectivos. No entanto, o processador de previsão pode selecionar um método ou um modo com base em um parâmetro para uso no processo de codificação descrito acima antes da geração das imagens de previsão, e pode gerar uma imagem de previsão de acordo com o método ou modo selecionado.
[209] Por exemplo, o primeiro método e o segundo método podem ser intraprevisão e interprevisão, respectivamente, e o processador de previsão pode selecionar uma imagem de previsão final para um bloco atual a partir das imagens de previsão geradas de acordo com os métodos de previsão.
[210] A figura 13 é um fluxograma ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador 100.
[211] Primeiro, o processador de previsão gera uma imagem de previsão utilizando a intraprevisão (Etapa Sd_1a), e gera uma imagem de previsão utilizando a interprevisão (Etapa Sd_1b). Deve-se notar que a imagem de previsão gerada pela intraprevisão também é referida como uma imagem de intraprevisão, e a imagem de previsão gerada pela interprevisão também é referida como uma imagem de interprevisão.
[212] A seguir, o processador de previsão avalia cada uma dentre a imagem de intraprevisão e a imagem de interprevisão (Etapa Sd_2). Um custo pode ser utilizado na avaliação. Em outras palavras, o processador de previsão calcula o custo C para cada uma dentre a imagem de intraprevisão e a imagem de interprevisão. O custo C pode ser calculado de acordo com uma expressão de um modelo de otimização R-D, por exemplo, C = D +  x R. Nessa expressão, D indica uma distorção de codificaçã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. Adicionalmente, R indica uma quantidade de codificação prevista de uma imagem de previsão, especificamente, a quantidade de codificação necessária para se codificar a informação de movimento para gerar uma imagem de previsão, etc. Adicionalmente,  indica, por exemplo, um multiplicador de acordo com o método de multiplicador Lagrange.
[213] O processador de previsão, então, seleciona 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 ou modo de previsão para gerar a imagem de previsão para o bloco atual é selecionado. Intraprevisor
[214] O intraprevisor 124 gera um sinal de previsão (sinal de intraprevisão) pela realização da intraprevisão (também referida como previsão intraquadro) do bloco atual com referência a um bloco ou blocos na imagem atual e armazenados na memória de bloco 118. Mais especificamente, o intraprevisor 124 gera um sinal de intraprevisão pela realização da intraprevisão por referência às amostras (por exemplo, valores de luminescência e/ou crominância) de um bloco ou blocos vizinhos do bloco atual, e, então, envia o sinal de intraprevisão para o controlador de previsão 128.
[215] Por exemplo, o intraprevisor 124 realiza a intraprevisão pela utilização de um modo, dentre uma pluralidade de modos de intraprevisão que foram definidos. Os modos de intraprevisão incluem um ou mais modos de previsão não direcional e uma pluralidade de modos de previsão direcional. Os modos definidos podem ser pré- definidos.
[216] Os um ou mais modos de previsão não direcional incluem, por exemplo, o modo de previsão plana e o modo de previsão DC definidos no padrão H.265/codificação de vídeo de alta eficiência (HEVC).
[217] A pluralidade de modos de previsão direcional inclui, por exemplo, 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 adicionalmente trinta e dois modos de previsão direcional em adição aos trinta e três modos de previsão direcional (totalizando sessenta e cinco modos de previsão direcional). A figura 14 é um diagrama conceitual ilustrando sessenta e sete modos de intraprevisão no total, que podem ser utilizados na 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 14).
[218] Em vários tipos de exemplos de processamento, um bloco de luminescência pode ser referido na intraprevisão de um bloco de crominância. Em outras palavras, um componente de crominância do bloco atual pode ser previsto com base em um componente de luminescência do bloco atual. Tal intraprevisão também é referida como uma previsão de modelo linear de componente cruzado (CCLM). O modo de intraprevisão para um bloco de crominância no qual tal bloco de luminescência é referido (também referido como, por exemplo, um modo CCLM) pode ser adicionado como um dos modos de intraprevisão para os blocos de crominância.
[219] O intraprevisor 124 pode corrigir os valores de pixel intraprevistos com base nos gradientes de pixel de referência horizontal/vertical. A intraprevisão acompanhada desse tipo de correção também é referida como combinação de intraprevisão dependente de posição (PDPC). A informação que indica que aplica PDPC (referido como, por exemplo, indicador PDPC) é normalmente sinalizada no nível de CU. Deve-se notar que a sinalização de tal informação 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 imagem, nível de fatia, nível de tile ou nível de CTU). Interprevisor
[220] O interprevisor 126 gera um sinal de previsão (sinal de interprevisão) pela realização da interprevisão (também referida como uma previsão interquadro) do bloco atual pela referência a um bloco ou blocos em uma imagem de referência, que é diferente da imagem atual e é armazenada na memória de quadro 122. A interprevisão é realizada em unidades de um bloco atual ou um sub-bloco atual (por exemplo, um bloco de 4 x 4) no bloco atual. Por exemplo, o interprevisor 126 realiza a estimativa de movimento em uma imagem de referência para o bloco atual ou sub-bloco atual, e descobre um bloco de referência ou um sub- bloco com a melhor combinação do bloco atual ou do sub-bloco atual.
O interprevisor 126, então, obtém informação de movimento (por exemplo, um vetor de movimento) que compensa um movimento ou uma mudança do bloco de referência ou do sub-bloco para o bloco atual ou sub-bloco. O interprevisor 126 gera um sinal de interprevisão do bloco atual ou do sub-bloco pela realização da compensação de movimento (ou previsão de movimento) com base na informação de movimento. O interprevisor 126 envia o sinal de interprevisão gerado para o controlador de previsão 128.
[221] A informação de movimento utilizada na compensação de movimento pode ser sinalizada como sinais 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. Fluxo Básico de Interprevisão
[222] A figura 15 é um fluxograma ilustrando um fluxo de processamento básico ilustrativo de interprevisão.
[223] Primeiro, o interprevisor 126 gera um sinal de previsão (Etapas Se_1 a Se_3). A seguir, o subtraidor 104 gera a diferença entre um bloco atual e uma imagem de previsão como um resíduo de previsão (Etapa Se_4).
[224] Aqui, na geração da imagem de previsão, o interprevisor 126 gera a imagem de previsão através da determinação de um vetor de movimento (MV) do bloco atual (Etapas Se_1 e Se 2) e da compensação de movimento (Etapa Se_3). Adicionalmente, na determinação de um MV, o interprevisor 126 determina o MV através da seleção de um candidato a vetor de movimento (candidato a MV) (Etapa Se_1) e derivação de um MV (Etapa Se_2). A seleção do candidato a MV é feita, por exemplo, pela seleção de pelo menos um candidato a MV a partir de uma lista de candidatos a MV. Alternativamente, na derivação de um MV, o interprevisor 126 pode selecionar, adicionalmente, pelo menos um candidato a MV a partir do pelo menos um candidato a MV, e determinar o pelo menos um candidato a MV, selecionado como o MV, para o bloco atual. Alternativamente, o interprevisor 126 pode determinar o MV para o bloco atual pela realização da estimativa em uma região de imagem de referência especificada por cada um do pelo menos um candidato a MV selecionado. Deve-se notar que a estimativa em uma região de imagem de referência pode ser referida como estimativa de movimento.
[225] Adicionalmente, apesar de as Etapas Se_1 a Se_3 serem realizadas pelo interprevisor 126 no exemplo descrito acima, um processo que é, por exemplo, Etapa Se_1, Etapa Se_2 ou similar pode ser realizado por outro elemento constituinte incluído no codificador 100. Fluxo de Derivação de Vetor de Movimento
[226] A figura 16 é um fluxograma ilustrando um exemplo de derivação de vetores de movimento.
[227] O interprevisor 126 deriva um MV de um bloco atual em um modo para codificar a informação de movimento (por exemplo, um MV). Nesse caso, por exemplo, a informação de movimento é codificada como um parâmetro de previsão, e é sinalizada. Em outras palavras, a informação de movimento codificada é incluída em um sinal codificado (também referido como uma sequência de bits codificados).
[228] Alternativamente, o interprevisor 126 deriva um MV em um modo no qual a informação de movimento não é codificada. Nesse caso, nenhuma informação de movimento é incluída em um sinal codificado.
[229] Aqui, os modos de derivação de MV podem incluir um intermodo normal, um modo de mistura, um modo FRUC, um modo afim, etc., que são descritos posteriormente. Os modos nos quais a informação de movimento é codificada dentre os modos, inclui o intermodo normal, o modo de mistura, o modo afim (especificamente, um intermodo afim e um modo de mistura afim), etc. Deve-se notar que a informação de movimento pode incluir não apenas um MV, mas também a informação de seleção de previsor de vetor de movimento que será descrita posteriormente. Os modos nos quais nenhuma informação de movimento é codificada incluem o modo FRUC, etc. O interprevisor 126 seleciona um modo para derivar um MV do bloco atual a partir dos modos, e deriva o MV do bloco atual utilizando o modo selecionado.
[230] A figura 17 é um fluxograma ilustrando outro exemplo de derivação dos vetores de movimento.
[231] O interprevisor 126 deriva um MV de 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 de MV codificada é incluída em um sinal codificado. A diferença de MV é a diferença entre o MV do bloco atual e o previsor de MV.
[232] Alternativamente, o interprevisor 126 deriva um MV em um modo no qual nenhuma diferença de MV é codificada. Nesse caso, nenhuma diferença de MV é incluída em um sinal codificação.
[233] Aqui, como descrito acima, os modos de derivação de MV incluem o intermodo normal, o modo de mistura, o modo FRUC, o modo afim, etc. que serão descritos posteriormente. Os modos nos quais uma diferença de MV é codificada entre os modos incluem o intermodo normal, o modo afim (especialmente, o intermodo afim), etc. Os modos nos quais nenhuma diferença de MV é codificada incluem o modo FRUC, o modo de mistura, o modo afim (especificamente, o modo de mistura afim), etc. O interprevisor 126 seleciona um modo para derivar um MV do bloco atual a partir da pluralidade de modos, e derivar o MV do bloco atual utilizando o modo selecionado. Fluxo de Derivação de Vetor de Movimento
[234] A figura 18 é um fluxograma ilustrando outro exemplo de derivação de vetores de movimento. Os modos de derivação de MV, que são modos de interprevisão, incluem uma pluralidade de modos e são aproximadamente divididos em modos nos quais uma diferença de MV é codificada e modos nos quais nenhuma diferença de vetor é codificada. Os modos nos quais nenhuma diferença de MV é codificada incluem o modo de mistura, o modo FRUC, o modo afim (especificamente o modo de mistura afim), etc. Esses modos são descritos em detalhes posteriormente. Simplesmente, o modo de mistura é um modo para derivar um MV de um bloco atual pela seleção de um vetor de movimento de um bloco circundante codificado, e o modo FRUC é um modo para derivar um MV de um bloco atual pela realização da estimativa entre as regiões codificadas. O modo afim é um modo para derivar, como um MV de um bloco atual, um vetor de movimento de cada um dentre uma pluralidade de sub-blocos incluídos no bloco atual, assumindo a transformação afim.
[235] Mais especificamente, como ilustrado quando a informação do modo de interprevisão indica 0 (0 em Sf_1), o interprevisor 126 deriva um vetor de movimento utilizando o modo de mistura (Sf_2). Quando a informação do modo de interprevisão indica 1 (1 em Sf_1), o interprevisor 126 deriva um vetor de movimento utilizando o modo FRUC (Sf_3). Quando a informação do modo de interprevisão indica 2 (2 em Sf_1), o interprevisor 126 deriva um vetor de movimento utilizando o modo afim (especificamente, o modo de mistura afim) (Sf_4). Quando a informação do modo de interprevisão indica 3 (3 em Sf_1), o interprevisor 126 deriva um vetor de movimento utilizando um modo no qual uma diferença de MV é codificada (por exemplo, um intermodo normal (Sf_5)). Derivação de MV > Intermodo Normal
[236] O intermodo normal é um modo de interprevisão para derivar um MV de um bloco atual com base em um bloco similar à imagem do bloco atual a partir de uma região de imagem de referência especificada por um candidato a MV. Nesse intermodo normal, uma diferença de MV é codificada.
[237] A figura 19 é um fluxograma ilustrando um exemplo de interprevisão no intermodo normal.
[238] Primeiro, o interprevisor 126 obtém uma pluralidade de candidatos a MV para um bloco atual com base na informação, tal como Miss de uma pluralidade de blocos codificados temporalmente ou espacialmente cercando o bloco atual (Etapa Sg_1). Em outras palavras, o interprevisor 126 gera uma lista de candidatos a MV.
[239] A seguir, o interprevisor 126 extrai N (um inteiro de 2 ou mais) candidatos a MV da pluralidade de candidatos a MV obtidos na Etapa Sg_1, como candidatos a previsor de vetor de movimento (também referidos como candidatos a previsor de MV), de acordo com uma ordem de prioridade determinada (Etapa Sg_2). Deve-se notar que a ordem de prioridade pode ser determinada antecipadamente para cada um dos N candidatos a MV.
[240] A seguir, o interprevisor 126 seleciona um candidato a previsor de vetor de movimento a partir de N candidatos a previsor de vetor de movimento, como o previsor de vetor de movimento (também referido como um previsor de MV) do bloco atual (Etapa Sg_3). Nesse momento, o interprevisor 126 codifica, em uma sequência, a informação de seleção de previsor de vetor de movimento para identificar o previsor de vetor de movimento selecionado. Deve-se notar também que a sequência é um sinal codificado ou uma sequência de bits codificados como descrito acima.
[241] A seguir, o interprevisor 126 deriva um MV de um bloco atual por referência a uma imagem de referência codificada (Etapa Sg_4). Nesse momento, o interprevisor 126 codifica adicionalmente, na sequência, o valor de diferença entre o MV derivado e o previsor de vetor de movimento como uma diferença de MV. Deve-se notar que a imagem de referência codificada é uma imagem que inclui uma pluralidade de blocos que foram reconstruídos depois de terem sido codificados.
[242] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco atual pela realização da compensação de movimento do bloco atual utilizando o MV derivado e a imagem de referência codificada (Etapa Sg_5). Deve-se notar que a imagem de previsão é um sinal de interprevisão como descrito acima.
[243] Adicionalmente, a informação que indica o modo de interprevisão (intermodo normal no exemplo acima) utilizado para gerar a imagem de previsão é, por exemplo, codificada como um parâmetro de previsão.
[244] É notado que a lista de candidatos a MV também pode ser utilizada como uma lista para uso em outro modo. Adicionalmente, os processos relacionados com a lista de candidatos a MV pode ser aplicado a processos relacionados com a lista para uso em outro modo. Os processos relacionados com a lista de candidatos a MV incluem, por exemplo, extração ou seleção de um candidato a MV a partir da lista de candidatos a MV, reordenação dos candidatos a MV, ou eliminação de um candidato a MV. Derivação de MV > Modo de Mistura
[245] O modo de mistura é um modo de interprevisão para selecionar um candidato a MV a partir de uma lista de candidatos a MV como um MV de um bloco atual, derivando, assim, o MV.
[246] A figura 20 é um fluxograma ilustrando um exemplo de interprevisão no modo de mistura.
[247] Primeiro, o interprevisor 126 obtém uma pluralidade de candidatos a MV para um bloco atual com base na informação, tal como MVs dentre uma pluralidade de blocos codificados temporalmente ou espacialmente que cercam o bloco atual (Etapa Sh_1). Em outras palavras, o interprevisor 126 gera uma lista de candidatos a MV.
[248] A seguir, o interprevisor 126 seleciona um candidato a MV a partir da pluralidade de candidatos a MV obtida na Etapa Sh_1, derivando, assim, um MV do bloco atual (Etapa Sh_2). Nesse momento, o interprevisor 126 codifica, em uma sequência, a informação de seleção de MV para identificar o candidato a MV selecionado.
[249] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco atual pela realização da compensação de movimento do bloco atual utilizando o MV derivado e a imagem de referência codificada (Etapa Sh_3)
[250] Adicionalmente, a informação que indica o modo de interprevisão (modo de mistura no exemplo acima) utilizado para gerar a imagem de previsão e incluída no sinal codificado é, por exemplo, codificada como um parâmetro de previsão.
[251] A figura 21 é um diagrama conceitual para ilustrar um exemplo de um processo de derivação de vetor de movimento de uma imagem atual no modo de mistura.
[252] Primeiro, uma lista de candidatos a MV, na qual os candidatos a previsor de MV são registrados, é gerada. Exemplos de candidatos a previsor de MV incluem previsores de Miss espacialmente vizinhos que são MVs de uma pluralidade de blocos codificados e localizados cercando espacialmente um bloco atual; previsores de MV temporalmente vizinhos que são MVs que cercam os blocos nos quais a posição de um bloco atual em uma imagem de referência codificada é projetada; previsores de MV combinados que são MVs gerados pela combinação do valor de MV de um previsor de MV espacialmente vizinho e o MV de um previsor de MV temporalmente vizinho; e um previsor de MV zero que é um MV possuindo um valor igual a zero.
[253] A seguir, um previsor de MV é selecionado a partir de uma pluralidade de previsores de MV registrados em uma lista de previsores de MV, e o previsor de MV selecionado é determinado como o MV de um bloco atual.
[254] Adicionalmente, o codificador de comprimento variável descreve e codifica, em uma sequência, merge_idx que é um sinal que indica qual previsor de MV foi selecionado.
[255] É notado que os previsores de MV registrados na lista de previsores de MV descrita na figura 21 são exemplos. O número de previsores de MV pode ser diferente do número de previsores de MV no diagrama, a lista de previsores de MV pode ser configurada de tal forma que alguns dos tipos de previsores de MV no diagrama possam não ser incluídos, ou que um ou mais previsores de MV, além de os tipos de previsores de MV no diagrama, possam ser incluídos.
[256] Um MV final pode ser determinado pela realização de um processo de refinamento de vetor de movimento de decodificador (DMVR) a ser descrito posteriormente utilizando-se o MV do bloco atual derivado no modo de mistura.
[257] Deve-se notar que os candidatos a previsores de MV são candidatos a MV descritos acima, e a lista de previsores de MV é a lista de candidatos a MV descrita acima. Deve-se notar que a lista de candidatos a MV pode ser referida como uma lista de candidatos. Adicionalmente, merge_idx é a informação de seleção de MV. Derivação de MV > Modelo FRUC
[258] A informação de movimento pode ser derivada no lado do decodificador sem ser sinalizada a partir do lado do codificador. Deve- se notar que, como descrito acima, o modo de mistura definido no padrão H.265/HEVC pode ser utilizado. Adicionalmente, por exemplo, a informação de movimento pode ser derivada pela realização da estimativa de movimento no lado do decodificador. Em uma modalidade, no lado do decodificador, a estimativa de movimento é realizada sem se utilizar qualquer valor de pixel em um bloco atual.
[259] Aqui, um modo para se realizar a estimativa de movimento no lado do decodificador é descrito. O modo para realizar a estimativa de movimento no lado do decodificador pode ser referido como um modo de derivação de vetor de movimento combinado por padrão (PMMVD) ou um modo de conversão ascendente de taxa de quadro (FRUC).
[260] Um exemplo de um processo FRUC na forma de um fluxograma é ilustrado na figura 22. Primeiro, uma lista dentre uma pluralidade de candidatos, cada um possuindo um previsor de vetor de movimento (MV) (isso é, uma lista de candidatos a MV que também pode ser utilizada como uma lista de mistura) é gerada por referência a um vetor de movimento em um bloco codificado que é espacialmente ou temporalmente vizinho de um bloco atual (Etapa Si_1). A seguir, um melhor candidato a MV é selecionado a partir da pluralidade de candidatos a MV registrados na lista de candidatos a MV (Etapa Si_2). Por exemplo, os valores de avaliação dos candidatos a MV respectivos, incluídos na lista de candidatos a MV, são calculados, e um candidato a MV é selecionado com base nos valores de avaliação. Com base nos candidatos a vetor de movimento selecionados, um vetor de movimento para o bloco atual é, então, derivado (Etapa Si_4). Mais especificamente, por exemplo, o candidato a vetor de movimento selecionado (melhor candidato a MV) é derivado diretamente como o vetor de movimento para o bloco atual. Adicionalmente, por exemplo, o vetor de movimento para o bloco atual pode ser derivado utilizando-se a combinação de padrão em uma região circundante de uma posição em uma imagem de referência, onde a posição na imagem de referência corresponde ao candidato a vetor de movimento selecionado. Em outras palavras, a estimativa utilizando a combinação de padrão e os valores de avaliação pode ser realizada na região circundante do melhor candidato a MV, e quando houver um MV que resulta em um melhor valor de avaliação, o melhor candidato a MV pode ser atualizado para o MV que resulta no melhor valor de avaliação, e o MV atualizado pode ser determinado como o MV final para o bloco atual. Uma configuração, na qual nenhum processo desses de atualização do melhor candidato a MV para o MV possuindo um melhor valor de avaliação é realizado, também é possível.
[261] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco atual pela realização da compensação de movimento do bloco atual utilizando o MV derivado e a imagem de referência codificada (Etapa Si_5).
[262] Um processo similar pode ser realizado nas unidades de um sub-bloco.
[263] 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 imagem de referência que corresponde a um vetor de movimento e uma imagem reconstruída em uma região determinada (a região pode ser, por exemplo, uma região em outra imagem de referência ou uma região em um bloco vizinho de uma imagem atual, como indicado abaixo). A região determinada pode ser predeterminada. A diferença entre os valores de pixel de duas imagens reconstruídas pode ser utilizada para um valor de avaliação dos vetores de movimento. É notado que um valor de avaliação pode ser calculado utilizando-se informação diferente do valor de diferença.
[264] A seguir, um exemplo de combinação de padrão é descrito em detalhes. Primeiro, um candidato a MV incluído em uma lista de candidatos a MV (por exemplo, uma listra de mistura) é selecionado como um ponto de partida para a estimativa pela combinação de padrão. Por exemplo, como a combinação de padrão, uma primeira combinação de padrão ou uma segunda combinação de padrão pode ser utilizada. A primeira combinação de padrão e a segunda combinação de padrão também são referidas como combinação bilateral e combinação de gabarito, respectivamente. Derivação de MV > FRUC > Combinação Bilateral
[265] Na primeira combinação de padrão, a combinação de padrão é realizada entre dois blocos ao longo de uma trajetória de movimento de um bloco atual, que são dois blocos em duas imagens de referência diferentes. De acordo, na primeira combinação de padrão, uma região em outra imagem de referência ao longo da trajetória de movimento do bloco atual é utilizada como uma região determinada para se calcular o valor de avaliação do candidato descrito acima. A região determinada pode ser predeterminada.
[266] A figura 23 é um diagrama conceitual para ilustrar um exemplo da primeira combinação de padrão (combinação bilateral) entre os dois blocos nas duas imagens de referência ao longo da trajetória de movimento. Como ilustrado na figura 23, na primeira combinação de padrão, os dois vetores de movimento (MV0, MV1) são derivados pela estimativa de um par que melhor combina entre os pares nos dois blocos, nas duas imagens de referência diferentes (Ref0, Ref1), que são os dois blocos ao longo da trajetória de movimento do bloco atual (Cur Block). Mais especificamente, uma diferença entre a imagem reconstruída em um local especificado na primeira imagem de referência codificada (Ref0), especificada por um candidato a MV, e a imagem reconstruída em um local especificado na segunda imagem de referência codificada (Ref1), especificada por um MV simétrico obtido pelo escalonamento do candidato a MV em um intervalo de tempo de exibição, é derivada para o bloco atual, e um valor de avaliação é calculado utilizando-se o valor da diferença obtida. É possível se selecionar, como MV final, o candidato a MV que resulta no melhor valor de avaliação entre a pluralidade de candidatos a MV, e que tem chances de produzir bons resultados.
[267] Considerando-se a 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 imagem atual (Cur Pic) e as duas imagens de referência (Ref0, Ref1). Por exemplo, quando a imagem atual é temporalmente localizada entre as duas imagens de referência e as distâncias temporais da imagem atual para as duas imagens de referência respectivas são iguais uma à outra, os vetores de movimento bidirecional simétricos e espelhados são derivados na primeira combinação de padrão. Derivação de MV > FRUC > Combinação de Gabarito
[268] Na segunda combinação de padrão (combinação de gabarito), a combinação de padrão é realizada entre um bloco na imagem de referência e um gabarito na imagem atual (o gabarito é um bloco vizinho ao bloco atual na imagem atual (o bloco vizinho é, por exemplo, um bloco vizinho superior e/ou esquerdo). De acordo, na segunda combinação de padrão, o bloco vizinho ao bloco atual na imagem atual é utilizado como a região determinada para se calcular o valor de avaliação do candidato descrito acima.
[269] A figura 24 é um diagrama conceitual para ilustrar um exemplo de combinação de padrão (combinação de gabarito) entre um gabarito em uma imagem atual e um bloco em uma imagem de referência. Como ilustrado na figura 24, na segunda combinação de padrão, o vetor de movimento do bloco atual (Cur Block) é derivado pela estimativa, na imagem de referência (Ref0), o bloco que melhor combina o bloco vizinho ao bloco atual na imagem atual (Cur Pic). Mais especificamente, é possível que a diferença entre uma imagem reconstruída em uma região codificada, que é vizinha de ambas a imagem esquerda e acima, ou esquerda, ou acima, e uma imagem reconstruída, que está em uma região correspondente na imagem de referência codificada (Ref0) e é especificada por um candidato a MV, seja derivada, um valor de avaliação é calculado utilizando-se o valor da diferença obtida, e o candidato a MV que resulta no melhor valor de avaliação dentre uma pluralidade de candidatos a MV é selecionado como o melhor candidato a MV.
[270] Tal informação indicando se aplica o modo FRUC (referido como, por exemplo, um indicador FRUC) pode ser sinalizada no nível de CU. Adicionalmente, quando o modo FRUC é aplicado (por exemplo, quando um indicador FRUC é verdadeiro), a informação que indica um método de combinação de padrão aplicável (a primeira combinação de padrão ou a segunda combinação de padrão) pode ser sinalizada no nível de CU. Deve-se notar que a sinalização de tal informação não precisa, necessariamente, ser realizada no nível de CU, e pode ser realizada em outro nível (por exemplo, em nível de sequência, nível de imagem, nível de fatia, nível de tile, nível de CTU ou nível de sub-bloco). Derivação de MV > Modo Afim
[271] A seguir o modo afim para derivação de um vetor de movimento em unidades de um sub-bloco, com base nos vetores de movimento de uma pluralidade de blocos vizinhos, é descrito. Esse modo também é referido como um modo de previsão de compensação de movimento afim.
[272] A figura 25A é um diagrama conceitual para ilustrar um exemplo de derivação de um vetor de movimento de cada sub-bloco com base nos vetores de movimento de uma pluralidade de blocos vizinhos. Na figura 25A, o bloco atual inclui dezesseis blocos de 4 x 4. Aqui, o vetor de movimento v0 em um ponto de controle de canto superior esquerdo no bloco atual é derivado com base em um vetor de movimento de um bloco vizinho, e, da mesma forma, o vetor de movimento v1 em um ponto de controle de canto superior direito no bloco atual é derivado com base em um vetor de movimento de um sub-bloco vizinho. Dois vetores de movimento v0 e v1 podem ser projetados de acordo com uma expressão (1A) indicada abaixo, e os vetores de movimento (vx, vy) para os sub-blocos respectivos no bloco atual podem ser derivados. Matemática 1
[273] 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 determinado. O coeficiente de ponderação determinado pode ser predeterminado.
[274] Tal informação que indica o modo afim (por exemplo, referido como um indicador afim) pode ser sinalizada no nível de CU. Deve-se notar que a sinalização da informação que indica o modo afim 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 imagem, nível de fatia, nível de tile, nível de CTU, ou nível de sub-bloco).
[275] Adicionalmente, o modo afim pode incluir vários modos para diferentes métodos para derivação de vetores de movimento nos pontos de controle de canto superior esquerdo e superior direito. Por exemplo, o modo afim inclui dois modos que são o intermodo afim (também referido como intermodo normal afim) e o modo de mistura afim. Derivação MV > Modo Afim
[276] A figura 25B é um diagrama conceitual para ilustrar um exemplo de derivação de um vetor de movimento de cada sub-bloco no modo afim, no qual três pontos de controle são utilizados. Na figura 25B, o bloco atual inclui dezesseis blocos 4 x 4. Aqui, o vetor de movimento v0, no ponto de controle do canto superior esquerdo para o bloco atual, é derivado com base em um vetor de movimento de um bloco vizinho, e, da mesma forma, o vetor de movimento v1, no ponto de controle de canto superior direito para o bloco atual, é derivado com base em um vetor de movimento de um bloco vizinho, e o vetor de movimento v2, no ponto de controle do canto inferior esquerdo para o bloco atual, é derivado com base em um vetor de movimento de um bloco vizinho. Três vetores de movimento v0, v1 e v2 podem ser projetados de acordo com uma expressão (1B) indicada abaixo, e os vetores de movimento (vx, vy) para os sub-blocos respectivos no bloco atual podem ser derivados. Matemática 2
[277] Aqui, x e y indicam a posição horizontal e a posição vertical do centro do sub-bloco, respectivamente; w indica a largura do bloco atual e h indica a altura do bloco atual.
[278] Modos afim nos quais números diferentes de pontos de controle (por exemplo, dois e três pontos de controle) são utilizados podem ser comutados e sinalizados no nível de CU. Deve-se notar que a informação que indica o número de pontos de controle no modo afim utilizado no nível de CU pode ser sinalizada em outro nível (por exemplo, nível de sequência, nível de imagem, nível de fatia, nível de tile, nível de CTU ou nível de sub-bloco).
[279] Adicionalmente, tal modo afim, no qual três pontos de controle são utilizados, pode incluir diferentes métodos de derivação de vetores de movimento nos pontos de controle de canto superior esquerdo, superior direito e inferior esquerdo. Por exemplo, os modos afim incluem dois modos que são o intermodo afim (também referido como o intermodo normal afim) e o modo de mistura afim. Derivação de MV > Modo de Mistura Afim
[280] As figuras 26A, 26B e 26C são diagramas conceituais para ilustrar o modo de mistura afim.
[281] Como ilustrado na figura 26A, no modo de mistura afim, por exemplo, os previsores de vetor de movimento em pontos de controle respectivos de um bloco atual são calculados com base em uma pluralidade de vetores de movimento que correspondem aos blocos codificados de acordo com o modo afim, dentre o bloco codificado A (esquerdo), o bloco B (superior), o bloco C (superior direito), o bloco D (inferior esquerdo) e o bloco E (superior esquerdo), que são vizinhos do bloco atual. Mais especificamente, o bloco codificado A (esquerdo), o bloco B (superior), o bloco C (superior direito), o bloco D (inferior esquerdo), e o bloco E (superior esquerdo) são verificados na ordem listada, e o primeiro bloco efetivo codificado de acordo com o modo afim é identificado. Os previsores de vetor de movimento nos pontos de controle do bloco atual são calculados com base em uma pluralidade de vetores de movimento que correspondem ao bloco identificado.
[282] Por exemplo, como ilustrado na figura 26B, quando o bloco A, que é vizinho do lado esquerdo do bloco atual, foi codificado de acordo com um modo afim no qual dois pontos de controle são utilizados, os vetores de movimento v3 e v4 projetados na posição de canto superior esquerdo e posição de canto superior direito do bloco codificado, incluindo o bloco A, são derivados. O previsor de vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual, e o previsor de vetor de movimento v1, no ponto de controle de canto superior direito do bloco atual são, então, calculados a partir dos vetores de movimento derivados v3 e v4.
[283] Por exemplo, como ilustrado na figura 26C, quando o bloco
A, que é vizinho do lado esquerdo do bloco atual, foi codificado de acordo com um modo afim no qual três pontos de controle são utilizados, os vetores de movimento v3, v4 e v5, projetados na posição de canto superior esquerdo, posição de canto superior direito e posição de canto inferior esquerdo do bloco codificado, incluindo o bloco A, são derivados. O previsor de vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual, o previsor de vetor de movimento v1, no ponto de controle de canto superior direito do bloco atual, e o previsor de vetor de movimento v2, no ponto de controle de canto inferior esquerdo do bloco atual são, então, calculados a partir dos vetores de movimento derivados v3, v4 e v5.
[284] Deve-se notar que esse método de derivação de previsores de vetor de movimento pode ser utilizado para se derivar os previsores de vetor de movimento dos pontos de controle respectivos do bloco atual na Etapa Sj_1 na figura 28 descrita posteriormente.
[285] A figura 27 é um fluxograma ilustrando ume exemplo do modo de mistura afim.
[286] No modo de mistura afim como ilustrado, primeiro, o interprevisor 126 deriva os previsores de MV dos pontos de controle respectivos de 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, como ilustrado na figura 25A, 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 25B.
[287] Em outras palavras, como ilustrado na figura 26A, o interprevisor 126 verifica o bloco codificado A (esquerdo), o bloco B (superior), o bloco C (superior direito), o bloco D (inferior esquerdo), e o bloco E (superior esquerdo) na ordem listada, e identifica o primeiro bloco efetivo codificado de acordo com o modo afim.
[288] Quando o bloco A é identificado e o bloco A apresenta dois pontos de controle, como ilustrado na figura 26B, o interprevisor 126 calcula o vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual, e o vetor de movimento v1, no ponto de controle de canto superior direito do bloco atual, a partir dos vetores de movimento v3 e v4, no canto superior esquerdo e no canto superior direito do bloco codificado, incluindo o bloco A. Por exemplo, o interprevisor 126 calcula o vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual e o vetor de movimento v1, no ponto de controle de canto superior direito do bloco atual pela projeção dos vetores de movimento v3 e v4 no canto superior esquerdo e no canto superior direito do bloco codificado no bloco atual.
[289] Alternativamente, quando o bloco A é identificado e o bloco A possui três pontos de controle, como ilustrado na figura 26C, o interprevisor 126 calcula o vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual, o vetor de movimento v1, no ponto de controle de canto superior direito do bloco atual, e o vetor de movimento v2, no ponto de controle de canto inferior esquerdo do bloco atual a partir dos vetores de movimento v3, v4 e v5, no canto superior esquerdo, no canto superior direito e no canto inferior esquerdo do bloco codificado incluindo o bloco A. 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 de canto superior direito do bloco atual, e o vetor de movimento v2, no ponto de controle do canto inferior esquerdo do bloco atual, pela projeção dos vetores de movimento v3, v4 e v5 no canto superior esquerdo, no canto superior direito e no canto inferior esquerdo do bloco codificado no bloco atual.
[290] A seguir, o interprevisor 126 realiza a compensação de movimento de cada um dentre uma pluralidade de sub-blocos incluídos no bloco atual. Em outras palavras, o interprevisor 126 calcula, para cada um dentre a pluralidade de sub-blocos, um vetor de movimento do sub-bloco como um MV afim, pela utilização de (i) dois previsores de vetor de movimento v0 e v1 e a expressão (1A) descrita acima ou (ii) três previsores de vetor de movimento v0, v1 e v2 e a expressão (1B) descrita acima (Etapa Sk_2). O interprevisor 126, então, realiza a compensação de movimento dos sub-blocos utilizando esses MVs afim e imagens de referência codificadas (Etapa Sk_3). Como resultado disso, a compensação de movimento do bloco atual é realizada para gerar uma imagem de previsão do bloco atual. Derivação de MV > Intermodo Afim
[291] A figura 28A é um diagrama conceitual para ilustrar um intermodo afim no qual dois pontos de controle são utilizados.
[292] No intermodo afim, como ilustrado na figura 28A, um vetor de movimento selecionado a partir dos vetores de movimento do bloco codificado A, bloco B, bloco C que é vizinho do bloco atual, é utilizado como o previsor de vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual. Da mesma forma, um vetor de movimento, selecionado a partir dos vetores de movimento do bloco D codificado e bloco E, que são vizinhos do bloco atual, é utilizado como o previsor de vetor de movimento v1, no ponto de controle do canto superior direito do bloco atual.
[293] A figura 28B é um diagrama conceitual para ilustrar um intermodo afim no qual três pontos de controle são utilizados.
[294] Nesse intermodo afim, como ilustrado na figura 28B, o vetor de movimento, selecionado a partir dos vetores de movimento do bloco codificado A, bloco B e bloco C, que são vizinhos do bloco atual, é utilizado como um previsor de vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual. Da mesma forma, um vetor de movimento selecionado a partir de vetores de movimento do bloco codificado D e bloco E, que são vizinhos do bloco atual, é utilizado como o previsor de vetor de movimento v1, no ponto de controle do canto superior direito do bloco atual. Adicionalmente, um vetor de movimento, selecionado a partir dos vetores de movimento do bloco F e bloco G codificados, que são vizinhos do bloco atual, é utilizado como o previsor de vetor de movimento v2, no ponto de controle do canto inferior esquerdo do bloco atual.
[295] A figura 29 é um fluxograma ilustrando um exemplo de um intermodo afim.
[296] No intermodo afim, como ilustrado, primeiro, o interprevisor 126 deriva os previsores MV (v0, v1) ou (v0, v1, v2) dos respectivos dois ou três pontos de controle de um bloco atual (Etapa Sj_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, como ilustrado na figura 25A, 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 25B.
[297] Em outras palavras, o interprevisor 126 deriva os previsores de vetor de movimento (v0, v1) ou (v0, v1, v2) dos respectivos dois ou três pontos de controle do bloco atual pela seleção de vetores de movimento de qualquer um dos blocos, dentre os blocos codificados nas proximidades dos pontos de controle respectivos do bloco atual, ilustrado na figura 28A ou na figura 28B. Nesse momento, o interprevisor 126 codifica, em uma sequência, a informação de seleção de previsor de vetor de movimento para identificar os dois vetores de movimento selecionados.
[298] Por exemplo, o interprevisor 126 pode determinar, utilizando uma avaliação de custo ou similar, o bloco de onde um vetor de movimento, como um previsor de vetor de movimento, em um ponto de controle, é selecionado dentre os blocos codificados vizinhos ao bloco atual, e pode descrever, em uma sequência de bits, um indicador para indicar qual previsor de vetor de movimento foi selecionado.
[299] A seguir, o interprevisor 126 realiza a estimativa de movimento (Etapa Sj_3 e Sj_4), enquanto atualiza um previsor de vetor de movimento selecionado ou derivado na Etapa Sj_1 (Etapa Sj_2). Em outras palavras, o interprevisor 126 calcula, como um MV afim, um vetor de movimento de cada um dos sub-blocos que corresponde a um previsor de vetor de movimento atualizado, utilizando a expressão (1A) ou a expressão (1B) descrita acima (Etapa Sj_3). O interprevisor 126, então, realiza a compensação de movimento dos sub-blocos utilizando esses MVs afim e as imagens de referência codificadas (Etapa Sj_4). Como resultado disso, por exemplo, o interprevisor 126 determina o previsor de vetor de movimento que resulta no custo mais baixo como o vetor de movimento em um ponto de controle em um circuito de estimativa de movimento (Etapa Sj_5). Nesse momento, o interprevisor 126 codifica adicionalmente, na sequência, o valor de diferença entre o MV determinado e o previsor de vetor de movimento como uma diferença MV.
[300] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco atual pela realização da compensação de movimento do bloco atual utilizando o MV determinado e a imagem de referência codificada (Etapa Sj_6). Derivação de MV > Intermodo Afim
[301] Quando os modos afins, nos quais números diferentes de pontos de controle (por exemplo, dois e três pontos de controle) são utilizados, podem ser comutados e sinalizados no nível de CU, o número de pontos de controle em um bloco codificado e o número de pontos de controle em um bloco atual podem ser diferentes um do outro. As figuras 30A e 30B são diagramas conceituais para ilustrar os métodos para derivar os previsores de vetor de movimento nos pontos de controle onde o número de pontos de controle em um bloco codificado e o número de pontos de controle em um bloco atual são diferentes um do outro.
[302] Por exemplo, como ilustrado na figura 30A, quando um bloco atual possui três pontos de controle no canto superior esquerdo, canto superior direito e canto inferior esquerdo, e o bloco A, que é vizinho do lado esquerdo do bloco atual, é codificado de acordo com um modo afim no qual os dois pontos de controle são utilizados, os vetores de movimento v3 e v4, projetados na posição de canto superior esquerdo e posição de canto superior direito no bloco codificado, incluindo o bloco A, são derivados. O previsor de vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual e o previsor de vetor de movimento v1, no ponto de controle do canto superior direito do bloco atual são, então, calculados a partir dos vetores de movimento derivados v3 e v4. Adicionalmente, o previsor de vetor de movimento v2, no ponto de controle de canto inferior esquerdo, é calculado a partir dos vetores de movimento derivados v0 e v1.
[303] Por exemplo, como ilustrado na figura 30B, quando um bloco atual possui dois pontos de controle no canto superior esquerdo e no canto superior direito, e o bloco A, que é vizinho pelo lado esquerdo do bloco atual, é codificado de acordo com o modo afim, no qual três pontos de controle são utilizados, os vetores de movimento v3, v4 e v5, projetados na posição de canto superior esquerdo, na posição de canto superior direito e na posição de canto inferior esquerdo no bloco codificado, incluindo o bloco A, são derivados. O previsor de vetor de movimento v0, no ponto de controle de canto superior esquerdo do bloco atual, e o previsor de vetor de movimento v1, no ponto de controle de canto superior direito do bloco atual são, então, calculados a partir dos vetores de movimento derivado v3, v4 e v5.
[304] Deve-se notar que esse método de derivação de previsores de vetor de movimento pode ser utilizado para derivar os previsores de vetor de movimento dos pontos de controle respectivos do bloco atual na Etapa Sj_1 na figura 29. Derivação de MV > DMVR
[305] A figura 31A é um fluxograma ilustrando uma relação entre o modo de mistura e DMVR.
[306] O interprevisor 126 deriva um vetor de movimento de um bloco atual, de acordo com o modo de mistura (Etapa Sl_1). A seguir, o interprevisor 126 determina se realiza a estimativa de um vetor de movimento, isso é, a estimativa de movimento (Etapa Sl_2). Aqui, quando da determinação da não realização da estimativa de movimento (Não na Etapa Sl_2), o interprevisor 126 determina o vetor de movimento derivado na Etapa Sl_1 como o vetor de movimento final para o bloco atual (Etapa Sl_4). Em outras palavras, nesse caso, o vetor de movimento do bloco atual é determinado de acordo com o modo de mistura.
[307] Quando da determinação da realização da estimativa de movimento na Etapa Sl_1 (Sim, na Etapa Sl_2), o interprevisor 126 deriva o vetor de movimento final para o bloco atual pela estimativa de uma região circundante da imagem de referência especificada pelo vetor de movimento derivado na Etapa Sl_1 (Etapa Sl_3). Em outras palavras, nesse caso, o vetor de movimento do bloco atual é determinado de acordo com DMVR.
[308] A figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo DMVR para determinar um MV.
[309] Primeiro, (por exemplo, no modo de mistura) o melhor MVP, que foi configurado para o bloco atual, é determinado como sendo um candidato a MV. Um pixel de referência é identificado a partir de uma primeira imagem de referência (L0) que é uma imagem codificada na direção L0, de acordo com um candidato a MV (L0). Da mesma forma,
um pixel de referência é identificado a partir de uma segunda imagem de referência (L1), que é uma imagem codificada na direção L1, de acordo com um candidato a MV (L1). Um gabarito é gerado pelo cálculo de uma média desses pixels de referência.
[310] A seguir, cada uma das regiões circundantes dos candidatos a MV da primeira imagem de referência (L0) e da segunda imagem de referência (L1) é estimada, e o MV que resultar no custo mais baixo é determinado como sendo o MV final. Deve-se notar que o valor de custo pode ser calculado, por exemplo, utilizando-se um valor de diferença entre cada um dos valores de pixel no gabarito e um valor correspondente dentre os valores de pixel na região de estimativa, os valores de candidatos a MV, etc.
[311] Deve-se notar que os processos, configurações e operações descritos aqui são tipicamente e basicamente comuns entre o codificador e um decodificador a serem descritos posteriormente.
[312] Exatamente os mesmos processos ilustrativos descritos aqui nem sempre precisam ser realizados. Qualquer processo para permitir a derivação do MV final pela estimativa, nas regiões circundantes, dos candidatos a MV, pode ser utilizado. Compensação de Movimento > BIO/OBMC
[313] A compensação de movimento envolve um modo de geração de uma imagem de previsão e correção da imagem de previsão. O modo, por exemplo, é BIO e OBMC a serem descritos posteriormente.
[314] A figura 32 é um fluxograma ilustrando um exemplo da geração de uma imagem de previsão.
[315] O interprevisor 126 gera uma imagem de previsão (Etapa Sm_1), e corrige a imagem de previsão, por exemplo, de acordo com qualquer um dos modos descritos acima (Etapa Sm_2).
[316] A figura 33 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão.
[317] O interprevisor 126 determina um vetor de movimento de um bloco atual (Etapa Sn_1). A seguir, o interprevisor 128 gera uma imagem de previsão (Etapa Sn_2), e determina se realiza um processo de correção (Etapa Sn_3). Aqui, quando da determinação da realização de um processo de correção (Sim, na Etapa Sn_3), o interprevisor 126 gera a imagem de previsão final pela correção da imagem de previsão (Etapa Sn_4). Quando da determinação da não realização de um processo de correção (Não na Etapa Sn_3), o interprevisor 126 envia a imagem de previsão como a imagem de previsão final sem corrigir a imagem de previsão (Etapa Sn_5).
[318] Adicionalmente, a compensação de movimento envolve um modo de correção de uma luminescência de uma imagem de previsão quando da geração da imagem de previsão. O modo é, por exemplo, LIC, a ser descrito posteriormente.
[319] A figura 34 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão.
[320] O interprevisor 126 deriva um vetor de movimento de um bloco atual (Etapa So_1). A seguir, o interprevisor 126 determina se realiza um processo de correção de luminescência (Etapa So_2). Aqui, quando da determinação da realização de um processo de correção de luminescência (Sim na Etapa So_2), o interprevisor 126 gera a imagem de previsão enquanto realiza um processo de correção de luminescência (Etapa So_3). Em outras palavras, a imagem de previsão é gerada utilizando-se LIC. Quando da determinação da não realização de um processo de correção de luminescência (Não na etapa So_2), o interprevisor 126 gera uma imagem de previsão pela realização da compensação de movimento normal sem realizar um processo de correção de luminescência (Etapa So_4). Compensação de Movimento > OBMC
[321] Deve-se notar que um sinal de interprevisão pode ser gerado utilizando-se informação de movimento para um bloco vizinho em adição à informação de movimento para o bloco atual obtida a partir da estimativa de movimento. Mais especificamente, o sinal de interprevisão pode ser gerado em unidades de um sub-bloco no bloco atual pela realização de uma adição ponderada de um sinal de previsão com base na informação de movimento obtida a partir da estimativa de movimento (na imagem de referência) e um sinal de previsão com base na informação de movimento para um bloco vizinho (na imagem atual). Tal interprevisão (compensação de movimento) também é referida como compensação de movimento de bloco sobreposto (OBMC).
[322] No modo OBMC, a informação que indica um tamanho de sub-bloco para OBMC (referida como, por exemplo, um tamanho de bloco OBMC) pode ser sinalizada no nível de sequência. Ademais, a informação que indica se aplica o modo OBMC (referida como, por exemplo, um indicador OBMC) pode ser sinalizada no nível de CU. Deve-se notar que a sinalização de tal informação 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 imagem, nível de fatia, nível de tile, nível de CTU ou nível de sub-bloco).
[323] Exemplos de modo OBMC serão descritos em maiores detalhes. As figuras 35 e 36 são um fluxograma e um diagrama conceitual para ilustrar uma ideia geral de um processo de correção de imagem de previsão realizado por um processo OBMC.
[324] Primeiro, como ilustrado na figura 36, uma imagem de previsão (Pred) é obtida através da compensação de movimento normal utilizando um vetor de movimento (MV) designado para o bloco alvo de processamento (atual). Na figura 36, a seta "MV" aponta para uma imagem de referência, e indica a que o bloco atual da imagem atual se refere a fim de obter uma imagem de previsão.
[325] A seguir, uma imagem de previsão (Pred_L) é obtida pela aplicação de um vetor de movimento (MV_L) que já foi derivado para o bloco codificado, vizinho do lado esquerdo do bloco atual, para o bloco atual (reutilização do vetor de movimento para o bloco atual). O vetor de movimento (MV_L) é indicado por uma seta "MV_L" que indica uma imagem de referência a partir 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 mistura do limite entre os blocos vizinhos.
[326] Da mesma forma, uma imagem de previsão (Pred_U) é obtida pela aplicação de um vetor de movimento (MV_U), que já foi derivado para o bloco codificado, vizinho de cima do bloco atual, ao bloco atual (reutilização do vetor de movimento para o bloco atual). O vetor de movimento (MV_U) é indicado por uma seta "MV_U" indicando uma imagem de referência de um bloco atual. Uma segunda correção de uma imagem de previsão é realizada pela sobreposição da imagem de previsão Pred_U com as imagens de previsão (por exemplo, Pred e Pred_L) nas quais a primeira correção foi realizada. Isso fornece um efeito de mistura do limite entre os blocos vizinhos. A imagem de previsão obtida pela segunda correção é uma na qual o limite entre os blocos vizinhos foi misturado (suavizado), e, dessa forma, é a imagem de previsão final do bloco atual.
[327] Apesar de o exemplo acima ser um método de correção de dois percursos utilizando-se os blocos vizinhos esquerdo e superior, deve-se notar que o método de correção pode ser o método de correção de três ou mais percursos, utilizando-se também o bloco vizinho direito e/ou o bloco vizinho inferior.
[328] Deve-se notar que a região na qual 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.
[329] Deve-se notar que o processo de correção de imagem de previsão, de acordo com OBMC, para obtenção de uma imagem de previsão Pred a partir de uma imagem de referência pela sobreposição da imagem de previsão adicional Pred_L e Pred_U foi descrito acima. No entanto, quando uma imagem de previsão é corrigida com base em uma pluralidade de imagens de referência, um processo similar pode ser aplicado a cada uma dentre a pluralidade de imagens de referência. Em tal caso, depois que as imagens de previsão corrigidas são obtidas a partir das imagens de referência respectivas, pela realização da correção de imagem OBMC, baseada na pluralidade de imagens de referência, as imagens de previsão corrigidas obtidas são adicionalmente sobrepostas para se obter a imagem de previsão final.
[330] Deve-se notar que, em OBMC, a unidade de um bloco atual pode ser a unidade de um bloco de previsão ou a unidade de um sub- bloco obtido pela divisão adicional do bloco de previsão.
[331] Um exemplo de um método de determinação de se aplica um processo OBMC é um método para utilizar um obmc_flag, que é um sinal que indica se aplica um processo OBMC. Como um exemplo específico, um codificador determina se o bloco atual pertence a uma região que possui o movimento complicado. O codificador configura o obmc_flag para um valor igual a "1" quando o bloco pertence a uma região que possui movimento complicado, e aplica um processo OBMC quando da codificação, e configura o obmc_flag para um valor igual a "0" quando o bloco não pertence a uma região que apresenta movimento complicado e codifica o bloco sem aplicar um processo OBMC. O decodificador comuta entre a aplicação e não aplicação de um processo OBMC pela decodificação do obmc_flag escrito na sequência (por exemplo, uma sequência comprimida) e decodificação do bloco pela comutação entre a aplicação e não aplicação do processo OBMC, de acordo com o valor de indicador.
[332] 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 possuindo um formato 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. O formato diferente de um retângulo pode ser, por exemplo, um triângulo.
[333] A figura 37 é um diagrama conceitual para ilustrar a geração de duas imagens de previsão triangulares.
[334] O interprevisor 126 gera uma imagem de previsão triangular pela realização da compensação de movimento de uma primeira partição possuindo um formato triangular em um bloco atual pela utilização de 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 pela realização da compensação de movimento de uma segunda partição possuindo um formato triangular em um bloco atual pela utilização de 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 possuindo o mesmo formato retangular que o formato retangular do bloco atual pela combinação dessas imagens de previsão.
[335] Deve-se notar que, apesar de a primeira partição e a segunda partição serem triângulos no exemplo ilustrado na figura 37, a primeira partição e a segunda partição podem ser trapezoides, ou outros formatos diferentes um do outro. Adicionalmente, apesar de o bloco atual incluir duas partições no exemplo ilustrado na figura 37, o bloco atual pode incluir três ou mais partições.
[336] Adicionalmente, a primeira partição e a segunda partição podem se sobrepor uma à outra. Em outras palavras, a primeira partição e a segunda partição podem incluir a mesma região de pixel. Nesse caso, uma imagem de previsão para um bloco atual pode ser gerada utilizando-se uma imagem de previsão na primeira partição e uma imagem de previsão na segunda partição.
[337] Adicionalmente, apesar de um exemplo no qual uma imagem de previsão é gerada para cada uma das duas partições, utilizando a interprevisão, uma imagem de previsão pode ser gerada para pelo menos uma partição utilizando-se a intraprevisão. Compensação de Movimento > BIO
[338] A seguir, um método de derivação de um vetor de movimento é descrito. Primeiro, um modo de derivação de um vetor de movimento, com base em um modelo que assume o movimento linear uniforme, será descrito. Esse modo também é referido como modo de fluxo ótico bidirecional (BIO).
[339] A figura 38 é um diagrama conceitual para ilustrar um modelo assumindo o movimento linear uniforme. Na figura 38, (vx, vy) indica um vetor de velocidade, e 0 e 1 indicam distâncias temporais entre uma imagem atual (Cur Pic) e duas imagens de referência (Ref0, Ref1). (MVx0, MVy0) indicam os vetores de movimento que correspondem à imagem de referência Ref0 e (MVx1, MVy1) indica os vetores de movimento que correspondem à imagem de referência Ref1.
[340] Aqui, considerando-se o movimento linear uniforme exibido pelos vetores 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 equação de fluxo ótico a seguir (2) pode ser utilizada. Matemática 3 I(k)/t + vxI(k)/x + vyI(k)/y = 0. (2)
[341] Aqui, I(k) indica um valor de luminescência de movimento compensado da imagem de referência k (k = 0, 1). Essa equação de fluxo ótico ilustra que a soma do (i) tempo derivado do valor de luminescência, (ii) produto da velocidade horizontal e componente horizontal do gradiente espacial de uma imagem de referência, e (iii)
produto da velocidade vertical e do componente vertical do gradiente espacial de uma imagem de referência, é igual a zero. Um vetor de movimento de cada bloco obtido a partir de, por exemplo, uma lista de mistura, pode ser corrigido em unidades de um pixel, com base em uma combinação da equação de fluxo ótico e interpolação Hermite.
[342] Deve-se notar que um vetor de movimento pode ser derivado no lado do decodificador utilizando-se um método diferente da derivação de um vetor de movimento com base em um modelo, assumindo-se o movimento linear uniforme. Por exemplo, um vetor de movimento pode ser derivado em unidades de um sub-bloco com base nos vetores de movimento dos blocos vizinhos. Compensação de Movimento > LIC
[343] A seguir, um exemplo de um modo, no qual uma imagem de previsão (prediction) é gerado pela utilização de um processo de compensação de iluminação local (LIC), será descrito.
[344] A figura 39 é um diagrama conceitual para ilustrar um exemplo de um método de geração de imagem de previsão utilizando um processo de correção de luminescência realizado por um processo LIC.
[345] Primeiro, um MV é derivado de uma imagem de referência codificada, e uma imagem de referência correspondente ao bloco atual é obtida.
[346] A seguir, a informação, que indica como o valor de luminescência mudou entre a imagem de referência e a imagem atual, é extraída para o bloco atual. Essa extração é realizada com base nos valores de pixel de luminescência para a região de referência vizinha, esquerda, codificada (que cerca a região de referência) e a região de referência vizinha, superior, codificada (que cerca a região de referência), e o valor de pixel de luminescência na posição correspondente na imagem de referência especificada pelo MV derivado. Um parâmetro de correção de luminescência é calculado pela utilização da informação indicando como o valor de luminescência mudou.
[347] A imagem de previsão para o bloco atual é gerada pela realização de um processo de correção de luminescência no qual o parâmetro de correção de luminescência é aplicado à imagem de referência na imagem de referência especificada pelo MV.
[348] Deve-se notar que o formato da região de referência circundante ilustrado na figura 39 é apenas um exemplo; a região de referência circundante pode ter um formato diferente.
[349] Ademais, apesar de o processo, no qual uma imagem de previsão é gerada a partir de uma única imagem de referência, ter sido descrito aqui, casos nos quais uma imagem de previsão é gerada a partir de uma pluralidade de imagens de referência podem ser descritos de formas similares. A imagem de previsão pode ser gerada depois da realização de um processo de correção de luminescência das imagens de referência obtidas a partir das imagens de referência, da mesma forma que a descrita acima.
[350] Um exemplo de um método de determinação de se aplica um processo LIC, ou não, é um método para utilização de um lic_flag que é um sinal que indica se aplica, ou não, o processo LIC. Como um exemplo específico, o codificador determina se o bloco atual pertence a uma região possuindo uma mudança de luminescência. O codificador configura lic_flag para um valor igual a "1" quando o bloco pertence a uma região possuindo uma mudança de luminescência e aplica um processo LIC quando da codificação, e configura lic_flag para um valor igual a "0" quando o bloco não pertence a uma região possuindo uma mudança de luminescência e codifica o bloco atual sem aplicar um processo LIC. O decodificador pode decodificar lic_flag escrito na sequência e decodificar o bloco atual pela comutação entre a aplicação e não aplicação de um processo LIC, de acordo com o valor do indicador.
[351] Um exemplo de um método diferente de determinação de se aplica, ou não, um processo LIC é um método de determinação de acordo com o fato de se um processo LIC foi aplicado a um bloco circundante. Em um exemplo específico, quando o modo de mistura é utilizado no bloco atual, o fato de um processo LIC ter sido aplicado na codificação do bloco codificado circundante, selecionado mediante a derivação de MV no processo de modo de mistura, é determinado. De acordo com o resultado, a codificação é realizada pela comutação entre a aplicação e a não aplicação de um processo LIC. É notado que, também nesse exemplo, os mesmos processos são aplicados aos processos no lado do decodificador.
[352] Uma modalidade do processo de correção de luminescência (LIC), descrito com referência à figura 39, é descrita em detalhes abaixo.
[353] Primeiro, o interprevisor 126 deriva um vetor de movimento para obtenção de uma imagem de referência correspondente a um bloco atual a ser codificado a partir de uma imagem de referência que é uma imagem codificada.
[354] A seguir, o interprevisor 126 extrai informação indicando como o valor de luminescência da imagem de referência foi alterado para o valor de luminescência da imagem atual, utilizando-se o valor de pixel de luminescência de uma região de referência circundante codificada, que é vizinha pelo lado esquerdo ou de cima do bloco atual, e o valor de luminescência na posição correspondente na imagem de referência especificada por um vetor de movimento, e calcula um parâmetro de correção de luminescência. Por exemplo, assume-se que o valor de pixel de luminescência de um pixel determinado na região de referência circundante na imagem atual seja p0, e que o valor de pixel de luminescência do pixel correspondente ao pixel determinado na região de referência circundante na imagem de referência seja p1. O interprevisor 126 calcula os coeficientes A e B para otimizar A x p1 + B = p0 como o parâmetro de correção de luminescência para uma pluralidade de pixels na região de referência circundante.
[355] A seguir, o interprevisor 126 realiza um processo de correção de luminescência utilizando o parâmetro de correção de luminescência para a imagem de referência na imagem de referência especificada pelo vetor de movimento, para gerar uma imagem de previsão para o bloco atual. Por exemplo, assume-se que o valor de pixel de luminescência na imagem de referência seja p2, e que o valor de pixel de luminescência com luminescência corrigida da imagem de previsão seja p3. O interprevisor 126 gera a imagem de previsão depois de ser submetida ao processo de correção de luminescência pelo cálculo A x p2 + B = p3 para cada um dos pixels na imagem de referência.
[356] Deve-se notar que o formato da região de referência circundante, ilustrada na figura 39, é um exemplo; um formato diferente além do formato da região de referência circundante pode ser utilizado. Adicionalmente, parte da região de referência circundante ilustrada na figura 39 pode ser utilizada. Por exemplo, uma região possuindo um número determinado de pixels extraídos de cada um dentre um pixel vizinho superior e um pixel vizinho esquerdo pode ser utilizada como uma região de referência circundante. O número determinado de pixels pode ser predeterminado. Por exemplo, uma região que possui um número determinado de pixels extraídos de cada um dentre um pixel vizinho superior e um pixel vizinho esquerdo pode ser utilizada como uma região de referência circundante. O número determinado de pixels pode ser predeterminado. Adicionalmente, a região de referência circundante não está limitada a uma região com vizinhos ao bloco atual, e pode ser uma região que não é vizinha do bloco atual. No exemplo ilustrado na figura 39, a região de referência circundante na imagem de referência é uma região especificada por um vetor de movimento em uma imagem atual, a partir de uma região de referência circundante na imagem atual. No entanto, uma região especificada por outro vetor de movimento também é possível. Por exemplo, o outro vetor de movimento pode ser um vetor de movimento em uma região de referência circundante na imagem atual.
[357] Apesar de as operações realizadas pelo codificador 100 terem sido descritas aqui, deve-se notar que o decodificador 200 realiza, tipicamente, operações similares.
[358] Deve-se notar que o processo LIC pode ser aplicado não apenas à luminescência, mas também à crominância. Nesse momento, um parâmetro de correção pode ser derivado individualmente para cada um dentre Y, Cb e Cr, ou um parâmetro de correção comum pode ser utilizado para qualquer um dentre Y, Cb e Cr.
[359] Adicionalmente, o processo LIC pode ser aplicado em unidades de um sub-bloco. Por exemplo, um parâmetro de correção pode ser derivado utilizando-se uma região de referência circundante em um sub-bloco atual, e uma região de referência circundante em um sub-bloco de referência, em uma imagem de referência especificada por um MV do sub-bloco atual. Controlador de Previsão
[360] O interprevisor 128 seleciona um dentre um sinal de intraprevisão (um sinal enviado a partir do intraprevisor 124) e um sinal de interprevisão (um sinal enviado a partir do interprevisor 126), e envia o sinal selecionado para o subtraidor 104 e somador 116 como um sinal de previsão.
[361] Como ilustrado na figura 1, em vários tipos de exemplos de codificador, o controlador de previsão 128 pode enviar um parâmetro de previsão que é registrado no codificador por entropia 110. O codificador por entropia 110 pode gerar uma sequência de bits codificados (ou uma sequência), com base no parâmetro de previsão que é registrado a partir do controlador de previsão 128 e coeficientes quantizados que são registrados a partir do quantizador 108. O parâmetro de previsão pode ser utilizado em um decodificador. O decodificador pode receber e decodificar a sequência de bits codificados, 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) uma seleção do sinal de previsão (por exemplo, um vetor de movimento, um tipo de previsão, ou um modo de previsão utilizado pelo intraprevisor 124 ou interprevisor 126) ou (ii) um índice opcional, um indicador, ou um valor que é baseado em um processo de previsão realizado em cada um dentre o intraprevisor 124, o interprevisor 126 e o controlador de previsão 128, ou que indique o processo de previsão. Exemplo de Montagem do Codificador
[362] A figura 40 é um diagrama em bloco ilustrando um exemplo de montagem do codificador 100. O codificador 100 inclui o processador a1 e a memória a2. Por exemplo, a pluralidade de elementos constituintes do codificador 100 ilustrado na figura 1 são montados no processador a1 e na memória a2, ilustrados na figura 40.
[363] O processador a1 é um conjunto de circuitos que realiza o processamento da informação e é acessível à memória a2. Por exemplo, o processador a1 é um conjunto de circuitos eletrônicos dedicado ou geral que codifica um vídeo. O processador a1 pode ser um processador, tal como uma CPU. Adicionalmente, o processador a1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Adicionalmente, por exemplo, o processador a1 pode representar os papéis de dois ou mais elementos constituintes a partir da pluralidade de elementos constituintes do codificador 100 ilustrado na figura 1, etc.
[364] A memória a2 é uma memória dedicada ou geral para armazenar informação que é utilizada pelo processador a1 para codificar um vídeo. A memória a2 pode ser um conjunto de circuitos eletrônicos, e pode ser conectada ao processador a1. Adicionalmente, a memória a2 pode ser incluída no processador a1. Adicionalmente, a memória a2 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Adicionalmente, a memória a2 pode ser um disco magnético, um disco ótico, ou similar, ou pode ser representada como um armazenador, um meio de gravação ou similar. Adicionalmente, a memória a2 pode ser memória não volátil ou memória volátil.
[365] Por exemplo, a memória a2 pode armazenar um vídeo a ser codificado ou uma sequência de bits que corresponde a um vídeo codificado. Adicionalmente, a memória a2 pode armazenar um programa para fazer com que o processador a1 codifique um vídeo.
[366] Adicionalmente, por exemplo, a memória a2 pode assumir os papéis de dois ou mais elementos constituintes para armazenar informação a partir da pluralidade de elementos constituintes do codificador 100 ilustrado na figura 1, etc. Por exemplo, a memória a2 pode assumir os papéis da memória de bloco 118 e memória de quadro 122, ilustradas na figura 1. Mais especificamente, a memória a2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[367] Deve-se notar que, no codificador 100, todos dentre a pluralidade de elementos constituintes indicados na figura 1, etc. podem não ser implementados, e todos os processos descritos acima podem não ser realizados. Parte dos elementos constituintes indicados na figura, etc. podem ser incluídos em outro dispositivo, ou parte dos processos descritos acima podem ser realizados por outro dispositivo. Decodificador
[368] A seguir, um decodificador capaz de decodificar um sinal codificado (sequência de bits codificados) enviado, por exemplo, a partir do codificador 100 descrito acima, será descrito. A figura 41 é um diagrama em bloco ilustrando uma configuração funcional do decodificador 200 de acordo com uma modalidade. O decodificador 200 é um decodificador de vídeo que decodifica um vídeo em unidades de um bloco.
[369] Como ilustrado na figura 41, o decodificador 200 inclui o decodificador por entropia 202, o quantizador inverso 204, o transformador inverso 206, o somador 208, a memória de bloco 210, o filtro de circuito 212, a memória de quadro 214, o intraprevisor 216, o interprevisor 218 e o controlador de previsão 220.
[370] O decodificador 200 é implementado como, por exemplo, um processador genérico e uma memória. Nesse caso, quando um programa de software, armazenado na memória, é executado pelo processador, o processador funciona como o decodificador por entropia 202, o quantizador inverso 204, o transformador inverso 206, o somador 208, o filtro de circuito 212, o intraprevisor 216, o interprevisor 218 e o controlador de previsão 220. Alternativamente, o decodificador 200 pode ser implementado como um ou mais circuitos eletrônicos dedicados que correspondem ao decodificador por entropia 202, quantizador inverso 204, transformador inverso 206, somador 208, filtro de circuito 212, intraprevisor 216, interprevisor 218 e controlador de previsão 220.
[371] Doravante, um fluxo geral de processos realizados pelo decodificador 200 é descrito e, então, cada um dos elementos constituintes incluídos no decodificador 200 será descrito. Fluxo Geral de Processo de Decodificação
[372] A figura 42 é um fluxograma ilustrando um exemplo de um processo de decodificação geral realizado pelo decodificador 200.
[373] Primeiro, o decodificador por entropia 202 do decodificador 200 identifica um padrão de divisão de um bloco possuindo um tamanho fixo (por exemplo, 128 x 128 pixels) (Etapa Sp_1_. Esse padrão de divisão é um padrão de divisão selecionado pelo codificador 100. O decodificador 200, então, realiza os processos da Etapa Sp_2 a Sp_6 para cada um dentre uma pluralidade de blocos do padrão de divisão.
[374] Em outras palavras, o decodificador por entropia 202 decodifica (especificamente, decodifica por entropia) os coeficientes quantizados codificados e um parâmetro de previsão de um bloco atual a ser decodificado (também referido como um bloco atual) (Etapa Sp_2).
[375] A seguir, 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 uma pluralidade de resíduos de previsão (isso é, um bloco de diferença (Etapa Sp_3).
[376] A seguir, o processador de previsão, incluindo todos ou parte do intraprevisor 216, do interprevisor 218, e do controlador de previsão 220, gera um sinal de previsão (também referido como um bloco de previsão) do bloco atual (Etapa Sp_4).
[377] A seguir, o somador 208 adiciona o bloco de previsão ao bloco de diferença para gerar uma imagem reconstruída (também referida como um bloco de imagem decodificada) do bloco atual (Etapa Sp_5).
[378] Quando a imagem reconstruída é gerada, o filtro de circuito 212 realiza a filtragem da imagem reconstruída (Etapa Sp_6).
[379] O decodificador 200, então, determina se a decodificação de toda a imagem foi encerrada (Etapa Sp_7). Quando da determinação de que a decodificação não foi terminada ainda (Não na etapa Sp_7), o decodificador 200 executa repetidamente os processos, iniciando com a Etapa Sp_1.
[380] Como ilustrado, os processos das Etapas Sp_1 a Sp_7 são realizados sequencialmente pelo decodificador 200. Alternativamente, dois ou mais dos processos podem ser realizados em paralelo, a ordem de processamento dos dois ou mais processos podendo ser modificada, etc. Decodificador por Entropia
[381] O decodificador por entropia 202 decodifica por entropia uma sequência de bits codificados. Mais especificamente, por exemplo, o decodificador por entropia 202 decodifica aritmeticamente uma sequência de bits codificados em um sinal binário. O decodificador por entropia 202, então, desbinariza o sinal binário. Com isso, o decodificador por entropia 202 envia os coeficientes quantizados de cada bloco para o quantizador inverso 202. O decodificador por entropia 202 pode enviar um parâmetro de previsão incluído em uma sequência de bits codificados (ver figura 1) para o intraprevisor 216, o interprevisor 218 e o controlador de previsão 220. O intraprevisor 216, o interprevisor 218 e o controlador de previsão 220 em uma modalidade podem executar os mesmos processos de previsão que os realizados pelo intraprevisor 124, interprevisor 126 e controlador de previsão 128 no lado do codificador. Quantizador Inverso
[382] O quantizador inverso 204 quantiza de forma inversa os coeficientes quantizados de um bloco a ser decodificado (doravante referido como um bloco atual) que são registrados a partir do decodificador por entropia 202. Mais especificamente, o quantizador inverso 204 quantiza de forma inversa os coeficientes quantizados do bloco atual, com base nos parâmetros de quantização correspondentes aos coeficientes quantizados. O quantizador inverso 204, então, envia os coeficientes de transformação quantizada inversa do bloco atual para o transformador inverso 206. Transformador Inverso
[383] O transformador inverso 206 restaura os erros de previsão pela transformação inversa dos coeficientes de transformação que são registrados a partir do quantizador inverso 204.
[384] Por exemplo, quando a informação analisada a partir de uma sequência de bits codificados indica que EMT ou AMT deve ser aplicado (por exemplo, quando um indicador AMT é verdadeiro), o transformador inverso 206 transforma de forma inversa os coeficientes de transformação do bloco atual com base na informação que indica o tipo de transformação analisada.
[385] Ademais, por exemplo, quando a informação analisada a partir de uma sequência de bits codificados indica que NSST deve ser aplicado, o transformador inverso 206 aplica uma transformação inversa secundária aos coeficientes de transformação. Somador
[386] O somador 208 reconstrói o bloco atual pela adição de erros de previsão que são registrados a partir do transformador inverso 206 e as amostras de previsão que são registradas a partir do controlador de previsão 220. O somador 208, então, envia o bloco reconstruído para a memória de bloco 210 e filtro de circuito 212. Memória de Bloco
[387] A memória de bloco 210 é o armazenador para armazenar os blocos em uma imagem a ser decodificada (doravante referida como uma imagem de atual) e a ser referida na intraprevisão. Mais especificamente, a memória de bloco 210 armazena os blocos reconstruídos enviados a partir do somador 208. Filtro de Circuito
[388] O filtro de circuito 212 aplica um filtro de circuito aos blocos reconstruídos pelo somador 208, e envia os blocos reconstruídos filtrados para a memória de quadro 214, dispositivo de exibição, etc.
[389] Quando a informação que indica o LIGAR ou DESLIGAR de um ALF, analisada a partir de uma sequência de bits codificados, indicar que um ALF está LIGADO, um filtro, dentre uma pluralidade de filtros, é selecionado com base na direção e atividade de gradientes locais, e o filtro selecionado é aplicado ao bloco reconstruído. Memória de Quadro
[390] A memória de quadro 214, por exemplo, é o armazenador para armazenar as imagens de referência para uso na interprevisão, e também é referida como um armazenador de quadro. Mais especificamente, a memória de quadro 214 armazena um bloco reconstruído filtrado pelo filtro de circuito 212. Processador de Previsão (Intraprevisor, Interprevisor, Controlador de Previsão)
[391] A figura 43 é um fluxograma ilustrando um exemplo de um processo realizado por um processo de previsão do decodificador 200. Deve-se notar que o processador de previsão inclui todos ou parte dos seguintes elementos constituintes: intraprevisor 216; interprevisor 218 e controlador de previsão 220.
[392] O processador de previsão gera uma imagem de previsão de um bloco atual (Etapa Sq_1). Essa imagem de previsão também é referida como um sinal de previsão ou um bloco de previsão. É notado que o sinal de previsão, por exemplo, é um sinal de intraprevisão ou um sinal de interprevisão. Especificamente, o processador de previsão gera a imagem de previsão do bloco atual utilizando uma imagem reconstruída que já foi obtida através da geração de um bloco de previsão, geração de um bloco de diferença, geração de um bloco de coeficiente, restauração de um bloco de diferença e geração de um bloco de imagem decodificada.
[393] A imagem reconstruída pode ser, por exemplo, uma imagem em uma imagem de referência, ou uma imagem de um bloco decodificado em uma imagem atual que é a imagem incluindo o bloco atual. O bloco decodificado na imagem atual é, por exemplo, um bloco vizinho ao bloco atual.
[394] A figura 44 é um fluxograma ilustrando outro exemplo de um processo realizado pelo processador de previsão do decodificador 200.
[395] O processador de previsão determina um método ou um modo de geração de 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.
[396] Quando da determinação de um primeiro método como um modo de geração de uma imagem de previsão, o processador de previsão gera uma imagem de previsão de acordo com o primeiro método (Etapa Sr_2a). Quando da determinação de um segundo método como um modo para gerar uma imagem de previsão, o processador de previsão gera uma imagem de previsão de acordo com o segundo método (Etapa Sr_2b). Quando da determinação de um terceiro método como um modo de geração de uma imagem de previsão, o processador de previsão gera uma imagem de previsão de acordo com o terceiro método (Etapa Sr_2c).
[397] 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 dos primeiro a 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 descrita acima pode ser utilizada nesses métodos de previsão. Intraprevisor
[398] O intraprevisor 216 gera um sinal de previsão (sinal de intraprevisão) pela realização da intraprevisão por referência a um bloco ou blocos na imagem atual armazenada na memória de bloco 210, com base no modo de intraprevisão analisado a partir da sequência de bits codificados. Mais especificamente, o intraprevisor 216 gera um sinal de intraprevisão pela realização da intraprevisão por referência às amostras (por exemplo, valores de luminescência e/ou crominância) de um bloco ou blocos vizinhos do bloco atual, e, então, envia o sinal de intraprevisão para o controlador de previsão 220.
[399] Deve-se notar que quando um modo de intraprevisão, no qual um bloco de luminescência é referido na intraprevisão de um bloco de crominância, é selecionado, o intraprevisor 216 pode prever o componente de crominância do bloco atual com base no componente de luminescência do bloco atual.
[400] Ademais, quando a informação analisada a partir de uma sequência de bits codificados indica que PDPC deve ser aplicado, o intraprevisor 216 corrige os valores de pixel intraprevistos com base nos gradientes de pixel de referência horizontal/vertical. Interprevisor
[401] O interprevisor 218 prevê o bloco atual por referência a uma imagem de referência armazenada na memória de quadro 214. A interprevisão é realizada em unidades de um bloco atual ou um sub- bloco (por exemplo, um bloco de 4 x 4) no bloco atual. Por exemplo, o interprevisor 218 gera um sinal de interprevisão do bloco atual ou do sub-bloco pela realização da compensação de movimento pela utilização da informação de movimento (por exemplo, um vetor de movimento) analisado a partir de uma sequência de bits codificados (por exemplo, um parâmetro de previsão enviado a partir do decodificador por entropia 202), e envia o sinal de interprevisão para o controlador de previsão 220.
[402] Deve-se notar que quando a informação analisada a partir da sequência de bits codificados indica que o modo OBMC deve ser aplicado, o interprevisor 218 gera o sinal de interprevisão utilizando a informação de movimento de um bloco vizinho em adição à informação de movimento do bloco atual obtida a partir da estimativa de movimento.
[403] Ademais, quando a informação analisada a partir da sequência de bits codificados indica que o modo FRUC deve ser aplicado, o interprevisor 218 deriva a informação de movimento pela realização da estimativa de movimento de acordo com o método de combinação de padrão (combinação bilateral ou combinação de gabarito) analisado a partir da sequência de bits codificados. O interprevisor 218, então, realiza a compensação de movimento (previsão) utilizando a informação de movimento derivada.
[404] Ademais, quando o modo BIO deve ser aplicado, o interprevisor 218 deriva um vetor de movimento com base em um modelo assumindo o movimento linear uniforme. Ademais, quando a informação analisada a partir da sequência de bits codificados indica que o modo de previsão de compensação de movimento afim deve ser aplicado, o interprevisor 218 deriva um vetor de movimento de cada sub- bloco com base nos vetores de movimento dos blocos vizinhos. Derivação de MV > Intermodo Normal
[405] Quando a informação analisada a partir de uma sequência de bits codificados indica que o intermodo normal deve ser aplicado, o interprevisor 218 deriva um MV com base na informação analisada a partir da sequência de bits codificados e realiza a compensação de movimento (previsão) utilizando o MV.
[406] A figura 45 é um fluxograma ilustrando um exemplo da interprevisão no intermodo normal no decodificador 200.
[407] O interprevisor 218 do decodificador 200 realiza a compensação de movimento para cada bloco. O interprevisor 218 obtém uma pluralidade de candidatos a MV para um bloco atual com base na informação, tal como MVs de uma pluralidade de blocos decodificados que cercam temporalmente ou espacialmente o bloco atual (Etapa Ss_1). Em outras palavras, o interprevisor 218 gera uma lista de candidatos a MV.
[408] A seguir, o interprevisor 218 extrai N (um inteiro igual a 2 ou mais) candidatos a MV da pluralidade de candidatos a MV obtidos na
Etapa Ss_1, como candidatos a previsor de vetor de movimento (também referidos como candidatos a previsor de MV), de acordo com uma ordem de prioridade determinada (Etapa Ss_2). Deve-se notar que a ordem de prioridade pode ser determinada de antemão para cada um dos N candidatos de previsor de MV.
[409] A seguir, o interprevisor 218 decodifica a informação de seleção de previsor de vetor de movimento a partir de uma sequência de entrada (isso é, uma sequência de bits codificados), e seleciona, um candidato a previsor de MR a partir dos N candidatos a previsor de MV utilizando a informação de seleção de previsor de vetor de movimento decodificada, como um vetor de movimento (também referido como um previsor de MV) do bloco atual (Etapa Ss_3).
[410] A seguir, o interprevisor 218 decodifica uma diferença de MV da sequência de entrada, e deriva um MV para um bloco atual pela adição de um valor de diferença que é a diferença de MV decodificada e um previsor de vetor de movimento selecionado (Etapa Ss_4).
[411] Por fim, o interprevisor 218 gera uma imagem de previsão para o bloco atual pela realização da compensação de movimento do bloco atual utilizando o MV derivado e a imagem de referência decodificada (Etapa Ss_5). Controlador de Previsão
[412] O controlador de previsão 220 seleciona o sinal de intraprevisão ou o sinal de interprevisão, e envia o sinal de previsão selecionado para o somador 208. Como um todo, as configurações, funções e processos do controlador de previsão 220, do intraprevisor 216 e do interprevisor 218 no lado do decodificador podem corresponder às configurações, funções e processos do controlador de previsão 128, do intraprevisor 124 e do interprevisor 126 no lado do codificador. Exemplo de Montagem do Decodificador
[413] A figura 46 é um diagrama em bloco ilustrando um exemplo de montagem do decodificador 200. O decodificador 200 inclui o processador b1 e a memória b2. Por exemplo, a pluralidade de elementos constituintes do decodificador 200, ilustrado na figura 41, são montadas no processador b1 e na memória b2 ilustrados na figura 46.
[414] O processador b1 é o conjunto de circuitos que realiza o processamento da informação e é acessível à memória b2. Por exemplo, o processador b1 é o conjunto de circuitos eletrônicos dedicado ou geral que decodifica um vídeo (isso é, uma sequência de bits codificados). O processador b1 pode ser um processador, tal como uma CPU. Adicionalmente, o processador b1 pode ser um agregado de uma pluralidade de circuitos eletrônicos. Adicionalmente, por exemplo, o processador b1 pode assumir os papéis de dois ou mais elementos constituintes da pluralidade de elementos constituintes do decodificador 200 ilustrado na figura 41, etc.
[415] A memória b2 é uma memória dedicada ou geral para armazenar informação que é utilizada pelo processador b1 para decodificar uma sequência de bits codificados. A memória b2 pode ser o conjunto de circuitos eletrônicos, e pode ser conectada ao processador b1. Adicionalmente, a memória b2 pode ser incluída no processador b1. Adicionalmente, a memória b2 pode ser um disco magnético, um disco ótico, ou similar, ou pode ser representada como um armazenador, um meio de gravação ou similar. Adicionalmente, a memória b2 pode ser uma memória não volátil ou uma memória volátil.
[416] Por exemplo, a memória b2 pode armazenar um vídeo ou uma sequência de bits. Adicionalmente, a memória b2 pode armazenar um programa para fazer com que o processador b1 decodifique uma sequência de bits codificados.
[417] Adicionalmente, por exemplo, a memória b2 pode assumir os papéis de dois ou mais elementos constituintes para armazenamento de informação a partir da pluralidade de elementos constituintes do decodificador 200 ilustrado na figura 41, etc. Especificamente, a memória b2 pode assumir os papéis da memória de bloco 210 e memória de quadro 214 ilustradas na figura 41. Mais especificamente, a memória b2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[418] Deve-se notar que, no decodificador 200, todos dentre a pluralidade de elementos constituintes ilustrados na figura 41, etc., podem não ser implementados, e todos os processos descritos acima podem não ser realizados. Parte dos elementos constituintes indicados na figura 41, etc. pode ser incluída em outro dispositivo, ou parte dos processos descritos acima pode ser realizada por outro dispositivo. Definições de Termos
[419] Os termos respectivos podem ser definidos como indicado abaixo como exemplos.
[420] Uma imagem é um conjunto de amostras de luminescência no formato monocromático ou um conjunto de amostras de luminescência e dois conjuntos correspondentes de amostras de crominância no formato de cores de 4:2:0, 4:2:2 e 4:4:4. Uma imagem pode ser um quadro ou um campo.
[421] Um quadro é a composição de um campo superior e um campo inferior, onde as fileiras de amostra 0, 2, 4,... originam do campo superior e as fileiras de amostras 1, 3, 5,... originam do campo inferior.
[422] Uma fatia é um número inteiro de unidades de árvore de codificação contidas em um segmento de fatia independente e todos os segmentos de fatia dependentes subsequentes (se algum) que precedem o próximo segmento de fatia independente (se algum) dentro da mesma unidade de acesso.
[423] Um tile é uma região retangular de blocos de árvore de codificação dentro e uma coluna de tiles particular e uma fileira de tiles particular em uma imagem. Um tile pode ser uma região retangular do quadro que deve poder ser decodificada e codificada independentemente, apesar de a filtragem de circuito através das bordas de tile ainda poder ser aplicada.
[424] Um bloco é um conjunto de amostras M x N (M colunas por N fileiras), ou um conjunto M x N de coeficientes de transformação. Um bloco pode ser uma região quadrada ou retangular de pixels incluindo uma matriz de Luminescência e duas matrizes de Crominância.
[425] Uma unidade de árvore de codificação (CTU) pode ser um bloco de árvore de codificação de amostras de luminescência de uma imagem que possui três conjuntos de amostras, ou dois blocos de árvore de codificação correspondentes de amostras de crominância. Alternativamente, uma CTU pode ser um bloco de árvore de codificação de amostras de uma dentre uma imagem monocromática e uma imagem que é codificada utilizando-se três planos de cores separados e estruturas de sintaxe utilizadas para codificar as amostras.
[426] Um super bloco pode ser um bloco quadrado de 64 x 64 pixels que consiste de 1 ou 2 blocos de informação de modo ou é dividido de forma recursiva em quatro blocos de 32 x 32, que podem ser adicionalmente divididos. Primeiro Aspecto do Processo de Interprevisão
[427] Doravante, o codificador 100 e o decodificador 200 realizam um processo de interprevisão utilizando um processo de derivação de vetor de movimento que deriva um vetor de movimento obtido pela extensão de um vetor de movimento de base. Deve-se notar que essa técnica é referida como a expressão de vetor de movimento final (UMVE), mas também pode, algumas vezes, ser referida como uma diferença de vetor de movimento de modo de mistura (MMVD).
[428] Ademais, como segue, o processo de derivação de vetor de movimento é realizado utilizando-se um processo de seleção que decide se utiliza um dos índices de uma das tabelas. Apesar de as operações realizadas pelo decodificador 200 serem descritas como representado abaixo, o codificador 100 realiza as mesmas operações.
[429] No primeiro aspecto da presente modalidade, o processo de seleção é realizado utilizando-se não um indicador, mas a informação de um bloco decodificado.
[430] A figura 47 é um diagrama ilustrando um vetor de movimento delta para uso em um processo de interprevisão de acordo com a Modalidade 1.
[431] No exemplo ilustrado na figura 47, um vetor de movimento de base é considerado como sendo o ponto de origem do eixo geométrico X e do eixo geométrico Y. Ademais, no exemplo ilustrado na figura 47, a primeira direção ou a segunda direção é uma direção (direção oblíqua) obtida pela inclinação da direção do eixo geométrico XY em um ângulo de 45 graus. Aqui, a primeira direção e a segunda direção são ortogonais.
[432] Um vetor de movimento delta está localizado ao longo de uma das direções positiva e negativa da primeira direção ou da segunda direção, e é representado como um vetor que está localizado em uma posição indicada por um círculo com relação à origem, e possui um tamanho (distância). Deve-se notar que um vetor de movimento de base, por exemplo, é um previsor de MV selecionado a partir de uma lista de previsores de MV em um modo de mistura.
[433] No presente aspecto, o interprevisor 218 assume que a primeira direção é uma direção de eixo geométrico X positiva, e obtém o tamanho (distância) de um vetor de movimento delta a partir de uma tabela, dentre as tabelas. Aqui, as tabelas incluem tabelas que incluem índices, e cada uma das tabelas que incluem valores possuindo diferentes variáveis entre os índices. O interprevisor 218 pode obter o vetor de movimento delta pela seleção de um índice em uma tabela, dentre as tabelas. Então, o interprevisor 218 realiza o processo de interprevisão utilizando o vetor de movimento delta obtido e um vetor de movimento de base. Deve-se notar que visto que um vetor de movimento delta pode ser obtido pela realização de um processo de seleção que, por exemplo, seleciona uma tabela e um índice na tabela selecionada, doravante, esse processo de seleção pode ser referido como um processo de seleção de vetor de movimento.
[434] A figura 48 é um fluxograma ilustrando um processo de seleção de vetor de movimento no processo de interprevisão realizado pelo interprevisor 218 do decodificador 200, de acordo com o primeiro aspecto da modalidade 1. A figura 49 ilustra um exemplo da lista 1 que inclui as tabelas para uso no processo de seleção de vetor de movimento de acordo com o primeiro aspecto da modalidade 1.
[435] Primeiro, como ilustrado na figura 48, o interprevisor 218 do decodificador 200 seleciona uma primeira tabela a ser utilizada para uma partição atual a ser decodificada, dentre as tabelas (S1001). Aqui, a partição atual a ser decodificada também é referida como uma partição atual. A partição atual pode ser interpretada como um bloco atual. As tabelas são utilizadas para corrigir um vetor de movimento de base para um vetor de movimento delta em uma direção predeterminada utilizando um valor de correção especificado por um índice. Adicionalmente, as tabelas incluem valores de correção possuindo diferenças variáveis entre os índices. A figura 49 ilustra um exemplo da lista 1 incluindo quatro tabelas distinguidas pelos índices de tabela de 0 a 3. As quatro tabelas incluídas na lista 1 variam em diferenças (magnitudes) entre os valores de coluna, isso é, valores de magnitude. No exemplo ilustrado na figura 49, uma fileira indicada por um dos índices de tabela de 0 a 3 equivale a uma primeira tabela, e um dos valores de coluna na primeira tabela equivale a um valor de correção. Visto que esse valor de correção é utilizado para derivar um vetor de movimento delta de um vetor de movimento de base, o valor de correção também pode ser referido como informação de vetor de movimento.
[436] A seguir, o interprevisor 218 analisa um parâmetro indicando um primeiro índice que especifica a informação de vetor de movimento a ser selecionada dentre as partes da informação de vetor de movimento incluídas na primeira tabela selecionada na etapa S1001 (S1002). No exemplo ilustrado na figura 49, apesar de não ilustrado, o primeiro índice é um índice que especifica a localização de um valor de coluna (valor de magnitude) na primeira tabela, e esse índice é indicado por um parâmetro, tal como um parâmetro de magnitude ilustrado na figura 47.
[437] Então, pela análise do parâmetro na etapa S1002, o interprevisor 218 decodifica a partição atual a ser decodificada, isso é, gera um sinal de previsão da partição atual a ser decodificada, utilizando pelo menos a informação de vetor de movimento selecionada (S1003). Mais especificamente, pela análise do parâmetro na etapa S1002, o interprevisor 218 decodifica a partição atual a ser decodificada, utilizando o vetor de movimento delta obtido a partir da informação de vetor de movimento selecionada e do vetor de movimento de base. Deve-se notar que, como mencionado acima, a informação de vetor de movimento selecionada na etapa S1001 pode ser um valor que indica, por exemplo, o tamanho de um vetor de movimento delta. Adicionalmente, o parâmetro analisado na etapa S1002 pode incluir um parâmetro de tamanho e um parâmetro de direção indicando um vetor de movimento delta originário de um vetor de movimento de base como ilustrado na figura 47.
[438] Doravante, os exemplos específicos da etapa S1002, isso é, um processo de seleção da primeira tabela, dentre as tabelas, serão descritos. Existem variações desse processo.
[439] A seguir, exemplos específicos do processo realizado no processo de interprevisão no modo de mistura serão descritos. Deve-se notar que os exemplos específicos descritos abaixo podem ser realizados no processo de interprevisão em um modo além do modo de mistura. Primeiro Exemplo
[440] O primeiro exemplo descreve um processo de seleção da primeira tabela, a partir das tabelas, com base em um previsor de vetor de movimento selecionado a partir de um bloco circundante de um bloco atual a ser decodificado. O previsor de vetor de movimento é um exemplo de um vetor de movimento de base. Quando um valor de previsor de vetor de movimento é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No primeiro exemplo, o interprevisor 218 seleciona a primeira tabela para cada partição (bloco).
[441] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas de seleção de uma das tabelas, com base em uma lista de valores limite predeterminados. No exemplo ilustrado na figura 49, o interprevisor 218 determina quatro faixas para seleção de uma das quatro tabelas (índices de tabela de 0 a 3).
[442] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base no valor do previsor de vetor de movimento, isso é, a soma dos valores de componente do previsor de vetor de movimento, e as faixas determinadas na primeira etapa. No exemplo ilustrado na figura 48, visto que os componentes do previsor de vetor de movimento, que é o vetor de movimento de base, incluem o valor horizontal mv_x e o valor vertical mv_y, a soma dos valores de componente do previsor de vetor de movimento pode ser expressa como |mv_x| + |mv_y|.
[443] Aqui, os valores limites predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 32, T2 = 64, e T3 =
128. Nesse caso, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas. Ademais, quando o previsor de vetor de movimento, para uso na segunda etapa é, por exemplo, [-14, 41], o interprevisor 218 pode calcular o valor do previsor de vetor de movimento, isso é, a soma dos valores de componente do previsor de vetor de movimento como |-14| + |41| = 55. Nesse caso, na segunda etapa, visto que a soma dos valores de componente do previsor de vetor de movimento é incluída na faixa de (T1, T2], o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 indicando uma tabela que corresponde à faixa indicada por (T1, T2]. Segundo Exemplo
[444] O segundo exemplo descreve um processo de seleção da primeira tabela, dentre as tabelas, com base nos valores de diferenças de vetor de movimento designadas para os blocos circundantes de um bloco atual a ser decodificado. Doravante, uma diferença de vetor de movimento designada para um bloco circundante é referida como uma diferença de vetor de movimento circundante. Quando os valores das diferenças de vetor de movimento circundante são grandes, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um grande valor de coluna (valor de magnitude) com um índice pequeno, dentre as tabelas. No segundo exemplo, o interprevisor 218 também seleciona a primeira tabela para cada partição (bloco).
[445] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[446] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base em um valor médio de valores das diferenças de vetor de movimento circundante, e as faixas determinadas na primeira etapa.
[447] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 32, T2 = 64 e T3 = 128. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (o, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[448] Ademais, quando os valores da diferença de vetor de movimento circundante para uso na segunda etapa são, por exemplo, [- 21, 14], [-3, 0], [102, 40], [120, 5] e [100, 18], o interprevisor 218 pode calcular o valor médio dos valores das diferenças de vetor de movimento circundantes como |-21| + |14| + |-3| + |0| + |102| + |40| + |120| + |5| + |100| + |18| = 42.
[449] De acordo, na segunda etapa, visto que o valor médio dos valores das diferenças de vetor de movimento circundante é incluído na faixa de (T1, T2], o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 que indica uma tabela que corresponde à faixa indicada por (T1, T2].
[450] Deve-se notar que apesar de o interprevisor 218 selecionar a primeira tabela, dentre as tabelas, com base no valor médio dos valores das diferenças de vetor de movimento circundantes no segundo exemplo, a presente modalidade não está limitada a isso. O interprevisor 218 pode selecionar a primeira tabela, dentre as tabelas, com base em um valor de variação dentre os valores das diferenças de vetor de movimento circundantes.
[451] Ademais, no segundo exemplo, quando os blocos circundantes do bloco atual a serem decodificados forem blocos sujeitos a um processo de previsão utilizando o modo de mistura, a segunda etapa pode ser realizada utilizando-se 0 como os valores das diferenças de vetor de movimento circundantes. Terceiro Exemplo
[452] O terceiro exemplo descreve um processo de seleção da primeira tabela, dentre as tabelas, com base em valores de vetores de movimento designados para os blocos circundantes de um bloco atual a ser decodificado.
[453] Doravante, um vetor de movimento designado para um bloco circundante é referido como um vetor de movimento circundante. Quando os valores dos vetores de movimento circundantes são grandes, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que possa especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No terceiro exemplo, o interprevisor 218 também seleciona a primeira tabela para cada partição (bloco).
[454] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[455] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base em um valor médio dos valores dos vetores de movimento circundantes, e faixas determinadas.
[456] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 32, T2 = 64 e T3 = 128. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +] como as quatro faixas para seleção de uma das quatro tabelas.
[457] Ademais, quando os valores dos vetores de movimento circundantes para uso na segunda etapa são, por exemplo, [-21, 14], [- 3, 0], [102, 40], [120, 5] e [100, 18], o interprevisor 218 pode calcular o valor médio dos valores dos vetores de movimento circundantes como |-21| + |14| + |-3| + |0| + |102| + |40| + |120| + |5| + |100| + |18| = 42.
[458] De acordo, na segunda etapa, visto que o valor médio dos valores dos vetores de movimento circundantes é incluído na faixa de (T1, T2), o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 indicando uma tabela que corresponde à faixa indicada por (T1, T2].
[459] Deve-se notar que apesar de o interprevisor 218 selecionar a primeira tabela, dentre as tabelas, com base no valor médio dos valores dos vetores de movimento circundantes no segundo exemplo, a presente modalidade não está limitada a isso. O interprevisor 218 pode selecionar a primeira tabela, dentre as tabelas, com base em um valor de variação dos valores dos vetores de movimento circundantes. Quarto Exemplo
[460] O quarto exemplo descreve um processo de seleção da primeira tabela, a partir das tabelas, com base nos valores em uma lista de candidatos a previsor de vetor de movimento derivados de um vetor de movimento de um bloco decodificado, vizinho de um bloco atual, a ser decodificado. Doravante, a lista de candidatos a previsor de vetor de movimento é referida como uma lista de candidatos a previsor de vetor de movimento.
[461] Quando os valores na lista de candidatos a previsor de vetor de movimento são grandes, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que possa especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No quarto exemplo, o interprevisor 218 também seleciona a primeira tabela para cada partição (bloco).
[462] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[463] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base em um valor médio dos valores na lista de candidatos a previsor de vetor de movimento, e as faixas determinadas na primeira etapa.
[464] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limites (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 32, T2 = 64 e T3 = 128. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[465] Ademais, quando os valores na lista de candidatos a previsor de vetor de movimento, para uso na segunda etapa são, por exemplo, [-21, 14], [-3, 0], [102, 40], [120, 5], e [100, 18], o interprevisor 218 pode calcular o valor médio dos valores na lista de candidatos a previsor de vetor de movimento como |-21| + |14| + |-3| + |0| + |102| + |40| + |120| + |5| + |100| + |18| = 42.
[466] De acordo, na segunda etapa, visto que o valor médio dos valores na lista de candidatos a previsor de vetor de movimento está incluído na faixa de (T1, T2], o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 que indica uma tabela que corresponde à faixa indicada por (T1, T2].
[467] Deve-se notar que apesar de o interprevisor 218 selecionar a primeira tabela, dentre as tabelas, com base no valor médio dos valores na lista de candidatos a previsor de vetor de movimento no quarto exemplo, a presente modalidade não está limitada a isso. O interprevisor 218 pode selecionar a primeira tabela, dentre as tabelas, com base em um valor de variação dos valores na lista de candidatos a previsor de vetor de movimento. Quinto Exemplo
[468] O quinto exemplo descreve um processo de seleção da primeira tabela, a partir das tabelas, com base no tamanho de uma partição atual (bloco) a ser decodificado. Doravante, a partição atual (bloco) a ser decodificada é referida como uma partição atual. Quando o tamanho da partição atual é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No quinto exemplo também, o interprevisor 218 seleciona a primeira tabela para cada partição (bloco).
[469] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[470] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base no tamanho (magnitude) da partição atual e nas faixas determinadas na primeira etapa.
[471] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limites (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 3 x 3, T2 = 16 x 16 e T3 = 32 x 32. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +] como as quatro faixas para selecionar uma das quatro tabelas.
[472] O tamanho (magnitude) da partição atual para uso na segunda etapa é considerado como sendo, por exemplo, de 16 x 8. Nesse caso, na segunda etapa, visto que o tamanho (magnitude) da partição atual está incluído na faixa de (T1, T2), o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 indicando uma tabela correspondente à faixa indicada por (T1, T2). Sexto Exemplo
[473] O sexto exemplo descreve um processo de seleção da primeira tabela, dentre as tabelas, baseadas na resolução de uma imagem incluindo uma partição atual (bloco) a ser decodificada. A resolução da imagem também pode ser expressa como o número de pixels incluídos na imagem. Doravante, a imagem que inclui a partição atual (bloco) a ser decodificada é referida como uma imagem que inclui um bloco atual. Quando a resolução da imagem que inclui o bloco atual é alta, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No sexto exemplo, o interprevisor 218 seleciona a primeira tabela para cada imagem.
[474] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[475] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base na resolução da imagem incluindo o bloco atual, e as faixas determinadas na primeira etapa.
[476] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 832 x 580, T2 = 1920 x 1080 e T3 = 3840 x 2160. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[477] A resolução da imagem, incluindo o bloco atual para uso na segunda etapa, é considerada como sendo, por exemplo, de 416 x 240. Nesse caso, na segunda etapa, visto que a resolução da imagem, incluindo o bloco atual, é incluída na faixa de (0, T1], o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 0 que indica uma tabela que corresponde à faixa indicada por (0, T1].
[478] Deve-se notar que a resolução da imagem que inclui o bloco atual pode ser obtida a partir de uma sintaxe (sequência de dados representando regras) incluída em uma sequência de bits codificados obtida pelo decodificador 200. Sétimo Exemplo
[479] O sétimo exemplo descreve um processo de seleção da primeira tabela, dentre as tabelas, com base no ID temporal de uma fatia ou imagem, incluindo uma partição atual (bloco) a ser decodificada. Aqui, o ID temporal é um número que indica o nível de uma camada temporal para codificação escalonável espacial. A codificação escalonável espacial é uma técnica para codificação de informação hierárquica (para cada camada) a partir da informação aproximada para a informação detalhada. A codificação escalonável espacial é alcançada pela divisão da informação em camadas hierárquicas como camadas temporais e pela codificação das camadas hierárquicas. No exemplo ilustrado na figura 57 ou na figura 58, uma imagem é codificada para cada camada, e a capacidade de escalonamento é alcançada na camada de aperfeiçoamento superior à camada de base. Nesse caso, um ID temporal pode assumir um valor de 0 a 2. Deve-se notar que uma fatia pode ser codificada para cada camada, e a capacidade de escalonamento pode ser alcançada em uma camada de aperfeiçoamento superior a uma camada de base. Doravante, a fatia ou imagem incluindo a partição atual (bloco) a ser decodificada é referida como uma fatia atual ou uma imagem atual.
[480] Quando o valor do ID temporal da fatia atual ou imagem atual é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No sétimo exemplo, o interprevisor 218 seleciona a primeira tabela a partir da fatia ou imagem.
[481] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[482] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela dentre as tabelas, com base no valor do ID temporal da fatia atual ou da imagem atual, e as faixas determinadas na primeira etapa.
[483] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 1, T2 = 2, e T3 = 3. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para selecionar uma das quatro tabelas.
[484] O valor do ID temporal da fatia atual ou imagem atual para uso na segunda etapa é assumido como sendo, por exemplo, igual a dois. Nesse caso, na segunda etapa, visto que o valor do ID temporal da fatia atual ou imagem atual é incluído na faixa de (T1, T2], o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 indicando uma tabela que corresponde à faixa indicada por (T1, T2]. Oitavo Exemplo
[485] O oitavo exemplo descreve um processo de seleção da primeira tabela, a partir das tabelas, com base em uma distância entre uma imagem incluindo uma partição atual (bloco) a ser decodificada e uma imagem de referência da partição atual (bloco) a ser decodificada. Doravante, a imagem que inclui a partição atual (bloco) a ser decodificada é referida como uma imagem atual, e a partição atual (bloco) a ser decodificada é referida como uma partição atual. Quando a distância entre a imagem atual e a imagem de referência da partição atual é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No oitavo exemplo, o interprevisor 218 seleciona a primeira tabela para cada partição (bloco).
[486] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[487] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base na distância entre a imagem atual e a imagem de referência da partição atual, e as faixas determinadas na primeira etapa.
[488] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 1, T2 = 2, T3 = 3. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[489] A POC (ordem de exibição) da imagem atual para uso na segunda etapa é considerada igual a 16, e a POC da imagem de referência é considerada como sendo igual a 0. Nesse caso, na segunda etapa, visto que a distância entre a imagem atual e a imagem de referência da partição atual é igual a 16 e incluída na faixa de (T3, +),
o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 3 que indica uma tabela que corresponde à faixa indicada por (T3, +). Nono Exemplo
[490] Deve-se notar que um processo de seleção da primeira tabela, dentre as tabelas, pode ser realizado com base em uma combinação dos métodos descritos no primeiro exemplo até o oitavo exemplo.
[491] A figura 50 ilustra um exemplo da lista 2 incluindo tabelas para uso no processo de seleção de vetor de movimento de acordo com o primeiro aspecto da modalidade 1. Especificamente, a figura 50 ilustra um exemplo da lista 2, incluindo sete tabelas distinguidas pelos índices de tabela de 0 a 7. As sete tabelas incluídas na lista 2 variam em diferenças (magnitudes) entre os valores de coluna, isso é, valores de magnitude. No exemplo ilustrado na figura 50, uma fileira indicada por um dos índices de tabela de 0 a 7 é equivalente à primeira tabela, e um dos valores de coluna na primeira tabela é equivalente a um valor de correção.
[492] A seguir é descrito, como um exemplo, um processo de seleção da primeira tabela, dentre as tabelas ilustradas na figura 50, com base em uma combinação do primeiro exemplo e do quinto exemplos. Em outras palavras, o nono exemplo descreve o processo de seleção da primeira tabela, dentre as tabelas, com base em ambos o previsor de vetor de movimento selecionado a partir do bloco vizinho do bloco atual, e o tamanho da partição atual.
[493] Quando o tamanho da partição atual é grande, e o valor do previsor de vetor de movimento é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas.
[494] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de divisão das tabelas incluídas na lista 2 em dois conjuntos, cada um incluindo as tabelas, isso é, determinação de um conjunto incluindo parte das tabelas incluídas na lista 2 como o primeiro conjunto, e um conjunto incluindo o resto das tabelas como o segundo conjunto. Por exemplo, o interprevisor 218 determina, dentre os índices de tabela de 0 a 7 incluídos na lista 2, ilustrada na figura 50, os índices de tabela de 0 a 3 como o primeiro conjunto, e os índices de tabela de 4 a 7 como o segundo conjunto.
[495] A seguir, o interprevisor 218 realiza a segunda etapa de determinação das faixas para selecionar o primeiro conjunto ou segundo conjunto, com base na primeira lista de valores limite predeterminados.
[496] Então, o interprevisor 218 realiza a terceira etapa de seleção do primeiro conjunto ou do segundo conjunto com base no valor do previsor de vetor de movimento e nas faixas determinadas na segunda etapa.
[497] Depois disso, o interprevisor 218 realiza a quarta etapa de determinação das faixas para seleção de uma das tabelas incluídas no primeiro conjunto ou no segundo conjunto selecionado na terceira etapa, com base na segunda lista de valores limite predeterminados.
[498] Finalmente, o interprevisor 218 realiza a quinta etapa de seleção da primeira tabela, dentre as tabelas incluídas no primeiro conjunto, ou segundo conjunto, selecionado na terceira etapa, com base no tamanho da partição atual e nas faixas determinadas na quarta etapa.
[499] Aqui, um valor limite predeterminado, incluído na primeira lista para uso na segunda etapa, é um valor limite (T21) para distinguir o primeiro conjunto que inclui os índices de tabela de 0 a 3 e o segundo conjunto incluindo os índices de tabela de 4 a 7 ilustrados na figura 50,
por exemplo, T21 = 32. Nesse caso, na segunda etapa, o interprevisor 218 pode determinar [0, T21] e [T21, +] como as duas faixas para seleção do primeiro conjunto ou segundo conjunto.
[500] Ademais, quando o previsor de vetor de movimento para uso na terceira etapa é, por exemplo, [-14, 41], o interprevisor 218 pode calcular o valor do previsor de vetor de movimento, isso é, a soma dos valores de componente do previsor de vetor de movimento como |-14| + |41| = 55. Nesse caso, na terceira etapa, visto que a soma dos valores de componente do previsor de vetor de movimento é incluída na faixa de [T21, +), o interprevisor 218 pode selecionar o segundo conjunto correspondente à faixa indicada por [T21, +].
[501] Adicionalmente, os valores limite predeterminados, incluídos na segunda lista para uso na quarta etapa, são três valores limite (T41 a T43) para distinguir as quatro tabelas incluídas no segundo conjunto indicado pelos índices de tabela de 4 a 7 ilustrados na figura 50, por exemplo, T41 = 8 x 8, T42 = 16 x 16 e T43 = 32 x 32. Nesse caso também, na quarta etapa, o interprevisor 218 pode determinar (0, T41], (T41, T42], (T42, T43] e (T43, +) como as quatro faixas para selecionar uma das quatro tabelas.
[502] Ademais, quando o tamanho da partição atual para uso na quinta etapa é considerado, por exemplo, 16 x 8, o tamanho da partição atual é incluído na faixa de (T41, T42]. Nesse caso, na quinta etapa, o interprevisor 218 pode selecionar, como a primeira tabela, a tabela no segundo conjunto indicando uma tabela correspondendo à faixa indicada por (T41, T42], isso é, o índice de tabela 5. Décimo Exemplo
[503] O décimo exemplo descreve um processo de seleção da primeira tabela a partir das tabelas com base em um valor médio das diferenças de vetor de movimento de uma imagem decodificada. Quando o valor médio das diferenças de vetor de movimento da imagem decodificada é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No décimo exemplo, o interprevisor 218 seleciona a primeira tabela para cada imagem.
[504] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[505] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base no valor médio das diferenças de vetor de movimento da imagem decodificada, e as faixas determinadas na primeira etapa.
[506] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 32, T2 = 64 e T3 = 128. Nesse caso, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[507] Ademais, quando as diferenças de vetor de movimento da imagem decodificada, para uso na segunda etapa, são consideradas, por exemplo, [100, 18], o interprevisor 218 pode calcular o valor médio das diferenças de vetor de movimento da imagem decodificada como |100| + |18| = 118.
[508] De acordo, na segunda etapa, visto que o valor médio das diferenças de vetor de movimento da imagem decodificada é incluído na faixa de (T2, T3], o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 2 indicando uma tabela que corresponde à faixa indicada por (T2, T3].
[509] Deve-se notar que apesar de o interprevisor 218 selecionar a primeira tabela, dentre as tabelas, com base no valor médio das diferenças de vetor de movimento da imagem decodificada no décimo exemplo, a presente modalidade não está limitada a isso. O interprevisor 218 pode selecionar a primeira tabela, dentre as tabelas, com base em um valor de um vetor de movimento da imagem decodificada.
[510] Ademais, apesar de o interprevisor 218 selecionar a primeira tabela a partir das tabelas com base no valor médio das diferenças de vetor de movimento da imagem decodificada no décimo exemplo, a presente modalidade não está limitada a isso. O interprevisor 218 pode selecionar a primeira tabela, dentre as tabelas, com base em um valor de variância das diferenças de vetor de movimento da imagem decodificada.
[511] Adicionalmente, a imagem decodificada pode ser uma imagem de uma camada indicando o mesmo ID temporal que uma imagem atual, ou pode ser uma imagem imediatamente anterior à imagem atual na ordem de decodificação. Décimo Primeiro Exemplo
[512] O décimo primeiro exemplo descreve um processo de seleção da primeira tabela, a partir das tabelas, com base em um valor médio dos tamanhos de bloco de uma imagem decodificada. Quando o valor médio dos tamanhos de bloco da imagem decodificada é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No décimo primeiro exemplo, o interprevisor 218 seleciona a primeira tabela para cada imagem.
[513] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para selecionar uma das tabelas, com base em uma lista de valores limite predeterminados.
[514] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base no valor médio dos tamanhos de bloco da imagem decodificada, e nas faixas determinadas na primeira etapa.
[515] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 8 x 8, T2 = 16 x 16, e T3 = 32 x 32. Nesse caso também, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +] como as quatro faixas para seleção de uma das quatro tabelas.
[516] Ademais, quando um valor médio dos resultados obtidos pela multiplicação de tamanhos de bloco horizontal e tamanhos de bloco vertical da imagem decodificada, para uso na segunda etapa, é considerado como sendo, por exemplo, 128, o valor médio dos tamanhos de bloco da imagem decodificada é incluído na faixa de (T1, T2). Nesse caso, na segunda etapa, o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 1 indicando uma tabela que corresponde à faixa indicada por (T1, T2).
[517] Deve-se notar que a imagem decodificada pode ser uma imagem de uma camada que indica o mesmo ID temporal que uma imagem atual, ou pode ser uma imagem imediatamente anterior à imagem atual na ordem de decodificação. Décimo Segundo Exemplo
[518] O décimo segundo exemplo descreve um processo de seleção da primeira tabela, a partir das tabelas, com base em um valor médio de parâmetros de quantização (QPs) de uma imagem decodificada. Quando o valor médio dos QPs da imagem decodificada é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que possa especificar a localização de um valor de coluna grande
(valor de magnitude) com um índice pequeno, a partir das tabelas. No décimo segundo exemplo, o interprevisor 218 seleciona a primeira tabela para cada imagem.
[519] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista de valores limite predeterminados.
[520] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base no valor médio dos QPs da imagem decodificada, e nas faixas determinadas na primeira etapa.
[521] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 22, T2 = 27 e T3 = 32. Nesse caso, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[522] Ademais, o valor médio dos QPs da imagem decodificada para uso na segunda etapa é considerado, por exemplo, igual a 40. Nesse caso, na segunda etapa, visto que o valor médio dos QPs da imagem decodificada é incluído na faixa de (T3, +), o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 3 indicando uma tabela que corresponde à faixa indicada por (T3, +).
[523] Deve-se notar que a imagem decodificada pode ser uma imagem de uma camada indicando o mesmo ID temporal que uma imagem atual, ou pode ser uma imagem imediatamente anterior à imagem atual na ordem de decodificação. Décimo Terceiro Exemplo
[524] O décimo terceiro exemplo descreve um processo de seleção da primeira tabela, dentre as tabelas, com base em um QP de fatia de uma imagem decodificada. Quando o QP de fatia da imagem decodificada é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que pode especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No décimo terceiro exemplo, o interprevisor 218 seleciona a primeira tabela para cada imagem ou fatia.
[525] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para seleção de uma das tabelas, com base em uma lista dos valores limite predeterminados.
[526] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base na fatia QP da imagem decodificada, e nas faixas determinadas na primeira etapa.
[527] Aqui, os valores limite, predeterminados para uso na primeira etapa, são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 22, T2 = 27, e T3 = 32. Nesse caso, na primeira etapa, o interprevisor 218 pode determinar (0. T1], (T1, T2], (T2, T3] e (T3, +) como as quatro faixas para seleção de uma das quatro tabelas.
[528] Ademais, o QP de fatia da imagem decodificada para uso na segunda etapa é considerado, por exemplo, como sendo igual a 40. Nesse caso, na segunda etapa, visto que o QP de fatia da imagem decodificada e incluído na faixa de (T3, +), o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 3 que indica uma tabela correspondente à faixa indicada por (T3, +).
[529] Deve-se notar que a imagem decodificada pode ser uma imagem de uma camada que indica o mesmo ID temporal que uma imagem atual, ou pode ser uma imagem imediatamente anterior à imagem atual na ordem de decodificação. Décimo Quarto Exemplo
[530] O décimo quarto exemplo descreve um processo de seleção da primeira tabela, dentre as tabelas, com base em um QP de fatia de uma imagem que inclui uma partição atual (bloco) a ser decodificada. Doravante, a imagem que inclui a partição atual (bloco) a ser decodificada é referida como uma imagem atual. Quando o QP de fatia da imagem atual é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que possa especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas. No décimo quarto exemplo também, o interprevisor 218 seleciona a primeira tabela para cada imagem ou fatia.
[531] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de determinação das faixas para selecionar uma das tabelas, com base em uma lista de valores limite predeterminados.
[532] A seguir, o interprevisor 218 realiza a segunda etapa de seleção da primeira tabela, dentre as tabelas, com base no QP de fatia da imagem atual e nas faixas determinadas na primeira etapa.
[533] Aqui, os valores limite predeterminados para uso na primeira etapa são três valores limite (T1 a T3) para distinguir as quatro tabelas ilustradas na figura 49, por exemplo, T1 = 22, T2 = 27 e T3 = 32. Nesse caso, na primeira etapa, o interprevisor 218 pode determinar (0, T1], (T1, T2], (T2, T3] e (Te, +) como as quatro faixas para seleção de uma das quatro tabelas.
[534] Ademais, o QP de fatia da imagem atual para uso na segunda etapa é considerado como sendo, por exemplo, igual a 40. Nesse caso, na segunda etapa, visto que o QP de fatia da imagem atual está incluído na faixa de (T3, +), o interprevisor 218 pode selecionar, como a primeira tabela, o índice de tabela 3 que indica uma tabela correspondente à faixa indicada por (T3, +). Décimo Quinto Exemplo
[535] Deve-se notar que um processo de seleção da primeira tabela, dentre as tabelas, pode ser realizado com base em uma combinação de métodos descritos no décimo exemplo até o décimo quarto exemplo.
[536] A seguir, de forma ilustrativa, um processo de seleção da primeira tabela, dentre as tabelas ilustradas na figura 50, é descrito, com base em uma combinação do décimo exemplo e do décimo quarto exemplo. Em outras palavras, o décimo quinto exemplo descreve o processo de seleção da primeira tabela, dentre as tabelas, com base em ambos o valor médio das diferenças de vetor de movimento da imagem decodificada e o QP de fatia da imagem atual.
[537] Quando o QP de fatia da imagem atual é grande, e o valor médio das diferenças de vetor de movimento da imagem decodificada é grande, o interprevisor 218 seleciona, como a primeira tabela, uma tabela que possa especificar a localização de um valor de coluna grande (valor de magnitude) com um índice pequeno, dentre as tabelas.
[538] Mais especificamente, na etapa S1001, primeiro, o interprevisor 218 realiza a primeira etapa de divisão das tabelas incluídas na lista 2 em dois conjuntos, cada um incluindo tabelas, isso é determinando um conjunto que inclui parte das tabelas incluídas na lista 2 como o primeiro conjunto, e um conjunto incluindo o resto das tabelas como o segundo conjunto. Por exemplo, o interprevisor 218 determina, entre as tabelas, índices de 0 a 7 incluídos na lista 2, ilustrada na figura 50, os índices de tabela de 0 a 3 como o primeiro conjunto, e os índices de tabela de 4 a 7 como o segundo conjunto.
[539] A seguir, o interprevisor 218 realiza a segunda etapa de determinação das faixas para selecionar o primeiro conjunto ou o segundo conjunto, com base na primeira lista de valores limite predeterminados.
[540] Então, o interprevisor 218 realiza a terceira etapa de seleção do primeiro conjunto ou do segundo conjunto com base no QP de fatia da imagem atual e nas faixas determinadas na segunda etapa.
[541] Depois disso, o interprevisor 218 realiza a quarta etapa de determinação das faixas para selecionar uma das tabelas incluídas no primeiro conjunto, ou no segundo conjunto, selecionado na terceira etapa, com base na segunda lista de valores limite predeterminados.
[542] Finalmente, o interprevisor 218 realiza a quinta etapa de seleção da primeira tabela, dentre as tabelas incluídas no primeiro conjunto, ou no segundo conjunto, selecionado na terceira etapa, com base no valor médio das diferenças de vetor de movimento da imagem decodificada e nas faixas determinadas na quarta etapa.
[543] Aqui, um valor limite predeterminado incluído na primeira lista, para uso na segunda etapa, é um valor limite (T21) para distinguir o primeiro conjunto, que inclui índices de tabela de 0 a 3, e o segundo conjunto, incluindo os índices de tabela de 4 a 7, ilustrados na figura 50, por exemplo, T21 = 30. Nesse caso, na segunda etapa, o interprevisor 218 pode determinar (0, T21] e (T21, +) como as duas faixas para seleção do primeiro conjunto, ou do segundo conjunto. Ademais, o QP de fatia da imagem atual, para uso na terceira etapa, é considerado como sendo, por exemplo, igual a 40. Nesse caso, na terceira etapa, visto que a soma dos valores de componente do previsor de vetor de movimento é incluída na faixa de (T21 +), o interprevisor 218 pode selecionar o segundo conjunto correspondente à faixa indicada por (T21, +).
[544] Adicionalmente, os valores limite predeterminados incluídos na segunda lista, para uso na quarta etapa, são três valores limite (T41 a T43) para distinguir as quatro tabelas, incluídas no segundo conjunto, indicado pelos índices de tabela de 4 a 7 ilustrados na figura 50, por exemplo, T41 = 32, T42 = 64 e T43 = 128. Nesse caso, na quarta etapa, o interprevisor 218 pode determinar (0, T41], (T41, T42], (T42, T43] e (T43, +)
como as quatro faixas para selecionar uma das quatro tabelas.
[545] Ademais, quando o valor médio das diferenças de vetor de movimento da imagem decodificada, para uso na quinta etapa, é considerado, por exemplo, igual a [100, 18], o interprevisor 218 pode calcular o valor médio das diferenças de vetor de movimento da imagem decodificada como |100| + |18| = 118. De acordo, o valor médio das diferenças de vetor de movimento da imagem decodificada é incluído na faixa de (T42, T43]. Nesse caso, na quinta etapa, o interprevisor 218 pode selecionar, como a primeira tabela, a terceira tabela no segundo conjunto, indicando uma tabela que corresponde à faixa indicada por (T42, T43], isso é, o índice de tabela 6.
[546] Deve-se notar que a imagem decodificada pode ser uma imagem de uma camada que indica o mesmo ID temporal que uma imagem atual, ou pode ser uma imagem imediatamente anterior à imagem atual na ordem de decodificação.
[547] Deve-se notar que apesar de o primeiro aspecto ter descrito o exemplo no qual as quatro tabelas ilustradas na figura 49 são utilizadas, a presente modalidade não está limitada a isso. Uma configuração possuindo duas ou mais tabelas será o suficiente. Por exemplo, uma configuração que possui duas tabelas indicadas pelo índice de tabela 1 e índice de tabela 2, ilustrados na figura 49, pode ser utilizada. Nesse caso, em vez de se determinar as quatro faixas utilizando os três valores limite no primeiro exemplo até o décimo quinto exemplo, duas faixas, utilizando um valor limite, podem ser determinadas. Efeitos Vantajosos do Primeiro Aspecto
[548] De acordo com o primeiro aspecto, utilizar o processo de derivação de vetor de movimento no processo de interprevisão da presente descrição possibilita a realização da compensação de movimento, utilizando um vetor de movimento mais preciso do que um vetor de movimento de base no processo de interprevisão. De acordo, é possível se aperfeiçoar a eficiência de codificação no processo de interprevisão.
[549] Ademais, de acordo com o primeiro aspecto, o processo de seleção de vetor de movimento, como indicado do primeiro exemplo até o décimo quinto exemplo descrito acima, é utilizado no processo de derivação de vetor de movimento. Com isso, quando o vetor de movimento, mais preciso do que o vetor de movimento de base, é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando-se um índice que possui um valor inferior (menos informação) na primeira tabela, selecionada dentre as tabelas. Em outras palavras, de acordo com o primeiro aspecto, existe uma possibilidade de a utilização o processo de seleção de vetor de movimento no processo de derivação de vetor de movimento aperfeiçoar o desempenho de codificação do processo de interprevisão.
[550] Deve-se notar que pelo menos parte da descrição no primeiro aspecto pode ser combinada com pelo menos parte da descrição de um ou mais dos outros aspectos.
[551] Adicionalmente, parte do processo, parte do dispositivo, a sintaxe e/ou outras funções descritas na descrição do fluxograma ilustrado na figura 48 podem ser combinadas com outros aspectos.
[552] Ademais, todos os processos/elementos descritos no primeiro aspecto não são essenciais. O dispositivo/método pode incluir parte dos processos/elementos. Adicionalmente, os processos descritos acima podem ser realizados por um decodificador da mesma forma que um codificador. Segundo Aspecto do Processo de Interprevisão
[553] No segundo aspecto da presente modalidade também, o codificador 100 e o decodificador 200 realizam um processo de derivação de vetor de movimento a ser utilizado quando um processo de interprevisão é realizado, utilizando um processo de seleção que decide se utiliza um dos índices de uma das tabelas. Apesar de as operações realizadas pelo decodificador 200 serem descritas como uma representação abaixo, o codificador 100 realiza as mesmas operações.
[554] O segundo aspecto da presente modalidade fornece uma descrição da realização do processo de seleção utilizando um indicador (parâmetro). A seguir são descritas basicamente as diferenças do primeiro aspecto.
[555] A figura 51 é um fluxograma ilustrando um processo de seleção de vetor de movimento no processo de interprevisão realizado pelo interprevisor 218 do decodificador 200, de acordo com o segundo aspecto da Modalidade 1.
[556] Primeiro, como ilustrado na figura 51, o interprevisor 218 do decodificador 200 analisa o primeiro parâmetro indicando o primeiro índice que especifica, dentre as tabelas, uma tabela para decodificar uma partição atual a ser decodificada (S2001). Em outras palavras, o interprevisor 218 seleciona a primeira tabela a ser utilizada para a partição atual pela análise do primeiro parâmetro. O primeiro parâmetro indica o primeiro índice que pode especificar a primeira tabela. Deve-se notar que o primeiro índice não é essencial, e o primeiro parâmetro pode especificar diretamente a primeira tabela a ser utilizada para a partição atual.
[557] Por exemplo, o interprevisor 218 seleciona a primeira tabela a ser utilizada para a partição atual dentre as quatro tabelas incluídas na lista 1, ilustrada na figura 49, pela análise do primeiro parâmetro.
[558] A seguir, o interprevisor 218 analisa o segundo parâmetro indicando o segundo índice que especifica a informação de vetor de movimento a ser selecionada dentre as partes da informação de vetor de movimento (S2002). Em outras palavras, o interprevisor 218 pode obter, a partir da primeira tabela, o segundo índice que indica a informação de vetor de movimento a ser selecionada, pela análise do segundo parâmetro.
[559] Por exemplo, o interprevisor 218 obtém o segundo índice indicando (especificando) a localização de um valor de coluna (valor de magnitude) na primeira tabela, incluída na lista 1, ilustrada na figura 49, pela análise do segundo parâmetro.
[560] A seguir, o interprevisor 218 decodifica a partição atual a ser decodificada, isso é, gera um sinal de previsão da partição atual a ser decodificada, utilizando pelo menos a informação de vetor de movimento especificada pelo segundo índice (S2003).
[561] Deve-se notar que a informação de vetor de movimento descrita acima pode ser a informação sobre um vetor de movimento delta, e a informação de vetor de movimento especificada pelo segundo índice pode ser um valor (valor de magnitude) indicando, por exemplo, o tamanho do vetor de movimento delta.
[562] Aqui, como com o sexto exemplo do primeiro aspecto, por exemplo, o primeiro parâmetro analisado na etapa S2001 é determinado para especificar a primeira tabela a ser selecionada, dentre as tabelas, com base na resolução de uma imagem, incluindo um bloco atual. Em outras palavras, o conteúdo, tal como o primeiro índice que especifica a primeira tabela a ser selecionada, dentre as tabelas, é escrito no primeiro parâmetro analisado na etapa S2001, com base na resolução da imagem incluindo o bloco atual. Como com o décimo exemplo do primeiro aspecto, por exemplo, o primeiro parâmetro analisado na etapa S2001 pode ser determinado para especificar a primeira tabela a ser selecionada, dentre as tabelas, com base em um valor médio de diferenças de vetor de movimento de uma imagem decodificada. Deve- se notar que um método de determinação do primeiro parâmetro analisado na etapa S2001 não está limitado ao primeiro exemplo e ao décimo exemplo. Em outras palavras, o primeiro parâmetro analisado na etapa S2001 pode ser determinado para especificar a primeira tabela a ser selecionada, dentre as tabelas, com base nos critérios indicados do primeiro exemplo até o décimo quinto exemplo do primeiro aspecto.
[563] O primeiro parâmetro analisado na etapa S2001, e o segundo parâmetro analisado na etapa S2002, podem ser escritos em um cabeçalho em unidades de uma fatia. O primeiro parâmetro e o segundo parâmetro não estão limitados a serem escritos no cabeçalho nas unidades de fatia, e podem ser escritos em um cabeçalho em unidades de uma imagem, unidades de uma sequência, ou unidades de um bloco. Adicionalmente, a partir do primeiro parâmetro e do segundo parâmetro, pelo menos o primeiro parâmetro pode ser um parâmetro em um nível de CTU, ou pode ser um parâmetro em um nível de partição.
[564] Deve-se notar que no exemplo ilustrado na figura 49, o primeiro parâmetro é um valor vertical indicado por um índice de tabela, e é incrementado por 1 a partir 0 em ordem ascendente de valores ao longo da direção vertical da figura. Como com o primeiro parâmetro, o segundo parâmetro, apesar de não ilustrado, é incrementado por 1 a partir de 0 em ordem ascendente de valores ao longo da direção horizontal da figura.
[565] Deve-se notar que apesar de o segundo aspecto ter descrito o exemplo no qual quatro tabelas ilustradas na figura 49 são utilizadas, a presente modalidade não está limitada a isso. Uma configuração possuindo duas ou mais tabela será suficiente. Por exemplo, uma configuração pode ser utilizada e possui duas tabelas indicadas pelo índice de tabela 0, e índice de tabela 2, ilustrados na figura 49. Nesse caso, o primeiro parâmetro, que possui um valor binário que especifica uma tabela, a partir de duas tabelas, pode ser utilizado no lugar do primeiro parâmetro, que possui um valor quaternário que especifica uma tabela, dentre quatro tabelas. Efeitos Vantajosos do Segundo Aspecto
[566] De acordo com o segundo aspecto, utilizar o processo de derivação de vetor de movimento no processo de interprevisão da presente descrição possibilita a realização da compensação de movimento utilizando-se um vetor de movimento mais preciso do que um vetor de movimento de base no processo de interprevisão. De acordo, é possível se aperfeiçoar a eficiência de codificação no processo de interprevisão.
[567] Ademais, de acordo com o segundo aspecto, o processo de seleção de vetor de movimento realizado, utilizando-se um parâmetro determinado com base nos critérios indicados do primeiro ao décimo quinto exemplos descritos acima, é utilizado no processo de derivação de vetor de movimento. Com isso, quando o vetor de movimento mais preciso do que o vetor de movimento de base é utilizado, é possível se especificar o vetor de movimento mais preciso utilizando-se um índice que possui um menor valor (menos informação) na primeira tabela, selecionada dentre as tabelas. Em outras palavras, de acordo com o segundo aspecto, existe uma possibilidade de se utilizar o processo de seleção de vetor de movimento no processo de derivação de vetor de movimento para aperfeiçoar o desempenho da codificação do processo de interprevisão.
[568] Deve-se notar que pelo menos parte da descrição sobre o segundo aspecto pode ser combinada com pelo menos parte da descrição de um ou mais outros aspectos.
[569] Adicionalmente, parte do processo, parte do dispositivo, a sintaxe e/ou outras funções descritas na descrição do fluxograma ilustradas na figura 51 podem ser combinadas com outros aspectos.
[570] Ademais, todos os processos/elementos descritos no segundo aspecto não são essenciais. O dispositivo/método pode incluir parte dos processos/elementos. Adicionalmente, os processos descritos acima podem ser realizados por um decodificador da mesma forma que um codificador. Exemplo de Implementação de Codificador
[571] A figura 52 é um diagrama em bloco ilustrando um exemplo de implementação do codificador 100, de acordo com a modalidade 1. O codificador 100 inclui o conjunto de circuitos 160 e a memória 162. Por exemplo, a pluralidade de elementos constituintes do codificador 100 ilustrada na figura 1 é implementada pelo conjunto de circuitos 160 e pela memória 162 ilustrados na figura 52.
[572] O conjunto de circuitos 160 é um circuito que realiza o processamento de informação e é acessível à memória 162. Por exemplo, o conjunto de circuitos 160 é um circuito eletrônico exclusivo ou geral que codifica um vídeo. O conjunto de circuitos 160 pode ser um processador, tal como uma CPU. Alternativamente, o conjunto de circuitos 160 pode ser uma agregação de uma pluralidade de circuitos eletrônicos. Ademais, por exemplo, o conjunto de circuitos 160 pode realizar as funções de elementos constituintes do codificador 100 ilustrado na figura 1, etc., exceto pelos elementos constituintes que armazenam informação.
[573] A memória 162 é uma memória exclusiva ou geral que armazena informação utilizada pelo conjunto de circuitos 160 para codificar um vídeo. A memória 162 pode ser um circuito eletrônico, pode ser conectada ao conjunto de circuitos 160, ou pode ser incluída no conjunto de circuitos 160. Alternativamente, a memória 162 pode ser uma agregação de uma pluralidade de circuitos eletrônicos. A memória 162 pode ser um disco magnético ou um disco ótico, etc., ou pode ser expressa como armazenador ou meio de gravação, etc. Adicionalmente, a memória 162 pode ser uma memória não volátil ou uma memória volátil.
[574] Por exemplo, a memória 162 pode armazenar um vídeo a ser codificado, ou pode armazenar uma sequência de bits correspondente a um vídeo codificado. Adicionalmente, a memória 162 pode armazenar um programa para fazer com que o conjunto de circuitos 160 codifique um vídeo.
[575] Ademais, por exemplo, a memória 162 pode realizar as funções de, dentre a pluralidade de elementos constituintes do codificador 100 ilustrada na figura 1, etc., os elementos constituintes que armazenam a informação. Especificamente, a memória 162 pode realizar as funções da memória de bloco 118 e da memória de quadro 122 ilustradas na figura 1. Mais especificamente, a memória 162 pode armazenar, por exemplo, um bloco reconstruído e uma imagem reconstruída.
[576] Deve-se notar também que nem todos os elementos, dentre a pluralidade de elementos constituintes, ilustrados na figura 1, etc., precisam ser implementados pelo codificador 100, e nem todos os processos descritos acima precisam ser realizados pelo codificador 100. Alguns dentre a pluralidade de elementos constituintes ilustrados na figura 1, etc. podem ser incluídos em outro dispositivo, e alguns dos processos descritos acima podem ser realizados por outro dispositivo. O processo de previsão no modo de interprevisão é realizado de forma eficiente pelo codificador 100 implementando alguns dentre a pluralidade de elementos constituintes ilustrados na figura 1, etc. e realizando alguns dos processos descritos acima.
[577] A seguir é descrito um exemplo das operações realizadas pelo codificador 100 ilustrado na figura 52. A figura 53 é um fluxograma ilustrando um exemplo das operações realizadas pelo codificador 100 ilustrado na figura 52. Por exemplo, o codificador 100 ilustrado na figura 52 realiza as operações ilustradas na figura 53 quando da codificação de um vídeo.
[578] Especificamente, o conjunto de circuitos 160 do codificador 100, em operação, realiza os seguintes processos. Primeiro, o conjunto de circuitos 160 seleciona uma primeira tabela a ser utilizada para uma partição atual a ser codificada em uma imagem de um vídeo, dentre uma pluralidade de tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando um valor de correção especificado por um índice, a pluralidade de tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices (S311). A seguir, o conjunto de circuitos 260 escreve um parâmetro indicando um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela (S312). Então, o conjunto de circuitos 160 codifica a partição atual utilizando o vetor de movimento de base corrigido utilizando-se um valor de correção especificado pelo primeiro índice (S313).
[579] Com isso, o codificador 100 pode aperfeiçoar o desempenho da codificação do processo de interprevisão pela utilização do processo de seleção de vetor de movimento no processo de derivação de vetor de movimento quando o processo de derivação de vetor de movimento é utilizado no processo de interprevisão. De acordo, o codificador 100 pode aperfeiçoar a eficiência de codificação. Exemplo de Implementação de Decodificador
[580] A figura 54 é um diagrama em bloco ilustrando um exemplo de implementação do decodificador 200, de acordo com a modalidade
1. O decodificador 200 inclui o conjunto de circuitos 260 e a memória
262. Por exemplo, a pluralidade de elementos constituintes do decodificador 200, ilustrada na figura 41, é implementada pelo conjunto de circuitos 260 e pela memória 262, ilustrados na figura 54.
[581] O conjunto de circuitos 260 é um circuito que realiza o processamento de informação e é acessível à memória 262. Por exemplo, o conjunto de circuitos 260 é um circuito eletrônico exclusivo ou geral que decodifica um vídeo. O conjunto de circuitos 260 pode ser um processador, tal como uma CPU. Alternativamente, o conjunto de circuitos 260 pode ser uma agregação de uma pluralidade de circuitos eletrônicos. Ademais, por exemplo, o conjunto de circuitos 260 pode realizar as funções de elementos constituintes do decodificador 200, ilustrados na figura 41, etc. exceto pelos elementos constituintes que armazenam informação.
[582] A memória 262 é uma memória exclusiva ou geral que armazena informação utilizada pelo conjunto de circuitos 260 para decodificar um vídeo. A memória 262 pode ser um circuito eletrônico, pode ser conectada ao conjunto de circuitos 260, ou pode ser incluída no conjunto de circuitos 260. Alternativamente, a memória 262 pode ser uma agregação de uma pluralidade de circuitos eletrônicos. A memória 262 pode ser um disco magnético ou um disco ótico, etc., ou pode ser expressa como armazenador ou meio de gravação, etc. Adicionalmente, a memória 262 pode ser uma memória não volátil ou uma memória volátil.
[583] Por exemplo, a memória 262 pode armazenar uma sequência de bits correspondendo a um vídeo codificado, ou pode armazenar um vídeo que corresponde a uma sequência de bits decodificados. Adicionalmente, a memória 262 pode armazenar um programa para fazer com que o conjunto de circuitos 260 decodifique um vídeo.
[584] Ademais, por exemplo, a memória 262 pode realizar as funções de, dentre a pluralidade de elementos constituintes do decodificador 200, ilustrada na figura 41, etc., dos elementos constituintes que armazenam informação. Especificamente, a memória 262 pode realizar as funções da memória de bloco 210 e memória de quadro 214 ilustradas na figura 41. Mais especificamente, a memória 262 pode armazenar, por exemplo, um bloco reconstruído e uma imagem reconstruída.
[585] Deve-se notar que nem todos dentre a pluralidade de elementos constituintes ilustrados na figura 41, etc., precisam ser implementados pelo decodificador 200, e nem todos os processos descritos acima precisam ser realizados pelo decodificador 200. Alguns dentre a pluralidade de elementos constituintes, ilustrados na figura 41, etc., podem ser incluídos em outro dispositivo, e alguns dos processos descritos acima podem ser realizados por outro dispositivo. A compensação de movimento é realizada de forma eficiente pelo decodificador 200 que implementa alguns dos elementos, dentre a pluralidade de elementos constituintes, ilustrados na figura 41, etc. e realiza alguns dos processos descritos acima.
[586] A seguir é descrito um exemplo das operações realizadas pelo decodificador 200 ilustrado na figura 54. A figura 55 é um fluxograma que ilustra um exemplo das operações realizadas pelo decodificador 200 ilustrado na figura 54. Por exemplo, o decodificador 200 ilustrado na figura 54 realiza as operações ilustradas na figura 55 quando da decodificação de um vídeo.
[587] Especificamente, o conjunto de circuitos 260 do decodificador 200, em operação, realiza os seguintes processos. Primeiro, o conjunto de circuitos 260 seleciona uma primeira tabela a ser utilizada para uma partição atual a ser decodificada em uma imagem de um vídeo, dentre uma pluralidade de tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando-se um valor de correção especificado por um índice, a pluralidade de tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices (S411). A seguir, o conjunto de circuitos 260 analisa um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela (S412). Então, o conjunto de circuitos 260 decodifica a partição atual utilizando o vetor de movimento de base corrigido utilizando-se um valor de correção especificado pelo primeiro índice (S413).
[588] Com isso, o decodificador 200 pode aperfeiçoar o desempenho de codificação do processo de interprevisão pela utilização do processo de seleção de vetor de movimento no processo de derivação de vetor de movimento quando o processo de derivação de vetor de movimento é utilizado no processo de interprevisão. De acordo, o decodificador 200 pode aperfeiçoar a eficiência de codificação. Informação Suplementar
[589] O codificador 100 e o decodificador 200, de acordo com a presente modalidade, podem ser utilizados como um codificador de imagem e um decodificador de imagem, ou podem ser utilizados como um codificador de vídeo e um decodificador de vídeo. Alternativamente, o codificador 100 e o decodificador 200 podem ser, cada um, utilizados como um dispositivo de interprevisão (dispositivo de previsão interquadro).
[590] Em outras palavras, o codificador 100 e o decodificador 200 podem corresponder apenas ao interprevisor (previsor de interquadro) 126 e ao interprevisor (previsor de interquadro) 218, respectivamente. Os outros elementos constituintes, tal como o transformador 106 e o transformador inverso 206 podem ser incluídos em outro dispositivo.
[591] Na presente modalidade, cada um dos elementos constituintes pode ser configurado na forma de um produto de hardware exclusivo, ou pode ser implementado pela execução de um programa de software adequado para o elemento constituinte. Cada um dos elementos constituintes pode ser implementado por meio de uma unidade de execução de programa, tal como uma CPU ou um processador, lendo e executando um programa de software gravado em um meio de gravação, tal como um disco rígido ou uma memória semicondutora.
[592] Especificamente, o codificador 100 e o decodificador 200 podem incluir, cada um, o conjunto de circuitos de processamento e armazenador eletricamente conectado ao conjunto de circuitos de processamento e acessível a partir do conjunto de circuitos de processamento. Por exemplo, o conjunto de circuitos de processamento é equivalente ao conjunto de circuitos 160 ou 260, e o armazenador é equivalente à memória 162 ou 262.
[593] O conjunto de circuitos de processamento inclui pelo menos um dentre um produto de hardware exclusivo, ou uma unidade de execução de programa, e realiza o processamento utilizando o armazenador. Quando o conjunto de circuitos de processamento inclui uma unidade de execução de programa, o armazenador armazena um programa de software executado pela unidade de execução de programa.
[594] Aqui, o software para implementação, por exemplo, do codificador 100 ou decodificador 200, de acordo com a presente modalidade, inclui um programa como indicado abaixo.
[595] Especificamente, o programa pode fazer com que um computador execute um método de codificação da codificação de um vídeo, o método de codificação incluindo selecionar uma primeira tabela a ser utilizada para uma partição atual a ser codificada em uma imagem de um vídeo, a partir das tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando um valor de correção especificado por um índice, as tabelas incluindo os valores de correção que possuem diferenças variáveis entre os índices; escrever um parâmetro que indica um primeiro índice a ser selecionado a partir dos índices incluídos na primeira tabela; e codificar a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
[596] Alternativamente, o programa pode fazer com que um computador execute um método de decodificação da decodificação de um vídeo, o método de decodificação incluindo selecionar uma primeira tabela a ser utilizada para uma partição atual a ser decodificada em uma imagem de um vídeo, dentre as tabelas que são utilizada para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, as tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; analisar um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e decodificar a partição atual utilizando o mesmo vetor de movimento corrigido utilizando um valor de correção especificado pelo primeiro índice.
[597] Os elementos constituintes podem ser circuitos, como descrito acima. Os circuitos podem constituir o conjunto de circuitos como um todo, ou podem ser circuitos individuais. Cada elemento constituinte pode ser implementado por um processador de finalidade geral, ou pode ser implementado por um processador exclusivo.
[598] Ademais, o processamento executado por um elemento constituinte particular pode ser executado por outro elemento constituinte. A ordem de execução do processamento pode ser modificada, ou uma pluralidade de processos pode ser executada em paralelo. Adicionalmente, um dispositivo de codificação e decodificação pode incluir o codificador 100 e o decodificador 200.
[599] Os números ordinais, tal como "primeiro" e "segundo" utilizados na descrição podem ser alterados como adequado. Um novo número ordinal pode ser fornecido aos elementos constituintes, etc., ou números ordinais dos elementos constituintes podem ser removidos.
[600] Apesar de alguns aspectos do codificador 100 e do decodificador 200 terem sido descritos acima com base na modalidade, os aspectos do codificador 100 e do decodificador 200 não estão limitados a essa modalidade. Várias modificações da presente modalidade, que sejam concebíveis pelos versados na técnica, além das modalidades que resultam das combinações de elementos constituintes em modalidades diferentes, podem ser incluídas no escopo dos aspectos do codificador 10 e decodificador 200, desde que não se distanciem da essência da presente descrição.
[601] Um ou mais dos aspectos descritos aqui podem ser realizados pela combinação de pelo menos parte dos outros aspectos da presente descrição. Adicionalmente, um ou mais dos aspectos descritos aqui podem ser realizados pela combinação, com 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. Modalidade 2 Implementações e Aplicações
[602] Como 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, Ademais, os processos realizados por cada um dos blocos funcionais pode ser realizado como uma unidade de execução de programa, tal como um processador que lê e executa software (um programa) gravado em um meio de gravação, tal como a ROM. O software pode ser distribuído. O software pode ser gravado em uma variedade de mídia de gravação, tal como memória semicondutora. Note-se que cada bloco funcional também pode ser realizado como hardware (circuito dedicado). Várias combinações de hardware e software podem ser utilizadas.
[603] O processamento descrito em cada uma das modalidades pode ser realizado através do processamento integrado utilizando-se um aparelho singular (sistema), e, alternativamente, pode ser realizado através de processamento descentralizado utilizando uma pluralidade de aparelhos. Ademais, o processador que executa o programa descrito acima pode ser um processador singular ou uma pluralidade de processadores. Em outras palavras, o processamento integrado pode ser realizado, e, alternativamente, o processamento descentralizado pode ser realizado.
[604] As modalidades da presente descrição não estão limitadas às modalidades ilustrativas acima; várias modificações podem ser feitas às modalidades ilustrativas, os resultados das quais também são incluídos no escopo das modalidades da presente descrição.
[605] A seguir, exemplos de aplicação do método de codificação de imagem em movimento (método de codificação de imagem) e o método de decodificação de imagem em movimento (método de decodificação de imagem) descritos em cada uma das modalidades acima serão descritos, além de vários sistemas que implementam os exemplos de aplicação. Tal sistema pode ser caracterizado como incluindo um codificador de imagem que emprega o método de codificação de imagem, um decodificador de imagem que emprega o método de decodificação de imagem, ou um codificador-decodificador de imagem que inclui ambos o codificador de imagem e o decodificador de imagem. Outras configurações de tal sistema podem ser modificadas caso a caso. Exemplos de Utilização
[606] A figura 56 ilustra uma configuração geral do sistema de fornecimento de conteúdo ex100 adequado para implementação de um serviço de distribuição de conteúdo. A área na qual o serviço de comunicação é fornecido é dividida em células de tamanhos desejados, e estações base ex106, ex107, ex108, ex109 e ex110, que são as estações sem fio fixas, e no exemplo ilustrado estão localizadas nas células respectivas.
[607] No sistema de fornecimento de conteúdo ex100, os dispositivos que incluem o computador ex111, o dispositivo de jogos ex112, a câmera ex113, o eletrodoméstico ex114 e o smartphone ex115 são conectados à Internet ex101 através do provedor de serviços de Internet ex102 ou à rede de comunicações ex104 e às estações base ex106 através de ex110. O sistema de fornecimento de conteúdo ex100 pode combinar e conectar qualquer combinação dos dispositivos acima. Em várias implementações, os dispositivos podem ser conectados direta ou indiretamente através de uma rede telefônica ou de comunicação de campo próximo, em vez de através das estações base ex106 a ex110. Adicionalmente, o servidor de transmissão ex103 pode ser conectado a dispositivos incluindo o computador ex111, dispositivo de jogos ex112, câmera ex113, eletrodoméstico ex114 e smartphone ex115 através, por exemplo, da Internet ex101. O servidor de transmissão ex103 também pode ser conectado, por exemplo, a um terminal em um hotspot em uma aeronave ex117 através do satélite ex116.
[608] Note-se que em vez das estações base ex106 a ex110, os pontos de acesso sem fio ou hotspots podem ser utilizados. O servidor de transmissão ex103 pode ser conectado à rede de comunicações ex104 diretamente, em vez de através da Internet ex101, ou do provedor de serviços de Internet ex102, e podem ser conectadas à aeronave ex117 diretamente em vez de via satélite ex116.
[609] A câmera ex113 é um dispositivo capaz de capturar imagens estáticas e vídeo, tal com ou uma câmera digital. O smartphone ex115 é um dispositivo smartphone, telefone celular ou telefone com sistema de handy-phone pessoal (PHS) que pode operar sob os padrões do sistema de comunicações móveis dos sistemas 2G, 3G, 3.9G e 4G, além do sistema 5G de próxima geração.
[610] O eletrodoméstico ex114 é, por exemplo, um refrigerador ou um dispositivo incluído em um sistema de geração conjunta de célula de combustível doméstico.
[611] No sistema de fornecimento de conteúdo ex100, um terminal, que inclui uma função de captura de imagem e/ou vídeo pode, por exemplo, transmitir ao vivo por meio da conexão ao servidor de transmissão ex103 através, por exemplo, a estação base ex106. Quando da transmissão ao vivo, um terminal (por exemplo, computador ex111, dispositivos de jogos ex112, câmera ex113, eletrodoméstico ex114, smartphone ex115 ou um terminal na aeronave ex117) pode realizar o processamento de codificação descrito nas modalidades acima em imagem estática ou conteúdo de vídeo capturados por um usuário através do terminal, pode multiplexar os dados de vídeo obtidos através 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 ex103. Em outras palavras, o terminal funciona como o codificador de imagem, de acordo com um aspecto da presente descrição.
[612] O servidor de transmissão ex103 transmite os dados de conteúdo transmitidos para os clientes que solicitaram a transmissão. Exemplos de cliente incluem computador ex111, dispositivos de jogos ex112, câmera ex113, eletrodoméstico ex114, smartphone ex115 e terminais dentro da aeronave ex117, que podem decodificar os dados codificados descritos acima. Dispositivos que recebem os dados transmitidos podem decodificar e reproduzir os dados recebidos. Em outras palavras, os dispositivos podem funcionar, cada um, como o decodificador de imagem, de acordo com um aspecto da presente descrição. Processamento Descentralizado
[613] O servidor de transmissão ex103 pode ser realizado como uma pluralidade de servidores ou computadores entre os quais as tarefas, tal como processamento, gravação e transmissão de dados, são divididas. Por exemplo, o servidor de transmissão ex103 pode ser realizado como uma rede de distribuição de conteúdo (CDN) que transmite conteúdo através de uma rede que conecta múltiplos servidores de borda localizados por todo o mundo. Em uma CDN, um servidor de borda, fisicamente próximo do cliente, pode ser designado dinamicamente para o cliente. O conteúdo é armazenado temporariamente e transmitido para o servidor de borda para reduzir o tempo de carga. No caso, por exemplo, de algum tipo de erro ou mudança na conectividade decorrente, por exemplo, de um pico no tráfego, é possível se transmitir os dados de forma estável em altas velocidades, visto que é possível se evitar partes afetadas da rede, por exemplo, pela divisão do processamento entre uma pluralidade de servidores de borda ou comutação das tarefas de transmissão para um servidor de borda diferente e continuação da transmissão.
[614] A descentralização não está limitada apenas à divisão do processamento para transmissão; a codificação de dados capturados pode ser dividida entre e realizada pelos terminais, no lado do servidor, ou ambos. Em um exemplo, na codificação típica, o processamento é realizado em dois circuitos. O primeiro circuito é para detectar o quão complicada a imagem é, quadro a quadro, ou cena a cena, ou detectar a carga de codificação. O segundo circuito serve para o processamento que mantém a qualidade de imagem e aperfeiçoa a eficiência de codificação. Por exemplo, é possível se reduzir a carga de processamento dos terminais e aperfeiçoar a qualidade e eficiência de codificação do conteúdo fazendo com que os terminais realizem o primeiro circuito de codificação e fazendo com que o lado do servidor, que recebeu o conteúdo, realize o segundo circuito de codificação. Em tal caso, depois do recebimento de uma solicitação de decodificação, é possível que os dados codificados resultantes do primeiro circuito, realizado por um terminal, sejam recebidos e reproduzidos em outro terminal quase que em tempo real. Isso possibilita a realização de uma transmissão suave e em tempo real.
[615] Em outro exemplo, a câmera ex113 ou similar extrai uma quantidade de característica (uma quantidade de características) de uma imagem, comprime os dados relacionados com a quantidade de característica como metadados, e transmite os metadados comprimidos para um servidor. Por exemplo, o servidor determina a significância de um objeto com base na quantidade de características e muda a precisão de quantização, de acordo, para realizar a compressão adequada para o significado (ou significância de conteúdo) da imagem. Os dados de quantidade de característica são, particularmente, eficientes no aperfeiçoamento da precisão e eficiência de previsão do vetor de movimento durante a segunda passagem de compressão realizada pelo servidor. Ademais, a codificação que possui uma carga de processamento relativamente baixa, tal como codificação de comprimento variável (VLC), pode ser manuseada pelo terminal, e a codificação que possui uma carga de processamento relativamente alta, tal como a codificação aritmética binária adaptativa de contexto (CABAC), pode ser manuseada pelo servidor.
[616] Em outro exemplo adicional, existem casos nos quais uma pluralidade de vídeos aproximadamente da mesma cena são capturados por uma pluralidade de terminais, por exemplo, em um estádio, shopping center, ou fábrica. Em tal caso, por exemplo, a codificação pode ser descentralizada pela divisão das 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, de acordo com a unidade. As unidades podem ser, por exemplo, grupos de imagens (GOP), imagens ou tiles resultando da divisão de uma imagem. Isso possibilita a redução dos tempos de carga e a realização da transmissão que está mais próxima do tempo real.
[617] Visto que os vídeos são aproximadamente da mesma cena,
o gerenciamento e/ou instruções podem ser realizados pelo servidor, de modo que os vídeos capturados pelos terminais possam receber uma referência cruzada. Adicionalmente, o servidor pode receber dados codificados dos terminais, alterar a relação de referência entre os itens de dados, ou corrigir ou substituir imagens propriamente ditas, e, então, realizar a codificação. Isso possibilita a geração de uma sequência com qualidade e eficiência aumentadas para os itens de dados individuais.
[618] Adicionalmente, o servidor pode transmitir dados de vídeo depois da realização da 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 para VP (por exemplo, VP9), pode converter H.264 em H.265, etc.
[619] Dessa forma, a codificação pode ser realizada por um terminal ou um ou mais servidores. De acordo, apesar de o dispositivo que realiza a codificação ser 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. 3D, Múltiplos Ângulos
[620] Tem havido um aumento na utilização de imagens ou vídeos combinados a partir de imagens ou vídeos de cenas diferentes capturadas simultaneamente, ou da mesma cena capturada a partir de diferentes ângulos, por uma pluralidade de terminais, tal como câmera ex113 e/ou smartphones ex115. Os vídeos capturados pelos terminais podem ser combinados com base, por exemplo, na relação de posição relativa obtida separadamente entre os terminais, ou regiões em um vídeo possuindo pontos de característica coincidentes.
[621] Em adição à codificação de imagens em movimento bidimensionais, o servidor pode codificar uma imagem estática com base na análise de cena de uma imagem em movimento, automaticamente, ou em um momento especificado pelo usuário, e transmitir a imagem estática codificada para um terminal de recepção. Adicionalmente, quando o servidor pode obter a relação de posição relativa entre os terminais de captura de vídeo, em adição às imagens em movimento bidimensionais, o servidor pode gerar geometria tridimensional de uma cena com base no vídeo da mesma cena capturada a partir de diferentes ângulos. O servidor pode codificar, separadamente, os dados tridimensionais gerados a partir de, por exemplo, uma nuvem pontual e, com base em um resultado de reconhecimento ou rastreamento de uma pessoa ou objeto utilizando dados tridimensionais, pode selecionar ou reconstruir e gerar um vídeo a ser transmitido para um terminal de recepção, a partir dos vídeos capturados por uma pluralidade de terminais.
[622] Isso permite que o usuário aproveite uma cena através da seleção livre dos vídeos correspondendo aos terminais de captura de vídeo e permite que os usuários aproveitem o conteúdo obtido pela extração de um vídeo em um ponto de vista selecionado a partir dos dados tridimensionais reconstruídos a partir de uma pluralidade de imagens ou vídeos. Adicionalmente, como com o vídeo, o som pode ser gravado a partir de ângulos relativamente diferentes, e o servidor pode multiplexar o áudio a partir de um ângulo ou espaço específico com o vídeo correspondente, e transmitir o vídeo e áudio multiplexados.
[623] Recentemente, o conteúdo que é um composto do mundo real e um mundo virtual, tal como o 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 a partir de pontos de vista de ambos os olhos, esquerdo e direito, e realizar a codificação que tolera a referência entre as imagens de dois pontos de vista, tal como a codificação de múltiplas visualizações (MVC), e, alternativamente, pode codificar as imagens como transmissões separadas sem referência. Quando as imagens são decodificadas como transmissões separadas, as transmissões podem ser sincronizadas quando reproduzidas, de modo a recriar um espaço tridimensional virtual de acordo com o ponto de vista do usuário.
[624] No caso de imagens AR, o servidor pode sobrepor a informação de objeto virtual existente em um espaço virtual na informação de câmera que representa um espaço no mundo real, com base em uma posição tridimensional ou movimento a partir da perspectiva do usuário. O decodificador pode obter ou armazenar informação sobre o objeto virtual e dados tridimensionais, gerar imagens bidimensionais com base no movimento da perspectiva do usuário e, então, gerar os dados sobrepostos pela conexão contínua de imagens. Alternativamente, o decodificador pode transmitir, para o servidor, o movimento da perspectiva do usuário em adição a uma solicitação por informação de objeto virtual. O servidor pode gerar os dados sobrepostos com base nos dados tridimensionais armazenados no servidor, de acordo com o movimento recebido, e codificar e transmitir os dados sobrepostos gerados para o decodificador. Note-se que os dados sobrepostos incluem, tipicamente, em adição aos valores RGB, um valor  para seções diferentes do objeto gerado a partir dos dados tridimensionais para, por exemplo, 0 e pode realizar a codificação enquanto essas seções são transparentes. Alternativamente, o servidor pode configurar o fundo para um valor RGB determinado, tal como uma chave de crominância e gerar dados nos quais áreas diferentes do objeto são configuradas como fundo. O valor RGB determinado pode ser predeterminado.
[625] A decodificação de dados transmitidos de forma similar pode ser realizada pelo cliente (por exemplo, os terminais), no lado do servidor, ou divididos entre os mesmos. 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 possuindo um monitor. É possível se reproduzir dados com alta qualidade de imagem pela descentralização do processamento e seleção adequada de conteúdo independentemente da capacidade de processamento do terminal de comunicações propriamente dito. Em outro exemplo, enquanto uma TV, por exemplo, está recebendo dados de imagem que são grandes em tamanho, uma região de uma imagem, tal como um tile obtido pela divisão da imagem, pode ser decodificada e exibida em um terminal ou terminais pessoais de um espectador ou espectadores da TV. Isso possibilita que os espectadores compartilhem uma visão de imagem grande além de permitir que cada espectador verifique sua área designada, ou inspecione uma região em detalhamento ainda maior.
[626] Em situações nas quais uma pluralidade de conexões sem fio é possível através de distâncias curtas, intermediárias e longas, internamente ou externamente, pode ser possível se receber, de forma contínua, conteúdo utilizando um padrão de sistema de transmissão, tal como MPEG-DASH. O usuário pode comutar entre dados em tempo real enquanto seleciona livremente um decodificador ou aparelho de monitor incluindo o terminal de usuário, monitores internos ou externos, etc. Ademais, utilizando, por exemplo, a informação sobre a posição do usuário, a decodificação pode ser realizada enquanto se comuta entre os terminais que manuseiam a decodificação e os terminais que manuseiam a exibição do conteúdo. Isso possibilita o mapeamento e exibição da informação, enquanto que o usuário está em movimento a caminho de um destino, na parede de um edifício próximo no qual um dispositivo, capaz de exibir conteúdo, está embutido, ou em parte do chão. Ademais, é possível também se comutar a taxa de bit dos dados recebidos com base na acessibilidade aos dados codificados em uma rede, tal como quando os dados codificados são armazenados temporariamente em um servidor rapidamente acessível a partir do terminal de recepção, ou quando os dados codificados são copiados em um servidor de borda em um serviço de distribuição de conteúdo. Codificação Escalonável
[627] A comutação de conteúdo será descrita com referência a uma transmissão escalonável, ilustrada na figura 57, que é codificada por compressão através da implementação do método de codificação de imagem em movimento descrito nas modalidades acima. O servidor pode ter uma configuração na qual o conteúdo é comutado enquanto faz uso de capacidade de escalonamento temporal e/ou espacial de uma transmissão, que é alcançada pela divisão em e codificação das camadas, como ilustrado na figura 57. Note-se que pode haver uma pluralidade de transmissões individuais que são do mesmo conteúdo, mas de qualidade diferente. Em outras palavras, pela determinação de que camada decodificar com base em fatores internos, tal como capacidade de processamento no lado do decodificador, e fatores externos, tal como largura de banda de comunicação, o lado do decodificador pode comutar livremente entre conteúdo de baixa resolução e conteúdo de alta resolução enquanto codifica. Por exemplo, em um caso no qual o usuário deseja continuar a assistir, por exemplo, em casa em um dispositivo, tal como uma TV conectada à Internet, a um vídeo que o usuário esteve assistindo anteriormente no smartphone ex115 enquanto estava em movimento, o dispositivo pode simplesmente decodificar a mesma transmissão para uma camada diferente, o que reduz a carga no lado do servidor.
[628] Adicionalmente, em adição à configuração descrita acima, na qual a capacidade de escalonamento é alcançada como resultado das imagens sendo codificadas por camada, com a camada de aperfeiçoamento estando acima da camada de base, a camada de aperfeiçoamento pode incluir metadados com base, por exemplo, na informação estatística na imagem. O lado do decodificador pode gerar conteúdo de alta qualidade de imagem pela realização da criação de imagem de super-resolução em uma imagem na camada de base com base nos metadados. A criação de imagem de super-resolução pode aperfeiçoar a razão de SN enquanto mantém a resolução e/ou aumenta a resolução. Os metadados incluem informação para identificação de um coeficiente de filtro linear ou não linear, como utilizado no processamento de super-resolução, ou informação identificando um valor de parâmetro no processamento de filtro, aprendizado por máquina, ou método de quadrados médios utilizado no processamento de super-resolução.
[629] Alternativamente, uma configuração pode ser fornecida na qual uma imagem é dividida, por exemplo, em tiles de acordo com, por exemplo, o significado de um objeto na imagem. No lado do decodificador, apenas uma região parcial é decodificada pela seleção de um tile a ser decodificado. Adicionalmente, pelo armazenamento de um atributo do objeto (pessoa, carro, bola, etc.) e uma posição do objeto no vídeo (coordenadas em imagens idênticas) como metadados, o lado do decodificador pode identificar a posição de um objeto desejado com base nos metadados e determinar qual tile ou tiles incluem esse objeto. Por exemplo, como ilustrado na figura 58, os metadados podem ser armazenados utilizando-se uma estrutura de armazenamento de dados diferente dos dados de pixel, tal como uma mensagem SEI (informação de aperfeiçoamento suplementar) em HEVC. Esses metadados indicam, por exemplo, a posição, o tamanho ou a cor do objeto principal.
[630] Os metadados podem ser armazenados em unidades dentre uma pluralidade de imagens, tal como transmissão, sequência ou unidades de acesso randômico. O lado do decodificador pode obter, por exemplo, o momento no qual uma pessoa específica aparece no vídeo, e pelo encaixe da informação de tempo com a informação da unidade de imagem, pode identificar uma imagem na qual o objeto está presente, e pode determinar a posição do objeto na imagem. Otimização de Página da Rede
[631] A figura 59 ilustra um exemplo de uma tela de exibição de uma página de rede no computador ex111, por exemplo. A figura 60 ilustra um exemplo de uma tela de exibição de uma página da rede no smartphone ex115, por exemplo. Como ilustrado na figura 59 e na figura 60, uma página da rede pode incluir uma pluralidade de links de imagem que são links para o conteúdo de imagem, e a aparência da página de rede pode diferir dependendo do dispositivo utilizado para visualizar a página de rede. Quando uma pluralidade de links de imagem é visualizada 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 que todo o link de imagem encaixe na tela, o aparelho de exibição (decodificador) pode exibir, com os links de imagem, imagens estáticas incluídas no conteúdo ou imagens I; pode exibir vídeo, tal como um gif animado utilizando uma pluralidade de imagens estáticas ou imagens I; ou pode receber apenas a camada de base, e decodificar e exibir o vídeo.
[632] Quando um link de imagem é selecionado pelo usuário, o aparelho de exibição realiza a decodificação enquanto, por exemplo, fornece a prioridade mais alta para a camada de base. Note-se que se houver informação no código HTML da página de rede indicando que o conteúdo é escalonável, o aparelho de exibição pode decodificar até a camada de aperfeiçoamento. Adicionalmente, a fim de se garantir a reprodução em tempo real, antes de uma seleção ser feita ou quando a largura de banda é severamente limitada, o aparelho de exibição pode reduzir o retardo entre o momento no qual a imagem dianteira é decodificada e o momento no qual a imagem decodificada é exibida (isso é, o retardo entre o início da decodificação do conteúdo até a exibição do conteúdo) pela decodificação e exibição apenas das imagens de referência dianteira (imagem I, imagem P, imagem B de referência dianteira). Adicionalmente ainda, o aparelho de exibição pode ignorar propositalmente a relação de referência entre as imagens e decodificar, de forma bruta, todas as imagens B e P como imagens de referência dianteiras e, então, realizar a decodificação normal à medida que o número de imagens recebidas com o tempo aumenta. Acionamento Autônomo
[633] Quando da transmissão e recepção de imagem estática ou dados de vídeo, tal como informação de mapa bi ou tridimensional para o acionamento autônomo ou acionamento assistido de um automóvel, o terminal de recepção pode receber, em adição aos dados de imagem pertencentes a uma ou mais camadas, informação sobre, por exemplo, o clima ou construções de estradas como metadados, e associar os metadados com os dados de imagem mediante decodificação. Note-se que os metadados podem ser designados por camada e, alternativamente, podem ser simplesmente multiplexados com dados de imagem.
[634] Em tal caso, visto que o automóvel, drone, aeronave, etc., contendo o terminal de recepção, é móvel, o terminal de recepção pode receber, de forma contínua, e realizar a decodificação enquanto comuta entre as estações base, dentre as estações base ex106 a ex110, pela transmissão de informação que indica a posição do terminal de recepção. Ademais, de acordo com a seleção realizada 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 até que ponto os metadados são recebidos, ou até que ponto a informação de mapa, por exemplo, é atualizada.
[635] No sistema de fornecimento de contexto ex100, o cliente pode receber, decodificar e reproduzir, em tempo real, informação codificada transmitida pelo usuário. Transmissão de Conteúdo Individual
[636] No sistema de fornecimento de conteúdo ex100, em adição à alta qualidade de imagem, conteúdo longo distribuído por uma entidade de distribuição de vídeo, transmissão por unidifusão ou multidifusão de baixa qualidade de imagem, e conteúdo curto a partir de um indivíduo também são possíveis. Tal conteúdo de indivíduos pode aumentar ainda mais em termos de 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 utilizando-se a seguinte configuração, por exemplo.
[637] Em tempo real, enquanto se captura o conteúdo de vídeo ou imagem, ou depois de o conteúdo ter sido capturado e acumulado, o servidor realiza o processamento de reconhecimento com base nos dados brutos ou dados codificados, tal como processamento de erro de captura, processamento de busca de cena, análise de significado e/ou processamento de detecção de objeto. Então, com base no resultado do processamento de reconhecimento, o servidor – quando avisado ou automaticamente – edita o conteúdo, exemplos dos quais incluem correção, tal como correção de foco e/ou de manchas de movimento; removendo cenas de baixa prioridade, tal como cenas que apresentam baixo brilho em comparação com outras imagens, ou estão fora de foco; ajuste de borda de 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. De acordo, a fim de se manter o conteúdo dentro de um comprimento específico que escalona com o comprimento do vídeo original, o servidor pode, em adição às cenas de baixa prioridade descritas acima, remover automaticamente as cenas com baixo movimento, com base em um resultado de processamento de imagem. Alternativamente, o servidor pode gerar e codificar um resumo do vídeo com base em um resultado de uma análise do significado de uma cena.
[638] Pode haver casos nos quais o conteúdo individual pode incluir conteúdo que infringe direitos autorais, direitos morais, direitos de imagem, etc. Tal caso pode resultar em uma situação desfavorável para o criador, tal como quando o conteúdo é compartilhado além do escopo pretendido pelo criador. De acordo, antes da codificação, o servidor pode, por exemplo, editar imagens de modo a manchar as faces das pessoas na periferia da tela ou manchar o interior de uma casa, por exemplo. Adicionalmente, o servidor pode ser configurado para reconhecer as faces das pessoas, além de uma pessoa registrada nas imagens a serem codificadas, e quando tais faces aparecem em uma imagem, pode aplicar um filtro de mosaico, por exemplo, à face da pessoa. Alternativamente, como pré ou pós-processamento, para codificação, o usuário pode especificar, por motivos de direitos autorais, uma região de uma imagem que inclui uma pessoa ou uma região do fundo a ser processado. O servidor pode processar a região especificada, por exemplo, pela substituição da região por uma imagem diferente, ou manchando a região. Se a região incluir uma pessoa, a pessoa pode ser rastreada na imagem em movimento, e a região da cabeça da pessoa pode ser substituída por outra imagem enquanto a pessoa se move.
[639] Visto que existe uma demanda por observação em tempo real de conteúdo produzido por indivíduos, o que tende a ser pequeno em tamanho de dados, o decodificador pode, primeiro, receber a camada de base como a prioridade mais alta, e realizar a decodificação e reprodução, apesar de isso poder diferir dependendo da largura de banda. Quando o conteúdo é reproduzido duas ou mais vezes, tal como quando o decodificador recebe a camada de aperfeiçoamento durante a decodificação e reprodução da camada de base, e refaz a reprodução, o decodificador pode reproduzir um vídeo com alta qualidade de imagem incluindo a camada de aperfeiçoamento. Se a transmissão for codificada utilizando-se tal codificação escalonável, o vídeo pode ter baixa qualidade quando em um estado não selecionado ou no começo do vídeo, mas pode oferecer uma experiência na qual a qualidade de imagem da transmissão aumenta progressivamente de uma forma inteligente. Isso não está limitado apenas a codificação escalonável; a mesma experiência pode ser oferecida pela configuração de uma transmissão singular, a partir de uma transmissão de baixa qualidade reproduzida pela primeira vez, e uma segunda transmissão codificada utilizando-se a primeira transmissão como uma referência. Outros Exemplos de Implementação e Aplicação
[640] A codificação e a decodificação podem ser realizadas pelo LSI (conjunto de circuitos de integração de grande escala) ex500 (ver figura 56), que é tipicamente incluído em cada terminal. LSI ex500 pode ser configurado como um chip singular ou uma pluralidade de chips. Software para codificação e decodificação de imagens em movimento pode ser integrado a algum tipo de meio de gravação (tal como CD- ROM, um disco flexível, ou um disco rígido) que é legível, por exemplo, pelo computador ex111, e a codificação e decodificação podem ser realizadas utilizando-se software. Adicionalmente, quando o smartphone ex115 é equipado com uma câmera, os dados de vídeo obtidos pela câmera podem ser transmitidos. Nesse caso, os dados de vídeo podem ser codificados por LSI ex500 incluído no smartphone ex115.
[641] Note-se que LSI ex500 pode ser configurado para descarregar e ativar um aplicativo. Em tal caso, o terminal primeiro determina se é compatível com o esquema utilizado para codificar o conteúdo, ou se é capaz de 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 é capaz de executar um serviço específico, o terminal pode primeiro descarregar um codec ou software de aplicativo e, então, obter e reproduzir o conteúdo.
[642] Além do exemplo do sistema de fornecimento de conteúdo ex100, que utiliza a Internet ex101, pelo menos o codificador de imagem em movimento (codificador de imagem) ou o decodificador de imagem em movimento (decodificador de imagem), descritos nas modalidades acima, pode ser implementado em um sistema de difusão digital. O mesmo processamento de codificação e processamento de decodificação podem ser aplicados para transmitir e receber ondas de rádio de difusão sobrepostas aos dados de áudio e vídeo multiplexados utilizando, por exemplo, um satélite, apesar de isso ser direcionado para a multidifusão, ao passo que a unidifusão é mais fácil com o sistema de fornecimento de conteúdo ex100. Configuração de Hardware
[643] A figura 61 ilustra detalhes adicionais do smartphone ex115 ilustrado na figura 56. A figura 62 ilustra um exemplo de configuração de smartphone ex115. O smartphone ex115 inclui a antena ex450 para transmitir e receber ondas de rádio para e da estação base ex110, câmera ex465 capaz de capturar vídeo e imagens estáticas, e monitor ex458 que exibe os dados decodificados, tal como o vídeo capturado pela câmera ex465 e o vídeo recebido pela antena ex450. O smartphone ex115 inclui, adicionalmente, a interface de usuário ex466, tal como um painel de toque, unidade de saída de áudio ex457, tal como alto falante para enviar fala ou outro áudio, unidade de entrada de áudio ex456, tal como um microfone para registro de áudio, uma memória ex467 capaz de armazenar os dados decodificados, tal como vídeo capturado ou imagens estáticas, áudio gravado, vídeo ou imagens estáticas recebidos, e correio, além de dados decodificados, e partição ex464 que é uma interface para SIM ex468 para autorizar o acesso a uma rede e vários dados. Note-se que a memória externa pode ser utilizada em vez da memória ex467.
[644] O controlador principal ex460, que pode controlar de forma profunda o monitor ex458 e a interface de usuário ex466, o circuito de suprimento de energia ex461, o controlador de registro de interface de usuário ex462, o processador de sinal de vídeo ex455, a interface de câmera ex463, o controlador de exibição ex459, o modulador/demodulador ex452, o multiplexador/desmultiplexador ex453, o processador de sinal de áudio ex454, a partição ex464, e a memória ex467 são conectados através do barramento ex470.
[645] Quando o usuário liga o botão de energia do circuito de suprimento de energia ex461, o smartphone ex115 é energizado para um estado operacional, e cada componente é suprido com energia de um pacote de bateria.
[646] O smartphone ex115 realiza o processamento, por exemplo, para chamada e transmissão de dados, com base no controle realizado pelo controlador principal ex460, que inclui uma CPU, uma ROM e uma RAM. Quando da realização de chamadas, um sinal de áudio gravado pela unidade de registro de áudio ex456 é convertido em um sinal de áudio digital pelo processador de sinal de áudio ex454, para o qual o processamento de espectro de espalhamento é aplicado pelo modulador/demodulador ex452 e conversão de digital para analógico, e o processamento de conversão de frequência é aplicado pelo transmissor/receptor ex451, e o sinal resultante é transmitido através da antena ex450. Os dados recebidos são amplificados, convertidos em frequência e convertidos de analógico para digital, processados por espectro de espalhamento inverso pelo modulador/demodulador ex452,
convertido em um sinal de áudio analógico pelo processador de sinal de áudio ex454, e, então, enviado a partir da unidade de saída de áudio ex457. No modo de transmissão de dados, texto, imagem estática ou dados de vídeo podem ser transmitidos sob o controle do controlador principal ex460 através do controlador de registro de interface de usuário ex462 com base na operação da interface de usuário ex466 do corpo principal, por exemplo. Um processamento de transmissão e recepção similar é realizado. No modo de transmissão de dados, quando do envio de um vídeo, imagem estática ou vídeo e áudio, o processador de sinal de vídeo ex455 codifica, por compressão, através do método de codificação de imagem em movimento descrito nas modalidades acima, um sinal de vídeo armazenado na memória ex467 ou um sinal de vídeo registrado a partir da câmera ex465, e transmite os dados de vídeo codificados para o multiplexador/desmultiplexador ex453. O processador de sinal de áudio ex454 codifica um sinal de áudio gravado pela unidade de registro 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/desmultiplexador ex453. O multiplexador/desmultiplexador multiplexa os dados de vídeo codificados e codifica os dados de áudio utilizando um esquema determinado, modula e converte os dados utilizando o modulador/demodulador (circuito de modulador/demodulador) ex452 e transmissor/receptor ex451, e transmite o resultado através da antena ex450. O esquema determinado pode ser predeterminado.
[647] Quando o vídeo anexado a um e-mail ou a um chat, ou um vídeo conectado a partir de uma página da rede, é recebido, por exemplo, a fim de decodificar os dados multiplexados recebidos através da antena ex450, o multiplexador/desmultiplexador ex452 desmultiplexa os dados multiplexados para dividir os dados multiplexados em uma sequência de bits de dados de vídeo e uma sequência de bits de dados de áudio, e supre os dados de áudio codificados para o processador de sinal de áudio ex454 através do barramento sincronizado ex470. O processador de sinal de vídeo ex455 decodifica o sinal de vídeo utilizando um método de decodificação de imagem em movimento correspondente ao método de codificação de imagem em movimento nas modalidades acima, e o vídeo ou uma imagem estática, incluído no arquivo de imagem em movimento conectado, é exibido no monitor ex458 através do controlador de exibição ex459. O processador de sinal de áudio ex454 decodifica o sinal de áudio e envia o áudio a partir da unidade de saída de áudio ex457. Visto que a transmissão em tempo real está se tornando cada vez mais popular, pode haver situações nas quais a reprodução do áudio pode ser socialmente inadequada, dependendo do ambiente do usuário. De acordo, como um valor inicial, uma configuração na qual apenas os dados de vídeo são reproduzidos, isso é, o sinal de áudio não é reproduzido, pode ser preferível; o áudio pode ser sincronizado e reproduzido apenas quando um registro, tal como quando o usuário clica nos dados de áudio, for recebido.
[648] Apesar de o smartphone ex115 ter sido utilizado no exemplo acima, outras implementações são concebíveis: um terminal transceptor incluindo ambos um codificador e um decodificador; um terminal transmissor incluindo apenas um codificador; e um terminal receptor incluindo apenas um decodificador. Na descrição do sistema de difusão digital, um exemplo é fornecido no qual os dados, multiplexados obtidos como resultado de dados de vídeo sendo multiplexados com os dados de áudio, são recebidos ou transmitidos. Os dados multiplexados, no entanto, podem ser dados de vídeo multiplexados com dados além dos dados de áudio, tal como dados de texto relacionados ao vídeo. Adicionalmente, os dados de vídeo propriamente ditos, em vez dos dados multiplexados, podem ser recebidos ou transmitidos.
[649] Apesar de o controlador principal ex460, incluindo uma CPU, ser descrito como controlando os processos de codificação e decodificação, vários terminais incluem, frequentemente, GPUs. De acordo, uma configuração é aceitável, na qual uma área grande é processada de uma vez fazendo uso da capacidade de desempenho da GPU através da memória compartilhada pela CPU e GPU, ou memória incluindo um endereço que é gerenciado de modo a permitir a utilização comum pela CPU e GPU. Isso possibilita o encurtamento do tempo de codificação, mantendo-se a natureza de tempo real da transmissão, e reduzindo o retardo. Em particular, o processamento relacionado com estimativa de movimento, filtragem de desbloqueio, desvio adaptativo de amostra (SAO), e transformação/quantização, pode ser efetivamente realizado pela GPU em vez de pela CPU nas unidades de imagens, por exemplo, todas de uma vez. Aplicabilidade Industrial
[650] A presente descrição é aplicável a, por exemplo, receptores de televisão, gravadores de vídeo digital, sistemas de navegação de automóveis, telefones móveis, câmeras digitais, câmeras de vídeo digital, sistemas de teleconferência, espelhos eletrônicos, etc. Referências Numéricas nos Desenhos 100 codificador 102 divisor 104 subtraidor 106 transformador 108 quantizador 110 codificador por entropia 112, 204 quantizador inverso 114, 206 transformador inverso 116, 208 somador 118, 210 memória de bloco
120, 212 filtro de circuito 122, 214 memória de quadro 124, 216 intraprevisor 126, 218 interprevisor 128, 220 controlador de previsão 160, 260 conjunto de circuitos 162, 262 memória 200 decodificador 202 decodificador por entropia

Claims (21)

REIVINDICAÇÕES
1. Codificador que codifica um vídeo, caracterizado pelo fato de o codificador compreender: um conjunto de circuitos; e memória conectada ao conjunto de circuitos; em que, durante a operação, o conjunto de circuitos: seleciona uma primeira tabela a ser utilizada para uma partição atual, a ser codificada em uma imagem de vídeo, dentre uma pluralidade de tabelas que são utilizadas para corrigir um vetor de movimento de base, em uma direção predeterminada utilizando um valor de correção especificado por um índice, a pluralidade de tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices: escreve um parâmetro indicando um primeiro índice a ser selecionado a partir dos índices incluídos na primeira tabela; e codifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
2. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela pela análise de um primeiro parâmetro que especifica a primeira tabela dentre a pluralidade de tabelas.
3. Codificador, de acordo com a reivindicação 2, caracterizado pelo fato de o conjunto de circuitos obter um cabeçalho de fatia de uma fatia atual incluindo a partição atual; e o primeiro parâmetro ser escrito no cabeçalho de fatia.
4. Codificador, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando um vetor de movimento em um quadro codificado.
5. Codificador, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando uma diferença do vetor de movimento em um quadro codificado.
6. Codificador, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando uma resolução de uma imagem que inclui a partição atual.
7. Codificador, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando um ID temporal de uma imagem que inclui a partição atual.
8. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando uma distância entre uma imagem atual, que inclui a partição atual, e uma imagem de referência.
9. Codificador, de acordo com a reivindicação 1, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando um valor de um previsor de vetor de movimento na partição atual.
10. Decodificador que decodifica um vídeo, caracterizado pelo fato de o decodificador compreender: um conjunto de circuitos; e uma memória conectada ao conjunto de circuitos;
em que, em operação, o conjunto de circuitos: seleciona uma primeira tabela a ser utilizada para uma partição atual, a ser decodificada em uma imagem de vídeo, dentre uma pluralidade de tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, a pluralidade de tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; analisa um parâmetro indicando um primeiro índice a ser selecionado, dentre os índices incluídos na primeira tabela; e decodifica a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
11. Decodificador, de acordo com a reivindicação 10, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela pela análise de um primeiro parâmetro que especifica a primeira tabela dentre a pluralidade de tabelas.
12. Decodificador, de acordo com a reivindicação 11, caracterizado pelo fato de: o conjunto de circuitos obter um cabeçalho de fatia de uma fatia atual incluindo a partição atual; e o primeiro parâmetro ser escrito no cabeçalho de fatia.
13. Decodificador, de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando um vetor de movimento em um quadro decodificado.
14. Decodificador, de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de:
o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando uma diferença de vetor de movimento em um quadro decodificado.
15. Decodificador, de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando uma resolução de uma imagem incluindo a partição atual.
16. Decodificador, de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando um ID temporal de uma imagem incluindo a partição atual.
17. Decodificador, de acordo com a reivindicação 10, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando uma distância entre uma imagem atual, que inclui a partição atual, e uma imagem de referência.
18. Decodificador, de acordo com a reivindicação 10, caracterizado pelo fato de: o conjunto de circuitos selecionar a primeira tabela, dentre a pluralidade de tabelas, utilizando um valor de um previsor de vetor de movimento na partição atual.
19. Método de codificação de codificação de um vídeo, caracterizado pelo fato de o método de codificação compreender: selecionar uma primeira tabela a ser utilizada para uma partição atual, a ser codificada em uma imagem de vídeo, dentre uma pluralidade de tabelas, que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada utilizando um valor de correção especificado por um índice, a pluralidade de tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; escrever um parâmetro indicando um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e codificar a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
20. Método de decodificação de decodificação de vídeo, o caracterizado pelo fato de o método de decodificação compreender: selecionar uma primeira tabela a ser utilizada para uma partição atual, a ser decodificada em uma imagem de vídeo, entre a pluralidade de tabelas que são utilizadas para corrigir um vetor de movimento de base em uma direção predeterminada, utilizando um valor de correção especificado por um índice, a pluralidade de tabelas incluindo valores de correção que possuem diferenças variáveis entre os índices; analisar um parâmetro que indica um primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela; e decodificar a partição atual utilizando o vetor de movimento de base corrigido utilizando um valor de correção especificado pelo primeiro índice.
21. Decodificador que decodifica um vídeo, caracterizado pelo fato de o decodificador compreender: um conjunto de circuitos; e uma memória conectada ao conjunto de circuitos; em que, em operação, o conjunto de circuitos: corrige um vetor de movimento de base utilizando um valor de correção para corrigir o vetor de movimento de base em uma direção predeterminada; e decodifica uma partição atual a ser processada em uma imagem do vídeo utilizando o vetor de movimento de base corrigido; em que o valor de correção é especificado por um primeiro parâmetro que indica um dos valores incluídos em uma tabela; e a tabela é selecionada dentre uma pluralidade de tabelas.
Petição 870200157355, de 15/12/2020, pág. 169/235 Codificador Divisor Transformador Quantizador por entropia
Quantizador inverso 1/58
Transformador inverso
Controlador de previsão Memória Intraprevisor de bloco
Memória Filtro de Intraprevisor de quadro circuito
Parâmetro de previsão
Iniciar processo de codificação
Dividir bloco
Selecionar padrão de divisão
Gerar bloco de previsão
Gerar bloco de diferença
Gerar bloco de coeficiente
Codificar parâmetro de coeficiente/previsão
Restaurar bloco de diferença
Gerar bloco de imagem decodificado
Filtragem
Codificação de toda a imagem finalizada? Não
Sim
Encerrar processo de codificação
Ordem de codificação/ordem de decodificação
Fatia
Fatia
Fatia
Fatia
Ordem de codificação/ordem de decodificação
Tile Tile
Tile Tile
Tipo de transformação Função base
Direção: vertical Direção: vertical Localização: 0 Localização: 1
Direção: horizontal Direção: horizontal Localização: 0 Localização: 1
Petição 870200157355, de 15/12/2020, pág. 176/235 Imagem a ser filtrada Determinador de limite
Não
Determinação desligada 8/58
Sim Filtragem de executor Determinador Determinação de filtro ligada
Determinador de processo
Determinador de característica de filtro Imagem filtrada
Bloco Bloco
Bloco
Condições para os blocos P e Q localizados através do Valores limite para o qual o valor Bs deve ser determinado Bs
Pelo menos um dos blocos é o bloco de intraprevisão
Pelo menos um dos blocos inclui coeficiente de transformação diferente de zero e possui um lado que coincide com o limite TU Valor absoluto da diferença entre os vetores de movimento dos dois blocos através do limite corresponde a um ou mais pixels
Imagens de referência para a compensação de movimento dos dois blocos através do limite ou os números de vetores de movimento dos dois blocos são diferentes
Outros
Início
Gerar imagem de previsão
Fim
Início
Gerar imagem de Gerar imagem de Gerar imagem de previsão utilizando o previsão utilizando previsão utilizando primeiro método o segundo método o terceiro método
Selecionar a imagem de previsão
Fim
Início
Gerar imagem Gerar imagem de previsão de previsão utilizando utilizando intraprevisão intraprevisão
Avaliação
Selecionar imagem de previsão
Fim
0: plano
Início
Selecionar candidato MV Determinar vetor de movimento Derivar MV Gerar imagem de previsão
Compensação de movimento (previsão Gerar imagem de movimento de previsão compensado
Gerar resíduo Gerar resíduo de previsão de previsão
Fim
Início
Derivar MV no modo Derivar MV no modo no qual a informação no qual a informação de movimento é de movimento não é codificada codificada
Normal, inter, mistura, afim Fim
Início
Derivar MV no modo Derivar MV no modo no qual a diferença no qual a diferença MV MV é codificada não é codificada
Normal, inter, afim, FRUC, mistura, inter afim Fim mistura afim
Petição 870200157355, de 15/12/2020, pág. 184/235 Início
Informação de modo de interprevisão Método no qual Método no qual a diferença MV não a diferença MV é codificada é codificada 16/58
Derivar MV utilizando o Derivar MV no Derivar MV no Derivar MV no método de codificação modo de mistura modo FRUC modo afim de diferença
Fim
< Informação Início < Saída de sequência > de referência >
Iniciar circuito para cada bloco
MV do bloco Obter candidato MV (gerar lista codificado de candidatos a MV)
Extrair candidatos do previsor MV
Informação de seleção Selecionar previsor MV de previsor MV
Imagem de referência Derivar MV codificada Diferença MV
Processo de compensação de movimento
Encerrar circuito para cada bloco
Fim
< Informação de referência > < Saída de sequência >
Início
Iniciar circuito para cada bloco
MV do bloco Obter candidato MV (gerar lista codificado de candidatos a MV)
Informação de Selecionar MV seleção MV
Imagem de referência Processo de compensação codificada de movimento
Encerrar circuito para cada bloco
Fim
Imagem atual Imagem de referência codificada
Petição 870200157355, de 15/12/2020, pág. 187/235 19/58
Misturar lista Previsor de MV Previsor de MV Previsor de MV Previsor de MV Previsor de MV Previsor de MV Previsor de de candidatos de espacialmente espacialmente espacialmente espacialmente combinado 5 combinado 6 MV zero 7 previsor de MV vizinho 1 vizinho 2 vizinho 3 vizinho 4
Selecionar um previsor de MV a partir da lista de previsores de MV e designar como MV para o bloco atual
< Informação < Saída de sequência > de referência > Início
Iniciar circuito para cada bloco
MV de bloco Obter candidato a MV (gerar codificado lista de candidatos a MV)
Selecionar melhor candidato a MV
Imagem de Estimativa na região que cerca referência o melhor candidato a MV codificada
Processo de compensação de movimento
Encerrar circuito para cada bloco
Fim
Trajetória de movimento
Imagem atual Bloco atual
Gabarito
Imagem atual
Bloco atual
Bloco codificado
Bloco atual
Bloco codificado Bloco atual
Bloco codificado Bloco atual
< Informação < Saída de sequência > de referência > Início
Iniciar circuito para cada bloco
Informação de seleção MV de bloco Derivar previsor MV no de previsor MV codificado ponto de controle
Circuito para cada sub-bloco
Imagem de referência Calcular MV afim codificada
Compensação de movimento afim
Circuito para cada sub-bloco
Encerrar circuito para cada bloco
Fim
Bloco codificado
Bloco atual
Bloco codificado
Bloco atual
< Informação < Saída de sequência > de referência >
Início
Iniciar circuito para cada bloco
MV de bloco Derivar previsor MV no Informação de seleção codificado ponto de controle de previsor MV
Circuito de estimativa de movimento
Atualizar previsor de MV
Circuito para cada sub-bloco
Imagem de referência Calcular MV afim codificada
Compensação de movimento afim
Circuito para cada sub-bloco
Circuito de estimativa de movimento
Determinar MV no ponto de controle
Diferença de MV
Processar compensação de movimento
Encerrar circuito para cada bloco
Fim
Bloco codificado Bloco atual
Bloco codificado Bloco atual
Início
Derivar MV no modo de mistura
A estimativa de MV Não foi realizada?
Sim
Derivar MV final por Determinar MV meio da estimativa da derivado como região circundante MV final de MV derivado
Fim
Gabarito gerado com base no pixel de referência do candidato a MV (L0)
Petição 870200157355, de 15/12/2020, pág. 199/235 e pixel de referência do candidato a MV (L1)
Candidato a MV (L0) 31/58
Candidato a MV (L1)
Bloco atual
Primeira imagem Imagem atual Segunda imagem de referência (L0) de referência (L1)
Início
Gerar imagem de previsão
Corrigir imagem de previsão
Fim
Início
Derivar MV
Gerar imagem de previsão
O processo Não de correção foi realizado?
Sim
Corrigir imagem de Enviar imagem de previsão para gerar previsão não imagem de corrigida como previsão final imagem de previsão final
Fim
Início
Derivar MV
O processo de Não correção de luminescência foi realizado?
Sim
Gerar imagem de Gerar imagem de previsão pela previsão sem realização da correção realização da correção de luminescência de luminescência
Fim
Início
Obter MV a partir do bloco vizinho esquerdo
Obter imagem de previsão por MV_L
Corrigir imagem de previsão pela sobreposição ponderada de Pred_L
Obter MV do bloco vizinho superior
Obter imagem de previsão por MV_U
Corrigir imagem de previsão pela sobreposição ponderada de Pred_U
Fim
Petição 870200157355, de 15/12/2020, pág. 203/235 Imagem de referência Imagem atual
Bloco vizinho superior
Bloco atual 35/58
Bloco vizinho esquerdo
Imagem de previsão final
Primeira partição Primeiro MV
Segundo MV
Segunda partição
Bloco atual
Imagem atual (imagem B)
Imagem de referência Imagem atual
Bloco atual
Regiões de referência circundantes para correção de luminescência
Calcular parâmetro de correção de luminescência
Processamento da correção de luminescência
Imagem de referência Imagem de previsão
Codificador
Processador
Memória
Petição 870200157355, de 15/12/2020, pág. 208/235 Decodificador Quantizador Transformador Filtro de por entropia inverso inverso circuito 40/58
Controlador de previsão Intraprevisor Memória de bloco
Memória Intraprevisor de quadro
Parâmetro de previsão
Iniciar processo de decodificação
Identificar padrão de divisão
Decodificar parâmetro de coeficiente/previsão
Restaurar bloco de diferença
Gerar bloco de previsão
Gerar bloco de imagem decodificada
Filtragem
Não A decodificação de toda a imagem foi completada?
Sim
Encerrar processo de decodificação
Início
Gerar imagem de previsão
Fim
Início
Primeiro método Qual modo foi Terceiro método determinado?
Segundo método
Gerar imagem de Gerar imagem de Gerar imagem de previsão utilizando o previsão utilizando o previsão utilizando o primeiro método segundo método terceiro método
Fim
< Informação de < Saída de sequência > referência > Início
Iniciar circuito para cada bloco
MV do bloco Obter candidato a MV (gerar decodificado lista de candidatos a MV)
Extrair candidatos a previsor de MV
Selecionar candidatos a Informação de seleção previsor de MV de previsor de MV
Derivar MV Diferença de MV
Imagem de referência Processar compensação decodificada de movimento
Encerrar circuito para cada bloco
Fim
Decodificador
Processador
Memória
Petição 870200157355, de 15/12/2020, pág. 213/235 Primeira direção Vetor de movimento delta com parâmetro de magnitude = 0 e parâmetro de direção = 0
Vetor de movimento delta com parâmetro de magnitude = 0 e parâmetro de direção = 1
Vetor de movimento delta com parâmetro de magnitude = 0 e parâmetro de direção = 2 Vetor de movimento delta com parâmetro de magnitude = 0 e parâmetro de direção = 3 45/58
Vetor de movimento delta com parâmetro de magnitude = 1 e parâmetro de direção = 0
Segunda direção
Vetor de movimento delta
Início
Selecionar primeira tabela a ser utilizada para a partição atual a ser decodificada, dentre as tabelas
Analisar o parâmetro indicando o primeiro índice que especifica a informação de vetor de movimento a ser selecionada dentre as partes da informação de vetor de movimento incluídas na primeira tabela
Decodificar a partição atual a ser decodificada, utilizando pelo menos a informação de vetor de movimento selecionada
Fim
Lista 1
Valor de magnitude Índice de tabela
Lista 2
Valor de magnitude Índice de tabela
Início
Analisar o primeiro parâmetro indicando o primeiro índice que especifica, dentre as tabelas , a tabela a ser utilizada para a partição atual a ser decodificada
Analisar o segundo parâmetro indicando o segundo índice que especifica a informação de vetor de movimento a ser selecionada dentre as partes da informação de vetor de movimento
Decodificar a partição atual a ser decodificada, utilizando pelo menos a informação de vetor de movimento especificada
Fim
Codificador
Conjunto de circuitos
Memória
Início
Selecionar a primeira tabela a ser utilizada para a partição atual a ser codificada na imagem de vídeo, dentre as tabelas que devem ser utilizadas para corrigir o vetor de movimento de base na direção predeterminada utilizando o valor de correção especificado pelo índice, tabelas incluindo os valores de correção que possuem diferenças variáveis entre os índices
Escrever o parâmetro indicando o primeiro índice a ser selecionado a partir dos índices incluídos na primeira tabela
Codificar a partição atual a ser codificada, utilizando o vetor de movimento corrigido utilizando o valor de correção especificado pelo primeiro índice
Fim
Codificador
Conjunto de circuitos
Memória
Início
Selecionar a primeira tabela a ser utilizada para a partição atual a ser decodificada na imagem de vídeo, dentre as tabelas que são utilizadas para corrigir o vetor de movimento de base na direção predeterminada utilizando o valor de correção especificado utilizando o valor de correção especificado pelo índice, a tabela incluindo os valores de correção que possuem diferenças variáveis entre os índices
Analisar o parâmetro que indica o primeiro índice a ser selecionado dentre os índices incluídos na primeira tabela
Decodificar a partição atual a ser decodificada, utilizando o vetor de movimento corrigido utilizando o valor de correção especificado pelo primeiro índice
Fim
Aeronave
Petição 870200157355, de 15/12/2020, pág. 220/235 Satélite
Servidor de transmissão
Computador 52/58
Dispositivo de jogos
Rede de Internet comunica- ções ex Câmera 104
Eletrodoméstico
Smartphone Provedor de serviços de Internet aperfeiçoamento
Camada de base Camada de temporal Camada
Camada de base aperfeiçoamento Camada de temporal Camada
Petição 870200157355, de 15/12/2020, pág. 226/235 Controlador Monitor Circuito de suprimento Para cada de monitor de energia componente
Transmissor Modulador/ Controlador /receptor demodulador principal
Memória Partição 58/58
Multiplexador/ desmultiplexador Interface de Câmera Processador de câmera sinal de vídeo Unidade de entrada de áudio Controlador Processador de entrada Interface de Unidade de de sinal de interface usuário de áudio de usuário saída de áudio
BR112020025664-1A 2018-07-18 2019-07-05 dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação BR112020025664A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862699930P 2018-07-18 2018-07-18
US62/699,930 2018-07-18
PCT/JP2019/026898 WO2020017367A1 (ja) 2018-07-18 2019-07-05 符号化装置、復号装置、符号化方法及び復号方法

Publications (1)

Publication Number Publication Date
BR112020025664A2 true BR112020025664A2 (pt) 2021-03-23

Family

ID=69164364

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020025664-1A BR112020025664A2 (pt) 2018-07-18 2019-07-05 dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação

Country Status (13)

Country Link
US (4) US11012706B2 (pt)
EP (1) EP3826305A4 (pt)
JP (3) JP6950095B2 (pt)
KR (1) KR20210030357A (pt)
CN (1) CN112425171A (pt)
AU (3) AU2019303651B2 (pt)
BR (1) BR112020025664A2 (pt)
CA (1) CA3105938A1 (pt)
MX (1) MX2021000357A (pt)
SG (1) SG11202100230PA (pt)
TW (2) TW202013971A (pt)
WO (1) WO2020017367A1 (pt)
ZA (1) ZA202203500B (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020017367A1 (ja) * 2018-07-18 2020-01-23 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10999589B2 (en) 2018-10-04 2021-05-04 Tencent America LLC Method and apparatus for video coding
KR20200054111A (ko) 2018-11-08 2020-05-19 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 영상 신호 부호화/복호화 방법 및 이를 위한 장치
CA3118882C (en) 2018-11-08 2023-09-26 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Refinement of motion vector derived from merge candidate based on offset vector
US11122272B2 (en) * 2018-12-26 2021-09-14 Mediatek Inc. Triangle prediction with applied-block settings and motion storage settings
US10904553B2 (en) * 2019-01-22 2021-01-26 Tencent America LLC Method and apparatus for video coding
WO2020184461A1 (ja) * 2019-03-08 2020-09-17 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
JP7268409B2 (ja) * 2019-03-08 2023-05-08 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム
JP2023005871A (ja) * 2021-06-29 2023-01-18 Kddi株式会社 画像復号装置、画像復号方法及びプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6473458B1 (en) * 1997-07-09 2002-10-29 Nippon Telegraph And Telephone Corporation Method for encoding and decoding moving vector, encoder and decoder for moving vector, and recording medium stored with encoding and decoding programs for moving vector
JP2918546B2 (ja) * 1997-07-09 1999-07-12 日本電信電話株式会社 動きベクトル符号化方法および復号方法、動きベクトル符号化装置および復号装置、並びに、動きベクトル符号化プログラムおよび復号プログラムを記録した記録媒体
JP4418762B2 (ja) * 2004-05-07 2010-02-24 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
JP5100495B2 (ja) * 2008-05-09 2012-12-19 株式会社東芝 画像処理装置
ES2844148T3 (es) * 2011-09-19 2021-07-21 Sun Patent Trust Procedimiento de descodificación de imágenes, dispositivo de descodificación de imágenes
KR20130079261A (ko) * 2011-12-30 2013-07-10 (주)휴맥스 3차원 영상 부호화 방법 및 장치, 및 복호화 방법 및 장치
CN103650497B (zh) * 2012-03-02 2018-01-05 太阳专利托管公司 图像编码方法、图像解码方法、图像编码装置、图像解码装置及图像编码解码装置
CN112188204B (zh) * 2014-10-31 2024-04-05 三星电子株式会社 使用高精度跳过编码的视频编码设备和视频解码设备及其方法
CN115086652A (zh) * 2015-06-05 2022-09-20 杜比实验室特许公司 图像编码和解码方法和图像解码设备
JP6172324B2 (ja) * 2016-04-27 2017-08-02 株式会社Jvcケンウッド 画像復号装置、画像復号方法、画像復号プログラム、受信装置、受信方法及び受信プログラム
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
WO2019151093A1 (en) * 2018-01-30 2019-08-08 Sharp Kabushiki Kaisha Systems and methods for performing motion vector prediction for video coding using motion vector predictor origins
CN114205617B (zh) * 2018-02-28 2024-03-19 三星电子株式会社 编码方法及其装置以及解码方法及其装置
EP3787296A4 (en) * 2018-05-21 2021-07-28 LG Electronics Inc. METHOD AND DEVICE FOR DECODING AN IMAGE USING AN MVD DERIVATIVE BASED ON A LUT TABLE IN AN IMAGE CODING SYSTEM
WO2020017367A1 (ja) 2018-07-18 2020-01-23 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法

Also Published As

Publication number Publication date
AU2023201643B2 (en) 2024-02-15
US20240015322A1 (en) 2024-01-11
US11012706B2 (en) 2021-05-18
SG11202100230PA (en) 2021-02-25
US20210243469A1 (en) 2021-08-05
AU2019303651B2 (en) 2023-04-20
AU2023201643A1 (en) 2023-04-20
JP2023014255A (ja) 2023-01-26
JP6950095B2 (ja) 2021-10-13
US20200195963A1 (en) 2020-06-18
CN112425171A (zh) 2021-02-26
US20220385939A1 (en) 2022-12-01
TW202013971A (zh) 2020-04-01
JP7187640B2 (ja) 2022-12-12
MX2021000357A (es) 2021-03-25
US11805273B2 (en) 2023-10-31
EP3826305A4 (en) 2021-08-18
AU2019303651A1 (en) 2021-01-28
TW202404351A (zh) 2024-01-16
US11463725B2 (en) 2022-10-04
AU2024200587A1 (en) 2024-02-22
CA3105938A1 (en) 2020-01-23
ZA202203500B (en) 2023-08-30
EP3826305A1 (en) 2021-05-26
KR20210030357A (ko) 2021-03-17
JPWO2020017367A1 (ja) 2021-03-11
JP2022008483A (ja) 2022-01-13
WO2020017367A1 (ja) 2020-01-23

Similar Documents

Publication Publication Date Title
JP7187640B2 (ja) 符号化方法及び復号方法
BR112020001991A2 (pt) codificador de imagem, decodificador de imagem, método de codificação de imagem e método de decodificação de imagem
JP2022111206A (ja) 画像符号化装置及び符号化方法
BR112020026686A2 (pt) Sistema e método para codificação de vídeo
BR112020022773A2 (pt) codificador, decodificador, método de codificação e método de decodificação
BR112021001156A2 (pt) sistema e método para codificação de vídeo
BR112021004822A2 (pt) codificador, decodificador, método de codificação e método de decodificação
BR112020000876A2 (pt) dispositivo codificador, dispositivo decodificador, método de codificação, e método de decodificação
BR112021014711A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR112020001579A2 (pt) codificador, decodificador, método de codificação, método de decodificação
JP2023024719A (ja) 非一時的記憶媒体
AU2020259889A1 (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
JP7337222B2 (ja) 符号化装置及び復号装置
BR112020000219A2 (pt) codificação, método de codificação, decodificador e método de decodificação
BR112021005443A2 (pt) codificador, decodificador, método de codificação, e método de decodificação
BR112020021718A2 (pt) codificador, decodificador, método de codificação e método de decodificação
JP2023017026A (ja) 非一時的記憶媒体
BR112021009596A2 (pt) codificador, decodificador, método de codificação, e método de decodificação
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
US11849139B2 (en) Encoder, decoder, encoding method, and decoding method
WO2020179715A1 (ja) 符号化装置、復号装置、符号化方法及び復号方法

Legal Events

Date Code Title Description
B06G Technical and formal requirements: other requirements [chapter 6.7 patent gazette]

Free format text: VIDE PARECER.