BR122023027389A2 - Codificador, decodificador, método de codificação e método de decodificação - Google Patents

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

Info

Publication number
BR122023027389A2
BR122023027389A2 BR122023027389-3A BR122023027389A BR122023027389A2 BR 122023027389 A2 BR122023027389 A2 BR 122023027389A2 BR 122023027389 A BR122023027389 A BR 122023027389A BR 122023027389 A2 BR122023027389 A2 BR 122023027389A2
Authority
BR
Brazil
Prior art keywords
motion vector
block
threshold
current block
image
Prior art date
Application number
BR122023027389-3A
Other languages
English (en)
Inventor
Jing Ya Li
Chong Soon Lim
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 BR122023027389A2 publication Critical patent/BR122023027389A2/pt

Links

Abstract

A presente invenção refere-se aos métodos, e dispositivo decodificador (decodificador) e dispositivo codificador (codificador) (100) que inclui: um conjunto de circuitos (a1); e uma memória (a2) acoplada ao conjunto de circuitos (a1). Em operação, o conjunto de circuitos (a1): deriva um vetor de movimento de base a ser utilizado na previsão de um bloco corrente a ser codificado; deriva um primeiro vetor de movimento diferente do vetor de movimento de base; deriva uma diferença do vetor de movimento com base em uma diferença entre o vetor de movimento de base e o primeiro vetor de movimento; determina se a diferença do vetor de movimento é superior a um limite; modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é determinada como sendo superior ao limite, e não modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é determinada como não sendo superior ao limite; e codifica o bloco corrente utilizando o primeiro vetor de movimento modificado ou o primeiro vetor de movimento não modificado.

Description

Campo Técnico
[001] A presente descrição refere-se a codificador e decodificador para codificar e decodificar vídeo, e os métodos associados.
Técnica Fundamental
[002] Como um padrão de codificação de vídeo, existe H.265, que também é referido como Codificação de Vídeo de Alta Eficiência (HEVC) (Literatura de Não Patente (NPL) 1).
Lista de Citação Literatura de Não Patente
[003] NPL 1: H.265 (ISO/IEC 23008-2 HEVC)HEVC (Codificação de Vídeo de Alta Eficiência)
Sumário da Invenção Problemas Técnicos
[004] Para tal método de codificação e método de decodificação, se deseja propor um novo esquema a fim de se aumentar a eficiência de processamento e aperfeiçoar uma qualidade de imagem, reduzir a escala do conjunto de circuitos, etc.
[005] Cada uma das configurações e métodos descritos nas mo dalidades ou parte das modalidades, de acordo com a presente des-crição, pode contribuir para, por exemplo, pelo menos um dentre: um aperfeiçoamento na eficiência de codificação; uma redução na quanti-dade de processamento de codificação/decodificação; uma redução da escala do conjunto de circuitos; um aperfeiçoamento na velocidade da codificação/decodificação; a seleção adequada de um elemen- to/operação constituinte para um filtro; um bloco, um tamanho, um ve- tor de movimento, uma imagem de referência, um bloco de referência, etc. na codificação e decodificação.
[006] Deve-se notar que a presente descrição também inclui des crições de uma configuração ou um método que podem fornecer bene-fícios, além dos benefícios descritos acima. Um exemplo de tais des-crições inclui uma configuração ou um método que podem aperfeiçoar a eficiência de codificação enquanto se reduz um aumento em uma quantidade de processamento.
Soluções para os Problemas
[007] Um codificador, de acordo com um aspecto da presente descrição, é um codificador que codifica um vídeo. O codificador inclui um conjunto de circuitos; e uma memória acoplada ao conjunto de cir-cuitos. Em operação, o conjunto de circuitos deriva um vetor de movi-mento de base a ser utilizado na previsão de um bloco corrente (atual) a ser codificado; deriva um primeiro vetor de movimento, diferente do vetor de movimento de base, deriva uma diferença do vetor de movi mento, com base em uma diferença entre o vetor de movimento de base e o primeiro vetor de movimento; determina se a diferença de vetor de movimento é maior do que um limite; modifica o primeiro vetor de movimento quando a diferença de vetor de movimento é determi nada, para que seja maior do que o limite, e não modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é de terminada como não sendo superior ao limite; e codifica o bloco cor rente utilizando o primeiro vetor de movimento modificado ou o primei ro vetor de movimento não modificado.
[008] Um decodificador, de acordo com um aspecto da presente descrição, é um decodificador que decodifica um vídeo. O decodifica- dor inclui um conjunto de circuitos, e uma memória acoplada ao con junto de circuitos. Em operação, o conjunto de circuitos deriva um ve tor de movimento de base a ser utilizado na previsão de um bloco cor- rente a ser decodificado; deriva um primeiro vetor de movimento dife-rente a partir do vetor de movimento de base; deriva uma diferença de vetor de movimento com base em uma diferença entre o vetor de mo-vimento de base e o primeiro vetor de movimento; determina se a dife-rença do vetor de movimento é superior a um limite; modifica o primei ro vetor de movimento quando a diferença do vetor de movimento é determinada como sendo superior ao limite, e não modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é de-terminada como não sendo superior ao limite; e decodifica o bloco cor-rente utilizando o primeiro vetor de movimento modificado ou o primei ro vetor de movimento não modificado.
[009] Note-se que esses aspectos gerais e específicos podem ser implementados utilizando-se um sistema, um dispositivo, um mé todo, um circuito integrado, um programa de computador, um meio de gravação legível por computador não transitório, tal como CD-ROM, ou qualquer combinação de sistemas, dispositivos, métodos, circuitos in-tegrados, programas de computador ou meio de gravação.
[0010] Benefícios e vantagens adicionais das modalidades descri tas se tornarão aparentes a partir da especificação e dos desenhos. Os benefícios e/ou vantagens podem ser obtidos individualmente pe lasvárias modalidades e características da especificação e dos dese nhos, nem todos os quais são necessários a fim de se obter um ou mais dos ditos benefícios e/ou vantagens.
Efeitos Vantajosos da Invenção
[0011] A presente descrição é capaz de fornecer um codificador, um decodificador, um método de codificação, ou um método de deco- dificação que permitam um aumento na eficiência de codificação.
Breve Descrição dos Desenhos
[0012] A Figura 1 é um diagrama em bloco ilustrando uma configu ração funcional de um codificador, de acordo com uma modalidade;
[0013] A Figura 2 é um fluxograma indicando um exemplo de um processo de codificação geral realizado pelo codificador;
[0014] A Figura 3 é um diagrama ilustrando um exemplo de divisão de bloco;
[0015] A Figura 4A é um diagrama ilustrando um exemplo de uma configuração de fatia;
[0016] A Figura 4B é um diagrama ilustrando um exemplo de uma configuração de tile;
[0017] A Figura 5A é um gráfico ilustrando as funções básicas de transformação para cada tipo de transformação;
[0018] A Figura 5B é um diagrama ilustrando transformações es pacialmentevariáveis (SVT);
[0019] A Figura 6A é um diagrama ilustrando um exemplo de um formato de filtro utilizado em um filtro de circuito adaptativo (ALF);
[0020] A Figura 6B é um diagrama ilustrando outro exemplo de um formato de filtro utilizado em um ALF;
[0021] A Figura 6C é um diagrama ilustrando outro exemplo de um formato de filtro utilizado em um ALF;
[0022] A Figura 7 é um diagrama em bloco indicando um exemplo de uma configuração específica de um filtro de circuito que funciona como um DBF;
[0023] A Figura 8 é um diagrama indicando um exemplo de um filtro de desbloqueio possuindo uma característica de filtragem simétri ca com relação a um limite de bloco;
[0024] A Figura 9 é um diagrama para ilustrar um limite de bloco no qual um processo de filtro de desbloqueio é realizado;
[0025] A Figura 10 é um diagrama indicando exemplos de valores Bs;
[0026] A Figura 11 é um diagrama ilustrando um exemplo de um processo realizado por um processador de previsão do codificador;
[0027] A Figura 12 é um diagrama ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador;
[0028] A Figura 13 é um diagrama ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador;
[0029] A Figura 14 é um diagrama ilustrando sessenta e sete mo dos de intraprevisão utilizados na intraprevisão;
[0030] A Figura 15 é um fluxograma ilustrando um fluxo de pro cessamentobásico da interprevisão;
[0031] A Figura 16 é um fluxograma ilustrando um exemplo de de rivação de vetores de movimento;
[0032] A Figura 17 é um fluxograma ilustrando outro exemplo de derivação de vetores de movimento;
[0033] A Figura 18 é um fluxograma ilustrando outro exemplo de derivação de vetores de movimento;
[0034] A Figura 19 é um fluxograma ilustrando um exemplo de in- terprevisão no intermodo normal;
[0035] A Figura 20 é um fluxograma ilustrando um exemplo de in- terprevisão no modo de mistura;
[0036] A Figura 21 é um diagrama para ilustrar um exemplo de um processo de derivação de vetor de movimento no modo de mistura;
[0037] A Figura 22 é um fluxograma ilustrando um exemplo da conversão ascendente de taxa de quadro (FRUC);
[0038] A Figura 23 é um diagrama para ilustrar um exemplo de combinação de padrão (combinação bilateral) entre dois blocos ao longo de uma trajetória de movimento;
[0039] A Figura 24 é um diagrama para ilustrar um exemplo de combinação de padrão (combinação de gabarito) entre um gabarito em uma imagem corrente e um bloco em uma imagem de referência;
[0040] A Figura 25A é um diagrama 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;
[0041] A Figura 25B é um diagrama 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;
[0042] A Figura 26A é um diagrama conceitual para ilustrar um modo de mistura afim;
[0043] A Figura 26B é um diagrama conceitual para ilustrar um modo de mistura afim no qual dois pontos de controle são utilizados;
[0044] A Figura 26C é um diagrama conceitual para ilustrar um modo de mistura afim no qual três pontos de controle são utilizados;
[0045] A Figura 27 é um fluxograma ilustrando um exemplo de um processo no modo de mistura afim;
[0046] A Figura 28A é um diagrama para ilustrar um intermodo afim no qual dois pontos de controle são utilizados;
[0047] A Figura 28B é um diagrama para ilustrar um intermodo afim no qual três pontos de controle são utilizados;
[0048] A Figura 29 é um fluxograma ilustrando um exemplo de um processo no intermodo afim;
[0049] A Figura 30A é um diagrama para ilustrar um intermodo afim no qual um bloco corrente possui três pontos de controle e um bloco vizinho possui dois pontos de controle;
[0050] A Figura 30B é um diagrama para ilustrar um intermodo afim no qual um bloco corrente possui dois pontos de controle e um bloco vizinho possui três pontos de controle;
[0051] A Figura 31A é um diagrama ilustrando uma relação entre um modo de mistura e uma atualização do vetor de movimento dinâ mico (DMVR);
[0052] A Figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo DMVR;
[0053] A Figura 32 é um fluxograma ilustrando um exemplo de ge- ração de uma imagem de previsão;
[0054] A Figura 33 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão;
[0055] A Figura 34 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão;
[0056] A Figura 35 é um fluxograma ilustrando um exemplo de um processo de correção de imagem de previsão realizado por um pro cesso de compensação de movimento de bloco sobreposto (OBMC);
[0057] A Figura 36 é um diagrama conceitual para ilustrar um exemplo de um processo de correção de imagem de previsão realiza do por um processo OBMC;
[0058] A Figura 37 é um diagrama para ilustrar a geração de duas imagens de previsão triangulares;
[0059] A Figura 38 é um diagrama para ilustrar um modelo assu mindo o movimento linear uniforme;
[0060] A Figura 39 é um diagrama 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);
[0061] A Figura 40 é um diagrama em bloco ilustrando um exem plo de montagem do codificador;
[0062] A Figura 41 é um diagrama em bloco ilustrando uma confi guração funcional de um decodificador, de acordo com uma modalida de;
[0063] A Figura 42 é um fluxograma ilustrando um exemplo de um processo de decodificação geral realizado pelo decodificador;
[0064] A Figura 43 é um diagrama ilustrando um exemplo de um processo realizado por um processador de previsão do decodificador;
[0065] A Figura 44 é um diagrama ilustrando outro exemplo de um processo realizado pelo processador de previsão do decodificador;
[0066] A Figura 45 é um fluxograma ilustrando um exemplo de in- terprevisão no intermodo normal no decodificador;
[0067] A Figura 46 é um diagrama em bloco ilustrando um exem plo de montagem do decodificador;
[0068] A Figura 47 é um fluxograma ilustrando um exemplo de in- terprevisão, de acordo com o aspecto primário;
[0069] A Figura 48 é um diagrama ilustrando um exemplo de um bloco corrente;
[0070] A Figura 49 é um diagrama ilustrando os exemplos limite calculados;
[0071] A Figura 50 é um diagrama ilustrando uma configuração geral de um sistema de fornecimento de conteúdo para implementar um serviço de distribuição de conteúdo;
[0072] A Figura 51 é um diagrama ilustrando um exemplo de uma estrutura de codificação na codificação escalonável;
[0073] A Figura 52 é um diagrama ilustrando um exemplo de uma estrutura de codificação na codificação escalonável;
[0074] A Figura 53 é um diagrama ilustrando um exemplo de uma tela de exibição de uma página da rede;
[0075] A Figura 54 é um diagrama ilustrando um exemplo de uma tela de exibição de uma página da rede;
[0076] A Figura 55 é um diagrama ilustrando um exemplo de um smartphone;
[0077] A Figura 56 é um diagrama em bloco ilustrando um exem plo de uma configuração de um smartphone.
Descrição das Modalidades Ilustrativas Base de Formação de Conhecimento Subjacente da Presente Descrição
[0078] Por exemplo, na codificação de vídeo, etc., um codificador, que codifica um vídeo, deriva um erro de previsão pela subtração de uma imagem de previsão de uma imagem incluída no vídeo, quando o vídeo é codificado pela realização de um processo de previsão subdi-vidido adicional, enquanto impede um aumento na quantidade de pro-cessamento. Subsequentemente, o codificador converte a frequência e quantiza o erro de previsão, e codifica os dados de imagem resultan tes. Em se fazendo isso, com relação a um movimento em uma unida de corrente a ser codificada, tal como um bloco incluído em um vídeo, quando a previsão de movimento é realizada pra cada bloco ou cada sub-bloco incluído no bloco, a precisão de codificação pode ser aper feiçoada pelo controle da variação dos vetores de movimento.
[0079] No entanto, quando a variação dos vetores de movimento não é controlada na codificação do bloco incluído no vídeo, etc., um aumento na quantidade de processamento ocorre, reduzindo, assim, a eficiência de codificação.
[0080] Em vista disso, um codificador, de acordo com um aspecto da presente descrição, é um codificador que codifica um vídeo. O codi-ficador inclui um conjunto de circuitos, e uma memória acoplada ao conjunto de circuitos. Em operação, o conjunto de circuitos deriva um vetor de movimento de base a ser utilizado na previsão de um bloco corrente a ser codificado; deriva um primeiro vetor de movimento, dife-rente do vetor de movimento de base; deriva uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimen to de base e o primeiro vetor de movimento; determina se a diferença do vetor de movimento é maior do que um limite; modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é de terminada como sendo superior ao limite, e não modifica o primeiro vetor de movimento quando a diferença de vetor de movimento é de terminada como não sendo superior ao limite; e codifica o bloco cor rente utilizando o primeiro vetor de movimento modificado ou o primei ro vetor de movimento não modificado.
[0081] Com isso, o codificador pode ajustar o vetor de movimento de modo que a variação dos vetores de movimento no bloco corrente, dividido em sub-blocos, se encontre dentro de uma faixa predetermi nada. O número de pixels a ser referido se torna inferior ao do caso no qual a variação de vetores de movimento é superior à faixa predeter minada e, dessa forma, é possível se restringir a quantidade de dados transferidos da memória para a faixa predeterminada. De acordo, o codificador pode reduzir o tamanho de acesso à memória na interpre- visão, e, dessa forma, a eficiência de codificação é aperfeiçoada.
[0082] Por exemplo, o vetor de movimento de base pode corres ponder a um primeiro conjunto de pixels no bloco corrente, e o primei ro vetor de movimento pode corresponder a um segundo conjunto de pixels, diferente do primeiro conjunto de pixels, no bloco corrente.
[0083] Com isso, o codificador pode controlar adequadamente a variação dos vetores de movimento no bloco corrente utilizando o ve tor de movimento de base determinado com base no primeiro conjunto de pixels e o primeiro vetor de movimento determinado com base no segundo conjunto de pixels.
[0084] Por exemplo, o conjunto de circuitos pode modificar o pri meiro vetor de movimento utilizando um valor obtido pela fixação da diferença do vetor de movimento, quando a diferença de vetor de mo-vimentoé determinada como sendo superior ao limite.
[0085] Com isso, o codificador pode modificar o primeiro vetor de movimento de modo que a variação dos primeiros vetores de movi mento se encontre dentro da faixa predeterminada. De acordo, o codi ficador pode reduzir o tamanho de acesso à memória na interprevisão, e, dessa forma, a eficiência de codificação é aperfeiçoada.
[0086] Por exemplo, um modo de previsão para o bloco corrente pode ser um modo afim.
[0087] Com isso, o codificador pode realizar a previsão no bloco corrente para cada sub-bloco e, dessa forma, a precisão de previsão é aperfeiçoada.
[0088] Por exemplo, o limite pode ser determinado de modo que um tamanho de acesso à memória, em um pior caso, quando o bloco corrente, que é previsto no modo de previsão é inferior a ou igual a um tamanho de acesso à memória, em um pior caso, quando o bloco cor-renteé previsto em um outro modo de previsão.
[0089] Com isso, o codificador realiza suavemente um processo de transferência pela restrição do tamanho de acesso à memória no qual os dados são transferidos da memória, para a faixa predetermi nada, e, dessa forma, a eficiência de processamento é aperfeiçoada.
[0090] Por exemplo, o tamanho de acesso à memória, no pior ca so, quando o bloco corrente é previsto em outro modo de previsão, pode ser um tamanho de acesso à memória quando o bloco corrente é previsto de forma bidirecional com base em 8 x 8 pixels no outro modo de previsão.
[0091] Em se fazendo isso, por exemplo, quando a previsão é rea lizada sem utilização do modo afim, o codificador gera a imagem de previsão para cada bloco a partir de uma imagem codificada. Quando a previsão bidirecional é realizada para cada bloco de 8 x 8 pixels, uti-lizando um modo de previsão além do modo afim, o tamanho de aces soà memória é o máximo. De acordo, também no modo afim, o limite do modo afim é determinado para que se encontre dentro do tamanho de acesso à memória. Dessa forma, o codificador realiza de forma su ave um processo de transferência pela restrição do tamanho de aces soà memória, no qual os dados são transferidos a partir da memória, para a faixa predeterminada e, dessa forma, a eficiência de processa mentoé aperfeiçoada.
[0092] Por exemplo, o limite pode diferir entre um caso no qual o bloco corrente é previso de forma unidirecional e um caso no qual o bloco corrente é previsto de forma bidirecional.
[0093] Com isso, no codificador, o tamanho de acesso se torna maior no caso no qual o bloco corrente é previsto de forma bidirecional do que no caso onde o bloco corrente é previsto de forma unidirecio- nal. Dessa forma, a eficiência de codificação é aperfeiçoada pela con-figuração do limite para um valor inferior para um tamanho de acesso maior.
[0094] Por exemplo, o conjunto de circuitos pode determinar se a diferença do vetor de movimento é maior do que o limite como segue: a diferença do vetor de movimento é determinada para que seja maior do que o limite quando (i) um valor absoluto de um componente hori zontal da diferença do vetor de movimento é maior do que um primeiro valor do limite ou (ii) um valor absoluto de um componente vertical da diferença de vetor de movimento é maior do que um segundo valor do limite; e a diferença do vetor de movimento é determinada para que não seja superior ao limite quando (i) o valor absoluto do componente horizontal da diferença de vetor de movimento não é superior ao pri meiro valor do limite e (ii) o valor absoluto do componente vertical da diferença de vetor de movimento não é superior ao segundo valor do limite.
[0095] Com isso, o limite é representado pelo primeiro valor que é um componente horizontal (doravante, também referido como o primei ro valor limite) e o segundo valor que é um componente vertical (dora-vante,também referido como o segundo valor limite), e, dessa forma, o codificador pode determinar a variação dos primeiros vetores de mo-vimento de uma forma bidirecional. Adicionalmente, o codificador de-termina se a variação dos primeiros vetores de movimento no bloco corrente se encontra dentro da faixa predeterminada e, dessa forma, é possível se ajustar o primeiro vetor no bloco corrente para um valor adequado. De acordo, a eficiência de codificação é aperfeiçoada.
[0096] Por exemplo, o conjunto de circuitos modifica o primeiro vetor de movimento utilizando o vetor de movimento de base e um va lor obtido pela fixação da diferença do vetor de movimento, quando a diferença de vetor de movimento é determinada como sendo superior ao limite, e uma nova diferença de vetor de movimento entre o primei ro vetor de movimento modificado e o vetor de movimento de base não precisar ser superior ao limite.
[0097] Em se fazendo isso, quando a variação dos primeiros veto res de movimento excede a faixa predeterminada, por exemplo, o codi-ficador fixa, ao valor limite, o valor absoluto de um componente que excede o limite entre os componentes horizontal e vertical da diferença de vetor de movimento. Subsequentemente, por exemplo, o codifica dor pode determinar, como o primeiro vetor de movimento modificado, o valor obtido pela adição da diferença de vetor de movimento fixada ao vetor de movimento de base. Com isso, a variação dos primeiros vetores de movimento no bloco corrente se encontra dentro da faixa predeterminada. De acordo, a eficiência de codificação é aperfeiçoada.
[0098] Por exemplo, o vetor de movimento de base pode ser uma média de uma pluralidade de primeiros vetores de movimento do bloco corrente, a pluralidade de primeiros vetores de movimento sendo, cada um, o primeiro vetor de movimento.
[0099] Com isso, para cada um dos primeiros vetores de movi mento no bloco corrente, o codificador pode derivar uma diferença a partir da referência que é a média de todos os primeiros vetores de movimento no bloco corrente.
[00100] Por exemplo, o vetor de movimento de base pode ser um dos primeiros vetores de movimento do bloco corrente.
[00101] Com isso, para cada um dos primeiros vetores de movi mento no bloco corrente, o codificador pode derivar uma diferença a partir da referência que é um dos primeiros vetores de movimento no bloco corrente.
[00102] Por exemplo, o limite pode ser adaptativo a um tamanho do bloco corrente.
[00103] Com isso, no codificador, o tamanho do acesso à memória varia dependendo do tamanho do bloco corrente e, dessa forma, o li mite pode ser reduzido com um aumento no tamanho de acesso à memória. Por exemplo, o limite é reduzido com um aumento no tama nho do bloco corrente. De acordo, o codificador pode fazer com que o tamanho de acesso à memória se encontre dentro da faixa predeter minada, mesmo quando o tamanho do bloco corrente aumenta, e, dessa forma, a eficiência de codificação é aperfeiçoada.
[00104] Por exemplo, o limite pode ser predeterminado, e não pre cisa ser codificado em uma sequência.
[00105] Com isso, o codificador pode utilizar o limite predetermina do e, dessa forma, não é necessário se codificar o limite cada vez que a previsão é realizada. De acordo, a eficiência de codificação é aper-feiçoada.
[00106] Um decodificador, de acordo com um aspecto da presente descrição, é um decodificador que decodifica um vídeo. O decodifica- dor inclui um conjunto de circuitos; e uma memória acoplada ao con junto de circuitos. Em operação, o conjunto de circuitos deriva um ve tor de movimento de base a ser utilizado na previsão de um bloco cor rente a ser decodificado; deriva um primeiro vetor de movimento dife rente a partir do vetor de movimento de base; deriva uma diferença vetor de movimento com base em uma diferença entre o vetor de mo vimento de base e o primeiro vetor de movimento; determina se a dife rença do vetor de movimento é maior do que um limite; modifica o pri meiro vetor de movimento quando a diferença do vetor de movimento é determinada como sendo superior ao limite, e não modifica o primei ro vetor de movimento quando a diferença do vetor de movimento é determinada como não sendo superior ao limite; e decodifica o bloco corrente utilizando o primeiro vetor de movimento modificado ou o pri-meiro vetor de movimento não modificado.
[00107] Com isso, o decodificador pode ajustar o vetor de movimen to de modo que a variação dos vetores de movimento no bloco corren te, dividido em sub-blocos, se encontre dentro da uma faixa predeter minada. O número de pixels a serem referidos se torna inferior ao do caso no qual a variação dos vetores de movimento é superior à faixa predeterminada, e, portanto, é possível se restringir a quantidade de dados transferidos a partir da memória para a faixa predeterminada. De acordo, o decodificador pode reduzir o tamanho de acesso à me mória na interprevisão e, dessa forma, a eficiência de codificação é aperfeiçoada.
[00108] Por exemplo, o vetor de movimento de base pode corres ponder a um primeiro conjunto de pixels no bloco corrente, e o primei ro vetor de movimento pode corresponder a um segundo conjunto de pixels, diferente do primeiro conjunto de pixels, no bloco corrente.
[00109] Com isso, o decodificador pode controlar de forma adequa da a variação dos vetores de movimento no bloco corrente utilizando o vetor de movimento de base determinado com base no primeiro con junto de pixels, e o primeiro vetor de movimento determinado com ba se no segundo conjunto de pixels.
[00110] Por exemplo, o conjunto de circuitos pode modificar o pri meiro vetor de movimento utilizando um valor obtido pela fixação da diferença do vetor de movimento, quando a diferença do vetor de mo vimentoé determinada como sendo superior ao limite.
[00111] Com isso, o decodificador pode modificar o primeiro vetor de movimento, de modo que a variação do primeiro vetor de movimen to se encontre dentro da faixa predeterminada. De acordo, o decodifi- cador pode reduzir o tamanho do acesso à memória na interprevisão e, dessa forma, a eficiência da codificação é aperfeiçoada.
[00112] Por exemplo, um modo de previsão para o bloco corrente pode ser um modo afim.
[00113] Com isso, o decodificador pode realizar a previsão no bloco corrente para cada sub-bloco, e, dessa forma, a precisão da previsão é aperfeiçoada.
[00114] Por exemplo, o limite pode ser determinado de modo que um tamanho de acesso à memória, em um pior caso, quando o bloco corrente é previsto no modo de previsão, seja inferior a ou igual a um tamanho de acesso à memória, em um pior caso, quando o bloco cor-renteé previsto em um outro modo de previsão.
[00115] Com isso, o decodificador realiza suavemente um processo de transferência pela restrição do tamanho de acesso à memória no qual os dados são transferidos a partir da memória, para a faixa prede terminada e, dessa forma, a eficiência de processamento é aperfeiço ada.
[00116] Por exemplo, o tamanho de acesso à memória, no pior ca so, quando o bloco corrente é previsto no outro modo de previsão, po de ser um tamanho de acesso à memória quando o bloco corrente é previsto de forma bidirecional com base em 8 x 8 pixels, no outro mo do de previsão.
[00117] Em se fazendo isso, por exemplo, quando a previsão é rea lizada sem se utilizar o modo afim, o decodificador gera a imagem de previso para cada bloco a partir de uma imagem decodificada. Quando a previsão bidirecional é realizada para cada bloco de 8 x 8 pixels, uti lizando um modo de previsão além do modo afim, o tamanho de aces soà memória é máximo. De acordo, também no modo afim, o limite de modo afim é determinado para se encontrar dentro do tamanho de acesso à memória. De acordo, o decodificador realiza suavemente um processo de transferência pela restrição do tamanho de acesso à me- mória, no qual os dados são transferidos a partir da memória, para a faixa predeterminada, e, dessa forma, a eficiência do processamento é aperfeiçoada.
[00118] Por exemplo, o limite pode diferir entre um caso no qual o bloco corrente é previsto de forma unidirecional e um caso no qual o bloco corrente é previsto de forma bidirecional.
[00119] Com isso, no decodificador, o tamanho de acesso se torna maior no caso no qual o bloco corrente é previsto de forma bidirecional do que no caso no qual o bloco corrente é previsto de forma unidireci- onal. Dessa forma, a eficiência de codificação é aperfeiçoada pela configuração do limite para um valor inferior para um tamanho de acesso maior.
[00120] Por exemplo, o conjunto de circuitos pode determinar se a diferença do vetor de movimento é maior do que o limite como segue: a diferença de vetor de movimento é determinada como sendo superi or ao limite quando (i) um valor absoluto de um componente horizontal da diferença de vetor de movimento for superior a um primeiro valor de limite ou (ii) um valor absoluto de um componente vertical da diferença de vetor de movimento for superior a um segundo valor de limite; e a diferença de vetor de movimento for determinada como não sendo su-perior ao limite quando (i) o valor absoluto do componente horizontal da diferença de vetor de movimento não for superior ao primeiro valor de limite e (ii) o valor absoluto do componente vertical da diferença de vetor de movimento não for superior ao segundo valor de limite.
[00121] Com isso, o limite é representado pelo primeiro valor que é um componente horizontal (doravante, também referido como o primei ro valor limite) e o segundo valor que é um componente vertical (dora-vante,também referido como o segundo valor limite), e, dessa forma, o codificador pode determinar a variação dos primeiros vetores de mo-vimento de uma forma bidimensional. Adicionalmente, o decodificador determina se a variação dos primeiros vetores de movimento no bloco corrente se encontra dentro da faixa predeterminada, e, dessa forma, é possível se ajustar o primeiro vetor no bloco corrente para um valor adequado. De acordo, a eficiência de processamento é aperfeiçoada.
[00122] Por exemplo, o conjunto de circuitos pode modificar o pri meiro vetor de movimento utilizando o vetor de movimento de base e um valor obtido pela fixação da diferença de vetor e movimento, quan do a diferença de vetor de movimento é determinada como sendo su perior ao limite, e uma nova diferença de vetor de movimento, entre o primeiro vetor de movimento modificado e o vetor de movimento de base, não precisa ser superior ao limite.
[00123] Em se fazendo isso, quando a variação dos primeiros veto res de movimento excede a faixa predeterminada, por exemplo, o de- codificador fixa, ao valor limite, o valor absoluto de um componente excedendo o limite dentre os componentes horizontal e vertical da dife-rença de vetor de movimento. Subsequentemente, por exemplo, o de- codificador pode determinar, como o primeiro vetor de movimento mo-dificado, o valor obtido pela adição da diferença de vetor de movimen to fixada ao vetor de movimento de base. Com isso, a variação dos primeiros vetores de movimento no bloco corrente se encontra na faixa predeterminada. De acordo, a eficiência de processamento é aperfei-çoada.
[00124] Por exemplo, o vetor de movimento de base pode ser uma média de uma pluralidade de primeiros vetores de movimento do bloco corrente, a pluralidade de primeiros vetores de movimento sendo, cada um, o primeiro vetor de movimento.
[00125] Com isso, para cada um dos primeiros vetores de movi mento no bloco corrente, o decodificador pode derivar uma diferença a partir da referência que é a média de todos os primeiros vetores de movimento no bloco corrente.
[00126] Por exemplo, o vetor de movimento de base pode ser um dentre os primeiros vetores de movimento do bloco corrente.
[00127] Com isso, para cada um dos primeiros vetores de movi mento no bloco corrente, o decodificador pode derivar uma diferença a partir da referência que é um dos primeiros vetores de movimento no bloco corrente.
[00128] Por exemplo, o limite pode ser adaptativo a um tamanho do bloco corrente.
[00129] Com isso, no decodificador, o tamanho de acesso à memó ria varia dependendo do tamanho do bloco corrente, e, dessa forma, o limite pode ser reduzido com um aumento no tamanho de acesso à memória. Por exemplo, o limite é reduzido com um aumento no tama nho do bloco corrente. De acordo, o decodificador pode fazer com que o tamanho de acesso à memória se encontre dentro da faixa prede terminada mesmo quando o tamanho do bloco corrente aumenta, e, dessa forma, a eficiência de processamento é aperfeiçoada.
[00130] Por exemplo, o limite pode ser predeterminado, e não pre cisa ser decodificado a partir de uma sequência.
[00131] Com isso, o decodificador pode utilizar o limite predetermi nado, e, dessa forma, não é necessário se codificar o limite cada vez que a previsão é realizada. De acordo, a eficiência de processamento é aperfeiçoada.
[00132] Um método de codificação, de acordo com um aspecto da presente descrição, é um método de codificação para codificação de um vídeo. O método de codificação inclui derivar um vetor de movi mento de base a ser utilizado na previsão de um bloco corrente a ser codificado; derivar um primeiro vetor de movimento diferente do vetor de movimento de base; derivar uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimento de base e o primeiro vetor de movimento; determinar se a diferença de vetor de movimento é superior a um limite; modificar o primeiro vetor de movi-mento quando a diferença do vetor de movimento é determinada como sendo superior ao limite e não modificar o primeiro vetor de movimento quando a diferença do vetor de movimento é determinada como não sendo superior ao limite; e codificar o bloco corrente utilizando o pri meiro vetor de movimento modificado ou o primeiro vetor de movimen tonão modificado.
[00133] Com isso, o método de codificação pode ajustar o vetor de movimento de modo que a variação dos vetores de movimento no blo co corrente, dividido em sub-blocos, se encontre dentro da faixa prede-terminada. O número de pixels a ser referido se torna inferior ao do caso no qual a variação dos vetores de movimento é superior à faixa predeterminada, e, dessa forma, é possível se restringir a quantidade de dados transferidos a partir da memória para a faixa predetermina da. De acordo, o método de codificação pode reduzir o tamanho de acesso à memória na interprevisão, e, dessa forma, a eficiência de co dificação é aperfeiçoada.
[00134] Um método de codificação, de acordo com um aspecto da presente descrição, é um método de decodificação, para decodificação de um vídeo. O método de decodificação inclui derivar um vetor de movimento de base, a ser utilizado na previsão de um bloco corrente a ser decodificado; derivar um primeiro vetor de movimento, diferente do vetor de movimento de base; derivar uma diferença de vetor de movi-mento com base em uma diferença entre o vetor de movimento de ba se e o primeiro vetor de movimento; determinar se a diferença do vetor de movimento é superior a um limite; modificar o primeiro vetor de mo-vimento quando a diferença do vetor de movimento é determinada como sendo superior ao limite, e não modificar o primeiro vetor de mo-vimento quando a diferença de vetor de movimento é determinada como não sendo superior ao limite; e decodificar o bloco corrente utili- zando o primeiro vetor de movimento modificado ou o primeiro vetor de movimento não modificado.
[00135] Com isso, o método de decodificação pode ajustar o vetor de movimento de modo que a variação dos vetores de movimento no bloco corrente, dividido em sub-blocos, se encontre dentro de uma fai xa predeterminada. O número de pixels a ser referido se torna inferior ao caso no qual a variação dos vetores de movimento é superior à fai xa predeterminada, e, dessa forma, é possível se restringir a quantida de de dados transferidos a partir da memória para a faixa predetermi nada. De acordo, o método de decodificação pode reduzir o tamanho de acesso à memória na interprevisão, e, dessa forma, a eficiência de processamento é aperfeiçoada.
[00136] Adicionalmente, esses aspectos gerais e específicos po dem ser implementados utilizando-se um sistema, um dispositivo, um método, um circuito integrado, um programa de computador, um meio de gravação legível por computador não transitório, tal como um CD- ROM, ou qualquer combinação dos sistemas, dispositivos, métodos, circuitos integrados, programas de computador ou meios de gravação.
[00137] Doravante, as modalidades serão descritas com referência aos desenhos. 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 com ponentes, etapas, a relação e ordem das etapas, etc., indicados nas modalidades a seguir são meros exemplos, e não devem limitar o es copo das concretizações.
[00138] As modalidades de um codificador e um decodificador se rão descritas abaixo. As modalidades são exemplos de um codificador e um decodificador aos quais os processos e/ou configurações, apre sentados na descrição dos aspectos da presente descrição, são apli cáveis. Os processos e/ou configurações podem ser implementados também em um codificador e um decodificador diferentes dos referen-tesàs modalidades. Por exemplo, com referência aos processos e/ou configurações, como aplicados às modalidades, qualquer um dos se-guintes pode ser implementado:
[00139] (1) Qualquer um dos componentes do codificador ou do de- codificador, de acordo com as modalidades apresentadas na descrição dos aspectos da presente descrição, podem ser substituídos ou com-binados com outro componente apresentado em outro local na descri ção dos aspectos da presente descrição.
[00140] (2) No codificador ou decodificador, de acordo com as mo dalidades,mudanças discricionárias podem ser realizadas às funções ou processos realizados por um ou mais componentes do codificador ou do decodificador, tal como a adição, substituição, remoção, etc. das funções ou processos. Por exemplo, qualquer função ou processo po de ser substituído ou combinado com outra função ou processo apre sentado em outro local na descrição dos aspectos da presente descri ção.
[00141] (3) Nos métodos implementados pelo codificador ou pelo decodificador, de acordo com as modalidades, 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, qual quer processo no método pode ser substituído ou combinado com ou tro processo apresentado em outro local na descrição dos aspectos da presente descrição.
[00142] (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 as-pectos da presente descrição, podem ser combinados com um com-ponente incluindo uma ou mais funções apresentadas em outro local na descrição dos aspectos da presente descrição, e podem ser combi- nados com um componente que implementa um ou mais processos implementados por um componente apresentado na descrição dos as-pectos da presente descrição.
[00143] (5) Um componente, incluindo uma ou mais funções do co dificador ou do decodificador, de acordo com as modalidades, ou um componente que implemente um ou mais processos do codificador ou do decodificador, de acordo com as modalidades, pode ser combinado ou substituído por um componente apresentado em outro local na des crição dos aspectos da presente descrição, com um componente inclu indo uma ou mais funções apresentadas em outro local na descrição dos aspectos da presente descrição, ou com um componente que im plemente um ou mais processos apresentados em outro local na des crição dos aspectos da presente descrição.
[00144] (6) No métodos implementados pelo codificador ou pelo de- codificador, de acordo com as modalidades, qualquer um dos proces-sosincluídos no método pode ser substituído ou combinado com um processo apresentado em outro local na descrição dos aspectos da presente descrição, ou com qualquer processo correspondente ou equivalente.
[00145] (7) Um ou mais processos incluídos nos métodos imple mentados 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.
[00146] (8) A implementação dos processos e/ou configurações apresentada 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 o decodificador de imagem em movimento nas modalidades.
Modalidade 1 Codificador
[00147] Primeiro, um codificador, de acordo com essa modalidade, será descrito. A Figura 1 é um diagrama em bloco ilustrando uma con-figuração funcional do codificador 100 de acordo com essa modalida de. O codificador 100 é um codificador de vídeo que codifica um vídeo em unidades de um bloco.
[00148] Como ilustrado na Figura 1, o codificador 100 é um apare lho que codifica uma imagem em unidades de um bloco, e inclui um divisor 102, um subtraidor 104, um transformador 106, um quantizador 108, um codificador por entropia 110, um quantizador inverso 112, um transformador inverso 114, um somador 116, uma memória em bloco 118, um filtro em circuito 120, uma memória de quadro 122, um intra-previsor 124, um interprevisor 126 e um controlador de previsão 128.
[00149] O codificador 100 é implementado como, por exemplo, um processador genérico e uma memória. Nesse caso, quando um pro-grama de software, armazenado na memória, é executado pelo pro-cessador, o processador funciona como um divisor 102, um subtraidor 104, um transformador 106, um quantizador 108, um codificador por entropia 110, um quantizador inverso 112, um transformador inverso 114, um somador 116, um filtro de circuito 120, um intraprevisor 124, um interprevisor 126 e um controlador de previsão 128. Alternativa mente, o codificador 100 pode ser implementado como um ou mais circuitos eletrônicos dedicados correspondendo ao divisor 102, sub- traidor 104, transformador 106, quantizador 108, codificador por entro pia 110, quantizador inverso 112, transformador inverso 114, somador 116, filtro de circuito 120, intraprevisor 124, interprevisor 126 e contro lador de previsão 128.
[00150] Doravante, um fluxo geral de processos realizados pelo co-dificador 100 é descrito, e, então, cada um dos elementos constituintes incluídos no codificador 100 será descrito.
Fluxo Geral do Processo de Codificação
[00151] A Figura 2 é um fluxograma indicando um exemplo de um processo de codificação geral realizado pelo codificador 100.
[00152] 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 (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 for mato 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 reali za, para cada um dentre a pluralidade de blocos, as Etapas Sa_3 a Sa_9 para o bloco (que é um bloco corrente a ser codificado).
[00153] 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 corrente a ser codificado (também referido como um bloco corrente) (Etapa Sa_3).
[00154] A seguir, o subtraidor 104 gera uma diferença entre o bloco corrente e um bloco de previsão como um residual de previsão (tam bém referido como um bloco de diferença) (Etapa Sa_4).
[00155] A seguir, o transformador 106 transforma o bloco de dife rença e o quantizador 108 quantiza o resultado, para gerar uma plura lidade 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.
[00156] A seguir, o codificador por entropia 110 codifica (especifi-camente, 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 co-dificadotambém é referido como uma sequência de bits codificada, uma sequência de bits comprimida ou uma sequência.
[00157] 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 residuais de previsão (isso é, um bloco de diferença) (Etapa Sa_7).
[00158] A seguir, o somador 116 adiciona o bloco de previsão ao bloco de diferença restaurado para reconstruir o bloco corrente como uma imagem reconstruída (também referido como um bloco reconstru ído ou um bloco de imagem decodificada) (Etapa Sa_8). Dessa forma, a imagem reconstruída é gerada.
[00159] Quando a imagem reconstruída é gerada, o filtro de circuito 120 realiza a filtragem da imagem reconstruída como necessário (Eta pa Sa_9).
[00160] O codificador 100, então, determina se a codificação de to da a imagem foi terminada (Etapa Sa_10). Quando se determina que a codificação não foi terminada ainda (Não na Etapa Sa_10), os proces sos da Etapa Sa_2 são executados repetidamente.
[00161] Apesar de o codificador 100 selecionar um padrão de divi sã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 corres pondente dentre uma pluralidade de padrões de divisão. Nesse caso, o codificador 100 pode avaliar um custo para cada um dentre a plurali dade 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 divi são que resulta no custo mais baixo como um sinal codificado que é finalmente enviado.
[00162] Alternativamente, os processos nas Etapas Sa_1 a Sa_10 podem ser realizados sequencialmente pelo codificador 100, ou dois ou mais dos processos podem ser realizados em paralelo ou podem ser reordenados.
Divisor
[00163] O divisor 102 divide cada uma das imagens incluídas em um vídeo de entrada em uma pluralidade de blocos, e envia cada blo co para o subtraidor 104. Por exemplo, o divisor 102 primeiro divide uma imagem em blocos de um tamanho fixo (por exemplo, 128 x 128). O bloco de tamanho fixo também é referido como uma unidade de ár vore de codificação (CTU). O divisor 102, então, divide cada um dos blocos de tamanho fixo em blocos de tamanhos variáveis (por exem plo, 64 x 64 ou menor), com base na divisão de bloco quadtree e/ou de árvore binária recursiva. 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 montagem, não há necessidade de se di ferenciar entre CU, PU e TU; todos ou alguns dos blocos em uma ima gem podem ser processados em unidades de uma CU, uma PU ou uma TU.
[00164] A Figura 3 é um diagrama ilustrando um exemplo de divisão de bloco de acordo com essa modalidade. Na Figura 3, as linhas sóli das representam limites de bloco dos blocos divididos por divisão de bloco quadtree, e as linhas tracejadas representam os limites de bloco de blocos divididos por divisão de bloco de árvore binária.
[00165] Aqui, o bloco 10 é um bloco quadrado possuindo 128 x 128 pixels (bloco de 128 x 128). Esse bloco de 128 x 128 10 é primeira mente dividido em quatro blocos quadrados de 64 x 64 (divisão de blo co quadtree).
[00166] O bloco de 64 x 64 superior esquerdo é adicionalmente ver- ticalmente dividido em dois blocos retangulares de 32 x 64, e o bloco de 32 x 64 esquerdo é adicionalmente dividido verticalmente em dois blocos retangulares de 16 x 64 (divisão de bloco de árvore binária). Como resultado disso, o bloco de 64 x 64 superior esquerdo é dividido em dois blocos de 16 x 64 11 e 12 e um bloco de 32 x 64 13.
[00167] O bloco de 64 x 64 superior direito é horizontalmente dividi do em dois blocos retangulares de 64 x 32 14 e 15 (divisão de bloco de árvore binária).
[00168] O bloco de 64 x 64 inferior esquerdo é primeiramente divi dido em quatro blocos quadrados de 32 x 32 (divisão de bloco qua dtree). O bloco superior esquerdo e o bloco inferior direito, dentre os quatro blocos de 32 x 32, são divididos adicionalmente. O bloco supe rior esquerdo de 32 x 32 é verticalmente dividido em dois blocos re tangulares 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 é dividido horizon talmente 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 é divi dido em um 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.
[00169] O bloco inferior direito de 64 x 64 23 não é dividido.
[00170] Como descrito acima, na Figura 3, o bloco 10 é dividido em treze blocos de tamanho variável 11 a 23 com base na divisão de blo co de árvore binária e quadtree recursiva. Esse tipo de divisão também é referido como divisão quadtree mais árvore binária (QTBT).
[00171] Deve-se notar que, na Figura 3, um bloco é dividido em quatro ou dois blocos (divisão de bloco quadtree ou á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 incluindo 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
[00172] Uma imagem pode ser configurada em unidades de uma ou mais fatias ou tiles a fim de decodificar a imagem em paralelo. A ima gem configurada em unidades de uma ou mais fatias ou tiles pode ser configurada pelo divisor 102.
[00173] 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 árvo re de codificação sucessivas (CTU).
[00174] A Figura 4A é um diagrama 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 obte-ní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 digitali zação raster. Uma fatia inclui informação de cabeçalho e dados codifi cados. As características da fatia podem ser descritas na informação de cabeçalho. As características incluem um endereço CTU de uma CTU superior na fatia, um tipo de fatia, etc.
[00175] 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.
[00176] A Figura 4B é um diagrama 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 Figu ra 4B, a ordem de processamento das CTUs incluídas no tile 1 é a or dem que começa a partir do lado esquerdo da primeira coluna do tile 1 na direção da extremidade direita da primeira coluna do tile 1 e, então, começa a partir da extremidade esquerda da segunda coluna do tile 1 na direção da extremidade direita da segunda coluna do tile 1.
[00177] Deve-se notar que um tile pode incluir uma ou mais fatias, e uma fatia pode incluir um ou mais tiles.
Subtraidor
[00178] O subtraidor 104 subtrai um sinal de previsão (amostra de previsão que é registrada a partir do controlador de previsão 128 indi-cado abaixo) a partir de um sinal original (amostra original) em unida des de um bloco registrado a partir do divisor 102 e dividido pelo divi sor 102. Em outras palavras, o subtraidor 104 calcula os erros de pre visão (também referidos como residuais) de um bloco a ser codificado (doravante também referido como um bloco corrente). O subtraidor 104, então, envia os erros de previsão calculados (residuais) para o transformador 106.
[00179] 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
[00180] 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 quantiza- dor 108. Mais especificamente, o transformador 106 aplica, por exem plo, uma transformação de cosseno discreta predefinida (DCT) ou transformação de seno discreta (DST) em erros de previsão em domí nio espacial.
[00181] 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 erros de previsão de transformação em coe ficientes 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 de múltiplos núcleos explícitos (EMT) ou múltiplas transformações adap- tativas (AMT).
[00182] 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 de base de transformação para cada tipo de transforma ção. Na Figura 5A, N indica o número de pixels de entrada. Por exem plo, a seleção de um tipo de transformação dentre a pluralidade de ti pos de transformação pode depender de um tipo de previsão (uma dentre a intraprevisão e a interprevisão) e pode depender de um modo de intraprevisão.
[00183] A informação que indica se se aplica tal EMT ou AMT (refe rida como, por exemplo, um indicador EMT ou um indicador AMT) e a informação que indica o tipo de transformação selecionado é normal-mente 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 se quência de bit, nível de imagem, nível de fatia, nível de tile ou nível de CTU).
[00184] Adicionalmente, o transformador 106 pode transformar no-vamente os coeficientes de transformação (resultado da transforma ção). Tal nova transformação também é referida como transformação secundária adaptativa (AST) ou transformação secundária não sepa rável (NSST). Por exemplo, o transformador 106 realiza a nova trans formação em unidades de um sub-bloco (por exemplo, o sub-bloco de 4 x 4) incluído em um bloco de coeficiente de transformação que cor responde a um erro de intraprevisão. A informação que indica se se aplica NSST e a informação relacionada com uma matriz de transfor mação para uso em NSST é normalmente sinalizada no nível de CU. Deve-se notar que a sinalização de tal informação não precisa, neces sariamente, ser realizada no nível de CU, e pode ser realizada em ou troní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).
[00185] O transformador 106 pode empregar 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 entrada. Uma transformação não separável é um método de reali zação de uma transformação coletiva na qual duas ou mais dimensões nas entradas multidimensionais são coletivamente consideradas uma unidade dimensão.
[00186] 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 é conside rado um único conjunto incluindo dezesseis elementos, e a transfor mação aplica uma matriz de transformação de 16 x 16 ao conjunto.
[00187] Em outro exemplo de uma transformação não separável, um bloco de entrada de 4 x 4 é considerado um único conjunto incluin- do dezesseis elementos e, então, uma transformação (transformação givens de hipercubo), na qual a revolução givens, que é realizada no conjunto várias vezes, pode ser realizada.
[00188] 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 trans-formações de variação espacial (SVT). Em SVT, como ilustrado na Fi-gura 5B, as CUs são divididas em duas regiões iguais, horizontalmen te ou verticalmente, e apenas uma das regiões é transformada no do mínio de frequência. Um tipo de base de transformação pode ser con figurado para cada região. Por exemplo, DST7 e DST8 são utilizados. Nesse exemplo, apenas uma dessas duas regiões na CU é transfor mada, e a outra não é transformada. No entanto, ambas essas 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 de CU. Deve-se notar que SVT também é referida como transformação de sub-bloco (SBT).
Quantizador
[00189] 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 determina da, os coeficientes de transformação do bloco corrente, e quantiza os coeficientes de transformação digitalizados com base nos parâmetros de quantização (QP) correspondendo aos coeficientes de transforma ção. O quantizador 108, então, envia os coeficientes de transformação quantizados (doravante também referidos como coeficientes quantiza- dos) do bloco corrente para o codificador por entropia 110 e o quanti- zador inverso 112.
[00190] Uma ordem de digitalização determinada é uma ordem de coeficientes de transformação de quantização/quantização inversa. Por exemplo, uma ordem de digitalização determinada é definida como a ordem ascendente de frequência (da frequência baixa para alta) ou ordem descendente de frequência (da frequência alta para a baixa).
[00191] Um parâmetro de quantização (QP) é um parâmetro que define uma etapa de quantização (largura de quantização). Por exem plo, 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.
[00192] Adicionalmente, uma matriz de quantização pode ser utili zada para a quantização. Por exemplo, vários tipos de matrizes de quantização podem ser utilizados de forma correspondente aos tama nhos de transformação de frequência, tal como 4 x 4 e 8 x 8, modos de previsão, tal como a intraprevisão e a interprevisão, e componentes de pixel, tal como componentes de pixel de luminescência e crominância. Deve-se notar que quantização significa valores de digitalização amos-trados em intervalos predeterminados de forma correspondente aos níveis predeterminados. Nesse campo técnico, a quantização pode ser representada como outras expressões, tal como arredondamento e escalonamento.
[00193] Os métodos utilizando matrizes de quantização incluem um método utilizando uma matriz de quantização que foi determinado dire-tamente 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 ca-racterísticas de uma imagem pode ser determinada pela configuração direta de uma matriz de quantização. Esse caso, no entanto, apresen ta uma desvantagem de aumentar uma quantidade de codificação pa ra codificar a matriz de quantização.
[00194] Existe um método de quantização de um coeficiente de alta frequência e um coeficiente de baixa frequência sem a utilização de uma matriz de quantização. Deve-se notar que esse método é equiva lente a um método utilizando uma matriz de quantização (matriz plana) cujos coeficientes apresentam o mesmo valor.
[00195] A matriz de quantização pode ser especificada utilizando, por exemplo, um conjunto de parâmetros de sequência (SPS) ou um conjunto de parâmetros de imagem (PPS). O SPS 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 SPS e PPS pode ser simplesmente referido como um conjunto de parâmetros.
Codificador por Entropia
[00196] O codificador por entropia 110 gera um sinal codificado (sequência de bits codificada) com base nos coeficientes quantizados que foram registrados a partir do quantizador 108. Mais especifica mente, o codificador por entropia 110, por exemplo, binariza os coefi cientes quantizados, e codifica de forma aritmética o sinal binário, e envia uma sequência de bits comprimida.
Quantizador Inverso
[00197] 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 coefi cientes quantizados do bloco corrente. O quantizador inverso 112, en tão, envia os coeficientes de transformação quantizados inversos do bloco corrente para o transformador inverso 114.
Transformador Inverso
[00198] O transformador inverso 114 restaura os erros de previsão (residuais) 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 corrente pela aplicação de uma transformação in versa 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.
[00199] Deve-se notar que visto que a informação é perdida na quantização, os erros de previsão restaurados não combinam com os erros de previsão calculados pelo subtraidor 104. Em outras palavras, os erros de previsão restaurados normalmente incluem erros de quan- tização.
Somador
[00200] O somador 116 reconstrói o bloco corrente pela adição de erros de previsão que foram registrados a partir do transformador in verso 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 re construído para a memória de bloco 118 e filtro de circuito 120. Um bloco reconstruído também é referido como um bloco decodificado lo cal.
Memória de Bloco
[00201] A memória de bloco 118 é, por exemplo, o armazenador para armazenar blocos em uma imagem a ser codificada (doravante referida como uma imagem corrente), que é referida na intraprevisão. Mais especificamente, a memória de bloco 118 armazena os blocos reconstruídos enviados a partir do somador 116.
Memória de Quadro
[00202] 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 temporário de quadro. Mais especificamente, a memória de quadro 122 armazena os blocos re-construídos filtrados pelo filtro de circuito 120.
Filtro de Circuito
[00203] O filtro de circuito 120 aplica um filtro de circuito aos blocos reconstruídos pelo somador 116, e envia os blocos reconstruídos fil-trados 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).
[00204] Em um ALF, um filtro de erro de quadrado médio, para re moçã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 corrente.
[00205] Mais especificamente, cada sub-bloco (por exemplo, cada sub-bloco de 2 x 2) é categorizado em uma dentre uma pluralidade de classes (por exemplo, 15 ou 25 classes). A classificação do sub-bloco é baseada na direcionalidade e atividade do gradiente. Por exemplo, o índice de classificação C (por exemplo, C = 5D + A) é derivado com base na direcionalidade de gradiente D (por exemplo, 0 a 2 ou 0 a 4) e na atividade de gradiente A (por exemplo, 0 a 4). Então, com base no índice de classificação C, cada sub-bloco é categorizado em uma den tre uma pluralidade de classes.
[00206] Por exemplo, a direcionalidade do gradiente D é calculada pela comparação dos gradientes de uma pluralidade de direções (por exemplo, as direções horizontal, vertical e duas diagonais). Ademais, por exemplo, a atividade de gradiente A é calculada pela adição de gradientes de uma pluralidade de direções e quantização do resultado da adição.
[00207] O filtro a ser utilizado para cada sub-bloco é determinado dentre a pluralidade de filtros com base no resultado de tal categoriza- ção.
[00208] 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 ilus tram 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 indicando o for mato do filtro é normalmente sinalizada no nível de imagem. Deve-se notar que a sinalização de tal informação, indicando o formato do filtro, não precisa, necessariamente, ser realizada no nível da 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).
[00209] O LIGAR ou DESLIGAR do ALF é determinado, por exem plo, no nível de imagem ou nível de CU. Por exemplo, a decisão de se aplica o ALF à luminescência pode ser tomada no nível de imagem. A informação indicando 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 indicando 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).
[00210] O conjunto de coeficientes para a pluralidade de filtros se-lecionáveis (por exemplo, de quinze até vinte e cinco filtros) é normal-mente sinalizado no nível de imagem. Deve-se notar que a sinalização do conjunto de coeficientes não precisa, necessariamente, ser realiza da 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
[00211] Em um filtro de desbloqueio, o filtro de circuito 120 realiza um processo de filtragem em um limite de bloco em uma imagem re- construída de modo a reduzir a distorção que ocorre no limite do bloco.
[00212] 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.
[00213] O filtro de circuito 120 inclui um determinador de limite 1201; um determinador de filtro 1203; um executor de filtragem 1205; um determinador de processo 1208; um determinador de característica de filtro 1207; e comutadores 1202, 1204 e 1206.
[00214] O determinador de limite 1201 determina se um pixel a ser filtrado para desbloqueio (isso é, um pixel corrente) está presente em trono de um limite de bloco. O determinador de limite 1201, então, en via o resultado da determinação para o comutador 1202 e para o de terminador de processamento 1208.
[00215] No caso no qual o determinador de limite 1201 determinou que um pixel corrente 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 determi nou que nenhum pixel corrente está presente em torno de um limite de bloco, o comutador 1202 envia uma imagem não filtrada para o comu tador 1206.
[00216] O determinador de filtro 1203 determina se realiza a filtra gem de desbloqueio do pixel corrente, com base no valor de pixel de pelo menos um pixel circundante localizado em torno do pixel corrente. O determinador de filtro 1203, então, envia o resultado da determina ção para o comutador 1204 e para o determinador de processamento 1208.
[00217] No caso no qual o determinador de filtro 1203 determinou a realização da filtragem de desbloqueio do pixel corrente, 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 determi- nador de filtro 1203 determinou não realizar a filtragem de desbloqueio do pixel corrente, o comutador 1204 envia a imagem não filtrada obtida através do comutador 1202 para o comutador 1206.
[00218] 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 corrente, 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 comuta dor 1206.
[00219] 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.
[00220] O determinador de processamento 1208 controla o comu tador 1206 com base nos resultados das determinações realizadas pelo determinador de limite 1201 e determinador de filtro 1203. Em ou tras 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 determinou que o pixel corrente está pre-sente em torno do limite de bloco e o determinador de filtro 1203 de-terminou a realização da filtragem de desbloqueio do pixel corrente. Adicionalmente, além do caso acima, o determinador de processamen to 1208 faz com que o comutador 1206 envie o pixel que não foi filtra do por desbloqueio. Uma imagem filtrada é enviada do comutador 1206 pela repetição do envio de um pixel dessa forma.
[00221] A Figura 8 é um diagrama indicando um exemplo de um filtro de desbloqueio possuindo uma característica de filtragem simétri ca com relação a um limite de bloco.
[00222] Em um processo de filtro de desbloqueio, um dos dois fil tros 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 co mo ilustrado na Figura 8, os valores de pixel do pixel respectivo q0 a q2 são alterados para os valores de pixel q'0 a q'2 pela realização das computações de acordo com as expressões abaixo.
[00223] 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. Adicional mente, no lado direito de cada uma das expressões, os coeficientes que são multiplicados por valores de pixel respectivos dos pixels a se rem utilizados para a filtragem de desbloqueio são coeficientes de fil tro.
[00224] Adicionalmente, na filtragem de desbloqueio, a fixação po de ser realizada de modo que os valores de pixel calculados não mu dematravés de um valor limite. No processo de fixação, os valores de pixel calculados de acordo com as expressões acima são fixados a um valor obtido de acordo com "um valor de pixel de pré-computação +/- 2 x um valor limite" utilizando o valor limite determinado com base em um parâmetro de quantização. Dessa forma, é possível se evitar a su- avização excessiva.
[00225] A Figura 9 é um diagrama para ilustrar um limite de bloco no qual um processo de filtro de desbloqueio é realizado. A Figura 10 é um diagrama indicando exemplos de valores Bs.
[00226] O limite de bloco no qual o processo de filtro de desblo queioé realizado é, por exemplo, um limite entre as unidades de pre- visão (PU) possuindo blocos de pixel de 8 x 8, como ilustrado na Figu ra 9, ou um limite entre as unidades de transformação (TU). O proces so de filtro de desbloqueio é 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 bloco Q ilustrados na Figura 9.
[00227] De acordo com os valores Bs na Figura 10, se se realiza os processos de filtro de desbloqueio dos limites de bloco pertencentes à mesma imagem utilizando-se intensidades diferentes, é determinado. 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 des-bloqueio para um sinal de luminescência é realizado quando um valor Bs é igual a 1 ou mais e uma condição determinada é satisfeita. Deve- se notar que as condições para determinar os valores Bs não são limi-tadasà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)
[00228] A Figura 11 é um diagrama ilustrando um exemplo de um processo realizado pelo processador de previsão do codificador 100. Deve-se notar 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.
[00229] O processador de previsão gera uma imagem de previsão de um bloco corrente (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 intrapre- visão ou um sinal de interprevisão. Especificamente, o processador de previsão gera a imagem de previsão do bloco corrente 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 coeficientes, restauração de um bloco de diferença, e geração de um bloco de imagem decodificada.
[00230] A imagem reconstruída pode ser, por exemplo, uma ima gem em uma imagem de referência, ou uma imagem de um bloco co dificado em uma imagem corrente que é a imagem incluindo o bloco corrente. O bloco codificado na imagem corrente é, por exemplo, um bloco vizinho do bloco corrente.
[00231] A Figura 12 é um diagrama ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador 100.
[00232] 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 ao terceiro métodos pode ser um método de interprevisão, um método de intraprevisão, ou outro método de previ são. A imagem reconstruída descrita acima pode ser utilizada nesses métodos de previsão.
[00233] 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 previ são, isso é, a seleção de um método ou 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 feita com base em um parâmetro que é utilizado em um processo de codificação. O codificador 100 pode transformar a informação para identificação de uma imagem de previsão selecionada, um método, ou um modo em um sinal codificado (também referido como uma sequên cia de bits codificada). A informação pode ser, por exemplo, um indi cador 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 pre visão serem geradas utilizando-se os métodos respectivos. No entan to, o processador de previsão pode selecionar um método ou um mo do 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 ge rar uma imagem de previsão de acordo com o método ou modo sele cionado.
[00234] Por exemplo, o primeiro método e o segundo método po dem ser intraprevisão e interprevisão, respectivamente, e o processa dor de previsão pode selecionar uma imagem de previsão final para um bloco corrente a partir das imagens de previsão geradas de acordo com os métodos de previsão.
[00235] A Figura 13 é um diagrama ilustrando outro exemplo de um processo realizado pelo processador de previsão do codificador 100.
[00236] 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 é referi da como uma imagem de intraprevisão, e a imagem de previsão gera da pela interprevisão também é referida como uma imagem de inter- previsão.
[00237] 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 pro- cessador de previsão calcula o custo C para cada uma dentre a ima gem de intraprevisão e a imagem de interprevisão. O custo C é calcu lado 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 das diferenças absolutas entre o valor de pixel de um bloco corrente e o valor de pixel de uma imagem de previ são. Adicionalmente, R indica uma quantidade de codificação prevista de uma imagem de previsão, especificamente, a quantidade de codifi cação necessária para 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 multiplicador Lagrange.
[00238] O processador de previsão, então, seleciona a imagem de previsão para a qual o menor custo C foi calculado dentre a imagem de intraprevisão e a imagem de interprevisão, como a imagem de pre visão final para o bloco corrente (Etapa Sd_3). Em outras palavras, o método de previsão ou o modo de geração da imagem de previsão para o bloco corrente é selecionado.
Intraprevisor
[00239] O intraprevisor 124 gera um sinal de previsão (sinal de in- traprevisão) pela realização da intraprevisão (também referida como previsão intraquadro) do bloco corrente por referência a um bloco ou blocos na imagem corrente e armazenada na memória de bloco 118. Mais especificamente, o intraprevisor 124 gera um sinal de intraprevi- sã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 ao bloco corrente, e, então, envia o sinal de intraprevi- são para o controlador de previsão 128.
[00240] Por exemplo, o intraprevisor 124 realiza a intraprevisão pela utilização de um modo dentre uma pluralidade de modos de intraprevi- são que foram predefinidos. 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.
[00241] 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 de finidos em H.265/padrão de codificação de vídeo de alta eficiência (HEVC).
[00242] A pluralidade de modos de previsão direcional inclui, por exemplo, os trinta e três modos de previsão direcional definidos no pa-drão H.265/HEVC. Deve-se notar que a pluralidade de modos de pre visã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 dire cional (para um total de sessenta e cinco modos de previsão direcio nal). A Figura 14 é um diagrama ilustrando sessenta e sete modos de intraprevisão no total utilizados na intraprevisão (dois modos de previ sã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 pa drã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 es tão ilustrados na Figura 14).
[00243] Em vários tipos de exemplos de montagem, um bloco de luminescência pode ser referido como intraprevisão de um bloco de crominância. Em outras palavras, um componente de crominância do bloco corrente pode ser previsto com base em um componente de lu-minescênciado bloco corrente. 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 exem plo, um modo CCLM) pode ser adicionado como um dos modos de intraprevisão aos blocos de crominância.
[00244] O intraprevisor 124 pode corrigir os valores de pixel intra- previstos com base nos gradientes de pixel de referência horizon- tal/vertical. A intraprevisão acompanhada por esse tipo de correção também é referida como uma combinação de intraprevisão dependen te de posição (PDPC). A informação que indica se aplica PDPC (refe rido como, por exemplo, um indicador PDPC) é normalmente sinaliza da 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
[00245] O interprevisor 126 gera um sinal de previsão (sinal de in- terprevisão) pela realização da interprevisão (também referida como previsão interquadro) do bloco corrente por referência a um bloco ou blocos em uma imagem de referência, que é diferente da imagem cor-rente e é armazenada na memória de quadro 122. A interprevisão é realizada em unidades de um bloco corrente ou de um sub-bloco cor rente (por exemplo, um bloco de 4 x 4) no bloco corrente. Por exem plo, o interprevisor 126 realiza a estimativa de movimento em uma imagem de referência para o bloco corrente ou o sub-bloco corrente, e descobre um bloco de referência ou um sub-bloco que melhor combina com o bloco corrente ou o sub-bloco corrente. O interprevisor 126, en tão, obtém a informação de movimento (por exemplo, um vetor de mo vimento) que compensa um movimento ou uma mudança do bloco de referência ou do sub-bloco para o bloco corrente ou o sub-bloco. O interprevisor 126 gera um sinal de interprevisão do bloco corrente ou do sub-bloco pela realização da compensação de movimento (ou pre visão de movimento) com base na informação de movimento. O inter previsor 126 envia o sinal de interprevisão gerado para o controlador de previsão 128.
[00246] A informação de movimento utilizada na compensação de movimento pode ser sinalizada como sinais de interprevisão de 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
[00247] A Figura 15 é um fluxograma ilustrando um fluxo de pro cessamento básico de interprevisão.
[00248] 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 en tre um bloco corrente e uma imagem de previsão como um residual de previsão (Etapa Se_4).
[00249] 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 corrente (Etapas Se_1 e Se_2) e com pensaçã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, adicional mente, pelo menos um candidato a MV a partir de pelo menos um candidato a MV, e determinar o pelo menos um candidato a MV sele cionado como o MV para o bloco corrente. Alternativamente, o inter previsor 126 pode determinar o MV para o bloco corrente pela reali zação da estimativa em uma região de imagem de referência especi ficada 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ên cia pode ser referida como a estimativa de movimento.
[00250] Adicionalmente, apesar de as Etapas Se_1 a Se_3 serem realizadas pelo interprevisor 126 no exemplo descrito acima, um pro-cesso 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
[00251] A Figura 16 é um fluxograma ilustrando um exemplo de de-rivação dos vetores de movimento.
[00252] O interprevisor 126 deriva um MV de um bloco corrente em um modo de codificação de informação de movimento (por exemplo, um MV). Nesse caso, por exemplo, a informação de movimento é codi ficada como um parâmetro de previsão e é sinalizada. Em outras pala vras, a informação de movimento codificada é incluída em um sinal codificado (também referido como uma sequência de bits codificada).
[00253] Alternativamente, o interprevisor 126 deriva um MV em um modo no qual a informação de movimento não está codificada. Nesse caso, nenhuma informação de movimento é incluída em um sinal codi ficado.
[00254] Aqui, os modos de derivação MV incluem um intermodo normal, um modo de mistura, um modo FRUC, um modo afim, etc. que serão descritos posteriormente. Os modos nos quais a informa ção de movimento é codificada, dentre os modos, incluem o intermo- do normal, o modo de mistura, o modo afim (especificamente, um in- termodo 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 tam bé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 inter previsor 126 seleciona um modo para derivar um MV do bloco corren te a partir dos modos, e deriva o MV do bloco corrente utilizando o modo selecionado.
[00255] A Figura 17 é um fluxograma ilustrando outro exemplo de derivação de vetores de movimento.
[00256] O interprevisor 126 deriva um MV de um bloco corrente em um modo no qual uma diferença MV é codificada. Nesse caso, por exemplo, a diferença de MV é codificada como um parâmetro de pre visão, e é sinalizada. Em outras palavras, a diferença de MV codifica daé incluída em um sinal codificado. A diferença de MV é a diferença entre o MV do bloco corrente e o previsor de MV.
[00257] 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 codificada é incluída em um sinal codifica do.
[00258] Aqui, como descrito acima, os modos de derivação de MV incluem o intermodo normal, o modo de mistura, o modo FRUC, o mo do afim, etc., que serão descritos posteriormente. Os modos nos quais uma diferença de MV é codificada dentre os modos inclui o intermodo normal, o modo afim (especificamente, o intermodo afim), etc. Os mo dos 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 corrente a partir da pluralidade de modos, e deriva o MV do bloco corrente utilizando o modo selecionado.
Fluxo de Derivação de Vetor de Movimento
[00259] 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 movi mento é 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 serão descritos em detalhes posteriormente. Simplesmente, o modo de mis-turaé um modo para derivar um MV de um bloco corrente pela sele ção de um vetor de movimento a partir de um bloco circundante codi ficado, e o modo FRUC é um modo para derivar um MV de um bloco corrente pela realização da estimativa entre as regiões codificadas. O modo afim é um modo para derivar, como um MV de um bloco cor rente, um vetor de movimento de cada um dentre uma pluralidade de sub-blocos incluídos no bloco corrente, assumindo-se a transformação afim.
[00260] Mais especificamente, 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 de modo de interprevisão indica 1 (1 em Sf_1), o interprevisor 126 deriva um vetor de movimento utilizando o modo FRUC (Sf_3). Quan do a informação de modo de interprevisão indica 2 (2 em Sf_1), o in terprevisor 126 deriva um vetor de movimento utilizando o modo afim (especificamente, o modo de mistura afim) (Sf_4). Quando a informa ção de modo de interprevisão indica 3 (3 em Sf_1), o interprevisor 126 deriva um vetor de movimento utilizando um modo no qual uma dife rença de MV é codificada (por exemplo, um intermodo normal (Sf_5)).
Derivação de MV > Intermodo Normal
[00261] O intermodo normal é um modo de interprevisão para deri var um MV de um bloco corrente descobrindo-se um bloco similar à imagem do bloco corrente a partir de uma região de imagem de refe rência especificada por um candidato a MV. Nesse intermodo normal, uma diferença de MV é codificada.
[00262] A Figura 19 é um fluxograma ilustrando um exemplo de in- terprevisão no intermodo normal.
[00263] Primeiro, o interprevisor 126 obtém uma pluralidade de candidatos a MV para um bloco corrente com base na informação, tal como os MVs de uma pluralidade de blocos codificados temporal ou espacialmente, que cercam o bloco corrente (Etapa Sg_1). Em outras palavras, o interprevisor 126 gera uma lista de candidatos a MV.
[00264] A seguir, o interprevisor 126 extrai N (um inteiro igual a 2 ou mais) candidatos a MV a partir da pluralidade de candidatos a MV ob tidos na Etapa Sg_1, como candidatos a previsor de vetor de movi-mento(também referidos como candidatos a previsor de MV), de acordo com uma ordem de prioridade predeterminada (Etapa Sg_2). Deve-se notar que a ordem de prioridade é determinada antecipada mente para cada um dos N candidatos a MV.
[00265] A seguir, o interprevisor 126 seleciona um candidato a pre visor de vetor de movimento a partir de N candidatos a previsor de ve tor de movimento, como o previsor de vetor de movimento (também referido como um previsor de MV) do bloco corrente (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 identi ficar o previsor de vetor de movimento selecionado. Deve-se notar que a sequência é um sinal codificado ou uma sequência de bits codificada como descrito acima.
[00266] A seguir, o interprevisor 126 deriva um MV de um bloco cor rente 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. É notado que a ima gem de referência codificada é uma imagem incluindo uma pluralidade de blocos que foram reconstruídos depois de serem codificados.
[00267] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco corrente pela realização da compensação de movimento do bloco corrente 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.
[00268] Adicionalmente, a informação que indica o modo de inter- previsão (intermodo normal no exemplo acima) utilizado para gerar a imagem de previsão é, por exemplo, codificada como um parâmetro de previsão.
[00269] Deve-se notar 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 podem ser aplicados a processos relacionados com a lista para uso em outro mo do. Os processos relacionados com a lista de candidatos a MV inclu em, por exemplo, a extração ou seleção de um candidato a MV 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
[00270] O modo de mistura é um modo de interprevisão para sele cionar um candidato a MV de uma lista de candidatos a MV como um MV de um bloco corrente, derivando, assim, o MV.
[00271] A Figura 20 é um fluxograma ilustrando um exemplo de in- terprevisão no modo de mistura.
[00272] Primeiro, o interprevisor 126 obtém uma pluralidade de candidatos a MV para um bloco corrente com base na informação, tal como MVs dentre uma pluralidade de blocos codificados temporal ou espacialmente, que cercam o bloco corrente (Etapa Sh_1). Em outras palavras, o interprevisor 126 gera uma lista de candidatos a MV.
[00273] A seguir, o interprevisor 126 seleciona um candidato a MV da pluralidade de candidatos a MV obtidos na Etapa Sh_1, derivando, assim, um MV do bloco corrente (Etapa Sh_2). Nesse momento, o in terprevisor 126 codifica, em uma sequência, a informação de seleção de MV para identificar o candidato a MV selecionado.
[00274] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco corrente pela realização da compensação de movimento do bloco corrente utilizando o MV derivado e a imagem de referência codificada (Etapa Sh_3).
[00275] Adicionalmente, a informação que indica o modo de inter- previsão (modo de mistura no exemplo acima), utilizada para gerar a imagem de previsão e incluída no sinal codificado é, por exemplo, co-dificada como um parâmetro de previsão.
[00276] A Figura 21 é um diagrama para ilustrar um exemplo de um processo de derivação de vetor de movimento de uma imagem corren te no modo de mistura.
[00277] Primeiro, uma lista de candidatos a MV, na qual os candida tos a previsor de MV são registrados, é gerada. Exemplos dos candi datos a previsor de MV incluem previsores de MV espacialmente vizi nhos que são MVs de uma pluralidade de blocos codificados localiza dos espacialmente, cercando um bloco corrente; previsores de MV temporalmente vizinhos, que são MVs de blocos circundantes nos quais a posição de um bloco corrente 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 espa cialmente vizinho e o MV de um previsor de MV temporalmente vizi nho; e um previsor de MV zero que é um MV possuindo um valor igual a zero.
[00278] A seguir, um previsor de MV é selecionado a partir de uma pluralidade de previsores de MV registrados em uma lista de previso- res de MV, e o previsor de MV selecionado é determinado como o MV de um bloco corrente.
[00279] Adicionalmente, o codificador de comprimento variável des creve e codifica, em uma sequência, merge_idx que é um sinal que indica qual previsor de MV foi selecionado.
[00280] Deve-se notar 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 pos samnão ser incluídos, ou que um ou mais previsores de MV, além dos tipos de previsores de MV no diagrama, sejam incluídos.
[00281] Um MV final pode ser determinado pela realização de um processo de atualização de vetor de movimento dinâmico (DMVR) a ser descrito posteriormente utilizando o MV do bloco corrente derivado no modo de mistura.
[00282] Deve-se notar que os candidatos a previsor 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. Adi-cionalmente, merge_idx é a informação de seleção de MV.
Derivação de MV > Modo FRUC
[00283] 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 pa drão H.265/HEVC pode ser utilizado. Adicionalmente, por exemplo, a informação de movimento pode ser derivada pela realização da esti-mativa de movimento no lado do decodificador. Nesse momento, no lado do decodificador, a estimativa de movimento é realizada sem se utilizar qualquer valor de pixel em um bloco corrente.
[00284] Aqui, um modo de realização da estimativa de movimento no lado do decodificador é descrito. O modo de realização da estimati va de movimento no lado do decodificador pode ser referida como um modo de derivação de vetor de movimento de padrão combinado (PMMVD) ou um modo de conversão ascendente de taxa de quadro (FRUC).
[00285] Um exemplo de um processo FRUC é 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 blo co codificado que é espacialmente ou temporalmente vizinho de um bloco corrente (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 can didatos 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 corren teé, 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 corrente. Adicionalmente, por exemplo, o vetor de movimento para o bloco corrente pode ser derivado utilizando-se a combinação de pa drã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 resulte em um melhor valor de ava liaçã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 de-terminado como o MV final para o bloco corrente. Uma configuração na qual nenhum processo desses para atualização do melhor candida- to a MV, para o MV possuindo um melhor valor de avaliação, é reali-zado,também é possível.
[00286] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco corrente pela realização da compensação de movimento do bloco corrente utilizando o MV derivado e a imagem de referência codificada (Etapa Si_5).
[00287] Um processo similar pode ser realizado em unidades de um sub-bloco.
[00288] Os valores de avaliação podem ser calculados de acordo com os 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 correspondendo 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 corrente, como indicado abaixo). A diferença entre os valores de pixel das duas imagens reconstruídas pode ser utilizada para um valor de avaliação dos vetores de movi mento. Deve-se notar que um valor de avaliação pode ser calculado utilizando-se a informação além do valor da diferença.
[00289] A seguir, a combinação de padrão é descrita em detalhes. Primeiro, um candidato a MV, incluído em uma lista de candidatos a MV (por exemplo, uma lista de mistura), é selecionado como um ponto de partida de estimativa pela combinação de padrão. Como a combi nação de padrão, uma primeira combinação de padrão ou uma segun dacombinação de padrão é utilizada. A primeira combinação de pa drã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 MV > FRUC >Combinação bilateral
[00290] Na primeira combinação de padrão, a combinação de pa drão é realizada entre dois blocos ao longo de uma trajetória de mo- vimento de um bloco corrente, que são dois blocos em duas imagens de referência diferentes. De acordo, na primeira combinação de pa drão, uma região em outra imagem de referência, ao longo da trajetó ria de movimento do bloco corrente, é utilizada como uma região de terminada para se calcular o valor de avaliação do candidato descrito acima.
[00291] A Figura 23 é um diagrama 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 principal. Como ilustrado na Figura 23, na primeira combinação de padrão, dois vetores de movimento (MV0, MV1) são derivados pela estimativa de um par que melhor combina entre os pares nos dois blocos em duas imagens de referência diferentes (Ref0, Ref1), que são os dois blocos ao longo da trajetória de movimento do bloco corrente (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 do bloco corrente, e um valor de avaliação é calculado utilizando-se o valor da diferença obtida. É excelente se selecionar, como o MV final, o candidato a MV que resulte no melhor valor de avaliação entre a plu-ralidade de candidatos a MV.
[00292] Considerando uma trajetória de movimento contínua, os vetores de movimento (MV0, MV1) que especificam os dois blocos de referência são proporcionais às distâncias temporais (TD0, TD1) entre a imagem corrente (Cur Pic) e as duas imagens de referência (Ref0, Ref1). Por exemplo, quando a imagem corrente é localizada tempo ralmente entre as duas imagens de referência e as distâncias tempo- rais da imagem corrente para as duas imagens de referência respecti-vassão iguais uma à outra, os vetores de movimento bidirecionais es-pelhados e simétricos são derivados da primeira combinação de pa drão.
Derivação MV > FRUC >Combinação de Gabarito
[00293] Na segunda combinação de padrão (combinação de gabari to), a combinação de padrão é realizada entre um bloco em uma ima gem de referência e um gabarito na imagem corrente (o gabarito é um bloco vizinho do bloco corrente na imagem corrente (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 corrente na imagem corrente é utilizado como a região determinada para se calcu lar o valor de avaliação do candidato descrito acima.
[00294] A Figura 24 é um diagrama para ilustrar um exemplo de combinação de padrão (combinação de gabarito) entre um gabarito e uma imagem corrente e um bloco em uma imagem de referência. Co mo ilustrado na Figura 24, na segunda combinação de padrão, o vetor de movimento do bloco corrente (Cur block) é derivado por estimativa, na imagem de referência (Ref0), o bloco que melhor combina o bloco vizinho do bloco corrente na imagem corrente (Cur Pic). Mais especifi camente,é excelente que a diferença entre uma imagem reconstruída em uma região codificada, que é vizinha tanto pelo lado esquerdo e por cima, quanto pelo lado esquerdo ou acima, e uma imagem recons truída que está em uma região correspondente na imagem de referên cia codificada (Ref0) e é especificada por um candidato a MV sejam derivadas, um valor de avaliação sendo 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.
[00295] Tal informação que indica se aplica o modo FRUC (referido, por exemplo, como um indicador FRUC) pode ser sinalizada no nível de CU. Adicionalmente, quando o modo FRUC é aplicado (por exem plo, quando um indicador FRUC é verdadeiro), a informação que indi ca um método de combinação de padrão aplicável (a primeira combi nação de padrão ou a segunda combinação de padrão) pode ser sina lizada 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 po de ser realizada em outro nível (por exemplo, no nível de sequência, no nível de imagem, no nível de fatia, no nível de tile, no nível de CTU ou no nível de sub-bloco).
Derivação de MV > Modelo Afim
[00296] A seguir, o modo afim para derivar um vetor de movimento em unidades de um sub-bloco, com base nos vetores de movimento dentre uma pluralidade de blocos vizinhos, é descrito. Esse modo também é referido como um modo de previsão de compensação de movimento afim.
[00297] A Figura 25A é um diagrama 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 Figu ra 25A, o bloco corrente inclui dezesseis sub-blocos de 4 x 4. Aqui, o vetor de movimento V0 em um ponto de controle no canto superior es querdo no bloco corrente é derivado com base em um vetor de movi mento de um bloco vizinho, e, da mesma forma, o vetor de movimento V1 em um ponto de controle no canto superior direito no bloco corrente é derivado com base em um vetor de movimento de um sub-bloco vi zinho. Os dois vetores de movimento v0 e v1 são projetados de acordo com uma expressão (1A) indicada abaixo, e os vetores de movimento (vx, vy) para os sub-blocos respectivos no bloco corrente são deriva dos. Matemática 1 '
[00298] Aqui, x e y indicam a posição horizontal e a posição vertical do sub-bloco, respectivamente, e w indica um coeficiente de pondera ção predeterminado.
[00299] Tal informação indicando o modo afim (por exemplo, referi do 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, no nível de imagem, no nível de fatia, no nível de tile, no nível de CTU ou no nível de sub-bloco).
[00300] Adicionalmente, o modo afim pode incluir vários modos pa ra diferentes métodos, para derivar vetores de movimento nos pontos de controle do canto superior esquerdo e no canto superior direito. Por exemplo, o modo afim inclui dois modos que são o intermodo afim (também referido como um intermodo normal afim) e o modo de mistu ra afim.
Derivação de MV > Modelo Afim
[00301] A Figura 25B é um diagrama 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 corrente inclui dezesseis blocos de 4 x 4. Aqui, o vetor de movimento V0 no ponto de controle do canto superior esquerdo para o bloco cor renteé derivado com base em um vetor de movimento de um bloco vizinho e, da mesma forma, o vetor de movimento V1 no ponto de con trole do canto superior direito para o bloco corrente é 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 corrente é derivado com base em um vetor de movimento de um bloco vizinho. Três vetores de movimento v0, v1 e v2 são projetados de acordo com uma expressão (1B) indicada abaixo, e os vetores de mo- vimento (vx, vy) para os sub-blocos respectivos no bloco corrente são derivados. Matemática 2
[00302] 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 corrente, e h indica a altura do bloco corrente.
[00303] Modos afim, nos quais diferentes números 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, 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).
[00304] Adicionalmente, tal modo afim, no qual três pontos de con-trolesão utilizados, pode incluir diferentes modos para derivar os veto res de movimento nos pontos de controle do canto superior esquerdo, superior direito e inferior esquerdo. Por exemplo, os modos afim inclu em 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
[00305] As Figuras 26A, 26B e 26C são diagramas conceituais para ilustrar o modo de mistura a fim.
[00306] Como ilustrado na Figura 26A, no modo de mistura afim, por exemplo, os previsores de vetor de movimento em pontos de con trole respectivos de um bloco corrente são calculados com base em uma pluralidade de vetores de movimento que correspondem aos blo cos 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 corrente. Mais especificamente, o bloco codificado A (es querdo), 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 corrente são calculados com base em uma pluralidade de vetores de movimento correspondendo ao bloco identificado.
[00307] Por exemplo, como ilustrado na Figura 26B, quando o bloco A, que é vizinho do lado esquerdo do bloco corrente, foi codificado de acordo com um modo afim no qual dois pontos de controle são utiliza dos, os vetores de movimento v3 e v4, projetados na posição do canto superior esquerdo e na posição do canto superior direito do bloco codi ficado, incluindo o bloco A, são derivados. O previsor de vetor de mo vimento v0 no ponto de controle do canto superior esquerdo do bloco corrente, e o previsor de vetor de movimento v1 no ponto de controle do canto superior direito do bloco corrente são, então, calculados a partir dos vetores de movimento derivado v3 e v4.
[00308] Por exemplo, como ilustrado na Figura 26C, quando o bloco A, que é vizinho pelo lado esquerdo do bloco corrente, foi codificado de acordo com um modo afim no qual três pontos de controle são utili zados, os vetores de movimento v3, v4 e v5 projetados na posição do canto superior esquerdo, na posição do canto superior direito, e na po sição do canto inferior esquerdo do bloco codificado, incluindo o bloco A, são derivados. O previsor de vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco corrente, o previsor de vetor de movimento v1 no ponto de controle do canto superior direito do bloco corrente, e o previsor de vetor de movimento v2 no ponto de controle do canto inferior esquerdo do bloco corrente são, então, cal-culados a partir dos vetores de movimento derivados v3, v4, e v5.
[00309] 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 cor rente na Etapa Sj_i na Figura 29 descrita posteriormente.
[00310] A Figura 27 é um fluxograma ilustrando um exemplo do modo de mistura afim.
[00311] No modo de mistura afim, primeiro, o interprevisor 126 deri va os previsores de MV de pontos de controle respectivos de um bloco corrente (Etapa Sk_1). Os pontos de controle são o ponto de canto superior esquerdo do bloco corrente e um ponto de canto superior di reito do bloco corrente, como ilustrado na Figura 25A, ou um ponto de canto superior esquerdo do bloco corrente, um ponto de canto superior direito do bloco corrente, e um ponto de canto inferior esquerdo do bloco corrente, como ilustrado na Figura 25B.
[00312] Em outras palavras, como ilustrado na Figura 26A, o inter-previsor 126 verifica o bloco codificado A (esquerdo), o bloco B (supe-rior), o bloco C (superior direito), o bloco D (inferior esquerdo), e o blo co E (superior esquerdo) na ordem listada, e identifica o primeiro bloco efetivo codificado de acordo com o modo afim.
[00313] Quando o bloco A é identificado e o bloco A possui dois pontos de controle, como ilustrado na Figura 26B, o interprevisor 126 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco corrente e o vetor de movimento v1 no ponto de controle do canto superior direito do bloco corrente, a partir dos veto res de movimento v3 e v4 no canto superior esquerdo e no canto supe rior direito do bloco codificado, incluindo o bloco A. Por exemplo, o in terprevisor 126 calcula o vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco corrente e o vetor de movimento v1 no ponto de controle do canto superior direito do bloco corrente pela projeção dos vetores de movimento v3 e v4 no canto superior esquerdo e no canto superior direito do bloco codificado no bloco corrente.
[00314] Alternativamente, quando o bloco A é identificado e o bloco A possui três pontos de controle, como ilustrado na Figura 26C, o in-terprevisor 126 calcula o vetor de movimento v0 no ponto de controle de canto superior esquerdo do bloco corrente, o vetor de movimento v1 no ponto de controle de canto superior direito do bloco corrente, e o vetor de movimento v2 no ponto de controle do canto inferior esquerdo do bloco corrente dos vetores de movimento v3, v4 e v5 no canto supe rior esquerdo, o canto superior direito, e o 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 de canto superior esquerdo do bloco corrente, o vetor de movimento v1 no ponto de con trole do canto superior direito do bloco corrente, e o vetor de movimen to v2 no ponto de controle de canto inferior esquerdo do bloco corrente pela projeção de vetores de movimento v3, v4 e v5 no canto superior esquerdo, canto superior direito, e canto inferior esquerdo do bloco codificado no bloco corrente.
[00315] A seguir, o interprevisor 126 realiza a compensação de mo-vimento de cada um dentre uma pluralidade de sub-blocos incluídos no bloco corrente. Em outras palavras, o interprevisor 126 calcula, pa ra cada um dentre a pluralidade de sub-blocos, um vetor de movimen to do sub-bloco como um MV afim, pela utilização de (i) dois previso- res 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 três MVs afim e imagens de referência codificadas (Etapa Sk_3). Como resultado dis so, a compensação de movimento do bloco corrente é realizada para gerar uma imagem de previsão do bloco corrente.
Derivação de MV > Intermodo Afim
[00316] A Figura 28A é um diagrama para ilustrar um intermodo afim no qual dois pontos de controle são utilizados.
[00317] No intermodo afim, como ilustrado na Figura 28A, um vetor de movimento, selecionado a partir de vetores de movimento do bloco codificado A, bloco B, e bloco C, que são vizinhos do bloco corrente, é utilizado como o previsor de vetor de movimento v0 no ponto de contro le do canto superior esquerdo do bloco corrente. Da mesma forma, o vetor de movimento selecionado a partir dos vetores de movimento do bloco D e do bloco E codificados, que são vizinhos do bloco corrente, é utilizado como o previsor de vetor de movimento v1 no ponto de con trole do canto superior direito do bloco corrente.
[00318] A Figura 28B é um diagrama para ilustrar um intermodo afim no qual três pontos de controle são utilizados.
[00319] No intermodo afim, como ilustrado na Figura 28B, um vetor de movimento selecionado a partir dos vetores de movimento do bloco A, bloco B e bloco C codificados, que são vizinhos do bloco corrente, é utilizado como o previsor de vetor de movimento v0 no ponto de contro le de canto superior esquerdo do bloco corrente. Da mesma forma, um vetor de movimento selecionado a partir dos vetores de movimento do bloco D e bloco E codificados, que são vizinhos do bloco corrente, é utilizado como o previsor de vetor de movimento v1 no ponto de contro le do canto superior direito do bloco corrente. Adicionalmente, um ve tor de movimento selecionado a partir dos vetores de movimento do bloco F e do bloco G codificados, que são vizinhos do bloco corrente, é utilizado como o previsor de vetor de movimento v2 no ponto de con trole do canto inferior esquerdo do bloco corrente.
[00320] A Figura 29 é um fluxograma ilustrando um exemplo de um intermodo afim.
[00321] No intermodo afim, primeiro, o interprevisor 126 deriva os previsores de MV (v0, v1) ou (v0, v1, v2) dos respectivos dois ou três pontos de controle de um bloco corrente (Etapa Sj_1). Os pontos de controle são um ponto de canto superior esquerdo do bloco corrente e um ponto de canto superior direito de bloco corrente, como ilustrado na Figura 25A, ou um ponto de canto superior esquerdo do bloco cor rente, um ponto de canto superior direito do bloco corrente, e um ponto de canto inferior esquerdo do bloco corrente, como ilustrado na Figura 25B.
[00322] 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 corrente pela seleção de vetores de movimento de qualquer um dos blocos entre os blocos codificados nas proximidades dos pontos de controle respectivos do bloco corrente ilustrados em qualquer uma das Figuras 28A ou 28B. Nesse momento, o interprevisor 126 codifica, em uma sequência, a informação de sele ção de previsor de vetor de movimento, para identificação dos dois ve tores de movimento selecionados.
[00323] Por exemplo, o interprevisor 126 pode determinar, utilizan do uma avaliação de custo ou similar, o bloco a partir do qual um vetor de movimento, como um previsor de vetor de movimento em um ponto de controle, é selecionado dentre os blocos codificados vizinhos do bloco corrente, e pode descrever, em uma sequência de bits, um indi cador que indica qual previsor de vetor de movimento foi selecionado.
[00324] A seguir, o interprevisor 126 realiza a estimativa de movi mento (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 ve- tor 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) descritas acima (Etapa Sj_3). O interprevisor 126, então, realiza a compensação de movimento dos sub-blocos utilizando esses MVs afins 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 um vetor de movimento em um ponto de controle em um circuito de estimativa de movimento (Etapa Sj_5). Nesse momento, o interprevi sor 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 de MV.
[00325] Por fim, o interprevisor 126 gera uma imagem de previsão para o bloco corrente pela realização da compensação de movimento do bloco corrente utilizando o MV determinado e a imagem de referên cia codificada (Etapa Sj_6).
Derivação de MV > Intermodo Afim
[00326] Quando os modos afim, nos quais diferentes números 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 corrente 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 quando o número de pontos de controle em um bloco codi ficado e o número de pontos de controle em um bloco corrente são diferentes um do outro.
[00327] Por exemplo, como ilustrado na Figura 30A, quando um bloco corrente possui três pontos de controle no canto superior es querdo, no canto superior direito e no canto inferior esquerdo, e o blo- co A, que é vizinho no lado esquerdo do bloco corrente, foram codifi-cados de acordo com um modo afim, no qual os dois pontos de contro-lesão utilizados, os vetores de movimento v3 e v4, projetados na posi ção do canto superior esquerdo e na posição do canto superior direito no bloco codificado, incluindo o bloco A, são derivados. O previsor de vetor de movimento v0, no ponto de controle do canto superior esquer do do bloco corrente, e o previsor de vetor de movimento v1 no ponto de controle do canto superior direito do bloco corrente são, então, cal-culados a partir dos vetores de movimento derivados v3 e v4. Adicio-nalmente, o previsor de vetor de movimento v2 no ponto de controle do canto inferior esquerdo é calculado a partir dos vetores de movimento derivados v0 e v1.
[00328] Por exemplo, como ilustrado na Figura 30B, quando um bloco corrente possui dois pontos de controle no canto superior es querdo e no canto superior direito, e o bloco A, que é vizinho do lado esquerdo do bloco corrente, foi codificado de acordo com o modo afim, no qual três pontos de controle são utilizados, os vetores de movimen to v3, v4 e v5, projetados na posição do canto superior esquerdo, na posição do canto superior direito e na posição do canto inferior es querdo no bloco codificado, incluindo o bloco A, são derivados. O pre visor de vetor de movimento v0 no ponto de controle do canto superior esquerdo do bloco corrente e o previsor de vetor de movimento v1 no ponto de controle do canto superior direito do bloco corrente são, en tão, calculados a partir dos vetores de movimento derivados v3, v4 e v5.
[00329] Deve-se notar que esse método de derivação dos previso- res de vetor de movimento pode ser utilizado para derivar os previso- res de vetor de movimento dos pontos de controle respectivos do blo co corrente na Etapa Sj_1 na Figura 29.
Derivação de MV > DMVR
[00330] A Figura 31A é um diagrama ilustrando uma relação entre o modo de mistura e DMVR.
[00331] O interprevisor 126 deriva um vetor de movimento de um bloco corrente de acordo com o modo de mistura (Etapa Sl_1). A se guir, o interprevisor 126 determina se realiza a estimativa de um vetor de movimento, isso é, a estimativa de movimento (Etapa Sl_2). Aqui, quando se determina a não realização da estimativa de movimento (não na Etapa Sl_2), o interprevisor 126 determina o vetor de movi mento derivado na Etapa Sl_1 como o vetor de movimento final para o bloco corrente (Etapa Sl_4). Em outras palavras, nesse caso, o vetor de movimento do bloco corrente é determinado de acordo com o modo de mistura.
[00332] Quando da determinação da realização da estimativa de movimento na Etapa Sl_1 (Sim na Etapa Sl_2), o interprevisor 126 de riva o vetor de movimento final para o bloco corrente 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 corrente é de terminado de acordo com DMVR.
[00333] A Figura 31B é um diagrama conceitual para ilustrar um exemplo de um processo DMVR para determinação de um MV.
[00334] Primeiro, (por exemplo, no modo de mistura) o melhor MVP, que foi configurado para o bloco corrente, é determinado como sendo um candidato a MV. Um pixel de referência é identificado a par tir de uma primeira imagem de referência (L0), que é uma imagem co dificada 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 se gunda imagem de referência (L1), que é uma imagem codificada na direção L1, de acordo com um candidato a MV (L1). Um gabarito é ge rado pelo cálculo de uma média desses pixels de referência.
[00335] A seguir, cada uma das regiões circundantes de candidatos a MV da primeira imagem de referência (L0) e da segunda imagem de referência (L1) é estimada, e o MV que resulta no menor custo é de-terminado 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 de pixel cor-respondente na região de estimativa, os valores de candidatos a MV, etc.
[00336] Deve-se notar que os processos, configurações e opera ções descritos aqui são basicamente comuns entre o codificador e um decodificador a serem descritos posteriormente.
[00337] Exatamente os mesmos processos descritos aqui nem sempre precisam ser realizados. Qualquer processo para permitir a derivação do MV final pela estimativa nas regiões circundantes de candidatos a MV pode ser utilizado.
Compensação de Movimento > BIO/OBMC
[00338] 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 posteriormen te.
[00339] A Figura 32 é um fluxograma ilustrando um exemplo de ge ração de uma imagem de previsão.
[00340] O interprevisor 126 gera uma imagem de previsão (Etapa Sm_1), e corrige a imagem de previsão de acordo com qualquer um dos modos descritos acima (Etapa Sm_2).
[00341] A Figura 33 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão.
[00342] O interprevisor 126 determina um vetor de movimento de um bloco corrente (Etapa Sn_1). A seguir, o interprevisor 126 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 inter-previsor 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 correção da imagem de previsão (Etapa Sn_5).
[00343] 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.
[00344] A Figura 34 é um fluxograma ilustrando outro exemplo de geração de uma imagem de previsão.
[00345] O interprevisor 126 deriva um vetor de movimento de um bloco corrente (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 cor reçã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 previ são é gerada utilizando-se LIC. Quando da determinação da não reali zaçã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
[00346] Deve-se notar que um sinal de interprevisão pode ser gera do utilizando-se a informação de movimento para um bloco vizinho em adição à informação de movimento para o bloco corrente obtida a par tir da estimativa de movimento. Mais especificamente, o sinal de inter- previsão pode ser gerado em unidades de um sub-bloco no bloco cor- rente pela realização de uma adição ponderada de um sinal de previ são com base na informação de movimento obtida a partir da estimati va 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 corrente). Tal interprevisão (compensação de movimento) também é referida como compensação de movimento de bloco sobre posto (OBMC).
[00347] No modo OBMC, a informação que indica um tamanho de sub-bloco para OBMC (referido, por exemplo, como um tamanho de bloco OBMC) pode ser sinalizada no nível de sequência. Adicional mente, a informação que indica se aplica o modo OBMC (referido, por exemplo, como 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).
[00348] O modo OBMC será descrito em maiores detalhes. As Figu ras 35 e 36 são um fluxograma e um diagrama conceitual para ilustrar linhas gerais de um processo de correção de imagem de previsão rea lizado por um processo OBMC.
[00349] Primeiro, como ilustrado na Figura 36, uma imagem de pre visão (Pred) é obtida através da compensação de movimento normal utilizando um vetor de movimento (MV) designado para o bloco alvo de processamento (corrente). Na Figura 36, a seta "MV" aponta uma ima-gem de referência e indica a que o bloco corrente da imagem corrente se refere a fim de obter uma imagem de previsão.
[00350] 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 corrente para o bloco corrente (reutilizando o vetor de movimento para o bloco corren- te). O vetor de movimento (MV_L) é indicado por uma seta "MV_L" que indica uma imagem de referência de um bloco corrente. 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 blocos vizinhos.
[00351] Da mesma forma, uma imagem de previsão (Pred_U) é ob tida pela aplicação de um vetor de movimento (MV_U) que já foi deri vado do bloco codificado, vizinho de cima do bloco corrente, para o bloco corrente (reutilizando o vetor de movimento para o bloco corren te). O vetor de movimento (MV_U) é indicado por uma seta "MV_U" indicando uma imagem de referência de um bloco corrente. Uma se gundacorreção de uma imagem de previsão é realizada pela sobrepo sição da imagem de previsão Pred_U para as imagens de previsão (por exemplo, Pred e Pred_L) onde 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 for ma, é a imagem de previsão final do bloco corrente.
[00352] Apesar de o exemplo acima ser um método de correção de dois percursos utilizando os blocos vizinhos esquerdo e superior, de ve-se notar que o método de correção pode ser o método de correção de três ou mais percursos utilizando, também, o bloco vizinho da direi ta e/ou o bloco vizinho inferior.
[00353] É notado 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.
[00354] 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 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ên cia. 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, com base na pluralidade de imagens de referência, as imagens de previsão corrigidas obtidas são adicio nalmente sobrepostas para se obter a imagem de previsão final.
[00355] Deve-se notar que, em OBMC, a unidade de um bloco cor rente 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.
[00356] Um exemplo de um método para 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 es pecífico, um codificador determina se o bloco corrente pertence a uma região possuindo movimento complicado. O codificador configura obmc_flag para um valor igual a "1" quando o bloco pertence a uma região possuindo movimento complicado e aplica um processo OBMC quando da decodificação, e configura obmc_flag para um valor igual a "0" quando o bloco não pertence a uma região possuindo movimento complicado e codifica o bloco sem aplicar um processo OBMC. O de- codificador 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.
[00357] A interprevisão 126 gera uma imagem de previsão retangu lar para um bloco corrente 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 blo- co corrente retangular, e pode combinar a pluralidade de imagens de previsão para gerar a imagem de previsão retangular final. O formato diferente de um retângulo pode ser, por exemplo, um triângulo.
[00358] A Figura 37 é um diagrama para ilustrar a geração de duas imagens de previsão triangulares.
[00359] O interprevisor 126 gera uma imagem de previsão triangu lar pela realização da compensação de movimento de uma primeira partição possuindo um formato triangular em um bloco corrente 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 compen sação de movimento de uma segunda partição possuindo um formato triangular em um bloco corrente 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 corrente pela combinação dessas imagens de previsão.
[00360] Deve-se notar que, apesar de a primeira partição e de 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 corrente incluir duas partições no exemplo ilustrado na Figura 37, o bloco corrente pode incluir três ou mais partições.
[00361] 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. Nes se caso, uma imagem de previsão para um bloco corrente pode ser gerada utilizando-se uma imagem de previsão na primeira partição e uma imagem de previsão na segunda partição.
[00362] Adicionalmente, apesar de um exemplo, no qual uma ima- gem de previsão é gerada para cada uma das duas partições utilizan do-se a interprevisão, uma imagem de previsão pode ser gerada para pelo menos uma partição utilizando a intraprevisão.
Compensação de Movimento > BIO
[00363] A seguir, um método de derivação de um vetor de movi mentoé descrito. Primeiro, um modo para derivar um vetor de movi mento com base em um modelo, assumindo o movimento linear uni forme, será descrito. Esse modo também é referido como um modo de fluxo ótico bidirecional (BIO).
[00364] A Figura 38 é um diagrama para ilustrar um modelo assu mindo o movimento linear uniforme. Na Figura 38, (vx, vy) indica um vetor de velocidade e TO e T1indicam distâncias temporais entre uma imagem corrente (Cur Pic) e duas imagens de referência (Ref0, Ref1). (MVx0, MVy0) indicam os vetores de movimento correspondentes à imagem de referência Ref0, e (MVx1, MVy1) indicam vetores de mo vimento correspondentes à imagem de referência Ref1.
[00365] Aqui, considerando-se o movimento linear uniforme exibido pelos vetores de velocidade (vx, vy), (MVx0, MVy0) e (MVx1, MVy1) são representados como, respectivamente, e a equação de fluxo ótico (2) a seguir é fornecida. Matemática 3
[00366] Aqui, I(k) indica um valor de luminescência de movimento compensado da imagem de referência k (k = o, i). Essa equação de fluxo ótico ilustra que a soma de (i) o tempo derivado do valor de lumi-nescência, (ii) o produto da velocidade horizontal e componente hori-zontal do gradiente espacial de uma imagem de referência, e (iii) o produto da velocidade vertical e componente vertical do gradiente es-pacial de uma imagem de referência é igual a zero. Um vetor de mo-vimento 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.
[00367] Deve-se notar que um vetor de movimento pode ser deriva do no lado do decodificador utilizando um método diferente da deriva ção de um vetor de movimento com base em um modelo assumindo um movimento linear uniforme. Por exemplo, um vetor de movimento pode ser derivado em unidades de um sub-bloco com base nos veto res de movimento dos blocos vizinhos.
Compensação de Movimento > LIC
[00368] A seguir, um exemplo de um modo, no qual uma imagem de previsão (prediction) é gerada pela utilização de um processo de compensação de iluminação local (LIC), será descrito.
[00369] A Figura 39 é um diagrama 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.
[00370] Primeiro, um MV é derivado de uma imagem de referência codificada, e uma imagem de referência correspondente ao bloco cor-renteé obtida.
[00371] A seguir, a informação que indica como o valor de lumines-cênciamudou entre a imagem de referência e a imagem corrente é extraída do bloco corrente. Essa extração é realizada com base nos valores de pixel de luminescência para a região de referência vizinha esquerda codificada (região de referência circundante) e a região de referência vizinha superior codificada (região de referência circundan te), 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 que indica como o valor de luminescência mudou.
[00372] A imagem de previsão para o bloco corrente é 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 refe-rência na imagem de referência especificada pelo MV.
[00373] Deve-se notar também que o formato da região de referên cia circundante ilustrado na Figura 39 é apenas um exemplo; a região de referência circundante pode ter um formato diferente.
[00374] Ademais, apesar de o processo no qual uma imagem de previsão é gerada a partir de uma imagem de referência singular 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 des critos da mesma forma. A imagem de previsão pode ser gerada depois da realização de um processo de correção de luminescência das ima gens de referência obtidas a partir das imagens de referência da mesma forma que a descrita acima.
[00375] Um exemplo de um método de determinação de se aplica um processo LIC é um método para utilização de um lic_flag, que é um sinal que indica se aplica o processo LIC. Como um exemplo específi co, o codificador determina se o bloco corrente pertence a uma região que possui uma mudança de luminescência. O codificador configura o lic_flag para um valor igual a "1" quando o bloco pertencer 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 pertencer a uma região possuindo uma mu dança de luminescência e codifica o bloco corrente sem aplicação de um processo LIC. O decodificador pode decodificar lic_flag escrito na sequência e decodificar o bloco corrente pela comutação entre a apli cação e não aplicação de um processo LIC de acordo com o valor de indicador.
[00376] Um exemplo de um método diferente de determinação de se aplica 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 corrente, se um processo LIC foi aplicado na codificação do blo co codificado circundante selecionado mediante a derivação do MV no processo do modo de mistura será determinado. De acordo com o re-sultado, a codificação é realizada pela comutação entre a aplicação e não aplicação de um processo LIC. Deve-se notar que, também nesse exemplo, os mesmos processos são aplicados aos processos no lado do decodificador.
[00377] O processo de correção de luminescência (LIC) descrito com referência à Figura 39 é descrito em detalhes abaixo.
[00378] Primeiro, o interprevisor 126 deriva um vetor de movimento para obter uma imagem de referência que corresponde a um bloco corrente a ser codificado a partir de uma imagem de referência que é uma imagem codificada.
[00379] A seguir, o interprevisor 126 extrai a informação que indica como o valor de luminescência da imagem de referência foi alterado para o valor de luminescência da imagem corrente, utilizando o valor de pixel de luminescência de uma região de referência circundante co dificada, que é vizinha pelo lado esquerdo, ou de cima, do bloco cor rente e o valor de luminescência na posição correspondente na ima gem 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 re gião de referência circundante na imagem corrente seja p0, e que o valor de pixel de luminescência do pixel correspondente ao pixel de terminado na região de referência circundante na imagem de referên cia seja p1. A interprevisão 126 calcula os coeficientes A e B para oti mização A x p1 + B = p0 como o parâmetro de correção de lumines cênciapara uma pluralidade de pixels na região de referência circun dante.
[00380] A seguir, o interprevisor 126 realiza um processo de corre ção de luminescência utilizando o parâmetro de correção de lumines cênciapara a imagem de referência na imagem de referência especifi cada pelo vetor de movimento, para gerar uma imagem de previsão para o bloco corrente. 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, de 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 de A x p2 + B = p3 para cada um dos pixels na imagem de referência.
[00381] Deve-se notar que o formato da região de referência cir cundante, ilustrado na Figura 39, é um exemplo; um formato diferente além do formato da região de referência circundante pode ser utiliza do. 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. Adicionalmente, a região de referência circundante não está limitada a uma região que é vizinha do bloco corrente, e pode ser uma região que não é vizinha do bloco corrente. 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 corrente, a partir de uma re gião de referência circundante na imagem corrente. 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 movi mento em uma região de referência circundante na imagem corrente.
[00382] Apesar de operações realizadas pelo codificador 100 terem sido descritas aqui, deve-se notar que o decodificador 200 realiza ope rações similares.
[00383] Deve-se notar que o processo LIC pode ser aplicado não apenas à luminescência, mas também à crominância. Nesse momen to, um parâmetro de correção pode ser derivado individualmente para cada um de Y, Cb e Cr, ou um parâmetro de correção comum pode ser utilizado para qualquer um dentre Y, Cb e Cr.
[00384] Adicionalmente, o processo LIC pode ser aplicado em uni dades 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 corrente 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 corrente.
Controlador de Previsão
[00385] O interprevisor 128 seleciona um dentre um sinal de intra- previsã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.
[00386] Como ilustrado na Figura 1, em vários tipos de exemplos de montagem, o controlador de previsão 128 pode enviar um parâmetro de previsão que é registrado no codificador por entropia 110. O codifi cador por entropia 110 pode gerar uma sequência de bits codificada (ou uma sequência), com base no parâmetro de previsão que é regis trado a partir do controlador de previsão 128 e coeficientes quantiza- dos 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 codificada, e realizar os mesmos processos que os processos de previsão realizados pelo in traprevisor 124, interprevisor 126 e controlador de previsão 128. O pa râmetro de previsão pode incluir (i) um sinal de previsão de seleção (por exemplo, um vetor de movimento, um tipo de previsão, ou um modo de previsão utilizados pelo intraprevisor 124 ou interprevisor 126), ou (ii) um índice opcional, um indicador, ou um valor que seja baseado em um processo de previsão realizado em cada um dentre o intraprevisor 124, interprevisor 126, e controlador de previsão 128, ou que indique o processo de previsão.
Exemplo de Montagem do Codificador
[00387] A Figura 40 é um diagrama em bloco ilustrando um exem plo de montagem do codificador 100. O codificador 100 inclui o pro cessador a1 e a memória a2. Por exemplo, a pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 1 é montada no processador a1 e na memória a2 ilustrada na Figura 40.
[00388] O processador a1 é o conjunto de circuitos que realiza o processamento de informação e é acessível à memória a2. Por exem plo, o processador a1 é um conjunto de circuitos 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 agre gado de uma pluralidade de circuitos eletrônicos. Adicionalmente, por exemplo, o processador a1 pode assumir os papeis de dois ou mais elementos constituintes além de um elemento constituinte para arma-zenarinformação a partir da pluralidade de elementos constituintes do codificador 100 ilustrado na Figura 1, etc.
[00389] A memória a2 é uma memória dedicada ou geral para ar-mazenarinformaçã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.
[00390] Por exemplo, a memória a2 pode armazenar um vídeo a ser codificado ou uma sequência de bits correspondendo a um vídeo codificado. Adicionalmente, a memória a2 pode armazenar um pro grama para fazer com que o processador a1 codifique um vídeo.
[00391] Adicionalmente, por exemplo, a memória a2 pode assumir os papeis de dois ou mais elementos constituintes para armazenar in-formação a partir da pluralidade de elementos constituintes do codifi cador 100 ilustrado na Figura 1, etc. Especificamente, a memória a2 pode assumir os papeis de memória de bloco 118 e memória de qua dro 112 ilustradas na Figura 1. Mais especificamente, a memória a2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[00392] Deve-se notar que, no codificador 100, toda a pluralidade de elementos constituintes indicados na Figura 1, etc., pode não ser implementada e todos os processos descritos acima podem não ser realizados. Parte dos elementos constituintes indicados na Figura 1, etc., pode ser incluída em outro dispositivo, ou parte dos processos descritos acima pode ser realizada por outro dispositivo.
Decodificador
[00393] A seguir, um decodificador capaz de decodificar um sinal codificado (sequência de bits codificada) enviado a partir do codifica dor 100 descrito acima será descrito. A Figura 41 é um diagrama em bloco ilustrando uma configuração funcional do decodificador 200 de acordo com essa modalidade. O decodificador 200 é um decodificador de vídeo que decodifica um vídeo em unidades de um bloco.
[00394] Como ilustrado na Figura 41, o decodificador 200 inclui o decodificador por entropia 202, o quantizador inverso 204, o transfor-mador 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 interpre visor 218 e o controlador de previsão 220.
[00395] 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 entro pia 202, quantizador inverso 204, transformador inverso 206, somador 208, filtro de circuito 212, intraprevisor 216, interprevisor 218 e contro lador de previsão 220. Alternativamente, o decodificador 200 pode ser implementado como um ou mais circuitos eletrônicos dedicados cor-respondendo 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.
[00396] Doravante, um fluxo geral dos processos realizados pelo decodificador 200 é descrito e, então, cada um dos elementos consti-tuintesincluídos no decodificador 200 será descrito.
Visão Geral do Processo de Decodificação
[00397] A Figura 42 é um fluxograma ilustrando um exemplo de um processo de decodificação geral realizado pelo decodificador 200.
[00398] Primeiro, o decodificador por entropia 202 do decodificador 200 identifica um padrão de divisão de um bloco possuindo um tama nho fixo (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.
[00399] Em outras palavras, o decodificador por entropia 202 deco difica (especificamente, decodifica por entropia) os coeficientes quanti- zados codificados e um parâmetro de previsão de um bloco corrente a ser decodificado (também referido como um bloco corrente) (Etapa Sp_2).
[00400] 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 restau rar uma pluralidade de residuais de previsão (isso é, um bloco de dife rença) (Etapa Sp_3).
[00401] A seguir, o processador de previsão, incluindo todos ou par te de intraprevisor 216, interprevisor 218, e controlador de previsão 220, gera um sinal de previsão (também referido como um bloco de previsão) do bloco corrente (Etapa Sp_4).
[00402] A seguir, o somador 208 soma 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 corrente (Etapa Sp_5).
[00403] Quando a imagem reconstruída é gerada, o filtro de circuito 212 realiza a filtragem da imagem reconstruída (Etapa Sp_6).
[00404] O decodificador 200, então, determina se a decodificação de toda a imagem foi terminada (Etapa Sp_7). Quando da determina ção de que a decodificação ainda não foi terminada (Não na Etapa Sp_7), o decodificador 200 executa, repetidamente, os processos co meçando com a Etapa Sp_1.
[00405] Deve-se notar que os processos dessas Etapas Sp_1 a Sp_7 podem ser realizados sequencialmente pelo decodificador 200, ou dois ou mais processos podem ser realizados em paralelo. A ordem de processamento dos dois ou mais dos processos pode ser modifica da.
Decodificador por Entropia
[00406] O decodificador por entropia 202 decodifica por entropia uma sequência de bits codificada. Mais especificamente, por exemplo, o decodificador por entropia 202 decodifica aritmeticamente uma se quência de bits codificada em um sinal binário. O decodificador por entropia 202, então, desbinariza o sinal binário. Com isso, o decodifi- cador por entropia 202 envia os coeficientes quantizados de cada blo co para o quantizador inverso 204. O decodificador por entropia 202 pode enviar um parâmetro de previsão incluído em uma sequência de bits codificada (ver Figura 1) para o intraprevisor 216, o interprevisor 218 e o controlador de previsão 220. O intraprevisor 216, o interprevi sor 218, e o controlador de previsão 220 podem executar os mesmos processos de previsão que os realizados pelo intraprevisor 124, o in terprevisor 126 e o controlador de previsão 128 no lado do codificador.
Quantizador Inverso
[00407] O quantizador inverso 204 quantiza de forma inversa os coeficientes quantizados de um bloco a ser decodificador (doravante referido como um bloco corrente) que são registrados a partir do deco- dificador por entropia 202. Mais especificamente, o quantizador inver so 204 quantiza de forma inversa os coeficientes quantizados do bloco corrente, com base nos parâmetros de quantização correspondentes aos coeficientes quantizados. O quantizador inverso 204, então, envia os coeficientes de transformação quantizados inverso do bloco corren te para o transformador inverso 206.
Transformador Inverso
[00408] 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.
[00409] Por exemplo, quando a informação analisada a partir de uma sequência de bits codificada indicar que EMT ou AMT deve ser aplicada (por exemplo, quando um indicador AMT for verdadeiro), o transformador inverso 206 transforma de forma inversa os coeficientes de transformação do bloco corrente com base na informação que indi ca o tipo de transformação analisado.
[00410] Ademais, por exemplo, quando a informação, analisada a partir de uma sequência de bits codificada, indica que NSST deve ser aplicada, o transformador inverso 206 aplica uma transformação inver-sasecundária aos coeficientes de transformação.
Somador
[00411] O somador 208 reconstrói o bloco corrente pela adição de erros de previsão que são registrados a partir do transformador inverso 206 e 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
[00412] A memória de bloco 210 é o armazenador para armazenar os blocos em uma imagem a ser decodificada (doravante referida co mo uma imagem corrente) e a ser referida na intraprevisão. Mais es-pecificamente, a memória de bloco 210 armazena os blocos reconstru-ídos enviados a partir do somador 208.
Filtro de Circuito
[00413] O filtro de circuito 212 aplica um filtro de circuito aos blocos reconstruídos pelo somador 208, e envia os blocos reconstruídos fil-trados para a memória de quadro 214, dispositivo de exibição, etc.
[00414] Quando a informação que indica o LIGAR ou DESLIGAR de um ALF, analisada a partir de uma sequência de bits codificada, indi car que um ALF está LIGADO, um filtro, dentre uma pluralidade de fil tros,é selecionado com base na direção e atividade dos gradientes locais, e o filtro selecionado é aplicado ao bloco reconstruído.
Memória de Quadro
[00415] 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 especifi-camente, a memória de quadro 214 armazena um bloco reconstruído filtrado pelo filtro de circuito 212.
Processador de Previsão (Intraprevisor, Interprevisor, Controla- dor de Previsão)
[00416] A Figura 43 é um diagrama ilustrando um exemplo de um processo realizado por um processador de previsão do decodificador 200. Deve-se notar que o processador de previsão inclui todos ou par te dos elementos constituintes a seguir: intraprevisor 216; interprevisor 218 e controlador de previsão 220.
[00417] O processador de previsão gera uma imagem de previsão de um bloco corrente (Etapa Sq_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 intrapre- visão ou um sinal de interprevisão. Especificamente, o processador de previsão gera a imagem de previsão do bloco corrente 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.
[00418] A imagem reconstruída pode ser, por exemplo, uma ima gem em uma imagem de referência, ou uma imagem de um bloco de codificado em uma imagem corrente que é a imagem que inclui o blo co corrente. O bloco decodificado na imagem corrente é, por exemplo, um bloco vizinho do bloco corrente.
[00419] A Figura 44 é um diagrama ilustrando outro exemplo de um processo realizado pelo processador de previsão do decodificador 200.
[00420] 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.
[00421] Quando da determinação de um primeiro método como um modo de geração de uma imagem de previsão, o processador de pre- visão gera uma imagem de previsão, de acordo com o primeiro méto do (Etapa Sr_2a). Quando da determinação de um segundo método como um modo de geração e 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éto do como um modo de geração de uma imagem de previsão, o proces sador de previsão gera uma imagem de previsão de acordo com o ter-ceirométodo (Etapa Sr_2c).
[00422] 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 interprevisão, ou outro método de previsão. A imagem reconstruída descrita acima pode ser utilizada nesses métodos de previsão.
Intraprevisor
[00423] O intraprevisor 216 gera um sinal de previsão (sinal de in- traprevisão) pela realização da intraprevisão por referência a um bloco ou blocos na imagem corrente armazenada na memória de bloco 210, com base no modo de intraprevisão analisado a partir da sequência de bits codificada. Mais especificamente, o intraprevisor 216 gera um si nal 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 corrente e, então, envia o si nal de intraprevisão para o controlador de previsão 220.
[00424] Deve-se notar que quando um modo de intraprevisão, no qual um bloco de luminescência é referido na intraprevisão de um blo co de crominância, é selecionado, o intraprevisor 216 pode prever o componente de crominância do bloco corrente com base no compo nente de luminescência do bloco corrente.
[00425] Ademais, quando a informação analisada a partir de uma sequência de bits codificada indica que PDPC deve ser aplicado, o in-traprevisor 216 corrige os valores de pixel intraprevistos com base nos gradientes de pixel de referência horizontal/vertical.
Interprevisor
[00426] O interprevisor 218 prevê o bloco corrente 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 corrente ou um sub-bloco (por exemplo, um bloco de 4 x 4) no bloco corrente. Por exemplo, o interprevisor 218 gera um sinal de interprevisão do bloco corrente ou o sub-bloco pela realização da compensação de movimen to pela utilização da informação de movimento (por exemplo, um vetor de movimento) analisada a partir de uma sequência de bits codificada (por exemplo, um parâmetro de previsão enviado a partir do decodifi- cador por entropia 202), e envia o sinal de interprevisão para o contro lador de previsão 220.
[00427] Deve-se notar que quando a informação analisada a partir da sequência de bits codificada 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 corrente obtida a partir da estimativa de movi mento.
[00428] Ademais, quando a informação analisada a partir da se quência de bits codificada 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) analisada a partir da sequência de bits codificada. O interprevisor 218, então, realiza a compensação de movimento (previsão) utilizando a informa ção de movimento derivada.
[00429] Adicionalmente, quando o modo BIO deve ser aplicado, o interprevisor 218 deriva um vetor de movimento com base em um mo-delo, assumindo o movimento linear uniforme. Ademais, quando a in-formação analisada a partir da sequência de bits codificada 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 MV > InterModo Normal
[00430] Quando a informação analisada a partir de uma sequência de bits codificada 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 codificada e realiza a compensação de mo-vimento(previsão) utilizando o MV.
[00431] A Figura 45 é um fluxograma ilustrando um exemplo de in- terprevisão no intermodo normal no decodificador 200.
[00432] O interprevisor 218 do decodificador 200 realiza a compen sação de movimento para cada bloco. Nesse momento, primeiro, o interprevisor 218 obtém uma pluralidade de candidatos a MV para um bloco corrente com base na informação, tal como MVs dentre uma plu-ralidade de blocos decodificados temporalmente ou espacialmente que cercam o bloco corrente (Etapa Ss_1). Em outras palavras, o interpre-visor 218 gera uma lista de candidatos a MV.
[00433] A seguir, o interprevisor 218 extrai N (um inteiro igual a 2 ou maior) candidatos a MV a partir da pluralidade de candidatos a MV ob tida na Etapa Ss_1, como candidatos a previsor de vetor de movimen-to(também referidos como candidatos a previsor de MV), de acordo com uma ordem de prioridade predeterminada (Etapa Ss_2). Deve-se notar que a ordem de prioridade é determinada antecipadamente para cada um dos N candidatos a previsor de MV.
[00434] A seguir, o interprevisor 218 decodifica a informação de se leção de previsor de vetor de movimento a partir de uma sequência de entrada (isso é, uma sequência de bits codificada) e seleciona um candidato a previsor de MV 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 corrente (Etapa Ss_3).
[00435] A seguir, o interprevisor 218 decodifica uma diferença de MV da sequência de entrada, e deriva um MV para um bloco corrente pela adição de um valor de diferença, que é a diferença de MV decodi ficada e um previsor de vetor de movimento selecionado (Etapa Ss_4).
[00436] Por fim, o interprevisor 218 gera uma imagem de previsão para o bloco corrente pela realização da compensação de movimento do bloco corrente utilizando o MV derivado e a imagem de referência decodificada (Etapa Ss_5).
Controlador de Previsão
[00437] O controlador de previsão 220 seleciona o sinal de intrapre- visão ou o sinal de interprevisão, e envia o sinal de previsão selecio nado para o somador 208. Como um todo, as configurações, funções e processos do controlador de previsão 220, intraprevisor 216 e inter previsor 218 no lado do decodificador podem corresponder às configu rações, funções e processos do controlador de previsão 128, intrapre visor 124 e interprevisor 126 no lado do codificador.
Exemplo de Montagem do Decodificador
[00438] A Figura 46 é um diagrama em bloco ilustrando um exem plo de montagem do decodificador 200. O decodificador 200 inclui o processador b1 e a memória b2. Por exemplo, a pluralidade de ele mentos constituintes do decodificador 200, ilustrada na Figura 41, é montada no processador b1 e na memória b2 ilustrada na Figura 46.
[00439] O processador b1 é um conjunto de circuitos que realiza o processamento de informação e é acessível à memória b2. Por exem plo, o processador b1 é um conjunto de circuitos eletrônicos dedicado ou geral que decodifica um vídeo (isso é, uma sequência de bits codi-ficada). 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 papeis de dois ou mais elementos constituintes além de um elemento constituinte para armazenar infor-mação a partir da pluralidade de elementos constituintes do decodifi- cador 200 ilustrado na Figura 41, etc.
[00440] A memória b2 é uma memória dedicada ou geral para ar-mazenarinformação que é utilizada pelo processador b1 para decodi ficar uma sequência de bits codificada. A memória b2 pode ser o con junto 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 agregado de uma plu ralidade de circuitos eletrônicos. Adicionalmente, a memória b2 pode ser um disco magnético, um disco ótico, ou similares, ou pode ser re presentada 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.
[00441] Por exemplo, a memória b2 pode armazenar um vídeo ou uma sequência de bits. Adicionalmente, a memória b2 pode armaze nar um programa para fazer com que o processador b1 decodifique uma sequência de bits codificada.
[00442] Adicionalmente, por exemplo, a memória b2 pode assumir os papeis de dois ou mais elementos constituintes para armazenar in-formação dentre a pluralidade de elementos constituintes do decodifi- cador 200 ilustrado na Figura 41, etc. Especificamente, a memória b2 pode assumir os papeis da memória de bloco 210 e memória de qua dro 214 ilustrada na Figura 41. Mais especificamente, a memória b2 pode armazenar um bloco reconstruído, uma imagem reconstruída, etc.
[00443] 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
[00444] Os termos respectivos podem ser definidos como indicado abaixo como exemplos.
[00445] Uma imagem é um conjunto de amostras de luminescência em formato monocromático ou um conjunto de amostras de lumines cênciae dois conjuntos correspondentes de amostras de crominância no formato de cor 4:2:0, 4:2:2 e 4:4:4. Uma imagem pode ser um qua dro ou um campo.
[00446] Um quadro é a composição de um campo superior e um campo inferior, onde as fileiras de amostras 0, 2, 4...originam do cam po superior e as fileiras de amostras 1, 3, 5,...originam do campo infe rior.
[00447] 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), den tre a mesma unidade de acesso.
[00448] Um tile é uma região retangular de blocos de árvore de co-dificação dentro de uma coluna de tiles em particular e uma fileira de tiles em particular em uma imagem. Um tile pode ser uma região re tangular do quadro que deve poder ser decodificada e codificada inde-pendentemente, apesar de a filtragem de circuito através das bordas do tile ainda poder ser aplicada.
[00449] Um bloco é um conjunto de amostras de M x N (coluna M x fileira N), 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.
[00450] 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, e dois blocos de árvo re de codificação correspondentes de amostras de crominância. Alter-nativamente, uma CTU pode ser um bloco de árvore de codificação de amostras de uma imagem monocromática e uma imagem que é codifi-cada utilizando-se três planos de cores separados e estruturas de sin-taxe utilizadas para codificar as amostras.
[00451] 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 é divi dido de forma recursiva em quatro blocos de 32 x 32, que podem ser adicionalmente divididos.
Aspecto Primário
[00452] Doravante, o codificador 100, o decodificador 200, um mé todo de codificação, e um método de decodificação, de acordo com o aspecto primário da presente descrição, serão descritos.
[00453] A Figura 47 é um fluxograma ilustrando um exemplo da in- terprevisão, de acordo com o primeiro aspecto. A seguir é descrito um exemplo da interprevisão no decodificador 200.
[00454] O interprevisor 218 no decodificador 200 deriva um vetor de movimento de base a ser utilizado na previsão de um bloco corrente a ser decodificado; deriva um primeiro vetor de movimento diferente a partir do vetor de movimento de base; deriva uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimen to de base e o primeiro vetor de movimento; determina se a diferença do vetor de movimento é maior do que um limite; modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é de-terminada como sendo maior do que o limite, e não modifica o primeiro vetor de movimento quando a diferença do vetor de movimento é de-terminada como não sendo superior ao limite; e decodifica o bloco cor-rente utilizando o primeiro vetor de movimento modificado ou o primei ro vetor de movimento não modificado. Por exemplo, o vetor de movi mento de base corresponde ao primeiro conjunto de pixels no bloco corrente, e o primeiro vetor de movimento corresponde ao segundo conjunto de pixels diferente do primeiro conjunto de pixels no bloco corrente. A interprevisão será mais especificamente descrita acima com referência aos desenhos. Note-se que o vetor de movimento de base e o primeiro vetor de movimento descritos abaixo são, cada um, um exemplo, e não são limitados aos mesmos.
[00455] Primeiramente, na etapa S1001, o interprevisor 218 deriva o vetor de movimento de base do primeiro conjunto de pixels no bloco corrente. O processamento na etapa S1001 será mais especificamente descrito abaixo com referência à Figura 48.
[00456] A Figura 48 é um diagrama ilustrando um exemplo do bloco corrente. Como ilustrado na Figura 48, o bloco corrente pode incluir sub-blocos (sub-bloco 0 a sub-bloco 5). Adicionalmente, cada um dos sub-blocos pode ter um primeiro vetor de movimento diferente (MV0 a MV5). Um exemplo do primeiro conjunto de pixels pode ser o sub-bloco 0. Aqui, o vetor de movimento de base é um dentre os primeiros veto res de movimento no bloco corrente. Nesse exemplo, o vetor de mo vimento de base é MV0.
[00457] Outro exemplo do primeiro conjunto de pixels pode ser todo um bloco corrente. Nesse exemplo, o vetor de movimento de base é a média dos primeiros vetores de movimento de todos os sub-blocos no bloco corrente, isso é, a média de MV0 para MV5.
[00458] A seguir, na etapa S1002, o interprevisor 218 deriva o pri- meiro vetor de movimento do segundo conjunto de pixels no bloco cor-rente. O segundo conjunto de pixels é diferente do primeiro conjunto de pixels. Um exemplo do segundo conjunto de pixels pode ser o sub- bloco 2. Nesse exemplo, o primeiro vetor de movimento do segundo conjunto de pixels é MV2.
[00459] Outro exemplo do segundo conjunto de pixels pode ser o sub-bloco 1. Nesse exemplo, o primeiro vetor de movimento é MV1.
[00460] A seguir, na etapa S1003, o interprevisor 218 deriva a dife rença de vetor de movimento com base em uma diferença entre o ve tor de movimento de base do primeiro conjunto de pixels e o primeiro vetor de movimento do segundo conjunto de pixels. Um exemplo do valor do vetor de movimento de base pode ser (-3, 4). Um exemplo do primeiro vetor de movimento pode ser (16, 5). De acordo, a diferença do vetor de movimento entre o primeiro vetor de movimento e o vetor de movimento de base é (-19, -1).
[00461] A seguir, na etapa S1004, o interprevisor 218 determina se a diferença do vetor de movimento na etapa S1003 é maior do que o limite. O limite é um conjunto de primeiro valor (doravante, referido como o primeiro valor limite) e o segundo valor (doravante, referido como o segundo valor limite). Um exemplo do limite pode ser (10, 20). Um exemplo desse processo de determinação será descrito abaixo.
[00462] Quando (i) o valor absoluto do componente horizontal da diferença de vetor de movimento derivada na etapa S1003 é superior ao primeiro valor limite ou (ii) o valor absoluto do componente vertical da diferença de vetor de movimento é superior ao segundo valor limite, o interprevisor 218 determina que a diferença do vetor de movimento é superior ao limite (Sim na etapa S1004). Em outras palavras, quando pelo menos um dos valores absolutos dos componentes horizontal e vertical da diferença de vetor de movimento é superior ao limite, a dife-rença de vetor de movimento é determinada como sendo superior ao limite. Por exemplo, quando o valor absoluto do componente horizontal da diferença de vetor de movimento (-19, 01), ilustrado como um exemplo na etapa S1003, é comparado com o primeiro valor limite, |- 19|>10 é obtido, e, dessa forma, a diferença de vetor de movimento é determinada como sendo superior ao limite. Nesse caso, o interprevi sor 218 modifica o primeiro vetor de movimento. Essa modificação se rá descrita em detalhes na etapa S1006.
[00463] Por outro lado, quando (i) o valor absoluto do componente horizontal da diferença de vetor de movimento não é superior ao pri meiro valor limite e (ii) o valor absoluto do componente vertical da dife rença de vetor de movimento não é superior ao segundo valor limite, o interprevisor 218 determina que a diferença do vetor de movimento não é superior ao limite (não na etapa S1004). Em outras palavras, quando ambos os valores absolutos dos componentes horizontal e vertical da diferença de vetor de movimento são inferiores a ou iguais ao limite, a diferença do vetor de movimento é determinada como sen do inferior a ou igual ao limite. Quando a diferença de vetor de movi mentoé determinada como não sendo superior ao limite (não na etapa S1004), o interprevisor 218 não modifica o primeiro vetor de movimen to (etapa S1005).
[00464] A seguir, quando a diferença de vetor de movimento é de-terminada como sendo superior ao limite (sim na etapa S1004), na etapa S1006, o interprevisor 218 modifica o primeiro vetor de movi mento utilizando o valor obtido pela fixação da diferença de vetor de movimento. Em se fazendo isso, a diferença do vetor de movimento ( 19, -1) é fixada a (-10, -1). Como descrito acima, o valor absoluto |-19| do componente horizontal da diferença de vetor de movimento é supe rior a 10 que é o primeiro valor limite do limite (10, 20) e, dessa forma, o valor absoluto do componente horizontal da diferença de vetor de movimento é fixado para que seja igual ao primeiro valor limite. De acordo, a diferença de vetor de movimento fixada é (-10, -1).
[00465] Subsequentemente, o interprevisor 218 modifica o primeiro vetor de movimento utilizando a diferença de vetor de movimento fixa da e o vetor de movimento de base. Mais especificamente, o primeiro vetor de movimento pode ser modificado pela adição da diferença de vetor de movimento fixada ao vetor de movimento de base. Por exem plo, o primeiro vetor de movimento modificado é (-3, 4)-(-10, -1) = (7, 5).
[00466] Na etapa S1007, o interprevisor 218 decodifica o segundo conjunto de pixels utilizando o primeiro vetor de movimento modificado ou o primeiro vetor de movimento original. Por exemplo, o sub-bloco 2 é decodificado utilizando-se o primeiro vetor de movimento modificado (7, 5).
[00467] Note-se que o processamento 1000 ilustrado na Figura 47 pode ser o processamento do codificador.
[00468] O processamento 1000 pode ser aplicado a todos os sub- blocos no bloco corrente. Quando o processamento 1000 é aplicado a todos os sub-blocos no bloco corrente, o modo de previsão para o blo co corrente pode ser o modo afim. Adicionalmente, quando o proces samento 1000 é aplicado a todos os sub-blocos no bloco corrente, o modo de previsão para o bloco corrente pode ser o modo de Previsão de Vetor de Movimento Temporal Alternativo (ATMVP).
[00469] Note-se que o modo ATMVP é um exemplo dos modos de sub-blocos classificados no modo de mistura. Por exemplo, na imagem de referência codificada especificada pelo MV (MV0) do bloco inferior esquerdo vizinho do bloco corrente, um bloco de referência de MV temporal, que corresponde ao bloco corrente, é identificado, e para cada um dos sub-blocos no bloco corrente, um MV utilizado na codifi cação de uma região no bloco de referência de MV temporal, localiza do junto com o sub-bloco, é identificado.
[00470] Adicionalmente, o primeiro vetor de movimento modificado no sub-bloco específico pode ser utilizado para atualizar o primeiro ve tor de movimento de outro sub-bloco no bloco corrente. O exemplo de processamento será descrito abaixo.
[00471] Por exemplo, MV0 do sub-bloco 0 é identificado como o ve tor de movimento de base, MV2 do sub-bloco 2 é identificado como o primeiro vetor de movimento, e o primeiro vetor de movimento modifi cadoé determinado utilizando-se o processamento 1000. O primeiro vetor de movimento modificado do sub-bloco 2 é representado comoUtilizando-se o vetor de movimento de base MV0 e o primeiro vetor de movimento modificado MV2', o primeiro vetor de mo vimento modificado do sub-bloco i (i = 1, 3, 4 ou 5), além do sub-bloco 2 no bloco corrente, é calculado com base nas se-guintesequações.
[00472] Quando MVi'não é superior ao limite, MVi é atualizado co mo MVi', e o sub-bloco i é decodificado utilizando MVi. POSix e POSiy são posições horizontal e vertical do sub-bloco i, respectivamente.
[00473] No exemplo da Figura 48, as mesmas são como segue:
[00474] W e H são posições horizontal e vertical, por exemplo, co-ordenada x e coordenada y no canto inferior esquerdo do sub-bloco 2, respectivamente.
[00475] O limite pode ser adaptativo com relação ao tamanho do bloco corrente. Por exemplo, o limite aumenta com um aumento no tamanho do bloco corrente.
[00476] Adicionalmente, o limite pode ser adaptativo com relação ao número de imagens de referência. Por exemplo, o limite diminui com um aumento no número de imagens de referência.
[00477] O limite pode ser codificado em um cabeçalho, tal como o cabeçalho SPS, o cabeçalho PPS, ou o cabeçalho de Fatia.
[00478] O limite pode ser predeterminado, e não precisa ser codifi cado em uma sequência.
[00479] O limite pode ser determinado para restringir o tamanho do acesso à memória em uma pior situação, quando a compensação de movimento (previsão) é realizada no bloco corrente em um modo de previsão predeterminado para ser menor do que ou igual ao tamanho de acesso à memória em uma pior situação, quando a compensação de movimento (previsão) é realizada de forma bidirecional no bloco corrente, ou com base em pixel de 8 x 8 em outro modo de previsão. O modo de previsão predeterminado é, por exemplo, o modo afim. O exemplo de restrição será descrito abaixo.
[00480] "Mem_base" representa o tamanho de acesso à memória por bloco de 8 x 8 pixels em uma pior situação, quando a compensa ção de movimento (Luminescência) é realizada de forma bidirecional no bloco corrente com base em 8 x 8 pixels em um modo de previsão além do modo de previsão predeterminado.
[00481] O tamanho de acesso à memória, em uma pior situação, quando a compensação de movimento (Luminescência) é realizada no bloco corrente (tamanho: M x N), no modo de previsão predetermina do,é representado como "Mem_CU", e o limite correspondente "Mem_th"é representado utilizando "Mem_base" como segue:
[00482] Mem_CU é restrito a não ser superior a Mem_th. O exem plo do cálculo do limite será descrito abaixo.
[00483] Assumindo-se que o tamanho do sinal de luminescência por pixel seja de 1 byte e o número de saídas de filtro para a compen-sação de movimento seja de 8 saídas é verdadeiro.
[00484] Assumindo-se que o modo de previsão para o bloco corren te seja o modo afim e o bloco corrente seja de 64 x 64 pixels,
[00485] Assume-se que "H" e "V" representem um valor limite do primeiro componente do limite (primeiro valor limite) e um valor limite do segundo componente do limite (segundo valor limite), respectiva mente.
[00486] A pior situação, quando a previsão é realizada em um in- termodo normal além do modo afim, é o caso no qual o bloco corrente é dividido em blocos de 8 x 8 pixels e a compensação de movimento é realizada de forma bidirecional em todos os blocos de 8 x 8 pixels. A faixa de memória referível na realização da previsão no modo afim é determinada de modo a não exceder o tamanho de acesso à memória nessa pior situação. Assume-se que a faixa de memória referível no modo afim seja calculada com base na equação a seguir 1. H e V são calculados de modo que a faixa de acesso à memória no modo afim seja inferior a ou igual a Mem_th (por exemplo, 28800). Note-se que o modo afim aqui é descrito como um exemplo do caso no qual a previ são bidirecional é realizada.
[00487] Assumindo-se H = V, H = V = 24 é obtido pela solução da equação [1].
[00488] Note-se que o processo de cálculo acima do limite também é aplicado ao bloco corrente possuindo um tamanho diferente e um número total diferente de imagens de referência. A Figura 49 é um di agrama ilustrando os exemplos limite calculados. Note-se que a Figura 49 ilustra os exemplos de H = V, mas H > V ou H < V é possível.
[00489] Como ilustrado na Figura 49, o limite difere entre o caso no qual o bloco corrente é previsto de forma unidirecional (o número de quadros de referência = 1) e o caso no qual o bloco corrente é previsto de forma bidirecional (o número de quadros de referência = 2). No exemplo da Equação 1 acima, o tamanho do bloco corrente a ser pre visto no modo afim é de 64 x 64. Quando o bloco corrente é previsto de forma bidirecional, isso é, duas imagens de referência são referi das, o primeiro valor limite H e o segundo valor limite V são, cada um, iguais a 24. Por exemplo, quando o bloco corrente de tamanho igual a 64 x 64 a ser previsto no modo afim é previsto de forma unidirecional, isso é, apenas uma imagem de referência é referida, o primeiro valor limite H e o segundo valor limite V são, cada um, iguais a 49. A Figura 49 é uma tabela ilustrando os limites de todos os possíveis tamanhos de bloco na previsão do modo afim, que são calculados utilizando-se a Equação [1] acima.
Vantagens Técnicas no Aspecto Primário
[00490] No aspecto primário, de acordo com a presente descrição, um processo para derivação do primeiro vetor de movimento é intro duzido na interprevisão. Como descrito acima, o processo no qual o melhor primeiro vetor de movimento é selecionado, de modo que a va riação dos primeiros vetores de movimento no bloco corrente se en contrem dentro da faixa predeterminada, pode reduzir a largura de banda de memória na interprevisão.
Suplementar
[00491] Adicionalmente, 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 ou um decodificador de vídeo, respectivamente.
[00492] Alternativamente, o codificador 100 e o decodificador 200 podem ser utilizados como um codificador por entropia e um decodifi- cador por entropia, respectivamente. Em outras palavras, o codificador 100 e o decodificador 200 podem corresponder a apenas a unidade de codificação por entropia 110 e unidade de decodificação por entropia 202, respectivamente. Os outros componentes podem ser incluídos nos outros dispositivos.
[00493] Adicionalmente, pelo menos parte da presente modalidade pode ser utilizada como um método de codificação, um método de de- codificação, um método de codificação por entropia, um método de decodificação por entropia, ou outro método.
[00494] Adicionalmente, na presente modalidade, cada componente pode ser configurado por um hardware dedicado, ou pode ser imple mentado pela execução de um programa de software adequado para cada componente. Cada componente pode ser implementado fazendo com que um executor de programa, tal como uma CPU ou um proces sador, leia e execute um programa de software armazenado em um meio de gravação, tal como um disco rígido ou uma memória semi- condutora.
[00495] Em particular, o codificador 100 e o decodificador 200 po dem, cada um, incluir um conjunto de circuitos de processamento e um armazenador que é eletricamente conectado a esse conjunto de circui tos de processamento e acessível a partir desse conjunto de circuitos de processamento. Por exemplo, o conjunto de circuitos de processa mento corresponde ao processador a1 ou b1, e o armazenador cor respondeà memória a2 ou b2.
[00496] O conjunto de circuitos de processamento inclui pelo menos um dentre um hardware dedicado e um executor de programa, e reali za o processamento utilizando o armazenador. Adicionalmente, quan do o conjunto de circuitos de processamento inclui o executor de pro grama, o armazenador armazena um programa de software a ser exe- cutado pelo executor de programa.
[00497] Aqui, um software para implementar o codificador 100, o decodificador 200, etc., de acordo com a presente modalidade, é um programa como segue.
[00498] Por exemplo, esse programa pode fazer com que um com putador execute um método de codificação para codificar um vídeo. O método de codificação inclui: derivar um vetor de movimento de base a ser utilizado na previsão de um bloco corrente a ser codificado; derivar um primeiro vetor de movimento diferente do vetor de movimento de base; derivar uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimento de base e o primeiro vetor de movimento; determinar se a diferença do vetor de movimento é maior do que um limite; modificar o primeiro vetor de movimento quando a diferença do vetor de movimento for determinada como sendo superior ao limite, e não modificar o primeiro vetor de movimento quando a dife rença do vetor de movimento for determinada como não sendo superi or ao limite; e codificar o bloco corrente utilizando o primeiro vetor de movimento modificado ou o primeiro vetor de movimento não modifi cado.
[00499] Adicionalmente, por exemplo, esse programa pode utilizar um computador para executar um método de decodificação para de- codificação de um vídeo. O método de decodificação inclui derivar um vetor de movimento de base a ser utilizado na previsão de um bloco corrente a ser decodificado; derivar um primeiro vetor de movimento diferente do vetor de movimento de base; derivar uma diferença do vetor de movimento com base em uma diferença entre o vetor de mo vimento de base e o primeiro vetor de movimento; determinar se a di ferença do vetor de movimento é maior do que um limite; modificar o primeiro vetor de movimento quando a diferença do vetor de movimen to for determinada como sendo superior ao limite e não modificar o primeiro vetor de movimento quando a diferença do vetor de movimen to for determinada como não sendo superior ao limite; e decodificar o bloco corrente utilizando o primeiro vetor de movimento modificado ou o primeiro vetor de movimento não modificado.
[00500] Adicionalmente, como descrito acima, cada componente pode ser um circuito. Os circuitos podem ser integrados em um único circuito como um todo, ou podem ser separados um do outro. Adicio nalmente, cada componente pode ser implementado como um circuito de finalidade geral, ou como um circuito dedicado.
[00501] Adicionalmente, um processo realizado por um componente específico pode ser realizado por outro componente. Adicionalmente, a ordem dos processos pode ser alterada, ou múltiplos processos po dem ser realizados em paralelo. Adicionalmente, um dispositivo de co dificação pode incluir o codificador 100 e o decodificador 200.
[00502] Os números ordinais utilizados na ilustração, tal como pri meiro e segundo, podem ser renumerados como necessário. Adicio nalmente, o número ordinal pode ser recém-designado para um com ponente, etc., ou pode ser eliminado de um componente, etc.
[00503] Como descrito acima, os aspectos do codificador 100 e do decodificador 200 foram descritos com base na modalidade, mas os aspectos do codificador 100 e do decodificador 200 não estão limita dos a essa modalidade. Várias modificações à modalidade que podem ser concebidas pelos versados na técnica, e formas configuradas para combinação dos componentes em modalidades diferentes, sem se dis-tanciar do espírito da presente invenção, podem ser incluídas no es copo dos aspectos do codificador 100 e do decodificador 200.
[00504] Um ou mais dos aspectos descritos aqui podem ser reali zados pela combinação de pelo menos parte de outros aspectos na presente descrição. Adicionalmente, um ou mais dos aspectos descri tos aqui podem ser realizados pela combinação, com outros aspectos, de 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 Aplicativos
[00505] Como descrito em cada uma das modalidades acima, cada bloco funcional ou operacional pode ser tipicamente realizado como uma MPU (unidade de micro processamento) e memória, por exemplo. Ademais, os processos realizados por cada um dos blocos funcionais podem ser realizados 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 ROM. O software pode ser distribuído. O software pode ser gravado em uma variedade de meios de gravação, tal como a memória semicondutor. Note-se que cada bloco funcional também pode ser realizado como hardware (cir cuito dedicado).
[00506] O processamento descrito em cada uma das modalidades pode ser realizado através do processamento integrado utilizando um único aparelho (sistema), e, alternativamente, pode ser realizado atra vés do processamento descentralizado utilizando uma pluralidade de aparelhos. Ademais, o processador que executa o programa descrito acima pode ser um único processador ou uma pluralidade de proces sadores. Em outras palavras, o processamento integrado pode ser realizado e, alternativamente, o processamento descentralizado pode ser realizado.
[00507] As modalidades da presente descrição não estão limitadas às modalidades ilustrativas acima; várias modificações podem ser rea-lizadas nas modalidades ilustrativas, os resultados das quais também são incluídos no escopo das modalidades da presente descrição.
[00508] 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 deco- dificação de imagem) descritos em cada uma das modalidades acima serão descritos, além de vários sistemas que implementam os exem plos 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 de- codificação de imagem, ou um codificador-decodificador de imagem que inclui ambos o codificador de imagem e o decodificador de ima gem. Outras configurações de tal sistema podem ser modificadas, ca so a caso.
Exemplos de Utilização
[00509] A Figura 50 ilustra uma configuração geral do sistema de fornecimento de conteúdo ex100 adequado para implementar um ser viço de distribuição de conteúdo. A área na qual o serviço de comuni cação é fornecido é dividida em células de tamanhos desejados, e es tações base ex106, ex107, ex108, ex109 e ex110, que são estações sem fio fixas no exemplo ilustrado, estão localizadas em células res pectivas.
[00510] No sistema de fornecimento de conteúdo ex100, os disposi tivos, incluindo 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ço de Inter net ex102 ou rede de comunicações ex104 e estações base ex106 a 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 diretamente ou indiretamente através de uma rede de telefonia ou 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 aos dispositivos que incluem o computador ex111, o dispositivo de jo gos ex112, a câmera ex113, o eletrodoméstico ex114, e o smartphone ex115 através, por exemplo, da Internet ex101. O servidor de trans missão ex103 também pode ser conectado, por exemplo, a um termi nal em um hotspot na aeronave ex117 através de satélite ex116.
[00511] Note-se que em vez de as estações base ex106 a ex110, 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 prove dor de serviço de Internet ex102, e pode ser conectado à aeronave ex117 diretamente em vez de através do satélite ex116.
[00512] A câmera ex113 é um dispositivo capaz de capturar ima-gensestáticas e vídeo, tal como uma câmera digital. O smartphone ex115 é um dispositivo smartphone, telefone celular, ou telefone de sistema handyphone pessoal (PHS) que pode operar sob os padrões do sistema de comunicações móveis de sistemas 2G, 3G, 3.9G e 4G, além do sistema 5G de próxima geração.
[00513] O eletrodoméstico ex114, por exemplo, é um refrigerador ou um dispositivo incluído em um sistema operacional de célula de combustível doméstico.
[00514] No sistema de fornecimento de conteúdo ex100, um termi nal incluindo uma imagem e/ou função de captura de vídeo pode, por exemplo, transmitir ao vivo pela conexão do servidor de transmissão ex103 através, por exemplo, da estação base ex106. Quando da transmissão ao vivo, um terminal (por exemplo, o computador ex111, o dispositivo 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 conteúdo de imagem estática ou vídeo capturado por um usuário atra vés do terminal, pode multiplexar dados de vídeo obtidos através da codificação e dados de áudio obtidos pela codificação do áudio cor-respondente ao vídeo, e pode transmitir os dados obtidos para o servi dor de transmissão ex103. Em outras palavras, o terminal funciona como o codificador de imagem, de acordo com um aspecto da presen te descrição.
[00515] O servidor de transmissão ex103 transmite os dados de conteúdo transmitidos para os clientes que solicitam a transmissão. Exemplos de cliente incluem o computador ex111, o dispositivo de jo gos ex112, a câmera ex113, o eletrodoméstico ex114, o smartphone ex115 e terminais dentro da aeronave ex117, que podem decodificar os dados codificados descritos acima. Os dispositivos que recebem os dados transmitidos decodificam e reproduzem os dados recebidos. Em outras palavras, os dispositivos podem, cada um, funcionar como o decodificador de imagem, de acordo com um aspecto da presente descrição.
Processamento Descentralizado
[00516] O servidor de transmissão ex103 pode ser realizado como uma pluralidade de servidores ou computadores entre os quais as ta refas, tal como processamento, gravação e transmissão de dados, são divididas. Por exemplo, o servidor de transmissão ex103 pode ser rea lizado como uma rede de distribuição de conteúdo (CDN) que transmi te conteúdo através de uma rede conectando múltiplos servidores de borda localizados por todo o mundo. Em uma CDN, um servidor de borda fisicamente próximo do cliente é designado dinamicamente para o cliente. O conteúdo é armazenado temporariamente e transmitido para o servidor de borda para reduzir os tempos de carga. No caso, por exemplo, de algum tipo de erro ou mudança na conectividade de corrente, por exemplo, de um pico no tráfego, é possível se transmitir os dados de forma estável em alta velocidade, visto que é possível se evitar as partes afetadas da rede, por exemplo, pela divisão do pro- cessamento entre uma pluralidade de servidores de borda, ou comutar as tarefas de transmissão para um servidor de borda diferente e dar prosseguimento à transmissão.
[00517] A descentralização não está limitada apenas à divisão do processamento para a transmissão; a codificação dos dados captura dos pode ser dividida entre e realizada por terminais, no lado do servi dor, ou ambos. Em um exemplo, na codificação típica, o processamen toé realizado em dois circuitos. O primeiro circuito serve para detectar o quão complicada a imagem é, quadro a quadro, ou cena a cena, ou detectar a carga de codificação. O segundo circuito serve para o pro-cessamento que mantém a qualidade de imagem e aperfeiçoa a efici-ência da 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 pri-meiro circuito de codificação e fazendo com que o lado servidor que recebeu o conteúdo realize o segundo circuito da 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 rea-lizado por um terminal, sejam recebidos e reproduzidos em outro ter minal quase que em tempo real. Isso possibilita a realização de uma transmissão suave em tempo real.
[00518] Em outro exemplo, a câmera ex113 ou similar extrai uma quantidade de característica de uma imagem, comprime os dados re-lacionados 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 quanti dade de característica e altera a precisão de quantização de acordo para realizar a compressão adequada para o significado (ou signifi- cância de conteúdo) da imagem. Os dados de quantidade de caracte rística são particularmente efetivos no aperfeiçoamento da precisão e eficiência da previsão de vetor de movimento durante a segunda pas-sagem de compressão realizada pelo servidor. Ademais, a codificação que possui uma carga de processamento relativamente baixa, tal co mo a 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.
[00519] Em outro exemplo, existem casos nos quais uma pluralida de de vídeos aproximadamente da mesma cena são capturados por uma pluralidade de terminais, por exemplo, em um estádio, um shop ping 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, com base em unidade. As unidades podem ser, por exemplo, grupos de imagens (GOP), imagens ou tiles resultantes da divisão de uma imagem. Isso possibilita a redução dos tempos de carga e a obtenção da transmis são que está mais próxima do tempo real.
[00520] Visto que os vídeos são aproximadamente da mesma cena, o gerenciamento e/ou as instruções podem ser realizados pelo servi dor, de modo que os vídeos capturados pelos terminais possam sofrer referência cruzada. Adicionalmente, o servidor pode receber os dados codificados dos terminais, alterar a relação de referência entre os itens de dados, ou corrigir ou substituir as imagens propriamente ditas e, então, realizar a codificação. Isso possibilita a geração de uma se quência com qualidade e eficiência aumentadas para os itens individu ais de dados.
[00521] Adicionalmente, o servidor pode transmitir dados de vídeo depois de realizar a transcodificação para converter o formato de codi ficação de dados de vídeo. Por exemplo, o servidor pode converter o formato de codificação de MPEG para VP (por exemplo, VP9) e pode converter H.264 em H.265.
[00522] Dessa forma, a codificação pode ser realizada por um ter minal 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, al guns ou todos os processos realizados pelo terminal podem ser reali zados pelo servidor. Isso também se aplica aos processos de decodifi- cação.
3D, múltiplos ângulos
[00523] 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 ângulos diferentes, por uma pluralidade de terminais, tal como a câme ra ex113 e/ou o smartphone ex115. Os vídeos capturados pelos termi-naissão combinados com base em, por exemplo, uma relação de po sição relativa obtida separadamente entre os terminais, ou regiões em um vídeo possuindo pontos de característica combinados.
[00524] Em adição à codificação de imagens em movimento bidi-mensionais, 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 em um vídeo da mesma cena capturada a partir de ângulos diferentes. O servidor pode codificar, separadamente, os da dos tridimensionais gerados a partir de, por exemplo, uma nuvem de pontos e, com base em um resultado do reconhecimento ou rastrea- mento de uma pessoa ou objeto utilizando-se 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 plu ralidade de terminais.
[00525] Isso permite que o usuário aproveite uma cena por meio da seleção livre de vídeos correspondendo aos terminais de captura de vídeo, e permite que o usuário aproveite 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 grava do a partir de ângulos relativamente diferentes, e o servidor pode mul- tiplexar o áudio a partir de um ângulo ou espaço específico com o ví deo correspondente, e transmitir o vídeo e o áudio multiplexados.
[00526] Recentemente, o conteúdo, que é um composto de mundo real e um mundo virtual, tal como conteúdo de realidade virtual (VR) e realidade aumentada (AR), tem se tornado popular. No caso de ima gens VR, o servidor pode criar imagens a partir dos pontos de vista de ambos os olhos esquerdo e direito, e realizar a codificação que tolera referência entre as imagens de dois pontos de vista, tal como sequên cias separadas sem referência. Quando as imagens são decodificadas como sequências separadas, as sequências podem ser sincronizadas quando reproduzidas, de modo a recriar um espaço tridimensional vir tual de acordo com o ponto de vista do usuário.
[00527] No caso de imagens AR, o servidor sobrepõe a informação do objeto virtual existente a um espaço virtual na informação de câme ra 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 de objeto virtual e dados tridimensionais, gerar imagens bidimensionais com base no movimento da perspectiva do usuário e, então, gerar dados sobrepos tos pela conexão contínua das imagens. Alternativamente, o decodifi- cador 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 dados sobrepostos com base em dados tridi mensionais armazenados no servidor de acordo com o movimento re cebido e codificar e transmitir os dados sobrepostos gerados para o decodificador. Note-se que os dados sobrepostos incluem, em adição aos valores RGB, um valor α indicando transparência, e o servidor configura o valor α para seções além do objeto gerado a partir dos da dos tridimensionais, por exemplo, 0, e pode realizar a codificação en quanto essas seções estã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 as áreas além do objeto são configuradas como fundo.
[00528] A decodificação de dados transmitidos de forma similar po de ser realizada pelo cliente (isso é, os terminais), no lado do servidor, ou dividida 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, en-quanto 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 pessoal ou terminais de um espectador ou espectadores da TV. Isso possibilita que os espectadores compartilhem uma visão ampla além de cada espectador verificar sua área designada, ou ins-pecionar uma região em uma aproximação mais detalhada.
[00529] Em situações nas quais uma pluralidade de conexões sem fio é possível através de distâncias próximas, intermediárias e distan tes, internamente ou externamente, pode ser possível se receber de forma contínua o conteúdo utilizando um padrão de sistema de trans missão, tal como MPEG-DASH. O usuário pode comutar entre dados em tempo real, enquanto seleciona livremente um decodificador ou aparelho de exibição que inclui o terminal do usuário, monitores dis postos internamente ou externamente, etc. Ademais, utilizando-se, por exemplo, a informação sobre a posição do usuário, a decodificação pode ser realizada enquanto se comuta que terminal manuseia a de- codificação e que terminal manuseia a exibição do conteúdo. Isso pos sibilita o mapeamento e exibição da informação, enquanto o usuário está em movimento a caminho de um destino, na parede de um edifí ciopróximo no qual um dispositivo, capaz de exibir conteúdo, está embutido, ou em parte do chão. Ademais, também é possível se co mutar a taxa de bits dos dados recebidos com base na acessibilidade aos dados codificados em uma rede, tal como quando os dados codifi cadossão armazenados temporariamente em um servidor rapidamen teacessível a partir do terminal de recepção, ou quando os dados co dificadossão copiados para um servidor de borda em um serviço de distribuição de conteúdo.
Codificação Escalonável
[00530] A comutação do conteúdo será descrita com referência a uma sequencia escalonável, ilustrada na Figura 51, 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 da capacidade de escalonamento temporal e/ou espacial de uma sequência, que é alcançada pela divisão e codificação das cama-das, como ilustrado na Figura 51. Note-se que pode haver uma plurali-dade de sequências individuais que possuem o mesmo conteúdo, mas qualidade diferente. Em outras palavras, pela determinação de que camada decodificar com base nos fatores internos, tal como capacida de 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 o conteúdo de baixa resolução e conteúdo de alta resolução, enquanto decodifica. 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 previamente no smartphone ex115 enquanto estava em movimento, o dispositivo pode simplesmente decodificar a mesma transmissão até uma camada diferente, o que reduz a carga no lado do servidor.
[00531] 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 aper-feiç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 ima gem com 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 aumen ta a resolução. Os metadados incluem informação para identificar um coeficiente de filtro linear ou não linear, como utilizado no processa mento de super resolução, ou informação que identifica um valor de parâmetro no processamento de filtro, aprendizado de máquina, ou método de quadrados médios utilizado no processamento de super resolução.
[00532] Alternativamente, uma configuração pode ser fornecida, na qual uma imagem é dividida, por exemplo, em tiles, de acordo, por exemplo, com o significado de um objeto na imagem. No lado do de- codificador, apenas uma região parcial é decodificada pela seleção de um tile para decodificar. 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 la do 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 52, os metadados po dem 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 meta dados indicam, por exemplo, a posição, o tamanho, ou cor do objeto principal.
[00533] Metadados podem ser armazenados em unidades de uma pluralidade de imagens, tal como transmissão, sequência ou unidades de acesso randômico. O lado do decodificador pode obter, por exem plo, o momento no qual uma pessoa específica aparece no vídeo, e pelo encaixe da informação de tempo com a informação de 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
[00534] A Figura 53 ilustra um exemplo de uma tela de exibição de uma página da rede no computador ex111, por exemplo. A Figura 54 ilustra um exemplo de uma tela de exibição de uma página da rede no smartphone ex115, por exemplo. Como ilustrado na Figura 53 e na Figura 54, 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 da rede difere dependendo do dispositivo utilizado para visuali zar a página da rede. Quando uma pluralidade de links de imagem po de ser 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 todo o link de imagem encaixe na tela, o apare lho de exibição (decodificador) pode exibir, como 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.
[00535] Quando um link de imagem é selecionado pelo usuário, o aparelho de exibição realiza a decodificação enquanto fornece a maior prioridade para a camada de base. Note-se que se houver informação no código HTML da página da rede indicando que o conteúdo é esca- lonável, o aparelho de exibição pode decodificar até a camada de aperfeiçoamento. Adicionalmente, a fim de garantir a reprodução em tempo real, antes de uma seleção ser feita ou quando a largura de banda é seriamente 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 de conteúdo para a exibição do conteú do) pela decodificação e exibição apenas de imagens de referência de avanço (imagem I, imagem P, imagem B de referência de avanço). Adicionalmente ainda, o aparelho de exibição pode ignorar, proposi-talmente, a relação de referência entre as imagens, e decodificar de forma aproximada todas as imagens B e P como imagens de referên cia de avanço, e, então, realiza a decodificação normal à medida que o número de imagens recebido com o tempo aumenta.
Acionamento Autônomo
[00536] Quando da transmissão e recepção de imagens estáticas ou dados de vídeo, tal como informação de mapa bi ou tridimensional para o acionamento autônomo ou acionamento assistido de um auto-móvel, o terminal de recepção pode receber, em adição aos dados de imagem pertencentes a uma ou mais camadas, informação, por exem plo, sobre o clima ou construções na estrada como metadados, e as sociar os metadados aos dados de imagem mediante decodificação. Note-se que os metadados podem ser designados por camada e, al ternativamente, podem simplesmente ser multiplexados com dados de imagem.
[00537] Em tal caso, visto que o automóvel, drone, aeronave, etc., contendo o terminal de recepção, é móvel, o terminal de recepção po de receber e realizar, de forma contínua, a decodificação, enquanto comuta entre as estações base dentre as estações base ex106 a ex110, pela transmissão da informação que indica a posição do termi nal de recepção. Ademais, de acordo com a seleção realizada pelo usuário, a situação do usuário e/ou largura de banda de 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, está atualizada.
[00538] No sistema de fornecimento de conteúdo ex100, o cliente pode receber, decodificar e reproduzir, em tempo real, a informação codificada transmitida pelo usuário.
Transmissão do Conteúdo Individual
[00539] No sistema de fornecimento de conteúdo ex100, em adição à alta qualidade de imagem, o conteúdo longo distribuído por uma en tidade de distribuição de vídeo, a transmissão de unidifusão ou multidi- fusão de qualidade de baixa imagem, e o conteúdo curto de um indiví duotambém são possíveis. Tal conteúdo de indivíduos tem mais chances de aumentar ainda mais em termos de popularidade. O servi dor 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 configuração a se guir, por exemplo.
[00540] Em tempo real, enquanto se captura o conteúdo de vídeo ou imagem, ou depois que o conteúdo foi capturado e acumulado, o servidor realiza o processamento de reconhecimento com base nos dados brutos ou dados codificados, tal como processamento de erro de captura, processamento de busca por cena, análise de significado e/ou processamento de detecção de objeto. Então, com base no resul tado do processamento de reconhecimento, o servidor - quanto solici tado ou automaticamente - edita o conteúdo, exemplos do qual inclu em correção, tal como correção de foco e/ou mancha de movimento; remoção de cenas de baixa prioridade, tal como cenas que apresen tam baixo brilho em comparação com as outras imagens, ou fora de foco; ajuste de borda de objeto, e ajuste de tom de cor. O servidor co difica 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 uma dura ção específica que escalona com o comprimento do vídeo original, o servidor pode, em adição às cenas de baixa prioridade descritas aci ma, remover automaticamente cenas com baixo movimento, com base em um resultado de processamento. 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.
[00541] Pode haver casos nos quais o conteúdo individual pode in cluir conteúdo que infringe um direito autoral, direito moral, direito 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 os rostos de pessoas na periferia da cena 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, podem 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 direito autoral, uma região de uma imagem incluindo uma pessoa ou uma região do fundo a ser processada. O servidor pode processar a região especifi-cada, por exemplo, substituindo a região por uma imagem diferente, ou manchando a região. Se a região incluir uma pessoa, a pessoa po de 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.
[00542] Visto que existe uma demanda por visualização em tempo real de conteúdo produzido por indivíduos, que tende a ser pequeno em tamanho de dados, o decodificador primeiro recebe a camada de base como a prioridade mais alta, e realiza 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 cria um ciclo de reprodução, o decodificador pode reproduzir um vídeo de alta qualida de de imagem incluindo a camada de aperfeiçoamento. Se a transmis sã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 início do vídeo, mas pode oferecer uma experiência na qual a qualida de de imagem da transmissão aumenta progressivamente de uma forma inteligente. Isso não está limitado a apenas a codificação esca- lonável; a mesma experiência pode ser oferecida pela configuração de uma única transmissão a partir de uma transmissão de baixa qualida de, reproduzida pela primeira vez, e uma segunda transmissão codifi cada, utilizando-se a primeira transmissão como uma referência.
Outros Exemplos de Implementação e Aplicação
[00543] A codificação e decodificação podem ser realizadas por LSI (conjunto de circuitos de integração de grande escala) ex500 (ver Fi gura 50), que é tipicamente incluída em cada terminal. LSI ex500 pode ser configurada a partir de um único chip ou uma pluralidade de chips. O software para codificar e decodificar as imagens em movimento po de ser integrado a algum tipo de meio de gravação (tal como CD- ROM, disco flexível, ou disco rígido) que seja legível, por exemplo, pe lo computador ex111, e a codificação e decodificação podem ser reali zadas 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 são codificados por LSI ex500 incluído no smartphone ex115.
[00544] Note-se que LSI ex500 pode ser configurado para fazer download e ativar um aplicativo. Em tal caso, o terminal primeiro de termina se é compatível com o esquema utilizado para codificar o con teú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 primeiro faz o download de um codec ou software de aplica tivo e, então, obtém e reproduz o conteúdo.
[00545] Além do exemplo do sistema de fornecimento de conteúdo ex100 que utiliza a Internet ex101, pelo menos o codificador de ima gem em movimento (codificador de imagem) ou o decodificador de imagem em movimento (decodificador de imagem) descritos nas mo dalidades acima podem ser implementados 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 as ondas de rádio de difusão sobrepostas aos dados de áudio e vídeo multiple- xados utilizando, por exemplo, um satélite, apesar de isso ser direcio nado para multidifusão, ao passo que a unidifusão é mais fácil com o sistema de fornecimento de conteúdo ex100.
Configuração de Hardware
[00546] A Figura 55 ilustra detalhes adicionais do smartphone ex115 ilustrado na Figura 50. A Figura 56 ilustra um exemplo de confi guração do smartphone ex115. O smartphone ex115 inclui a antena ex450 para transmitir e receber ondas de rádio para e da estação base ex100, câmera ex465 capaz de capturar o vídeo e as imagens estáti cas, e o monitor ex458 que exibe dados decodificados, tal como o ví deo capturado pela câmera ex465 e vídeo recebido pela antena ex450. O smartphone ex115 inclui, adicionalmente, a interface de usu ário ex466, tal como um painel de toque, uma unidade de saída de áu dio ex457, tal como um alto falante para enviar fala ou outro áudio, unidade de entrada de áudio ex456, tal como um microfone para en trada de áudio, memória ex467 capaz de armazenar dados decodifica dos, tal como vídeo ou imagens estáticas capturados, áudio gravado, vídeo ou imagens estáticas recebidos, e correio, além de dados deco dificados, e a partição ex464 que é uma interface para SIM ex468, pa ra autorizar o acesso a uma rede e vários dados. Note-se que a me mória externa pode ser utilizada em vez da memória ex467.
[00547] O controlador principal ex460, que controla de forma pro funda o monitor ex458 e a interface de usuário ex466, o circuito de su primento de energia ex461, o controlador de entrada 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, modula- dor/demodulador ex452, multiplexador/desmultiplexador ex453, pro cessador de sinal de áudio ex454, partição ex464, e memória ex467 são conectados através do barramento ex470.
[00548] Quando o usuário liga o botão de energia do circuito de su-primento de energia ex461, o smartphone ex115 é energizado para um estado operacional, e cada componente é suprido com energia prove-niente de um pacote de bateria.
[00549] O smartphone ex115 realiza o processamento, por exem plo, de chamada e transmissão de dados, com base no controle reali zado pelo controlador principal ex460, que inclui uma CPU, ROM e RAM. Quando realiza as chamadas, um sinal de áudio gravado pela unidade de entrada de áudio ex456 é convertido em um sinal de áudio digital pelo processador de sinal de áudio ex454, ao qual o processa mento de espectro de espalhamento é aplicado pelo modula- dor/demodulador ex452 e conversão de digital para analógico, e o pro cessamento de conversão de frequência é aplicado pelo transmis- sor/receptor ex451, e o sinal resultante é transmitido através da antena ex450. Os dados recebidos são amplificados, convertidos em frequên cia e convertidos de analógico para digital, o espectro de espalhamen to inverso é processado pelo modulador/demodulador ex452, converti do 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 são transmitidos pelo controlador principal ex460 através do controlador de entrada de interface ex462 com base na operação da interface de usuário ex466 do corpo principal, por exemplo. O proces samento 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 movi mento 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 multiplexa- dor/desmultiplexador ex453. O processador de sinal de áudio ex454 codifica um sinal de áudio gravado pela unidade de entrada de áudio ex456, enquanto a câmera ex465 está capturando um vídeo ou ima-gemestática, e transmite os dados de áudio codificados para o multi- plexador/desmultiplexador ex453. O multiplexador/desmultiplexador ex453 multiplexa os dados de vídeo codificados e os dados de áudio codificados utilizando um esquema determinado, modula e converte os dados utilizando o modulador/demodulador (circuito modula- dor/demodulador) ex452 e transmissor/receptor ex451, e transmite o resultado através da antena ex450.
[00550] Quando o vídeo anexado a uma mensagem de correio ele trônico ou um chat, ou um vídeo conectado a partir de uma página da rede, é recebido, por exemplo, a fim de decodificar os dados multiple- xados recebidos através da antena ex450, o multiplexa- dor/desmultiplexador ex453 desmultiplexa os dados multiplexados pa ra 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, supre os dados de vídeo codificados para o processador de sinal de vídeo ex455 atra vés do barramento sincronizado ex470, e supre os dados de áudio co dificados para o processador de sinal de áudio ex454 através do bar- ramento 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 descrito 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 casos nos 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 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 ape nas quando uma entrada, tal como quando o usuário clica nos dados de vídeo, é recebida.
[00551] Apesar de o smartphone ex115 ter sido utilizado no exem plo acima, três 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 multiple- xados obtidos como resultado de os dados de vídeo serem multiplexa- dos com dados de áudio é recebido ou transmitido. Os dados multiple- xados, no entanto, podem ser dados de vídeo multiplexados com da dos além de dados de áudio, tal como dados de texto relacionados com o vídeo. Adicionalmente, os dados de vídeo propriamente ditos, em vez dos dados multiplexados, podem ser recebidos ou transmiti dos.
[00552] Apesar de o controlador principal ex460, incluindo uma CPU, ser descrito como controlando os processos de codificação ou decodificação, vários terminais frequentemente incluem GPUs. De acordo, uma configuração é aceitável, na qual uma grande área é pro-cessada 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 tem po de codificação, mantendo a natureza de tempo real da transmissão, e reduzindo o retardo. Em particular, o processamento referente à es- timativa 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 em unidades de imagens, por exemplo, todas de uma vez.
Aplicabilidade Industrial
[00553] A presente descrição é aplicável a um receptor de televi são, a um gravador de vídeo digital, a uma navegação em automóvel, a um telefone móvel, a uma câmera digital, a uma câmera de vídeo digital, a um sistema de teleconferência, a um espelho eletrônico, etc. Marcas de Referência 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 200 decodificador 202 decodificador por entropia 1000 processamento 1201 determinador de limite 1202,1204, 1206 comutador 1203 determinador de filtro 1025 executor de filtragem 1207 determinador de característica de filtragem 1208 determinador de processamento a1, b1 processador b1, b2 memória

Claims (4)

1. Codificador que codifica um vídeo, o codificador caracte-rizado pelo fato de que compreende: um conjunto de circuitos; e uma memória acoplada ao conjunto de circuitos, em que um modo de predição para um bloco atual a ser codificado é um modo afim, e em operação, o conjunto de circuitos: deriva um vetor de movimento base a ser usado em predi-çãodo bloco atual; deriva um primeiro vetor de movimento diferente do vetor de movimento base; deriva uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimento base e o primeiro vetor de movimento; determina se a diferença de vetor de movimento é maior do que um limite; define um segundo vetor de movimento para um primeiro valor quando a diferença de vetor de movimento for determinada como sendo maior do que limite, e define o segundo vetor de movimento pa ra um segundo valor sendo diferente do primeiro valor quando a dife rença de vetor de movimento for determinada como não sendo maior do que limite; e codifica o bloco atual usando o segundo vetor de movimen to, em que o conjunto de circuitos determina se a diferença de vetor de movimento é maior do que o limite como segue: a diferença de vetor de movimento é determinada como sendo maior do que o limite quando (i) um valor absoluto de um com-ponente horizontal da diferença de vetor de movimento for maior do que um primeiro valor de limite do limite ou (ii) um valor absoluto de um componente vertical da diferença de vetor de movimento é maior do que um segundo valor de limite do limite; e a diferença de vetor de movimento é determinada como não sendo maior do que o limite quando (i) o valor absoluto do compo nente horizontal da diferença de vetor de movimento não for maior do que primeiro valor de limite do limite e (ii) o valor absoluto do compo nente vertical da diferença de vetor de movimento não é maior do que o segundo valor de limite do limite.
2. Decodificador que decodifica um vídeo, caracterizado pelo fato de que compreende: conjunto de circuitos; e memória acoplada ao conjunto de circuitos, em que um modo de predição para um bloco atual a ser decodifica doé um modo afim, e em operação, o conjunto de circuitos: deriva um vetor de movimento base a ser usado em predi-çãodo bloco atual; deriva um primeiro vetor de movimento diferente do vetor de movimento base; deriva uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimento base e o primeiro vetor de movimento; determina se a diferença de vetor de movimento é maior do que um limite; define um segundo vetor de movimento para um primeiro valor quando a diferença de vetor de movimento for determinada como sendo maior do que o limite, e define o segundo vetor de movimento para um segundo valor sendo diferente do primeiro valor quando a di ferença de vetor de movimento for determinada como não sendo maior do que o limite; e decodifica o bloco atual usando o segundo vetor de movi-mento, em que em que o conjunto de circuitos determina se a diferença de vetor de movimento é maior do que o limite como segue: a diferença de vetor de movimento é determinada como sendo maior do que o limite quando (i) um valor absoluto de um com ponente horizontal da diferença de vetor de movimento for maior do que um primeiro valor de limite do limite ou (ii) um valor absoluto de um componente vertical da diferença de vetor de movimento é maior do que um segundo valor de limite do limite; e a diferença de vetor de movimento é determinada como não sendo maior do que o limite quando (i) o valor absoluto do compo nente horizontal da diferença de vetor de movimento não for maior do que primeiro valor de limite do limite e (ii) o valor absoluto do compo nente vertical da diferença de vetor de movimento não é maior do que o segundo valor de limite do limite.
3. Método de codificação para codificar um vídeo, caracte-rizado pelo fato de que um modo de predição para um bloco atual a ser codificado é um modo afim, o método de codificação compreen dendo: derivar um vetor de movimento base a ser usado em predi-çãodo bloco atual; derivar um primeiro vetor de movimento diferente do vetor de movimento base; derivar uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimento base e o primeiro vetor de movimento; determinar se a diferença de vetor de movimento é maior do que um limite; definir um segundo vetor de movimento para um primeiro valor quando a diferença de vetor de movimento for determinada como sendo maior do que o limite, e definir o segundo vetor de movimento para um segundo valor sendo diferente do primeiro valor quando a di ferença de vetor de movimento for determinada como não sendo maior do que o limite; e codificar o bloco atual usando o segundo vetor de movi mento, em que determinar se a diferença de vetor de movimento é maior do que o limite como segue: a diferença de vetor de movimento é determinada como sendo maior do que o limite quando (i) um valor absoluto de um com-ponente horizontal da diferença de vetor de movimento for maior do que um primeiro valor de limite do limite ou (ii) um valor absoluto de um componente vertical da diferença de vetor de movimento é maior do que um segundo valor de limite do limite; e a diferença de vetor de movimento é determinada como não sendo maior do que o limite quando (i) o valor absoluto do compo nente horizontal da diferença de vetor de movimento não for maior do que primeiro valor de limite do limite e (ii) o valor absoluto do compo nente vertical da diferença de vetor de movimento não é maior do que o segundo valor de limite do limite.
4. Método de decodificação para decodificar um vídeo, ca-racterizado pelo fato de que um modo de predição para um bloco atual a ser decodificado é um modo afim, o método de decodificação compreendendo: derivar um vetor de movimento base a ser usado em predi-çãodo bloco atual; derivar um primeiro vetor de movimento diferente do vetor de movimento base; derivar uma diferença de vetor de movimento com base em uma diferença entre o vetor de movimento base e o primeiro vetor de movimento; determinar se a diferença de vetor de movimento é maior do que um limite; definir um segundo vetor de movimento para um primeiro valor quando a diferença de vetor de movimento for determinada como sendo maior do que o limite, e definir o segundo vetor de movimento para um segundo valor sendo diferente do primeiro valor quando a di ferença de vetor de movimento for determinada como não sendo maior do que o limite; e decodificar o bloco atual usando o segundo vetor de movi-mento, em que determinar se a diferença de vetor de movimento é maior do que o limite como segue: a diferença de vetor de movimento é determinada como sendo maior do que o limite quando (i) um valor absoluto de um com-ponente horizontal da diferença de vetor de movimento for maior do que um primeiro valor de limite do limite ou (ii) um valor absoluto de um componente vertical da diferença de vetor de movimento é maior do que um segundo valor de limite do limite; e a diferença de vetor de movimento é determinada como não sendo maior do que o limite quando (i) o valor absoluto do compo nente horizontal da diferença de vetor de movimento não for maior do que primeiro valor de limite do limite e (ii) o valor absoluto do compo nente vertical da diferença de vetor de movimento não é maior do que o segundo valor de limite do limite.
BR122023027389-3A 2018-08-27 2019-08-09 Codificador, decodificador, método de codificação e método de decodificação BR122023027389A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/723,302 2018-08-27

Publications (1)

Publication Number Publication Date
BR122023027389A2 true BR122023027389A2 (pt) 2024-05-28

Family

ID=

Similar Documents

Publication Publication Date Title
EP3941063A1 (en) Encoding device, decoding device, encoding method, and decoding method
CN113678443B (zh) 编码装置、解码装置、编码方法、解码方法和记录介质
EP3826305A1 (en) Coding device, decoding device, coding method, and decoding method
TWI776895B (zh) 編碼裝置及解碼裝置
EP3907990A1 (en) Coding device, decoding device, coding method, and decoding method
CN113678442A (zh) 用于视频编码的系统和方法
BR112020000219A2 (pt) codificação, método de codificação, decodificador e método de decodificação
BR112021001245A2 (pt) codificador, decodificador, método de codificação e método de decodificação
CN118612430A (zh) 编码装置、解码装置以及非暂时性计算机可读介质
EP3849196A1 (en) Encoding device, decoding device, encoding method, and decoding method
BR112021011019A2 (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
BR112020021187A2 (pt) codificador, decodificador, método de codificação, e método de decodificação
BR122021025014A2 (pt) Codificador, decodificador e mídia legível por computador não transitória
BR122023027389A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR122023027380A2 (pt) Codificador e decodificador
BR122023027340A2 (pt) Codificador e decodificador
BR122023027365A2 (pt) Método de codificação e método de decodificação
BR122023027336A2 (pt) Método de codificação e método de decodificação
CN113994704B (zh) 编码装置、解码装置、编码方法和解码方法
CN114097245B (zh) 编码装置、解码装置、编码方法和解码方法
BR122023027381A2 (pt) Método de codificação e método de decodificação
BR122023027391A2 (pt) Codificador e decodificador
BR122023027393A2 (pt) Método de codificação e método de decodificação
BR122023027355A2 (pt) Codificador, decodificador, método de codificação e método de decodificação