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

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

Info

Publication number
BR112020016755A2
BR112020016755A2 BR112020016755-0A BR112020016755A BR112020016755A2 BR 112020016755 A2 BR112020016755 A2 BR 112020016755A2 BR 112020016755 A BR112020016755 A BR 112020016755A BR 112020016755 A2 BR112020016755 A2 BR 112020016755A2
Authority
BR
Brazil
Prior art keywords
block
sub
partitions
encoding
blocks
Prior art date
Application number
BR112020016755-0A
Other languages
English (en)
Inventor
Sughosh Pavan SHASHIDHAR
Tadamasa Toma
Hai Wei Sun
Chong Soon Lim
Ru Ling LIAO
Han Boon Teo
Jing Ya LI
Takahiro Nishi
Kiyofumi Abe
Ryuichi KANOH
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 BR112020016755A2 publication Critical patent/BR112020016755A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Error Detection And Correction (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

a presente invenção refere-se a um dispositivo de codificação (codificador) (100) para codificar um bloco (corrente) a ser codificado incluído em uma imagem que está provido com um circuito e uma memória. o circuito divide o bloco a ser codificado em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção utilizando a memória, o segundo sub-bloco estando localizado entre o primeiro sub-bloco e o terceiro sub-bloco, proíbe o segundo sub-bloco de ser dividido em duas partições na primeira direção, e codifica o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.

Description

Relatório Descritivo da Patente de Invenção para "CODIFICADOR, DECODIFICADOR, MÉTODO DE CODIFICAÇÃO E MÉTODO DE DECODIFICAÇÃO".
CAMPO DA TÉCNICA
[001] A presente descrição refere-se a um codificador (dispositivo de codificação), um decodificador (dispositivo de decodificação), um método de codificação, e um método de decodificação.
ANTECEDENTES DA TÉCNICA
[002] Os padrões de codificação de vídeo conhecidos como Codificação de Vídeo de Alta eficiência (HEVC) são padronizados pelo Joint Collaborative Team on Video Coding (JCT-VC).
LISTA DE CITAÇÕES LITERATURA NÃO DE PATENTE
[003] 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
[004] Em tais técnicas de codificação e decodificação, um aperfeiçoamento adicional é desejado.
[005] Em vista disto, a presente descrição provê um codificador (dispositivo de codificação), um decodificador (dispositivo de decodificação), um método de codificação, e um método de decodificação capazes de realizar um aperfeiçoamento adicional.
SOLUÇÕES PARA O PROBLEMA
[006] Um codificador de acordo com um aspecto da presente descrição é um codificador que codifica um bloco corrente em uma imagem e inclui um circuito e uma memória. Utilizando a memória, o circuito: divide o bloco corrente em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção, o segundo sub-bloco sendo localizado entre o primeiro sub-bloco e o terceiro sub-
bloco; proíbe a divisão do segundo sub-bloco em duas partições na primeira direção; e codifica o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.
[007] Um decodificador de acordo com um aspecto da presente descrição é um decodificador que decodifica um bloco corrente em uma imagem codificada e inclui um circuito e uma memória. Utilizando a memória, o circuito: divide o bloco corrente em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção, o segundo sub-bloco sendo localizado entre o primeiro sub- bloco e o terceiro sub-bloco; proíbe a divisão do segundo sub-bloco em duas partições na primeira direção; e decodifica o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.
[008] Aspectos gerais ou específicos da presente descrição podem ser executados como um sistema, método, circuito integrado, programa de computador, meio legível por computador tal como um CD- ROM, ou qualquer sua dada combinação.
EFEITO VANTAJOSO DA INVENÇÃO
[009] A presente descrição provê um codificador, um decodificador, um método de codificação, e um método de decodificação capazes de realizar um aperfeiçoamento adicional.
BREVE DESCRIÇÃO DOS DESENHOS
[0010] Figura 1 é um diagrama de blocos que ilustra uma configuração funcional de um codificador de acordo com a Modalidade
1.
[0011] Figura 2 ilustra um exemplo de divisão de bloco de acordo com a Modalidade 1.
[0012] Figura 3 é um gráfico que indica funções de base de transformada para cada tipo de transformada.
[0013] Figura 4A ilustra um exemplo de uma forma de filtro utilizado em ALF.
[0014] Figura 4B ilustra outro exemplo de uma forma de filtro utilizado em ALF.
[0015] Figura 4C ilustra outro exemplo de uma forma de filtro utilizado em ALF.
[0016] Figura 5A ilustra 67 modos de intrapredição utilizados em intrapredição.
[0017] Figura 5B é 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.
[0018] 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.
[0019] Figura 5D ilustra um exemplo de FRUC.
[0020] Figura 6 é para ilustrar coincidência de padrão (coincidência bilateral) entre dois blocos ao longo de uma trajetória de movimento.
[0021] Figura 7 é 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.
[0022] Figura 8 é para ilustrar um modelo assumindo um movimento linear uniforme.
[0023] Figura 9A é para ilustrar derivar um vetor de movimento de cada sub-bloco com base em vetores de movimento de blocos vizinhos.
[0024] Figura 9B é para ilustrar um esboço de um processo para derivar um vetor de movimento através de modo de mesclagem.
[0025] Figura 9C é um diagrama conceitual para ilustrar um esboço de processamento de DMVR.
[0026] 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.
[0027] Figura 10 é um diagrama de blocos que ilustra uma configuração funcional de um decodificador de acordo com a Modalidade 1.
[0028] Figura 11 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o primeiro aspecto.
[0029] Figura 12 ilustra que quando é determinado que um primeiro custo é mais baixo do que todos os segundos custos, um segundo conjunto de processos de codificação de bloco exclui um terceiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições.
[0030] Figura 13 ilustra outros exemplos de primeiros custos que têm diferentes profundidades de árvore binária.
[0031] Figura 14 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o segundo aspecto.
[0032] Figura 15 ilustra que quando é determinado que qualquer um de primeiros custos é mais baixo do que todos os segundos custos, um processo de codificação de bloco é selecionado de um segundo conjunto de processos de codificação de bloco.
[0033] Figura 16 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o terceiro aspecto.
[0034] Figura 17 ilustra que quando um gradiente vertical de um bloco retangular cuja altura é maior do que sua largura é maior do que seu gradiente horizontal ou diagonal, um segundo conjunto de processos de codificação de bloco exclui um primeiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições em uma direção vertical.
[0035] Figura 18 ilustra que quando um gradiente vertical de um bloco retangular cuja largura é maior do que sua altura é maior do que seu gradiente horizontal ou diagonal, um segundo conjunto de processos de codificação de bloco exclui um primeiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições em uma direção horizontal.
[0036] Figura 19A ilustra um exemplo de cálculo de uma mudança em intensidade de pixel em uma direção horizontal.
[0037] Figura 19B ilustra um exemplo do cálculo de uma mudança em intensidade de pixel na direção horizontal.
[0038] Figura 20 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o quarto aspecto.
[0039] (a) na Figura 21 ilustra que quando um processo de codificação de bloco gera uma área de uma subpartição a qual é metade da área de um bloco e um gradiente horizontal é maior do que um gradiente vertical, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco. (b) na Figura 21 ilustra que quando um processo de codificação de bloco gera uma área de uma subpartição a qual é metade da área de um bloco e um gradiente vertical é maior do que um gradiente horizontal, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco.
[0040] Figura 22 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o quinto aspecto.
[0041] Figura 23A ilustra um exemplo de dividir um bloco de 16x8 em três menores partições em uma direção paralela à altura do bloco de 16x8 quando uma transformada não é implementada para 16×2.
[0042] Figura 23B ilustra um exemplo de dividir um bloco de 16x8 em quatro menores partições em uma direção paralela à altura do bloco de 16x8 quando uma transformada não é implementada para 16×2.
[0043] Figura 24 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o sexto aspecto.
[0044] Figura 25A ilustra exemplos de um candidato para uma estrutura de partição para dividir um bloco de 16x16.
[0045] Figura 25B ilustra exemplos de um candidato para uma estrutura de partição para dividir um bloco de 8x8.
[0046] Figura 26 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o sétimo aspecto.
[0047] Figura 27 ilustra um exemplo de modos para dividir um bloco de 32x32 primeiro em três sub-blocos, então o maior sub-bloco em duas partições.
[0048] Figura 28 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o oitavo aspecto.
[0049] Figura 29 ilustra um exemplo de dividir um bloco de 64x64 primeiro em três sub-blocos, então cada um dos sub-blocos em duas partições.
[0050] Figura 30 ilustra exemplos de modos de divisão e direções de divisão para dividir um bloco em duas ou três partições.
[0051] Figura 31 ilustra exemplos de localizações de parâmetros em um fluxo de bits.
[0052] Figura 32 ilustra uma configuração geral de um sistema de provisão de conteúdo para implementar um serviço de distribuição de conteúdo.
[0053] Figura 33 ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0054] Figura 34 ilustra um exemplo de uma estrutura de codificação em codificação escalável.
[0055] Figura 35 ilustra um exemplo de uma tela de display de uma webpage.
[0056] Figura 36 ilustra um exemplo de uma tela de display de uma webpage.
[0057] Figura 37 ilustra um exemplo de um smartphone.
[0058] Figura 38 é um diagrama de blocos que ilustra um exemplo de configuração de um smartphone.
DESCRIÇÃO DE MODALIDADES EXEMPLARES
[0059] Daqui em diante, modalidades serão descritas com referência aos desenhos.
[0060] Note que as modalidades abaixo descritas cada uma mostram 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. que estão indicados nas modalidades seguintes são meros exemplos, e portanto pretendem limitar o escopo das reivindicações. Portanto, entre os componentes nas modalidades seguintes, aqueles não recitados em nenhuma das reivindicações independentes que definem os conceitos inventivos mais amplos são descritos como componentes opcionais. MODALIDADE 1
[0061] Primeiro, um esboço da Modalidade 1 será apresentado. A Modalidade 1 é um exemplo de um codificador e um decodificador aos quais os processos e/ou configurações apresentados na descrição subsequente de aspectos da presente descrição são aplicáveis. Note que a Modalidade 1 é meramente um exemplo de um codificador e um decodificador 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 diferentes daqueles de acordo com a
Modalidade 1.
[0062] Quando os processos e/ou configurações apresentados na descrição de aspectos da presente descrição são aplicados na Modalidade 1, por exemplo, qualquer um dos seguintes pode ser executado.
[0063] (1) considerando o codificador ou o 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 componente 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;
[0064] (2) considerando o codificador ou o decodificador de acordo com a Modalidade 1, implementar mudanças discricionárias nas funções ou processos implementados executados por um ou mais componentes incluí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 aspectos da presente descrição por um componente apresentado na descrição de aspectos da presente descrição;
[0065] (3) considerando o método implementado pelo codificador ou o decodificador de acordo com a Modalidade 1, implementar mudanças discricionárias tal 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;
[0066] (4) combinar um ou mais componentes incluídos no codificador ou no decodificador de acordo com a Modalidade 1 por 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;
[0067] (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 por 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;
[0068] (6) considerando o método implementado pelo codificador ou o decodificador de acordo com a Modalidade 1, entre os processos incluídos no método, 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; e
[0069] (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.
[0070] Note que a implementação dos processos e/ou configurações apresentados na descrição dos aspectos da presente descrição não está limitado 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 / de 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 nos diferentes aspectos podem ser combinados. Esboço de Codificador
[0071] 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.
[0072] Como ilustrado na Figura 1, o codificador 100 é um dispositivo que codifica uma imagem bloco por bloco, e inclui um divisor 102, subtrator 104, transformador 106, quantizador 108, codificador de entropia 110, quantizador inverso 112, transformador inverso 114, somador 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.
[0073] O codificador 100 é executado 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 divisor 102, subtrator 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 controlador de predição 128. Alternativamente, o codificador 100 pode ser executado como um ou mais circuitos eletrônicos dedicados que correspondem ao divisor 102,
subtrator 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 controlador de predição 128.
[0074] Daqui em diante, cada componente incluído no codificador 100 será descrito. Divisor
[0075] O divisor 102 divide cada imagem incluída em uma imagem móvel inserida em blocos, e emite cada bloco para o subtrator 104. Por exemplo, divisor 102 primeiro divide uma imagem em blocos de um tamanho fixo (por exemplo, 128×128). O bloco de tamanho fixo é também referido como uma unidade de árvore de codificação (CTU). O divisor 102 então divide cada bloco de tamanho fixo em blocos de tamanhos variáveis (por exemplo, 64×64 ou menores), com base divisão de bloco de quadtree recursivo e/ou á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 ou alguns dos blocos em uma imagem podem ser processados por CU, PU, ou TU.
[0076] A Figura 2 ilustra um exemplo de divisão de bloco de acordo com a Modalidade 1. Na Figura 2, as linhas cheias representam limites de bloco de blocos divididos em divisão de bloco quadtree, e as linhas tracejadas representam limites de bloco de blocos divididos em divisão de bloco de árvore binária.
[0077] No presente documento, o bloco 10 é um bloco de 128×128 pixels quadrado (bloco de 128×128). Este bloco de 128×128 10 é primeiro dividido em quadro blocos de 64x64 quadrados (divisão de bloco de quadtree).
[0078] O bloco de 64x64 superior esquerdo é adicionalmente verticalmente dividido em dois blocos de 32×64 retangulares, e o bloco de 32×64 esquerdo e adicionalmente verticalmente dividido em dois blocos de 16×64 retangulares (divisão de bloco de árvore binária). Como um resultado, o bloco de 64x64 superior esquerdo é dividido em dois blocos de 16×64 11 e 12 e um bloco de 32×64 13.
[0079] O bloco de 64x64 superior direito é horizontalmente dividido em blocos de 64×32 retangulares 14 e 15 (divisão de bloco de árvore binária).
[0080] 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 esquerdo é verticalmente dividido em dois blocos de 16x32 retangulares, e o bloco de 16×32 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 32×16 (divisão de bloco de árvore binária). Como um resultado, o bloco de 64x64 inferior esquerdo é dividido no bloco de 16×32 16, dois blocos de 16x16 17 e 18, dois blocos de 32x32 19 e 20, e dois blocos de 32×16 21 e 22.
[0081] O bloco de 64x64 inferior direito 23 não é dividido.
[0082] Como acima descrito, na Figura 2, 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).
[0083] 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
[0084] 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 erros de predição (também referidos como resíduos) de um bloco a ser codificado (daqui em diante referido como um bloco corrente). O subtrator 104 então envia os erros de predição calculados para o transformador 106.
[0085] 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 luma e dois sinais croma). Daqui em diante, um sinal que representa uma imagem é também referido como uma amostra. Transformador
[0086] O transformador 106 transforma erros de predição de domínio espacial em coeficientes de transformada de domínio de frequê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) nos erros de predição de domínio espacial.
[0087] Note que o transformador 106 pode adaptavelmente selecionar um tipo de transformada dentre uma pluralidade de tipo de transformadas, e erros de predição de transformada em coeficientes de transformada utilizando uma função de base transformada que corresponde ao tipo de transformada selecionado. Este tipo de transformada é também referida como uma transformada de múltiplos núcleos explícita (EMT) ou transformada múltipla adaptável (AMT).
[0088] 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 funções de base 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 interpredição), e pode depender do modo intrapredição.
[0089] As informações que indicam se aplicar tal EMT ou AMT (referidas como, por exemplo, um sinalizador de AMT) e informações 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 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 lados, ou nível de CTU).
[0090] Mais ainda, o transformador 106 pode aplicar uma transformada secundá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 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 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 telas lado a lado, ou nível de CTU).
[0091] 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 transformada nã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.
[0092] 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.
[0093] Mais ainda, similar ao acima, após um bloco de 4x4 de entrada 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
[0094] O Quantizador 108 quantiza os coeficientes de transformada emitidos do transformador 106. Mais especificamente, o quantizador 108 escaneia, em uma ordem de escaneamento predeterminada, os coeficientes de transformada do bloco corrente, e quantiza os coeficientes 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.
[0095] 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).
[0096] 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
[0097] O codificador de entropia 110 gera um sinal codificado (fluxo de bits codificado) codificando em comprimento variável os coeficientes quantizados, os quais são entradas para o quantizador 108. Mais especificamente, o codificador de entropia 110, por exemplo, binariza coeficientes quantizados e codifica em aritmética o sinal binário. Quantizador Inverso
[0098] O quantizador inverso 112 quantiza inverso os coeficientes quantizados, os quais são entradas do quantizador 108. Mais especificamente, 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 transformador inverso 114. Transformador Inverso
[0099] 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 transformador inverso 114 restaura os erros de predição do bloco de corrente aplicando uma transformada inversa que corresponde à transformada aplicada pelo transformador 106 nos coeficientes de transformada. A transformada inversa 114 então emite os erros de predição restaurados para o somador 116.
[00100] Note que, como informações são perdidas na quantização,
os erros de predição restaurados não coincidem com os erros de predição calculados pelo subtrator 104. Em outras palavras, os erros de predição restaurados incluem erros de quantização. Somador
[00101] O somador 116 reconstrói o bloco corrente somando os erros 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 predição
128. 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
[00102] A memória de blocos 118 é um armazenamento para armazenar 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 reconstruídos emitidos do somador 116. Filtro de Loop
[00103] O filtro de loop 120 aplica um filtro de loop a blocos reconstruí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).
[00104] 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 2×2 no bloco corrente com base em direção e atividade de gradientes locais, e é aplicado.
[00105] Mais especificamente, primeiro, cada sub-bloco (por exemplo, cada sub-bloco de 2×2) é 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).
[00106] 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.
[00107] O filtro a ser utilizado para cada sub-bloco é determinado dentre da pluralidade de filtros com base no resultado de tal categorização.
[00108] 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 5×5, a Figura 4B ilustra um filtro em forma de diamante de 7×7, e a Figura 4C ilustra um filtro em forma de diamante de 9×9. 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 da sequência, nível de fatia, nível de peça, nível de CTU, ou nível de CU).
[00109] 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).
[00110] O conjunto de coeficientes para a pluralidade de filtros selecioná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
[00111] A memória de quadros 122 é um armazenamento para armazenar 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 reconstruídos filtrados pelo filtro de loop 120. Intrapreditor
[00112] O Intrapreditor 124 gera um sinal de predição (sinal de intraprediçã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 intraprediçã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.
[00113] Por exemplo, o intrapreditor 124 executa intrapredição utilizando 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.
[00114] 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 definidos no padrão H.265 / codificação de vídeo de alta eficiência (HEVC) (ver NPL 1).
[00115] 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.
[00116] Note que um bloco luma pode ser referenciado em intrapredição de bloco de croma. Em outras palavras, um componente de croma do bloco corrente pode ser predito com base em um componente luma do bloco corrente. Tal intrapredição é também referida como predição de modelo linear de componente cruzado (CCLM). Tal de intrapredição de bloco de croma que referência um bloco luma (referido como, por exemplo, modo de CCLM) pode ser adicionado como um dos modos intrapredição de bloco de croma.
[00117] O intrapreditor 124 pode corrigir valores de pixel de pós-intra- prediçã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
[00118] O interpreditor 126 gera um sinal de predição (sinal de interprediçã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 4×4) no bloco corrente. Por exemplo, o interpreditor 126 executa estimativa de movimento em uma imagem de referência para o bloco corrente ou sub-bloco. O interpreditor 126 então gera um sinal de interpredição do bloco corrente ou sub-bloco 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.
[00119] 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.
[00120] Note que o sinal de interpredição pode ser gerado utilizando informação de movimento para um bloco vizinho além das informaçõ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).
[00121] Em tal modo de OBMC, as informações que indicam o tamanho sub-bloco para OBMC (referidas como, por exemplo, tamanho de bloco OBMC) são sinalizadas no nível de sequência. Mais ainda, as informações que indicam se aplicar o modo OBMC ou não (referidas como, por exemplo, um sinalizador de OBMC) são sinalizadas no nível da 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).
[00122] 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.
[00123] 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.
[00124] A seguir, uma imagem de predição (Pred_L) é obtida aplicando um vetor de movimento (MV_L) do bloco esquerdo vizinho codificado 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.
[00125] 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.
[00126] 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.
[00127] 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.
[00128] 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.
[00129] Note que a unidade do bloco corrente pode ser um bloco de predição e, alternativamente, pode ser um sub-bloco obtido adicionalmente dividindo o bloco de predição.
[00130] Um exemplo de um método para determinar se implementar 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.
[00131] Note que as informações de movimento podem ser derivadas no lado do decodificador sem serem sinalizadas. Por exemplo, um modo de mesclagem definido no padrão H.265 / HEVC pode ser utilizado. Mais ainda, por exemplo, as informações de movimento podem ser derivadas executando estimativa de movimento no lado de decodificador. Neste caso, a estimativa do movimento e executada sem a utilizar os valores de pixel do bloco corrente.
[00132] 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).
[00133] 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 temporalmente 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.
[00134] A seguir, um vetor de movimento para o bloco corrente é derivado do vetor de movimento do candidato selecionado. Mais especificamente, 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 candidato é 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.
[00135] Os mesmos processos podem ser executados em casos nos quais o processamento é executado em unidades de sub-blocos.
[00136] 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.
[00137] A coincidência de padrão utilizada é ou a primeira coincidê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.
[00138] Na primeira coincidência de padrão, a coincidência de padrã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.
[00139] 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 coincidência de padrão, dois vetores de movimento (MV0, MV1) são derivados 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 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.
[00140] 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 temporal 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.
[00141] Na segunda coincidência de padrão, a coincidência de padrã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.
[00142] 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.
[00143] As informações que indicam se aplicar o modo de FRUC ou não (referidas como, por exemplo, um sinalizador de FRUC) são sinalizadas no nível da 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 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).
[00144] 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 óptico bidirecional (BIO).
[00145] A Figura 8 é para ilustrar um modelo assumindo um movimento linear uniforme. Na Figura 8, (vx, vy) denotam um vetor de velocidade, e 0 e 1 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 referência Ref0, e (MVx1, MVy1) denotam um vetor de movimento que corresponde à imagem de referência Ref1.
[00146] 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 (vx0, vy0) e (−vx1, −vy1), respectivamente, e a seguinte equação de fluxo óptico é dada. MATH. 1 I k  t  vx I k  x  v y I k  y  0. (1)
[00147] 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 óptico mostra que a soma de (i) a derivada de tempo do valor luma, (ii) o produto da velocidade horizontal e do componente horizontal do gradiente espacial de uma imagem de referê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 mesclagem é corrigido pixel por pixel com base em uma combinação da equação de fluxo óptico e da interpolação de Hermite.
[00148] 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 uniforme. Por exemplo, um vetor de movimento pode ser derivado para cada sub-bloco com base em vetores de movimento de blocos vizinhos.
[00149] No presente documento, um modo no qual um vetor de movimento é derivado para cada sub-bloco com base em vetores de movimento de blocos vizinhos será descrito. Este modo é também referido como um modo de predição de compensação de movimento afim.
[00150] A Figura 9A é para ilustrar derivar um vetor de movimento de cada sub-bloco com base em vetores de movimento de blocos vizinhos. Na Figura 9A, o bloco corrente inclui 16 sub-blocos de 4×4. 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 Equação 2 abaixo. MATH. 2  (v  v ) (v1 y  v0 y )  v x  1x 0 x x  y  v0 x  w w  (v  v0 y ) (2) v y  1 y (v  v ) x  1 x 0 x y  v0 y   w w
[00151] No presente documento, x e y são posições horizontal e vertical do sub-bloco, respectivamente, e w é um coeficiente ponderado predeterminado.
[00152] 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 a, 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 precisam ser executadas no nível CU, e podem ser executadas 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
[00153] O controlador de predição 128 seleciona ou o sinal de intrapredição ou o sinal de interpredição, e emite o sinal de predição selecionado para o subtrator 104 e somador 116.
[00154] No presente documento, um exemplo de derivar um vetor de movimento através de modo de mesclagem em uma imagem corrente será dado. A Figura 9B é para ilustrar um esboço de um processo para derivar um vetor de movimento através de modo de mesclagem.
[00155] Primeiro, uma lista de preditores de MV na qual os preditores de MV candidatos são registrados é gerada. Os exemplos de preditores de MV candidatos incluem: preditores de MV espacialmente vizinhos, os quais são MVs de blocos codificados posicionados na vizinhanç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 é vizinhança 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 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.
[00156] 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.
[00157] Mais ainda, no codificador de comprimento variável, um mer-
ge_idx, o qual é um sinal que indica qual preditor de MV é selecionado, é escrito e codificado no fluxo.
[00158] Note que os preditores de MV registrados na lista de predicadores 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 preditores de MV registrados na lista de preditores de MV podem incluir um ou mais tipos de preditores de MV além e de diferentes dos tipos dados no exemplo na Figura 9B.
[00159] Note que o MV final pode ser determinado executando um processamento de DMVR (a ser posteriormente descrito) utilizando o MV do bloco corrente derivado de modo de mesclagem.
[00160] No presente documento, um exemplo de determinar um MV utilizando o processamento de DMVR será fornecido.
[00161] A Figura 9C é um diagrama conceitual para ilustrar um esboço de processamento de DMVR.
[00162] O 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 segunda 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.
[00163] 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 cada pixel no gabarito e cada valor de pixel nas regiões pesquisadas, assim como o valor de MV.
[00164] Note que os esboços dos processos no presente documento descritos são fundamentalmente os mesmos tanto no codificador quanto no decodificador.
[00165] Note que um processamento outro que o processamento exatamente como acima descrito pode ser utilizado, desde que o processamento seja capaz de derivar o MV final pesquisando nos arredores do MV candidato.
[00166] No presente documento um exemplo de um modo que gera uma imagem de predição utilizando processamento de LIC será fornecido.
[00167] 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.
[00168] Primeiro, um MV é extraído para obter, de uma imagem de referência codificada, uma imagem de referência que corresponde ao bloco corrente.
[00169] A seguir, informações que indicam como o valor de luminâ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.
[00170] A imagem de predição para o bloco corrente é gerada executando 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.
[00171] 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.
[00172] 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 imagens 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.
[00173] 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 ajuste o lic_flag para um valor "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 "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.
[00174] Um exemplo de um diferente método de determinar se implementar 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
[00175] 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 configuraçã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.
[00176] 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 controlador de predição 220.
[00177] 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, quantizador 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 decodificador 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.
[00178] Daqui em diante, cada componente incluído no decodificador 200 será descrito. Decodificador de Entropia
[00179] O decodificador entropia 202 decodifica em entropia um fluxo de bits codificado. Mais especificamente, por exemplo, o decodificador de entropia 202 decodifica por aritmética um fluxo de bits codificado em um sinal binário. O decodificador de entropia 202 então debinariza o sinal binário. Com isto, o decodificador de entropia 202 emite coeficientes quantizados de cada bloco para o quantizador inverso 204. Quantizador inverso
[00180] 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 quantiza inverso coeficientes quantizados do bloco corrente com base em parâmetros de quantização que corresponde aos coeficientes quantizados. O quantizador inverso 204 então emite os coeficientes quantizados inversos (isto é, coeficientes de transformada) do bloco corrente para o transformador inverso 206. Transformador Inverso
[00181] 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.
[00182] 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 AMT é ajustado para verdadeiro), o transformador inverso 206 transforma inverso os coeficientes de transformada do bloco corrente com base em informações que indicam o tipo de transformada analisado.
[00183] 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
[00184] 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 de memória de blocos 210 e filtro de loop 212. Memória de Blocos
[00185] 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 reconstruídos emitidos do somador 208. Filtro de loop
[00186] O filtro de loop 212 aplica um filtro de loop em blocos reconstruí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.
[00187] Quando as informações que indicam a ativação ou desativação de ALF analisado de um fluxo de bits codificado indicam habilitado, 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
[00188] 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
[00189] O Intrapreditor 216 gera um sinal de predição (sinal de intrapredição) por intrapredição com referência a um bloco ou blocos na imagem corrente e armazenada na memória de blocos 210, com base no modo intrapredição analisado do fluxo de bits codificado. Mais especificamente, 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.
[00190] Note que quando um modo de intrapredição no qual um bloco croma é intrapredito de um bloco luma é selecionado, o intrapreditor 216 pode predizer o componente croma do bloco corrente com base no componente de luma do bloco corrente.
[00191] Mais ainda, quando as informações que indicam a aplicação de PDPC são analisadas de um fluxo de bits codificado, o intrapreditor 216 corrige os valores de pixel de pós-intrapredição com base em gradientes de pixel de referência horizontal / vertical. Interpreditor
[00192] 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 4×4) no bloco corrente. Por exemplo, o interpreditor 218 gera um sinal de interpredição do bloco corrente ou sub-bloco por compensação de movimento utilizando informações de movimento (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.
[00193] Note que quando as informações analisadas do fluxo de bits codificado indicam a aplicação de modo 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.
[00194] Mais ainda, quando as informações analisadas do fluxo de bits codificado indicam a aplicação de modo 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 (coincidê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.
[00195] Mais ainda, quando o modo 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
[00196] O controlador de predição 220 seleciona ou o sinal intrapredição ou o sinal de interpredição e emite o sinal de predição selecionado para o somador 208.
[00197] A seguir, cada aspecto de divisão de bloco executada por tal codificador 100 ou decodificador 200 será descrito com referência aos desenhos. Daqui em diante, um bloco corrente a ser codificado ou decodificado é simplesmente referido como bloco. Primeiro Aspecto
[00198] A Figura 11 ilustra um método de codificação e um processo de codificação executados por um codificador de acordo com o primeiro aspecto.
[00199] Na etapa S1001, um primeiro custo é calculado de um primeiro processo de codificação de bloco. O primeiro processo de codificação de bloco não inclui particionar um bloco em uma pluralidade de partições, e um custo inclui uma distorção. O custo pode ser obtido, por exemplo, somando um valor que indica distorção de codificação a um valor obtido multiplicando, com um multiplicador de Lagrange, um valor que indica a carga de codificação gerada. A distorção de codificação pode ser obtida com base em, por exemplo, uma soma de diferença absoluta entre a imagem localmente decodificada e uma imagem original.
[00200] Na etapa S1002, um segundo custo é calculado de um segundo processo de codificação de bloco. O segundo processo de codificação de bloco inclui uma etapa de particionar um bloco primeiro em duas menores partições.
[00201] Na etapa S1003, se o primeiro custo é mais baixo do que o segundo custo é determinado.
[00202] Na etapa S1004, quando é determinado que o primeiro custo é mais baixo do que o segundo custo, um processo de codificação de bloco é selecionado de um segundo conjunto de processos de codificação de bloco. O segundo conjunto de processos de codificação de bloco não inclui um terceiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições.
[00203] A Figura 12 ilustra que quando é determinado que o primeiro custo é mais baixo do que todos os segundos custos, o segundo conjunto de processos de codificação de bloco exclui o terceiro processo de codificação de bloco que inclui a etapa de particionar um bloco primeiro em três menores partições. O segundo conjunto de processos de codificação de bloco é um subconjunto de um primeiro conjunto de processos de codificação de bloco.
[00204] Especificamente, na Figura 12, quando é determinado que o primeiro custo não é mais baixo do que um dos segundos custos, um processo de codificação de bloco é selecionado do primeiro conjunto de processos de codificação de bloco que inclui o terceiro processo de codificação de bloco. Em contraste, quando é determinado que o primeiro custo é mais baixo do que todos os segundos custos, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco obtido excluindo o terceiro processo de codificação de bloco do primeiro conjunto de processos de codificação de bloco.
[00205] A Figura 13 ilustra outros exemplos dos primeiros custos que têm diferentes profundidades de árvore binária. No exemplo superior, um cálculo de custo é executado para uma partição esquerda obtida pelo particionamento de um bloco em duas partições em uma direção vertical. No exemplo inferior, o cálculo de custo é executado para uma subpartição superior obtida particionando o bloco primeiro em duas partições em uma direção horizontal e então particionando a partição superior em duas subpartições na direção horizontal. Em qualquer dos exemplos, quando é determinado que o primeiro custo é mais baixo do que todos os segundos custos, o segundo conjunto de processos de codificação de bloco exclui o terceiro processo de codificação de bloco que tem a etapa de particionar um bloco primeiro em três menores partições. O segundo conjunto de processos de codificação de bloco é um subconjunto do primeiro conjunto de processos de codificação de bloco.
[00206] Na etapa S1005, quando é determinado que o primeiro custo não é menor do que o segundo custo, um processo de codificação de bloco é selecionado do primeiro conjunto de processos de codificação de bloco. O primeiro conjunto de processos de codificação de bloco inclui pelo menos o terceiro processo de codificação de bloco.
[00207] Na etapa S1006, um bloco é codificado utilizando o processo de codificação de bloco selecionado. Efeitos Vantajosos do Primeiro Aspecto
[00208] O presente aspecto reduz o número total de candidatos de estrutura de partição no lado de codificador e assim reduz a complexidade de codificação. Combinação com Outros Aspectos
[00209] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementadas em combinação com outros aspectos. Segundo Aspecto
[00210] A Figura 14 ilustra um método de codificação e um processo de codificação executados por um codificador de acordo com o segundo aspecto.
[00211] Na etapa S2001, um primeiro custo é calculado de um primeiro processo de codificação de bloco. O primeiro processo de codificação de bloco inclui uma etapa de particionar um bloco em duas menores partições somente. Em outras palavras, no primeiro processo de codificação de bloco, o bloco é particionado em duas partições e cada uma das partições não deve ser mais particionada.
[00212] Na etapa S2002, um segundo custo é calculado de um segundo processo de codificação de bloco. O segundo processo de codificação de bloco inclui uma etapa de particionar um bloco primeiro em duas menores partições e as etapas subsequentes de particionar em três ou more partições.
[00213] A etapa S2003 é a mesma que a etapa S1003.
[00214] A etapa S2004 é a mesma que a etapa S1004.
[00215] A Figura 15 ilustra que quando é determinado que qualquer um dos primeiros custos é mais baixo do que todos os segundos custos, um processo de codificação de bloco é selecionado de um segundo conjunto de processos de codificação de bloco. O segundo conjunto de processos de codificação de bloco exclui um terceiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições.
[00216] O segundo conjunto de processos de codificação de bloco é um subconjunto de um primeiro conjunto de processos de codificação de bloco. Em outras palavras, o segundo conjunto de processos de codificação de bloco é obtido excluindo um processo de codificação predeterminado do primeiro conjunto de processos de codificação de bloco. O processo de codificação predeterminado inclui pelo menos o terceiro processo de codificação de bloco.
[00217] A etapa S2005 é a mesma que a etapa S1005.
[00218] A etapa S2006 é a mesma que a etapa S1006. Efeitos Vantajosos do Segundo Aspecto
[00219] O presente aspecto reduz o número total de candidatos de estrutura de partição em um lado de codificador e assim reduz a complexidade de codificação. Combinação com Outros Aspectos
[00220] Este aspecto pode ser implementado em combinação com um ou mais outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementadas em combinação com outros aspectos. Terceiro Aspecto
[00221] A Figura 16 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o terceiro aspecto.
[00222] Na etapa S3001, pelo menos um primeiro gradiente de um bloco retangular é calculado em uma primeira direção paralela ao lado mais longo do bloco retangular. O cálculo do gradiente inclui pelo menos uma mudança direcional na intensidade ou cor.
[00223] Na etapa S3002, pelo menos um segundo gradiente do bloco retangular é calculado em uma segunda direção. A segunda direção é diferente da primeira direção.
[00224] Na etapa S3003, se o primeiro gradiente é maior do que o segundo gradiente é determinado.
[00225] Na etapa S3004, quando for determinado que o primeiro gradiente é maior do que o segundo gradiente, um processo de codificação de bloco é selecionado de um segundo conjunto de processos de codificação de bloco. O segundo conjunto de processos de codificação de bloco não inclui pelo menos um primeiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições na primeira direção.
[00226] O segundo conjunto de processos de codificação de bloco é um subconjunto de um primeiro conjunto de processos de codificação de bloco. Em outras palavras, o segundo conjunto de processos de codificação de bloco é obtido excluindo um processo de codificação predeterminado do primeiro conjunto de processos de codificação de bloco. O processo de codificação predeterminado inclui pelo menos o primeiro processo de codificação de bloco.
[00227] A Figura 17 ilustra que quando um gradiente vertical de um bloco retangular cuja altura é maior do que sua largura é maior do que seu gradiente horizontal ou diagonal, um segundo conjunto de processos de codificação de bloco exclui um primeiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições em uma direção vertical. Em outras palavras, quando o gradiente vertical é maior do que o gradiente horizontal ou diagonal, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco do qual o primeiro processo de codificação de bloco foi excluído. Ao contrário, quando o gradiente vertical não é maior do que o gradiente horizontal ou diagonal, um processo de codificação de bloco é selecionado do primeiro conjunto de processos de codificação de bloco que inclui o primeiro processo de codificação de bloco.
[00228] A Figura 18 ilustra que quando um gradiente horizontal de um bloco retangular cuja largura é maior do que sua altura é maior do que seu gradiente vertical ou diagonal, um segundo conjunto de processos de codificação de bloco exclui um primeiro processo de codificação de bloco que inclui uma etapa de particionar um bloco primeiro em três menores partições em uma direção horizontal. Em outras palavras, quando o gradiente horizontal é maior do que o gradiente vertical ou diagonal, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco do que o primeiro processo de codificação de bloco foi excluído. Ao contrário, quando o gradiente horizontal não é maior do que o gradiente vertical ou diagonal, um processo de codificação de bloco é selecionado do primeiro conjunto de processos de codificação de bloco que inclui o primeiro processo de codificação de bloco.
[00229] As Figuras 19A e 19B ilustram exemplos de cálculo de uma mudança na intensidade de pixel em uma direção horizontal. Um gradiente horizontal é o cálculo relacionado a uma mudança de intensidade ou cor na direção horizontal. Similarmente, um gradiente vertical pode ser calculado com base em uma mudança de intensidade ou cor em uma direção vertical. Similarmente, um gradiente diagonal pode ser calculado com base em uma mudança de intensidade ou cor em uma direção diagonal.
[00230] Especificamente, no exemplo ilustrado na Figura 19A, uma diferença absoluta entre dois pixels vizinhos em uma fila de pixels na direção horizontal é primeiramente calculada. Por exemplo, a diferença absoluta h1_12 = abs(p1, p2), h1_23, h1_34 é calculada na primeira fila. Então, uma diferença absoluta média (por exemplo, diferença absoluta média H1=média de (h1_12 + h1_23 + h1_34 na primeira fila) é calculada para cada fila de pixel. Calculando uma média de diferença absoluta média em colunas de pixels plurais assim calculados (média de (H1 + H2 + H3 + H4)), um gradiente horizontal é calculado.
[00231] No exemplo ilustrado na Figura 19B, um filtro unidimensional é aplicado a três pixels vizinhos em uma fila de pixel na direção horizontal. Por exemplo, h1_123 (=2×p2-p1-p3) e h1_234 são calculados utilizando coeficientes de filtro (-1, 2, -1). Então, uma média dos valores filtrados (por exemplo, H1=média de (h1_123 + h1_234 na primeira fila)) é calculada ara cada fila de pixels. Mais ainda, calculando uma média de valores médios calculados para fila de pixels plurais (média (H1 + H2 + H3 + H4)), um gradiente horizontal é calculado.
[00232] O primeiro gradiente e o segundo gradiente não estão limitados a gradientes ou horizontais verticais. Estes podem incluir um gradiente em outra direção tal como uma direção diagonal ou um gradiente em uma diferente direção. O cálculo de gradiente descrito na Figura 19A ou 19B é apenas um exemplo e qualquer outro método para cálculo de gradiente pode ser aplicado.
[00233] Na etapa S3005, quando é determinado que o primeiro gradiente não é maior do que o segundo gradiente, um processo de decodificação de bloco é selecionado do primeiro conjunto de processos de codificação de bloco. O primeiro conjunto de processos de codificação de bloco inclui o primeiro processo de codificação de bloco.
[00234] Na etapa S3006, o bloco é codificado utilizando o processo de codificação de bloco selecionado. Efeitos Vantajosos do Terceiro Aspecto
[00235] O presente aspecto reduz o número total de candidatos de estrutura de partição em um lado do codificador e assim, reduz a complexidade de codificação. Combinação com Outros Aspectos
[00236] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementadas em combinação com outros aspectos. Quarto Aspecto
[00237] A Figura 20 ilustra um método de codificação e um processo de codificação executado por um codificador de acordo com o quarto aspecto.
[00238] Na etapa S4001, se uma etapa de particionar um bloco em um primeiro processo de codificação de bloco gera uma partição que tem a metade do tamanho do bloco é determinado.
[00239] Na etapa S4002, quando é determinado que a etapa de particionar um bloco no primeiro processo de codificação de bloco gera uma partição que tem metade do tamanho do bloco, pelo menos um gradiente do bloco é calculado.
[00240] Na etapa S4003, um segundo conjunto de processos de codificação de bloco é gerado de um primeiro conjunto de processos de codificação de bloco, excluindo deste pelo menos um processo de codificação de bloco que utiliza informações de gradiente. O processo de codificação do bloco no presente documento excluído inclui pelo menos uma etapa de particionar um bloco primeiro em três menores partições.
[00241] Na etapa S4004, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco.
[00242] (a) na Figura 21 ilustra que quando o processo de codificação de bloco gera uma área de uma subpartição a qual é metade da área do bloco e um gradiente horizontal é maior do que um gradiente vertical, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco. O segundo conjunto de processos de codificação de bloco exclui um processo de codificar um bloco que tem uma pluralidade de partições e uma etapa de particionar um bloco primeiro em três menores partições em uma direção horizontal.
[00243] (b) na Figura 21 ilustra que quando o processo de codificação de bloco gera uma área de uma subpartição a qual é metade da área do bloco e um gradiente vertical é maior do que um gradiente horizontal, um processo de codificação de bloco é selecionado do segundo conjunto de processos de codificação de bloco. O segundo conjunto de processos de codificação de bloco exclui o processo de codificar um bloco que tem uma pluralidade de partições e a etapa de particionar um bloco primeiro em três menores partições na direção horizontal.
[00244] Na etapa S4005, quando é determinado que a etapa de particionar um bloco no primeiro processo de codificação de bloco não gera uma partição que tem metade do tamanho do bloco, um processo de codificação de bloco é selecionado do primeiro conjunto de processos de codificação de bloco.
[00245] Na etapa S4006, o bloco é codificado utilizando o processo de codificação bloco selecionado. Efeitos Vantajosos do Quarto Aspecto
[00246] O presente aspecto reduz o número total de candidatos de estrutura de partição em um lado de codificador e assim, reduz a complexidade de codificação. Combinação com Outros Aspectos
[00247] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementadas em combinação com outros aspectos. Quinto Aspecto
[00248] A Figura 22 ilustra um método de codificação e um processo de codificação executados por um codificador de acordo com o quinto aspecto.
[00249] Na etapa S5001, um primeiro lado de um bloco é identificado como lado mais longo entre os dois lados do bloco e um segundo lado do bloco é identificado como lado que não é o lado mais longo do bloco.
[00250] Na etapa S5002, quando o bloco deve ser dividido em pelo menos três menores partições, é determinado se dividir o bloco em uma direção paralela ao primeiro lado gera pelo menos uma partição que tem um tamanho não suportado em um processo de predição ou um processo de transformada.
[00251] Na etapa S5003, quando é determinado que dividir o bloco na direção paralela ao primeiro lado gera pelo menos uma partição que tem um tamanho não suportado em um processo de predição ou um processo de transformação, o bloco é dividido em menores partições em uma direção paralela ao segundo lado. A Figura 23A ilustra um exemplo de dividir um bloco de 16x8 em três menores partições em uma direção paralela à altura do bloco de 16x8 (direção vertical) quando uma transformada não é implementada para 16×2. A Figura 23B ilustra um exemplo de dividir um bloco de 16x8 em quatro menores partições em uma direção paralela à altura do bloco de 16x8 (direção vertical) quando uma transformada não é implementada para 16×2. O tamanho de 16×2 é obtido dividindo o bloco em uma direção paralela à largura do bloco. Em outras palavras, Nas Figuras 23A e 23B, não é permitido dividir o bloco em três ou quatro em uma direção horizontal paralela ao primeiro lado (lado mais longo).
[00252] Na etapa S5004, quando não é determinado que dividir o bloco na direção paralela ao primeiro lado gera pelo menos uma partição que tem um tamanho não suportado em um processo de predição ou um processo de transformada, um parâmetro de direção de divisão é escrito em um fluxo de bits. O parâmetro direção de divisão pode indicar uma direção na qual um bloco deve ser dividido e indicar uma direção horizontal ou vertical. A localização de um parâmetro de direção de divisão está ilustrada na Figura 31.
[00253] Na etapa S5005, o bloco é dividido em menores partições em uma direção indicada pelo parâmetro de direção de divisão.
[00254] Na etapa S5006, uma partição ou a subpartição da partição é codificada.
[00255] Deve ser notado que os termos "escrever" e "em (um fluxo de bits)" na etapa S5004 e o termo "codificar" na etapa S5006 para o método de codificação e o processo de codificação executados por um codificador podem ser respectivamente substituídos pelos termos "analisar", "do (fluxo de bits)", e "decodificar" para um método de decodificação e um processo de decodificação executados por um decodificador. Efeitos Vantajosos do Quinto aspecto
[00256] De acordo com o presente aspecto, não há necessidade de codificar uma direção dividida em alguns tamanhos de bloco específicos, e isto aperfeiçoa a eficiência de codificação. A presente descrição também reduz o número total de candidatos de estrutura de partição em um lado de codificador e assim reduz a complexidade de codificação. Combinação com Outros Aspectos
[00257] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementados em combinação com outros aspectos. Sexto Aspecto
[00258] A Figura 24 ilustra um método de codificação e um processo de codificação executados por um codificador de acordo com o sexto aspecto.
[00259] Na etapa S6001, é determinado se dividir um bloco em três menores partições em cada direção de uma pluralidade de direções gera pelo menos uma partição que tem um tamanho não suportado em um processo de predição ou um processo de transformada.
[00260] Na etapa S6002, quando é determinado que dividir o bloco em três menores partições em cada direção de uma pluralidade de direções gera pelo menos uma partição que tem um tamanho não suportado em um processo de predição ou um processo de transformada, o bloco é dividido em duas menores partições em uma direção.
[00261] Na etapa S6003, quando é determinado que dividir o bloco em três menores partições pelo menos em uma direção entre uma pluralidade de direções não gera pelo menos uma partição que tem um tamanho não suportado em um processo de predição ou um processo de transformada, um parâmetro é escrito no fluxo de bits. O parâmetro indica o número de menores partições obtidas dividindo um bloco. O parâmetro pode ser um parâmetro de modo de divisão. O parâmetro do modo de divisão pode indicar o número de sub-blocos que tem uma razão de divisão predeterminada para dividir um bloco. O parâmetro de modo de divisão pode indicar pelo menos o número de partições nas quais um bloco deve ser dividido. A localização de um parâmetro de modo de divisão está ilustrada na Figura 31.
[00262] Na etapa S6004, o bloco é dividido em diversas partições em uma direção de acordo com o parâmetro. O número de partições pode ser 2 ou 3.
[00263] A tapa S6005 é a mesma que a etapa S5006.
[00264] A Figura 25A ilustra exemplos de um candidato para uma estrutura de partição para dividir um bloco de 16x16. A Figura 25B ilustra exemplos de um candidato para uma estrutura de partição para dividir um bloco de 8x8. Existem quatro candidatos para a estrutura de partição para dividir o bloco de 16x16, como ilustrado na Figura 25A.
Existem dois candidatos para a estrutura de partição para dividir o bloco de 8x8, como ilustrado na Figura 25B. Nos exemplos, uma estrutura de partição de dividir o bloco de 8x8 em três menores partições ao longo de uma direção horizontal ou vertical é removida dos candidatos de estrutura de partição já que 8×2 e 2×8 não são suportados em um processo de transformada. Em outras palavras, não é permitido dividir o bloco de 8x8 em três sub-blocos porque os tamanhos 8×2 e 2×8 não são suportados em um processo de transformada.
[00265] Deve ser notado que os termos "escrever" e "em (um fluxo de bits)" na etapa S6003 e o termo "codificar" na etapa S6005 para o método de codificação e o processo de codificação executados por um codificador podem ser respectivamente substituídos pelos termos "analisar", "de (fluxo de bits)", e "decodificar" para um método de decodificação e um processo de decodificação executados por um decodificador. Efeitos Vantajosos do Sexto Aspecto
[00266] De acordo com o presente aspecto, não há necessidade de codificar uma direção de divisão em alguns tamanhos de bloco específicos, e isto aperfeiçoa a eficiência de codificação. A presente descrição também reduz o número total de candidatos de estrutura de partição em um lado codificador e assim reduz a complexidade de codificação. Combinação com Outros Aspectos
[00267] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementas em combinação com outros aspectos. Sétimo Aspecto
[00268] A Figura 26 ilustra um método de codificação e um processo de codificação executados por um codificador de acordo com o sétimo aspecto.
[00269] Na etapa S7001, um bloco é dividido em um primeiro, segundo, e terceiro sub-blocos em uma primeira direção. De acordo com o presente aspecto, a razão de divisão de divisão ternária é 1:2:1 como ilustrado na Figura 30. Consequentemente, o segundo sub-bloco localizado entre o primeiro sub-bloco e o terceiro sub-bloco é maior em tamanho do que o primeiro e terceiro sub-blocos. Deve ser notado que os valores de índice de 0 a 2 podem ser sequencialmente atribuídos ao primeiro até o terceiro sub-blocos.
[00270] Na etapa S7002, quando o segundo sub-bloco deve ser dividido em uma pluralidade de partições, um parâmetro de modo de divisão é escrito em um fluxo de bits para indicar o número de partições. O parâmetro de modo de divisão pode indicar o número de sub-blocos que têm uma razão de divisão predeterminada para o dividir um bloco, como ilustrado na Figura 30. O parâmetro de modo de divisão pode indicar somente o número de sub-blocos. O parâmetro do modo de divisão pode indicar, juntamente com o número de sub-blocos, informações diferentes de uma razão de divisão. A localização de um parâmetro de modo de divisão está ilustrada na Figura 31.
[00271] Na etapa S7003, se o parâmetro do modo de divisão indica que o número de partições é dois é determinado.
[00272] Na etapa S7004, quando é determinado que o parâmetro modo de divisão indica que o número de partições é dois, o segundo sub-bloco é dividido em duas partições em uma segunda direção diferente da primeira direção. Em outras palavras, é proibido dividir o segundo sub-bloco em duas partições na primeira direção. Isto é porque um parâmetro de direção de divisão não é escrito em um fluxo de bits. A saber, escrever um parâmetro de direção de divisão no fluxo de bits é omitido (isto é, pulado).
[00273] A Figura 27 ilustra exemplos de um modo para dividir um bloco de 32x32. Em (a), um bloco de 32x32 é dividido primeiro em dois sub-blocos em uma direção vertical, e então cada um dos sub-blocos é dividido em duas partições na direção vertical. Em (b), um bloco de 32x32 é divido primeiro em três sub-blocos na direção vertical, e então o maior sub-bloco é dividido em duas partições. Uma direção de divisão para dividir o maior sub-bloco é ajustada para ser paralela ao lado mais curto de um bloco de 16×32. Em outras palavras, dividir o maior sub- bloco em duas partições em uma direção horizontal é permitido, mas dividir na direção vertical não é permitido. O maior sub-bloco é equivalente ao segundo sub-bloco. Isto inibe a ocorrência da mesma estrutura de partição (também referida como estrutura de partição repetida) nos modos de divisão mutuamente diferentes ilustrados em (a) e (b).
[00274] Na etapa S7005, quando não é determinado que o parâmetro de modo de divisão indica que o número de partições é dois, um parâmetro de direção de divisão é escrito no fluxo de bits. O parâmetro de direção de divisão pode indicar a direção de divisão de um bloco, e indicar uma direção horizontal ou vertical como ilustrado na Figura 30. A localização de um parâmetro de direção de divisão está ilustrada na Figura 31.
[00275] Na etapa S7006, o segundo sub-bloco é dividido em pelo menos três menores partições em uma direção indicada pelo parâmetro de direção de divisão.
[00276] A etapa S7007 é a mesma etapa que a etapa S5006.
[00277] Deve ser notado os termos "escrever" e "em (um fluxo de bits)" na etapa S6003 e o termo "codificar" na etapa S6005 para o método de codificação e o processo de codificação executados por um codificador podem ser respectivamente substituídos pelos termos "analisar", "de (fluxo de bits)", e "decodificar" para um método de decodificação e um processo de decodificação executados por um decodificador.
[00278] Note que as etapas e a ordem das etapas são apenas exemplos como foi acima descrito, e não estão limitadas a tais. A ordem das etapas pode ser mudada como pode ser concebido por uma pessoa versada na técnica desde que esta não vá além do escopo da presente descrição. Na Figura 26, por exemplo, um parâmetro de direção de divisão pode ser escrito em um fluxo de bits na frente de um parâmetro de modo de divisão. Em outras palavras, na Figura 31, a localização de um parâmetro de modo de divisão pode ser substituída pela localização de um parâmetro de direção de divisão. Na Figura 26, uma etapa S7002 pode ser substituída pela etapa S7005.
[00279] Neste caso, quando o segundo sub-bloco deve ser dividido em uma pluralidade de partições, um parâmetro de direção de divisão é primeiramente escrito em um fluxo de bits. Subsequentemente, se o parâmetro de direção de divisão indica uma primeira direção é determinado. Quando o parâmetro de direção de divisão indica a primeira direção, o segundo sub-bloco é dividido em três partições na primeira direção. Em outras palavras, é proibido dividir o segundo sub- bloco em duas partições na primeira direção. Isto é porque um parâmetro de modo de divisão não é escrito no fluxo de bits. A saber, escrever um parâmetro de modo de divisão no fluxo de bits é omitido ou pulado. Em contraste, quando o parâmetro de direção de divisão indica uma segunda direção diferente da primeira direção, um parâmetro de modo de divisão que indica o número de partições nas quais o segundo sub-bloco deve ser dividido é escrito no fluxo de bits, e o segundo sub- bloco é dividido, na segunda direção, em tantas partições quantas o número indicado pelo parâmetro de modo de divisão. O parâmetro de direção de divisão é um exemplo de um primeiro parâmetro que indica uma direção na qual o segundo sub-bloco deve ser dividido, enquanto o parâmetro de modo de divisão é um exemplo de um segundo parâmetro que indica o número de partições nas quais o segundo sub- bloco deve ser dividido. Efeitos Vantajosos do Sétimo Aspecto
[00280] De acordo com o presente aspecto, não há necessidade de codificar uma direção de divisão ou o número de partições em alguns tamanhos de bloco específicos, e isto aperfeiçoa a eficiência de codificação. A presente descrição também reduz o número total de candidatos de estrutura de partição em um lado de codificador e assim reduz a complexidade da codificação. Combinação com Outros Aspectos
[00281] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementadas em combinação com outros aspectos. Oitavo Aspecto
[00282] A Figura 28 ilustra um método de codificação e um processo de codificação executados por um codificador de acordo com o oitavo aspecto.
[00283] Na etapa S8001, um bloco é dividido em primeiro, segundo, e terceiro sub-blocos em uma primeira direção.
[00284] Na etapa S8002, é determinado se cada um do primeiro e segundo sub-blocos é adicionalmente dividido em duas menores partições em uma segunda direção diferente da primeira direção.
[00285] Na etapa S8003, quando é determinado que cada um do primeiro e segundo sub-blocos é adicionalmente divido em duas menores partições na segunda direção, diferente da primeira direção, o terceiro sub-bloco é dividido em menores partições. Quando o terceiro sub-bloco é dividido em duas menores partições, o terceiro sub-bloco é dividido na mesma direção que a primeira direção.
[00286] Na etapa S8004, quando não é determinado que cada um do primeiro e segundo sub-blocos é adicionalmente dividido em duas menores partições na segunda direção diferente da primeira direção, um parâmetro de direção de divisão é escrito em um fluxo de bits. O parâmetro de direção de divisão pode indicar uma direção horizontal ou vertical, como ilustrado na Figura 30. A localização de um parâmetro de direção de divisão está ilustrada na Figura 31.
[00287] Na etapa S8005, o primeiro sub-bloco é dividido em menores partições na direção indicada pelo parâmetro de direção de divisão.
[00288] A etapa S8006 é a mesma etapa que a etapa S5006.
[00289] A Figura 29 ilustra exemplos de um modo para dividir um bloco de 64×64. Em (a), um bloco de 64x64 é dividido primeiro em dois sub-blocos em uma direção vertical, e então cada um dos sub-blocos é dividido em três partições em uma direção horizontal. Em (b), um bloco de 64x64 é dividido primeiro em três sub-blocos na direção horizontal, e então cada um dos sub-blocos é dividido em duas partições.
[00290] Em (b), uma direção para dividir o bloco de 64x64 no primeiro até o terceiro sub-blocos é horizontal enquanto uma direção para dividir os primeiros dois sub-blocos (isto é, o primeiro e segundo sub-blocos) é vertical. Uma direção para dividir o terceiro sub-bloco é horizontal que é a mesma direção que a direção utilizada para dividir o bloco de 64x64. Em outras palavras, é proibido, em (b), dividir o terceiro sub-bloco em duas partições na direção vertical. Isto inibe a ocorrência da mesma estrutura de partição em modos de divisão mutuamente diferentes ilustrados em (a) e (b).
[00291] Na etapa S8005, o primeiro sub-bloco é dividido em duas partições na direção indicada pelo parâmetro de direção de divisão.
[00292] Deve ser notado que os termos "escrever" e "em (um fluxo de bits)" na etapa S8004 e o termo "codificar" na etapa S8006 para o método de codificação e o processo de codificação executados por um codificador podem ser respectivamente substituídos pelos termos "analisar", "de (fluxo de bits)", e "decodificar" para um método de decodificação e um processo de decodificação executados por um decodificador. Efeitos Vantajosos do Oitavo Aspecto
[00293] De acordo com o presente aspecto, não há necessidade de codificar uma direção dividida em alguns tamanhos de bloco específicos, e isto aperfeiçoa a eficiência de codificação. A presente descrição também reduz o número total de candidatos de estrutura de partição em um lado codificador e assim reduz a complexidade de codificação. Combinação com Outros Aspectos
[00294] Este aspecto pode ser implementado em combinação com um ou mais dos outros aspectos de acordo com a presente descrição. Além disso, parte dos processos nos fluxogramas, parte dos elementos constituintes dos aparelhos, e parte da sintaxe descrita neste aspecto podem ser implementadas em combinação com outros aspectos.
VARIAÇÕES
[00295] Em todos os aspectos acima descritos, é possível utilizar um ou plurais limites para determinar o número de menores partições e uma direção de divisão para dividir um bloco. Os limites podem ser adaptavelmente mudados de acordo com uma camada de tempo, um parâmetro de quantização, ou uma atividade de valor de pixel em uma fatia, ou uma combinação de padrões de divisão tais como uma combinação de uma divisão de quadtree, uma divisão de árvore binária e qualquer outra divisão, ou uma combinação de outras ferramentas de codificação, que inclui divisão triangular. Os limites podem ser adaptavelmente mudados de acordo com um tamanho de um bloco, tal como uma largura de bloco ou uma altura de bloco, ou uma multiplicação de uma largura de bloco e uma altura de bloco. Os limites podem ser adaptavelmente mudados de acordo com uma forma de bloco e/ou uma profundidade de divisão.
[00296] Deve ser notado que as localizações de um parâmetro de modo de divisão e um parâmetro de direção de divisão não estão limitadas às localizações ilustradas na Figura 31. Em outras palavras, a sinalização de um parâmetro de modo de divisão e um parâmetro de direção de divisão não precisa ser executada limitadamente em um nível de CTU, e qualquer outro nível (por exemplo, um nível de imagem, um nível de fatia, um nível de grupo de telas lado a lado, ou um nível de telas lado a lado) pode ser aplicado.
[00297] Note que um parâmetro que indica se um bloco deve ser dividido em dois ou três sub-blocos ou partições pode ser escrito em um fluxo de bits. Neste caso, quando o parâmetro indica que um bloco deve ser dividido em dois ou três sub-blocos ou partições, o método de codificação ou método de decodificação de acordo com cada um dos aspectos acima descritos pode ser aplicado.
OUTRAS MODALIDADES
[00298] 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).
[00299] Mais ainda, o processamento descrito em cada uma das modalidades pode ser realizado através de processamento integrado utilizando um único aparelho (sistema), e, alternativamente, pode ser realizado através de processamento descentralizado utilizando uma pluralidade de aparelhos. Mais ainda, o processador que executa o programa acima descrito pode ser um único processador ou uma pluralidade de processadores. Em outras palavras, um processamento integrado pode ser executado, e, alternativamente, um processamento descentralizado pode ser executado.
[00300] 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.
[00301] 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 emprega os mesmos serão descritos. O sistema está caracterizado como incluindo um codificador de imagem que emprega o método de codificação de imagem, um decodificador de imagem que emprega o método de decodificação de imagem, 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 apropriadamente modificadas em uma base de caso por caso. Exemplos de Utilização
[00302] A Figura 32 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 base ex106, ex107, ex108, ex109, e ex110, as quais são estações sem fio fixas, estão localizadas em respectivas células.
[00303] 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.
[00304] 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.
[00305] A câmera ex113 é um dispositivo capaz de capturar imagens está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.
[00306] 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.
[00307] 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.
[00308] 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 Descentralizado
[00309] 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.
[00310] 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 complicada 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 aproximadamente tempo real. Isso torna possível realizar um fluxo uniforme em tempo real.
[00311] 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 (CABAC), pode ser manipulada pelo servidor.
[00312] 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 pluralidade 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.
[00313] 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.
[00314] Mais ainda, o servidor pode transmitir um fluxo de dados de vídeo após executar transcodificação para converter o formato de codificação dos dados de vídeo. Por exemplo, o servidor pode converter o formato de codificação de MPEG para VP, e pode converter H.264 para H.265.
[00315] 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
[00316] Em anos recentes, a utilização de imagens ou vídeos combinados 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.
[00317] 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 codificada 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.
[00318] Isto permite o usuário desfrutar uma cena livremente selecionando ví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.
[00319] 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.
[00320] 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.
[00321] A decodificação de dados similarmente transmitidos em fluxo pode ser executada pelo cliente (ou seja, 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. Isto torna possível que os espectadores compartilhem uma visualização de imagem grande assim como para que cada espectador verificar em sua área designada ou inspecionar uma região em mais detalhes adicionais de perto.
[00322] No futuro, tanto internamente quanto externamente, em situações nas quais uma pluralidade de conexões sem fio é possível sobre distâ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 comutar 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 internamente 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
[00323] A comutação de conteúdo será descrita com referência a um fluxo escalável, ilustrado na Figura 33, 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 33. 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 decodificador, 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.
[00324] 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 superresolução, ou informações que identificam um valor de parâmetro em processamento de filtro, aprendizado de máquina, ou método de menores quadrados utilizados em processamento de superresolução.
[00325] 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 decodificador, 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 34, 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.
[00326] 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 imagem, pode identificar uma imagem na qual o objeto está presente e a posição do objeto na imagem.
Otimização de Webpage
[00327] A Figura 35 ilustra um exemplo de uma tela de display de uma webpage sobre, por exemplo, o computador ex111. A Figura 36 ilustra um exemplo de uma tela de display de uma webpage sobre, por exemplo, o smartphone ex115. Como ilustrado na Figura 35 e Figura 36, 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 aparelho 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 .
[00328] Quando uma conexão de imagem é selecionada pelo usuário, o aparelho 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 aparelho 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 aparelho 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) decodificando e exibindo somente imagens de referência direta (imagem I, imagem P, imagem B de referência direta). Mais ainda, o aparelho 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
[00329] 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 um ou mais camadas, informações sobre, por exemplo, o clima ou construção de estradas tais 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.
[00330] 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 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.
[00331] 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
[00332] 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 qualidade 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 processamento de edição no conteúdo antes do processamento de codificação, de modo a refinar o conteúdo individual. Isto pode ser conseguido com, por exemplo, a seguinte configuração.
[00333] 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.
[00334] 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 desfavorá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 móvel.
[00335] 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 decodificaçã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
[00336] 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 pela câmera podem ser transmitidos. Neste caso, os dados do vídeo são codificados por LSI ex500 incluído no smartphone ex115.
[00337] 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.
[00338] 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 processamento de codificação e processamento de decodificação podem ser aplicados para transmitir e receber ondas de rádio transmitidas sobrepostas com dados de áudio e vídeo multiplexado utilizando, por exemplo, um satélite, apesar disto ser impulsionado na direção de multidifusão enquanto que unidifusão é mais fácil com o sistema de provisão de conteúdo ex100. Configuração de Hardware
[00339] A Figura 37 ilustra o smartphone ex115. A Figura 38 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 capturar ví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 correi, 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.
[00340] 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.
[00341] Quando o usuário liga o botão de energia do circuito de fonte de alimentação ex461, o smartphone ex115 é energizado em uma estação operável por cada componente sendo suprido com energia de um pacote de bateria.
[00342] 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 / demodulador 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 processador 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 codificados 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 / demultiplexador 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.
[00343] 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 barramento 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.
[00344] Apesar do smartphone ex115 ter sido utilizado no exemplo acima, três implementações são concebíveis: um terminal de transceptor 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 multiplexados obtidos como um resultado de dados de vídeo sendo multiplexados com, por exemplo, dados de áudio, são recebidos ou transmitidos, mas os dados multiplexados podem ser dados de vídeo multiplexados 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.
[00345] Apesar do controlador principal ex460, que inclui uma CPU, está descrito como controlando os processos de codificação ou decodificação, os terminais frequentemente incluem GPUs. Consequentemente, uma configuração é aceitável na qual uma grande área é processada 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.
APLICABILIDADE INDUSTRIAL
[00346] A presente descrição é aplicável para, por exemplo, receptores de televisão, gravadores de vídeo digital, sistemas de navegação de carros, telefones móveis, câmeras digitais, e câmeras de vídeo digitais.
MARCAS DE REFERÊNCIA NOS DESENHOS 100 codificador 102 divisor 104 subtrator 106 transformador 108 quantizador 110 codificador de entropia 112, 204 quantizador inverso 114, 206 transformador inverso 116, 208 somador 118, 210 memória de blocos 120, 212 filtro de loop 122, 214 memória de quadros 124, 216 intrapreditor 126, 218 interpreditor 128, 220 controlador de predição 200 decodificador 202 decodificador de entropia

Claims (6)

REIVINDICAÇÕES
1. Codificador que codifica um bloco corrente em uma imagem, o codificador caracterizado pelo fato de que compreende: um circuito; e uma memória, em que utilizando a memória, o circuito: divide o bloco corrente em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção, o segundo sub-bloco sendo localizado entre o primeiro sub-bloco e o terceiro sub-bloco; proíbe a divisão do segundo sub-bloco em duas partições na primeira direção; e codifica o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.
2. Codificador de acordo com a reivindicação 1, caracterizado pelo fato de: quando o segundo sub-bloco deve ser dividido em uma pluralidade de partições, o circuito ainda: escreve, em um fluxo de bits, um primeiro parâmetro que indica uma direção na qual o segundo sub-bloco deve ser dividido; divide o segundo sub-bloco em três partições na primeira direção quando o primeiro parâmetro indica a primeira direção; e quando o primeiro parâmetro indica uma segunda direção diferente da primeira direção, (i) escreve, no fluxo de bits, um segundo parâmetro que indica o número de partições nas quais o segundo sub-bloco deve ser dividido, e (ii) divide, na segunda direção, o segundo sub-bloco em tantas partições quanto o número indicado pelo segundo parâmetro.
3. Método de codificação para codificar um bloco corrente em uma imagem, o método de codificação caracterizado pelo fato de compreender: dividir o bloco corrente em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção, o segundo sub-bloco sendo localizado entre o primeiro sub-bloco e o terceiro sub-bloco; proibir dividir o segundo sub-bloco em duas partições na primeira direção; e codificar o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.
4. Decodificador que decodifica um bloco corrente em uma imagem codificada, o decodificador caracterizado pelo fato de compreender: um circuito; e uma memória, em que utilizando a memória, o circuito: divide o bloco corrente em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção, o segundo sub-bloco sendo localizado entre o primeiro sub-bloco e o terceiro sub-bloco; proíbe a divisão do segundo sub-bloco em duas partições na primeira direção; e decodifica o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.
5. Decodificador de acordo com a reivindicação 4, caracterizado pelo fato de o circuito compreender: analisa, de um fluxo de bits, um primeiro parâmetro que indica uma direção na qual o segundo sub-bloco deve ser dividido; divide o segundo sub-bloco em três partições na primeira direção quando o primeiro parâmetro indica a primeira direção; e quando o primeiro parâmetro indica uma segunda direção diferente da primeira direção, (i) analisa, do fluxo de bits, um segundo parâmetro que indica o número de partições no qual o segundo sub- bloco deve ser dividido, e (ii) divide, na segunda direção, o segundo sub- bloco em tantas partições quanto o número indicado pelo segundo parâmetro.
6. Método de decodificação para decodificar um bloco corrente em uma imagem codificada, o método de decodificação caracterizado pelo fato de compreender: dividir o bloco corrente em um primeiro sub-bloco, um segundo sub-bloco, e um terceiro sub-bloco em uma primeira direção, o segundo sub-bloco sendo localizado entre o primeiro sub-bloco e o terceiro sub-bloco; proibir dividir o segundo sub-bloco em duas partições na primeira direção; e decodificar o primeiro sub-bloco, o segundo sub-bloco, e o terceiro sub-bloco.
Petição 870200103206, de 17/08/2020, pág. 100/147 Divisor Transformador Quantizador Codificador de entropia
Quantizador inverso 1/43
Transformador inverso
Controlador de predição Intra- Memória predição de bloco
Inter- Memória Filtro predição de quadro de loop
Tipo de transformada Funções de base
Onde
Onde
0: Plano
Início
Obter MV de bloco esquerdo vizinho
Obter imagem de predição por MV_L
Corrigir imagem de predição por sobreposição ponderada de Pred_L
Obter MV de bloco superior vizinho
Obter imagem de predição por MV_U
Corrigir imagem de predição por sobreposição ponderada de Pred_U
Fim
Petição 870200103206, de 17/08/2020, pág. 106/147 Imagem de referência Imagem corrente
Bloco superior vizinho
Bloco correte 7/43
Bloco esquerdo vizinho
Imagem de predição final
Início
Iniciar loop de processamento de FRUC
Gerar lista de MV candidatos
Selecionar melhor MV candidato
Pesquisar vizinhança de melhor MV candidato
Terminar loop de processamento de FRUC
Fim de movimento Trajetória
Gabarito
(Imagem B)
Imagem de referência
Petição 870200103206, de 17/08/2020, pág. 112/147 Imagem corrente codificada 13/43
Mesclar lista de Preditor de MV Preditor de MV Preditor de MV Preditor de MV Preditor Preditor Preditor preditores de espacialmente espacialmente espacialmente espacialmente de MV de MV de MV zero MV candidatos vizinho 1 vizinho 2 vizinho 3 vizinho 4 combinado 5 combinado 6 7
Selecionar um preditor de MV de uma lista de preditores de MV e atribuir como MV para bloco corrente
Petição 870200103206, de 17/08/2020, pág. 113/147 Gabarito gerado com base em pixel de referência de MV candidato (l0) e pixel de referência de MV candidato (l1) 14/43
MV candidato (L0) MV candidato (L1)
Bloco corrente
Primeira imagem de Imagem corrente Segunda imagem de referência (L0) referência (L1)
Imagem de referência Imagem corrente
Bloco corrente
Regiões de referência circundantes para correção de luminância
Calcular parâmetro de correção de luminância
Processamento de correção de luminância
Imagem de referência Imagem de predição
Petição 870200103206, de 17/08/2020, pág. 115/147 Decodificador Quantizador Transformador Filtro de de entropia inverso inverso loop 16/43
Controlador de predição Intra- Memória predição de bloco
Inter- Memória predição de quadro
Início
Calcular primeiro custo do primeiro processo de codificação de bloco o qual não inclui a etapa de particionar o bloco em uma pluralidade de partições
Calcula segundo custo do segundo processo de codificação de bloco o qual inclui uma etapa de particionar o bloco primeiro em duas menores partições
Determinar se Sim Não o primeiro custo é mais baixo do que o segundo custo
Selecionar o processo de codificação de Selecionar processo de codificação de bloco do segundo conjunto de processos bloco do primeiro conjunto de processos de de codificação de bloco os quais não codificação de bloco o qual inclui pelo menos incluem o terceiro processo de codificação o terceiro processo de codificação de bloco de bloco que inclui a etapa de particionar o bloco primeiro em três menores partições
Codificar o bloco utilizando o processo de codificação de bloco selecionado
Fim
Petição 870200103206, de 17/08/2020, pág. 117/147 Calcular primeiro custo de codificação Calcular segundo custo do segundo Quando é determinado processo de codificação de bloco Segundo conjunto de processos de codificação de de bloco que o primeiro custo bloco exclui o terceiro processo de codificação de que inclui a etapa de particionar o é mais baixo que todos bloco primeiro em duas menores bloco que inclui uma etapa de particionar o bloco os segundos custos primeiro em três menores partições partições 18/43
Primeiro conjunto de processos de codificação de bloco
Segundo conjunto de processos de codificação de bloco (subconjunto do primeiro conjunto de processos de codificação de bloco)
Petição 870200103206, de 17/08/2020, pág. 118/147 19/43
Calcular primeiro Calcular segundo custo do Segundo conjunto de processos de codificação de custo de segundo processo de Quando é determinado bloco exclui o terceiro processo de codificação de codificação codificação de bloco que que o primeiro custo é bloco que inclui uma etapa de particionar o bloco de bloco inclui a etapa de particionar mais baixo que todos primeiro em três menores partições o bloco primeiro em duas os segundos custos menores partições
Início
Calcular primeiro custo do primeiro processo de codificação de bloco que inclui a etapa de particionar o bloco primeiro em duas menores partições somente
Calcular o segundo custo do segundo processo de codificação de bloco que inclui a etapa de particionar o bloco primeiro em duas menores partições e etapas subsequentes de particionar em três ou mais partições
Determinar se o Sim primeiro custo é mais baixo do que Não o segundo custo
Selecionar processo de codificação de bloco Selecionar processo de codificação de bloco do segundo conjunto de processos de do primeiro conjunto de processos de codificação de bloco os quais não incluem o codificação de bloco o qual inclui pelo menos terceiro processo de codificação de bloco o terceiro processo de codificação de bloco que inclui a etapa de particionar o bloco primeiro em três menores partições
Codificar o bloco utilizando o processo de codificação de bloco selecionado
Fim
Petição 870200103206, de 17/08/2020, pág. 120/147 Calcular primeiro Calcular segundo custo do segundo Quando é determinado Segundo conjunto de processos de codificação de custo de codificação processo de codificação de bloco que o primeiro custo bloco exclui o terceiro processo de codificação de de bloco que tem que inclui a etapa de particionar o é mais baixo que todos bloco que inclui uma etapa de particionar o bloco somente duas bloco primeiro em duas menores os segundos custos primeiro em três menores partições partições partições 21/43
Primeiro conjunto de processos de codificação de bloco
Segundo conjunto de processos de codificação de bloco (subconjunto do primeiro conjunto de processos de codificação de bloco)
Início
Calcular pelo menos um primeiro gradiente de bloco retangular em uma primeira direção paralela ao lado mais longo do bloco retangular, onde o cálculo de gradiente inclui pelo menos mudança direcional em intensidade ou cor
Calcular pelo menos um segundo gradiente de bloco retangular na segunda direção a qual é diferente da primeira direção
Determinar Sim Não se o primeiro gradiente é maior do que o segundo gradiente
Selecionar o processo de codificação de bloco Selecionar o processo de codificação de bloco do segundo conjunto de processos de codificação do segundo conjunto de processos de de bloco o qual não inclui pelo menos o primeiro codificação de bloco o qual não inclui pelo processo de codificação de bloco que inclui a menos o primeiro processo de codificação de etapa de particionar o bloco primeiro em três bloco que inclui a etapa de particionar o bloco menores partições na primeira direção primeiro em três menores partições na primeira direção
Codificar o bloco utilizando o processo de codificação de bloco selecionado
Fim
Petição 870200103206, de 17/08/2020, pág. 122/147 23/43
Quando o gradiente vertical é maior do que o gradiente horizontal
Altura de bloco é Segundo conjunto de processos de codificação exclui o maior do que sua primeiro processo de codificação de bloco que inclui a etapa largura de particionar o bloco primeiro em três menores partições na direção vertical
Petição 870200103206, de 17/08/2020, pág. 123/147 24/43
Quando o gradiente horizontal é maior do que o gradiente vertical Largura de bloco é maior do que Segundo conjunto de processos de codificação sua altura exclui o primeiro processo de codificação de bloco que inclui a etapa de particionar o bloco primeiro em três menores partições na direção horizontal
Petição 870200103206, de 17/08/2020, pág. 124/147 Média 25/43
Média
Média
Média
Gradiente horizontal = média
Por exemplo, h1_12=diferença absoluta entre 1º valor de pixel (p1) e 2º valor de pixel (p2), isto é, abs(p1, p2)
Petição 870200103206, de 17/08/2020, pág. 125/147 Média
Média 26/43
Média
Média
Gradiente horizontal = média Por exemplo, h1_123=2p2-p1-p3 (filtro 1d de passagem alta de 3 toques)
Início
Determinar se a etapa de particionar um Sim bloco no primeiro processo de Não codificação de bloco gera uma partição que tem metade do tamanho do bloco
Calcular pelo menos o gradiente do bloco Selecionar processo de codificação de bloco do primeiro conjunto de processos de codificação de bloco
Gerar segundo conjunto de processos de codificação de bloco do primeiro conjunto de processos de codificação de bloco excluindo pelo menos o processo de codificação de bloco que utiliza informações de gradiente, onde o processo de codificação do bloco excluído inclui pelo menos uma etapa de particionar o bloco primeiro em três menores partições
Selecionar processo de codificação de bloco do segundo conjunto de processos de codificação de bloco
Codificar bloco utilizando processo de codificação bloco selecionado
Fim
Petição 870200103206, de 17/08/2020, pág. 127/147 Quando o gradiente horizontal do bloco é maior do que seu gradiente vertical
Segundo conjunto de processos de codificação exclui primeiro processo de codificação de bloco que inclui a etapa de particionar o bloco primeiro em 28/43 três menores partições na direção horizontal
Quando o gradiente vertical do bloco é maior do que seu gradiente horizontal Segundo conjunto de processos de codificação exclui primeiro processo de codificação de bloco que inclui a etapa de particionar o bloco primeiro em três menores partições na direção vertical Processo de codificação de bloco gera área de subpartição a qual é metade do bloco
Início
Identificar primeiro lado do bloco como lado mais longo entre dois lados do bloco e identificar segundo lado do bloco como lado que não é o lado mais longo do bloco
Quando o bloco deve ser particionado em pelo menos três menores partições, determinar Sim se dividir o bloco na direção paralela ao Não primeiro lado gera pelo menos uma partição que tem um tamanho não suportado no processo de predição ou processo de transformada
Escrever o parâmetro de direção de divisão no fluxo de bits
Dividir o bloco em menores partições Dividir bloco em menores partições na direção indicada pelo parâmetro na direção paralela ao segundo de direção de divisão
Codificar partição ou subpartição de partição
Fim
Quando o bloco deve ser dividido em três sub-blocos Como a transformada de Possível estrutura 16x2 não é suportada, de partição para dividir o bloco na direção dividir o bloco em horizontal não é permitido três sub-blocos Bloco corrente (bloco de 16x8)
Dividir o bloco na direção vertical
Quando o bloco deve ser dividido em quatro sub-blocos Como a transformada de Possível estrutura 16x2 não é suportada, de partição para dividir o bloco na direção dividir o bloco em horizontal não é permitido quatro sub-blocos
Bloco corrente (bloco de 16x8)
Dividir o bloco na direção vertical
Início
Determinar se dividir um bloco em três menores partições em cada direção Sim da pluralidade de direções gera pelo Não menos uma partição que tem um tamanho não suportado no processo de predição ou um processo de transformada
Escrever, no fluxo de bits, parâmetro de direção de divisão que indica o número de menores partições a serem obtidas dividindo o bloco
Dividir o bloco em duas partições em uma direção Dividir o bloco em diversas partições em uma direção de acordo com o parâmetro
Codificar partição ou subpartição de partição
Fim
Selecionar estrutura de partição de possíveis estruturas de partição Possíveis estruturas de partição para dividir o bloco de 16x16 em sub-blocos
Bloco corrente (bloco de 16x16)
Como as transformadas de 8x2 e 2x8 não são suportadas, dividir o bloco de 8x8 em três sub-blocos não é permitido Selecionar estrutura de partição de possíveis estruturas de partição Possíveis estruturas de partição para dividir o bloco de 8x8 em sub-blocos Bloco corrente (bloco de 8x8)
Início
Dividir bloco em primeiro, segundo, e terceiro sub-blocos na primeira direção onde o segundo sub-bloco é maior em tamanho do que o primeiro e terceiro sub-blocos
Quando o segundo sub-bloco deve ser dividido em uma pluralidade de partições, escrever o parâmetro de modo de divisão no fluxo de bits para indicar o número de partições
Determinar Sim se o parâmetro de modo de Não divisão indica que o número de partições é dois
Escrever parâmetro de direção de divisão no fluxo de bits
Dividir o segundo sub-bloco em duas Dividir segundo sub-bloco em pelo menos partições na segunda direção três partições na direção indicada pelo diferente da primeira direção parâmetro de direção de divisão
Codificar a partição ou subpartição de partição
Fim
Um modo de dividir um bloco de 32x32 em sub-blocos Adicionalmente dividir cada um dos sub-blocos de 16x32 em duas
Petição 870200103206, de 17/08/2020, pág. 133/147 menores partições Dividir um bloco de 32x32 em dois sub-blocos
Estrutura de partição repetida ocorre Bloco corrente de diferentes modos (bloco de 32x32) de divisão
Outro modo de dividir um bloco de 32x32 em sub-blocos 34/43
Dividir um bloco Adicionalmente dividir de 32x32 em Dividir o maior sub-bloco o maior sub-bloco em Possível estrutura de três sub-blocos na direção vertical não é duas partições partição para dividir permitido devido à estrutura de partição repetida maior sub-bloco em duas partições
Bloco corrente (bloco de 32x32) Maior sub-bloco
Dividir o maior sub-bloco na direção horizontal
Início
Dividir o bloco em primeiro, segundo, e terceiro sub-blocos na primeira direção
Determinar se cada do primeiro e segundo Sim sub-blocos é adicionalmente Não dividido em duas partições em uma direção diferente da primeira direção
Escrever o parâmetro de direção de divisão no fluxo de bits
Quando o segundo sub-blocos deve ser Dividir terceiro sub-bloco em duas dividido em duas partições dividir o terceiro partições na direção indicada pelo sub-bloco na mesma direção que a primeira direção parâmetro de direção de divisão
Codificar partição ou subpartição de partição
Fim
Um modo de dividir um bloco de 64x64 em sub-blocos
Adicionalmente dividir cada um dos
Petição 870200103206, de 17/08/2020, pág. 135/147 Dividir um sub-blocos de 16x32 em três bloco de menores partições 64x64 em dois sub-blocos
Estrutura de partição repetida Bloco corrente ocorre de diferentes (bloco de 64x64) modos de divisão
Outro modo de dividir um bloco de 64x64 em sub-blocos 36/43
Cada um de três sub-blocos é dividido em duas partições e cada um dos primeiros Dividir um segundos sub-blocos é dividido na direção bloco de vertical 64x64 em Possível três Dividir o maior sub-bloco estrutura de sub-blocos na direção vertical não é partição para permitido devido à estrutura dividir terceiro de partição repetida sub-bloco em duas partições
Bloco corrente (bloco de 64x64) Primeiros dois sub-blocos Terceiro sub-bloco
Dividir terceiro sub-bloco na direção horizontal
Divisão Divisão vertical horizontal Modo de divisão
Primeiro modo Razão de divisão de duas partições 1:1
Segundo modo Razão de divisão de duas partições 1:3
Terceiro modo Razão de divisão de duas partições 3:1
Quarto modo Razão de divisão de três partições 1:2:1
Direção de divisão
Dados de fatia
Unidade de árvore de codificação
Parâmetro Parâmetro Parâmetro Parâmetro Parâmetro Parâmetro de modo de de direção de de modo de de direção de de modo de de direção de divisão divisão divisão divisão divisão divisão
Parâmetro de Parâmetro de Parâmetro de partição partição partição
Avião
Petição 870200103206, de 17/08/2020, pág. 137/147 Satélite
Servidor de fluxo
Computador 38/43
Dispositivo de jogos
Rede de comuni- cações ex104 Câmera
Utensílio doméstico
Provedor de serviço Smartphone de internet
Camada de base melhoramento Camada de temporal Camada
Petição 870200103206, de 17/08/2020, pág. 139/147 Unidade de acesso Camada temporal Fatia
Camada de melhoramento 40/43
Camada de base
Controlador Display Circuito de fonte Para cada de display de alimentação componente
Controlador Transmissor Modulador / principal / receptor demodulador
Memória Fenda
Multiplexador / demultiplexador Interface Processador de de câmera Câmera sinal de vídeo Unidade de entrada de áudio Controlador Processador de entrada Interface de Unidade de de sinal de interface usuário de áudio de usuário saída de áudio
BR112020016755-0A 2018-03-05 2019-03-04 Codificador, decodificador, método de codificação e método de decodificação BR112020016755A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862638620P 2018-03-05 2018-03-05
US62/638,620 2018-03-05
PCT/JP2019/008468 WO2019172203A1 (ja) 2018-03-05 2019-03-04 符号化装置、復号装置、符号化方法及び復号方法

Publications (1)

Publication Number Publication Date
BR112020016755A2 true BR112020016755A2 (pt) 2020-12-15

Family

ID=67847292

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020016755-0A BR112020016755A2 (pt) 2018-03-05 2019-03-04 Codificador, decodificador, método de codificação e método de decodificação

Country Status (10)

Country Link
US (3) US11303895B2 (pt)
EP (2) EP4351147A3 (pt)
JP (3) JP6810827B2 (pt)
KR (2) KR20210005326A (pt)
CN (4) CN114697651B (pt)
BR (1) BR112020016755A2 (pt)
CA (3) CA3093204C (pt)
MX (5) MX2020009109A (pt)
TW (3) TWI816578B (pt)
WO (1) WO2019172203A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10735730B2 (en) * 2018-03-07 2020-08-04 Tencent America LLC Flexible tree structure

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5263951B2 (ja) * 2008-11-11 2013-08-14 日本電気株式会社 Ofdm受信装置、リファレンスシンボルの補間方法および移動端末ならびにプログラム
CN102484699B (zh) 2009-06-23 2015-11-25 法国电信 对图像进行编码和解码的方法、用于编码和解码的对应装置
PL2991353T3 (pl) 2009-10-01 2017-09-29 Sk Telecom Co., Ltd. Sposób i urządzenie do kodowania/dekodowania obrazu za pomocą warstwy rozdziału
WO2011121715A1 (ja) * 2010-03-30 2011-10-06 株式会社 東芝 画像復号化方法
CN105704490B (zh) * 2010-04-16 2018-07-31 Sk电信有限公司 视频编码设备
PL2636218T3 (pl) * 2010-11-04 2022-01-03 Ge Video Compression, Llc Kodowanie obrazu wspomagające scalanie bloków i tryb przeskoku
US10425142B2 (en) * 2015-11-23 2019-09-24 Lg Electronics Inc. Method for transmitting and receiving channel state information in wireless communication system, and apparatus therefor
CN112954351A (zh) 2015-11-24 2021-06-11 三星电子株式会社 视频解码装置和视频编码装置
US20170244964A1 (en) * 2016-02-23 2017-08-24 Mediatek Inc. Method and Apparatus of Flexible Block Partition for Video Coding
MX2018014491A (es) * 2016-05-25 2019-08-14 Arris Entpr Llc Metodo de particionamiento de bloque general.
MX2018014493A (es) * 2016-05-25 2019-08-12 Arris Entpr Llc Particionamiento binario, ternario, cuaternario para jvet.
GB2557430B (en) * 2016-10-12 2020-01-15 Mediatek Inc Methods and apparatuses of constrained multi-type-tree block partition for video coding
US10779004B2 (en) * 2016-10-12 2020-09-15 Mediatek Inc. Methods and apparatuses of constrained multi-type-tree block partition for video coding
JP7012025B2 (ja) * 2016-12-16 2022-01-27 シャープ株式会社 画像復号装置
CN116156161A (zh) * 2017-01-04 2023-05-23 三星电子株式会社 视频解码方法和设备以及视频编码方法和设备
CN116684601A (zh) 2017-03-31 2023-09-01 松下电器(美国)知识产权公司 图像编码装置、图像解码装置及存储介质
CN109151468B (zh) * 2017-06-28 2020-12-08 华为技术有限公司 一种图像数据的编码、解码方法及装置

Also Published As

Publication number Publication date
CN114697652A (zh) 2022-07-01
US11792396B2 (en) 2023-10-17
EP3748968A1 (en) 2020-12-09
US11303895B2 (en) 2022-04-12
US20220201297A1 (en) 2022-06-23
US20230421762A1 (en) 2023-12-28
CA3093204C (en) 2022-05-24
CA3113521A1 (en) 2019-09-12
MX2022006682A (es) 2022-07-11
JP2021044843A (ja) 2021-03-18
EP4351147A3 (en) 2024-04-17
EP4351147A2 (en) 2024-04-10
MX2022006680A (es) 2022-07-11
CN114697652B (zh) 2023-11-14
KR102202553B1 (ko) 2021-01-13
EP3748968A4 (en) 2021-02-24
MX2022006679A (es) 2022-07-11
CN114697653A (zh) 2022-07-01
JP7213227B2 (ja) 2023-01-26
JP6810827B2 (ja) 2021-01-06
CA3221606A1 (en) 2019-09-12
TWI816578B (zh) 2023-09-21
WO2019172203A1 (ja) 2019-09-12
CA3093204A1 (en) 2019-09-12
EP3748968B1 (en) 2024-05-01
CN114697651A (zh) 2022-07-01
US20200404271A1 (en) 2020-12-24
CN114697651B (zh) 2023-11-14
CN111801942A (zh) 2020-10-20
KR20210005326A (ko) 2021-01-13
JPWO2019172203A1 (ja) 2020-12-03
CA3113521C (en) 2024-01-16
TWI783129B (zh) 2022-11-11
CN114697653B (zh) 2023-11-14
TW202308381A (zh) 2023-02-16
TW202404353A (zh) 2024-01-16
MX2020009109A (es) 2022-06-03
KR20200105726A (ko) 2020-09-08
TW201939957A (zh) 2019-10-01
MX2022006678A (es) 2022-07-11
CN111801942B (zh) 2022-04-08
JP2023029657A (ja) 2023-03-03

Similar Documents

Publication Publication Date Title
AU2018320382B2 (en) Image encoder, image decoder, image encoding method, and image 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
EP3544300A1 (en) Coding device, decoding device, coding method, and decoding method
EP3920535A1 (en) Splitting parameters in an image encoder and an image encoding method
BR112020002205A2 (pt) codificador de imagem, decodificador de imagem, método de codificação de imagem e método de decodificação de imagem
WO2020017423A1 (en) Motion vector prediction for video coding
JP2021073818A (ja) 画像復号装置及び復号方法
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
BR112020000876A2 (pt) dispositivo codificador, dispositivo decodificador, método de codificação, e método de decodificação
BR112020022773A2 (pt) codificador, 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
BR112020001579A2 (pt) codificador, decodificador, método de codificação, método de decodificação
BR112020025664A2 (pt) dispositivo codificador, dispositivo decodificador, método de codificação e método de decodificação
BR112021014711A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
BR112020000219A2 (pt) codificação, método de codificação, decodificador e método de decodificação
BR112020021718A2 (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
WO2019172202A1 (ja) 符号化装置及び符号化方法
BR112020019800A2 (pt) Codificador, decodificador, método de codificação e método de decodificação
CA3100839C (en) Encoder, decoder, encoding method, decoding method, and picture compression program

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B154 Notification of filing of divisional application [chapter 15.50 patent gazette]

Free format text: O PEDIDO FOI DIVIDIDO NO BR122023027448-2 PROTOCOLO 870230114073 EM 26/12/2023 15:44.O PEDIDO FOI DIVIDIDO NO BR122023027466-0 PROTOCOLO 870230114129 EM 26/12/2023 16:44.O PEDIDO FOI DIVIDIDO NO BR122023027486-5 PROTOCOLO 870230114184 EM 26/12/2023 17:38.