BR112013000963B1 - métodos de codificação e decodificação de vídeo e codificador e decodificador de vídeo - Google Patents

métodos de codificação e decodificação de vídeo e codificador e decodificador de vídeo Download PDF

Info

Publication number
BR112013000963B1
BR112013000963B1 BR112013000963A BR112013000963A BR112013000963B1 BR 112013000963 B1 BR112013000963 B1 BR 112013000963B1 BR 112013000963 A BR112013000963 A BR 112013000963A BR 112013000963 A BR112013000963 A BR 112013000963A BR 112013000963 B1 BR112013000963 B1 BR 112013000963B1
Authority
BR
Brazil
Prior art keywords
vertical
horizontal
border pixels
matrix
intraprediction
Prior art date
Application number
BR112013000963A
Other languages
English (en)
Other versions
BR112013000963A2 (pt
Inventor
Jan Bossen Frank
Keng Tan Thiow
Original Assignee
Ntt Docomo Inc
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 Ntt Docomo Inc filed Critical Ntt Docomo Inc
Publication of BR112013000963A2 publication Critical patent/BR112013000963A2/pt
Publication of BR112013000963B1 publication Critical patent/BR112013000963B1/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

intraprevisão de baixa complexidade para codificação de vídeo. a presente invenção fornece um processo de intraprevisão exclusivo que melhora a eficiência de codificação de vídeo. h.264/avc usa pixels de referência em um delimitador horizontal localizado imediatamente acima de um bloco-alvo a ser previsto e pixels de referência em um delimitador vertical localizado imediatamente à esquerda do bloco-alvo. na presente invenção, pelo menos uma dentre uma matriz de pixels do delimitador horizontal e uma matriz de pixels do delimitador vertical é recuperada. em seguida, os pixels recuperados são adicionados a outros pixels do delimitador para estender a matriz do mesmo. é realizada a intraprevisão, baseada unicamente na matriz estendida de pixels do delimitador.

Description

MÉTODOS DE CODIFICAÇÃO E DECODIFICAÇÃO DE VÍDEO E CODIFICADOR E DECODIFICADOR DE VÍDEO
Antecedentes da invenção 1. Texto do campo técnico [001] A presente invenção refere-se à codificação de vídeo e, em particular, a predição intraquadro na qual um bloco de amostras é predito utilizando pixels codificados e reconstruídos anteriormente a partir do mesmo quadro de vídeo. 2. Informação anterior [002] O vídeo digital requer uma grande quantidade de dados para representar cada quadro de uma sequência de vídeo (por exemplo, uma série de quadros) sem compressão. Não é viável para a maioria das aplicações transmitir vídeo digital sem compressão por redes de computadores devido às limitações de largura de banda. Além disso, o vídeo digital sem compressão requer grande quantidade de espaço de armazenamento. O vídeo digital é normalmente codificado de algum modo que reduza as exigências de armazenamento e de largura de banda.
[003] Uma das técnicas para codificação de vídeo digital é a predição interquadro ou interpredição. A interpredição explora redundâncias temporais entre quadros diferentes. Quadros de vídeo temporalmente adjacentes incluem, comumente, blocos de pixels, que permanecem substancialmente os mesmos. Durante o processo de codificação, um vetor de movimento interrelaciona o movimento de um bloco de pixels em um quadro com um bloco de pixels semelhantes em outro quadro. Consequentemente, o sistema não é exigido para codificar o bloco de pixels duas vezes. Em vez disso, o sistema codifica o bloco de pixels uma vez e estabelece um vetor de movimento para predizer o outro bloco de pixels.
[004] Outra técnica para codificação de vídeo digital é a predição intraquadro ou intrapredição. A intrapredição codifica um quadro ou uma porção do mesmo, sem referência aos pixels em outros quadros. A intrapredição explora redundâncias espaciais entre blocos de pixels dentro de um quadro. Como blocos de pixels espacialmente adjacentes têm, geralmente, atributos semelhantes, a eficiência do processo de codificação é melhorada por meio da referência à correlação espacial entre blocos adjacentes. Essa correlação pode ser explorada por meio da predição de um bloco-alvo com base nos modos de predição utilizados em blocos adjacentes.
Sumário da invenção [005] A presente invenção proporciona um processo único de intrapredição que melhora a eficiência da codificação de vídeo. H.264/AVC utiliza pixels de referência em uma fronteira horizontal localizada imediatamente acima de um bloco-alvo a ser predito e pixels de referência em uma fronteira vertical localizada imediatamente à esquerda do bloco-alvo. Na presente invenção, pelo menos alguns pixels de uma matriz de pixels de fronteira horizontal ou de uma matriz de pixels de fronteira vertical são recuperados. Em seguida, os pixels recuperados são adicionados aos pixels da outra fronteira para estender a matriz do mesmo. A intrapredição é realizada, baseada apenas na matriz estendida dos pixels de fronteira. Em uma modalidade da presente invenção, pelo menos alguns dos pixels de fronteira vertical são recuperados e adicionados aos pixels de fronteira horizontal para estender a matriz do mesmo.
[006] A presente invenção elimina o processo de decisão relacionado à escolha de fronteira horizontal ou vertical do qual os pixels de referência são recuperados. A presente invenção também elimina o processo recorrente de cálculo de uma posição de fronteira vertical que faz interseção com uma direção da predição, em que o processo de cálculo recorrente inclui, normalmente, uma operação de divisão. A eliminação desses processos permite que o processo de intrapredição seja implementado em arquiteturas SIMD (Single-lnstruction Multiple Data, processamento de dados múltiplos a partir de uma única instrução), melhorando dessa forma a eficiência computacional da codificação de vídeo.
[007] Em uma modalidade de acordo com a presente invenção, pelo menos alguns pixels entre os pixels de fronteira vertical são recuperados, utilizando-se um identificador de pixel vertical, expresso por em que tamanho representa o tamanho de um bloco-alvo a ser predito, ângulo representa uma direção de predição e col. é um contador que é decrescido de 1 unidade a partir de -1 até o ângulo. Os pixels recuperados são adicionados aos pixels horizontais em um local identificado por um identificador de pixels horizontal [col.].
[008] Em outra modalidade, na recuperação de pelo menos alguns dos pixels de fronteira vertical, Âng. Inv. é calculado em em que N é uma potência inteira de 2. Em seguida, pelo menos alguns pixels dentre os pixels de fronteira vertical são recuperados utilizando-se um identificador de pixel vertical que é expresso por [col x Âng. Inv. >> log2 N]. Os pixels recuperados são adicionados aos pixels horizontais em um local identificado por um identificador de pixel horizontal [col].
[009] Em outra modalidade, Âng. Inv. é obtido a partir de uma tabela de consulta, a qual relaciona os valores de Âng. Inv. em relação aos valores do ângulo.
[0010] Em outra modalidade, um pixel é identificado entre os pixels de fronteira vertical utilizando um identificador de pixel vertical [linha], em que linha é um contador que é incrementado em 1 unidade de 0 até o tamanho. O pixel recuperado é adicionado aos pixels de fronteira horizontal em um local identificado por um identificador de pixel horizontal [int + 1], em que int é a representação de um número inteiro de uma posição de um pixel em interseção com uma direção de predição.
[0011] A presente invenção também proporciona um codificador e um decodificador que implementam uma operação de intrapredição na qual pelo menos alguns dos pixels de uma matriz de pixels de fronteira horizontal ou de uma matriz de pixels de fronteira vertical são recuperados. Em seguida, os pixels recuperados são adicionados aos pixels da outra fronteira para estender a matriz do mesmo. A intrapredição é realizada com base unicamente na matriz estendida de pixels de fronteira.
Breve descrição dos desenhos [0012] A FIG. 1 é um diagrama de blocos que mostra um exemplo de arquitetura de hardware em que a presente invenção pode ser implementada.
[0013] A FIG.2 é um diagrama de blocos que mostra uma vista geral de um codificador de vídeo para o qual a presente invenção pode ser aplicada.
[0014] A FIG. 3 é um diagrama de blocos que mostra uma vista geral de um decodificador de vídeo para o qual a presente invenção pode ser aplicada.
[0015] A FIG. 4 é um diagrama de blocos que mostra os módulos funcionais de um codificador de acordo com uma modalidade da presente invenção.
[0016] A FIG. 5 é um fluxograma que mostra um processo de intrapredição realizado por um módulo de intrapredição da modalidade da presente invenção.
[0017] A FIG. 6 é um diagrama de blocos que mostra os módulos funcionais de um decodificador de acordo com uma modalidade da presente invenção.
[0018] A FIG. 7 é um diagrama que mostra as direções de predição, ilustrando os modos de intrapredição_4x4 aceitos no H.264/AVC.
[0019] A FIG. 8 é um diagrama que mostra as direções de predição propostas no Documento N° JCT-VC A119.
[0020] A FIG. 9 é um fluxograma que mostra o processo proposto em JCT-VC A119, correspondente à geração de um bloco predito em uma das direções de predição mostradas na FIG. 7.
[0021] A FIG. 10 é um fluxograma que mostra o processo de intrapredição de baixa complexidade realizada de acordo com uma modalidade da presente invenção.
[0022] A FIG. 11A é uma vista esquemática que mostra um bloco de predição e matrizes de pixels de fronteira horizontal e vertical.
[0023] A FIG.11B é uma vista esquemática que mostra uma matriz de pixels de fronteira horizontal estendida com pixels de fronteira vertical.
[0024] A FIG. 12 é um fluxograma que mostra o processo de extensão de uma matriz de pixels de fronteira horizontal realizada de acordo com uma modalidade da presente invenção.
[0025] A FIG. 13 é um fluxograma que mostra outra modalidade da extensão de uma matriz de pixels de fronteira horizontais.
[0026] A FIG. 14 é um fluxograma que mostra o processo de intrapredição de baixa complexidade realizada de acordo com outra modalidade da presente invenção.
Descrição detalhada dos desenhos e das modalidades preferidas atualmente [0027] A FIG. 1 mostra como exemplo a arquitetura de hardware de um computador 100 no qual a presente invenção pode ser implementada. Favor observar que a arquitetura de hardware mostrado na FIG. 1 pode ser comum tanto em um codificador de vídeo quanto em um decodificador de vídeo que implementam as modalidades da presente invenção. O computador 100 inclui um processador 101, a memória 102, o dispositivo de armazenamento 105 e um ou mais dispositivos de entrada e/ou saída (E/S) 106 (ou periféricos) que estão acoplados em comunicação por meio de uma interface local 107. A interface local 105 pode ser, por exemplo, dentre outros, um ou mais barramentos ou outras conexões com ou sem fio, conforme conhecido na técnica.
[0028] O processador 101 é um dispositivo de hardware para executar o software, particularmente o armazenado na memória 102. O processador 101 pode ser qualquer processador personalizado ou comercialmente disponível, uma unidade de processamento central (CPU), um processador auxiliar dentre vários processadores associados ao computador 100, um microprocessador com base em semicondutor (sob a forma de um microchip ou grupo de chips), ou geralmente qualquer dispositivo para a execução de instruções do software.
[0029] A memória 102 compreende uma mídia que pode ser lida por computador e que pode incluir qualquer elemento de memória volátil ou uma combinação desses elementos (por exemplo, memória de acesso aleatório (RAM, como DRAM, SRAM, SDRAM, etc.)), e os elementos de memória não volátil (por exemplo, ROM, disco rígido, unidade de fita, CD-ROM, etc.) Além disso, a memória 102 pode incorporar meios de armazenamento eletrônicos, magnéticos, ópticos elou outros tipos de meios de armazenamento. Uma mídia que pode ser lida por computador pode ser qualquer meio que possa armazenar, comunicar, disseminar ou transportar o programa para uso pelo sistema, aparelho ou dispositivo de execução de instruções ou em conexão com os mesmos. Favor observar que a memória 102 pode ter uma arquitetura distribuída, em que vários componentes estão situados distantes uns dos outros, mas podem ser acessados pelo processador 101.
[0030] O software 103 na memória 102 pode incluir um ou mais programas separados, cada um dos quais contendo uma lista ordenada de instruções executáveis para implementar funções lógicas do computador 100, conforme descrito abaixo. No exemplo da FIG. 1, o software 103 na memória 102 define a codificação de vídeo do computador 100 ou o recurso de decodificação de vídeo de acordo com a presente invenção. Além disso, embora não seja necessário, é possível que a memória 102 contenha um sistema operacional (S/O) 104. O sistema operacional 104 controla, essencialmente, a execução de programas de computador e proporciona programação, controle de entrada e saída, gerenciamento de dados e arquivos, gerenciamento de memória e controle de comunicação e serviços relacionados.
[0031] O dispositivo de armazenamento 105 do computador 100 pode ser um de muitos tipos diferentes de dispositivos de armazenamento, inclusive um dispositivo de armazenamento fixo ou portátil. Como exemplo, o dispositivo de armazenamento 105 pode ser fita magnética, disco, memória flash, memória volátil ou um dispositivo de armazenamento diferente. Além disso, o dispositivo de armazenamento 105 pode ser um cartão de memória digital seguro ou qualquer outro dispositivo de armazenamento removível 105.
[0032] Os dispositivos de E/S 106 podem incluir dispositivos de entrada, por exemplo, dentre outros, uma tela de seleção por toque, um teclado, um mouse, um scanner, um microfone ou outro dispositivo de entrada. Além disso, os dispositivos de E/S 106 também podem incluir dispositivos de saída, por exemplo, dentre outros, um monitor ou outros dispositivos de saída. Os dispositivos de E/S 106 podem ainda incluir dispositivos que se comunicam por meio de entradas e saídas, por exemplo, dentre outros, um modulador/demodulador (modem para acessar outro dispositivo, sistema ou rede), uma frequência de rádio (RF), um transceptor sem fio ou de outro tipo, uma interface telefônica, uma ponte, um roteador ou outros dispositivos que funcionam como entrada e saída.
[0033] Como é de conhecimento daqueles com habilidades técnicas comuns, a compressão de vídeo é obtida por meio da remoção de informações redundantes em uma sequência de vídeo. Existem muitos padrões de codificação de vídeo diferentes, como, por exemplo, MPEG-1, MPEG-2, MPEG-4, H.261, H.263 e H.264/AVC. Deve-se observar que a presente invenção não deve ser limitada no caso de aplicação de qualquer padrão de codificação de vídeo específico. No entanto, a descrição a seguir da presente invenção é fornecida tendo como exemplo o padrão H.264/AVC, o qual é incorporado neste documento para referência. O H.264/AVC é o padrão mais recente de codificação de vídeo e alcança uma melhoria de desempenho significativa em relação aos padrões anteriores de codificação, como MPEG-1, MPEG-2, H.261 e H.263.
[0034] Em H.264/AVC, cada quadro ou imagem de um vídeo pode ser dividido em vários pedaços. Os pedaços são, então, divididos em blocos de 16x16 pixels denominados macroblocos, os quais podem ser divididos posteriormente em blocos de 8x16, 16x8, 8x8, 4x8, 8x4 e 4x4 pixels. Existem cinco tipos de pedaços aceitos pelo H.264/AVC. Nos pedaços I, todos os macroblocos são codificados utilizando-se a intrapredição. Nos pedaços P, os macroblocos podem ser codificados utilizando-se a intra ou interpredição. Os pedaços P permitem que seja usado apenas um sinal de predição compensada por movimento (Motion Compensated Prediction- MCP), por macrobloco. Nos pedaços B, os macroblocos podem ser codificados utilizando-se a intra ou interpredição. Dois sinais MCP podem ser utilizados por predição. Os pedaços SP permitem que os pedaços P sejam trocados entre transmissões de vídeo diferentes de forma eficiente. Um pedaço SI corresponde exatamente a um pedaço SP para acesso aleatório ou recuperação depois de erro utilizando apenas a intrapredição.
[0035] A FIG. 2 mostra uma vista geral de um codificador de vídeo para o qual a presente invenção pode ser aplicada. Os blocos mostrados na figura representam os módulos funcionais realizados pelo processador 101 que executa o software 103 na memória 102. Uma imagem do quadro de vídeo 200 é alimentada em um codificador de vídeo 201. O codificador de vídeo trata a imagem 200 em unidades de macroblocos 200A. Cada macrobloco contém vários pixels da imagem 200. Em cada macrobloco é realizada uma transformada em coeficientes de transformada, seguida de uma quantização em níveis de coeficientes de transformada. Além disso, a intra ou interpredição é utilizada para não executar as etapas de codificação diretamente nos dados do pixel, mas sim nas diferenças do mesmo para os valores de pixel preditos, obtendo dessa forma valores pequenos que são compactados mais facilmente.
[0036] Para cada pedaço, o codificador 201 gera um número de elementos de sintaxe que formam uma versão codificada dos macroblocos do respectivo pedaço. Todos os elementos de dados residuais nos elementos de sintaxe, os quais estão relacionados com a codificação dos coeficientes de transformada, como os níveis dos coeficientes de transformada ou um mapa de significados que indica os níveis dos coeficientes de transformada ignorados, são chamados de elementos de sintaxe de dados residuais. Além desses elementos de sintaxe de dados residuais, os elementos de sintaxe gerados pelo codificador 201 contêm elementos de sintaxe de informações de controle que contêm informações de controle sobre a forma como cada macrobloco codificado foi codificado e tem de ser decodificado, respectivamente. Em outras palavras, os elementos de sintaxe podem ser divididos em duas categorias. A primeira categoria, a de elementos de sintaxe de informações de controle, contém os elementos relacionados a um tipo de macrobloco, de submacrobloco e as informações sobre os modos de predição dos tipos espaciais e temporais, bem como informações de controle baseadas no pedaço e no macrobloco, por exemplo. Na segunda categoria, todos os elementos de dados residuais, como um mapa de significados que indica os locais de todos os coeficientes significativos dentro de um bloco de coeficientes de transformada quantizados e os valores dos coeficientes significativos, os quais são indicados em unidades de níveis correspondentes às etapas de quantização, são combinados e se tornam elementos de sintaxe de dados residuais.
[0037] O codificador 201 compreende um codificador de entropia que codifica os elementos de sintaxe e gera palavras-código aritméticas para cada pedaço. Ao gerar as palavras-código aritméticas para um pedaço, o codificador de entropia explora as dependências estatísticas entre os valores de dados de elementos de sintaxe no fluxo de bits do sinal de vídeo. O codificador 201 gera um sinal de vídeo codificado de um pedaço de imagem 200 para um decodificador de vídeo 301 mostrado na FIG. 3.
[0038] A FIG. 3 mostra uma vista geral de um decodificador de vídeo ao qual a presente invenção pode ser aplicada. Da mesma forma, os blocos mostrados na figura representam os módulos funcionais realizados pelo processador 101 que executa o software 103 na memória 102. O decodificador de vídeo 301 recebe o sinal de vídeo codificado e, primeiramente, decodifica por entropia o sinal de volta para os elementos de sintaxe. O decodificador 301 utiliza os elementos de sintaxe para reconstruir, macrobloco por macrobloco e, em seguida, pedaço por pedaço, as amostras de imagem 300A dos pixels na imagem 300.
[0039] A FIG. 4 mostra os módulos funcionais do codificador de vídeo 201. Esses módulos funcionais são realizados pelo processador 101 que executa o software 103 na memória 102. A imagem de um vídeo de entrada é um quadro ou um campo de uma imagem de vídeo natural (sem compressão) definido por pontos de amostra que representam componentes das cores originais, como crominância ("croma") e luminância ("luma"), mas outros componentes são possíveis, como, por exemplo, matiz, saturação e valor. A Imagem do vídeo de entrada é dividida em macroblocos 400, cada um deles representando uma área quadrada da imagem que consiste em pixels de 16x16 do componente luma da cor da imagem. A imagem do vídeo de entrada também é dividida em macroblocos, cada um deles representando pixels de 8x8 de cada um dos dois componentes croma da cor da imagem. Na operação geral do codificador, os macroblocos inseridos podem ser preditos temporal ou espacialmente por meio de inter ou intrapredição. Entretanto, para a finalidade da discussão, assume-se que os macroblocos 400 são todos macroblocos do tipo de pedaço I e são submetidos apenas à intrapredição.
[0040] A intrapredição é obtida em um módulo de intrapredição 401, cuja operação será discutida detalhadamente a seguir. O módulo de intrapredição 401 gera um bloco de predição 402 a partir dos pixels de fronteira horizontal e vertical dos blocos vizinhos, os quais foram anteriormente codificados, reconstruídos e armazenados em uma memória de quadros 403. O resíduo 404 do bloco de predição 402, o qual corresponde à diferença entre um bloco-alvo 400 e o bloco de predição 402, é transformado, dimensionado e quantizado em um módulo de transformada/quantização 405 por meio de métodos e técnicas conhecidos pelos especialistas na área de codificação de vídeo. Os coeficientes de transformada quantizados 406 são, então, codificados por entropia em um módulo de codificação de entropia 407 e transmitidos (em conjunto com outras informações relativas à intrapredição) como um sinal de vídeo codificado 408.
[0041] O codificador de vídeo 201 contém um recurso de decodificação para realizar a intrapredição em blocos-alvo. O recurso de decodificação compreende um módulo de quantização/transformada inversa 409, o qual executa a quantização inversa e a transformada inversa dos coeficientes de transformada quantizados 406 para produzir os resíduos da predição decodificados 410, que são adicionados ao bloco de predição 402. A adição dos resíduos da predição decodificados 410 e do bloco de predição 402 é um bloco reconstruído 411, que é armazenado na memória do quadro 403 e será lido na mesma e utilizado pelo módulo de intrapredição 401 para gerar um bloco de predição 402 para a decodificação do próximo bloco-alvo 400.
[0042] A FIG. 5 é um fluxograma que mostra os processos realizados pelo módulo de intrapredição 401. De acordo com o padrão H.264/AVC, a intrapredição envolve predizer cada pixel do bloco-alvo 400 sob uma variedade de modos de predição, utilizando interpolações dos pixels de fronteira ("pixels de referência") de blocos vizinhos previamente codificados e reconstruídos. Os modos de predição são identificados por números inteiros positivos (0, 1, 2...), cada um deles associado a uma instrução ou algoritmo diferente para a predição de pixels específicos no bloco-alvo 400. O módulo de intrapredição 401 executa a intrapredição sob os respectivos modos de predição e gera blocos de predição diferentes. Sob um algoritmo para pesquisa completa (“FS”), cada bloco de predição gerado é comparado ao bloco-alvo 400 para localizar o modo de predição ideal, o que minimiza os resíduos da predição 404 ou produz resíduos de predição menores 404 entre os modos de predição. A identificação do modo de predição ideal é compactada e enviada para o decodificador 301 com outros elementos de sintaxe das informações de controle.
[0043] Cada modo de predição pode ser descrito por uma direção geral de predição, conforme descrito verbalmente (isto é, horizontal para cima, vertical e diagonal para baixo à esquerda). Uma direção de predição pode ser descrita graficamente por uma direção angular expressa por meio de um diagrama com setas, como mostrado na FIG. 7. Nesse tipo de diagrama, cada seta pode ser considerada como a representação de uma direção de predição ou de um modo de predição. O ângulo correspondente a um modo de predição tem uma relação geral com a direção a partir do local médio ponderado dos pixels de referência utilizados para predizer um pixel-alvo para o local do pixel-alvo. Favor observar que os modos de predição incluem um modo de predição CC que não está associado a nenhuma direção de predição e, portanto, não pode ser descrito graficamente no diagrama, ao contrário dos outros modos de predição. No modo de predição CC, o bloco de predição 402 é gerado de tal modo que cada pixel no bloco de predição 402 é configurado uniformemente para o valor médio dos pixels de referência.
[0044] Voltando à FIG. 5, o modo de predição é iniciado na Etapa 501 Posteriormente, na Etapa 502, é determinado se o modo de predição indica a predição CC. Em caso afirmativo, o fluxo avança para a Etapa 503, na qual um bloco de predição CC 402 é gerado com o valor médio dos pixels de referência na Etapa 503. Se o modo de predição indicar outra informação, um bloco de predição 402 é gerado de acordo com a instrução ou o algoritmo associado ao modo de predição na Etapa 504, cujo processo será discutido detalhadamente a seguir. Após a Etapa 503 ou 504, o fluxo avança para a Etapa 505, na qual se determina se os blocos de predição são gerados para todos os modos de predição. Se a intrapredição for executada em todos os modos de predição, o fluxo avança para a Etapa 506. Caso contrário, o modo de predição é incrementado na Etapa 507 e o fluxo retorna para a Etapa 502. Na Etapa 506, cada bloco de predição gerado é comparado com o bloco-alvo 400 para determinar o modo de predição ideal, o que minimiza os resíduos da predição 404.
[0045] A FIG. 6 mostra os módulos funcionais do decodificador de vídeo 301. Esses módulos funcionais são realizados pelo processador 101 que executa o software 103 na memória 102. O sinal de vídeo codificado do codificador 201 é recebido primeiramente por um decodificador por entropia 600 e decodificado por entropia de volta em coeficientes de transformada quantizados 601. Os coeficientes de transformada quantizados 601 são inversamente quantizados e transformados por um módulo de quantização/transformada inversa 602 para gerar resíduos de predição 603. Um módulo de intrapredição 604 é notificado do modo de predição selecionado pelo codificador 201. De acordo com o modo de predição selecionado, o módulo de intrapredição 604 executa um processo de intrapredição semelhante ao realizado nas Etapas 502, 503 e 504 da FIG. 5 para gerar um bloco de predição 605, utilizando os pixels de fronteira dos blocos vizinhos reconstruídos anteriormente e armazenados em uma memória de quadro 606. O bloco de predição 605 é adicionado aos resíduos de predição 603 para reconstruir um bloco 607 de sinal de vídeo decodificado. O bloco reconstruído 607 é armazenado na memória do quadro 606 para utilização na predição do bloco seguinte.
[0046] Uma descrição detalhada será dada a seguir no processo da Etapa 504 realizada pelos módulos de intrapredição 401 e 604 para gerar um bloco de predição sob um dos modos de predição, exceto o modo de predição CC. O H.264/AVC aceita a intrapredição_4x4, a intrapredição_8x8 e a intrapredição_16x16. A intrapredição_4x4 é comumente utilizada quando há um detalhe significativo na imagem. A intrapredição_4x4 prediz individualmente os 16 blocos luma 4x4 dentro de um macrobloco. A intrapredição_4x4 é realizada em nove modos de predição, inclusive um modo de predição CC. As direções de predição espacial ao longo das quais a intrapredição_4x4 é realizada são mostradas na FIG. 7. A intrapredição_8x8 é realizada em nove modos de predição, inclusive um modo de predição CC. A intrapredição_16x16 é realizada em quatro modos de predição, inclusive um modo de predição CC.
[0047] Estudos recentes mostram que o aumento do número de direções de predição, ou o aumento do número de modos de predição, geralmente contribui para melhorar a eficiência da compressão na codificação de vídeo. Consulte, por exemplo, os documentos n° JCT-VC A119 ("Intrapredição angular") e JCT-VC A124 ("Intrapredição com direção arbitrária"), encaminhados à Joint Collaborative Team on Video Coding (Equipe de colaboração conjunta sobre codificação de vídeo, JCT-VC), ambos incorporados neste documento por referência. Um aumento do número de direções de predição leva a um aumento no número de intervalos angulares das direções de predição disponíveis e, portanto, a um aumento no número de candidatos do bloco de predição. O aumento do número de candidatos do bloco de predição simplesmente aumenta as chances de se ter um bloco de predição que seja quase o mesmo que um bloco-alvo a ser codificado. A FIG. 8 é um diagrama que mostra as direções de predição propostas no Documento N° JCTVC A119. Na FIG. 8, os pixels de referência consistem em dezessete (17) pixels horizontais e dezessete (17) pixels verticais, em que o pixel superior esquerdo é comum às fronteiras horizontal e vertical. Dessa forma, estão disponíveis 33 direções diferentes de predição para gerar pixels de predição em um bloco 8x8. O JCT-VC A124 propõe uma intrapredição direcional arbitrária em que o número de direções de predição é ajustado de acordo com o tamanho do bloco a ser predito.
[0048] A FIG. 9 é um fluxograma que mostra o processo, proposto no JCT-VC A119, de geração de um bloco de predição em uma das direções de predição representadas na FIG. 8. Na descrição do processo a seguir, alguns algoritmos são simplificados para facilitar a explicação. Além disso, o processo descrito é limitado à intrapredição em uma direção de predição principalmente vertical. A intrapredição em uma direção de predição principalmente horizontal pode ser implementada de forma simétrica ao processo mostrado na FIG. 9, como demonstrado no software fornecido pela JCT-VC A119. Embora a FIG. 8 mostre um bloco 8x8 a ser predito, o processo mostrado na FIG. 9 é expansível para ser aplicado a vários números de pixels em configurações diferentes. Por exemplo, um bloco a ser predito pode compreender uma matriz de pixels 4x4. Um bloco de predição também pode compreender uma matriz de pixels 8x8, 16x16 ou matrizes de pixels maiores. Outras configurações de pixel, inclusive matrizes quadradas e retangulares, também podem formar um bloco de predição.
[0049] Na Etapa 900 na FIG. 9, os pixels de referência nas fronteiras horizontal e vertical que se encontram imediatamente acima e à esquerda de um bloco-alvo, respectivamente, são lidos a partir de blocos vizinhos previamente codificados, reconstruídos e armazenados em uma memória de quadro, como a memória 403 mostrada na FIG. 4. Os pixels de fronteira horizontal são armazenados em uma área da memória chamada "refH'. Os pixels de fronteira vertical são armazenados em outra área da memória chamada "refV'. Voltando à FIG. 8, os pixels de referência são identificados por suas coordenadas em um sistema de coordenadas cuja origem é a posição do pixel superior esquerdo no bloco 8x8. Assim, os pixels de fronteira horizontal têm as coordenadas expressas por p[x, y] com x = 0, 1... 16 e y = 0. Os pixels de fronteira vertical têm coordenadas expressas por p[x, y] com x = 0, y = 0, -1, -2... -16.
[0050] Assume-se que os pixels de fronteira horizontal armazenados na área da memória refH são identificados por um endereço lógico (x) com x = 0, 1... 16 e que os pixels de fronteira vertical armazenados na área da memória refV são também identificados por meio de um endereço lógico (y) com y = 0, -1, -2. -16, em que cada pixel é armazenado no endereço que tem o número na coordenada a partir da qual ele é lido. Portanto, como os pixels horizontais e verticais estão representados graficamente na FIG. 8, as áreas da memória refH e refV podem ser consideradas estendendo-se de forma linear e ortogonal entre si, cada uma com um comprimento de 2 x tamanho + 1, em que o "tamanho" é um parâmetro que representa o tamanho do bloco-alvo. Assume-se que o tamanho tenha um valor igual a uma potência inteira de 2, como 4, 8, 16... Um filtro passa-baixa (low pass), como descrito na Seção 8.3.2.2.1 em H.264/AVC pode, opcionalmente, ser aplicado aos pixels na refH e refV.
[0051] Na Etapa 901, um contador chamado "linha" é definido como zero ("0"). O contador linha tem um valor de 0 a tamanho e indica a posição da linha de um pixel de predição no bloco de predição. Na Etapa 902, um parâmetro chamado "pos" é calculado por ângulo x(linha + 1). Ângulo é um parâmetro que tem um número fracionário em uma representação de ponto fixo. Assim, o ângulo é formado com uma parte inteira e uma parte fracionária que consiste em um número fixo de dígitos binários. Ângulo representa uma das direções de predição mostradas na FIG. 8. Por exemplo, "ângulo = tamanho" identifica a direção de predição dada por meio de coordenadas [x = 0, y = 0] na FIG. 8. O ângulo com um valor positivo identifica uma direção de predição que faz interseção apenas com a fronteira horizontal, ao passo que o ângulo com um valor negativo identifica uma direção de predição que faz interseção com as fronteiras horizontal e vertical. O ângulo varia dentro de uma faixa determinada pelo número de direções de predição que se deseja utilizar. Conforme proposto em JCT-VC A 124, o número de direções de predição a ser utilizado pode ser determinado de acordo com o tamanho de um bloco a ser predito. Na descrição a seguir, assume-se que o ângulo tem um número fracionário que varia dentro de uma faixa de "tamanho" a "tamanho". Favor observar que os limites da de faixa do ângulo podem ser definidos com outros valores.
[0052] Como ângulo, o parâmetro pos consiste em uma parte inteira e uma parte fracionária, a qual consiste em um número fixo de dígitos binários igual ao logaritmo na base 2 do limite da faixa do ângulo, que pode ser expresso por log2_tamanho de acordo com o pressuposto acima de que o limite da faixa do ângulo seja definido como tamanho. Pos identifica a posição de uma interseção entre a fronteira horizontal e a direção de predição representada pelo ângulo. Voltando à Etapa 902, a operação "pos >>log2_tamanho" identifica um número inteiro em pos, que é armazenado em um parâmetro "int' e a operação "pos & (tamanho - 1)" identifica um número fracionário em pos, que é armazenado em um parâmetro "frac". O operador ">>" solicita um deslocamento aritmético dos dígitos binários para a direita. O operador "&" solicita a operação de lógica binária "e".
[0053] Na Etapa 903 determina-se a condição se ângulo tem valor igual ou superior a zero ("0"). Se ângulo tiver valor igual ou superior a zero, o fluxo prossegue para o passo 904. Caso contrário, o fluxo prossegue para a Etapa 913. Ângulo igual ou superior a zero indica que apenas os pixels de referência localizados na fronteira horizontal ou armazenados em refH podem ser confiados para obter pixels de predição em um bloco de predição. Por outro lado, ângulo menor que zero indica que os pixels de referência localizados na fronteira vertical ou armazenados em refV são necessários para produzir pixels de predição no bloco de predição.
[0054] Na Etapa 904, é determinado se frac não é zero. Se frac não for zero, o fluxo avança para a Etapa 905. Se frac for zero, o fluxo avança para a Etapa 906. frac igual a zero indica que um pixel de predição no bloco de predição pode ser copiado diretamente a partir de um pixel de referência na fronteira horizontal. frac diferente de zero indica que a direção da predição faz interseção com a fronteira horizontal em uma posição de número não inteiro e uma interpolação de mais de um pixel de referência é necessária para produzir um pixel de predição no bloco de predição.
[0055] Na Etapa 905, um contador "col" é definido como zero ("0"). O contador col é utilizado para endereçar um pixel de referência em refH. Na Etapa 907, dois pixels de referência identificado por "int + col + 1" e "int + col + 2" são recuperados de refH. Esses dois pixels de referência são definidos por média de peso ou interpolados com frac para produzir um pixel de predição v. Especificamente, um pixel de referência em refH identificado por "int + col +1" é multiplicado por "tamanho - frac" e armazenado em um parâmetro a.
Um pixel de referência em refH identificado por "int + col + 2" é multiplicado por "frac" e armazenado em um parâmetro b. Os parâmetros a e b são, em seguida, adicionados e divididos por tamanho, isto é, (tamanho - frac) + frac. A divisão por tamanho pode ser substituída pelo deslocamento para a direita por log2_tamanho. O pixel de predição derivado v é armazenado em uma matriz de áreas de memória chamada "prev", que representa um bloco de predição para o bloco-alvo sob uma direção de predição particular. Cada área de memória em prev é identificada pelos parâmetros linha e col. Em seguida, o parâmetro col é incrementado em 1 unidade na Etapa 908 e comparado ao tamanho na Etapa 909. Enquanto col for menor do que tamanho, as Etapas 907 e 908 são repetidas. Quando col se torna igual a tamanho, o fluxo avança para a Etapa 920.
[0056] Se frac for determinado como zero na Etapa 904, o contador col é definido como zero na Etapa 906. Na Etapa 910, o pixel de predição v é copiado diretamente de refH (int + col + 1) e, em seguida, armazenado na área de memória correspondente em prev. col é então incrementado em 1 unidade na Etapa 911 e comparado a tamanho na Etapa 912. Enquanto col for menor do que tamanho, as Etapas 910 e 911 são repetidas. Quando col se torna igual a tamanho, o fluxo avança para a Etapa 920.
[0057] Voltando à Etapa 903, o ângulo menor que zero requer pixels de referência de refV para produzir pixels no bloco de predição. O contador col é definido como zero na Etapa 913. Em seguida, é determinado na Etapa 914 se "int + col + 1" é menor do que zero. A equação "int + col + 1" igual ou maior que zero indica que apenas os pixels de referência armazenados em refH ainda podem ser confiados para produzir pixels de predição no bloco de predição e o fluxo avança para a Etapa 915. O processo realizado na Etapa 915 é semelhante ao da Etapa 907, e a descrição do mesmo não será repetida aqui. col é então incrementado em 1 unidade na Etapa 916 e comparado a tamanho na Etapa 917. Enquanto col for menor do que tamanho, as Etapas 914, 915 e 916 são repetidas. Quando col se torna igual a tamanho, o fluxo avança para a Etapa 920.
[0058] Se "int + col + 1" for determinado como menor que zero na Etapa 914, os pixels de referência armazenados em refV são necessários para produzir pixels de predição no bloco de predição. Na Etapa 918, é determinada primeiramente a posição de uma interseção entre a fronteira vertical e uma direção de predição. Na Etapa 918, a posição é representada por pos2. Favor observar que na Etapa 902, pos, isto é, a posição de uma interseção entre a fronteira horizontal e uma direção de predição é determinada por "ângulo x (linha + 1)". Como ângulo representa uma proporção de diferenças verticais e horizontais, "ângulo-1 x (col + 1)", em vez de "ângulo x (linha + 1)" é calculado para determinar a posição de uma interseção entre a fronteira vertical e uma direção de predição. Como assumido acima, o ângulo está no intervalo-tamanho a tamanho (-tamanho < ângulo < tamanho). Portanto, uma proporção a entre ângulo e tamanho é definida por: Em seguida, ângulo-1 é definido por: Dessa forma, pos2 é determinada na Etapa 918 com o quadrado de tamanho multiplicado por col + 1 e, em seguida, dividido pelo valor absoluto do ângulo, como segue: [0059] Como ocorre com pos, pos2 tem um número fracionário em uma representação de ponto fixo formada por uma parte inteira e uma parte fracionária. A parte fracionária consiste no número de dígitos binários determinados por log2_tamanho. A parte inteira de pos2 é armazenada em um parâmetro int2 e a parte fracionária de pos2 é armazenada em um parâmetro frac2, Na Etapa 919, dois pixels de referência identificados por "int2 + linha + 1" e "int2 + linha + 2" são obtidos de refV. Esses dois pixels de referência são definidos pela média de peso ou interpolados com frac2 para produzir um pixel de predição v. Especificamente, um pixel de referência de refV (int2 + linha + 1) é multiplicado por "tamanho - frac2" e armazenado em um parâmetro a. Um pixel de referência de refV (int2 + linha + 2) é multiplicado por "frac2" e armazenado em um parâmetro b. Os parâmetros a e b são então adicionados e divididos por tamanho ou deslocados para a direita por log2_tamanho. O pixel de predição produzido v é armazenado na área de memória correspondente de prev. As Etapas 914, 918, 919 e 916 são repetidas até col se tornar igual a tamanho na Etapa 917.
[0060] Na Etapa 920, linha é incrementada em 1 unidade. Em seguida, determina-se na etapa 921 se linha é menor do que tamanho. Enquanto linha for menor que tamanho, as etapas a partir da Etapa 902 são repetidas para produzir um pixel de predição no bloco de predição. O fluxo termina quando linha se torna igual a tamanho na Etapa 921.
[0061] Conforme mencionado acima, um aumento no número de candidatos do bloco de predição contribui para a melhoria da eficiência da codificação, já que um aumento no número de candidatos do bloco de predição leva a um aumento da carga de trabalho computacional. Portanto, para aumentar o número de candidatos do bloco de predição para que, dessa forma, a eficiência da codificação seja melhorada, o processo de geração de um candidato do bloco de predição precisa ser analisado para atingir posteriormente a eficiência do processo. Ao analisar o processo mostrado na FIG. 9, dois gargalos computacionais podem ser identificados. O primeiro gargalo computacional é a operação de comparação e ramificação da Etapa 914, a qual é repetida dentro do ciclo. O segundo gargalo computacional é a operação de divisão da Etapa 918, que também é repetida dentro do ciclo.
[0062] Atualmente, está disponível o SIMD (Single-lnstruction Multiple Data, processamento de dados múltiplos a partir de uma única instrução) para proporcionar computação eficiente. O SIMD permite que computadores com vários elementos de processamento realizem a mesma operação em vários dados simultaneamente. Entretanto, as arquiteturas SIMD comuns não aceitam a implementação de divisão e computação/ramificação em um ciclo e, portanto, não podem ser usadas para implementar o processo mostrado na FIG. 9 devido à inclusão das Etapas 914 e 918 no ciclo, embora os ciclos que se iniciam a partir das Etapas 907 e 910 são suficientemente robustos para serem implementados com SIMD. Portanto, é um dos objetos da presente invenção remover os gargalos computacionais do processo mostrado na FIG. 9 e fornecer intrapredição de baixa complexidade, o que permite que arquiteturas SIMD comuns implementem o processamento paralelo em todas as direções de predição mostradas na FIG. 8.
[0063] A FIG. 10 é um fluxograma que mostra o processo de intrapredição de baixa complexidade de acordo com uma modalidade da presente invenção, a qual foi projetada para substituir o processo da FIG. 9 na implementação do processo na Etapa 504 da FIG. 5. Na FIG. 10, as mesmas etapas do processo conforme realizadas na FIG. 9 são identificadas pelos mesmos números de etapa usados na FIG. 9, como as etapas 900, 901, 902, 904, 905,906, 907, 908, 909, 910, 911, 912, 920 e 921. A descrição dessas etapas comuns não é repetida aqui. As etapas 1000 e 1001 são etapas peculiares ao processo da FIG. 10. Conforme mostrado a partir da comparação do processo exibido na FIG. 9, o processo da FIG. 10 elimina a etapa de comparação da Etapa 903 e todas as etapas ramificadas para a esquerda a partir da Etapa 903, as quais são realizadas quando ângulo é menor que 0, eliminando, dessa forma, os gargalos computacionais das etapas 914 e 918.
[0064] Nas etapas 1000 e 1001 incluídas, é determinado se ângulo é igual ou maior do que -1. Quando ângulo é maior ou igual a -1, os pixels de referência localizados na fronteira horizontal são suficientes para gerar um pixel de predição no bloco de predição e não são necessários pixels de referência na fronteira vertical. Por outro lado, se o ângulo for menor do que -1, os pixels de referência na fronteira vertical são necessários para gerar um pixel de predição no bloco de predição. Na etapa 1001, os pixels de referência armazenados em refH se estendem na direção negativa utilizando pelo menos alguns dos pixels armazenados em refV. As figuras 11A e 11 B são representações esquemáticas que mostram a extensão de refH realizada na etapa 1001. Na FIG. 11A, os pixels de referência 1102 armazenados em refH são provenientes da fronteira horizontal localizada acima do bloco-alvo 1101. Os pixels de referência 1103 armazenados em refV são provenientes da fronteira vertical localizada à esquerda do bloco-alvo 1101. Conforme mostrado na FIG. 11B, após a Etapa 1001 da FIG. 10, alguns dos pixels de referência em refV são copiados para refH, o qual tem uma parte estendida 1104 que se estende na direção negativa.
[0065] A FIG. 12 é um fluxograma que mostra os detalhes do processo realizado na Etapa 1001. Na Etapa 1201, um contador col é definido como -1. col é usado para identificar um endereço da parte estendida de refH. Na etapa 1202, um pixel de referência em refV a ser copiado para a parte estendida de refH é identificado por: A divisão na equação acima é uma divisão de números inteiros e a equação produz como resultado um número inteiro. A equação funciona de modo semelhante ao processo da Etapa 918 mostrada na FIG. 9. Na etapa 918, o valor inteiro de pos2 é calculado por: Favor observar que o deslocamento para a direita de log2_tam é equivalente à divisão por tamanho.
[0066] Na Etapa 1203, col é decrescido de 1 unidade. Em seguida, é determinado na Etapa 1204 se col é igual a ângulo. Se col não for igual a ângulo, o fluxo retorna para a Etapa 1202. As etapas 1202 e 1203 são repetidas até que col se torne igual a ângulo. Assim, os pixels de referência são lidos de refV em ordem crescente ou de cima para baixo da fronteira vertical e copiado em refH em ordem decrescente ou da direita para a esquerda da fronteira horizontal. Além disso, nem todos os pixels de referência em refV são copiados para refH. Somente os pixels de referência localizados dentro do intervalo da parte superior até a interseção de uma direção de predição são copiados de refV para refH
[0067] Voltando à FIG 10, as etapas do processo que se iniciam a partir da Etapa 902 são copiadas da FIG. 9 e incluem as etapas para a geração de pixels de predição ramificadas para a direita a partir da etapa de comparação da Etapa 903 na FIG. 9. Favor observar, porém, que as etapas na FIG. 10 para a geração de pixels de predição utilizam refH estendida (adição das partes 1102 + 1104 na FIG. 1 1 B), ao passo que as etapas correspondentes na FIG. 9 utilizam refH original (parte 1102 na FIG. 10A). Uma vez que refH é estendida na direção negativa, não é necessária uma operação separada de intrapredição elaborada especificamente para utilizar os pixels de referência armazenados em refV, como as ramificações para a esquerda a partir da Etapa 903 na FIG 9, independentemente do sinal do ângulo.
[0068] A FIG. 13 é um fluxograma que mostra outra modalidade do processo para estender refH utilizando os pixels de referência em refV. O processo mostrado nas figuras 11 e 12 elimina as etapas de gargalo das Etapas 914 e 918 mostradas na FIG. 9 e, portanto, melhora a eficiência do processo de intrapredição. O processo mostrado na FIG. 13 elimina a operação de divisão realizada na Etapa 1202 da FIG. 12 a partir do ciclo para a cópia de pixels de referência de refV para refH. Ao eliminar do ciclo a operação de divisão, o processo mostrado na FIG. 13 melhora ainda mais a eficiência do processo de intrapredição.
[0069] O processo mostrado na FIG. 13 substitui a Etapa 1202 da FIG. 12 pelas Etapas 1301 e 1302. A etapa 1302 está dentro do ciclo para a cópia de pixels de referência de refV para refH, enquanto a Etapa 1301 está fora do ciclo. A Etapa 1301 apresenta um novo parâmetro chamado " Ângulo-Inv", que é definido por: A multiplicação por 256 é equivalente ao deslocamento para a esquerda por oito e assegura que todos os bits resultantes da operação das contas "tamanho/ângulo" para o cálculo da identificação de um pixel de referência em refV. Na Etapa 1302, o endereço de um pixel de referência em refV a ser copiado na parte estendida de refH é identificado por: col X Ângulolnv » 8 O resultado de " col x Ângulolnv " é deslocado para a direita por 8 para desfazer a operação de deslocamento para a esquerda realizada na Etapa 1301. Favor observar que a operação de deslocamento para a direita na Etapa 1302 serve para arredondar para baixo o resultado de "col x ÂnguIolnv". Para arredondar para o número inteiro mais próximo, um deslocamento de arredondamento de 128 pode ser adicionado ao resultado de "col x Ângulolnv" antes da realização da operação de deslocamento para a direita. Deve-se observar que o número "256" é apenas um exemplo e a Etapa 1301 pode adotar outro número de deslocamento, de preferência uma potência inteira de 2, contanto que o número seja grande o suficiente para preservar todos os bits resultantes da operação de "tamanho/ângulo". Por exemplo, o número pode ser 64 na Etapa 1301, em vez de 256, e o número de deslocamentos para a direita é de 6 na Etapa 1302, em vez de 8. Se for adotado o número 64, o deslocamento para arredondamento deve ser 32.
[0070] O cálculo realizado na etapa 1301 pode ser substituído por uma operação de consulta para reduzir ainda mais a carga de trabalho computacional. Em outras palavras, uma tabela de consulta é preparada para armazenar os valores de Ângulolnv em relação aos valores de ângulo. A Tabela 1 fornecida abaixo é um exemplo de tabela de consulta na etapa 1301 Tabela 1 Na tabela acima, assume-se que tamanho seja 8 e ângulo tenha um valor inteiro de 1 a 8. Deve-se observar, porém, que o tamanho não está limitado a 8 e pode ser outro valor, como 4 e 16. Além disso, ângulo pode ser um número fracionário em uma representação do ponto fixo, conforme definido acima.
[0071] Quando um pixel de referência é copiado de refV para refH na Etapa 1202 da FIG. 12 ou na Etapa 1302 da FIG. 13, o pixel de referência pode passar por um filtro passa-baixa para reduzir um possível serrilhado no bloco de predição. A potência do filtro passa-baixa pode variar de acordo com o valor do ângulo. Por exemplo, quando o ângulo for igual a -tamanho, filtros passa-baixa fracos podem ser aplicados e quando o ângulo for igual a -2, filtros passa-baixa fortes podem ser aplicados.
[0072] Conforme explicado acima, nem todos os pixels de referência em refV são copiados para refH. Como nem todos os pixels de referência em refV são copiados, algumas informações são perdidas quando os pixels são copiados. Para reduzir a perda de informações, a resolução dos pixels de referência em refH e refV pode ser dobrada para que refH e refV contenham não apenas os pixels dos blocos codificados e reconstruídos anteriormente, mas também um pixel entre dois pixels reconstruídos adjacentes, o que é gerado pela interpolação de dois pixels adjacentes. Pode-se simplesmente fazer uma média de dois pixels adjacentes para gerar um pixel de interpolação. O processo de interpolação pode ser realizado quando os pixels de referência são lidos na Etapa 900 da FIG. 9. Quando a resolução dos pixels é dobrada em refH e refV, as identificações dos endereços dos pixels de referência armazenados em refH e refV precisam ser dimensionadas, conforme realizado nas etapas 907, 910, 915 e 919 na FIG. 9 e na Etapa 1001 na FIG. 10. Por exemplo, "int +col+ 1" realizado nas Etapas 907, 910 e 915 precisa ser alterado para "int + 2xcol + 2". "int +col+2" realizado nas Etapas 907, 910 e 915 precisa ser alterado para "int + 2xcol + 3". "int2 + linha + 1" e "int2 + linha + 2" realizados na Etapa 919 precisam ser alterados para "int2 + 2x linha + 2" e "int2 + 2x linha + 3", respectivamente.
[0073] Em outra modalidade, o processo da Etapa 1202 na FIG. 12 pode ser alterado simplesmente para "refH [col] G refV [-col] para simplificar ainda mais o processo de cópia. Embora degrade a precisão da predição, essa modalidade proporciona a menor complexidade para a operação de intrapredição.
[0074] A FIG. 11B mostra a partir estendida 1104 adição da à refH. A parte estendida 1104 não precisa ser formada por pixels de referência de refV. A parte estendida 1104 pode ser formada por pixels de uma área de um bloco reconstruído anteriormente, que corresponda em termos espaciais ao local da parte estendida 1104. Na FIG. 11B, uma vez estendida na direção negativa, a refH estendida (partes 1102 e 1104) varia de -tamanho + 1 a 2x tamanho. A faixa de refH estendida pode ser redimensionada para a faixa entre 0 a 3x tamanho -1 mediante a adição do deslocamento apropriado durante o endereçamento dos pixels de referência na refH estendida. O mesmo se aplica para o redimensionamento da faixa de refV.
[0075] Em outra modalidade, o limite de alcance de ângulo pode ser colhido livremente. Nas modalidades acima, assume-se que ângulo tenha um valor dentro de uma faixa que varia de - tamanho a tamanho (-tamanho < ângulo < tamanho). Em outras palavras, nas modalidades acima, os limites de alcance de ângulo são definidos pelo tamanho do bloco-alvo. Favor observar que os limites de alcance de ângulo podem ser definidos independentemente do tamanho do bloco-alvo, embora ainda seja preferível que o limite de alcance seja definido por uma potência inteira de 2, de modo que log2_limite de alcance seja um número inteiro positivo e a equação "limite de alcance = 1 << log2_limite de alcance" seja verdadeira. Ao escolher um número grande adequado para o limite de alcance, um grande número de direções de predição pode ser estabelecido e representado por valores de ângulo em intervalos angulares suficientemente amplos.
[0076] Se o limite de alcance de ângulo for definido independentemente do tamanho do bloco-alvo, o tamanho mostrado nas figuras 9 e 10 precisa ser substituído por limite de alcance, enquanto log2_tamanho precisa ser substituído por log2_limite de alcance, exceto para as etapas 909, 912, 917 e 921. A comparação de "ângulo > -1" realizada na Etapa 1000 da FIG. 10 também precisa ser substituída por "ângulo x tamanho/limite de alcance > -1" ou "ângulo x tamanho > -limite de alcance". Além disso, o tamanho mostrado nas etapas 1202 e 1301 nas figuras FIGS. 12 e 13 precisa ser substituído por limite de alcance e a comparação de "col = ângulo?" realizada na Etapa 1204 precisa ser substituída por "col = ângulo x tamanho/limite de alcance?".
[0077] Se o limite de alcance for introduzido como um limite de alcance do ângulo, a Tabela 1 (mostrada anteriormente) pode ser alterada da seguinte forma: Tabela 2 Na Tabela 2, limite de alcance é definido como 32. Ângulo* é igual a um número inteiro aproximado de "limite de alcance x tan (π x ângulo/8)" em que ângulo = 1, 2, 3, 4, 5, 6, 7 e 8. Ângulolnv é igual a 256 x limite de alcance/ângulo*. Os valores na Tabela 2 são todos números inteiros derivados de arredondamento para cima. Em vez de serem arredondados para cima, os números podem ser arredondados para baixo. Na Tabela 3 fornecida abaixo, Ângulolnv é igual a 32 x limite de alcance/ângulo*. Como "32" é usado, em vez de "256", a precisão da predição é necessariamente mais baixa do que a da Tabela 2.
Tabela 3 [0078] A FIG. 14 é um fluxograma que mostra outra modalidade que simplifica ainda mais o processo mostrado na FIG. 10. O processo mostrado na FIG. 10, de cópia de pixels de referência de refV para refH, é realizado antes que o fluxo entre no principal ciclo de predição, ao passo que o processo de cópia mostrado na FIG. 14 é realizado no interior do ciclo de predição principal. Além disso, o processo mostrado na FIG. 14 elimina a variável Ângulolnv. As etapas 900, 902 e 921 mostradas na FIG. 14 são das etapas correspondentes na FIG. 10.
[0079] Na Etapa 1401, um contador últimolnt é iniciado com -1 e representa o índice do último pixel que foi adicionado a refH. Na Etapa 902, pos é calculada por ângulo x (linha + 1). Como explicado acima, pos identifica a posição de uma interseção entre as fronteiras e a direção de predição representada pelo ângulo. No contexto da FIG. 9, a Etapa 902 produz pos, que identifica a posição de uma interseção entre a fronteira horizontal e a direção de predição representada pelo ângulo. Posteriormente na Etapa 902, uma parte inteira em pos é armazenada em int e uma fração de pos é armazenada em um parâmetro "frac"- Na Etapa 1402, é determinado se int é menor que últimolnt. Se int for menor que últimolnt, um pixel de referência em refV identificado por linha é copiado para refH em um endereço identificado por "int + 1". A Etapa 1404 consiste nas etapas 904, 905, 906, 907, 908, 909, 910, 911 e 912 mostradas nas figuras 9 e 10, cujas descrições não são repetidas aqui. Na Etapa 1405, int é copiado para últimolnt. A operação de cópia de int para últimolnt pode ser realizada na Etapa 1403, em vez da Etapa 1405.
[0080] A operação de cópia na Etapa 1403 resulta em copiar o mesmo pixel copiado nas Etapas 1202 e 1302, em que o arredondamento para baixo é utilizado. A Etapa 1403 pode ser modificada para arredondar para um número inteiro mais próximo ao utilizar condicionalmente "linha + 1", em vez de "linha", na Etapa 1403 quando a posição fracionária frac computada na Etapa 902 for maior do que o deslocamento, o qual é definido por limite de alcance + (ângulo >> 1). Favor observar que o ângulo é -ve e frac é + ve. O uso de "linha + 1" resulta em arredondamento para cima. Para efetivar o incremento condicional de linha em 1 unidade, o processo executado na Etapa 1403 é alterado para refH [int + 1]G refV [linha-((deslocamento - frac)>> 31)], assumindo que na aritmética de 32 bits o deslocamento para a direita de "deslocamento - frac" resulta em -1 quando frac é maior do que o deslocamento e em 0 quando menor. Assim, o identificador de endereço "linha-((deslocamento - frac) >> 31)" torna-se "linha + 1" quando frac é maior que deslocamento e "linha" quando menor. Se o deslocamento for definido como limite de alcance, "deslocamento - frac" será sempre positivo e, portanto, não ocorrerá arredondamento.
[0081] O código-fonte desenvolvido na linguagem de programação C++, que implementa o processo mostrado na FIG. 14, está indicado abaixo. O código-fonte é modificado a partir da função TComPrediction::xPredlntraAng incluída no arquivo TComPrediction.cpp, o qual faz parte do software TMuC 0.7 desenvolvido pela JCT-VC, que está disponível em http://hevc.kw.bbc.co.Uk/svn/ictvc.al24/tags/0.7. // Função para produzir as intrapredições angulares simplificadas Void TComPrediction: :xPredIntraAng( Int* pSrc, Int iSrcStride, Pel*& rpDst, Int iDstStride, UInt iWidth, UInt iHeight, UInt uiDirMode, Bool bAbove, Bool bLeft ){ Int k,l;
Int deltaInt, deltaFract, refMainIndex;
Int intraPredAngle = 0;
Int absAng = 0;
Int signAng = 0;
Int blkSize = iWidth;
Bool modeDC = false;
Bool modeVer = false;
Bool modeHor = false;
Pel* pDst = rpDst; // Mapeia o índice de modo para a direção e o ângulo de predição principal if (uiDirMode == 0) modeDC = true; else if (uiDirMode < 18) modeVer = true; else modeHor = true; intraPredAngle = modeVer ? uiDirMode - 9 : modeHor ? uiDirMode -25 : 0; absAng = abs (intrapredAngle); signAng = intraPredAngle < 0 ? -1 : l; //Define os deslocamentos de bits e dimensiona o parâmetro do ângulo para o tamanho2 Int iAngTable[9] = { 0, 2, 5, 9, 13, 17, 21, 26, 32}; absAng = iAngTable[absAng]; intraPredAngle = signAng * absAng;
//Realizar a predição CC if (modeDCH){ Pel dcval = predIntraGetPredValDC(pSrc, iSrcStride, iWidth, iHeight, bAbove, bLeft); for (k=0;k<blkSize;k++){ for (l=0;l<blkSize;1++){ pDst(k*iDstStride+1] = dcval; } } } //Realizar predições angulares else { Pel tmp;
Int *pSrcTL = pSrc - iSrcStride - 1;
Int iStepMain = (modeVer) ? 1 : iSrcStride; if (intraPredAngle == 0){ for (k=0;k<blkSize;k++){ for (l=0;1<blkSize;1++){ pDst [k*iDstStride+1] = pSrcTL[(1+1) * iStepMain]; } } } else { Int iStepSide = (modeVer) ? iSrcStride 1; int lastDeltaInt = -1;
Int iOffset = 32 + (intraPredAngle >> 1); // Permite o arredondamento para a referência lateral mais próxima // Int iOffset = 32; // sem arredondamento.
Pel ref [2*MAX_CU_SIZE];
Pel* refMain = ref + ((intraPredAngle < 0) ? blkSize : 0); if (intraPredAngle > 0){ for (k = 0; k < 2*blkSize; k++) refMain[k] = pSrcTL[(k+1) * iStepMain]; } else { for (k = -1; k < blkSize; k++) // o restante é copiado posteriormente na Etapa 1403, como e quando solicitado refMain[k] = pSrcTL[(k+l) * iStepMain]; } for (k = 0; k < blkSize; k++){ Int deltaPos = (k+1) * intraPredAngle; deltaInt = deltaPos >> 5; deltaFract = deltaPos & (32 - l); if (deltaInt < lastDeltaInt) { // etapa 1402 lastDeltaInt = deltaInt; refMain [deltaInt] = pSrcTL[(k-((iOffset-deltaFract)>>31))*iStepSide]; // etapa 1403 } // etapa 1404 if (deltaFract){ // Realiza filtragem linear for (l=0;l<blkSize;l++){ refMainIndex = l+deltaInt; pDst[k*iDstStride+l] = (Pel) ( ((32-deltaFract) * refMain[refMainIndex] + deltaFract * refMain[refMainlndex+l] + 16) >> 5 ); else { // Simplesmente copia as amostras de números inteiros for (l=0;l<<blkSize;l++) { pDst[k*iDstStride+l] = refMain[l+deltaInt]; // Gira o bloco se este for o modo horizontal if (modeHor){ for (k=0;k<blkSize-l;k++){ for (l=k+1;l<blkSize;l++){ tmp = pDst[k*iDstStride+1]; pDst(k*iDstStride+1] = pDst(1*iDstStride+k]; pDst [1*iDstStride+k] = tmp;
[0082] Embora muitas alterações e modificações da presente invenção se tornarão sem dúvida nenhuma aparente para pessoas versadas na técnica após terem lido a descrição anterior, deve-se compreender que nenhuma modalidade específica mostrada e descrita por meio de ilustração não deve, em hipótese nenhuma, ser considerada limitadora. Portanto, as referências aos detalhes de várias modalidades não têm como objetivo limitar o escopo das afirmações, as quais descrevem somente os recursos considerados essenciais para a invenção.
REIVINDICAÇÕES

Claims (6)

1. Método de codificação de vídeo, caracterizado pelo fato de que compreende etapas executáveis por computador executadas por um processador de um codificador de vídeo para implementar uma operação de intrapredição que deriva um bloco de predição de um bloco-alvo com pixels de fronteira do bloco-alvo interpolados ao longo de um ângulo de intrapredição, em que os pixels de fronteira compreendem uma matriz horizontal de pixels de fronteira horizontal e uma matriz vertical de pixels de fronteira vertical, a operação de intrapredição compreende: uma etapa de execução, com base em informações do modo de predição que indicam o modo de predição, ou de um primeiro processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira vertical localizados na matriz vertical em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização horizontal que é uma variável que representa posições em uma extensão de uma matriz horizontal estendida; adicionar os pelo menos alguns dos pixels de fronteira vertical identificados como pixels de fronteira horizontal para a extensão da matriz horizontal estendida; e usar apenas os pixels de fronteira horizontal na matriz horizontal estendida, sem usar os pixels de fronteira vertical, para derivar o bloco de predição do bloco-alvo, ou um segundo processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira horizontal localizados na matriz horizontal em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização vertical que é uma variável que representa posições em uma extensão de uma matriz vertical estendida; adicionar os pelo menos alguns dos pixels de fronteira horizontal identificados como pixels de fronteira vertical para a extensão da matriz vertical estendida; e usar apenas os pixels de fronteira vertical na matriz vertical estendida, sem usar os pixels de fronteira horizontal, para derivar o bloco de predição do bloco-alvo.
2. Método de codificação de vídeo, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação do modo de predição é informação que representa uma das direções de predição.
3. Método de decodificação de vídeo, caracterizado pelo fato de que compreende etapas executáveis por computador executadas por um processador de um decodificador de vídeo para implementar uma operação de intrapredição que deriva um bloco de predição de um bloco-alvo com pixels de fronteira do bloco-alvo interpolados ao longo de um ângulo de intrapredição, em que os pixels de fronteira compreendem uma matriz horizontal de pixels de fronteira horizontal e uma matriz vertical de pixels de fronteira vertical, a operação de intrapredição compreende: uma etapa de decodificação do modo de predição de decodificar a informação do modo de predição, indicando o modo de predição a partir de sinais de vídeo codificados; e uma etapa de execução de executar, baseada na informação do modo de predição decodificada na etapa de decodificação do modo de predição, ou um primeiro processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira vertical localizados na matriz vertical em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização horizontal que é uma variável que representa posições em uma extensão de uma matriz horizontal estendida; adicionar os pelo menos alguns dos pixels de fronteira vertical identificados como pixels de fronteira horizontal para a extensão da matriz horizontal estendida; e usar apenas os pixels de fronteira horizontal na matriz horizontal estendida, sem usar os pixels de fronteira vertical, para derivar o bloco de predição do bloco-alvo, ou um segundo processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira horizontal localizados na matriz vertical em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização vertical que é uma variável que representa posições em uma extensão de uma matriz vertical estendida; adicionar os pelo menos alguns dos pixels de fronteira horizontal identificados como pixels de fronteira vertical para a extensão da matriz vertical estendida; e usar apenas os pixels de fronteira vertical na matriz vertical estendida, sem usar os pixels de fronteira horizontal, para derivar o bloco de predição do bloco-alvo.
4. Método de decodificação de vídeo, de acordo com a reivindicação 3, caracterizado pelo fato de que a informação do modo de predição é informação representando uma das direções de predição.
5. Codificador de vídeo, caracterizado pelo fato de que compreende um processador de um sistema de computador e uma memória que armazena programas executáveis pelo processador para implementar uma operação de intrapredição que deriva um bloco de predição de um bloco-alvo com pixels de fronteira do bloco-alvo interpolados ao longo de um ângulo de intrapredição, em que os pixels de fronteira compreendem uma matriz horizontal de pixels de fronteira horizontal e uma matriz vertical de pixels de fronteira vertical, a operação de intrapredição implementada pelo processador para: executar uma etapa de execução, com base nas informações do modo de predição indicando o modo de predição, ou de um primeiro processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira vertical localizados na matriz vertical em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização horizontal que é uma variável que representa posições em uma extensão de uma matriz horizontal estendida; adicionar os pelo menos alguns dos pixels de fronteira vertical identificados como pixels de fronteira horizontal para a extensão da matriz horizontal estendida; e usar apenas os pixels de fronteira horizontal na matriz horizontal estendida, sem usar os pixels de fronteira vertical, para derivar o bloco de predição do bloco-alvo, ou um segundo processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira horizontal localizados na matriz horizontal em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização vertical que é uma variável que representa posições em uma extensão de uma matriz vertical estendida; adicionar os pelo menos alguns dos pixels de fronteira horizontal identificados como pixels de fronteira vertical para a extensão da matriz vertical estendida; e usar apenas os pixels de fronteira vertical na matriz vertical estendida, sem usar os pixels de fronteira horizontal, para derivar o bloco de predição do bloco-alvo.
6. Decodificador de vídeo, caracterizado pelo fato de que compreende um processador de um sistema de computador e uma memória que armazena programas executáveis pelo processador para implementar uma operação de intrapredição que deriva um bloco de predição de um bloco-alvo com pixels de fronteira do bloco-alvo interpolados ao longo de um ângulo de intrapredição, em que os pixels de fronteira compreendem uma matriz horizontal de pixels de fronteira horizontal e uma matriz vertical de pixels de fronteira vertical, a operação de intrapredição implementada pelo processador para: executar: uma etapa de decodificação do modo de predição de decodificar a informação do modo de predição, indicando o modo de predição de sinais de vídeo codificados; e uma etapa de execução de executar, baseada na informação do modo de predição decodificada na etapa de decodificação do modo de predição, ou um primeiro processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira vertical localizados na matriz vertical em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização horizontal que é uma variável que representa posições em uma extensão de uma matriz horizontal estendida; adicionar os pelo menos alguns dos pixels verticais como pixels de fronteira horizontal para a extensão da matriz horizontal estendida; e usar apenas os pixels de fronteira horizontal na matriz horizontal estendida, sem usar os pixels de fronteira vertical, para derivar o bloco de predição do bloco-alvo, ou um segundo processo incluindo: obter um valor de um parâmetro de ângulo inverso, correspondente ao ângulo de intrapredição, a partir de uma tabela de consulta que lista valores de parâmetros de ângulo inverso em relação, respectivamente, a uma pluralidade de diferentes ângulos de intrapredição; identificar pelo menos alguns dos pixels de fronteira horizontal localizados na matriz horizontal em posições que são uma função de multiplicação entre o valor obtido do parâmetro de ângulo inverso e um valor de um identificador de localização vertical que é uma variável que representa posições em uma extensão de uma matriz vertical estendida; adicionar os pelo menos alguns dos pixels horizontais como pixels de fronteira vertical para a extensão da matriz vertical estendida; e usar apenas os pixels de fronteira vertical na matriz vertical estendida, sem usar os pixels de fronteira horizontal, para derivar o bloco de predição do bloco-alvo.
BR112013000963A 2010-07-14 2011-07-14 métodos de codificação e decodificação de vídeo e codificador e decodificador de vídeo BR112013000963B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US36432210P 2010-07-14 2010-07-14
US38854110P 2010-09-30 2010-09-30
PCT/US2011/044014 WO2012009540A1 (en) 2010-07-14 2011-07-14 Low-complexity intra prediction for video coding

Publications (2)

Publication Number Publication Date
BR112013000963A2 BR112013000963A2 (pt) 2016-05-24
BR112013000963B1 true BR112013000963B1 (pt) 2019-12-03

Family

ID=45469801

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112013000963A BR112013000963B1 (pt) 2010-07-14 2011-07-14 métodos de codificação e decodificação de vídeo e codificador e decodificador de vídeo

Country Status (16)

Country Link
US (6) US9225986B2 (pt)
EP (7) EP3522535B1 (pt)
JP (8) JP5687341B2 (pt)
KR (7) KR101927283B1 (pt)
CN (4) CN105227960B (pt)
AU (1) AU2011279139B2 (pt)
BR (1) BR112013000963B1 (pt)
CA (7) CA3014052C (pt)
ES (7) ES2748100T3 (pt)
HU (2) HUE053802T2 (pt)
MX (5) MX344987B (pt)
PL (7) PL3522535T3 (pt)
PT (7) PT2594076T (pt)
RU (8) RU2579947C2 (pt)
SG (1) SG187065A1 (pt)
WO (1) WO2012009540A1 (pt)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012009540A1 (en) 2010-07-14 2012-01-19 Ntt Docomo, Inc. Low-complexity intra prediction for video coding
KR101530284B1 (ko) * 2010-07-16 2015-06-19 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
US9008175B2 (en) * 2010-10-01 2015-04-14 Qualcomm Incorporated Intra smoothing filter for video coding
KR20120140181A (ko) * 2011-06-20 2012-12-28 한국전자통신연구원 화면내 예측 블록 경계 필터링을 이용한 부호화/복호화 방법 및 그 장치
US10645398B2 (en) * 2011-10-25 2020-05-05 Texas Instruments Incorporated Sample-based angular intra-prediction in video coding
US8811760B2 (en) * 2011-10-25 2014-08-19 Mitsubishi Electric Research Laboratories, Inc. Coding images using intra prediction modes
CN104247422B (zh) * 2011-11-07 2018-09-11 华为技术有限公司 用于改进帧内预测的新的角度表的方法和装置
WO2013181821A1 (en) * 2012-06-07 2013-12-12 Mediatek Singapore Pte. Ltd. Improved intra transform skip mode
KR101307257B1 (ko) * 2012-06-28 2013-09-12 숭실대학교산학협력단 영상의 인트라 예측 장치
TWI592011B (zh) * 2012-06-29 2017-07-11 Sony Corp Image processing device and method
WO2015006169A1 (en) * 2013-07-08 2015-01-15 Sony Corporation Improvement for palette coding mode
US20150016516A1 (en) * 2013-07-15 2015-01-15 Samsung Electronics Co., Ltd. Method for intra prediction improvements for oblique modes in video coding
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
JP6359101B2 (ja) 2013-10-14 2018-07-18 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴
EP3720132A1 (en) 2013-10-14 2020-10-07 Microsoft Technology Licensing LLC Features of color index map mode for video and image coding and decoding
AU2014376061B8 (en) 2014-01-03 2019-05-30 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
KR102401946B1 (ko) 2014-03-04 2022-05-24 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑
US10785486B2 (en) 2014-06-19 2020-09-22 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
KR102330740B1 (ko) 2014-09-30 2021-11-23 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
JP6122516B2 (ja) 2015-01-28 2017-04-26 財團法人工業技術研究院Industrial Technology Research Institute エンコーディング方法及びエンコーダ
JP6492847B2 (ja) * 2015-03-24 2019-04-03 日本電気株式会社 映像符号化システム、映像符号化回路および映像符号化方法
US20180255304A1 (en) * 2015-03-29 2018-09-06 Lg Electronics Inc. Method and device for encoding/decoding video signal
WO2016197314A1 (en) 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10602138B2 (en) 2015-08-27 2020-03-24 Lg Electronics Inc. Method and device for chroma sample intra prediction in video coding system
CN106231340B (zh) * 2016-09-23 2019-08-27 优酷网络技术(北京)有限公司 一种基于hevc的帧内预测解码方法及装置
US10869049B2 (en) * 2016-11-29 2020-12-15 Research & Business Foundation Sungyunwan University Image encoding/decoding method and device, and recording medium in which bitstream is stored
CN116233424A (zh) * 2016-12-23 2023-06-06 华为技术有限公司 一种用于扩展预定定向帧内预测模式集合的帧内预测装置
US10992939B2 (en) 2017-10-23 2021-04-27 Google Llc Directional intra-prediction coding
US10225578B2 (en) 2017-05-09 2019-03-05 Google Llc Intra-prediction edge filtering
CN110832864B (zh) * 2017-06-26 2024-03-29 交互数字麦迪逊专利控股公司 利用多个加权参考进行帧内预测的方法和装置
US10764587B2 (en) * 2017-06-30 2020-09-01 Qualcomm Incorporated Intra prediction in video coding
JP2019041165A (ja) 2017-08-23 2019-03-14 富士通株式会社 画像符号化装置、画像復号装置、画像処理方法、及び画像処理プログラム
WO2019059107A1 (ja) * 2017-09-20 2019-03-28 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN109587491B (zh) * 2017-09-28 2022-09-23 腾讯科技(深圳)有限公司 一种帧内预测方法、装置及存储介质
US20190167988A1 (en) 2017-12-04 2019-06-06 CyMedica Orthopedics, Inc. Patient therapy systems and methods
WO2019124205A1 (ja) * 2017-12-18 2019-06-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
KR20230098721A (ko) * 2018-03-29 2023-07-04 프라운호퍼-게젤샤프트 추르 푀르데룽 데어 안제반텐 포르슝 에 파우 패딩을 위한 화면내-예측 모드 선택을 위한 장치
WO2021034231A2 (en) * 2019-12-19 2021-02-25 Huawei Technologies Co., Ltd. Method and apparatus of position dependent prediction combination for oblique directional intra prediction
EP4074048A4 (en) * 2019-12-31 2023-03-08 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR INTRAPREDICTION
CN116071242B (zh) * 2023-03-17 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种图像处理方法、***、设备以及存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298085B1 (en) * 1997-10-23 2001-10-02 Sony Corporation Source encoding using shuffling of data to provide robust error recovery in a burst error-environment
MXPA03009131A (es) 2002-02-01 2004-02-12 Matsushita Electric Ind Co Ltd Metodo de codificacion de imagen en movimiento y metodo de decodificacion de imagen en movimiento.
CN100562119C (zh) * 2002-02-01 2009-11-18 松下电器产业株式会社 动画图象译码方法和动画图象译码装置
US7170937B2 (en) * 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
US7539714B2 (en) * 2003-06-30 2009-05-26 Intel Corporation Method, apparatus, and instruction for performing a sign operation that multiplies
MXPA06001111A (es) 2003-08-19 2006-04-11 Matsushita Electric Ind Co Ltd Metodo de codificacion de imagen en movimiento y metodo de decodificacion de imagen en movimiento.
EP1558039A1 (en) * 2004-01-21 2005-07-27 Deutsche Thomson-Brandt Gmbh Method and apparatus for generating/evaluating prediction information in picture signal encoding/decoding
KR101000926B1 (ko) * 2004-03-11 2010-12-13 삼성전자주식회사 영상의 불연속성을 제거하기 위한 필터 및 필터링 방법
JP4542447B2 (ja) * 2005-02-18 2010-09-15 株式会社日立製作所 画像の符号化/復号化装置、符号化/復号化プログラム及び符号化/復号化方法
KR101204788B1 (ko) * 2004-06-03 2012-11-26 삼성전자주식회사 영상의 공간 예측 부호화 방법, 부호화 장치, 복호화 방법및 복호화 장치
CN1306824C (zh) * 2004-07-29 2007-03-21 联合信源数字音视频技术(北京)有限公司 图像边界像素扩展***及其实现方法
US7778480B2 (en) * 2004-11-23 2010-08-17 Stmicroelectronics Asia Pacific Pte. Ltd. Block filtering system for reducing artifacts and method
KR100657919B1 (ko) * 2004-12-13 2006-12-14 삼성전자주식회사 화상 데이터의 공간상 예측 장치 및 방법과 그를 이용한부호화 장치 및 방법, 화상 데이터의 공간상 예측 보상장치 및 방법과 그를 이용한 복호화 장치 및 방법
JP2007214641A (ja) 2006-02-07 2007-08-23 Seiko Epson Corp 符号化装置、復号化装置、画像処理装置及び画像処理方法をコンピュータに実行させるためのプログラム
US20070274398A1 (en) * 2006-05-23 2007-11-29 Metta Technology, Inc. Parallelization of Video Decoding on Single-Instruction, Multiple-Data Processors
KR20090074164A (ko) * 2006-09-29 2009-07-06 톰슨 라이센싱 기하학적 인트라 예측
US7991236B2 (en) * 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
EP2140687A2 (en) * 2007-04-03 2010-01-06 Gary Demos Flowfield motion compensation for video compression
JP5261376B2 (ja) * 2007-09-21 2013-08-14 パナソニック株式会社 画像符号化装置および画像復号化装置
EP2046053A1 (en) * 2007-10-05 2009-04-08 Thomson Licensing Method and device for adaptively quantizing parameters for image coding
JP4948435B2 (ja) * 2008-01-28 2012-06-06 キヤノン株式会社 映像符号化装置及び映像符号化方法
KR20090095316A (ko) 2008-03-05 2009-09-09 삼성전자주식회사 영상 인트라 예측 방법 및 장치
CN101247525B (zh) * 2008-03-24 2010-06-02 北京邮电大学 一种提高图像帧内编码速率的方法
US8681875B2 (en) * 2008-11-25 2014-03-25 Stmicroelectronics Asia Pacific Pte., Ltd. Apparatus and method for coding block boundary detection using interpolated autocorrelation
JP5238523B2 (ja) * 2009-01-13 2013-07-17 株式会社日立国際電気 動画像符号化装置、動画像復号化装置、および、動画像復号化方法
JP2010251953A (ja) * 2009-04-14 2010-11-04 Sony Corp 画像符号化装置と画像符号化方法およびコンピュータ・プログラム
KR101510108B1 (ko) 2009-08-17 2015-04-10 삼성전자주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
WO2012009540A1 (en) 2010-07-14 2012-01-19 Ntt Docomo, Inc. Low-complexity intra prediction for video coding
EP3697090B1 (en) * 2013-03-29 2022-01-05 JVCKENWOOD Corporation Image decoding device, image decoding method, and image decoding program

Also Published As

Publication number Publication date
PT3226560T (pt) 2019-10-14
KR20180026788A (ko) 2018-03-13
CN105227960A (zh) 2016-01-06
PL3522535T3 (pl) 2021-07-05
EP3522535B1 (en) 2021-03-10
PT2934008T (pt) 2016-10-18
KR101927281B1 (ko) 2018-12-10
JP5808839B2 (ja) 2015-11-10
CN103004210B (zh) 2016-01-27
ES2729031T3 (es) 2019-10-29
KR20170141289A (ko) 2017-12-22
JP2017005720A (ja) 2017-01-05
US10841613B2 (en) 2020-11-17
CA3014052A1 (en) 2012-01-19
CA3098217A1 (en) 2012-01-19
PT3522535T (pt) 2021-04-06
US10116960B2 (en) 2018-10-30
PL3226560T3 (pl) 2019-12-31
KR20180073720A (ko) 2018-07-02
EP2934008A1 (en) 2015-10-21
EP2934009A1 (en) 2015-10-21
EP2594076B1 (en) 2017-03-22
PL3570545T3 (pl) 2021-09-27
JP6828199B2 (ja) 2021-02-10
JP2014158306A (ja) 2014-08-28
EP2934009B1 (en) 2017-07-12
PL3232666T3 (pl) 2019-08-30
RU2710946C1 (ru) 2020-01-14
SG187065A1 (en) 2013-03-28
RU2013106296A (ru) 2014-10-20
ES2864048T3 (es) 2021-10-13
CA2934184C (en) 2018-09-25
KR20160092055A (ko) 2016-08-03
RU2710947C1 (ru) 2020-01-14
AU2011279139B2 (en) 2016-02-04
RU2658880C1 (ru) 2018-06-25
EP3522535A1 (en) 2019-08-07
CN105120264B (zh) 2018-06-12
ES2605530T3 (es) 2017-03-14
JP2018129851A (ja) 2018-08-16
US20130114713A1 (en) 2013-05-09
MX361484B (es) 2018-12-06
JP6484740B2 (ja) 2019-03-13
MX367865B (es) 2019-09-05
CA2934184A1 (en) 2012-01-19
EP2934008B1 (en) 2016-09-14
ES2748100T3 (es) 2020-03-13
JP6479237B2 (ja) 2019-03-06
EP3570545A1 (en) 2019-11-20
CA3014042C (en) 2021-01-05
RU2738786C2 (ru) 2020-12-16
HUE054630T2 (hu) 2021-09-28
CN105120263A (zh) 2015-12-02
EP2594076A4 (en) 2014-07-30
KR101878293B1 (ko) 2018-07-13
RU2613722C1 (ru) 2017-03-21
US20180184120A1 (en) 2018-06-28
US10397608B2 (en) 2019-08-27
CA3014131C (en) 2020-12-15
US9225986B2 (en) 2015-12-29
US20160057448A1 (en) 2016-02-25
PT3232666T (pt) 2019-06-07
US9942565B2 (en) 2018-04-10
PT2934009T (pt) 2017-08-16
ES2873847T3 (es) 2021-11-04
CA2804762A1 (en) 2012-01-19
JP5687341B2 (ja) 2015-03-18
PL2934009T3 (pl) 2017-10-31
WO2012009540A1 (en) 2012-01-19
ES2621902T3 (es) 2017-07-05
MX2019010417A (es) 2019-10-15
JP2019092208A (ja) 2019-06-13
KR101927283B1 (ko) 2019-03-12
CA3014131A1 (en) 2012-01-19
CA3014052C (en) 2020-12-15
EP3232666B1 (en) 2019-05-01
CN105227960B (zh) 2018-06-05
JP6663520B2 (ja) 2020-03-11
CN105120264A (zh) 2015-12-02
RU2579947C2 (ru) 2016-04-10
JP2013534797A (ja) 2013-09-05
CN103004210A (zh) 2013-03-27
BR112013000963A2 (pt) 2016-05-24
PL2594076T3 (pl) 2017-07-31
CA2804762C (en) 2016-11-08
KR20180075706A (ko) 2018-07-04
MX344987B (es) 2017-01-13
JP2015053728A (ja) 2015-03-19
RU2687031C1 (ru) 2019-05-06
ES2637446T3 (es) 2017-10-13
CA3096445C (en) 2022-02-22
KR101811360B1 (ko) 2017-12-22
EP2594076A1 (en) 2013-05-22
JP6321091B2 (ja) 2018-05-09
CA3098217C (en) 2022-02-22
EP3570545B1 (en) 2021-05-19
US10841614B2 (en) 2020-11-17
MX2013000372A (es) 2013-02-15
EP3226560B1 (en) 2019-09-04
KR20130088125A (ko) 2013-08-07
CN105120263B (zh) 2018-09-14
RU2019112303A (ru) 2020-10-23
PL2934008T3 (pl) 2017-01-31
KR101745928B1 (ko) 2017-06-12
JP2020099085A (ja) 2020-06-25
RU2613725C1 (ru) 2017-03-21
CA3096445A1 (en) 2012-01-19
KR20160093087A (ko) 2016-08-05
RU2019112303A3 (pt) 2020-10-23
PT3570545T (pt) 2021-06-15
US20160021392A1 (en) 2016-01-21
JP6169554B2 (ja) 2017-07-26
EP3232666A1 (en) 2017-10-18
AU2011279139A8 (en) 2013-02-21
KR101924885B1 (ko) 2018-12-04
US20190335201A1 (en) 2019-10-31
PT2594076T (pt) 2017-04-05
CA3014042A1 (en) 2012-01-19
AU2011279139A1 (en) 2013-01-24
KR101835460B1 (ko) 2018-03-08
HUE053802T2 (hu) 2021-07-28
EP3226560A1 (en) 2017-10-04
US20190335202A1 (en) 2019-10-31
JP2018129850A (ja) 2018-08-16

Similar Documents

Publication Publication Date Title
BR112013000963B1 (pt) métodos de codificação e decodificação de vídeo e codificador e decodificador de vídeo
JP7335315B2 (ja) 画像予測方法および関連装置
BR112020006568A2 (pt) combinações de predição de dependentes de posição em codificação de vídeo
BR112013016043B1 (pt) Método de decodificação de vídeo e decodificador de vídeo para prediçãode valores de pixel de pixels alvo em um bloco alvo sob um modo plano
AU2016277600B2 (en) Low-complexity intra prediction for video coding
AU2015264787B2 (en) Low-complexity intra prediction for video coding

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04N 19/593 (2014.01), H04N 19/11 (2014.01), H04N

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/07/2011, OBSERVADAS AS CONDICOES LEGAIS. (CO) 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/07/2011, OBSERVADAS AS CONDICOES LEGAIS