BR122023027451A2 - Método de codificação e método de decodificação - Google Patents

Método de codificação e método de decodificação Download PDF

Info

Publication number
BR122023027451A2
BR122023027451A2 BR122023027451-2A BR122023027451A BR122023027451A2 BR 122023027451 A2 BR122023027451 A2 BR 122023027451A2 BR 122023027451 A BR122023027451 A BR 122023027451A BR 122023027451 A2 BR122023027451 A2 BR 122023027451A2
Authority
BR
Brazil
Prior art keywords
block
partition
pixels
blocks
mode
Prior art date
Application number
BR122023027451-2A
Other languages
English (en)
Inventor
Tadamasa Toma
Takahiro Nishi
Kiyofumi Abe
Ryuichi KANOH
Chong Soon Lim
Sughosh Pavan Shashidhar
Ru Ling Liao
Hai Wei Sun
Han Boon Teo
Jing Ya Li
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 BR122023027451A2 publication Critical patent/BR122023027451A2/pt

Links

Abstract

A presente invenção refere-se a um dispositivo de codifica- ção (codificador) (100) que executa divisão em uma pluralidade de blocos utilizando um conjunto de modos de divisão de bloco obtido combinando um ou mais modos de divisão de bloco os quais definem tipos de divisão. O conjunto de modos de divisão de bloco compreende: um primeiro modo de divisão de bloco no qual o número de divisões e a direção de divisão para dividir um primeiro bloco são definidos; e um segundo modo de divisão de bloco no qual o número de divisões e a direção de divisão para dividir um segundo bloco, o qual é um dos blocos adquiridos pela divisão do primeiro bloco são definidos. Quando uma divisão no primeiro modo de divisão resulta em três blocos, o segundo bloco é o bloco central dentre os blocos adquiridos dividindo o primeiro bloco, e a direção de divisão do segundo modo de divisão de bloco é a mesma que a direção de divisão do primeiro modo de divisão de bloco, então o segundo modo de divisão de bloco inclui somente um modo de divisão de bloco no qual uma divisão resulta em três blocos.

Description

CAMPO DA TÉCNICA
[0001] A presente descrição refere-se a métodos e dispositivos para codificar e decodificar vídeo (codificador e decodificador de vídeo) e imagens utilizando partição de bloco.
ANTECEDENTES DA TÉCNICA
[0002] Em métodos de codificação de imagem e vídeo convencio nais, uma imagem é tipicamente particionada em blocos e os processos de codificação e decodificação são executados no nível de bloco. No desenvolvimento de padrões de vídeo recente, os processos de codificação e decodificação podem ser realizados em vários tamanhos de bloco outros que tamanhos de 8x8 ou 16x16 típicos. Em uma imagem, uma faixa de tamanhos de 4x4 a 256x256 pode ser utilizada para processos de codificação e decodificação de uma imagem.
LISTA DE CITAÇÕES LITERATURA NÃO DE PATENTE
[0003] NPL 1: H.265 (ISO/IEC 23008-2 HEVC (Codificação de Ví deo de Alta Eficiência))
SUMÁRIO DA INVENÇÃO PROBLEMA TÉCNICO
[0004] Para representar a faixa de tamanhos de 4x4 a 256x256, informações de particionamento de bloco, tais como modos de partição de bloco (por exemplo, árvore quádrupla, árvore binária, árvore ternária) e sinalizadores de partição (por exemplo sinalizador de divisão) são determinadas e sinalizadas para um bloco. O excesso de sinalização aumenta quando a profundidade de partição aumenta. Então, o excesso aumentado reduz a eficiência de compressão de vídeo.
[0005] Em vista disto, um codificador de acordo com um aspecto da presente descrição provê um codificador, e similares, capazes de aperfeiçoar a eficiência de compressão em codificação de informações de particionamento de bloco.
SOLUÇÃO PARA O PROBLEMA
[0006] Um codificador de acordo com um aspecto da presente descrição é um codificador que codifica uma imagem e inclui: um pro-cessador; e uma memória, em que o processador inclui: uma determi-nador de partição de bloco que particiona a imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e uma unidade de codificação que codifica a pluralidade de blocos, o conjunto de modos de partição de bloco inclui um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado, e quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco inclui somente um modo de partição de bloco que indica que o número total de partições é três.
[0007] Um decodificador de acordo com um aspecto da presente descrição é um decodificador que decodifica um sinal codificado e inclui: um processador; e uma memória, em que o processador inclui: um determinador de partição de bloco que particiona o sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e uma unidade de decodificação que decodifica a pluralidade de blocos, o conjunto de modos de partição de bloco inclui um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado, e quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco inclui somente um modo de partição de bloco que indica que o número total de partições é três.
[0008] Deve ser notado que os aspectos gerais e específicos aci ma descritos podem ser implementados utilizando um sistema, um mé-todo, um circuito integrado, um programa de computador, ou um meio de gravação legível por computador, tal como um CD-ROM, ou qual-quercombinação arbitrária de sistemas, métodos, circuitos integrados, programas de computador ou meio de gravação legível por computador.
EFEITO VANTAJOSO DA INVENÇÃO
[0009] A presente descrição permite o aperfeiçoamento de eficiên cia de compressão na codificação de informações de particionamento de bloco.
BREVE DESCRIÇÃO DOS DESENHOS
[0010] Figura 1 é um diagrama de blocos que ilustra uma configu- ração funcional do codificador de acordo com a Modalidade 1. Figura 2 ilustra um exemplo de divisão de bloco de acordo com a Modalidade 1. Figura 3 é um gráfico que indica funções básicas de trans-formada para cada tipo de transformada. Figura 4A ilustra um exemplo de uma forma de filtro utilizado em ALF. Figura 48 ilustra outro exemplo de uma forma de filtro utili-zado em ALF. Figura 4C ilustra outro exemplo de uma forma de filtro utili-zado em ALF. Figura 5A ilustra 67 modos de intrapredição utilizados em intrapredição. Figura 58 é um fluxograma para ilustrar um esboço de um processo de correção de imagem de predição executado através de processamento de OBMC. Figura 5C é um diagrama conceitual para ilustrar um esboço de um processo de correção de imagem de predição executado através de processamento de OBMC. Figura 5D ilustra um exemplo de FRUC. Figura 59 é para ilustrar coincidência de padrão (coincidência bilateral) entre dois blocos ao longo de uma trajetória de movimento. Figura 60 é para ilustrar coincidência de padrão (coincidência de gabarito) entre um gabarito na imagem corrente e um bloco em uma imagem de referência. Figura 61 é para ilustrar um modelo assumindo um movi-mento linear uniforme. Figura 9A é para ilustrar derivar um vetor de movimento de cada sub-bloco com base em vetores de movimento de blocos vizi- nhos. Figura 98 é para ilustrar um esboço de um processo para derivar um vetor de movimento através de modo de mesclagem. Figura 9C é um diagrama conceitual para ilustrar um esboço de processamento de DMVR. Figura 9D é para ilustrar um esboço de um método de ge-ração de imagem de predição que utiliza um processo de correção de luminância executado através de processamento de LIC. Figura 99 é um diagrama de blocos que ilustra uma configu-ração funcional do dispositivo de decodificação de acordo com a Mo-dalidade 1. Figura 100 é um fluxograma de um processo de codificação de vídeo de acordo com a Modalidade 2. Figura 101 é um fluxograma de um processo de decodifica- ção de vídeo de acordo com a Modalidade 2. Figura 102 é um fluxograma de um processo de codificação de vídeo de acordo com a Modalidade 3. Figura 103 é um fluxograma de um processo de decodifica- ção de vídeo de acordo com a Modalidade 3. Figura 104 é um diagrama de blocos que ilustra a estrutura de um codificador de vídeo / imagem de acordo com a Modalidade 2 ou 3. Figura 105 é um diagrama de blocos que ilustra a estrutura de um decodificador de vídeo / imagem de acordo com a Modalidade 2 ou 3. Figura 106 ilustra exemplos de possíveis localizações de um primeiro parâmetro em um fluxo de bits de vídeo comprimido de acordo com a Modalidade 2 ou 3. Figura 107 ilustra exemplos de possíveis localizações de um segundo parâmetro em um fluxo de bits de vídeo comprimido de acor- do com a Modalidade 2 ou 3. Figura 108 ilustra exemplo de um segundo parâmetro se-guindoapós um primeiro parâmetro de acordo com a Modalidade 2 ou 3. Figura 109 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de 2N pixels por N pixels, como ilustrado na etapa (2c), na Modalidade 2. Figura 110 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por 2N pixels, como ilustrado na etapa (2c), na Modalidade 2. Figura 111 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por N pixels, como ilustrado na etapa (2c), na Modalidade 2. Figura 112 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por N pixels, como ilustrado na etapa (2c), na Modalidade 2. Figura 113 ilustra um exemplo de particionar um bloco de 2N pixels por N pixels que utiliza um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Figura 114 ilustra um exemplo de particionar um bloco de N pixels por 2N pixels que utiliza um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Figura 115 ilustra um exemplo de particionar um bloco de N pixels por N pixels que utiliza um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Figura 116 ilustra um exemplo de particionar um bloco de N pixels por N pixels que utiliza um modo de partição selecionado quan- do o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Figura 117 ilustra exemplos de modos de partição para particionar um bloco de N pixels por N pixels na Modalidade 2. (a) até (h) mostram diferentes modos de partição. Figura 118 ilustra exemplos de tipos de partição e direções de partição para particionar um bloco de N pixels por N pixels na Modalidade 3. (1), (2), (3), e (4) são diferentes tipos de partição, (1a), (2a), (3a), e (4a) são diferentes modos de partição de tipos de partição relativos na direção de partição vertical, e (1b), (2b), (3b), e (4b) são diferentes modos de partição de tipos de partição relativos na direção de partição horizontal. Figura 119 ilustra uma vantagem de codificar o tipo de parti-ção antes da direção de partição se comparado com codificar a direção de partição antes do tipo de partição, de acordo com a Modalidade 3. Figura 31A ilustra um exemplo de dividir um bloco em sub- blocos utilizando um conjunto de modos de partição com menos bins em modos de partição de codificação. Figura 31B ilustra um exemplo de dividir um bloco em sub- blocos utilizando um conjunto de modos de partição com menos bins em modos de partição de codificação. Figura 32A ilustra um exemplo de dividir um bloco em sub- blocos utilizando um conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição. Figura 32B ilustra um exemplo de dividir um bloco em sub- blocos utilizando um conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição. Figura 32C ilustra um exemplo de dividir um bloco em sub- blocos utilizando um conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição. Figura 33 ilustra uma configuração total de um sistema de provisão de conteúdo para implementar um serviço de distribuição de conteúdo. Figura 34 ilustra um exemplo de estrutura de codificação em codificação escalável. Figura 35 ilustra um exemplo de estrutura de codificação em codificação escalável. Figura 36 ilustra exemplo de uma tela de display de uma webpage. Figura 37 ilustra exemplo de uma tela de display de uma webpage. Figura 38 ilustra um exemplo de um smartphone. Figura 39 é um diagrama de blocos que ilustra um exemplo de configuração de um smartphone. Figura 40 é um diagrama que ilustra um exemplo de uma restrição sobre um modo de partição para dividir um bloco retangular em três sub-blocos. Figura 41 é um diagrama que ilustra um exemplo de uma restrição sobre um modo de partição para dividir um bloco em dois sub-blocos. Figura 42 é um diagrama que ilustra um exemplo de uma restrição sobre um modo de partição para dividir um bloco quadrado em três sub-blocos. Figura 43 é um diagrama que ilustra um exemplo de uma restrição sobre um modo de partição para dividir um bloco retangular em dois sub-blocos. Figura 44 é um diagrama que ilustra um exemplo de uma restrição com base na direção de partição de um modo de partição para dividir um bloco não retangular em dois sub-blocos. Figura 45 é um diagrama que ilustra um exemplo de uma direção válida de partição de um modo de partição para dividir um blo-conão retangular em dois sub-blocos.
DESCRIÇÃO DE MODALIDADES EXEMPLARES
[0011] Daqui em diante, modalidades serão descritas em detalhes com referência aos desenhos.
[0012] Note que cada uma das modalidades abaixo descritas mos tra um exemplo geral ou específico. Os valores numéricos, formas, materiais, componentes, a disposição e conexão dos componentes, etapas, ordem das etapas, etc., indicados nas seguintes modalidades são meros exemplos, e portanto, não pretendem limitar o escopo das reivindicações. Mais ainda, entre os componentes nas seguintes mo-dalidades, aqueles não recitados em nenhuma das reivindicações in-dependentes que definem os conceitos inventivos mais amplos estão descritas como componentes opcionais.
MODALIDADE 1
[0013] Primeiro, um esboço da Modalidade 1 será apresentado como um exemplo de um codificador e um decodificador aos quais os processos e/ou configurações apresentados na subsequente descrição de aspectos da presente descrição são aplicáveis. Note que a Modali-dade 1 é meramente um exemplo de um codificador e um decodifica- dor aos quais os processos e/ou configurações apresentados na descrição de aspectos da presente descrição são aplicáveis. Os processos e/ou configurações apresentados na descrição de aspectos da presente descrição podem também ser implementados em um codificador e um decodificador diferente daqueles de acordo com a Modalidade 1.
[0014] Quando os processos e/ou configurações apresentados na descrição de aspectos da presente descrição são aplicados na Moda-lidade 1, por exemplo, qualquer um dos seguintes pode ser executado. (1) referente ao codificador ou ao decodificador de acordo com a Modalidade 1, entre os componentes incluídos no codificador ou no decodificador de acordo com a Modalidade 1, substituir um compo-nente que corresponde a um componente apresentado na descrição de aspectos da presente descrição por um componente apresentado na descrição de aspectos da presente descrição; (2) referindo ao codificador ou ao decodificador de acordo com a Modalidade 1, implementar mudanças discricionárias para funções ou processos implementados executados por um ou mais com-ponentesincluídos no codificador ou no decodificador de acordo com a Modalidade 1, tal como adição , substituição, ou remoção, etc., de tais funções ou processos implementados, então substituir um componente que corresponde a um componente apresentado na descrição de as-pectos da presente descrição por um componente apresentado na descrição de aspectos da presente descrição; (3) referindo ao método implementado pelo codificador ou o decodificador de acordo com a Modalidade 1, implementar mudanças discricionárias tais como adição de processos e/ou substituição, remo-ção de um ou mais dos processos incluídos no método, e então substituir um processo que corresponde a um processo apresentado na descrição de aspectos da presente descrição por um processo apresentado na descrição de aspectos da presente descrição; (4) combinar um ou mais componentes incluídos no codifi-cador ou no decodificador de acordo com a Modalidade 1 com um componente apresentado na descrição de aspectos da presente des-crição, um componente que inclui uma ou mais funções incluídas em um componente apresentado na descrição de aspectos da presente descrição, ou um componente que implementa um ou mais processos implementados por um componente apresentado na descrição de as-pectos da presente descrição; (5) combinar um componente que inclui uma ou mais funções incluídas em um ou mais componentes incluídos no codificador ou no decodificador de acordo com a Modalidade 1, ou um componente que implementa um ou mais processos implementados por um ou mais componentes incluídos no codificador ou no decodificador de acordo com a Modalidade 1 com um componente apresentado na descrição de aspectos da presente descrição, um componente que inclui uma ou mais funções incluídas em um componente apresentado na descrição de aspectos da presente descrição, ou um componente que implementa um ou mais processos implementados por um componente apresentado na descrição de aspectos da presente descrição; (6) referente ao método implementado pelo codificador ou o decodificador de acordo com a Modalidade 1, entre os processos in-cluídos no método, substituir um processo que corresponde a um pro-cesso apresentado na descrição de aspectos da presente descrição por um processo apresentado na descrição de aspectos da presente descrição; e (7) combinar um ou mais processos incluídos no método implementado pelo codificador ou o decodificador de acordo com a Modalidade 1 com um processo apresentado na descrição de aspectos da presente descrição.
[0015] Note que a implementação dos processos e/ou configura ções apresentados na descrição de aspectos da presente descrição não está limitada aos exemplos acima. Por exemplo, os processos e/ou configurações apresentados na descrição de aspectos da presente descrição podem ser implementados em um dispositivo utilizado para um propósito diferente do codificador de imagem móvel / imagem ou do decodificador de imagem móvel / imagem descrito na Modalidade 1. Mais ainda, os processos e/ou configurações apresentados na descrição de aspectos da presente descrição podem ser independentemente implementados. Mais ainda, os processos e/ou configurações descritos em diferentes aspectos podem ser combinados. Esboço de Codificador Primeiro, o codificador de acordo com a Modalidade 1 será esboçado. A Figura 1 é um diagrama de blocos que ilustra uma configuração funcional do codificador 100 de acordo com a Modalidade 1. O codificador 100 é um codificador de imagem móvel / imagem que codifica uma imagem móvel / imagem bloco por bloco.
[0016] Como ilustrado na Figura 1, o codificador 100 é um disposi tivo que codifica uma imagem bloco por bloco, e inclui um divisor 102, subtrator 104, transformador 106, quantizador 108, codificador de en-tropia 110, quantizador inverso 112, transformador inverso 114, soma- dor 116, memória de blocos 118, filtro de loop 120, memória de quadros 122, intrapreditor 124, interpreditor 126, e controlador de predição 128.
[0017] O codificador 100 é realizado como, por exemplo, um pro cessor e memória genéricos. Neste caso, quando um programa de sof-tware armazenado na memória é executado pelo processador, o pro-cessador funciona como um divisor 102, subtrator 104, transformador 106, quantizador 108, codificador de entropia 110, quantizador inverso 112, transformador inverso 114, somador 116, filtro de loop 120, intra- preditor 124, interpreditor 126, e controlador de predição 128. Alterna-tivamente, o codificador 100 pode ser realizado como um ou mais cir-cuitoseletrônicos dedicados que correspondem ao divisor 102, subtra- tor 104, transformador 106, quantizador 108, codificador de entropia 110, quantizador inverso 112, transformador inverso 114, somador 116, filtro de loop 120, intrapreditor 124, interpreditor 126, e controla- dor de predição 128.
[0018] Daqui em diante, cada componente incluído no codificador 100 será descrito. Divisor O divisor 102 divide cada imagem incluída em uma imagem móvel in-serida em blocos, e emite cada bloco para o subtrator 104. Por exemplo, o divisor 102 primeiro divide uma imagem em blocos de um tamanho fixo (por exemplo, 128x128). O bloco de tamanho fixo é também referido como unidade de árvore de codificação (CTU). O divisor 102 então divide cada bloco de tamanho fixo em blocos de tamanhos variáveis (por exemplo, 64x64 ou menor), com base em árvore quádrupla recursiva e/ou divisão de bloco de árvore binária. O bloco de tamanho variável é também referido como uma unidade de codificação (CU), uma unidade de predição (PU), ou uma unidade de transformada (TU). Note que nesta modalidade, não há necessidade de diferenciar entre CU, PU, e TU; todos os alguns dos blocos em uma imagem podem ser processados por CU, PU, ou TU.
[0019] A Figura 2 ilustra um exemplo de divisão de bloco de acor do com a Modalidade 1. Na Figura 2, as linhas cheias representam limites de blocos de blocos divididos por divisão de bloco de árvore quádrupla, e as linhas tracejadas representam limites de blocos de blocos divididos por divisão de bloco de árvore binária.
[0020] No presente documento, o bloco 10 é um bloco de 128x128 pixels quadrado (bloco de 128x128). Este bloco de 128x128 10 é primeiro dividido em quadro blocos de 64x64 quadrados (divisão de bloco de quadtree).
[0021] O bloco de 64x64 superior esquerdo é adicionalmente verti calmente dividido em dois blocos de 32x64 retangulares, e o bloco de 32x64 esquerdo e adicionalmente verticalmente dividido em dois blocos de 16x64 retangulares (divisão de bloco de árvore binária). Como um resultado, o bloco de 64x64 superior esquerdo é dividido em dois blocos de 16x64 11 e 12 e um bloco de 32x64 13.
[0022] O bloco de 64x64 superior direito é horizontalmente dividido em dois blocos de 64x32 retangulares 14 e 15 (divisão de bloco de árvore binária).
[0023] O bloco de 64x64 inferior esquerdo é primeiro dividido em quatro blocos de 32x32 quadrados (divisão de bloco de quadtree). O bloco superior esquerdo e o bloco inferior direito entre os quatro blocos de 32x32 são adicionalmente divididos. O bloco de 32x32 superior es-querdo é verticalmente dividido em dois blocos de 16x32 retangulares, e o bloco de 16x32 direito é adicionalmente horizontalmente dividido em dois blocos de 16x16 (divisão de bloco de árvore binária). O bloco de 32x32 inferior direito é horizontalmente dividido em dois blocos de 32x16 (divisão de bloco de árvore binária). Como um resultado, o bloco de 64x64 inferior esquerdo é dividido no bloco de 16x32 16, dois blocos de 16x16 17 e 18, dois blocos de 32x32 19 e 20, e dois blocos de 32x16 21 e 22.
[0024] O bloco de 64x64 inferior direito 23 não é dividido.
[0025] Como acima descrito, na Figura 2, o bloco 10 é dividido em 13 blocos de tamanho variável 11 até 23 com base em divisão de bloco de quadtree recursivo e árvore binária. Este tipo de divisão é também referido como divisão de quadtree mais árvore binária (QTBT).
[0026] Note que na Figura 2, um bloco é dividido em quatro ou dois blocos (divisão de bloco de quadtree ou árvore binária), mas a divisão não está limitada a este exemplo. Por exemplo, um bloco pode ser dividido em três blocos (divisão de bloco ternária). A divisão que inclui tal divisão de bloco ternária é também referida como uma divisão de árvore de múltiplos tipos (MBT). Subtrator O subtrator 104 subtrai um sinal de predição (amostra de predição) de um sinal original (amostra original) por bloco dividido pelo divisor 102. Em outras palavras, o subtrator 104 calcula os erros de predição (tam-bém referidos como resíduos) de um bloco a ser codificado (daqui em diante referido como um bloco corrente). O subtrator 104 então emite os erros de predição calculados para o transformador 106.
[0027] O sinal original é um sinal inserido no codificador 100, e é um sinal que representa uma imagem para cada imagem incluída em uma imagem móvel (por exemplo, um sinal de luma e dois sinais de croma). Daqui em diante, um sinal que representa uma imagem é também referido como uma amostra.
Transformador
[0028] O transformador 106 transforma os erros de predição de domínio espacial em coeficientes de transformada de domínio de fre-quência e emite os coeficientes de transformada para o quantizador 108. Mais especificamente, o transformador 106 aplica, por exemplo, uma transformada de cosseno discreta predefinida (DCT) ou transformada de seno discreta (DST) para erros de predição de domínio espacial.
[0029] Note que o transformador 106 pode adaptavelmente seleci onar um tipo de transformada dentre uma pluralidade de tipos de transformada, e erros de predição de transformada em coeficientes de transformada, utilizando uma função básica de transformada que cor-responde ao tipo de transformada selecionado. Este tipo de transfor-madaé também referida como transformada de núcleos múltiplos explícita (EMT) ou transformada múltipla adaptável (AMT).
[0030] Os tipos de transformada incluem, por exemplo, DCT-II, DCT-V, DCT-VIII, DST-I, e DST-VII. A Figura 3 é um gráfico que indica as funções básicas de transformada para cada tipo de transformada. Na Figura 3, N indica o número de pixels de entrada. Por exemplo, a seleção de um tipo de transformada dentre a pluralidade de tipos de transformada pode depender do tipo de predição (intrapredição e in- terpredição), e pode depender do modo intrapredição.
[0031] As informações que indicam se aplicar tal EMT ou AMT (re feridas como, por exemplo, um sinalizador de AMT) e informação que indicam o tipo de transformada selecionado são sinalizadas no nível de CU. Note que a sinalização de tais informações não precisa ser executada no nível CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de tela lado a lado, ou nível de CTU).
[0032] Mais ainda, o transformador 106 pode aplicar uma trans formadasecundária nos coeficientes de transformada (resultado da transformada). Tal transformada secundária é também referida como transformada secundária adaptável (AST) ou transformada secundária não separável (NSST). Por exemplo, a transformada 106 aplica uma transformada secundária a cada sub-bloco (por exemplo, cada sub- bloco de 4x4) incluído no bloco dos coeficientes de transformada que correspondem aos erros de intrapredição. As informações que indicam se aplicar NSST e as informações relativas à matriz de transformada utilizada em NSST são sinalizadas no nível de CU. Note que a sinali-zação de tais informações não precisa ser executada no nível de CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, ou nível de CTU).
[0033] No presente documento, uma transformada separável é um método no qual uma transformada é executada uma pluralidade de vezes, separadamente executando uma transformada para cada direção de acordo com o número de dimensões inserido. Uma transformadanão separável é um método de executar uma transformada coletiva no qual duas ou mais dimensões em uma entrada multidimensional são coletivamente consideradas como uma única dimensão.
[0034] Em um exemplo de uma transformada não separável, quando a entrada é um bloco de 4x4, o bloco de 4x4 é considerado como uma única rede que inclui 16 componentes, e a transformada aplica uma matriz de transformada de 16x16 na rede.
[0035] Mais ainda, similar ao acima, após um bloco de 4x4 de en trada ser considerado como uma única rede que inclui 16 componentes, uma transformada que executa uma pluralidade de rotações Givens sobre a rede (isto é, uma Transformada de Hypercube-Givens) é também um exemplo de uma transformada não separável. Quantizador
[0036] O quantizador 108 quantiza os coeficientes de transforma da emitidos do transformador 106. Mais especificamente, o quantiza- dor 108 escaneia, em uma ordem de escaneamento predeterminada, os coeficientes de transformada do bloco corrente, e quantiza os coefi-cientes de transformada escaneados com base em parâmetros de quantização (QP) que correspondem aos coeficientes de transformada. O quantizador 108 então emite os coeficientes de transformada quantizados (daqui em diante referidos como coeficientes quantizados) do bloco corrente para o codificador de entropia 110 e o quantizador inverso 112.
[0037] Uma ordem predeterminada é uma ordem para quantizar / quantizar inversamente os coeficientes de transformada. Por exemplo, uma ordem de escaneamento pré-determinada é definida como ordem de frequência ascendente (de baixa para alta frequência) ou ordem de frequência descendente (de alta para baixa frequência).
[0038] Um parâmetro de quantização é um parâmetro que define um tamanho de etapa de quantização (largura de quantização). Por exemplo, se o valor do parâmetro de quantização aumentar, o tamanho de etapa de quantização também aumenta. Em outras palavras, se o valor do parâmetro de quantização aumentar, o erro de quantiza- ção aumenta.
Codificador de Entropia
[0039] O codificador de entropia 110 gera um sinal codificado (flu xo de bits codificado) codificando em comprimento variável os coefici-entes quantizados, os quais são entradas para o quantizador 108. Mais especificamente, o codificador de entropia 110, por exemplo, bi- nariza coeficientes quantizados e codifica em aritmética o sinal binário.
Quantizador Inverso
[0040] O quantizador inverso 112 quantiza inverso os coeficientes quantizados, os quais são entradas do quantizador 108. Mais especifi-camente, o quantizador inverso 112 quantiza inverso, em uma ordem de escaneamento predeterminada, os coeficientes quantizados do bloco corrente. O quantizador inverso 112 então emite os coeficientes de transformada quantizados inversos do bloco corrente para o transfor-mador inverso 114.
Transformador Inverso
[0041] O transformador inverso 114 restaura erros de predição transformando inverso os coeficientes de transformada os quais são entradas do quantizador inverso 112. Mais especificamente, o trans-formador inverso 114 restaura os erros de predição do bloco corrente aplicando uma transformada inversa que corresponde à transformada aplicada pelo transformador 106 nos coeficientes de transformada. O transformador inverso 114 então emite os erros de predição restaurados para o somador 116.
[0042] Note que, como informações são perdidas na quantização, os erros de predição restaurados não coincidem com os erros de pre-diçãocalculados pelo subtrator 104. Em outras palavras, os erros de predição restaurados incluem erros de quantização.
Somador
[0043] O somador 116 reconstrói o bloco corrente somando os er- ros de predição, os quais são entradas do transformador inverso 114, e amostras de predição, as quais são entradas do controlador de pre-dição128. O somador 116 então emite o bloco reconstruído para a memória de blocos 118 e o filtro de loop 120. Um bloco reconstruído é também referido como um bloco decodificado local.
Memória de blocos
[0044] A memória de blocos 118 é um armazenamento para arma zenar blocos em uma imagem a ser codificada (daqui em diante referida como uma imagem corrente) para referência em intrapredição. Mais especificamente, a memória de blocos 118 armazena blocos recons-truídos emitidos do somador 116.
Filtro de Loop
[0045] O filtro de loop 120 aplica um filtro de loop a blocos recons truídos pelo somador 116, e emite os blocos reconstruídos filtrados para memória de quadros 122. Um filtro de loop é um filtro utilizado em um loop de codificação (filtro in-loop), e inclui, por exemplo, um filtro de desbloqueio (DF), um deslocamento adaptável de amostra (SAO) e um filtro de loop adaptável (ALF).
[0046] Em ALF, um filtro de mínimo erro quadrático para remover artefatos de compressão é aplicado. Por exemplo, um filtro dentre uma pluralidade de filtros é selecionado para cada sub-bloco de 2x2 no bioco corrente com base em direção e atividade de gradientes locais, e é aplicado.
[0047] Mais especificamente, primeiro, cada sub-bloco (por exem plo, cada sub-bloco de 2x2) é categorizado em um de uma pluralidade de classes (por exemplo, 15 ou 25 classes). A classificação do sub- bloco é baseada em direcionalidade e atividade de gradiente. Por exemplo, o índice de classificação C é derivado com base em direcionalidade do gradiente D (por exemplo, 0 a 2 ou 0 a 4) e atividade de gradiente A (por exemplo, 0 a 4) (por exemplo, C = 5D + A). Então, com base no índice de classificação C, cada sub-bloco é categorizado em uma de uma pluralidade de classes (por exemplo, 15 ou 25 classes).
[0048] Por exemplo, a direcionalidade de gradiente D é calculada comparando gradientes de uma pluralidade de direções (por exemplo, as direções horizontal, vertical, e duas diagonais). Mais ainda, por exemplo, a atividade de gradiente A é calculada somando gradientes de uma pluralidade de direções e quantizando a soma.
[0049] O filtro a ser utilizado para cada sub-bloco é determinado dentre a pluralidade de filtros com base no resultado de tal categoriza- ção.
[0050] A forma de filtro a ser utilizada em ALF é, por exemplo, uma forma de filtro simétrica circular. A Figura 4A até Figura 4C ilustram exemplos de forma de filtros utilizadas em ALF. A Figura 4A ilustra um filtro em forma de diamante de 5x5, a Figura 4B ilustra um filtro em forma de diamante de 7x7, e a Figura 4C ilustra um filtro em forma de diamante de 9x9. As informações que indicam a forma de filtro estão sinalizadas no nível de imagem. Note que a sinalização de informações que indicam a forma de filtro não precisa ser executada no nível da imagem, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de CU).
[0051] A habilitação ou desabilitação de ALF é determinada no ní vel da imagem ou no nível de CU. Por exemplo, para luma, a decisão de aplicar ALF ou não é feita no nível de CU, e para croma, a decisão de aplicar ALF ou não é feita no nível de imagem. As informações que indicam se ALF está habilitado ou desabilitado são sinalizadas no nível de imagem ou nível CU. Note que a sinalização de informações que indicam se ALF está habilitado ou desabilitado não precisam ser executadas no nível de imagem ou nível de CU, e podem ser executadas em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de telas lado a lado, ou nível de CTU).
[0052] O conjunto de coeficientes para a pluralidade de filtros se lecionáveis (por exemplo, 15 ou 25 filtros) é sinalizado no nível de imagem. Note que a sinalização do conjunto de coeficientes não precisa ser executada no nível de imagem, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de fatia, nível de telas lado a lado, nível de CTU, nível de CU, ou nível de sub-bloco)
Memória de quadros
[0053] A memória de quadros 122 é um armazenamento para ar mazenar imagens de referência utilizadas em interpredição, e é também referido como um armazenamento temporário de quadros. Mais especificamente, a memória de quadros 122 armazena blocos recons-truídos filtrados pelo filtro de loop 120.
Intrapreditor
[0054] O intrapreditor 124 gera um sinal de predição (sinal de in- trapredição) intrapredizendo o bloco corrente com referência a um bloco ou blocos na imagem corrente e armazenados na memória de blocos 118 (também referida como predição intraquadro). Mais especificamente, o intrapreditor 124 gera um sinal de intrapredição por intra- predição com referência a amostras (por exemplo, valores de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco corrente, e então emite o sinal de intrapredição para o controlador de predição 128.
[0055] Por exemplo, o intrapreditor 124 executa intrapredição utili zando um modo dentre uma pluralidade de modos de intrapredição predefinidos. Os modos de intrapredição incluem um ou mais modos de predição não direcional e uma pluralidade de modos de predição direcional.
[0056] Os um ou mais modos de predição não direcional incluem, por exemplo, modo de predição plana e modo de predição DC defini- dos no padrão H.265 / codificação de vídeo de alta eficiência (HEVC) (ver NPL 1).
[0057] A pluralidade de modos de predição direcional inclui, por exemplo, os 33 modos de predição direcional definidos no padrão H.265 / HEVC. Note que a pluralidade de modos de predição direcional pode ainda incluir 32 modos de predição direcional além dos 33 modos de predição direcional (para um total de 65 modos de predição direcional). A Figura 5A ilustra 67 modos de intrapredição utilizados em intrapredição (dois modos de predição não direcional e 65 modos de predição direcional). As setas cheias representam as 33 direções definidas no padrão H.265 / HEVC, e as setas tracejadas representam as 32 direções adicionais.
[0058] Note que um bloco de luma pode ser referenciado em intra- predição de bloco de croma. Em outras palavras, um componente de croma do bloco corrente pode ser predito com base em um componente de luma do bloco corrente. Tal intrapredição é também referida como predição de modelo linear de componente cruzado (CCLM). Tal modo de intrapredição de bloco de croma que referência um bloco de luma (referido como, por exemplo, modo de CCLM) pode ser adicionado como um dos modos de intrapredição de bloco de croma.
[0059] O intrapreditor 124 pode corrigir valores de pixel de pós- intrapredição com base em gradientes de pixel de referência horizontal / vertical. Intrapredição acompanhada por este tipo de correção é também referida como uma combinação de intrapredição dependente de posição (PDPC). As informações que indicam se aplicar PDPC ou não (referidas como, por exemplo, um sinalizador de PDPC) são, por exemplo, sinalizadas no nível de CU. Note que a sinalização destas informações não precisa ser executada no nível de CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, ou nível de CTU).
Interpreditor
[0060] O interpreditor 126 gera um sinal de predição (sinal de in- terpredição) interpredizendo o bloco corrente com referência a um bloco ou blocos em uma imagem de referência, a qual é diferente da imagem corrente e está armazenada na memória de quadros 122 (também referida como predição interquadros). A interpredição e executada por bloco corrente ou sub-bloco (por exemplo, por bloco de 4x4) no bloco corrente. Por exemplo, o interpreditor 126 executa estimativa de movimento em uma imagem de referência para o bloco ou sub-bloco corrente. O interpreditor 126 então gera um sinal de interpredição do bloco ou sub-bloco corrente por compensação de movimento utilizando informações de movimento (por exemplo, um vetor de movimento) obtidas de estimativa de movimento. O interpreditor 126 então emite o sinal de interpredição gerado para o controlador de predição 128.
[0061] As informações de movimento utilizadas em compensação de movimento são sinalizadas. Um preditor de vetor de movimento pode ser utilizado para a sinalização do vetor de movimento. Em outras palavras, a diferença entre o vetor de movimento e o preditor de vetor de movimento pode ser sinalizada.
[0062] Note que o sinal de interpredição pode ser gerado utilizan do informações de movimento para um bloco vizinho além das infor-mações de movimento para o bloco corrente obtidas de estimativa de movimento. Mais especificamente, o sinal de interpredição pode ser gerado por sub-bloco no bloco corrente calculando uma soma ponderada de um sinal de predição com base em informações de movimento obtidas de estimativa de movimento e um sinal de predição com base em informações de movimento para um bloco vizinho. Tal interpredi- ção (compensação de movimento) é também referida como compensação de movimento de bloco sobreposta (OBMC).
[0063] Em tal modo de OBMC, as informações que indicam o ta- manho de sub-bloco para OBMC (referidas como, por exemplo, tamanho de bloco de OBMC) são sinalizadas no nível de sequência. Mais ainda, as informações que indicam se aplicar o modo de OBMC ou não (referidas como, por exemplo, um sinalizador de OBMC) são sinalizadas no nível de CU. Note que a sinalização de tais informações não precisa ser executada no nível de sequência e nível de CU, e pode ser executada em outro nível (por exemplo, no nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de sub-bloco).
[0064] Daqui em diante, o modo de OBMC será descrito em mais detalhes. A Figura 5B é um fluxograma e Figura 5C é um diagrama conceitual para ilustrar um esboço de um processo de correção de imagem de predição executado através de processamento de OBMC.
[0065] Primeiro, uma imagem de predição (Pred) é obtida através de compensação de movimento típica utilizando um vetor de movimento (MV) atribuído ao bloco corrente.
[0066] A seguir, uma imagem de predição (Pred_L) é obtida apli cando um vetor de movimento (MV_L) do bloco esquerdo vizinho codi-ficado no bloco corrente, e um primeiro passo da correção da imagem de predição é feito sobrepondo a imagem de predição e Pred_L.
[0067] Similarmente, uma imagem de predição (Pred_U) é obtida aplicando um vetor de movimento (MV_U) do bloco superior vizinho codificado no bloco corrente, e um segundo passo da correção da imagem de predição é feito sobrepondo a imagem de predição que resulta do primeiro passo e Pred_U. O resultado do segundo passo é a imagem de predição final.
[0068] Note que o exemplo acima é um método de correção de dois passos que utiliza os blocos esquerdo e superior vizinhos, mas o método pode ser um método de correção de três passos ou mais alto que também utiliza o bloco direito e/ou esquerdo vizinho.
[0069] Note que a região sujeita à sobreposição pode ser a região de pixel inteira do bloco, e, alternativamente, pode ser uma região de limite de bloco parcial.
[0070] Note que no presente documento, o processo de correção de imagem de predição está descrito como sendo baseado em uma única imagem de referência, mas o mesmo se aplica quando uma imagem de predição é corrigida com base em uma pluralidade de imagens de referência. Em tal caso, após as imagens de predição corrigidas que resultam de executar correção com base em cada uma das imagens de referências serem obtidas, as imagens de predição corrigidas obtidas são adicionalmente sobrepostas para obter a imagem de predição final.
[0071] Note que a unidade do bloco corrente pode ser um bloco de predição e, alternativamente, pode ser um sub-bloco obtido adicional-mente dividindo o bloco de predição.
[0072] Um exemplo de um método para determinar se implemen tar processamento de OBMC é utilizando um obmc_flag, o qual é um sinal que indica se implementar o processamento de OBMC. Como um exemplo específico, o codificador determina se o bloco corrente pertence a uma região que inclui um movimento complicado. O codificador ajusta o obmc_flag para um valor de "1" quando o bloco pertence a uma região que inclui um movimento complicado e implementa o processamento de OBMC quando codificando, e ajusta o obmc_flag para um valor de "0" quando o bloco não pertence a uma região que inclui um movimento complicado e codifica sem implementar o processamento de OBMC. O decodificador comuta entre implementar o processamento de OBMC ou não decodificando o obmc_flag escrito no fluxo e executando a decodificação de acordo com o valor de sinalizador.
[0073] Note que as informações de movimento podem ser deriva das no lado do decodificador sem serem sinalizadas. Por exemplo, um modo de mesclagem definido no padrão H.265 / HEVC pode ser utili- zado. Mais ainda, por exemplo, as informações de movimento podem ser derivadas executando estimativa de movimento no lado de decodi- ficador. Neste caso, a estimativa do movimento e executada sem utilizar os valores de pixel do bloco corrente.
[0074] No presente documento, um modo para executar estimativa de movimento no lado de decodificador será descrito. Um modo para executar estimativa de movimento no lado de decodificador é também referido como um modo de derivação de vetor de movimento coincidido em padrão (PMMVD) ou modo de aumento de resolução de taxa de quadros (FRUC).
[0075] Um exemplo de processamento de FRUC está ilustrado na Figura 5D. Primeiro, uma lista de candidatos (uma lista de candidatos pode ser uma lista de mesclagem) de candidatos cada um incluindo um preditor de vetor de movimento é gerada com referência a vetores de movimento de blocos codificados que estão espacialmente ou tem-poralmente vizinhos ao bloco corrente. A seguir, o melhor MV candidatoé selecionado dentre uma pluralidade de MVs candidatos registrados na lista de candidatos. Por exemplo, os valores de avaliação para os candidatos incluídos na lista de candidatos são calculados e um candidato é selecionado com base nos valores de avaliação calculados.
[0076] A seguir, um vetor de movimento para o bloco corrente é derivado do vetor de movimento do candidato selecionado. Mais espe-cificamente, por exemplo, o vetor de movimento para o bloco corrente é calculado como o vetor de movimento do candidato selecionado (melhor MV candidato) como está. Alternativamente, o vetor de movimento para o bloco corrente pode ser derivado por coincidência de padrão executada na vizinhança de uma posição em uma imagem de referência que corresponde ao vetor de movimento do candidato selecionado. Em outras palavras, quando a vizinhança do melhor MV can- didato é pesquisada através do mesmo método, e um MV que tem um melhor valor de avaliação é encontrado, o melhor MV candidato pode ser atualizado para o MV que tem o melhor valor de avaliação, e o MV que tem o melhor valor de avaliação pode ser utilizado como o MV final para o bloco corrente. Note que uma configuração na qual este processamento não é implementado é também aceitável.
[0077] Os mesmos processos podem ser executados em casos nos quais o processamento é executado em unidades de sub-blocos.
[0078] Note que um valor de avaliação é calculado calculando a diferença na imagem reconstruída por coincidência de padrão executada entre uma região em uma imagem de referência que corresponde a um vetor de movimento e uma região predeterminada. Note que o valor de avaliação pode ser calculado utilizando alguma outra informação além da diferença.
[0079] A coincidência de padrão utilizada é ou a primeira coinci dência de padrão ou a segunda coincidência de padrão. A primeira coincidência de padrão e a segunda coincidência de padrão são também referidas como coincidência bilateral e coincidência de gabarito, respectivamente.
[0080] Na primeira coincidência de padrão, a coincidência de pa drão e executada entre dois blocos ao longo da trajetória de movimento do bloco corrente em duas diferentes imagens de referência. Portanto, na primeira coincidência de padrão, uma região em outra imagem de referência em conformidade com a trajetória de movimento do bloco corrente é utilizada como a região predeterminada para o cálculo acima descrito do valor de avaliação de candidato.
[0081] A Figura 6 é para ilustrar um exemplo de uma coincidência de padrão (coincidência bilateral) entre dois blocos ao longo de uma trajetória de movimento. Como ilustrado na Figura 6, na primeira coin-cidência de padrão, dois vetores de movimento (MV0, MV1) são deri- vados encontrando a melhor coincidência entre dois blocos ao longo da trajetória de movimento do bloco corrente (Cur block) em duas diferentes imagens de referência (Ref0, Ref1). Mais especificamente, uma diferença entre (i) uma imagem reconstruída em uma posição especificada em uma primeira imagem de referência codificada (Ref0) especificada por um MV candidato e (ii) uma imagem reconstruída em uma posição especificada em uma segunda imagem de referência codificada (Ref1) especificada por um MV simétrico escalado em um intervalo de tempo de exibição do MV candidato pode ser derivada, e o valor de avaliação para o bloco corrente pode ser calculado utilizando a diferença derivada. O MV candidato que tem o melhor valor de avaliação dentre a pluralidade de MVs candidatos pode ser selecionado como o MV final.
[0082] Sob a suposição de trajetória de movimento contínuo, os vetores de movimento (MV0, MV1) que apontam para os dois blocos de referência deverão ser 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 está temporalmente entre as duas imagens de referência e a distância tem-poral da imagem corrente para as duas imagens de referência é a mesma, a primeira coincidência de padrão deriva um vetor de movimento bidirecional baseado em espelho.
[0083] Na segunda coincidência de padrão, a coincidência de pa drão e executada entre um gabarito na imagem corrente (blocos vizinhos ao bloco corrente na imagem corrente (por exemplo, os blocos vizinhos superior e/ou esquerdo)) e um bloco em uma imagem de referência. Portanto, na segunda coincidência de padrão, um bloco vizinho ao bloco corrente na imagem corrente é utilizado como a região predeterminada para o cálculo acima descrito do valor de avaliação de candidato.
[0084] A Figura 7 é para ilustrar um exemplo de coincidência de padrão (coincidência de gabarito) entre um gabarito na imagem corrente e um bloco em uma imagem de referência. Como ilustrado na Figura 7, na segunda coincidência de padrão, um vetor de movimento do bloco corrente é derivado pesquisando uma imagem de referência (Ref0) para encontrar o bloco que melhor coincide com os blocos vizinhos do bloco corrente (Cur block) na imagem corrente (Cur Pic). Mais especificamente, uma diferença entre (i) uma imagem reconstruída de uma região codificada que é ambas ou uma das regiões esquerda vizinha e superior vizinha e (ii) uma imagem reconstruída na mesma posição em uma imagem de referência codificada (Ref0) especificada por um MV candidato pode ser derivada, e o valor de avaliação para o bloco corrente pode ser calculado utilizando a diferença derivada. O MV candidato que tem o melhor valor de avaliação dentre a pluralidade de MVs candidato pode ser selecionado com o melhor MV candidato.
[0085] As informações que indicam se aplicar o modo de FRUC ou não (referidas como, por exemplo, um sinalizador de FRUC) são sina-lizadas no nível de CU. Mais ainda, quando o modo de FRUC é aplicado (por exemplo, quando o sinalizador de FRUC é ajustado para verdadeiro), as informações que indicam o método de coincidência de padrão (primeira coincidência de padrão ou segunda coincidência de padrão) são sinalizadas no nível de CU. Note que a sinalização de tais informações não precisa ser executada no nível de CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de sub-bloco).
[0086] No presente documento, um modo para derivar um vetor de movimento com base em um modelo assumindo um movimento linear uniforme será descrito. Este modo é também referido como um modo de fluxo ótico bidirecional (BIO).
[0087] A Figura 8 é para ilustrar um modelo assumindo um movi mento linear uniforme. Na Figura 8, (vx, vy) denotam um vetor de velo-cidade, e TO e TI denotam distâncias temporais entre a imagem corrente (Cur Pic) e duas imagens de referência (Ref0, Ref1). (MVx0, MVy0) denotam um vetor de movimento que corresponde à imagem de refe-rência Ref0, e (MVx1, MVy1) denotam um vetor de movimento que cor-responde à imagem de referência Ref1.
[0088] No presente documento, sob a suposição de movimento linear uniforme exibido pelo vetor de velocidade (vx, vy), (MVx0, MVy0) e (MVx1, MVy1) são representados (vxt0, vyt0) e (-vxt1, -vyt1), respecti-vamente, e a seguinte equação de fluxo ótico é dada.
[0089] MATH. 1
[0090] No presente documento, I(k) denota um valor de luma da imagem de referência k (k = 0, 1) após a compensação de movimento. Esta equação de fluxo ótico mostra que a soma de (i) a derivada de tempo do valor de luma, (ii) o produto da velocidade horizontal e do componente horizontal do gradiente espacial de uma imagem de refe-rência, e (iii) o produto da velocidade vertical e do componente vertical do gradiente espacial de uma imagem de referência é igual a zero. Um vetor de movimento de cada bloco obtido de, por exemplo, uma lista de mesclagem é corrigido pixel por pixel com base em uma combinação da equação de fluxo ótico e da interpolação de Hermite.
[0091] Note que um vetor de movimento pode ser derivado no lado de decodificador utilizando um método outro que derivar um vetor de movimento com base em um modelo assumindo movimento linear uni-forme. Por exemplo, um vetor de movimento pode ser derivado para cada sub-bloco com base em vetores de movimento de blocos vizinhos.
[0092] No presente documento, um modo no qual um vetor de mo- vimento é derivado para cada sub-bloco com base em vetores de mo-vimento de blocos vizinhos será descrito. Este modo é também referi- do como um modo de predição de compensação de movimento afim.
[0093] A Figura 9A é para ilustrar derivar um vetor de movimento de cada sub-bloco com base em vetores de movimento de blocos vizi- nhos. Na Figura 9A, o bloco corrente inclui 16 sub-blocos de 4x4. No presente documento, vetor de movimento v0 do ponto de controle de canto superior esquerdo no bloco corrente é derivado com base em vetores de movimento de sub-blocos vizinhos, e o vetor de movimento v1 do ponto de controle de canto superior direito do bloco corrente é derivado com base em vetores de movimento de blocos vizinhos. Então, utilizando os dois vetores de movimento v0 e v1, o vetor de movimento (vx, vy) de cada sub-bloco no bloco corrente é derivado utilizando a Equação 2 abaixo.
[0094] AMTH.2
[0095] No presente documento, x e y são posições horizontal e vertical do sub-bloco, respectivamente, e w é um coeficiente ponderado predeterminado.
[0096] Tal modo de predição de compensação de movimento afim pode incluir um número de modos de diferentes métodos de derivar os vetores de movimento dos pontos de controle de canto superior esquerdo e superior direito. As informações que indicam tal modo de predição de compensação de movimento afim (referido como, por exemplo, um sinalizador afim) são sinalizadas no nível de CU. Note que a sinalização de informações indicando o modo de predição de compensação de movimento afim não precisa ser executada no nível de CU, e pode ser executada em outro nível (por exemplo, no nível de sequência, nível de imagem, nível de fatia, nível de telas lado a lado, nível de CTU, ou nível de sub-bloco).
Controlador de Predição
[0097] O controlador de predição 128 seleciona ou o sinal de in- trapredição ou o sinal de interpredição, e emite o sinal de predição se-lecionado para o subtrator 104 e somador 116.
[0098] No presente documento, um exemplo de derivar um vetor de movimento através de modo de mesclagem em uma imagem cor-renteserá dado. A Figura 9B é para ilustrar um esboço de um processo para derivar um vetor de movimento através de modo de mescla- gem.
[0099] Primeiro, uma lista de preditores de MV na qual os predito- res de MV candidatos são registrados é gerada. Os exemplos de pre- ditores de MV candidatos incluem: preditores de MV espacialmente vizinhos, os quais são MVs de blocos codificados posicionados na vi-zinhança espacial do bloco corrente; um preditor de MV temporalmente vizinho, o qual é um MV de um bloco em uma imagem de referência codificada que é vizinha de um bloco na mesma localização que o bloco corrente; um preditor de MV combinado, o qual é um MV gerado pela combinação dos valores de MV do preditor de MV espacialmente vizinho e do preditor de MV temporalmente vizinho; e um preditor de MV zero o qual é um MV cujo valor é zero.
[00100] A seguir, o MV do bloco corrente é determinado selecionando um preditor de MV dentre a pluralidade de preditores de MV registrados na lista de preditores de MV.
[00101] Mais ainda, no codificador de comprimento variável, um merge_idx, o qual é um sinal que indica qual preditor de MV é selecio-nado,é escrito e codificado no fluxo.
[00102] Note que os preditores de MV registrados na lista de predi-cadores de MV ilustrada na Figura 9B constituem um exemplo. O nú- mero de preditores de MV registrados na lista de preditores de MV pode ser diferente do número ilustrado na Figura 9B, os preditores de MV registrados na lista de preditores de MV podem omitir um ou mais dos tipos de preditores de MV dados no exemplo da Figura 9B, e os predi- tores de MV registrados na lista de preditores de MV podem incluir um ou mais tipos de preditores de MV além de e diferentes dos tipos dados no exemplo na Figura 9B.
[00103] Note que o MV final pode ser determinado executando um processamento de DMVR (a ser posteriormente descrito) utilizando o MV do bloco corrente derivado através do modo de mesclagem.
[00104] No presente documento, um exemplo de determinar um MV utilizando o processamento de DMVR será fornecido.
[00105] A Figura 9C é um diagrama conceitual para ilustrar um esboço de processamento de DMVR.
[00106] Primeiro, o conjunto de MVP mais apropriado para o bloco corrente é considerado ser o MV candidato, os pixels de referência são obtidos de uma primeira imagem de referência, a qual é uma imagem processada na direção L0 de acordo com o MV candidato, e uma se-gunda imagem de referência, a qual é uma imagem processada na direção L1 de acordo com o MV candidato, e um gabarito é gerado calculando a média dos pixels de referência.
[00107] A seguir, utilizando o gabarito, as regiões circundantes dos MVs candidatos da primeira e segunda imagens de referência são pesquisadas, e o MV com o custo mais baixo é determinado ser o MV final. Note que o valor de custo é calculado utilizando, por exemplo, a diferença entre cada valor de pixel no gabarito e cada valor de pixel nas regiões pesquisadas, assim como o valor de MV.
[00108] Note que os esboços dos processos no presente documento descritos são fundamentalmente os mesmos tanto no codificador quanto no decodificador.
[00109] Note que um processamento outro que o processamento exatamente como acima descrito pode ser utilizado, desde que o pro-cessamento seja capaz de derivar o MV final pesquisando nos arredores do MV candidato.
[00110] No presente documento um exemplo de um modo que gera uma imagem de predição utilizando processamento de LIC será fornecido.
[00111] A Figura 9D é para ilustrar um esboço de um método de geração de imagem de predição que utiliza um processo de correção de luminância executado através de processamento de LIC.
[00112] Primeiro, um MV é extraído para obter, de uma imagem de referência codificada, uma imagem de referência que corresponde ao bloco corrente.
[00113] A seguir, informações que indicam como o valor de lumi- nância mudou entre a imagem de referência e a imagem corrente são extraídas e um parâmetro de correção de luminância é calculado utilizando valores de pixel de luminância para a região de referência vizinha esquerda codificada e a região de referência vizinha superior codificada, e o valor do pixel de luminância na mesma localização na imagem de referência especificada pelo MV.
[00114] A imagem de predição para o bloco corrente é gerada exe-cutando um processo de correção de luminância utilizando o parâmetro de correção de luminância na imagem de referência na imagem de referência especificada pelo MV.
[00115] Note que a forma da região de referência circundante ilustrada na Figura 9D é apenas um exemplo; a região de referência circundante pode ter uma forma diferente.
[00116] Mais ainda, apesar de uma imagem de predição ser gerada de uma única imagem de referência neste exemplo, em casos nos quais uma imagem de predição é gerada de uma pluralidade de ima- gens de referência também, a imagem de predição é gerada após a executar um processo de correção de luminância, através do mesmo método, nas imagens de referência obtidas das imagens de referência.
[00117] Um exemplo de um método para determinar se implementar o processamento de LIC é utilizando um lic_flag, o qual é um sinal que indica se implementar o processamento de LIC. Como exemplo específico, o codificador determina se o bloco corrente pertence a uma região de mudança de luminância. O codificador ajusta o lic_flag para um valor de "1" quando o bloco pertence a uma região de mudança de luminância e implementa o processamento de LIC quando codificando, e ajusta o lic_flag para um valor de "0" quando o bloco não pertence a uma região de mudança de luminância e codifica sem implementar o processamento de LIC. O decodificador comuta entre implementar o processamento de LIC ou não decodificando o lic_flag escrito no fluxo e executando a decodificação de acordo com o valor de sinalizador.
[00118] Um exemplo de um diferente método de determinar se im-plementar o processamento de LIC é determinar isto de acordo com se o processamento de LIC foi determinado para ser implementado para um bloco circundante. Em um exemplo específico, quando o modo de mesclagem é utilizado no bloco corrente, se o processamento de LIC foi aplicado na codificação do bloco codificado circundante selecionado quando derivando o MV no processamento de modo de mesclagem pode ser determinado, e se implementar o processamento de LIC ou não pode ser comutado com base no resultado da determinação. Note que neste exemplo, o mesmo se aplica ao processamento executado no lado de decodificador.
Esboço de Decodificador
[00119] A seguir, um decodificador capaz de decodificar um sinal codificado (fluxo de bits codificado) emitido do codificador 100 será descrito. A Figura 10 é um diagrama de blocos que ilustra uma confi- guração funcional do decodificador 200 de acordo com a Modalidade 1. O decodificador 200 é um decodificador de imagem móvel / imagem que decodifica uma imagem móvel / imagem bloco por bloco.
[00120] Como ilustrado na Figura 10, o decodificador 200 inclui um decodificador de entropia 202, quantizador inverso 204, transformador inverso 206, somador 208, memória de blocos 210, filtro de loop 212, memória de quadros 214, intrapreditor 216, interpreditor 218, e contro-lador de predição 220.
[00121] O decodificador 200 é realizado como, por exemplo, um processador e memória genéricos. Neste caso, quando um programa de software armazenado na memória é executado pelo processador, o processador funciona como o decodificador de entropia 202, quantiza- dor inverso 204, transformador inverso 206, somador 208, filtro de loop 212, intrapreditor 216, interpreditor 218, e controlador de predição 220. Alternativamente, o decodificador 200 pode ser realizado como um ou mais circuitos eletrônicos dedicados que correspondem ao decodifica- dor de entropia 202, quantizador inverso 204, transformador inverso 206, somador 208, filtro de loop 212, intrapreditor 216, interpreditor 218, e controlador de predição 220.
[00122] Daqui em diante, cada componente incluído no decodifica- dor 200 será descrito.
Decodificador de Entropia
[00123] O decodificador entropia 202 decodifica em entropia um fluxo de bits codificado. Mais especificamente, por exemplo, o decodi- ficador de entropia 202 decodifica por aritmética um fluxo de bits codificado em um sinal binário. O decodificador de entropia 202 então de- binariza o sinal binário. Com isto, o decodificador de entropia 202 emite coeficientes quantizados de cada bloco para o quantizador inverso 204.
Quantizador Inverso
[00124] O quantizador inverso 204 quantiza inverso coeficientes quantizados de um bloco a ser decodificado (daqui em diante referido como um bloco corrente), os quais são entradas do decodificador de entropia 202. Mais especificamente, o quantizador inverso 204 quanti- za inverso coeficientes quantizados do bloco corrente com base em parâmetros de quantização que corresponde aos coeficientes quanti- zados. O quantizador inverso 204 então emite os coeficientes quanti- zados inversos (isto é, coeficientes de transformada) do bloco corrente para o transformador inverso 206.
Transformador Inverso
[00125] O transformador inverso 206 restaura os erros de predição transformando inverso os coeficientes de transformada os quais são entradas do quantizador inverso 204.
[00126] Por exemplo, quando as informações analisadas de um fluxo de bits codificado indicam a aplicação de EMT ou AMT (por exemplo, quando o sinalizador de AMT é ajustado para verdadeiro), o trans-formador inverso 206 transforma inverso os coeficientes de transformada do bloco corrente com base em informações que indicam o tipo de transformada analisado.
[00127] Mais ainda, por exemplo, quando as informações analisadas de um fluxo de bits codificado indicam a aplicação de NSST, o transformador inverso 206 aplica uma transformada inversa secundária nos coeficientes de transformada.
Somador
[00128] O somador 208 reconstrói o bloco corrente somando os erros de predição, os quais são entradas do transformador inverso 206, e amostras de predição, as quais são uma entrada do controlador de predição 220. O somador 208 então emite o bloco reconstruído para a memória de blocos 210 e filtro de loop 212.
Memória de Blocos
[00129] A memória de blocos 210 é um armazenamento para armazenar blocos em uma imagem a ser decodificada (daqui em diante referida como a imagem corrente) para referência em intrapredição. Mais especificamente, a memória de blocos 210 armazena os blocos re-construídos emitidos do somador 208.
Filtro de loop
[00130] O filtro de loop 212 aplica um filtro de loop em blocos re-construídos pelo somador 208, e emite os blocos reconstruídos filtrados para a memória de quadros 214 e, por exemplo, um dispositivo de display.
[00131] Quando as informações que indicam a habilitação ou desa- bilitação de ALF analisado de um fluxo de bits codificado indicam habi-litado, um filtro dentre uma pluralidade de filtros é selecionado com base na direção e atividade de gradientes locais, e o filtro selecionado é aplicado no bloco reconstruído.
Memória de Quadros
[00132] A memória de quadros 214 é um armazenamento para armazenar imagens de referência utilizadas na interpredição, e é também referida como um armazenamento temporário de quadros. Mais especificamente, a memória de quadros 214 armazena blocos reconstruídos filtrados pelo filtro de loop 212.
Intrapreditor
[00133] O Intrapreditor 216 gera um sinal de predição (sinal de in- trapredição) por intrapredição com referência a um bloco ou blocos na imagem corrente e armazenada na memória de blocos 210. Mais es-pecificamente, o intrapreditor 216 gera um sinal de intrapredição por intrapredição com referência às amostras (por exemplo, valores de luma e/ou croma) de um bloco ou blocos vizinhos ao bloco corrente, e então emite o sinal de intrapredição para controlador de predição 220.
[00134] Note que quando um modo de intrapredição no qual um bloco de croma é intrapredito de um bloco de luma é selecionado, o intrapreditor 216 pode predizer o componente de croma do bloco corrente com base no componente de luma do bloco corrente.
[00135] Mais ainda, quando as informações que indicam a aplicação de PDPC são analisadas de um fluxo de bits codificado, o intra- preditor 216 corrige os valores de pixel de pós-intrapredição com base em gradientes de pixel de referência horizontal / vertical.
Interpreditor
[00136] O interpreditor 218 prediz o bloco corrente com referência a uma imagem de referência armazenada na memória de quadros 214. A interpredição e executada por bloco corrente ou por sub-bloco (por exemplo, por bloco de 4x4) no bloco corrente. Por exemplo, o inter- preditor 218 gera um sinal de interpredição do bloco corrente ou sub- bloco por compensação de movimento utilizando informações de mo-vimento (por exemplo, um vetor de movimento) analisadas de um fluxo de bits codificado e emite o sinal de interpredição para controlador de predição 220.
[00137] Note que quando as informações analisadas do fluxo de bits codificado indicam a aplicação de modo de OBMC, o interpreditor 218 gera o sinal de interpredição utilizando informações de movimento para um bloco vizinho além de informações de movimento para o bloco corrente obtidas de estimativa de movimento.
[00138] Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam a aplicação de modo de FRUC, o interpreditor 218 deriva as informações de movimento executando estimativa de movimento de acordo com o método de coincidência de padrão (coin-cidência bilateral ou coincidência de gabarito) analisado do fluxo de bits codificado. O interpreditor 218 então executa compensação de movimento utilizando as informações de movimento derivadas.
[00139] Mais ainda, quando o modo de BIO deve ser aplicado, o interpreditor 218 deriva um vetor de movimento com base em um modelo assumindo um movimento linear uniforme. Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam que o modo de predição de compensação de movimento afim deve ser aplicado, o interpreditor 218 deriva um vetor de movimento de cada sub-bloco com base em vetores de movimento de blocos vizinhos.
Controlador de Predição
[00140] O controlador de predição 220 seleciona ou o sinal de in- trapredição ou o sinal de interpredição e emite o sinal de predição se-lecionado para o somador 208.
MODALIDADE 2
[00141] O processo de codificação e o processo de decodificação de acordo com a Modalidade 2 serão descritos em detalhes com referência à Figura 11 e Figura 12, e o codificador e decodificador de acordo com a Modalidade 2 serão descritos em detalhes com referênciaà Figura 15 e Figura 16.
Processo de Codificação
[00142] A Figura 11 ilustra um processo de codificação de vídeo de acordo com a Modalidade 2.
[00143] Primeiro, na etapa S1001, um primeiro parâmetro para identificar, de uma pluralidade de modos de partição, um modo de partição para particionar um primeiro bloco em sub-blocos é escrito em um fluxo de bits. Utilizar um modo de partição resultará no particiona- mento de um bloco em sub-blocos. Utilizar diferentes modos de partição pode resultar em particionar um bloco em sub-blocos com diferentes formas, ou diferentes alturas, ou diferentes larguras.
[00144] A Figura 28 ilustra exemplos de modos de partição para particionar um bloco de N pixels por N pixels na Modalidade 2. Na Figura 28, (a) até (h) mostram diferentes modos de partição. Como ilustrado na Figura 28, utilizar o modo de partição (a) particionará um blo- co de N pixels por N pixels (o valor de 'N' pode ser qualquer valor na faixa de 8 a 128 os quais são múltiplos inteiros de 4, por exemplo um bloco de 16 pixels por 16 pixels) em sub-blocos de N/2 pixels por N pixels (por exemplo, sub-blocos de 8 pixels por 16 pixels). Utilizar o modo de partição (b) particionará um bloco de N pixels por N pixels em um sub-bloco de N/4 pixels por N pixels e um sub-bloco de 3N/4 pixels por N pixels (por exemplo, um sub-bloco de 4 pixels por 16 pixels e um sub-bloco de 12 pixels por 16 pixels). Utilizar o modo de partição (c) particionará um bloco de N pixels por N pixels em um sub-bloco de 3N/4 pixels por N pixels e um sub-bloco de N/4 pixels por N pixels (por exemplo, um sub-bloco de 12 pixels por 16 pixels e um sub-bloco de 4 pixels por 16 pixels). Utilizar o modo de partição (d) particionará um bloco de N pixels por N pixels em um sub-bloco de N/4 pixels por N pixels, um sub-bloco de N/2 pixels por N pixels, e um sub-bloco de N/4 pixels por N pixels (por exemplo, um sub-bloco de 4 pixels por 16 pixels, um sub-bloco de 8 pixels por 16 pixels e um sub-bloco de 4 pixels por 16 pixels). Utilizar o modo de partição (e) particionará um bloco de N pixels por N pixels em dois sub-bloco de N pixels por N/2 pixels (por exemplo, sub-blocos de 16 pixels por 18 pixels). Utilizar o modo de partição (f) particionará um bloco de N pixels por N pixels em um sub-bloco de N pixels por N/4 pixels e um sub-bloco de N pixels por 3N/4 pixels (por exemplo, um sub-bloco de 16 pixels por 4 pixels e um sub-bloco de 16 pixels por 12 pixels). Utilizar o modo de partição (g) particionará um bloco de N pixels por N pixels em um sub-bloco de N pixels por 3N/4 pixels e um sub-bloco de N pixels por N/4 pixels (por exemplo, um sub-bloco de 16 pixels por 12 pixels e um sub-bloco de 16 pixels por 4 pixels). Utilizar o modo de partição (h) particionará um bloco de N pixels por N pixels em um sub-bloco de N pixels por N/4 pixels, um Sub-bloco de N pixels por N/2 pixels, e um sub-bloco de N pixels por N/4 pixels (por exemplo, um sub-bloco de 16 pixels por 4 pixels, um sub-bloco de 16 pixels por 8 pixels e um sub-bloco de 16 pixels por 4 pixels).
[00145] A seguir, na etapa S1002, é determinado se um primeiro parâmetro identifica um primeiro modo de partição.
[00146] A seguir, na etapa S1003, com base em pelo menos a de-terminação se o primeiro parâmetro identifica um primeiro modo de partição, é determinado se um segundo modo de partição não deve ser selecionado como um candidato para particionar um segundo bloco.
[00147] Dois diferentes conjuntos de modos de partição podem dividir um bloco em sub-blocos de mesmas formas e tamanhos. Por exemplo, como ilustrado na Figura 31A, os sub-blocos de (1b) e (2c) têm as mesmas formas e tamanhos. Um conjunto de modos de partição pode incluir pelo menos dois modos de partição. Por exemplo, um conjunto de modos de partição pode incluir uma divisão vertical de árvoreternária seguida por uma divisão vertical de árvore binária no sub- bloco central e nenhuma divisão em outros sub-blocos como ilustrado em (1a) e (1b) na Figura 31A. Outro conjunto de modos de partição, por exemplo, pode incluir uma divisão vertical de árvore binária seguida por uma divisão vertical de árvore binária em ambos os sub-blocos como ilustrado em (2a), (2b), e (2c) na Figura 31A. Ambos os conjuntos de modos de partição resultarão em sub-blocos de mesmas formas e tamanhos.
[00148] Quando selecionando entre dois conjuntos de modos de partição que resultam na divisão de um bloco em sub-blocos de mesmas formas e tamanhos e cada conjunto de modos de partição, quando codificado em um fluxo de bits, têm diferentes números de bins ou diferentes números de bits, o conjunto de modos de partição que tem menor número de bins ou menor número de bits é selecionado entre os dois conjuntos. Note que o número de bins e o número de bits é equivalente à quantidade de código.
[00149] Quando selecionando entre dois conjuntos de modos de partição que resultam em dividir um bloco em sub-blocos de mesmas formas e tamanhos e cada dos conjuntos de modos de partição, quando codificado em um fluxo de bits, têm o mesmo número de bins ou mesmo número de bits, o conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição é selecionado entre os dois conjuntos. Um exemplo da ordem predeterminada pode ser uma ordem com base no número de modos de partição em cada conjunto de modos de partição.
[00150] A Figura 31A e Figura 31B ilustram um exemplo de dividir um bloco em sub-blocos utilizando um conjunto de modos de partição com menos bins nos modos de partição de codificação. Neste exemplo, quando o bloco de N pixels por N pixels esquerdo é verticalmente dividido em dois sub-blocos, o segundo modo de partição na etapa (2c), para o bloco de N pixels por N pixels direito não é selecionado. Isto é porque, no método de codificação de modo de partição na Figura 31B, o segundo conjunto de modos de partição (2a, 2b, 2c) requererá mais bins para a codificação do modo de partição se comparado com o primeiro conjunto de modos de partição (1a, 1b).
[00151] A Figura 32A até Figura 32C ilustram um exemplo de dividir um bloco em sub-blocos utilizando um conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição. Neste exemplo, quando o bloco de 2N pixels por N/2 pixels superior é verticalmente dividido em três sub-blocos, o segundo modo de partição na etapa (2c), para o bloco de 2N pixels por N/2 pixels inferior não é selecionado. Isto é porque, no método de codificação de modo de partição na Figura 32B, o segundo conjunto de modos de partição (2a, 2b, 2c) tem o mesmo número de bins que o primeiro conjunto de modos de partição (1a, 1b, 1c, 1d) e aparece após o primeiro conjunto de modos de partição (1a, 1b, 1c, 1d) na ordem predeterminada de conjuntos de modos de partição na Figura 32C. A ordem predeterminada da pluralidade de conjuntos de modos de partição pode ser fixa ou sinalizada em um fluxo de bits.
[00152] A Figura 20 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de 2N pixels por N pixels, como ilustrado na etapa (2c), na Modalidade 2. Como ilustrado na Figura 20, um bloco de 2N pixels por 2N pixels (por exemplo, um bloco de 16 pixels por 16 pixels) pode ser dividido em quatro sub-blocos iguais de tamanho de N pixel por N pixels (por exemplo, 8 pixels por 8 pixels) utilizando um primeiro modo de divisão (i), como na etapa (1a). Mais ainda, um bloco de 2N pixels por 2N pixels pode também ser dividido em dois sub-blocos iguais de tamanho de 2N pixels por N pixels (por exemplo, 16 pixels por 8 pixels) utilizando um segundo modo de divisão (ii), como na etapa (2a). Durante o segundo modo de divisão (ii), quando o primeiro modo de partição divide o bloco de 2N pixels por N pixel superior (primeiro bloco) verticalmente em dois sub-blocos de N pixels por N pixel como na etapa (2b), o segundo modo de partição o qual divide verticalmente o bloco de 2N pixels por N pixel inferior (segundo bloco) em dois sub-blocos de N pixels por N pixel na etapa (2c) não é selecionado como um candidato para possível modo de partição. Isto é porque o segundo modo de partição produzirá tamanhos de sub-blocos os mesmos que os tamanhos de sub- bloco de divisão quádrupla do primeiro modo de divisão (i).
[00153] Neste modo, na Figura 20, quando o primeiro bloco é verti-calmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco verticalmente vizinho ao primeiro bloco é verticalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00154] A Figura 21 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por 2N pixels, como ilustrado na etapa (2c), na Modalidade 2. Como ilustrado na Figura 21, um bloco de 2N pixels por 2N pixels pode ser dividido em quatro sub-blocos iguais de N pixels por N pixels utilizando o primeiro modo de divisão (i). Mais ainda, como na etapa (2a), um bloco de 2N pixels por 2N pixels pode também ser verticalmente dividido em dois sub-blocos iguais de N pixels por 2N pixels (por exemplo, 8 pixels por 16 pixels) utilizando o segundo modo de divisão (ii). Durante o segundo modo de divisão (ii), quando o primeiro modo de partição divide o bloco de N pixels por 2N pixels esquerdo (primeiro bloco) horizontalmente em dois sub-blocos de N pixels por N pixel como na etapa (2b), o segundo modo de partição o qual divide horizontalmente o bloco de N pixels por 2N pixels direito (segundo bloco) em dois sub- blocos de N pixels por N pixel na etapa (2c) não é selecionado como um candidato para possível modo de partição. Isto é porque o segundo modo de partição produzirá tamanhos de sub-blocos os mesmos que os tamanhos de sub-bloco de divisão quádrupla do primeiro modo de divisão (i).
[00155] Neste modo, na Figura 21, quando o primeiro bloco é hori-zontalmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco horizontalmente vizinho ao primeiro bloco é horizontalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00156] A Figura 40 ilustra um exemplo no qual uma partição de 4Nx2N na Figura 20 é dividida em três em uma razão de 1:2:1 tal como Nx2N, 2Nx2N, e Nx2N. No presente documento quando o bloco superior deve ser dividido em três, um modo de partição para dividir o bloco inferior em três em uma razão de 1:2:1 não é selecionado como um candidato para possível modo de partição. A divisão em três pode ser executada em uma razão diferente de 1:2:1. Além disso, uma divisão em mais do que 3 pode ser executada, e, mesmo quando dividindo em dois, a razão pode ser diferente de 1:1, tal como 1:2 ou 1:3. Apesar da Figura 40 ilustrar um exemplo de dividir horizontalmente primeiro, a mesma restrição pode também ser aplicado quando dividindo verticalmente primeiro.
[00157] A Figura 41 e Figura 42 ilustram um exemplo no qual a mesma restrição é aplicada no caso onde o primeiro bloco é um retângulo.
[00158] A Figura 43 ilustra um exemplo de uma segunda restrição quando um quadrado é horizontalmente dividido em três e ainda hori-zontalmente dividido em duas partes iguais. Quando aplicando a restrição na Figura 43, na Figura 40, é possível selecionar um modo de partição para dividir o bloco inferior de 4Nx2N em três em uma razão de 1:2:3. As informações que indicam qual da restrição na Figura 40 e a restrição na Figura 43 deve ser aplicada podem ser separadamente codificadas em informações do cabeçalho. Alternativamente, a restrição que tem uma menor quantidade de informações de código que indicam a partição pode ser aplicada. Por exemplo, assumindo que a quantidade de códigos de informação que indicam a partição no caso 1 e caso 2 está mostrada abaixo, a divisão do caso 1 é habilitada e a divisão do caso 2 é desabilitada. Em outras palavras, a restrição na Figura 43 é aplicada.
[00159] (Caso 1) (1) Após um quadrado ser horizontalmente dividido em dois, (2) cada um dos dois blocos retangulares superior e inferior é verticalmente dividido em três: (1) informação de direção: 1 bit, informações de número de partições: 1 bit, (2) (informações de dire- ção: 1 bit, informações de número de partições: 1 bit) x 2 para um total de 6 bits
[00160] (Caso 2) (1) Após um quadrado ser verticalmente dividido, (2) cada um do esquerdo, central, e direito blocos retangulares é hori-zontalmente dividido em dois: (1) informações de direção: 1 bit, infor-mações de número de partições: 1 bit, (2) (informações de direção: 1 bit, informações de número de partições: 1 bit) x 3 para um total de 8 bits.
[00161] Alternativamente, durante a codificação, existem casos onde a partição apropriada é determinada enquanto selecionando um modo de partição em uma ordem predeterminada. Por exemplo, é possível tentar dividir em dois, então tentar dividir em três ou dividir em quatro (2 partes iguais horizontalmente e verticalmente), etc. Neste tempo, antes da tentativa para dividir em três como na Figura 43, uma tentativa que inicia de dividir em dois como nos exemplos na Figura 40 já foi executada. Portanto, em uma tentativa que inicia de dividir em dois, a restrição na Figura 43 é aplicada, porque as partições resultam de dividir igualmente um bloco horizontalmente, e ainda verticalmente dividir os dois blocos superior e inferior em três já foi obtida. Neste modo, o método de restrição a ser selecionado pode ser determinado com base em um esquema de codificação predeterminado.
[00162] A Figura 44 ilustra um exemplo onde, no segundo modo de partição, os modos de partição selecionáveis para particionar o segundo bloco na mesma direção que o primeiro modo de partição são restritos. No presente documento o primeiro modo de partição é verticalmente dividir em três, e assim, neste tempo, dividir em dois não pode ser selecionado como o segundo modo de partição. Por outro lado, dividir em dois pode ser selecionada para a direção vertical, a qual é uma direção diferente do primeiro modo de partição (Figura 45).
[00163] A Figura 22 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por N pixels, como ilustrado na etapa (2c), na Modalidade 2. Como ilustrado na Figura 22, um bloco de 2N pixels por N pixels (o valor de 'N' pode ser qualquer valor na faixa de 8 a 128 os quais são múltiplos inteiros de 4, por exemplo, 16 pixels por 8 pixels) pode ser dividido verticalmente em um sub-bloco de N/2 pixels por N pixels, um sub-bloco de N pixels por N pixels, e um sub-bloco de N/2 pixels por N pixels (por exemplo, um sub-bloco de 4 pixels por 8 pixels, um sub-bloco de 8 pixels por 8 pixels, um sub-bloco de 4 pixels por 8 pixels), utilizando o primeiro modo de divisão (i), como na etapa (1a). Mais ainda, um bloco de 2N pixels por N pixels pode também ser dividido em dois sub- blocos de N pixels por N pixel utilizando o segundo modo de divisão (ii), como na etapa (2a). Durante o primeiro modo de divisão (i), o bloco de N pixels por N pixels central pode ser verticalmente dividido em dois sub-blocos de N/2 pixels por N pixels (por exemplo, 4 pixels por 8 pixels) na etapa (1b). Durante o segundo modo de divisão (ii), quando o bloco de N pixels por N pixels esquerdo (primeiro bloco) é verticalmente dividido em dois sub-blocos de N/2 pixels por N pixels como na etapa (2b), um modo de partição o qual divide verticalmente o bloco de N pixels por N pixels direito (segundo bloco) em sub-blocos de N/2 pixels por N pixels na etapa (2c) não é selecionado como um candidato para um possível modo de partição. Isto é porque, o modo de partição produzirá tamanhos de sub-blocos os quais são os mesmos que aqueles obtidos do primeiro modo de divisão (i), ou quatro sub-blocos de N/2 pixels por N pixels.
[00164] Neste modo, na Figura 22, quando o primeiro bloco é verti-calmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco horizontalmente vizinho ao primeiro bloco é verticalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00165] A Figura 23 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por N pixels, como ilustrado na etapa (2c), na Modalidade 2. Como ilustrado na Figura 23, um bloco de N pixels por 2N pixels (o valor de 'N' pode ser qualquer valor na faixa de 8 a 128 os quais são múltiplos inteiros de 4, por exemplo, 8 pixels por 16 pixels) pode ser dividido em um sub-bloco de N pixels por N/2 pixels, um sub-bloco de N pixels por N pixels, e a sub-bloco de N pixels por N/2 pixels (por exemplo, um sub-bloco de 8 pixels por 4 pixels, um sub-bloco de 8 pixels por 8 pixels, um sub-bloco de 8 pixels por 4 pixels) utilizando o primeiro modo de divisão (i), como na etapa (1a). Mais ainda, um bloco de N pixels por 2N pixels pode também ser dividido em dois sub-blocos de N pixels por N pixel utilizando o segundo modo de divisão, como na etapa (2a). Durante o primeiro modo de divisão (i), o bloco de N pixels por N pixels central pode ser horizontalmente dividido em dois sub-bloco de N pixels por N/2 pixels, como na etapa (1b). Durante o segundo modo de divisão (ii), quando os N pixels por N pixels superiores (primeiro bloco) é horizontalmente dividido em dois sub-bloco de N pixels por N/2 pixels na etapa (2b), um modo de partição o qual divide horizontalmente os N pixels por N pixels inferiores (segundo bloco) em dois sub-bloco de N pixels por N/2 pixels na etapa (2c) não é selecionado como um candidato para um possível modo de partição. Isto é porque, o modo de partição produzirá tamanhos de sub-blocos os quais são os mesmos que aqueles obtidos do primeiro modo de divisão (i), ou quatro sub-blocos de N pixels por N/2 pixels.
[00166] Neste modo, na Figura 23, quando o primeiro bloco é hori-zontalmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco verticalmente vizinho ao primeiro bloco é horizontalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00167] Se for determinado que o segundo modo de partição deve ser selecionado como um candidato para particionar um segundo bloco (N em S1003), um modo de partição é selecionado de uma pluralidade de modos de partição a qual inclui o segundo modo de partição como um candidato na etapa S1004. Na etapa S1005, um segundo parâmetro que indica o resultado de seleção está escrito em um fluxo de bits.
[00168] Se for determinado que o segundo modo de partição não deve ser selecionado como um candidato para particionar um segundo bloco (Y em S1003), um modo de partição diferente do segundo modo de partição é selecionado para particionar o segundo bloco na etapa S1006. No presente documento o modo de partição selecionado particiona um bloco em sub-blocos com diferentes formas ou diferentes tamanhos se comparados com sub-blocos que teriam sido gerados pelo segundo modo de partição.
[00169] A Figura 24 ilustra um exemplo de particionar um bloco de 2N pixels por N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Como ilustrado na Figura 24, o modo de partição selecionado pode dividir um bloco de 2N pixels por N pixels corrente (o bloco inferior neste exemplo) em três sub-blocos como ilustrado na (c) e (f) na Figura 24. Os tamanhos dos três sub- blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 24. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00170] A Figura 25 ilustra um exemplo de particionar um bloco de N pixels por 2N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Como ilustrado na Figura 25, o modo de partição selecionado pode dividir o bloco de N pixels por 2N pixels corrente (o bloco direito neste exemplo) em três sub-blocos como ilustrado em (c) e (f) na Figura 25. Os tamanhos dos três sub- blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 25. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00171] A Figura 26 ilustra um exemplo de particionar um bloco de N pixels por N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Como ilustrado na Figura 26, um bloco de 2N pixels por N pixels é verticalmente dividido em dois sub-blocos de N pixels por N pixel na etapa (1), e o bloco de N pixels por N pixels esquerdo é verticalmente dividido em dois sub-blocos de N/2 pixels por N pixels na etapa (2). Na etapa (3), um bloco corrente pode ser particionado em três sub-blocos utilizando um modo de partição selecionado para um bloco corrente de N pixels por N pixels (o bloco esquerdo neste exemplo), como ilustrado na (c) e (f) na Figura 26. Os tamanhos dos três sub-blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 26. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00172] A Figura 27 ilustra um exemplo de particionar um bloco de N pixels por N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado na etapa (3), na Modalidade 2. Como ilustrado na Figura 27, um bloco de N pixels por 2N pixels é horizontalmente dividido em dois sub-blocos de N pixels por N pixel na etapa (1), e o bloco de N pixels por N pixels superior é horizontalmente dividido em dois sub-bloco de N pixels por N/2 pixels na etapa (2). Na etapa (3), um bloco corrente pode ser particionado em três sub-blocos utilizando um modo de partição selecionado para um bloco corrente de N pixels por N pixels (o bloco inferior neste exemplo), como ilustrado em (c) e (f) na Figura 27. Os tamanhos dos três sub-blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 27. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00173] A Figura 17 ilustra as possíveis localizações do primeiro parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 17, o primeiro parâmetro pode estar em um conjunto de pa-râmetros de vídeo, um conjunto de parâmetros de sequência, um con-junto de parâmetros de imagem, um cabeçalho de fatia, ou uma uni dade de árvore de codificação. O primeiro parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o primeiro parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado na direção horizontal ou vertical. O primeiro parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos.
[00174] A Figura 18 ilustra as possíveis localizações do segundo parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 18, o segundo parâmetro pode estar em um conjunto de pa-râmetros de vídeo, um conjunto de parâmetros de sequência, um con-junto de parâmetros de imagem, um cabeçalho de fatia, ou uma unidade de árvore de codificação. O segundo parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o segundo parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. O segundo parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos. O segundo parâmetro segue após o primeiro parâmetro em um fluxo de bits como ilustrado na Figura 19.
[00175] O primeiro bloco e o segundo bloco são diferentes blocos. O primeiro bloco e o segundo bloco podem estar incluídos no mesmo quadro. Por exemplo, o primeiro bloco pode ser o bloco vizinho superior do segundo bloco. Mais ainda, por exemplo, o primeiro bloco pode ser o bloco vizinho esquerdo do segundo bloco.
[00176] Na etapa S1007, o segundo bloco é particionado em sub- blocos utilizando o modo de partição selecionado. Na etapa S1008, os blocos particionados são codificados.
[00177] Codificador A Figura 15 é um diagrama de blocos que ilustra a estrutura de um co-dificador de vídeo / imagem de acordo com a Modalidade 2 ou 3.
[00178] O codificador de vídeo 5000 é um dispositivo para codificar um vídeo / imagem inserido em uma base de bloco por bloco de modo a gerar um fluxo de bits de saída codificado. Como ilustrado na Figura 15, o codificador de vídeo 5000 inclui um transformador 5001, quanti- zador 5002, quantizador inverso 5003, transformador inverso 5004, memória de blocos 5005, memória de quadros 5006, intrapreditor 5007, interpreditor 5008, codificador de entropia 5009, e determinador de partição de bloco 5010.
[00179] Um vídeo de entrada é inserido em um somador, e o valor somado é emitido para o transformador 5001. O transformador 5001 transforma os valores somados em coeficientes de frequência com base no modo de partição de bloco derivado do determinador de partição de bloco 5010, e emite os coeficientes de frequência para o quantiza- dor 5002. O modo de partição de bloco pode ser relacionado a um modo de partição de bloco, um tipo de partição de bloco, ou uma direção de partição de bloco. O quantizador 5002 quantizes os coeficientes quantizados inseridos, e emite os valores quantizados para o quan- tizador inverso 5003 e o codificador de entropia 5009.
[00180] O quantizador inverso 5003 quantiza inversamente os valores quantizados emitidos do quantizador 5002, e emite os coeficientes de frequência para o transformador inverso 5004. O transformador inverso 5004 executa uma transformada de frequência inversa nos coeficientes de frequência com base no modo de partição de bloco derivado do determinador de partição de bloco 5010, de modo a transformar os coeficientes de frequência em valores de amostra do fluxo de bits, e emite os valores de amostra para um somador.
[00181] O somador soma os valores de amostra do fluxo de bits emitido do transformador inverso 5004 aos valores de vídeo / imagem preditos emitidos do inter / intrapreditor 5007, 5008, e emite os valores somados para a memória de blocos 5005 ou memória de quadros 5006 para predição adicional. O determinador de partição de bloco 5010 coleta as informações de bloco da memória de blocos 5005 ou memória de quadros 5006 para derivar um modo de partição de bloco e parâmetros relativos ao modo de partição de bloco. Utilizar o modo de partição de bloco derivado resultará no particionamento de um bloco em uma pluralidade de sub-blocos. O inter / intrapreditor 5007, 5008 pesquisa dentro de vídeos / imagens armazenados na memória de blocos 5005 ou de vídeos / imagens na memória de quadros 5006 reconstruídos utilizando o modo de partição de bloco derivado do determinador de partição de bloco 5010, e estima uma área de vídeo / imagem a qual é, por exemplo, mais similar aos vídeos / imagens de entrada para predição.
[00182] O codificador de entropia 5009 codifica os valores quanti- zados emitidos do quantizador 5002, codifica parâmetros do determinador de partição de bloco 5010, e emite um fluxo de bits.
[00183] Processo de Decodificação A Figura 12 ilustra a processo de decodificação de vídeo de acordo com a Modalidade 2.
[00184] Primeiro, na etapa S2001, um primeiro parâmetro para identificar, de uma pluralidade de modos de partição, um modo de partição para particionar um primeiro bloco em sub-blocos é analisado de um fluxo de bits. Utilizando um modo de partição resultará no particio- namento de um bloco em sub-blocos, e utilizar diferentes modos de partição pode resultar em particionar um bloco em sub-blocos com diferentes formas, ou diferentes alturas, ou diferentes larguras.
[00185] A Figura 28 ilustra exemplos de modos de partição para particionar um bloco de N pixels por N pixels na Modalidade 2. Na Figura 28, (a) a (h) mostram diferentes modos de partição. Como ilustrado na Figura 28, utilizar o modo de partição (a) particionará um bloco de N pixels por N pixels (o valor de 'N' pode ser qualquer valor na faixa de 8 a 128 os quais são múltiplos inteiros de 4, por exemplo um bloco de 16 pixels por 16 pixels) em dois sub-blocos de N/2 pixels por N pixels (por exemplo, sub-blocos de 8 pixels por 16 pixels). Utilizar o modo de partição (b) particionará um bloco de N pixels por N pixels em um sub-bloco de N/4 pixels por N pixels e um sub-bloco de 3N/4 pixels por N pixels (por exemplo, um sub-bloco de 4 pixels por 16 pixels e um sub-bloco de 12 pixels por 16 pixels). Utilizar o modo de partição (c) particionará um bloco de N pixels por N pixels em um sub-bloco de 3N/4 pixels por N pixels e um sub-bloco de N/4 pixels por N pixels (por exemplo, um sub-bloco de 12 pixels por 16 pixels e um sub-bloco de 4 pixels por 16 pixels). Utilizar o modo de partição (d) particionará um bloco de N pixels por N pixels em um sub-bloco de N/4 pixels por N pixels, um sub-bloco de N/2 pixels por N pixels, e um sub-bloco de N/4 pixels por N pixels (por exemplo, um sub-bloco de 4 pixels por 16 pixels, um sub-bloco de 8 pixels por 16 pixels e um sub-bloco de 4 pixels por 16 pixels). Utilizar o modo de partição (e) particionará um bloco de N pixels por N pixels em dois sub-blocos de N pixels por N/2 pixels (por exemplo, sub-blocos de 16 pixels por 18 pixels). Utilizar o modo de partição (f) particionará um bloco de N pixels por N pixels em um sub-bloco de N pixels por N/4 pixels e um sub-bloco de N pixels por 3N/4 pixels (por exemplo, um sub-bloco de 16 pixels por 4 pixels e um sub-bloco de 16 pixels por 12 pixels). Utilizar o modo de partição (g) particionará um bloco de N pixels por N pixels em um sub-bloco de N pixels por 3N/4 pixels e um sub-bloco de N pixels por N/4 pixels (por exemplo, um sub-bloco de 16 pixels por 12 pixels e um sub-bloco de 16 pixels por 4 pixels). Utilizar o modo de partição (h) particionará um bloco de N pixels por N pixels em um sub-bloco de N pixels por N/4 pixels, a Sub-bloco de N pixels por N/2 pixels, e um sub-bloco de N pixels por N/4 pixels (por exemplo, um sub-bloco de 16 pixels por 4 pixels, um sub-bloco de 16 pixels por 8 pixels e um sub-bloco de 16 pixels por 4 pixels).
[00186] A seguir, na etapa S2002, é determinado se um primeiro parâmetro identifica um primeiro modo de partição.
[00187] A seguir, na etapa S2003, com base em pelo menos a de-terminação quanto a se o primeiro parâmetro identificou um primeiro modo de partição, é determinado se o segundo modo de partição não deve ser selecionado como um candidato para particionar um segundo bloco.
[00188] Os dois diferentes conjuntos de modos de partição podem particionar um bloco em sub-blocos das mesmas formas e tamanhos. Por exemplo, como ilustrado na Figura 31A, os sub-blocos de (1b) e (2c) têm as mesmas formas e tamanhos. Um conjunto de modos de partição pode incluir pelo menos dois modos de partição. Por exemplo, um conjunto de modos de partição pode incluir uma divisão vertical de árvore ternária seguida por uma divisão vertical de árvore binária no sub-bloco central e nenhuma divisão em outros sub-blocos como ilustrado em (1a) e (1b) na Figura 31A. Mais ainda, por exemplo, outro conjunto de modos de partição pode incluir uma divisão vertical de árvorebinária seguida por uma divisão vertical de árvore binária em ambos os sub-blocos, como ilustrado em (2a), (2b), e (2c) na Figura 31A. Ambos os conjuntos de modos de partição resultarão em sub-blocos de mesmas formas e tamanhos.
[00189] Quando selecionando entre dois conjuntos de modos de partição que resultam em dividir um bloco em sub-blocos de mesmas formas e tamanhos e cada um dos conjuntos de modos de partição, quando codificados em um fluxo de bits, têm diferentes números de bins ou diferentes números de bits, o conjunto de modos de partição que tem menor número de bins ou menor número de bits é selecionado entre os dois conjuntos.
[00190] Quando selecionando entre dois conjuntos de modos de partição que resultam em dividir um bloco em sub-blocos de mesmas formas e tamanhos e cada um dos conjuntos de modos de partição, quando codificados em um fluxo de bits, têm o mesmo número de bins mesmo número de bits, o conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição é selecionado entre os dois conjuntos. Um exemplo da ordem predeterminada pode ser uma ordem baseada no número de modos de partição em cada conjunto de modos de partição.
[00191] A Figura 31A e Figura 31B ilustram um exemplo de dividir um bloco em sub-blocos utilizando um conjunto de modos de partição com menos bins nos modos de partição de codificação. Neste exemplo, quando o bloco de N pixels por N pixels esquerdo é verticalmente dividido em dois sub-blocos, o segundo modo de partição na etapa (2c), para o bloco de N pixels por N pixels direito não é selecionado. Isto é porque, no método de codificação de modo de partição na Figura 31B, o segundo conjunto de modos de partição (2a, 2b, 2c) requererá mais bins de modos de partição de codificação se comparado com o primeiro conjunto de modos de partição (1a, 1b).
[00192] A Figura 32A ilustra um exemplo de dividir um bloco em sub-blocos utilizando um conjunto de modos de partição que aparece primeiro em uma ordem predeterminada de uma pluralidade de conjuntos de modos de partição. Neste exemplo, quando o bloco de 2N pixels por N/2 pixels superior é verticalmente dividido em três sub- blocos, o segundo modo de partição na etapa (2c), para o bloco de 2N pixels por N/2 pixels inferior não é selecionado. Isto é porque, no método de codificação de modo de partição na Figura 32B, o segundo conjunto de modos de partição (2a, 2b, 2c) tem o mesmo número de bins que o primeiro conjunto de modos de partição (1a, 1b, 1c, 1d) e aparece após o primeiro conjunto de modos de partição (1a, 1b, 1c, 1d) na ordem predeterminada de conjuntos de modos de partição na Figura 32C. A ordem predeterminada da pluralidade de conjuntos de modos de partição pode ser fixa ou sinalizada em um fluxo de bits.
[00193] A Figura 20 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de 2N pixels por N pixels, como ilustrado em etapa (2c), na Modalidade 1. Como ilustrado na Figura 20, um bloco de 2N pixels por 2N pixels (por exemplo, um bloco de 16 pixels por 16 pixels) pode ser dividido em quatro sub-blocos iguais de tamanho de N pixel por N pixels (por exemplo, 8 pixels por 8 pixels) utilizando um primeiro modo de divisão (i), como na etapa (1a). Mais ainda, um bloco de 2N pixels por 2N pixels pode também ser dividido em dois sub-blocos iguais de tamanho de 2N pixels por N pixels (por exemplo, 16 pixels por 8 pixels) utilizando um segundo modo de divisão (ii), como na etapa (2a). Durante o segundo modo de divisão (ii), quando primeiro modo de partição divide o bloco de 2N pixels por N pixel superior (primeiro bloco) verticalmente em dois sub- blocos de N pixels por N pixel como na etapa (2b), o segundo modo de partição o qual divide verticalmente o bloco de 2N pixels por N pixel inferior (segundo bloco) em dois sub-blocos de N pixels por N pixel na etapa (2c) não é selecionado como um candidato para possível modo de partição. Isto é porque o segundo modo de partição produzirá tamanhos de sub-blocos os mesmos que os tamanhos de sub-bloco de divisão quádrupla do primeiro modo de divisão (i).
[00194] Neste modo, na Figura 20, quando o primeiro bloco é verti-calmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco verticalmente vizinho ao primeiro bloco é verticalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00195] A Figura 21 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por 2N pixels, como ilustrado em etapa (2c), na Modalidade 2. Como ilustrado na Figura 21, um bloco de 2N pixels por 2N pixels pode ser dividido em quatro sub-blocos iguais de N pixels por N pixels utilizando o primeiro modo de divisão (i). Mais ainda, como na etapa (2a), um bloco de 2N pixels por 2N pixels pode também ser verticalmente dividido em dois sub-blocos iguais de N pixels por 2N pixels (por exemplo, 8 pixels por 16 pixels) utilizando o segundo modo de divisão (ii). Durante o segundo modo de divisão (ii), quando o primeiro modo de partição divide o bloco de N pixels por 2N pixels esquerdo (primeiro bloco) horizontalmente em dois sub-blocos de N pixels por N pixel como na etapa (2b), o segundo modo de partição o qual divide horizontalmente o bloco de N pixels por 2N pixels direito (segundo bloco) em dois sub- blocos de N pixels por N pixel na etapa (2c) não é selecionado como um candidato para possível modo de partição. Isto é porque o segundo modo de partição produzirá tamanhos de sub-blocos os mesmos que os tamanhos de sub-bloco de divisão quádrupla do primeiro modo de divisão (i).
[00196] Neste modo, na Figura 21, quando o primeiro bloco é hori-zontalmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco horizontalmente vizinho ao primeiro bloco é horizontalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00197] A Figura 22 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por N pixels, como ilustrado em etapa (2c), na Modalidade 2. Como ilustrado na Figura 22, um bloco de 2N pixels por N pixels (o valor de 'N' pode ser qualquer valor na faixa de 8 a 128 os quais são múltiplos inteiros de 4, por exemplo, 16 pixels por 8 pixels) pode ser dividido ver- ticalmente em um sub-bloco de N/2 pixels por N pixels, um sub-bloco de N pixels por N pixels, e um sub-bloco de N/2 pixels por N pixels (por exemplo, um sub-bloco de 4 pixels por 8 pixels, um sub-bloco de 8 pixels por 8 pixels, um sub-bloco de 4 pixels por 8 pixels), utilizando o primeiro modo de divisão (i), como na etapa (1a). Mais ainda, um bloco de 2N pixels por N pixels pode também ser dividido em dois sub- blocos de N pixels por N pixel utilizando o segundo modo de divisão (ii), como na etapa (2a). Durante o primeiro modo de divisão (i), o bloco de N pixels por N pixels central pode ser verticalmente dividido em dois sub-blocos N/2 pixels por N pixels (por exemplo, 4 pixels por 8 pixels) na etapa (1b). Durante o segundo modo de divisão (ii), quando o bloco de N pixels por N pixels esquerdo (primeiro bloco) é verticalmente dividido em sub-blocos de N/2 pixels por N pixels como na etapa (2b), um modo de partição o qual divide verticalmente o bloco de N pixels por N pixels direito (segundo bloco) em dois sub-blocos de N/2 pixels por N pixels na etapa (2c) não é selecionado como um candidato para possível modo de partição. Isto é porque, o modo de partição produzirá tamanhos de sub-blocos os quais são os mesmos que aqueles obtidos do primeiro modo de divisão (i), ou quatro sub-blocos de N/2 pixels por N pixels.
[00198] Neste modo, na Figura 22, quando o primeiro bloco é verti-calmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco horizontalmente vizinho ao primeiro bloco é verticalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00199] A Figura 23 ilustra um exemplo no qual um segundo modo de partição não é selecionado para particionar um bloco de N pixels por N pixels, como ilustrado em etapa (2c), na Modalidade 2. Como ilustrado na Figura 23, um bloco de N pixels por 2N pixels (o valor de 'N' pode ser qualquer valor na faixa de 8 a 128 os quais são múltiplos inteiros de 4, por exemplo, 8 pixels por 16 pixels) pode ser dividido em um sub-bloco de N pixels por N/2 pixels, um sub-bloco de N pixels por N pixels, e um sub-bloco de N pixels por N/2 pixels (por exemplo, um sub-blocos de 8 pixels por 4 pixels, um sub-bloco de 8 pixels por 8 pixels, um sub-blocos de 8 pixels por 4 pixels) utilizando o primeiro modo de divisão (i), como na etapa (1a). Mais ainda, um bloco de N pixels por 2N pixels pode também ser dividido em dois sub-blocos de N pixels por N pixel utilizando o segundo modo de divisão, como na etapa (2a). Durante o primeiro modo de divisão (i), o bloco de N pixels por N pixels central pode ser horizontalmente dividido em dois sub- blocos de N pixels por N/2 pixels, como na etapa (1b). Durante o segundo modo de divisão (ii), quando os N pixels por N pixels superiores (primeiro bloco) é horizontalmente dividido em dois sub-blocos de N pixels por N/2 pixels na etapa (2b), um modo de partição o qual divide horizontalmente os N pixels por N pixels inferiores (segundo bloco) em dois sub-blocos de N pixels por N/2 pixels na etapa (2c) não é selecionado como um candidato para possível modo de partição. Isto é porque, o modo de partição produzirá tamanhos de sub-blocos os quais são os mesmos que aqueles obtidos do primeiro modo de divisão (i), ou quatro sub-blocos de N pixels por N/2 pixels.
[00200] Neste modo, na Figura 23, quando o primeiro bloco é hori-zontalmente dividido em dois sub-blocos iguais se o primeiro modo de partição for utilizado, e o segundo bloco verticalmente vizinho ao primeiro bloco é horizontalmente dividido em dois sub-blocos iguais se o segundo modo de partição for utilizado, o segundo modo de partição não é selecionado como um candidato.
[00201] Se for determinado que o segundo modo de partição deve ser selecionado como um candidato para particionar um segundo bloco (N em S2003), o segundo parâmetro é analisado do fluxo de bits e um modo de partição é selecionado de uma pluralidade de modos de partição a qual inclui o segundo modo de partição como um candidato na etapa S2004.
[00202] Se for determinado que o segundo modo de partição não deve ser selecionado como um candidato para particionar o segundo bloco (Y em S2003), um modo de partição diferente do segundo modo de partição é selecionado para particionar o segundo bloco na etapa S2005. No presente documento o modo de partição selecionado particiona um bloco em sub-blocos com diferentes formas ou diferentes tamanhos se comparado com sub-blocos que teriam sido gerados pelo segundo modo de partição.
[00203] A Figura 24 ilustra um exemplo de particionar um bloco de 2N pixels por N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado em etapa (3), na Modalidade 2. Como ilustrado na Figura 24, o modo de partição selecionado pode dividir um bloco de 2N pixels por N pixels corrente (o bloco inferior neste exemplo) em três sub-blocos como ilustrado em (c) e (f) na Figura 24. Os tamanhos dos três sub- blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 24. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00204] A Figura 25 ilustra um exemplo de particionar um bloco de N pixels por 2N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado em etapa (3), na Modalidade 2. Como ilustrado na Figura 25, o modo de partição selecionado pode dividir o bloco de N pixels por 2N pixels corrente (o bloco direito neste exemplo) em três sub-blocos como ilustrado em (c) e (f) na Figura 25. Os tamanhos dos três sub- blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 25. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00205] A Figura 26 ilustra um exemplo de particionar um bloco de N pixels por N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado em etapa (3), na Modalidade 2. Como ilustrado na Figura 26, um bloco de 2N pixels por N pixels é verticalmente dividido em dois sub-blocos de N pixels por N pixel na etapa (1), e o bloco de N pixels por N pixels esquerdo é verticalmente dividido em dois sub-blocos de N/2 pixels por N pixels na etapa (2). Na etapa (3), um bloco corrente pode ser particionado em três sub-blocos utilizando um modo de partição selecionado para um bloco corrente de N pixels por N pixels (o bloco esquerdo neste exemplo), como ilustrado em (c) e (f) na Figura 26. Os tamanhos dos três sub-blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 26. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00206] A Figura 27 ilustra um exemplo de particionar um bloco de N pixels por N pixels utilizando um modo de partição selecionado quando o segundo modo de partição não deve ser selecionado, como ilustrado em etapa (3), na Modalidade 2. Como ilustrado na Figura 27, um bloco de N pixels por 2N pixels é horizontalmente dividido em dois sub-blocos de N pixels por N pixel na etapa (1), e o bloco de N pixels por N pixels superior é horizontalmente dividido em dois sub-blocos de N pixels por N/2 pixels na etapa (2). Na etapa (3), um bloco corrente pode ser particionado em três sub-blocos utilizando um modo de partição selecionado para um bloco corrente de N pixels por N pixels (o bloco inferior neste exemplo), como ilustrado em (c) e (f) na Figura 27. Os tamanhos dos três sub-blocos podem ser diferentes. Por exemplo, entre os três sub-blocos, um grande sub-bloco pode ter duas vezes a largura / altura de um pequeno sub-bloco. Mais ainda, por exemplo, o modo de partição selecionado pode dividir o bloco corrente em dois sub-blocos com diferentes tamanhos (árvore binária assimétrica) como ilustrado em (a), (b), (d), e (e) na Figura 27. Por exemplo, quando uma árvore binária assimétrica é utilizada, o grande sub-bloco pode ter três vezes a largura / altura do pequeno sub-bloco.
[00207] A Figura 17 ilustra as possíveis localizações do primeiro parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 17, o primeiro parâmetro pode estar em um conjunto de pa-râmetros de vídeo, um conjunto de parâmetros de sequência, um con-junto de parâmetros de imagem, um cabeçalho de fatia, ou uma unidade de árvore de codificação. O primeiro parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o primeiro parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. O primeiro parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos.
[00208] A Figura 18 ilustra as possíveis localizações do segundo parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 18, o segundo parâmetro pode estar em um conjunto de pa-râmetros de vídeo, um conjunto de parâmetros de sequência, um con-junto de parâmetros de imagem, um cabeçalho de fatia, ou uma unidade de árvore de codificação. O segundo parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o segundo parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. O segundo parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos. O segundo parâmetro segue após o primeiro parâmetro em um fluxo de bits como ilustrado na Figura 19.
[00209] O primeiro bloco e o segundo bloco são diferentes blocos. O primeiro bloco e o segundo bloco podem ser incluídos no mesmo quadro. Por exemplo, o primeiro bloco pode ser o bloco vizinho superior do segundo bloco. Mais ainda, por exemplo, o primeiro bloco pode ser o bloco vizinho esquerdo do segundo bloco.
[00210] Na etapa S2006, o segundo bloco é particionado em sub- blocos utilizando o modo de partição selecionado. Na etapa S2007, os blocos particionados são decodificados.
Decodificador
[00211] A Figura 16 é um diagrama de blocos que ilustra a estrutura de um decodificador de vídeo / imagem de acordo com a Modalidade 2 ou 3.
[00212] O decodificador de vídeo 6000 é um dispositivo para decodificar um fluxo de bits codificado de entrada em uma base de bloco por bloco e que emite vídeos / imagens. Como ilustrado na Figura 16, o decodificador de vídeo 6000 inclui um decodificador de entropia 6001, quantizador inverso 6002, transformador inverso 6003, memória de blocos 6004, memória de quadros 6005, intrapreditor 6006, inter- preditor 6007, e determinador de partição de bloco 6008.
[00213] Um fluxo de bits codificado de entrada é inserido no decodi- ficador de entropia 6001. Após o fluxo de bits codificado de entrada ser inserido no decodificador de entropia 6001, o decodificador de entropia 6001 decodifica o fluxo de bits codificado de entrada, emite parâmetros para o determinador de partição de bloco 6008, e emite os valores decodificados para o quantizador inverso 6002.
[00214] O quantizador inverso 6002 quantiza inversamente os valores decodificados, e emite os coeficientes de frequência para o trans-formador inverso 6003. O transformador inverso 6003 executa uma transformada de frequência inversa nos coeficientes de frequência com base no modo de partição de bloco derivado do determinador de partição de bloco 6008 para transformar os coeficientes de frequência em valores de amostra, e emite os valores de amostra para um soma- dor. O modo de partição de bloco pode ser relacionado a um modo de partição de bloco, um tipo de partição de bloco, ou uma direção de partição de bloco. O somador soma os valores de amostra aos valores de vídeo / imagem preditos emitidos do intra / interpreditor 6006, 6007, e emite os valores somados para um display, e emite os valores somados para a memória de blocos 6004 ou memória de quadros 6005 para predição adicional. O determinador de partição de bloco 6008 coleta as informações de bloco da memória de blocos 6004 ou memória de quadros 6005 para derivar um modo de partição de bloco utilizando os parâmetros decodificados pelo decodificador de entropia 6001. Utilizar o modo de partição de bloco derivado resultará no particionamen- to de um bloco em uma pluralidade de sub-blocos. Além disso, intra / interpreditor 6006, 6007 estima uma área de vídeo / imagem do bloco a ser decodificado, dentre os vídeos / imagens armazenados na memória de blocos 6004 ou de vídeos / imagens na memória de quadros 6005 reconstruídos utilizando o modo de partição de bloco derivado do determinador de partição de bloco 6008.
MODALIDADE 3
[00215] O processo de codificação e o processo de decodificação de acordo com a Modalidade 3 serão descritos em detalhes com referência à Figura 13 e Figura 14. O codificador e decodificador de acordo com a Modalidade 3 serão descritos em detalhes com referência à Figura 15 e Figura 16.
Processo de Codificação
[00216] A Figura 13 ilustra um processo de codificação de vídeo de acordo com a Modalidade 3.
[00217] Primeiro, na etapa S3001, um primeiro parâmetro para identificar, de uma pluralidade de tipos de partição, um tipo de partição para particionar um primeiro bloco em sub-blocos é escrito em um fluxo de bits.
[00218] A seguir, na etapa S3002, um segundo parâmetro que indica a direção de partição é escrito no fluxo de bits. O segundo parâmetro segue após o primeiro parâmetro em um fluxo de bits. O tipo de partição juntamente com a direção de partição podem formar o modo de partição. O tipo de partição indica o número de sub-blocos e razão de partição para particionar um bloco.
[00219] A Figura 29 ilustra exemplos de tipos de partição e direções de partição para particionar um bloco de N pixels por N pixels na Modalidade 3. Na Figura 29, (1), (2), (3), e (4) são diferentes tipos de partição, (1a), (2a), (3a), e (4a) são diferentes modos de partição de tipos de partição relativos na direção de partição vertical, e (1b), (2b), (3b), e (4b) são diferentes modos de partição de tipos de partição relativos na direção de partição horizontal. Como ilustrado na Figura 29, um bloco de N pixels por N pixels é particionado utilizando o modo de partição (1a) quando este é particionado com árvore binária simétrica (isto é, dois sub-blocos) na direção de partição vertical com uma razão de par-tição de 1:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (1b) quando este é particionado com árvore binária simétrica (isto é, dois sub-blocos) na direção de partição horizontal com uma razão de partição de 1:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (2a) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição vertical na razão de partição de 1:3. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (2b) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição horizontal na razão de partição de 1:3. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (3a) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição vertical na razão de partição de 3:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (3b) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição horizontal na razão de partição de 3:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (4a) quando este é particionado com árvore ternária (isto é, três sub-blocos) na direção de partição vertical na razão de partição de 1:2:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (4b) quando este é particionado com árvore ternária (ou três sub-blocos) na direção de partição horizontal na razão de partição de 1:2:1.
[00220] A Figura 17 ilustra as possíveis localizações do primeiro parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 17, o primeiro parâmetro pode estar em um conjunto de pa-râmetros de vídeo, um conjunto de parâmetros de sequência, um con-junto de parâmetros de imagem, um cabeçalho de fatia, ou uma unidade de árvore de codificação. O primeiro parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o primeiro parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. O primeiro parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos.
[00221] A Figura 18 ilustra as possíveis localizações do segundo parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 18, o segundo parâmetro pode estar em um conjunto de pa-râmetros de vídeo, conjunto de parâmetros de sequência, conjunto de parâmetros de imagem, cabeçalho de fatia, ou unidade de árvore de codificação. O segundo parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o segundo parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. O segundo parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos. O segundo parâmetro segue após o primeiro parâmetro em um fluxo de bits como ilustrado na Figura 19.
[00222] A Figura 30 ilustra uma vantagem de codificar o tipo de partição antes da direção de partição se comparado com codificar a direção de partição antes do tipo de partição. Neste exemplo, quando a direção de partição horizontal é desabilitada devido a um tamanho não suportado (16 pixels por 2 pixels), não há necessidade de codificar a direção de partição. A direção de partição é determinada como direção de partição vertical conforme a direção de partição horizontal é desabi- litada neste exemplo. Codificar o tipo de partição antes da direção de partição economiza bits de codificação de codificar a direção de partição se comparado com codificar a direção de partição antes do tipo de partição.
[00223] Neste modo, é possível determinar se um bloco pode ser particionado em cada uma da direção horizontal e direção vertical com base em uma condição predeterminada para particionamento de bloco permitido ou não permitido. Então, quando é determinado que o parti- cionamento é possível em somente uma da direção horizontal e da direção vertical, a escrita de uma direção de partição em um fluxo de bits pode ser pulada. Além disso, quando é determinado que o partici- onamento não é possível tanto na direção horizontal quanto na direção vertical, além da direção de partição, a escrita do tipo de partição no fluxo de bits pode também ser pulada.
[00224] A condição predeterminada para particionamento de bloco permitido ou não permitido é definida pelo tamanho (número de pixels) ou pelo número de vezes que o particionamento é executado, por exemplo. A condição para particionamento de bloco permitido ou não permitido pode ser pré-definida em uma especificação padrão. Mais ainda, a condição para particionamento de bloco permitido ou não permitido pode ser incluída em um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um cabeçalho de fatia, ou uma unidade de árvore de codificação. A condição particionamento de bloco permitido ou não permitido pode ser fixa para todos os blocos, e pode ser dinamicamente comutada de acordo com uma propriedade um bloco (por exemplo, bloco de luma e de croma) ou uma propriedade de imagem (por exemplo, imagem I, P, e B).
[00225] Na etapa S3003, o bloco é particionado em sub-blocos utilizando o tipo de partição identificado e a direção de partição indicada. Na etapa S3004, os blocos particionados são codificados.
[00226] Codificador
[00227] A Figura 15 é um diagrama de blocos que ilustra a estrutura de um codificador de vídeo / imagem de acordo com a Modalidade 2 ou 3.
[00228] O codificador de vídeo 5000 é um dispositivo para codificar um vídeo / imagem inserido em uma base de bloco por bloco de modo a gerar um fluxo de bits de saída codificado. Como ilustrado na Figura 15, o codificador de vídeo 5000 inclui um transformador 5001, quanti- zador 5002, quantizador inverso 5003, transformador inverso 5004, memória de blocos 5005, memória de quadros 5006, intrapreditor 5007, interpreditor 5008, codificador de entropia 5009, e determinador de partição de bloco 5010.
[00229] Um vídeo de entrada é inserido em um somador, e o valor somado é emitido para o transformador 5001. O transformador 5001 transforma os valores somados em coeficientes de frequência com base no tipo e direção de partição de bloco derivados do determinador de partição de bloco 5010, e emite os coeficientes de frequência para o quantizador 5002. O tipo e direção de partição de bloco pode ser rela-cionado a um modo de partição de bloco, um tipo de partição de bloco, ou uma direção de partição de bloco. O quantizador 5002 quantiza os coeficientes quantizados inseridos, e emite os valores quantizados para o quantizador inverso 5003 e o codificador de entropia 5009.
[00230] O quantizador inverso 5003 quantiza inversamente os valores quantizados emitidos do quantizador 5002, e emite os coeficientes de frequência para o transformador inverso 5004. O transformador inverso 5004 executa uma transformada de frequência inversa nos coeficientes de frequência com base no tipo e direção de partição de bloco derivado do determinador de partição de bloco 5010, de modo a transformar os coeficientes de frequência em valores de amostra do fluxo de bits, e emite os valores de amostra para um somador.
[00231] O somador soma os valores de amostra do fluxo de bits emitidos do transformador inverso 5004 aos valores de vídeo / imagem preditos emitidos do inter / intrapreditor 5007, 5008, e emite os valores somados para a memória de blocos 5005 ou memória de quadros 5006 para predição adicional. O determinador de partição de bloco 5010 coleta as informações de bloco da memória de blocos 5005 ou memória de quadros 5006 para derivar um tipo e direção de partição de bloco e parâmetros relativos ao tipo e direção de partição de bloco. Utilizar o tipo e direção de partição de bloco derivado resultará no par- ticionamento de um bloco em uma pluralidade de sub-blocos. O inter / intrapreditor 5007, 5008 pesquisa dentro de vídeos / imagens armazenados na memória de blocos 5005 ou de vídeos / imagens na memória de quadros 5006 reconstruída utilizando o tipo e direção de partição de bloco derivado do determinador de partição de bloco 5010, e estima uma área de vídeo / imagem a qual é, por exemplo, mais similar aos vídeos / imagens de entrada para predição.
[00232] O Codificador de entropia 5009 codifica os valores quanti- zados emitidos do quantizador 5002, codifica os parâmetros do determinador de partição de bloco 5010, e emite um fluxo de bits. Processo de Decodificação
[00233] A Figura 14 ilustra um processo de decodificação de vídeo de acordo com a Modalidade 3.
[00234] Primeiro, na etapa S4001, um primeiro parâmetro para identificar, de uma pluralidade de tipos de partição, um tipo de partição para particionar um primeiro bloco em sub-blocos é analisado de um fluxo de bits.
[00235] A seguir, na etapa S4002, um segundo parâmetro que indica a direção de partição é analisado do fluxo de bits. O segundo parâmetro segue após o primeiro parâmetro em um fluxo de bits. O tipo de partição juntamente com a direção de partição podem formar o modo de partição. O tipo de partição indica o número de sub-blocos e a razão de partição para particionar um bloco.
[00236] A Figura 29 ilustra exemplos de tipos de partição e direções de partição para particionar um bloco de N pixels por N pixels na Mo- dalidade 3. Na Figura 29, (1), (2), (3), e (4) são diferentes tipos de par-tição, (1a), (2a), (3a), e (4a) são diferentes modos de partição de tipos de partição relativos na direção de partição vertical, e (1b), (2b), (3b), e (4b) são diferentes modos de partição de tipos de partição relativos na direção de partição horizontal. Como ilustrado na Figura 29, um bloco de N pixels por N pixels é particionado utilizando o modo de partição (1a) quando este é particionado com árvore binária simétrica (isto é, dois sub-blocos) na direção de partição vertical com uma razão de partição de 1:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (1b) quando este é particionado com árvore binária simétrica (isto é, dois sub-blocos) na direção de partição horizontal com uma razão de partição de 1:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (2a) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição vertical na razão de partição de 1:3. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (2b) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição horizontal na razão de partição de 1:3. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (3a) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição vertical na razão de partição de 3:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (3b) quando este é particionado com árvore binária assimétrica (isto é, dois sub-blocos) na direção de partição horizontal na razão de partição de 3:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (4a) quando este é particionado com árvore ternária (isto é, três sub-blocos) na direção de partição vertical na razão de partição de 1:2:1. Um bloco de N pixels por N pixels é particionado utilizando o modo de partição (4b) quando este é particionado com árvore ternária (ou três sub-blocos) na direção de partição horizontal na razão de partição de 1:2:1.
[00237] A Figura 17 ilustra as possíveis localizações do primeiro parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 17, o primeiro parâmetro pode estar em um conjunto de pa-râmetros de vídeo, conjunto de parâmetros de sequência, conjunto de parâmetros de imagem, cabeçalho de fatia, ou unidade de árvore de codificação. O primeiro parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o pri-meiroparâmetro pode incluir um identificador do tipo de partição acima mencionado. Por exemplo, o primeiro parâmetro pode incluir um sinali-zador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. O primeiro parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos.
[00238] A Figura 18 ilustra as possíveis localizações do segundo parâmetro em um fluxo de bits de vídeo comprimido. Como ilustrado na Figura 18, o segundo parâmetro pode estar em um conjunto de pa-râmetros de vídeo, conjunto de parâmetros de sequência, conjunto de parâmetros de imagem, cabeçalho de fatia, ou unidade de árvore de codificação. O segundo parâmetro pode indicar o modo para particionar um bloco em uma pluralidade de sub-blocos. Por exemplo, o segundo parâmetro pode incluir um sinalizador para indicar se o bloco deve ser particionado em uma direção horizontal ou vertical. Especificamente, o segundo parâmetro pode incluir um parâmetro para indicar a direção de partição. O segundo parâmetro pode também incluir um parâmetro para indicar se o bloco deve ser particionado em dois ou mais sub-blocos. O segundo parâmetro segue após o primeiro parâmetro em um fluxo de bits como ilustrado na Figura 19.
[00239] A Figura 30 ilustra uma vantagem de codificar o tipo de partição antes da direção de partição se comparado com codificar a dire- ção de partição antes do tipo de partição. Neste exemplo, quando a direção de partição horizontal é desabilitada devido a um tamanho não suportado (16 pixels por 2 pixels), não há necessidade de codificar a direção de partição. A direção de partição é determinada como direção de partição vertical conforme a direção de partição horizontal é desabi- litada neste exemplo. Codificar o tipo de partição antes da direção de partição economiza bits de codificação de codificar a direção de partição se comparado com codificar a direção de partição antes do tipo de partição.
[00240] Neste modo, é possível determinar se um bloco pode ser particionado em cada uma da direção horizontal e direção vertical com base em uma condição predeterminada para particionamento de bloco permitido ou não permitido. Então, quando é determinado que o parti- cionamento é possível em somente uma da direção horizontal e da direção vertical, a análise da direção de partição de um fluxo de bits pode ser pulada. Além disso, quando é determinado que o particiona- mento não é possível tanto na direção horizontal quanto na direção vertical, além da direção de partição, a análise do tipo de partição do fluxo de bits pode também ser pulada.
[00241] A condição predeterminada para particionamento de bloco permitido ou não permitido é definida pelo tamanho (número de pixels) ou o número de vezes que o particionamento é executado, por exemplo. Esta condição para particionamento de bloco permitido ou não permitido pode ser pré-definida em uma especificação padrão. Mais ainda, a condição para particionamento de bloco permitido ou não permitido pode estar incluída em um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um cabeçalho de fatia, ou uma unidade de árvore de codificação. A condição para particionamento de bloco permitido ou não permitido pode ser fixa para todos os blocos, e pode ser dinamicamen- te comutada de acordo com uma propriedade de bloco (por exemplo, bloco de luma e croma) ou uma propriedade de imagem (por exemplo, imagem I, P, e B)
[00242] Na etapa S4003, o bloco é particionado em sub-blocos utilizando o tipo de partição identificado e a direção de partição indicada. Na etapa S4004, os blocos particionados são decodificados.
Decodificador
[00243] A Figura 16 é um diagrama de blocos que ilustra a estrutura de um decodificador de vídeo / imagem de acordo com a Modalidade 2 ou 3.
[00244] O decodificador de vídeo 6000 é um dispositivo para decodificar um fluxo de bits codificado de entrada em uma base de bloco por bloco e que emite vídeos / imagens. Como ilustrado na Figura 16, o decodificador de vídeo 6000 inclui um decodificador de entropia 6001, quantizador inverso 6002, transformador inverso 6003, memória de blocos 6004, memória de quadros 6005, intrapreditor 6006, inter- preditor 6007, e determinador de partição de bloco 6008.
[00245] Um fluxo de bits codificado de entrada é inserido no decodi- ficador de entropia 6001. Após o fluxo de bits codificado de entrada é inserido no decodificador de entropia 6001, o decodificador de entropia 6001 decodifica o fluxo de bits codificado de entrada, emite parâmetros para o determinador de partição de bloco 6008, e emite os valores decodificados para o quantizador inverso 6002.
[00246] O quantizador inverso 6002 quantiza inversamente os valores decodificados, e emite os coeficientes de frequência para o trans-formador inverso 6003. O transformador inverso 6003 executa uma transformada de frequência inversa nos coeficientes de frequência com base no tipo e direção de partição de bloco derivado do determinador de partição de bloco 6008 para transformar os coeficientes de frequência em valores de amostra, e emite os valores de amostra para um somador. O tipo e direção de partição de bloco pode ser relacionado a um modo de partição de bloco, um tipo de partição de bloco, ou uma direção de partição de bloco. O somador soma os valores de amostra aos valores de vídeo / imagem preditos emitidos do intra / in- terpreditor 6006, 6007, e emite os valores somados para um display, e emite os valores somados para a memória de blocos 6004 ou memória de quadros 6005 para predição adicional. O determinador de partição de bloco 6008 coleta as informações de bloco da memória de blocos 6004 ou memória de quadros 6005 para derivar o tipo e direção de partição de bloco utilizando os parâmetros decodificados pelo decodifi- cador de entropia 6001. Utilizar o tipo e direção de partição de bloco derivado resultará no particionamento de um bloco em uma pluralidade de sub-blocos. Além disso, intra / interpreditor 6006, 6007 estima uma área de vídeo / imagem do bloco a ser decodificado dentre vídeos / imagens armazenados na memória de blocos 6004 ou de vídeos / imagens na memória de quadros 6005 reconstruída utilizando o tipo e direção de partição de bloco derivado do determinador de partição de bloco 6008.
MODALIDADE 4
[00247] Como descrito em cada uma das modalidades acima, cada bloco funcional pode tipicamente ser realizado como uma MPU e memória, por exemplo. Mais ainda, os processos executados por cada um dos blocos funcionais são tipicamente realizados por uma unidade de execução de programa, tal como um processador, lendo e executando um software (um programa) gravado em um meio de gravação tal como uma ROM. O software pode ser distribuído através de, por exemplo, download, e pode ser gravado em um meio de gravação tal como uma memória de semicondutor e distribuído. Note que cada bloco funcional pode, é claro, também ser realizado como hardware (circuito dedicado).
[00248] Mais ainda, o processamento descrito em cada uma das modalidades pode ser realizado através de processamento integrado utilizando um único dispositivo (sistema), e, alternativamente, pode ser realizado através de processamento descentralizado utilizando uma pluralidade de dispositivos. Mais ainda, o processador que executa o programa acima descrito pode ser um único processador ou uma plu-ralidade de processadores. Em outras palavras, um processamento integrado pode ser executado, e, alternativamente, um processamento descentralizado pode ser executado.
[00249] As modalidades da presente descrição não estão limitadas às modalidades exemplares acima; várias modificações podem ser feitas nas modalidades exemplares, os resultados das quais estão também incluídos dentro do escopo das modalidades da presente descrição.
[00250] A seguir, exemplos de aplicação do método de codificação de imagem móvel (método de codificação de imagem) e o método de decodificação de imagem móvel (método de decodificação de imagem) descritos em cada uma das modalidades acima e um sistema que usa os mesmos serão descritos. O sistema está caracterizado como incluindo um codificador de imagem que usa o método de codificação de imagem, um decodificador de imagem que usa o método de decodifi- cação de imagem, e um codificador / decodificador de imagem que inclui tanto o codificador quanto o decodificador de imagem. Outras configurações incluídas no sistema podem ser modificadas em uma base de caso por caso.
Exemplos de Utilização
[00251] A Figura 33 ilustra uma configuração geral do sistema de provisão de conteúdo ex100 para implementar um serviço de distribuição de conteúdo. A área na qual o serviço de comunicação está provido está dividida em células de tamanhos desejados, e estações de ba se ex106, ex107, ex108, ex109, e ex110, as quais são estações sem fio fixas, estão localizadas em respectivas células.
[00252] No sistema de provisão de conteúdo ex100, dispositivos que incluem um computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio doméstico ex114, e smartphone ex115 estão conectados na Internet ex101 através de um provedor de serviço de Internet ex102 ou rede de comunicações ex104 e estações base ex106 até ex110. O sistema de provisão de conteúdo ex100 pode combinar e conectar qualquer combinação dos elementos acima. Os dispositivos podem ser diretamente ou indiretamente conectados juntos através de uma rede telefônica ou comunicação de campo próximo ao invés de através de estações base ex106 até ex110, as quais são estações sem fio fixas. Mais ainda, o servidor de fluxo ex103 está conectado a dispositivos que incluem o computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio domésticos ex114, e smartphone ex115 através, por exemplo, da internet ex101. O servidor de fluxo ex103 está também conectado a, por exemplo, um terminal em um hotspot no avião ex117 através do satélite ex116.
[00253] Note que, ao invés de estações base ex106 até ex110, pontos de acesso sem fio ou hotspots podem ser utilizados. O servidor de fluxo ex103 pode estar conectado na rede de comunicações ex104 diretamente ao invés de através da internet ex101 ou provedor de serviços de internet ex102, e pode estar conectado no avião ex117 diretamente ao invés de através do satélite ex116.
[00254] 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 de smartphone, telefone celular, ou telefone de sistema portátil pessoal (PHS) que pode operar sob os padrões de sistema de comunicações móveis dos sistemas 2G, 3G, 3.9G, e 4G típicos, assim como o sistema 5G de próxima geração.
[00255] O utensílio doméstico ex118 é, por exemplo, um refrigerador ou um dispositivo incluído em um sistema de cogeração de célula de combustível doméstico.
[00256] No sistema de provisão de conteúdo ex100, um terminal que inclui uma função de captura de imagem e/ou vídeo é capaz de, por exemplo, fluxo ao vivo conectando ao servidor de fluxo ex103 através da, por exemplo, estação base ex106. Quando em fluxo ao vivo, um terminal (por exemplo, computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio doméstico ex114, smartphone ex115, ou avião ex117) executa o processamento de codificação descrito nas modalidades acima em conteúdo de imagem estática ou de vídeo capturado por um usuário através do terminal, multiplexa os dados de vídeo obtidos através da codificação e dados de áudio obtidos pela codificação de áudio que corresponde ao vídeo, e transmite os dados obtidos para o servidor de fluxo ex103. Em outras palavras, o terminal funciona como o codificador de imagem de acordo com um aspecto da presente descrição.
[00257] O servidor de fluxo ex103 transmite em fluxo os dados de conteúdo transmitidos para clientes que solicitam o fluxo. Exemplos de clientes incluem o computador ex111, dispositivo de jogos ex112, câmera ex113, utensílio doméstico ex114, smartphone ex115 e terminais dentro do avião ex117, os quais são capazes de decodificar os dados codificados acima descritos. Dispositivos que recebem os dados em fluxo decodificam e reproduzem os dados recebidos. Em outras palavras, os dispositivos cada um funciona como o decodificador de imagem de acordo com um aspecto da presente descrição
Processamento Decentralizado
[00258] O servidor de fluxo ex103 pode ser realizado como uma pluralidade de servidores ou computadores entre as quais tarefas tais como o processamento, gravação e fluxo de dados são divididas. Por exemplo, o servidor de fluxo ex103 pode ser realizado como uma rede de fornecimento de conteúdo (CDN) que faz fluxo do conteúdo através de uma rede que conecta múltiplos servidores de borda localizados através do mundo. Em uma CDN, um servidor de borda fisicamente próximo do cliente é dinamicamente designado para o cliente. O conteúdo é colocado em cache e em fluxo para o servidor de borda para reduzir os tempos de carga. Em caso de, por exemplo, algum tipo de um erro ou uma mudança em conectividade devido a, por exemplo, um pico no tráfego, é possível executar o fluxo de dados estavelmente em altas velocidades já que é possível evitar as partes afetadas da rede, por exemplo, dividindo o processamento entre uma pluralidade de servidores de borda ou comutando os deveres de fluxo para um diferente servidor de borda, e continuando o fluxo.
[00259] A descentralização não está limitada a apenas a divisão do processamento para fluxo; a codificação dos dados capturados pode ser dividida entre e executada pelos terminais, no lado do servidor, ou ambos. Em um exemplo, em codificação típica, o processamento é executado em dois loops. O primeiro loop é para detectar quão com-plicada a imagem é em uma base de quadro por quadro ou cena por cena, ou detectando a carga de codificação. O segundo loop é para processamento que mantém a qualidade de imagem e aperfeiçoa a eficiência de codificação. Por exemplo, é possível reduzir a carga de processamento dos terminais e aperfeiçoar a qualidade e eficiência de codificação do conteúdo fazendo os terminais executarem o primeiro loop da codificação e fazendo o lado do servidor que recebeu o conteúdo executar o segundo loop da codificação. Em tal caso, quando do recebimento de uma solicitação de decodificação, é possível que os dados codificados que resultam do primeiro loop executado por um terminal sejam recebidos e reproduzidos em outro terminal em aproxi-madamente tempo real. Isso torna possível realizar um fluxo uniforme em tempo real.
[00260] Em outro exemplo, a câmera ex113 ou similares extrai uma quantidade de características de uma imagem, comprime os dados relacionados à quantidade de características como metadados e transmite os metadados comprimidos para um servidor. Por exemplo, o servidor determina a significância de um objeto com base na quantidade de características e muda a precisão de quantização consequentemente para executar uma compressão adequada para o significado da imagem. Os dados de quantidade de características são especificamente efetivos em aperfeiçoar a precisão e eficiência de predição de vetor de movimento durante a segunda passagem de compressão executada pelo servidor. Mais ainda, uma codificação que tem uma carga de processamento relativamente baixa, tal como codificação de comprimento variável (VLC), pode ser manipulada pelo terminal, e a codificação que tem uma carga de processamento relativamente alta, tal como codificação aritmética binária adaptável ao contexto (CA- BAC), pode ser manipulada pelo servidor.
[00261] Em ainda em outro exemplo, existem casos nos quais uma pluralidade de vídeos de aproximadamente a mesma cena é capturada por uma pluralidade de terminais em, por exemplo, um estádio, shopping, ou fábrica. Em tal caso, por exemplo, a codificação pode ser descentralizada dividindo as tarefas de processamento entre a plurali-dade de terminais que capturou os vídeos e, se necessário, outros terminais que não capturaram os vídeos e o servidor, em uma base por unidade. As unidades podem ser, por exemplo, grupos de imagens (GOP), imagens, ou telas lado a lado que resultam da divisão de uma imagem. Isto permite reduzir os tempos de carga e conseguir um fluxo que é mais próximo do tempo real.
[00262] Mais ainda, como os vídeos são de aproximadamente a mesma cena, o gerenciamento e/ou instrução podem ser executados pelo servidor de modo que os vídeos capturados pelos terminais possam ser referenciados cruzados. Mais ainda, o servidor pode receber dados codificados dos terminais, mudar a relação de referência entre itens de dados ou corrigir ou substituir as próprias imagens, e então executar a codificação. Isto torna possível gerar um fluxo com qualidade e eficiência aumentadas para os itens de dados individuais.
[00263] Mais ainda, o servidor pode transmitir um fluxo de dados de vídeo após executar transcodificação para converter o formato de codi-ficação dos dados de vídeo. Por exemplo, o servidor pode converter o formato de codificação de MPEG para VP, e pode converter H.264 para H.265.
[00264] Neste modo, a codificação pode ser executada por um terminal ou um ou mais servidores. Consequentemente, apesar do dispositivo que executa a codificação ser referido como um "servidor" ou "terminal" na descrição seguinte, alguns ou todos os processos executados pelo servidor podem ser executados pelo terminal, e do mesmo modo alguns ou todos os processos executados pelo terminal podem ser executados pelo servidor. Isto também se aplica a processos de decodificação.
3D, Múltiplos Ângulos
[00265] Em anos recentes, a utilização de imagens ou vídeos com-binados com imagens ou vídeos de diferentes cenas concorrentemente capturadas ou a mesma cena capturada de diferentes ângulos por uma pluralidade de terminais tais como a câmera ex113 e/ou smartphone ex115 aumentou. Os vídeos capturados pelos terminais são combinados com base na, por exemplo, relação posicional relativa separadamente obtida entre os terminais, ou regiões em um vídeo que tem pontos de características coincidentes.
[00266] Além da codificação de imagens móveis bidimensionais, o servidor pode codificar uma imagem estática com base em análise de cena de uma imagem móvel ou automaticamente ou em um ponto no tempo especificado pelo usuário, e transmitir a imagem estática codifi-cada para um terminal de recepção. Mais ainda, quando o servidor pode obter a relação posicional relativa entre os terminais de captura de vídeo, além de imagens móveis bidimensionais, o servidor pode gerar uma geometria tridimensional de uma cena com base no vídeo da mesma cena capturada de diferentes ângulos. Note que o servidor pode separadamente codificar dados tridimensionais gerados de, por exemplo, uma nuvem de pontos, e pode, com base em resultado de reconhecer ou rastrear uma pessoa ou objeto utilizando dados tridimensionais, selecionar ou reconstruir e gerar um vídeo a ser transmitido para um terminal de recepção de vídeos capturados por uma pluralidade de terminais.
[00267] Isto permite o usuário desfrutar uma cena livremente sele-cionandovídeos que correspondem aos terminais de captura de vídeo, e permite o usuário desfrutar o conteúdo obtido extraindo, dos dados tridimensionais reconstruídos de uma pluralidade de imagens ou vídeos, um vídeo de um ponto de vista selecionado. Mais ainda, similar a com vídeo, o som pode ser gravado de ângulos relativamente diferentes, e o servidor pode multiplexar, com o vídeo, o áudio de um ângulo ou espaço específico de acordo com o vídeo, e transmitir o resultado.
[00268] Em anos recentes, um conteúdo que é um composto do mundo real e um mundo virtual, tal como conteúdo de realidade virtual (VR) e realidade aumentada (AR), também tornou-se popular. No caso de imagens de VR, o servidor pode criar imagens dos pontos de vista de ambos os olhos esquerdo e direito e executar uma codificação que tolera uma referência entre as duas imagens de ponto de vista, tal como uma codificação de múltiplas visões (MVC), e alternativamente, pode codificar as imagens como fluxos separados sem referenciar. Quando as imagens são decodificadas como fluxos separados, os fluxos podem ser sincronizados quando reproduzidos de modo a recriar um espaço tridimensional virtual de acordo com o ponto de vista do usuário.
[00269] No caso de imagens de AR, o servidor sobrepõe informações de objetos virtuais que existem em um espaço virtual por sobre informações de câmeras que representam um espaço de mundo real, com base em uma posição ou movimento tridimensional da perspectiva do usuário. O decodificador pode obter ou armazenar informações de objetos virtuais e dados tridimensionais, gerar imagens bidimensionais com base no movimento da perspectiva do usuário, e então gerar dados sobrepostos conectando uniformemente as imagens. Alternativamente, o decodificador pode transmitir, para o servidor, o movimento da perspectiva do usuário além de uma solicitação para informações de objetos virtuais, e o servidor pode gerar dados sobrepostos com base em dados tridimensionais armazenados no servidor de acordo com o movimento recebido, e codificar e transmitir em fluxo os dados sobrepostos gerados pelo decodificador. Note que os dados sobrepostos incluem, além de valores RGB, um valor α que indica transparência, e o servidor ajusta o valor α para seções outras que o objeto gerado dos dados tridimensionais para, por exemplo, 0, e pode executar a codificação enquanto estas seções são transparentes. Alternativamente, o servidor pode ajustar o fundo para um valor RGB pré- determinado, tal como um chroma key, e gerar dados nos quais áreas outras que o objeto são ajustadas como o fundo.
[00270] A decodificação de dados similarmente transmitidos em fluxo pode ser executada pelo cliente (isto é, os terminais), no lado de servidor, ou dividido entre estes. 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 que tem um display. É possível reproduzir dados de alta qualidade de imagem, descentralizando o processamento e apropriadamente selecionando o conteúdo independentemente da capacidade de processamento do próprio terminal de comunicações. Em ainda outro exemplo, enquanto uma TV, por exemplo, está recebendo dados de imagem que são grandes em tamanho, uma região de uma imagem tal como telas lado a lado obtidas dividindo a imagem, pode ser decodificada e exibida em um terminal pessoal ou terminais de um espectador ou espectadores da TV. Isto torna possível que os espectadores compartilhem uma visualização de imagem grande assim como para que cada espectador verifique em sua área designada ou inspecione uma região em mais detalhes adicionais de perto.
[00271] No futuro, tanto internamente quanto externamente, em situações nas quais uma pluralidade de conexões sem fio é possível so-bredistâncias próximas, médias, e distantes, é esperado ser capaz de uniformemente receber um conteúdo mesmo quando comutando para dados apropriados para a conexão corrente, utilizando um padrão de sistema de fluxo tal como MPEG-DASH. Com isto, o usuário pode co-mutar entre os dados em tempo real enquanto livremente selecionando um decodificador ou parelho de display que inclui não somente seu próprio terminal, mas também, por exemplo, displays dispostos inter-namente ou externamente. Mais ainda, com base em, por exemplo, informações sobre a posição do usuário, a decodificação pode ser executada enquanto comutando qual terminal faz a decodificação e qual terminal faz a exibição de conteúdo. Isto torna possível, enquanto em rota para um destino, exibir, sobre a parede de um prédio próximo, no qual um dispositivo capaz de exibir conteúdo está embutido ou sobre parte do solo, mapear informações enquanto em movimento. Mais ainda, é também possível comutar a taxa de bits dos dados recebidos com base na acessibilidade para os dados codificados em uma rede, tal como quando os dados codificados são colocados em cache em um servidor rapidamente acessível do terminal de recepção ou quando os dados codificados são copiados para um servidor de borda em um serviço de fornecimento de conteúdo.
Codificação Escalável
[00272] A comutação de conteúdo será descrita com referência a um fluxo escalável, ilustrado na Figura 34, o qual é codificado em compressão através de implementação do método de codificação de imagem móvel descrito nas modalidades acima. O servidor pode ter uma configuração na qual o conteúdo é comutado enquanto fazendo uso da escalabilidade temporal e/ou espacial de um fluxo, a qual é conseguida por divisão em e codificação de camadas, como ilustrado na Figura 34. Note que pode existir uma pluralidade de fluxos individuais que são o mesmo conteúdo mas de diferente qualidade. Em outras palavras, determinando qual camada decodificar com base em fatores internos, tal como a capacidade de processamento do lado do decodi- ficador, e fatores externos, tal como a largura de banda de comunicação, o lado do decodificador pode livremente comutar entre conteúdo de baixa resolução e conteúdo de alta resolução enquanto decodificando. Por exemplo, em um caso no qual o usuário deseja continuar assistindo, em casa em um dispositivo tal como uma TV conectada na internet, um vídeo que ele ou ela estava anteriormente assistindo no smartphone ex115 enquanto em movimento, o dispositivo pode simplesmente decodificar o mesmo fluxo até uma diferente camada, o que reduz a carga de lado de servidor.
[00273] Mais ainda, além da configuração acima descrita na qual a escalabilidade é conseguida como um resultado das imagens sendo codificadas por camada e a camada de melhoramento está acima da camada de base, a camada de melhoramento pode incluir metadados com base em, por exemplo, informações estatísticas sobre a imagem, e o lado de decodificador pode gerar um conteúdo de alta qualidade de imagem executando formação de imagens de superresolução sobre uma imagem na camada de base com base nos metadados. A formação de imagem de superresolução pode ser aperfeiçoando a razão de SN, enquanto mantendo a resolução e/ou aumentando a resolução. Os metadados incluem informações para identificar um coeficiente de filtro linear ou um não linear utilizado em processamento de superreso- lução, ou informações que identificam um valor de parâmetro em pro-cessamento de filtro, aprendizado de máquina, ou método de menores quadrados utilizados em processamento de superresolução.
[00274] Alternativamente, uma configuração na qual uma imagem está dividida em, por exemplo, telas lado a lado de acordo com o significado de, por exemplo, um objeto na imagem, e no lado de decodifi- cador, somente uma região parcial é decodificada selecionando telas lado a lado para decodificar, é também aceitável. Mais ainda, armazenando um atributo sobre o objeto (pessoa, carro, bola, etc.) e uma posição do objeto no vídeo (coordenadas em imagens idênticas) como metadados, o lado de decodificador pode identificar a posição de um objeto desejado com base nos metadados e determinar qual tela ou telas lado a lado incluem aquele objeto. Por exemplo, como ilustrado na Figura 35, os metadados são armazenados utilizando uma estrutura de armazenamento de dados diferente de dados de pixel tal como uma mensagem SEI em HEVC. Estes metadados indicam, por exemplo, a posição, tamanho, ou cor do objeto principal.
[00275] Mais ainda, os metadados podem ser armazenados em unidades de uma pluralidade de imagens, tal como fluxo, sequência ou unidades de acesso randômico. Com isto, o lado de decodificador pode obter, por exemplo, o tempo no qual uma pessoa específica aparece no vídeo, e ajustando este com as informações de unidade de ima- gem, pode identificar uma imagem na qual o objeto está presente e a posição do objeto na imagem.
Otimização de Webpage
[00276] A Figura 36 ilustra um exemplo de uma tela de display de uma webpage sobre, por exemplo, o computador ex111. A Figura 37 ilustra um exemplo de uma tela de display de uma webpage sobre, por exemplo, o smartphone ex115. Como ilustrado na Figura 36 e Figura 37, uma webpage pode incluir uma pluralidade de conexões de imagem as quais são conexões para o conteúdo de imagem, e a aparência da webpage difere dependendo do dispositivo utilizado para ver a webpage. Quando uma pluralidade de conexões de imagem é visível sobre a tela, até que o usuário explicitamente selecione uma conexão de imagem, ou até que a conexão de imagem esteja no centro aproximado da tela ou a conexão de imagem inteira caiba na tela, o dispositivo de display (decodificador) exibe, como as conexões de imagem, imagens estáticas incluídas no conteúdo ou imagens I, exibe um vídeo tal como um gif animado utilizando uma pluralidade de imagens estáticas ou imagens I, por exemplo, ou recebe somente a camada de base e decodifica e exibe o vídeo .
[00277] Quando uma conexão de imagem é selecionada pelo usuário, o dispositivo de display decodifica dando a prioridade mais alta para a camada de base. Note que se existirem informações no código HTML da webpage indicando que o conteúdo é escalável, o dispositivo de display pode decodificar até a camada de melhoramento. Mais ainda, de modo a garantir uma reprodução em tempo real, antes de uma seleção ser feita ou quando a largura de banda é severamente limitada, o dispositivo de display pode reduzir o retardo entre o ponto no tempo no qual a imagem dianteira é decodificada e o ponto no tempo no qual a imagem descodificada é exibida (isto é, o retardo entre o início da decodificação do conteúdo para a exibição do conteúdo) decodi- ficando e exibindo somente imagens de referência direta (imagem I, imagem P, imagem B de referência direta). Mais ainda, o dispositivo de display pode propositalmente ignorar a relação de referência entre as imagens e decodificar grosseiramente todas as imagens B e P como imagens de referência direta, e então executar decodificação normal conforme o número de imagens recebidas ao longo do tempo aumenta.
Direção Autônoma
[00278] Quando transmitindo e recebendo uma imagem estática ou dados de vídeo, tais como informações de mapa bi ou tridimensional para direção autônoma ou direção assistida de um automóvel, o terminal de recepção pode receber, além de dados de imagens que pertencem a uma ou mais camadas, informações sobre, por exemplo, o clima ou construção de estradas como metadados, e associar os metadados com os dados da imagem quando decodificando. Note que os metadados podem ser atribuídos por camada e, alternativamente, podem ser simplesmente ser multiplexados com os dados da imagem.
[00279] Em tal caso, uma vez como um automóvel, drone, avião, etc., que inclui o terminal de recepção é móvel, o terminal de recepção pode ininterruptamente receber e decodificar enquanto comutando entre as estações de base entre as estações de base ex106 até ex110 transmitindo informações que indicam a posição do terminal de recepção quando de solicitação de recepção. Mais ainda, de acordo com a seleção feita pelo usuário, a situação do usuário, ou a largura de banda da conexão, o terminal de recepção pode dinamicamente selecionar em qual graus os metadados são recebidos ou em qual grau as informações de mapa, por exemplo, são atualizadas.
[00280] Com isto, no sistema de provisão de conteúdo ex100, o cliente pode receber, decodificar, e reproduzir, em tempo real, as informações codificadas transmitidas pelo usuário.
Fluxo de Conteúdo Individual
[00281] No sistema de provisão de conteúdo ex100, além de alta qualidade de imagem, conteúdo longo distribuído por uma entidade de distribuição de vídeo, fluxo de unidifusão ou multidifusão de baixa qua-lidade de imagem, curto conteúdo de um indivíduo é também possível. Mais ainda, tal conteúdo de indivíduos é provável de adicionalmente aumentar em popularidade. O servidor pode primeiro executar um pro-cessamento de edição no conteúdo antes do processamento de codifi-cação, de modo a refinar o conteúdo individual. Isto pode ser conseguido com, por exemplo, a seguinte configuração.
[00282] Em tempo real, enquanto capturando um conteúdo de vídeo ou imagem ou após o conteúdo ter sido capturado e acumulado, o servidor executa um processamento de reconhecimento com base nos dados brutos ou codificados, tal como processamento de erro de captura, processamento de pesquisa de cena, análise de significado, e/ou processamento de detecção de objetos. Então, com base no resultado do processamento de reconhecimento, o servidor - ou quando avisado ou automaticamente - edita o conteúdo, exemplos dos quais incluem: correção tal como foco e/ou correção de embaçamento de movimento; remoção de cenas de baixa prioridade, tais como cenas que são baixas em luminosidade comparadas com outras imagens ou fora de foco; ajuste da borda do objeto; e ajuste de tonalidade de cor. O servidor codifica os dados editados com base no resultado da edição. É conhecido que vídeos excessivamente longos tendem a receber menos visualizações. Consequentemente, de modo a manter o conteúdo dentro de um comprimento específico que escala com o comprimento do vídeo original, o servidor pode, além das cenas de baixa prioridade acima descritas, automaticamente recortar cenas com baixo movimento com base em um resultado de processamento de imagem. Alternativamente, o servidor pode gerar e codificar um resumo de vídeo com base em um resultado de uma análise do significado de uma cena.
[00283] Note que existem casos nos quais o conteúdo individual pode incluir um conteúdo que infringe um direito autoral, direitos morais, direitos de imagem, etc. Tal caso pode levar a uma situação des-favorável para o criador, tal como quando o conteúdo é compartilhado além do escopo pretendido pelo criador. Consequentemente, antes da codificação, o servidor pode, por exemplo, editar imagens de modo a desfocar faces de pessoas na periferia da tela ou desfocar o interior de uma casa, por exemplo. Mais ainda, o servidor pode ser configurado para reconhecer as faces de pessoas outras que uma pessoa registrada em imagens a serem codificadas, e quando tais faces aparecem em uma imagem, por exemplo, aplicar um filtro de mosaico na face da pessoa. Alternativamente, como pré ou pós-processamento para codificação, o usuário pode especificar, por razões de direitos autorais, uma região de uma imagem que inclui uma pessoa ou uma região do fundo a ser processado, e o servidor pode processar a região especificada, por exemplo, substituindo a região por uma diferente imagem ou desfocando a região. Se a região incluir uma pessoa, a pessoa pode ser rastreada na imagem móvel a região da cabeça pode ser substituída por outra imagem conforme a pessoa move.
[00284] Mais ainda, como existe uma demanda para visualização em tempo real de conteúdo produzido por indivíduos, os quais tendem a ser pequenos em tamanho de dados, o decodificador primeiro recebe a camada de base como a prioridade mais alta e executa decodifi- cação e reprodução, apesar disto 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 melhoramento durante a decodificação e reprodução da camada de base e faz um loop na reprodução, o decodificador pode reproduzir um vídeo de alta qualidade de imagem incluindo a camada de melhoramento. Se o fluxo for codificado utilizando tal codificação escalável, o vídeo pode ser de baixa qualidade quando em um estado não selecionado ou no início do vídeo, mas este pode oferecer uma experiência na qual a qualidade da imagem do fluxo progressivamente aumenta em um modo inteligente. Isto não está limitado a apenas codificação escalável; a mesma experiência pode ser oferecida configurando um único fluxo de um fluxo de baixa qualidade reproduzido pela primeira vez e um segundo fluxo codificado utilizando o primeiro fluxo como uma referência.
Outros Exemplos de Utilização
[00285] A codificação e decodificação podem ser executadas por LSI ex500, o qual está tipicamente incluído em cada terminal. O LSI ex500 pode estar configurado de um único chip ou uma pluralidade de chips. O software para codificar e decodificar imagens móveis pode ser integrado em algum tipo de meio de gravação (tal como um CD- ROM, um disco flexível, ou um disco rígido) que é legível pelo, por exemplo, computador ex111, e a codificação e decodificação podem ser executas utilizando o software. Mais ainda, quando o smartphone ex115 está equipado com uma câmera, os dados de vídeo obtidos pelacâmera podem ser transmitidos. Neste caso, os dados do vídeo são codificados por LSI ex500 incluído no smartphone ex115.
[00286] Note que LSI ex500 pode estar configurado para fazer download e ativar uma aplicação. Em tal caso, o terminal primeiro determina se este é compatível com o esquema utilizado para codificar o conteúdo ou se este é 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 download de um codec ou software de aplicação então obtém e reproduz o conteúdo.
[00287] Além do exemplo de sistema de provisão de conteúdo ex100 que utiliza internet ex101, pelo menos o codificador de imagem móvel (codificador de imagem) ou o decodificador de imagem móvel (decodificador de imagem) descrito nas modalidades acima podem ser implementados em um sistema de transmissão digital. O mesmo pro-cessamento de codificação e processamento de decodificação podem ser aplicados para transmitir e receber ondas de rádio transmitidas so-brepostas com dados de áudio e vídeo multiplexado utilizando, por exemplo, um satélite, apesar disto ser impulsionado na direção de mul- tidifusão enquanto que unidifusão é mais fácil com o sistema de provisão de conteúdo ex100.
Configuração de Hardware
[00288] A Figura 38 ilustra o smartphone ex115. A Figura 39 ilustra um exemplo de configuração do smartphone ex115. O smartphone ex115 inclui uma antena ex450 para transmitir e receber ondas de rádio para e da estação base ex110, uma câmera ex465 capaz de capturarvídeo e imagens estáticas, e um display ex458 que exibe dados decodificados, tal como vídeo capturado pela câmera ex465 e vídeo recebido pela antena ex450. O smartphone ex115 ainda inclui uma interface de usuário ex466 tal como um painel de toque, uma unidade de saída de áudio ex457 tal como um alto-falante para emitir voz ou outro áudio, uma unidade de entrada de áudio ex456 tal como um microfone para entrada de áudio, uma memória ex467 capaz de armazenar dados decodificado tais como vídeo ou imagens estáticas capturados,áudio gravado, vídeo ou imagens estáticas recebidas, e correio, assim como dados decodificados, e a fenda ex464 a qual é uma interface para SIM ex468 para autorizar acesso a uma rede e vários dados. Note que uma memória externa pode ser utilizada ao invés da memória ex467.
[00289] Mais ainda, o controlador principal ex460 o qual abrangentemente controla o display ex458 e interface de usuário ex466, circuito de fonte de alimentação ex461, controlador de entrada de interface de usuário ex462, processador de sinal de vídeo ex455, interface de câmera ex463, controlador de display ex459, modulador / demodulador ex452, multiplexador / demultiplexador ex453, processador de sinal de áudio ex454, fenda ex464, e memória ex467 são conectados através do barramento ex470.
[00290] Quando o usuário liga o botão de energia do circuito de fonte de alimentação ex461, o smartphone ex115 é energizado em um estado operável por cada componente sendo suprido com energia de um pacote de bateria.
[00291] O smartphone ex115 executa um processamento para, por exemplo, chamada e transmissão de dados, com base no controle executado pelo controlador principal ex460, o qual inclui uma CPU, ROM, e RAM. Quando fazendo 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, e este é aplicado com processamento de espectro de dispersão pelo modulador / demodulador ex452 e conversão digital-analógica e processamento de conversão de frequência pelo transmissor / receptor ex451, e então transmitido através da antena ex450. Os dados recebidos são amplificados, convertidos em frequência, e convertidos analógico-digital, processado em espectro de dispersão inverso pelo modulador / demodu- lador ex452, convertido em um sinal de áudio analógico pelo processador de sinal de áudio ex454, e então emitido da unidade de saída de áudio ex457. No modo de transmissão de dados, texto, imagem estática, ou dados de vídeo é transmitido pelo controlador principal ex460 através do controlador de entrada de interface de usuário ex462 como um resultado de operação de, por exemplo, a interface de usuário ex466 do corpo principal, e um processamento de transmissão e recepção similar é executado. No modo de transmissão de dados, quando enviando um vídeo, imagem estática, ou vídeo e áudio, o proces- sador de sinal de vídeo ex455, codifica por compressão através do método de codificação de imagem móvel descrito nas modalidades acima, um sinal de vídeo armazenado na memória ex467 ou um sinal de vídeo inserido da câmera ex465, e transmite os dados de vídeo co-dificados para o multiplexador / demultiplexador ex453. Mais ainda, 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, por exemplo, um vídeo ou imagem estática, e transmite os dados de áudio codificados para o multiplexador / demultiple- xador ex453. O multiplexador / demultiplexador ex453 multiplexa os dados de vídeo codificados e os dados de áudio codificados utilizando um esquema predeterminado, modula e converte os dados utilizando o modulador / demodulador (circuito de modulador / demodulador) ex452 e o transmissor / receptor ex451 e transmite o resultado através da antena ex450.
[00292] Quando um vídeo anexo em um email ou um chat, ou um vídeo conectado de uma webpage, por exemplo, é recebido, de modo a decodificar os dados multiplexados recebidos através da antena ex450, o multiplexador / demultiplexador ex453 demultiplexa os dados multiplexados para dividir os dados multiplexados em um fluxo de bits de dados de vídeo e um fluxo de bits de dados de áudio, supre os dados de vídeo codificados para o processador de sinal de vídeo ex455 através do barramento síncrono ex470, e supre os dados de áudio codificados para o processador de sinal de áudio ex454 através do bar- ramento síncrono ex470. O processador de sinal de vídeo ex455 decodifica o sinal de vídeo utilizando um método de decodificação de imagem móvel que corresponde ao método de codificação de imagem móvel descrito nas modalidades acima, e um vídeo ou uma imagem estática incluído no arquivo de imagem móvel conectado é exibido no display ex458 através do controlador de display ex459. Mais ainda, o processador de sinal de áudio ex454 decodifica o sinal de áudio e emite áudio da unidade de saída de áudio ex457. Note que, como um fluxo em tempo real está se tornando cada vez mais popular, existem casos nos quais a reprodução do áudio pode ser socialmente inadequada dependendo do ambiente do usuário. Consequentemente, como um valor inicial, uma configuração na qual somente os dados de vídeo são reproduzidos, isto é, o sinal de áudio não é reproduzido, é preferível. O áudio pode ser sincronizado e reproduzido somente quando uma entrada, tal como quando o usuário clica nos dados de vídeo, é recebida.
[00293] Apesar do smartphone ex115 ter sido utilizado no exemplo acima, três implementações são concebíveis: um terminal de transcep- tor que inclui tanto um codificador quanto um decodificador; um terminal de transmissor que inclui somente um codificador; e um terminal de receptor que inclui somente um decodificador. Ainda, na descrição do sistema de transmissão digital, um exemplo é dado no qual dados mul- tiplexados obtidos como um resultado de dados de vídeo sendo multi- plexados com, por exemplo, dados de áudio, são recebidos ou transmitidos, mas os dados multiplexados podem ser dados de vídeo multi- plexados com dados outros que dados de áudio, tal como dados de texto relativos ao vídeo. Mais ainda, os próprios dados do vídeo, ao invés dos dados multiplexados, podem ser recebidos ou transmitidos.
[00294] Apesar do controlador principal ex460, que inclui uma CPU, está descrito como controlando os processos de codificação ou deco- dificação, os terminais frequentemente incluem GPUs. Consequente-mente, uma configuração é aceitável na qual uma grande área é pro-cessada de uma vez, fazendo utilização da capacidade de desempenho da GPU através de memória compartilhada pela CPU e GPU ou memória, que inclui um endereço que é gerenciado de modo a permitir uma utilização comum pela CPU e GPU. Isto torna possível encurtar o tempo de codificação, manter a natureza de tempo real do fluxo e reduzir o retardo. Especificamente, o processamento relativo à estimativa de movimento, filtragem de desbloqueio, deslocamento adaptável de amostra (SAO), e transformação / quantização pode ser efetivamente executado pela GPU ao invés da CPU em unidades de, por exemplo, imagens, todas de uma vez.
[00295] Um codificador de acordo com uma modalidade da presente descrição pode ser um codificador que codifica uma imagem e inclui um processador e memória. O processador pode incluir: um determinador de partição de bloco que particiona a imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e uma unidade de codificação que codifica a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. Quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco pode incluir somente um modo de partição de bloco que indica que o número total de partições é três.
[00296] Um parâmetro para identificar o segundo modo de partição de bloco no codificador de acordo com uma modalidade da presente descrição a pode incluir um primeiro sinalizador que indica se um blo- co deve ser particionado horizontalmente ou verticalmente, e não precisa incluir um segundo sinalizador que indica um número total de partições nas quais o bloco deve ser particionado.
[00297] Um codificador de acordo com uma modalidade da presente descrição pode ser um codificador que codifica uma imagem e inclui um processador e memória. O processador pode incluir: um determinador de partição de bloco que particiona a imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e uma unidade de codificação que codifica a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. Quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco que indica que o número total de partições é dois não precisa ser utilizado.
[00298] Um codificador de acordo com uma modalidade da presente descrição pode ser um codificador que codifica uma imagem, e inclui: um processador e uma memória. O processador pode incluir: um determinador de partição de bloco que particiona a imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da me-mória; e uma unidade de codificação que codifica a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição e um segundo modo de partição de bloco cada um definindo uma direção de partição e um número total de partições. O determinador de partição de bloco pode restringir a utilização do segundo modo de partição de bloco o que indica que o número de partições é dois.
[00299] Um parâmetro para identificar o segundo modo de partição de bloco no codificador de acordo com uma modalidade da presente descrição, pode incluir um primeiro sinalizador que indica se o bloco deve ser particionado horizontalmente ou verticalmente, e um segundo sinalizador que indica se o bloco deve ser particionado em dois ou mais.
[00300] O parâmetro no codificador de acordo com uma modalidade da presente descrição pode ser provido em dados de fatia.
[00301] Um codificador de acordo com uma modalidade da presente descrição pode ser um codificador que codifica uma imagem, e inclui: um processador; e uma memória. O processador pode incluir: um determinador de partição de bloco que particiona a imagem em um conjunto de blocos que inclui uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e uma unidade de codificação que codifica a pluralidade de blocos. Quando um primeiro conjunto de blocos obtido utilizando um primeiro conjunto de modos de partição de bloco e um segundo conjunto de blocos obtido utilizando um segundo conjunto de modos de partição de bloco são os mesmos, o determinador de partição de bloco pode executar particionamento utilizando somente um do primeiro modo de partição de bloco ou do segundo modo de partição de bloco.
[00302] O determinador de partição de bloco no codificador de acordo com uma modalidade da presente descrição pode, com base em uma primeira quantidade de códigos do primeiro conjunto de modos de partição de bloco e uma segunda quantidade de códigos do segundo conjunto de modos de partição de bloco, executar particio- namento utilizando o conjunto de modos de partição de bloco da menor da primeira quantidade de códigos e da segunda quantidade de códigos.
[00303] O determinador de partição de bloco no codificador de acordo com uma modalidade da presente descrição pode, com base em uma primeira quantidade de códigos do primeiro conjunto de modos de partição de bloco e uma segunda quantidade de códigos do segundo conjunto de modos de partição de bloco, executar particio- namento utilizando o conjunto de modos de partição de bloco que aparece primeiro em uma ordem predeterminada dentre o primeiro conjunto de modos de partição de bloco e o segundo conjunto de modos de partição de bloco, quando a primeira quantidade de códigos e a segunda quantidade de códigos são iguais.
[00304] Um decodificador de acordo com uma modalidade da presente descrição pode ser um decodificador que decodifica um sinal codificado e inclui um processador e memória. O processador pode incluir um determinador de partição de bloco que particiona o sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e uma unidade de decodificação que decodifica a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particio- nar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. Quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco pode incluir somente um modo de partição de bloco que indica que o número total de partições é três.
[00305] Um parâmetro para identificar o segundo modo de partição de bloco no decodificador de acordo com uma modalidade da presente descrição pode incluir um primeiro sinalizador que indica se um bloco deve ser particionado horizontalmente ou verticalmente, e não precisa incluir um segundo sinalizador que indica um número total de partições nas quais o bloco deve ser particionado.
[00306] Um decodificador de acordo com uma modalidade da presente descrição pode ser um decodificador que decodifica um sinal codificado e inclui um processador e memória. O processador pode incluir um determinador de partição de bloco que particiona o sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e uma unidade de decodificação que decodifica a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. Quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco que indica que o número total de partições é dois não precisa ser utilizado.
[00307] Um decodificador de acordo com uma modalidade da presente descrição pode ser um decodificador que decodifica um sinal codificado, e inclui um processador e uma memória. O processador pode incluir: um determinador de partição de bloco que particiona o sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e uma unidade de decodifica- ção que decodifica a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição de bloco e um segundo modo de partição de bloco cada um definindo uma direção de partição e o número de partições. O determinador de partição de bloco pode restringir a utilização do segundo modo de partição de bloco o que indica que o número de partições é dois.
[00308] Um parâmetro para identificar o segundo modo de partição de bloco no decodificador de acordo com uma modalidade da presente descrição pode incluir um primeiro sinalizador que indica se um bloco deve ser particionado horizontalmente ou verticalmente, e um segundo sinalizador que indica se o bloco deve ser particionado em dois ou mais.
[00309] O parâmetro no decodificador de acordo com uma modalidade da presente descrição pode ser provido em dados de fatia.
[00310] Um decodificador de acordo com uma modalidade da presente descrição pode ser um decodificador que decodifica um sinal codificado, e inclui: um processador; e uma memória. O processador pode incluir: um determinador de partição de bloco que particiona o sinal codificado em um conjunto de blocos que inclui uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e uma unidade de decodificação que decodifica a pluralidade de blocos. Quando um primeiro conjunto de blocos obtido utilizando um primeiro conjunto de modos de partição de bloco e um segundo conjunto de blocos obtido utilizando um segundo conjunto de modos de partição de bloco são os mesmos, o determinador de partição de bloco pode executar particionamento utilizando somente um do primeiro modo de partição de bloco ou do segundo modo de partição de bloco.
[00311] O determinador de partição de bloco no decodificador de acordo com uma modalidade da presente descrição pode, com base em uma primeira quantidade de códigos do primeiro conjunto de modos de partição de bloco e uma segunda quantidade de códigos do segundo conjunto de modos de partição de bloco, executar particio- namento utilizando o conjunto de modos de partição de bloco da menor da primeira quantidade de códigos e da segunda quantidade de códigos.
[00312] O determinador de partição de bloco no decodificador de acordo com uma modalidade da presente descrição pode, com base em uma primeira quantidade de códigos do primeiro conjunto de modos de partição de bloco e uma segunda quantidade de códigos do segundo conjunto de modos de partição de bloco, executar particio- namento utilizando o conjunto de modos de partição de bloco que aparece primeiro em uma ordem predeterminada entre o primeiro conjunto de modos de partição de bloco e o segundo conjunto de modos de partição de bloco, quando a primeira quantidade de códigos e a segunda quantidade de códigos são iguais.
[00313] Um método de codificação de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida de uma memória; e codificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. No particionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco pode incluir somente um modo de partição de bloco que indica que o número total de partições é três.
[00314] Um parâmetro para identificar o segundo modo de partição de bloco no método de codificação de acordo com uma modalidade da presente descrição pode incluir um primeiro sinalizador que indica se um bloco deve ser particionado horizontalmente ou verticalmente, e não precisa incluir um segundo sinalizador que indica um número total de partições nas quais o bloco deve ser particionado.
[00315] Um método de codificação de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da me-mória; e codificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. No particionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco que indica que o número total de partições é dois não precisa ser utilizado.
[00316] Um método de codificação de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e codificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição de bloco e um segundo modo de partição de bloco cada um definindo uma direção de partição e o número de partições. No particionamento, a utilização do segundo modo de partição de bloco o que indica que o número de partições é dois pode ser restringida.
[00317] Um parâmetro para identificar o segundo modo de partição de bloco no método de codificação de acordo com uma modalidade da presente descrição pode incluir um primeiro sinalizador que indica se um bloco deve ser particionado horizontalmente ou verticalmente, e um segundo sinalizador que indica se o bloco deve ser particionado em dois ou mais.
[00318] O parâmetro no método de codificação de acordo com uma modalidade da presente descrição pode ser provido em dados de fatia.
[00319] Um método de codificação de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em um conjunto de blocos que inclui uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e codificar a pluralidade de blocos. No particionamento, quando um primeiro conjunto de blocos obtido utilizando um primeiro conjunto de modos de partição de bloco e um segundo conjunto de blocos obtido utilizando um segundo conjunto de modos de partição de bloco são os mesmos, o particionamen- to pode ser executado utilizando somente um do primeiro modo de partição de bloco ou do segundo modo de partição de bloco.
[00320] O particionamento no método de codificação de acordo com uma modalidade da presente descrição pode, com base em uma primeira quantidade de códigos do primeiro conjunto de modos de partição de bloco e uma segunda quantidade de códigos do segundo conjunto de modos de partição de bloco, ser executado utilizando o conjunto de modos de partição de bloco da menor da primeira quantidade de códigos e da segunda quantidade de códigos.
[00321] O particionamento no método de codificação de acordo com uma modalidade da presente descrição pode, com base em uma primeira quantidade de códigos do primeiro conjunto de modos de partição de bloco e uma segunda quantidade de códigos do segundo conjunto de modos de partição de bloco, ser executado utilizando o conjunto de modos de partição de bloco que aparece primeiro em uma ordem predeterminada entre o primeiro conjunto de modos de partição de bloco e o segundo conjunto de modos de partição de bloco, quando a primeira quantidade de códigos e a segunda quantidade de códigos são iguais.
[00322] Um método de decodificação de acordo com uma modalidade da presente descrição pode incluir: particionar um sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido de uma memória; e decodificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. No par- ticionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco pode incluir somente um modo de partição de bloco que indica que o número total de partições é três.
[00323] Um parâmetro para identificar o segundo modo de partição de bloco no método de decodificação de acordo com uma modalidade da presente descrição pode incluir um primeiro sinalizador que indica se um bloco deve ser particionado horizontalmente ou verticalmente, e um segundo sinalizador que indica se o bloco deve ser particionado em dois ou mais.
[00324] Um método de decodificação de acordo com uma modali- dade da presente descrição pode incluir: particionar um sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e decodificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. No particiona- mento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco que indica que o número total de partições é dois não precisa ser utilizado.
[00325] Um método de decodificação de acordo com uma modalidade da presente descrição pode incluir: particionar um sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e decodificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição de bloco e um segundo modo de partição de bloco cada um definindo uma direção de partição e o número de partições. No particionamento, a utilização do segundo modo de partição de bloco o que indica que o número de partições é dois pode ser restringida.
[00326] Um método de decodificação de acordo com uma modali- dade da presente descrição pode incluir: particionar um sinal codificado em um conjunto de blocos que inclui uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido da memória; e decodificar a pluralidade de blocos. No particionamento, quando um primeiro conjunto de blocos obtido utilizando um primeiro conjunto de modos de partição de bloco e um segundo conjunto de blocos obtido utilizando um segundo conjunto de modos de partição de bloco são os mesmos, o particionamento pode ser executado utilizando somente um do primeiro modo de partição de bloco ou do segundo modo de partição de bloco.
[00327] Um programa de compressão de imagem de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida de uma memória; e decodificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. No particionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco pode incluir somente um modo de partição de bloco que indica que o número total de partições é três.
[00328] Um programa de compressão de imagem de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida de uma memória; e decodificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado. No particionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco que indica que o número total de partições é dois não precisa ser utilizado.
[00329] Um programa de compressão de imagem de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e codificar a pluralidade de blocos. O conjunto de modos de partição de bloco pode incluir um primeiro modo de partição de bloco e um segundo modo de partição de bloco cada um definindo uma direção de partição e o número de partições. No particionamento, a utilização do segundo modo de partição de bloco o que indica que o número de partições é dois pode ser restringida.
[00330] Um programa de compressão de imagem de acordo com uma modalidade da presente descrição pode incluir: particionar uma imagem em um conjunto de blocos que inclui uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida da memória; e codificar a pluralidade de blocos. No particionamento, quando um primeiro conjunto de blocos obtido utilizando um primeiro conjunto de modos de partição de bloco e um segundo conjunto de blocos obtido utilizando um segundo conjunto de modos de partição de bloco são os mesmos, o particionamento pode ser executado utilizando somente um do primeiro modo de partição de bloco ou do segundo modo de partição de bloco.
APLICABILIDADE INDUSTRIAL
[00331] A presente descrição pode ser utilizada em codificação / decodificação de multimídia, e especificamente em um codificador / decodificador de imagem e vídeo o qual utilizas codificação /deco- dificação de blocos. MARCAS DE REFERÊNCIA NOS DESENHOS 100 codificador 102 divisor 104 subtrator 106, 5001 transformador 108, 5002 quantizador 110, 5009 codificador de entropia 112, 5003, 6002 quantizador inverso 114, 5004, 6003 transformador inverso 116 somador 118, 5005, 6004 memória de blocos 120 filtro de loop 122, 5006, 6005 memória de quadros 124, 5007, 6006 intrapreditor 126, 5008, 6007 interpreditor 128 controlador de predição 200 decodificador 202, 6001 decodificador de entropia 204 quantizador inverso 206 transformador inverso 208 somador 210 memória de blocos 212 filtro de loop 214 memória de quadros 216 intrapreditor 218 interpreditor 220 controlador de predição 5000 codificador de vídeo 5010, 6008 determinador de partição de bloco 6000 decodificador de vídeo

Claims (2)

1. Método de codificação, caracterizado pelo fato de que compreende: particionar uma imagem em uma pluralidade de blocos, uti-lizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, a imagem sendo lida de uma memória; e codificar a pluralidade de blocos, em que o conjunto de modos de partição de bloco inclui um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado, e no particionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco inclui somente um modo de partição de bloco que indica que o número total de partições é três.
2. Método de decodificação, caracterizado pelo fato de que compreende: particionar um sinal codificado em uma pluralidade de blocos, utilizando um conjunto de modos de partição de bloco obtido combinando um ou mais modos de partição de bloco cada um dos quais define um tipo de partição, o sinal codificado sendo lido de uma memória; e decodificar a pluralidade de blocos, em que o conjunto de modos de partição de bloco inclui um primeiro modo de partição que define uma direção de partição e um número total de partições para particionar um primeiro bloco, e um segundo modo de partição de bloco que define uma direção de partição e um número total de partições para particionar um segundo bloco o qual é um dos blocos obtidos após o primeiro bloco ser particionado, e no particionamento, quando o número total de partições do primeiro modo de partição de bloco é três, o segundo bloco é um bloco central dentre os blocos obtidos após o primeiro bloco ser particionado, e a direção de partição do segundo modo de partição de bloco é a mesma que a direção de partição do primeiro modo de partição de bloco, o segundo modo de partição de bloco inclui somente um modo de partição de bloco que indica que o número total de partições é três.
BR122023027451-2A 2018-05-22 2019-05-09 Método de codificação e método de decodificação BR122023027451A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/674,812 2018-05-22
JP2019-028523 2019-02-20

Publications (1)

Publication Number Publication Date
BR122023027451A2 true BR122023027451A2 (pt) 2024-06-18

Family

ID=

Similar Documents

Publication Publication Date Title
ES2993476T3 (en) Encoding device, decoding device, encoding method and decoding method
BR112020001991A2 (pt) codificador de imagem, decodificador de imagem, método de codificação de imagem e método de decodificação de imagem
BR112020026686A2 (pt) Sistema e método para codificação de vídeo
BR112020010935A2 (pt) dispositivo de codificação de imagem, dispositivo de decodificação de imagem, método de codificação de imagem, e método de decodificação de imagem
BR112020002205A2 (pt) codificador de imagem, decodificador de imagem, método de codificação de imagem e método de decodificação de imagem
EP4546786A2 (en) IMAGE ENCODER, IMAGE DECODER, IMAGE ENCODING METHOD AND IMAGE DECODING METHOD
BR112021014711A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
ES3003036T3 (en) Decoding device and decoding method
BR112020000876A2 (pt) dispositivo codificador, dispositivo decodificador, método de codificação, e método de decodificação
ES2984938T3 (es) Dispositivo de codificación, procedimiento de codificación, dispositivo de decodificación y procedimiento de decodificación
BR112020025664A2 (pt) dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação
BR112020013554A2 (pt) codificador, decodificador, método de codificação, e método de decodificação
BR112020021718B1 (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
BR112021011019A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR112020016755A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR122021025013A2 (pt) Método de codificação, método de decodificação e mídia legível por computador não transitória
RU2830794C1 (ru) Устройство для передачи потока битов для его декодирования с использованием сегментации на блоки
ES2954064T3 (es) Dispositivo de codificación, dispositivo de decodificación, procedimiento de codificación, procedimiento de decodificación y programa de compresión de imágenes
BR122023027451A2 (pt) Método de codificação e método de decodificação
BR122023027474A2 (pt) Método de codificação e método de decodificação
BR122023027457A2 (pt) Codificador que codifica uma imagem e decodificador que decodifica um sinal codificado
BR122023027466A2 (pt) Codificador e decodificador
BR122023027486A2 (pt) Método de codificação e método de decodificação
BR122023027448A2 (pt) Método de codificação e método de decodificação