BR112018016440B1 - Decodificador, método para decodificar coeficientes de blocos, codificador para codificar coeficientes de blocos e meio de armazenamento legível por computador não transitório - Google Patents

Decodificador, método para decodificar coeficientes de blocos, codificador para codificar coeficientes de blocos e meio de armazenamento legível por computador não transitório Download PDF

Info

Publication number
BR112018016440B1
BR112018016440B1 BR112018016440-2A BR112018016440A BR112018016440B1 BR 112018016440 B1 BR112018016440 B1 BR 112018016440B1 BR 112018016440 A BR112018016440 A BR 112018016440A BR 112018016440 B1 BR112018016440 B1 BR 112018016440B1
Authority
BR
Brazil
Prior art keywords
block
scan
coefficient
scan order
hiding
Prior art date
Application number
BR112018016440-2A
Other languages
English (en)
Other versions
BR112018016440A2 (pt
Inventor
Alexey Konstantinovich Filippov
Vasily Alexeevich Rufitskiy
Original Assignee
Huawei Technologies Co., Ltd.
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Priority claimed from PCT/RU2016/000068 external-priority patent/WO2017138831A1/en
Publication of BR112018016440A2 publication Critical patent/BR112018016440A2/pt
Publication of BR112018016440B1 publication Critical patent/BR112018016440B1/pt

Links

Abstract

A invenção propõe um decodificador para decodificar coeficientes de blocos de uma sequência de vídeo a partir de um fluxo de bits. O decodificador compreende um módulo de descodificação configurado para descodificar um ou mais vetores coeficientes de cada bloco a partir do fluxo de bits. O decodificador compreende um módulo de verificação configurado para reconstruir, para pelo menos um bloco, informação oculta de um ou mais coeficientes desse bloco, a informação oculta que constitui ou faz parte da informação da ordem de varredura associada a esse bloco. O decodificador compreende um seletor de ordem de varredura configurado para selecionar uma ordem de varredura para cada bloco a partir de um conjunto de ordens de varredura, preferivelmente, de um conjunto de ordens de varredura pré-definidos e gerados, com base na informação de ordem de varredura associada àquele bloco. O decodificador compreende um desserializador configurado para inverter a varredura, para cada bloco, de um ou mais vetores de coeficiente daquele bloco de acordo com a ordem de varredura selecionada para aquele bloco, de modo a obter uma matriz de coeficiente.

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se de modo mais geral ao campo de processamento de vídeos e a um método e equipamento para seleção de ordem de digitalização, em particular à seleção de ordem de digitalização adaptável ao conteúdo, e refere-se especificamente a um decodificador para decodificar coeficientes de blocos de uma sequência de vídeos e a um codificador para codificar coeficientes de blocos de uma sequência de vídeos.
FUNDAMENTOS
[002] Aplicativos de comunicação e armazenamento de vídeos digitais são implementados por uma vasta gama de dispositivos digitais, tais como câmeras digitais, radiotelefones celulares, computadores portáteis, sistemas de difusão, e sistemas de teleconferência por vídeo. Uma das mais importantes e desafiadoras tarefas destes aplicativos é a compressão de vídeos. A tarefa de compressão de vídeos é complexa e é restringida por dois parâmetros contraditórios: eficiência de compressão e complexidade computacional. Padrões de codificação de vídeos, tais como ITU-T H.264/AVC ou padrão de Codificação de Vídeos de Alta Eficiência (HEVC) ITU-T H.265/HEVC, fornecem uma boa compensação entre estes parâmetros. Por aquela razão o suporte de padrões de codificação de vídeos é um requisito mandatório para quase todos os aplicativos de compressão de vídeos.
[003] Os padrões de codificação de vídeos do estado da técnica são baseados na partição de uma imagem fonte em blocos. O processamento destes blocos depende das suas dimensões, posição espacial e um modo de codificação especificado por um codificador. Os modos de codificação podem ser classificados em dois grupos de acordo com o tipo de predição: modos de intrapredição e de interpredição. Modos de intrapredição usam pixels da mesma imagem para gerar amostras de referência para calcular os valores de predição para os pixels do bloco sendo reconstruído. A intrapredição pode também ser denominada de predição espacial. Os modos de interpredição são projetados para predição temporal e utilizam amostras de referência de imagens anteriores ou seguintes para prever pixels dos blocos da imagem atual. Após um estágio de predição, é executada codificação de transformação para um erro de predição que é a diferença entre um sinal original e sua predição. Em seguida, os coeficientes de transformação e informações colaterais são codificados usando um codificador de entropia tipo, por exemplo, Codificação Aritmética Binária Adaptável ao Contexto (CABAC) para AVC/H.264 e HEVC/H.265.
[004] Evidentemente, erros de predição têm diferentes estatísticas para diferentes modos de predição e dependem fortemente do conteúdo a ser previsto. Portanto, diferentes transformações são rentáveis do ponto de vista de desempenho de compressão para diferentes casos. Para aumentar a eficiência de codificação do estágio de codificação de transformação, podem ser usadas múltiplas transformações que possuem diferentes compactações de energia para diferentes casos específicos.
[005] O padrão ITU-T H.265/HEVC conhecido, por exemplo, a partir de ISO/IEC 23008-2:2013, “Tecnologia da informação - Codificação de alta eficiência e entrega de mídia em ambientes heterogêneos - Parte 2: Codificação de vídeos de alta eficiência”, novembro de 2013, apresenta um conjunto de ferramentas de codificação de vídeos do estado da técnica que fornecem uma compensação razoável entre eficiência de codificação e complexidade computacional. Uma visão geral sobre o padrão ITU-T H.265/HEVC é dada no artigo por Gary J. Sullivan, “Visão Geral do Padrão de Codificação de Vídeos de Alta Eficiência (HEVC)”, em IEEE Transactions on Circuits and Systems for Video Technology, Vol. 22, No. 12, dezembro de 2012, cujo teor total é incorporado neste documento por referência.
[006] De modo similar ao padrão de codificação de vídeos ITU-T H.264/AVC, o padrão de codificação de vídeos HEVC/H.265 propicia uma divisão da imagem fonte em blocos, por exemplo, unidades de codificação (CUs). Cada uma das CUs pode ainda ser dividida tanto em CUs menores como em unidades de predição (PUs). Uma PU pode ser intrapredita ou interpredita de acordo com o tipo de processamento aplicado aos pixels da PU. No caso de interpredição, uma PU representa uma área de pixels que é processada por compensação de movimento usando um vetor de movimento especificado para uma PU. Para intrapredição a PU especifica o modo de predição para um conjunto de unidades de transformação (TUs). Uma TU pode ter diferentes dimensões (por exemplo, 4x4, 8x8, 16x16 e 32x32 pixels) e pode ser processada de diferentes modos. Para uma transformação de TU codificação está sendo executada, isto é, o erro de predição está sendo transformado com uma transformada discreta de cosseno ou uma transformada discreta de seno - no padrão HEVC/H.265, é aplicada a blocos intracodificados - e quantizado. Portanto, pixels reconstruídos contêm ruído de quantização e artefatos de bloqueamento que podem influenciar a precisão da predição.
[007] Em todos os padrões anteriores de codificação de vídeos exceto HEVC/H.265, apenas uma transformação foi usada para manter o projeto simples. O padrão HEVC/H.265 especifica duas transformações para intracodificação: DST para blocos 4x4, porque esta transformação fornece uma melhor compactação de energia para pequenos blocos intrapreditos, e DCT para outros blocos.
[008] Além disso, é adotada uma técnica de digitalização de coeficientes dependente de modo (MDCS) para o padrão HEVC/H.265. A ideia básica por trás disto é selecionar uma ordem de digitalização sujeita a um modo selecionado de intrapredição. Para blocos intracodificados, a ordem de digitalização de um bloco de transformação (TB) 4x4 e de um bloco luma TB 8x8 é determinada pelo modo de intrapredição, vide Joel Sole, Rajan Joshi, Nguyen Nguyen, Tianying Ji, Marta Karczewicz, Gordon Clare, Felix Henry e Alberto Duenas. “Codificação de Coeficientes de Transformação em HEVC”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 22, No. 12, dezembro de 2012, pp. 1765-1777. Cada um dos 35 modos de intrapredição utiliza uma das três possíveis ordens de digitalização: diagonal, horizontal ou vertical. Uma tabela de pesquisa mapeia o modo de intrapredição para uma das digitalizações.
[009] Esta ferramenta explora a correlação horizontal ou vertical do residual dependendo do modo de intrapredição. Por exemplo, para um modo de predição horizontal a energia de coeficientes de transformação é agrupada nas primeiras poucas colunas, de modo que uma digitalização vertical resulta em menos caixas sendo codificadas por entropia. De modo similar para uma predição vertical, uma digitalização horizontal é benéfica. Experimentos mostraram que a inclusão de digitalizações horizontais e verticais para grandes TBs oferece pouca eficiência de compressão, de modo que a aplicação destas digitalizações é limitada aos dois menores TBs.
[0010] Técnicas similares a MDCS são consideradas no documento Yung-Lyul Lee, Ki-Hun Han, Dong-Gyu Sim e Jeongil Seo. “Digitalização Adaptativa para Intracodificação H.264/AVC”, ETRI Journal, Volume 28, Número 5, outubro de 2006, pp. 668-671, no documento Byeong-Doo Choi, Jin-Hyung Kim e Sung-Jea Ko. “Digitalização Adaptativa de Coeficientes Baseada no Modo de Intrapredição”, ETRI Journal, Volume 29, Número 5, outubro de 2007, pp. 694-696, e no documento Md. Salah Uddin Yusuf e Mohiuddin Ahmad. “Um Novo Esquema de Digitalização para Predição Direcional Espacial de Intracodificação AVS”, International Journal of Advanced Research in Electrical Electronics and Instrumentation Engineering, Vol. 2, Questão 8, agosto de 2013, pp. 41204126. As ordens de digitalização diferem daquelas que são usadas no padrão HEVC/H.265. Também é proposto mapear modos de intrapredição para ordens de digitalização.
[0011] Além disso, o modo de partição - como conhecido a partir de Bae Keun Lee, Jae Cheol Kwom e Joo Young Kim. “Método e Equipamento para Digitalizar Coeficientes Baseado em Modo de Partição de Unidade de Predição”, Publicação de Pedido de Patente dos Estados Unidos, US 2014/0314143 A1, PCT/KR2012/009373, 08 de novembro de 2012 -, e parâmetros de quantização (QP) - como conhecidos a partir de Thai-Há Nguyen, Yoichi Yagasaki e Ali Tabatabai. “Digitalização e aplicações de digitalização adaptativa de coeficientes QP”, Publicação de Pedido de Patente dos Estados Unidos, US 2011/0249726 A1, 01 de abril de 2011 - podem ser usados como recursos para selecionar uma ordem de digitalização não apenas para intracodificação, mas também para intercodificação.
[0012] Portanto, existe uma ampla variedade de ordens de digitalização, as quais podem ser eficientes para os mesmos modos e dimensões de TU. Esta é a principal razão porque um procedimento baseado em RDO (Otimização de Taxa-Distorção) ou similar - por exemplo, baseado em distorção ou análise de atividades - pode ser usado para tomar uma decisão final sobre qual das potenciais ordens de digitalização deve ser selecionada.
[0013] Um exemplo de como é possível selecionar uma ordem de digitalização em um procedimento baseado em RDO é conhecido, por exemplo, a partir de Muhammed Zeyd Coban e Marta Karczewicz. “Digitalização adaptativa de coeficientes de transformação para codificação de vídeos”, Publicação de Pedido de Patente dos Estados Unidos, US 2012/0099646 A1, 17 de outubro de 2011. Neste caso, é selecionada a ordem de digitalização que fornece o menor custo RD. Portanto, a principal vantagem desta técnica é que uma ordem de digitalização selecionada fornece o maior ganho de codificação. Portanto, a eficiência de codificação desta técnica é maior que aquela para outros métodos se a sobrecarga de sinalização não for levada em consideração.
[0014] Este estado da técnica propõe dois algoritmos para selecionar a ordem de digitalização que fornece o maior ganho de codificação. A principal característica distinta entre estes dois algoritmos é que são usados diferentes mecanismos para detectar tais TBs onde esta técnica de seleção adaptativa de ordem de digitalização é inaplicável, isto é, é usada uma ordem de digitalização padrão. Em um primeiro algoritmo, o número de coeficientes de transformação significativos é comparado com um número limite. Em um segundo algoritmo, a posição dos últimos coeficientes de transformação significativos é comparada com uma posição limite. Em contraste com as técnicas previamente descritas, uma ordem de digitalização selecionada deverá ser assinalada para ambos estes casos, de modo que um decodificador possa aplicar uma ordem de digitalização correta aos coeficientes de transformação recebidos. Portanto, a principal desvantagem das técnicas que usam um procedimento de tomada de decisão baseada em RDO é uma sobrecarga de sinalização.
[0015] Outro modo para melhorar a eficiência de compressão quando comparada a MDCS é adaptar uma ordem de digitalização de acordo com as estatísticas coletadas para blocos que têm os valore similares de parâmetros tais como modo de intrapredição, modo de partição, dimensão de blocos, etc. ao invés de utilizar ordens de digitalização previamente definidas. Consequentemente, são definidas ordens iniciais de digitalização para utilizar nos casos em que uma estatística não é suficiente. Quando um montante dos blocos usados para coletar as estatísticas exceder um limite, a ordem de digitalização pode ser adaptada baseada nas estatísticas coletadas, vide Yan Ye e Marta Karczewicz. “Digitalização adaptativa de coeficientes para codificação de vídeos”, Patente dos Estados Unidos, US 8.488.668 B2, 04 de junho de 2008. Uma técnica similar é conhecida a partir de Sridhar Srinivasan. “Ordem de digitalização adaptativa de coeficientes”, Especificação de Patente Europeia, EP 1679903 B1, 30 de novembro de 2005.
[0016] Contudo, tal ordem de digitalização adaptativa baseada em estatísticas coletadas de blocos previamente codificados ou decodificados nem sempre fornece uma eficiência de codificação que seja maior que ordens de digitalização predefinidas tais como digitalizações em ziguezague, diagonais, verticais, horizontais, helicoidais horárias e anti-horárias, etc.
SUMÁRIO
[0017] Tendo reconhecido os problemas e desvantagens acima mencionados, a presente invenção visa aperfeiçoar o estado da técnica. Em particular, o objetivo da presente invenção é fornecer um decodificador de vídeos, um método de decodificação, um codificador de vídeos e um método de codificação para uma eficiência de codificação melhorada.
[0018] A presente invenção pretende em particular melhorar a eficiência de codificação por meio de uma ordem de digitalização melhorada para digitalizar uma matriz de coeficientes em um ou mais vetores de coeficientes ou para digitalizar inversamente um ou mais vetores de coeficientes em uma matriz de coeficientes.
[0019] Além disso, a presente invenção pretende melhorar a eficiência de codificação mediante redução da sobrecarga de sinalização.
[0020] O objetivo acima mencionado da presente invenção é alcançado pela solução fornecida nas reivindicações independentes anexas. Implementações vantajosas da presente invenção são ainda definidas nas respectivas reivindicações dependentes.
[0021] Um primeiro aspecto da presente invenção fornece um decodificador para decodificar coeficientes de blocos de uma sequência de vídeos a partir de um fluxo de bits. O decodificador compreende um módulo de lista de configurações de digitalizações configurado para fornecer uma ou mais ordens de digitalização predefinidas. Uma ordem de digitalização é também conhecida na técnica como um padrão de digitalização. O decodificador compreende um gerador de ordens de digitalização configurado para gerar uma ou mais ordens de digitalização. O decodificador compreende um seletor de ordens de digitalização configurado para selecionar uma ordem de digitalização para cada bloco a partir das ordens de digitalização predefinidas e geradas com base nas informações de ordens de digitalização contidas no fluxo de bits. O decodificador compreende um módulo de decodificação configurado para decodificar um ou mais vetores de coeficientes de cada bloco a partir do fluxo de bits. O decodificador compreende um desserializador configurado para digitalizar inversamente, para cada bloco, o um ou mais vetores de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter uma matriz de coeficientes. O gerador de ordens de digitalização é configurado para gerar a uma ou mais ordens de digitalização que dependem da uma ou mais matrizes de coeficientes previamente obtidas de blocos da sequência de vídeos.
[0022] Deste modo, a presente invenção é vantajosa pelo fato de que fornece tanto ordens de digitalização predefinidas como ordens de digitalização geradas adaptáveis ao conteúdo. Ao estender o conjunto de ordens de digitalização disponíveis, a eficiência de taxa-distorção de quantização pode ser consequentemente melhorada.
[0023] Em uma forma de implementação do decodificador de acordo com o primeiro aspecto da invenção, o módulo de lista padrão de digitalização é configurado para fornecer uma ou mais ordens de digitalização predefinidas para cada uma de uma pluralidade de conjuntos de parâmetros de codificação. O gerador de ordens de digitalização é configurado para gerar uma ordem de digitalização para cada um dos conjuntos de parâmetros de codificação que dependem da uma ou mais matrizes de coeficientes previamente obtidas associadas àquele conjunto de parâmetros de codificação. O seletor de ordens de digitalização é configurado para selecionar uma ordem de digitalização para cada bloco mediante determinação de um conjunto de parâmetros de codificação daquele bloco, e selecionar a ordem de digitalização para a matriz de coeficientes obtida para aquele bloco a partir das ordens de digitalização predefinidas e geradas para o conjunto de parâmetros de codificação determinado.
[0024] Deste modo, tanto as ordens de digitalização predefinidas como as ordens de digitalização geradas adaptáveis ao conteúdo podem ser fornecidas para cada conjunto de parâmetros de codificação. Sendo assim, diferentes ordens de digitalização podem ser geradas para diferentes conjuntos de parâmetros de codificação, de modo que o conjunto de ordens de digitalização disponíveis possa ser aumentado e adaptado para cada conjunto de parâmetros de codificação. Portanto, a ordem de digitalização selecionada pode melhorar ainda mais a eficiência de taxa-distorção.
[0025] Em particular, cada conjunto de parâmetros de codificação pode corresponder, por exemplo, a uma combinação de um ou mais de um modo de predição, um modo de partição, um ou mais parâmetros de transformação, e um ou mais parâmetros de quantização.
[0026] Em uma forma de implementação do decodificador de acordo com o primeiro aspecto da invenção, o decodificador compreende um estimador de distribuição de coeficientes configurado para fornecer, para cada um dos conjuntos de parâmetros de codificação, uma estatística de distribuição de uma ou mais matrizes de coeficientes previamente obtidas associadas àquele conjunto de parâmetros de codificação. O gerador de ordens de digitalização é configurado para gerar a ordem de digitalização para cada um dos conjuntos de parâmetros de codificação que dependem da estatística de distribuição para aquele conjunto de parâmetros de codificação.
[0027] Deste modo, as ordens de digitalização geradas podem refletir uma estatística de distribuição de matrizes de coeficientes anteriores. As ordens de digitalização geradas podem, portanto, fornecer uma boa eficiência de codificação para subsequentes matrizes de coeficientes se a estatística de distribuição das matrizes subsequentes for similar àquela das matrizes de coeficientes anteriores.
[0028] Em uma forma de implementação do decodificador de acordo com o primeiro aspecto da invenção, se a ordem de digitalização selecionada para um determinado bloco for predefinida, o estimador de distribuição de coeficientes é configurado para não atualizar ou é configurado para reiniciar a estatística de distribuição para o conjunto de parâmetros de codificação do determinado bloco.
[0029] Deste modo, se a ordem de digitalização selecionada para um determinado bloco for uma ordem de digitalização predefinida, isto significa que, para o conjunto de parâmetros de codificação do determinado bloco, a ordem de digitalização gerada pode fornecer uma eficiência de codificação que é pior que aquela das ordens de digitalização predefinidas. Portanto, o determinado bloco apresenta uma estatística de distribuição que não corresponde àquela das matrizes de coeficientes anteriores, de modo que a estatística de distribuição do determinado bloco é preferivelmente não usada para atualizar a estatística de distribuição fornecida pelo estimador de distribuição de coeficientes. Alternativamente, pode ser preferível reiniciar a estatística de distribuição fornecida pelo estimador de distribuição de coeficientes, uma vez que a estatística de matrizes de coeficientes anteriores pode não corresponder mais à estatística das matrizes de coeficientes atuais.
[0030] Em uma forma de implementação do decodificador de acordo com o primeiro aspecto da invenção, o módulo de decodificação é configurado para analisar, para cada bloco, informações de parâmetros de codificação a partir do fluxo de bits. O seletor de ordens de digitalização é configurado para determinar o conjunto de parâmetros de codificação de um determinado bloco de acordo com as informações de parâmetros de codificação analisadas para aquele determinado bloco.
[0031] Deste modo, o decodificador pode obter informações referentes ao conjunto de parâmetros de codificação e usar as ordens de digitalização predefinidas e geradas que correspondem a este conjunto de parâmetros de codificação, de modo a melhorar a eficiência de codificação.
[0032] Em uma forma de implementação do decodificador de acordo com o primeiro aspecto da invenção, o módulo de decodificação é configurado para analisar as informações de ordens de digitalização que identificam a ordem de digitalização selecionada a partir do fluxo de bits.
[0033] Deste modo, o decodificador está apto a identificar a ordem de digitalização selecionada a partir do fluxo de bits e, dependendo de esta ordem de digitalização selecionada ser predefinida ou gerada, o decodificador pode corretamente digitalizar inversamente os vetores de coeficientes e pode, por exemplo, atualizar ou não corretamente a estatística de distribuição fornecida pelo estimador de distribuição de coeficientes.
[0034] As funções do decodificador de acordo com o primeiro aspecto da invenção e de quaisquer funções de qualquer de suas formas de implementação podem ser executadas por um processador ou um computador, e qualquer de seus meios pode ser implementado como software e/ou hardware em tal processador ou computador.
[0035] Um segundo aspecto da presente invenção fornece um método para decodificar coeficientes de blocos de uma sequência de vídeos a partir de um fluxo de bits. O método compreende fornecer uma ou mais ordens de digitalização predefinidas. O método compreende gerar uma ou mais ordens de digitalização. O método compreende selecionar uma ordem de digitalização para cada bloco a partir das ordens de digitalização predefinidas e geradas com base nas informações de ordens de digitalização contidas no fluxo de bits. O método compreende decodificar um ou mais vetores de coeficientes de cada bloco a partir do fluxo de bits. O método compreende digitalizar inversamente, para cada bloco, o um ou mais vetores de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter uma matriz de coeficientes. A geração de uma ou mais ordens de digitalização compreende gerar a uma ou mais ordens de digitalização que dependem da uma ou mais matrizes de coeficientes previamente obtidas de blocos da sequência de vídeos.
[0036] Recursos ou implementações adicionais do método de acordo com o segundo aspecto da invenção podem executar a funcionalidade do decodificador de acordo com o primeiro aspecto da invenção e suas diferentes formas de implementação.
[0037] O método de acordo com o segundo aspecto da invenção ou de qualquer de suas formas de implementação pode ser executado por um processador ou um computador.
[0038] Um terceiro aspecto da presente invenção fornece um codificador para codificar coeficientes de blocos de uma sequência de vídeos em um fluxo de bits, os coeficientes de cada bloco estando contidos em uma respectiva matriz de coeficientes. O codificador compreende um módulo de lista padrão de digitalização configurado para fornecer uma ou mais ordens de digitalização predefinidas. O codificador compreende um gerador de ordens de digitalização configurado para gerar uma ou mais ordens de digitalização. O codificador compreende um seletor de ordens de digitalização configurado para selecionar uma ordem de digitalização para cada bloco a partir das ordens de digitalização predefinidas e geradas. O codificador compreende um serializador configurado para digitalizar, para cada bloco, a matriz de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter um ou mais vetores de coeficientes. O codificador compreende um módulo de codificação configurado para codificar os vetores de coeficientes em um fluxo de bits. O gerador de ordens de digitalização é configurado para gerar a uma ou mais ordens de digitalização que dependem da uma ou mais matrizes de coeficientes previamente digitalizadas de blocos da sequência de vídeos.
[0039] Deste modo, a presente invenção é vantajosa pelo fato de que fornece tanto ordens de digitalização predefinidas como ordens de digitalização geradas adaptáveis ao conteúdo. Ao estender o conjunto de ordens de digitalização disponíveis, a eficiência de taxa-distorção de quantização pode ser consequentemente melhorada.
[0040] Em uma forma de implementação do codificador de acordo com o terceiro aspecto da invenção, o módulo de lista padrão de digitalização é configurado para fornecer uma ou mais ordens de digitalização predefinidas para cada uma de uma pluralidade de conjuntos de parâmetros de codificação. O gerador de ordens de digitalização é configurado para gerar uma ordem de digitalização para cada um dos conjuntos de parâmetros de codificação que dependem da uma ou mais matrizes de coeficientes previamente digitalizadas associadas àquele conjunto de parâmetros de codificação. O seletor de ordens de digitalização é configurado para selecionar uma ordem de digitalização para cada bloco mediante determinação de um conjunto de parâmetros de codificação daquele bloco, e selecionar a ordem de digitalização para a matriz de coeficientes daquele bloco a partir das ordens de digitalização predefinidas e geradas para o conjunto de parâmetros de codificação determinado.
[0041] Deste modo, tanto as ordens de digitalização predefinidas como as ordens de digitalização geradas adaptáveis ao conteúdo podem ser fornecidas para cada conjunto de parâmetros de codificação. Sendo assim, diferentes ordens de digitalização podem ser geradas para diferentes conjuntos de parâmetros de codificação, de modo que o conjunto de ordens de digitalização disponíveis possa ser aumentado e adaptado para cada conjunto de parâmetros de codificação. Portanto, a ordem de digitalização selecionada pode melhorar ainda mais a eficiência de taxa-distorção.
[0042] Em particular, cada conjunto de parâmetros de codificação pode corresponder a uma combinação de um ou mais de um modo de predição, um modo de partição, um ou mais parâmetros de transformação, e um ou mais parâmetros de quantização.
[0043] Em uma forma de implementação do codificador de acordo com o terceiro aspecto da invenção, o codificador compreende um estimador de distribuição de coeficientes configurado para fornecer, para cada um dos conjuntos de parâmetros de codificação, uma estatística de distribuição de uma ou mais matrizes de coeficientes previamente digitalizados associadas àquele conjunto de parâmetros de codificação. O gerador de ordens de digitalização é configurado para gerar a ordem de digitalização para cada um dos conjuntos de parâmetros de codificação que depende da estatística de distribuição para aquele conjunto de parâmetros de codificação.
[0044] Deste modo, as ordens de digitalização geradas podem refletir uma estatística de distribuição de matrizes de coeficientes anteriores, de modo que estas ordens de digitalização geradas podem fornecer uma boa eficiência de codificação para subsequentes matrizes de coeficientes no caso de a estatística de distribuição das matrizes subsequentes ser similar àquela das matrizes de coeficientes anteriores.
[0045] Em uma forma de implementação do codificador de acordo com o terceiro aspecto da invenção, se a ordem de digitalização selecionada para uma determinada matriz de coeficientes for predefinida, o estimador de distribuição de coeficientes é configurado para não atualizar ou é configurado para reiniciar a estatística de distribuição para o conjunto de parâmetros de codificação do determinado bloco.
[0046] Deste modo, se a ordem de digitalização selecionada para um determinado bloco for uma ordem de digitalização predefinida, isto significa que, para o conjunto de parâmetros de codificação do determinado bloco, a ordem de digitalização gerada pode fornecer uma eficiência de codificação que é pior que aquela das ordens de digitalização predefinidas. Portanto, o determinado bloco apresenta uma estatística de distribuição que não corresponde àquela das matrizes de coeficientes anteriores, de modo que a estatística de distribuição do determinado bloco é preferivelmente não usada para atualizar a estatística de distribuição fornecida pelo estimador de distribuição de coeficientes. Alternativamente, pode ser preferível reiniciar a estatística de distribuição fornecida pelo estimador de distribuição de coeficientes, uma vez que a estatística de matrizes de coeficientes anteriores pode não corresponder mais à estatística das matrizes de coeficientes atuais.
[0047] Em uma forma de implementação do codificador de acordo com o terceiro aspecto da invenção, o codificador compreende um módulo de sinalização configurado para adicionar informações de ordens de digitalização que identificam a ordem de digitalização selecionada a partir do fluxo de bits.
[0048] Deste modo, é vantajoso que o decodificador esteja apto a identificar a ordem de digitalização selecionada a partir do fluxo de bits e, dependendo de esta ordem de digitalização selecionada ser predefinida ou gerada, o decodificador pode corretamente digitalizar inversamente os vetores de coeficientes e pode, por exemplo, atualizar ou não corretamente a estatística de distribuição fornecida pelo estimador de distribuição de coeficientes.
[0049] Em uma forma de implementação do codificador de acordo com o terceiro aspecto da invenção, o seletor de ordens de digitalização é configurado para selecionar a ordem de digitalização a partir das ordens de digitalização predefinidas e geradas com base em uma função custo.
[0050] Deste modo, um procedimento baseado na função custo pode ser usado para selecionar com precisão uma ordem de digitalização entre as ordens de digitalização geradas e as ordens de digitalização predefinidas. Consequentemente, mesmo se ordens de digitalização geradas baseadas em estatísticas coletadas de blocos previamente codificados ou decodificados não fornecerem uma melhor eficiência de codificação que ordens de digitalização predefinidas, a seleção de ordens de digitalização pode melhorar a eficiência de codificação. Em particular, a função custo pode, por exemplo, ser uma função de Otimização de Taxa-Distorção (RDO).
[0051] As funções do codificador de acordo com o terceiro aspecto da invenção e de quaisquer funções de qualquer de suas formas de implementação podem ser executadas por um processador ou um computador, e qualquer de seus meios pode ser implementado como software e/ou hardware em tal processador ou computador.
[0052] Um quarto aspecto da presente invenção fornece um método para codificar coeficientes de blocos de uma sequência de vídeos em um fluxo de bits, os coeficientes de cada bloco estando contidos em uma respectiva matriz de coeficientes. O método compreende fornecer uma ou mais ordens de digitalização predefinidas. O método compreende gerar uma ou mais ordens de digitalização. O método compreende selecionar uma ordem de digitalização para cada bloco a partir das ordens de digitalização predefinidas e geradas. O método compreende digitalizar, para cada bloco, os coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter um ou mais vetores de coeficientes. O método compreende codificar os vetores de coeficientes no fluxo de bits. A geração de uma ou mais ordens de digitalização compreende gerar a uma ou mais ordens de digitalização que dependem da uma ou mais matrizes de coeficientes previamente digitalizadas de blocos da sequência de vídeos.
[0053] Recursos ou implementações adicionais do método de acordo com o quarto aspecto da invenção podem executar a funcionalidade do codificador de acordo com o terceiro aspecto da invenção e suas diferentes formas de implementação.
[0054] O método de acordo com o quarto aspecto da invenção ou de qualquer de suas formas de implementação pode ser executado por um processador ou um computador.
[0055] Um quinto aspecto da presente invenção fornece um decodificador, preferivelmente de acordo com o primeiro aspecto, para decodificar coeficientes de blocos de uma sequência de vídeos a partir de um fluxo de bits. O decodificador compreende um módulo de decodificação configurado para decodificar um ou mais vetores de coeficientes de cada bloco a partir do fluxo de bits. O decodificador compreende um módulo de verificação configurado para reconstruir, para ao menos um bloco, informações ocultas a partir de um ou mais coeficientes daquele bloco, as informações ocultas constituindo ou fazendo parte de informações de ordens de digitalização associadas àquele bloco. O decodificador compreende um seletor de ordens de digitalização configurado para selecionar uma ordem de digitalização para cada bloco a partir de um conjunto de ordens de digitalização, preferivelmente a partir de um conjunto de ordens de digitalização predefinidas e geradas, com base nas informações de ordens de digitalização associadas àquele bloco. O decodificador compreende um desserializador configurado para digitalizar inversamente, para cada bloco, o um ou mais vetores de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter uma matriz de coeficientes.
[0056] Deste modo, a eficiência de codificação é vantajosamente melhorada pelo fato de que a sobrecarga de sinalização é reduzida.
[0057] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o módulo de verificação é configurado para reconstruir, para ao menos um bloco, as informações ocultas a partir de ao menos um vetor de ocultação de coeficientes escolhido de entre o um ou mais vetores de coeficientes obtidos para aquele bloco. Em particular, o um ou mais vetores de coeficientes podem corresponder a um respectivo grupo de coeficientes (CG), o vetor de ocultação de coeficientes então correspondendo ao grupo de coeficientes no qual a ocultação de dados é realizada. Deste modo, a reconstrução das informações ocultas a partir de diversos vetores de coeficientes ocultos, por exemplo preferivelmente a partir de diversos grupos de coeficientes, é vantajosa pelo fato de mais bits poderem ser ocultos e um maior índice para as informações de ordens de digitalização poder ser reconstruído.
[0058] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o módulo de verificação é configurado para reconstruir, para ao menos um bloco, as informações ocultas a partir do vetor de ocultação de coeficientes que depende de uma condição de ocultação, a condição de ocultação compreendendo uma comparação de um parâmetro que depende do vetor de ocultação de coeficientes com um limite. Deste modo, a ocultação é facilitada.
[0059] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o parâmetro é: - um número de coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma distância entre primeiro e último coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma razão de um valor máximo absoluto para um valor mínimo absoluto não-zero dos coeficientes dentro do vetor de ocultação de coeficientes. A condição de ocultação é verdadeira se o parâmetro estiver acima do limite, e falsa se o parâmetro estiver abaixo do limite. Deste modo, a condição de ocultação é vantajosamente propiciada.
[0060] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o módulo de verificação é configurado para verificar a condição de ocultação, e para reconstruir as informações ocultas a partir do vetor de ocultação de coeficientes se a condição de ocultação for verdadeira. Deste modo, a ordem de digitalização pode ser selecionada sem informações colaterais adicionais provenientes do fluxo de bits.
[0061] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, se a condição de ocultação for falsa, o seletor de ordens de digitalização é configurado para selecionar uma ordem de digitalização padrão predefinida. Deste modo, uma ordem de digitalização pode ser selecionada mesmo se não for possível ocultação no lado do codificador.
[0062] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o módulo de verificação é configurado para reconstruir as informações ocultas a partir do vetor de ocultação de coeficientes mediante aplicação de uma função verificação ao vetor de ocultação de coeficientes, um resultado da função verificação sendo as informações ocultas. Deste modo, a ordem de digitalização pode ser vantajosamente obtida a partir dos coeficientes.
[0063] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o resultado da função verificação depende das coordenadas (x, y), dentro da matriz de coeficientes, do último coeficiente significativo do vetor de ocultação de coeficientes. A função verificação pode, por exemplo, ser a seguinte função: mod(x + y + R,2) x e y sendo as coordenadas e R sendo um valor inteiro. Deste modo, o resultado da função verificação pode ser obtido diretamente a partir das coordenadas de coeficientes.
[0064] Em uma forma de implementação do decodificador de acordo com o quinto aspecto da invenção, o módulo de verificação é configurado para reconstruir, para um primeiro bloco, informações ocultas a partir de um ou mais coeficientes do primeiro bloco, as informações ocultas constituindo ou fazendo parte de informações de ordens de digitalização associadas ao primeiro bloco, e o seletor de ordens de digitalização é configurado para selecionar, para o primeiro e ao menos um segundo bloco, uma ordem de digitalização com base nas informações de ordens de digitalização associadas ao primeiro bloco. Deste modo, esta forma de implementação fornece uma decodificação de “modo de mesclagem”, na qual o valor da ordem de digitalização selecionada para o segundo bloco é reconstruído/predito usando os valores de coeficientes do primeiro bloco sem ocultar qualquer coisa dentro dos coeficientes do segundo bloco. Por exemplo, o primeiro e o segundo blocos são adjacentes espacialmente.
[0065] Em particular, o seletor de ordens de digitalização pode ser configurado para selecionar, para um grupo de blocos, uma ordem de digitalização com base nas informações de ordens de digitalização associadas ao primeiro bloco, onde o grupo de blocos pode compreender o primeiro bloco e uma pluralidade de segundos blocos. O grupo de blocos pode incluir diversos blocos dentro de um grupo de blocos que tem ao menos um índice de digitalização não-padrão oculto dentro de seus coeficientes. Alternativamente, o grupo de blocos pode incluir diversos blocos sequencialmente codificados, de modo que os referidos blocos codificados tenham o mesmo índice de digitalização. Alternativamente, o grupo de blocos pode incluir diversos blocos e/ou diversos blocos sequencialmente codificados com coeficientes para os quais a condição de ocultação é falsa.
[0066] Em particular, no modo de mesclagem são disponíveis diversas opções para o decodificador saber que nenhuma informação de ordem de digitalização está oculta nos coeficientes do ao menos um segundo bloco. Primeiramente, informações colaterais podem ser codificadas no fluxo de bits, por exemplo, uma bandeira para um grupo de blocos que habilita ou desabilita a utilização do modo de mesclagem para aqueles. Em segundo lugar, sem informações colaterais, é proposto aplicar a regra de mesclagem ao segundo bloco dependendo da condição de ocultação e conjunto de parâmetros de codificação do primeiro bloco e/ou do segundo bloco. Em outras palavras, uma mesclagem é aplicada ao segundo bloco se a condição de ocultação não for satisfeita para o segundo bloco, isto é, a ordem de digitalização para o segundo bloco é selecionada com base nas informações de ordens de digitalização associadas ao primeiro bloco. Em terceiro lugar, é proposta uma combinação das duas alternativas, a referida combinação compreendendo informações colaterais no fluxo de bits e aplicando uma mesclagem dependente da condição de ocultação.
[0067] As funções do decodificador de acordo com o quinto aspecto da invenção e de quaisquer funções de qualquer de suas formas de implementação podem ser executadas por um processador ou um computador, e qualquer de seus meios pode ser implementado como software e/ou hardware em tal processador ou computador.
[0068] Um sexto aspecto da presente invenção fornece um método, preferivelmente de acordo com o segundo aspecto, para decodificar coeficientes de blocos de uma sequência de vídeos a partir de um fluxo de bits. O método compreende decodificar um ou mais vetores de coeficientes de cada bloco a partir do fluxo de bits. O método compreende reconstruir, para ao menos um bloco, informações ocultas a partir de um ou mais coeficientes daquele bloco, as informações ocultas constituindo ou fazendo parte de informações de ordens de digitalização associadas àquele bloco. O método compreende selecionar uma ordem de digitalização para cada bloco a partir de um conjunto de ordens de digitalização, preferivelmente a partir de um conjunto de ordens de digitalização predefinidas e geradas, com base nas informações de ordens de digitalização associadas àquele bloco. O método compreende digitalizar inversamente, para cada bloco, o um ou mais vetores de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco, deste modo obtendo uma matriz de coeficientes.
[0069] Recursos ou implementações adicionais do método de acordo com o sexto aspecto da invenção podem executar a funcionalidade do decodificador de acordo com o quinto aspecto da invenção e suas diferentes formas de implementação.
[0070] O método de acordo com o sexto aspecto da invenção ou de qualquer de suas formas de implementação pode ser executado por um processador ou um computador.
[0071] Um sétimo aspecto da presente invenção fornece um codificador, preferivelmente de acordo com o terceiro aspecto, para codificar coeficientes de blocos de uma sequência de vídeos em um fluxo de bits, os coeficientes de cada bloco estando contidos em uma respectiva matriz de coeficientes. O codificador compreende um seletor de ordens de digitalização configurado para selecionar uma ordem de digitalização para cada bloco a partir de um conjunto de ordens de digitalização, preferivelmente a partir de um conjunto de ordens de digitalização predefinidas e geradas. O codificador compreende um serializador configurado para digitalizar, para cada bloco, a matriz de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter um ou mais vetores de coeficientes. O codificador compreende um módulo de ocultação configurado para ocultar, para ao menos um bloco, informações de ordens de digitalização que identificam a ordem de digitalização selecionada para aquele bloco ao menos parcialmente em um ou mais coeficientes daquele bloco (isto é, configurado para ocultar aquelas informações de ordem de digitalização ou parte daquelas naqueles um ou mais coeficientes). O codificador compreende um módulo de codificação configurado para codificar os vetores de coeficientes no fluxo de bits. Deste modo, a eficiência de codificação pode ser melhorada pela redução da sobrecarga de sinalização.
[0072] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, o módulo de ocultação é configurado para ocultar, para ao menos um bloco, as informações de ordens de digitalização em ao menos um vetor de ocultação de coeficientes escolhido entre o um ou mais vetores de coeficientes obtidos para aquele bloco.
[0073] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, o módulo de ocultação é configurado para ocultar, para ao menos um bloco, as informações de ordens de digitalização no vetor de ocultação de coeficientes que depende de uma condição de ocultação, a condição de ocultação compreendendo uma comparação de um parâmetro que depende do vetor de ocultação de coeficientes com um limite.
[0074] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, o parâmetro é: - um número de coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma distância entre primeiro e último coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma razão de um valor máximo absoluto para um valor mínimo absoluto não-zero dos coeficientes dentro do vetor de ocultação de coeficientes, onde a condição de ocultação é verdadeira se o parâmetro estiver acima do limite, e falsa se o parâmetro estiver abaixo do limite.
[0075] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, o módulo de ocultação é configurado para verificar a condição de ocultação, e para ocultar as informações de ordens de digitalização no vetor de ocultação de coeficientes se a condição de ocultação for verdadeira.
[0076] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, se a condição de ocultação for falsa, o seletor de ordens de digitalização é configurado para selecionar recursivamente outra ordem de digitalização a partir do conjunto de ordens de digitalização até que a condição de ocultação para aquela outra ordem de digitalização selecionada seja verdadeira. Deste modo, a seleção de outras ordens de digitalização é vantajosa pelo fato de que é possível executar ocultação de dados mesmo se a primeira ordem de digitalização selecionada implicasse em uma condição de ocultação falsa.
[0077] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, se a condição de ocultação for falsa e a ordem de digitalização selecionada for uma ordem de digitalização padrão predefinida, o módulo de ocultação é configurado para não ocultar as informações de ordem de digitalização no vetor de ocultação de coeficientes.
[0078] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, o módulo de ocultação é configurado para ocultar, para ao menos um bloco, as informações de ordens de digitalização no vetor de ocultação de coeficientes por meio de: - aplicar uma função verificação ao vetor de ocultação de coeficientes de modo a obter um resultado da função verificação, - determinar se o resultado da função verificação corresponde às informações de ordens de digitalização, - se não, modificar o vetor de ocultação de coeficientes de modo que o resultado da função verificação corresponda às informações de ordens de digitalização.
[0079] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, o resultado da função verificação depende das coordenadas (x, y), dentro da matriz de coeficientes, do último coeficiente significativo do vetor de ocultação de coeficientes. A função verificação pode, por exemplo, ser a seguinte função: mod(x + y + R,2) x e y sendo as coordenadas e R sendo um valor inteiro.
[0080] Em uma forma de implementação do codificador de acordo com o sétimo aspecto da invenção, se uma ordem de digitalização idêntica for selecionada pelo seletor de ordens de digitalização para um primeiro e ao menos um segundo bloco, o módulo de ocultação é configurado para ocultar informações de ordens de digitalização que identificam a ordem de digitalização idêntica em um ou mais coeficientes de apenas o primeiro bloco. Deste modo, é possível uma codificação de acordo com um “modo de mesclagem”. Em tal modo, preferivelmente as informações de ordens de digitalização que identificam a ordem de digitalização idêntica não estão ocultas em coeficientes do segundo bloco. Em outras palavras, o valor da ordem de digitalização selecionada para o segundo bloco é reconstruído/predito no lado do decodificador usando as informações de ordens de digitalização ocultas em coeficientes do primeiro bloco. O primeiro e o segundo blocos são, por exemplo, adjacentes espacialmente ou, por exemplo, blocos sucessivos no fluxo de bits. Portanto, as informações de ordens de digitalização do segundo bloco podem ser transmitidas ao decodificador sem ocultar qualquer coisa dentro dos coeficientes do segundo bloco.
[0081] Em particular, um grupo de blocos que compreende o primeiro bloco e um ou mais segundos blocos pode ser um grupo de blocos que tem ao menos um índice de digitalização não-padrão oculto dentro de seus coeficientes. Alternativamente, o grupo de blocos pode incluir diversos blocos sequencialmente codificados, de modo que os referidos blocos codificados tenham o mesmo índice de digitalização. Alternativamente, o grupo de blocos pode incluir diversos blocos e/ou diversos blocos sequencialmente codificados com coeficientes para os quais a condição de ocultação é falsa.
[0082] Em particular, no modo de mesclagem são disponíveis diversas opções para o decodificador saber que nenhuma informação de ordem de digitalização está oculta nos coeficientes do ao menos um segundo bloco. Primeiramente, o codificador adiciona informações colaterais no fluxo de bits, por exemplo, uma bandeira que habilita ou desabilita a utilização do modo de mesclagem para um ou mais blocos, por exemplo, para o um ou mais segundos blocos. Em segundo lugar, sem informações colaterais, é proposto aplicar a regra de mesclagem ao segundo bloco dependendo da condição de ocultação e conjunto de parâmetros de codificação do primeiro bloco e/ou do segundo bloco. Em outras palavras, uma mesclagem é aplicada ao segundo bloco se a condição de ocultação não for satisfeita para o segundo bloco, isto é, a ordem de digitalização para o segundo bloco é selecionada com base nas informações de ordens de digitalização associadas ao primeiro bloco. Em terceiro lugar, é proposta uma combinação das duas alternativas, a referida combinação compreendendo informações colaterais no fluxo de bits e aplicando uma mesclagem dependente da condição de ocultação.
[0083] As funções do codificador de acordo com o sétimo aspecto da invenção e de quaisquer funções de qualquer de suas formas de implementação podem ser executadas por um processador ou um computador, e qualquer de seus meios pode ser implementado como software e/ou hardware em tal processador ou computador.
[0084] Um oitavo aspecto da presente invenção fornece um método, preferivelmente de acordo com o quarto aspecto da invenção, para codificar coeficientes de blocos de uma sequência de vídeos em um fluxo de bits, os coeficientes de cada bloco estando contidos em uma respectiva matriz de coeficientes. O método compreende selecionar uma ordem de digitalização para cada bloco a partir de um conjunto de ordens de digitalização, preferivelmente a partir de um conjunto de ordens de digitalização predefinidas e geradas. O método compreende digitalizar, para cada bloco, a matriz de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter um ou mais vetores de coeficientes. O método compreende ocultar, para ao menos um bloco, informações de ordens de digitalização que identificam a ordem de digitalização selecionada para aquele bloco ao menos parcialmente em um ou mais coeficientes daquele bloco. O método compreende codificar os vetores de coeficientes no fluxo de bits.
[0085] Recursos ou implementações adicionais do método de acordo com o oitavo aspecto da invenção podem executar a funcionalidade do codificador de acordo com o sétimo aspecto da invenção e suas diferentes formas de implementação.
[0086] O método de acordo com o oitavo aspecto da invenção ou de qualquer de suas formas de implementação pode ser executado por um processador ou um computador.
[0087] Um nono aspecto da presente invenção fornece um programa de computador que compreende um código de programa para executar o método de acordo com o segundo, quarto, sexto ou oitavo aspecto da invenção, quando o programa de computador for executado em um dispositivo de computação.
[0088] Deve ser observado que todos os dispositivos, elementos, unidades e meios descritos no presente pedido de patente podem ser implementados em elementos de software ou de hardware ou qualquer tipo de combinação destes. Todas as etapas que são executadas pelas diversas entidades descritas no presente pedido de patente, assim como as funcionalidades descritas a serem executadas pelas diversas entidades, pretendem significar que a respectiva entidade está adaptada ou configurada para executar as respectivas etapas e funcionalidades. Mesmo se, na descrição a seguir de modalidades específicas, uma modalidade ou etapa específica a ser totalmente formada por entidades eternas não refletidas na descrição de um elemento específico detalhado daquela entidade que executa aquela etapa ou funcionalidade específica, deverá ficar claro para uma pessoa versada na técnica que estes métodos e funcionalidades podem ser implementados em respectivos elementos de software ou hardware, ou qualquer tipo de combinação destes. BREVE DESCRIÇÃO DOS DESENHOS
[0089] Os aspectos e formas de implementação acima da presente invenção serão explanados na descrição a seguir de modalidades específicas em relação aos desenhos anexos, nos quais:
[0090] a Fig. 1 mostra um codificador de vídeos de acordo com uma modalidade da presente invenção;
[0091] a Fig. 2 mostra um decodificador de vídeos de acordo com uma modalidade da presente invenção;
[0092] a Fig. 3 mostra um fluxograma de estimativa de distribuição de coeficientes no decodificador de vídeos de acordo com uma modalidade da presente invenção;
[0093] a Fig. 4 mostra um fluxograma de estimativa de distribuição de coeficientes no codificador de vídeos de acordo com uma modalidade da presente invenção;
[0094] a Fig. 5 mostra um fluxograma de uma inicialização de uma lista de ordens de digitalização de acordo com uma modalidade da presente invenção;
[0095] a Fig. 6 mostra um fluxograma de sinalização implicita e explicita de ordens de digitalização selecionadas de acordo com uma modalidade da presente invenção;
[0096] as Figs. 7 e 8 mostram uma condição de ocultação de acordo com uma modalidade da presente invenção;
[0097] a Fig. 9 mostra uma decodificação de entropia de coeficientes de acordo com o estado da técnica;
[0098] a Fig. 10 mostra uma modalidade da presente invenção para melhorar a eficiência de codificação mediante redução da sobrecarga de sinalização no fluxo de bits;
[0099] a Fig. 11 mostra um reordenador de coeficientes de acordo com a presente invenção; e
[00100] a Fig. 12 mostra um exemplo de condições de ocultação definidas para ordens de digitalização.
DESCRIÇÃO DETALHADA DE MODALIDADES
[00101] A Fig. 1 mostra um codificador de vídeos de acordo com uma modalidade da presente invenção, e mostra em particular um codificador 100 para codificar coeficientes de blocos de uma sequência de vídeos em um fluxo de dados 107, os coeficientes de cada bloco estando contidos em uma respectiva matriz de coeficientes.
[00102] O codificador compreende um módulo de lista padrão de digitalização 110 configurada para fornecer uma ou mais ordens de digitalização predefinidas.
[00103] O codificador compreende um gerador de ordens de digitalização 111 configurado para gerar uma ou mais ordens de digitalização.
[00104] O codificador compreende um seletor de ordens de digitalização 109 configurado para selecionar uma ordem de digitalização para cada bloco a partir das ordens de digitalização predefinidas e geradas.
[00105] O codificador compreende um serializador 104 configurado para digitalizar, para cada bloco, a matriz de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter um ou mais vetores de coeficientes.
[00106] O codificador compreende um módulo de codificação 106 configurado para codificar os vetores de coeficientes em um fluxo de bits 107.
[00107] O gerador de ordens de digitalização 111 é configurado para gerar a uma ou mais ordens de digitalização que dependem da uma ou mais matrizes de coeficientes previamente digitalizadas de blocos da sequência de vídeos.
[00108] A Fig. 2 mostra um decodificador de vídeos de acordo com uma modalidade da presente invenção, e mostra em particular um decodificador 200 para decodificar coeficientes de blocos de uma sequência de vídeos a partir de um fluxo de dados 207.
[00109] O decodificador compreende um módulo de lista padrão de digitalização 210 configurado para fornecer uma ou mais ordens de digitalização predefinidas.
[00110] O decodificador compreende um gerador de ordens de digitalização 211 configurado para gerar uma ou mais ordens de digitalização.
[00111] O decodificador compreende um seletor de ordens de digitalização 209 configurado para selecionar uma ordem de digitalização para cada bloco a partir das ordens de digitalização predefinidas e geradas com base nas informações de ordens de digitalização SCAN_IDX contidas no fluxo de bits.
[00112] O decodificador compreende um módulo de decodificação 206 configurado para decodificar um ou mais vetores de coeficientes de cada bloco a partir do fluxo de bits 207.
[00113] O decodificador compreende um desserializador 204 configurado para digitalizar inversamente, para cada bloco, o um ou mais vetores de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter uma matriz de coeficientes.
[00114] O gerador de ordens de digitalização 211 é configurado para gerar a uma ou mais ordens de digitalização que dependem da uma ou mais matrizes de coeficientes previamente obtidas de blocos da sequência de vídeos.
[00115] Em particular, a Fig. 1 mostra um exemplo de uma parte residual de codificação do lado do codificador com seções de ordens de digitalização adaptáveis ao conteúdo. No exemplo, o codificador 100 é configurado para aplicar interpredição ou intrapredição a cada bloco de cada imagem da sequência de vídeos. Um modo de intrapredição usa pixels da mesma imagem para gerar amostras de referência para calcular os valores de predição para os pixels do bloco sendo reconstruído. Um modo de interpredição é projetado para predição temporal e utiliza amostras de referência de imagens anteriores ou seguintes para prever pixels do bloco da imagem atual. O resultado do estágio de predição pode ser um sinal residual 101 que é a diferença entre um sinal original de um bloco e seu sinal de predição obtido por meio de interpredição ou intrapredição.
[00116] Um modo de predição para obter o sinal residual 101 pode referir-se correspondentemente ao modo tanto de intrapredição como de interpredição. Mais adiante, o modo de predição pode corresponder a qualquer de uma pluralidade de modos ou direções de predição disponíveis. Por exemplo, a pluralidade de modos de predição disponíveis pode compreender a até 35 modos de intrapredição, os quais podem incluir 33 modos direcionais e 2 modos não-direcionais, tais como um modo de predição de corrente direta (DC) e um modo de predição planar. Os 33 modos direcionais podem cobrir uma faixa angular de p radianos ou 180 graus. Se a direção de um modo vertical for considerada como zero grau, os 33 modos direcionais podem ser simétricos em torno do eixo geométrico a -45 graus. Em relação ao modo de predição, o codificador pode ser configurado para determinar, para um determinado bloco, um da pluralidade de modos de predição disponíveis baseados em uma Otimização de Taxa-Distorção (RDO).
[00117] Uma Unidade de Árvore de Codificação (CTU) é a raiz de uma estrutura de codificação da sequência de vídeos de uma dimensão predefinida, que contém uma parte de uma imagem (por exemplo, 64x64 pixels). Uma CTU pode ser particionada em Unidades de Codificação (CUs). Uma CU é uma estrutura básica de codificação da sequência de vídeos de uma dimensão predefinida, que contém uma parte de uma imagem que pertence a uma CTU. Uma CU pode ser particionada em outras CUs. Uma Unidade de Predição (PU) é uma estrutura de codificação que é o resultado da partição de uma CU. Uma PU pode ser particionada em diversas Unidades de Transformação (TUs) ou coincidir com uma única TU. Uma TU pode ser intrapredita ou interpredita de acordo com o tipo de processamento aplicado aos pixels da PU. No caso de interpredição, uma PU representa uma área de pixels que é processada por compensação de movimento usando um vetor de movimento especificado para uma PU.
[00118] No que se refere a isto, um modo de partição pode depender da PU, e em particular da dimensão e/ou orientação da PU. O modo de partição pode corresponder a qualquer de uma pluralidade de modos de partição disponíveis. O codificador pode ser configurado para determinar, para um bloco ou PU, um da pluralidade de modos de partição disponíveis baseado em um método RDO. Por exemplo, o modo de partição pode corresponder a uma forma orientada horizontalmente, na qual uma CU pode ser particionada em 2NxN PUs ou blocos. Também, o modo de partição pode corresponder a uma forma orientada verticalmente, na qual uma CU pode ser particionada em Nx2N PUs ou blocos, ou a uma forma quadrada na qual uma CU pode ser particionada em 2Nx2N PUs ou blocos.
[00119] O sinal residual 101 pode ser fornecido a um módulo de transformação 102 para codificar por transformação o sinal residual 101 de modo a obter coeficientes de transformação. Em particular, para intrapredição uma PU pode especificar um modo de predição para um conjunto de TUs. Uma TU pode ter diferentes dimensões - por exemplo, 4x4, 8x8, 16x16 e 32x32 pixels - e pode ser processada de diferentes modos. Exemplos de transformadas que podem ser aplicadas a um sinal residual compreendem, por exemplo, Transformada Discreta de Cosseno (DCT) e Transformada Discreta de Seno (DST).
[00120] No que se refere a isto, um parâmetro de transformação pode ter a dimensão ou a forma da TU, ou ambas dimensão e forma. Um parâmetro de transformação adicional pode ser a transformada sendo aplicada, por exemplo, DCT ou DST entre outras.
[00121] O sinal residual 101 calculado para um bloco da imagem fonte é transformado pelo módulo de transformação 102 e em seguida quantizado por um módulo de quantização 103. O módulo de quantização 103 processa os coeficientes de transformação de modo a obter coeficientes de transformação quantizados (QTCs) na forma de uma matriz de coeficientes.
[00122] No que se refere a isto, um parâmetro de quantização pode corresponder ao número de coeficientes significativos da matriz de coeficientes, isto é, o número de coeficientes da matriz de coeficientes que têm um valor não-zero.
[00123] A matriz de coeficientes é serializada por meio do serializador 104 por digitalização em uma ordem determinada pelo seletor de ordens de digitalização 109. A ordem de digitalização pode ser selecionada tanto a partir das ordens de digitalização predefinidas fornecidas pela lista padrão de digitalização 110 como a partir das ordens de digitalização geradas fornecidas pelo gerador de ordens de digitalização 111. As ordens de digitalização fornecidas pela lista padrão de digitalização 110 são predefinidas no lado tanto do codificador 100 como do decodificador 200 e, portanto, uma ordem de digitalização selecionada a partir da lista padrão de digitalização 110 é estática, isto é, não é modificada durante todo o processo de codificação ou decodificação. As ordens de digitalização fornecidas pelo gerador de ordens de digitalização 111 são dinâmicas, isto é, são geradas dependendo de uma ou mais matrizes de coeficientes previamente obtidas de blocos da sequência de vídeos. Em particular, as ordens de digitalização geradas podem ser geradas de acordo com as estatísticas de distribuição de matrizes de coeficientes durante o processo de codificação ou decodificação.
[00124] O um ou mais vetores de coeficientes obtidos pelo serializador 104 a partir de uma matriz de coeficientes são armazenados em um buffer de coeficientes quantizados 105. O módulo de codificação 106 pode ser na forma de um módulo de codificação de entropia para codificar por entropia os vetores de coeficientes no fluxo de bits 107. A ordem de digitalização que é selecionada pelo seletor de ordens de digitalização 109 pode ser identificado por meio de informações de índices de digitalização ou de ordens de digitalização SCAN_IDX.
[00125] Estas informações de índices de digitalização podem ser explicitamente adicionadas ao fluxo de bits 107, isto é, o valor das informações de ordens de digitalização SCAN_IDX pode ser armazenado no fluxo de bits 107 por meio de um parâmetro ou variável dedicado. Alternativamente, um módulo de ocultação 112 pode ser configurado para ocultar ao menos parcialmente as informações de ordens de digitalização SCAN_IDX nos vetores de coeficientes, isto é, nos valores da matriz de coeficientes após serialização. Por exemplo, o módulo de ocultação 112 pode executar correspondentemente ajustes dos coeficientes armazenados no buffer de coeficientes quantizados 105 de modo que um correspondente módulo de verificação localizado em um módulo de verificação 212 do decodificador 200 possa obter as informações de ordens de digitalização SCAN_IDX pela aplicação de uma função de verificação àquelas. Os coeficientes ajustados resultantes ou os vetores de coeficientes armazenados no buffer de coeficientes quantizados 105 podem em seguida ser codificados por entropia e transmitidos ao decodificador 200 no fluxo de bits 107.
[00126] Os coeficientes de um ou mais vetores de coeficientes armazenados no buffer de coeficientes quantizados 105 podem em seguida ser ajustados ou não, dependendo das informações de ordens de digitalização SCAN_IDX serem transmitidas explicita ou implicitamente no fluxo de bits 107, isto é, dependendo de as informações de ordens de digitalização serem ocultas ou não.
[00127] Em particular, o módulo de lista padrão de digitalização 110 é configurada para fornecer uma ou mais ordens de digitalização predefinidas para cada um de uma pluralidade de conjuntos de parâmetros de codificação. O gerador de ordens de digitalização 111 é configurado para gerar uma ordem de digitalização para cada um dos conjuntos de parâmetros de codificação que dependem de uma ou mais matrizes de coeficientes previamente digitalizadas associados àquele conjunto de parâmetros de codificação. O seletor de ordens de digitalização 109 é configurado para selecionar uma ordem de digitalização para cada bloco mediante: - determinação de um conjunto de parâmetros de codificação daquele bloco, e - seleção da ordem de digitalização para a matriz de coeficientes daquele bloco a partir das ordens de digitalização predefinidas e geradas para o determinado conjunto de parâmetros de codificação.
[00128] No que se refere a isto, um conjunto de parâmetros de codificação corresponde a uma combinação específica de ao menos um ou mais de: - um modo de predição, - um modo de partição, - um ou mais parâmetros de transformação, e - um ou mais parâmetros de quantização.
[00129] O modo de predição, o modo de partição, os parâmetros de transformação e os parâmetros de quantização são de modo geral referidos pela referência 108 na Fig. 1. Por exemplo, um conjunto de parâmetros de codificação pode corresponder a apenas um modo de predição (por exemplo, um modo de intrapredição direcional específico), a apenas um modo de partição (por exemplo, uma orientação específica da PU), a apenas um ou mais parâmetros de transformação (por exemplo, uma dimensão e/ou forma específica da TU), ou a apenas um ou mais parâmetros de quantização (por exemplo, um número específico de coeficientes significativos da matriz de coeficientes). Também, o conjunto de parâmetros de codificação pode corresponder a uma combinação específica do modo de predição, do modo de partição, dos parâmetros de transformação e/ou dos parâmetros de quantização.
[00130] O codificador 100 pode compreender um estimador de distribuição de coeficientes 113 configurado para fornecer, para cada um dos conjuntos de parâmetros de codificação, uma estatística de distribuição de uma ou mais matrizes de coeficientes previamente digitalizadas associadas àquele conjunto de parâmetros de codificação. O gerador de ordens de digitalização 111 é configurado para gerar a ordem de digitalização para cada um dos conjuntos de parâmetros de codificação que dependem da estatística de distribuição para aquele conjunto de parâmetros de codificação.
[00131] Em particular, os coeficientes armazenados no buffer de coeficientes quantizados 105 são também uma fonte para a estimativa de estatística de distribuição de coeficientes que é usada pelo gerador de ordens de digitalização 111. Contudo, antes da estimativa da distribuição de coeficientes, os coeficientes armazenados são desserializados de volta a partir do vetor de coeficientes para uma matriz de coeficientes por meio de um desserializador 114.
[00132] A estatística de distribuição de uma matriz de coeficientes compreende preferivelmente, como definido em US 2008/0310504, uma indicação da probabilidade de que um valor de coeficiente em uma posição da matriz de coeficientes bidimensional seja zero ou não-zero e pode, por exemplo, compreender uma contagem, uma probabilidade ou outra métrica estatística associada a cada uma das posições da matriz de coeficientes bidimensional. Uma ordem de digitalização gerada que dependa de tal estatística de distribuição pode correspondentemente ser uma ordem de digitalização que é configurada para digitalizar com maior prioridade as posições de coeficientes com maior probabilidade de ter coeficientes não-zero.
[00133] Em particular, se a ordem de digitalização selecionada para um determinado bloco for uma ordem de digitalização gerada, o estimador de distribuição de coeficientes 113 pode ser configurado para atualizar a estatística de distribuição para o conjunto de parâmetros de codificação do determinado bloco de acordo com a estatística de distribuição da matriz de coeficientes do determinado bloco. A estatística de distribuição da matriz de coeficientes do determinado bloco pode refletir se o coeficiente em uma posição na matriz de coeficientes do determinado bloco é zero ou não-zero. A estatística de distribuição fornecida pelo estimador de distribuição de coeficientes 113 pode em seguida, por exemplo, ser atualizada dependendo da referida estatística de distribuição da matriz de coeficientes do determinado bloco.
[00134] Em particular, se a ordem de digitalização selecionada para uma determinada matriz de coeficientes for predefinida, o estimador de distribuição de coeficientes 113 pode ser configurado para não atualizar ou pode ser configurado para reiniciar a estatística de distribuição para o conjunto de parâmetros de codificação do determinado bloco. Reiniciar a estatística de distribuição pode, por exemplo, consistir em reiniciar a referida contagem, probabilidade ou outra métrica estatística.
[00135] Esta atualização, não-atualização, ou reinício da estatística de distribuição executada pelo estimador de distribuição de coeficientes 113 que depende do seletor de ordens de digitalização 109 ter selecionado uma ordem de digitalização gerada ou predefinida é refletida na Fig. 1 por uma seta tracejada desde o seletor de ordens de digitalização 109 até o estimador de distribuição de coeficientes 113.
[00136] O decodificador da modalidade proposta é mostrado na Fig. 14. Os estágios de processamento são similares àqueles do codificador (vide Fig. 13) e são aplicados na ordem inversa. A diferença mais importante é que o buffer de coeficientes quantizados armazena QTCs após serem desserializados, isto é, como uma matriz de QTCs mas não QTCs como um ou mais vetores.
[00137] Em particular, a Fig. 2 mostra um exemplo de uma parte de decodificação residual com seleção de ordens de digitalização adaptáveis ao conteúdo. No exemplo, o decodificador 200 é configurado para obter um sinal residual 201 a partir do fluxo de bits 207. Após gerar, pelo módulo de decodificação 206 (por exemplo, um módulo de decodificação de entropia) e pelo desserializador 204, a matriz de coeficientes que compreende coeficientes de transformação quantizados, um buffer de coeficientes quantizados 205 armazena a referida matriz de coeficientes. A matriz de coeficientes armazenada é em seguida processada por um módulo de quantização inversa 203 e por um módulo de transformação inversa 202 para obter o sinal residual 201 correspondente ao sinal residual 101 no codificador 100. Usando o sinal residual 201, a sequência de vídeos codificada pode ser reconstruída de acordo com técnicas conhecidas.
[00138] O estimador de distribuição de coeficientes 213 do decodificador 200 pode ser similar ou idêntico em função ao estimador de distribuição de coeficientes 113 do codificador 100. No exemplo, eles diferem pelo fato do estimador de distribuição de coeficientes 213 receber como entrada a matriz de coeficientes armazenada no buffer de coeficientes quantizados 205 enquanto que o estimador de distribuição de coeficientes 113 recebe como entrada a matriz de coeficientes obtida a partir do desserializador 114.
[00139] A presente invenção propõe o uso combinado de ordens de digitalização predefinidas e de ordens de digitalização geradas no lado tanto do codificador 100 como do decodificador 200 dependendo das matrizes de coeficientes previamente digitalizadas, respectivamente obtidas, de blocos da sequência de vídeos. Em particular, as ordens de digitalização geradas são geradas mediante análise de uma estatística de distribuição dos coeficientes dentro da matriz de coeficientes, isto é, mediante análise de uma distribuição dos coeficientes de transformação quantizados.
[00140] Uma característica específica da invenção proposta é que estatísticas de distribuição para coeficientes de transformação quantizados (QTCs) são estimadas com maior precisão ao levar em consideração a ordem de digitalização selecionada, como mostrado, por exemplo, nas Figs. 1 e 2 pela seta entre o seletor de ordens de digitalização 109, 209 e o estimador de distribuição de coeficientes 113, 213. Esta estimativa mais precisa pode consistir em, por exemplo, atualizar, não atualizar, ou reiniciar a estatística de distribuição como mostrado acima.
[00141] A distribuição de coeficientes pode ser estimada com maior precisão mediante divisão dos dados fonte em 4 períodos estacionários e estimando a distribuição de coeficientes apenas dentro destes períodos estacionários. Um período estacionário é um número de blocos que têm distribuição similar de QTCs e estão espacialmente próximos entre si.
[00142] Na presente invenção, é particularmente proposto detectar um período estacionário mediante introdução de um limite no número de blocos processados que é assinalado ter ordem de digitalização gerada adaptativamente. Quando a ordem de digitalização for selecionada a partir de ordens de digitalização predefinidas pelo módulo de lista padrão de digitalização, não existe necessidade de atualizar a estatística de distribuição, uma vez que para este caso o fato de a ordem de digitalização ser uma ordem predefinida indica que o bloco atualmente processado pertence a diferente período estacionário.
[00143] A Fig. 3 mostra um fluxograma de estimativa de estatística de distribuição no decodificador de vídeos de acordo com uma modalidade da presente invenção.
[00144] No decodificador de vídeos, a estimativa 301 da estatística de distribuição pelo estimador de distribuição de coeficientes 213 compreende diversas etapas.
[00145] Em uma etapa 302, o modo de predição, o modo de partição, os parâmetros de transformação e/ou os parâmetros de quantização 208 para um bloco são analisados a partir do fluxo de bits 207. Preferivelmente, esta análise é executada pelo módulo de decodificação 206. De acordo com as informações analisadas, o seletor de ordens de digitalização 209 determina preferivelmente o modo de codificação daquele bloco.
[00146] Em uma etapa 303, as informações de ordens de digitalização SCAN_IDX que identificam a ordem de digitalização selecionada para aquele bloco são analisadas a partir do fluxo de bits 207. Esta análise é feita preferivelmente pelo módulo de decodificação 206.
[00147] Em uma etapa 304, o seletor de ordens de digitalização 209 seleciona a ordem de digitalização para aquele bloco a partir das ordens de digitalização predefinidas e geradas com base nas informações de ordens de digitalização SCAN_IDX analisadas.
[00148] Em uma etapa 305, é determinado se a ordem de digitalização selecionada é uma ordem de digitalização predefinida fornecida pelo módulo de lista padrão de digitalização 210 ou uma ordem de digitalização gerada fornecida pelo gerador de ordens de digitalização 211.
[00149] Se a ordem de digitalização selecionada para aquele bloco for uma ordem gerada (por exemplo, fornecida pelo gerador de ordens de digitalização 211), o estimador de distribuição de coeficientes 213 atualiza, em uma etapa 306, a estatística de distribuição atual. Esta estatística de distribuição atual é obtida preferivelmente a partir de blocos anteriores. A estatística de distribuição atual é atualizada de acordo com uma estatística de distribuição da matriz de coeficientes obtida para aquele bloco.
[00150] Se, contudo, a ordem de digitalização selecionada para aquele bloco for uma ordem predefinida (por exemplo, fornecida pelo módulo de lista padrão de digitalização 210), o estimador de distribuição de coeficientes 213 processa, em uma etapa 306, a estatística de distribuição daquele bloco separadamente a partir da estatística de distribuição atual. Por exemplo, o estimador de distribuição de coeficientes 213 pode não atualizar ou pode reiniciar a estatística de distribuição atual.
[00151] Após a etapa 306 ou 307, a estimativa 301 da estatística de distribuição termina (na etapa 308).
[00152] A Fig. 4 mostra um fluxograma de estimativa de estatística de distribuição no codificador de vídeos de acordo com uma modalidade da presente invenção.
[00153] No codificador de vídeos, a estimativa 401 da estatística de distribuição pelo estimador de distribuição de coeficientes 113 compreende diversas etapas.
[00154] Em uma etapa 402, um procedimento RDO é executado pelo seletor de ordens de digitalização 109 com a finalidade de selecionar, de entre as ordens de digitalização predefinidas fornecidas pelo módulo de lista padrão de digitalização 110 e as ordens de digitalização geradas fornecidas pelo gerador de ordens de digitalização 111, a ordem de digitalização que fornece o mínimo custo de taxa- distorção (RD). Nesta etapa, são obtidas as informações de ordens de digitalização SCAN_IDX da ordem de digitalização selecionada.
[00155] Em uma etapa 403, é obtida a ordem de digitalização correspondente às informações de ordens de digitalização SCAN_IDX selecionadas.
[00156] As etapas adicionais 404 a 407 correspondem às etapas 305 a 308 da Fig. 3.
[00157] Como mostrado nas Figs. 3 e 4, no lado tanto do codificador como do decodificador é inicializada uma lista de ordens de digitalização. Esta inclui elementos do módulo de lista padrão de digitalização e ordens de digitalização geradas pelo gerador de ordens de digitalização. Dependendo de a ordem de digitalização selecionada pelo seletor de ordens de digitalização ser gerada ou predefinida, é tomada uma decisão quanto à estatística de distribuição. Esta decisão pode consistir em atualizar ou não a estatística de distribuição atual, ou no reinício da estatística de distribuição atual.
[00158] Um dos possíveis modos para inicializar a lista de ordens de digitalização é mostrado na Fig. 5. A Fig. 5 mostra correspondentemente um fluxograma 500 de uma inicialização 501 de uma lista de ordens de digitalização de acordo com uma modalidade da presente invenção.
[00159] A sua inicialização depende do modo de predição, do modo de partição, dos parâmetros de transformação e dos parâmetros de quantização especificados para um bloco sendo processado.
[00160] Em uma etapa 502, é determinado se o modo de predição daquele bloco é um modo de intrapredição planar. Se isto for verdadeiro, é definida 508 uma lista padrão de digitalização de ordens de digitalização predefinidas de modo a compreender ordens de digitalização diagonais e ordem Z predefinidas. Se isto for falso, é executada a etapa 503.
[00161] Na etapa 503, é determinado se o modo de predição daquele bloco é um modo de intrapredição DC. Se isto for verdadeiro, é definida 508 uma lista padrão de digitalização de ordens de digitalização predefinidas de modo a compreender ordens de digitalização diagonais e de ordem Z predefinidas. Se isto for falso, é executada a etapa 504.
[00162] Na etapa 504, é determinado se o modo de predição daquele bloco é um modo de intrapredição angular próximo da horizontal. Se isto for verdadeiro, é definida 509 uma lista padrão de digitalização de ordens de digitalização predefinidas de modo a compreender ordens de digitalização verticais, verticais-diagonais e helicoidais. Se isto for falso, é executada a etapa 505.
[00163] Na etapa 505, é determinado se o modo de predição daquele bloco é um modo de intrapredição angular próximo da vertical. Se isto for verdadeiro, é definida 510 uma lista padrão de digitalização de ordens de digitalização predefinidas de modo a compreender ordens de digitalização horizontais, horizontais-diagonais e helicoidais. Se isto for falso, é executada a etapa 506.
[00164] Na etapa 506, é determinado se o modo de predição daquele bloco é um modo de intrapredição angular próximo da diagonal. Se isto for verdadeiro, é definida 511 uma lista padrão de digitalização de ordens de digitalização predefinidas de modo a compreender ordens de digitalização diagonais, de ordem Z e helicoidais. Se isto for falso, é executada a etapa 507. Na etapa 507, é definida uma lista padrão de digitalização de ordens de digitalização predefinidas de modo a compreender uma ordem de digitalização diagonal.
[00165] Após definir a lista de ordens de digitalização de ordens de digitalização predefinidas para aquele bloco, a lista de ordens de digitalização é ajustada 512 usando o modo de partição, os parâmetros de transformação e os parâmetros de quantização daquele bloco.
[00166] Em uma etapa 513, a uma ou mais ordens de digitalização geradas fornecidas pelo gerador de ordens de digitalização são adicionadas às ordens de digitalização predefinidas, de modo que, por exemplo, o seletor de ordens de digitalização 109 do codificador possa selecionar a partir das ordens de digitalização predefinidas e geradas, a ordem de digitalização que fornece o custo mínimo de RD.
[00167] Como mostrado na Fig. 5, as ordens de digitalização predefinidas podem depender do modo de predição e/ou do modo de partição e/ou dos parâmetros de transformação e/ou dos parâmetros de quantização. Por exemplo, as ordens de digitalização mais prováveis para os casos de intramodos planares ou DC são a ordem Z e a ordem de digitalização diagonal. Para modos angulares, a direcionalidade do sinal residual pode ser levada em consideração de modo que as ordens de digitalização predefinidas possam ser selecionadas para serem ortogonais à direcionalidade de intramodos.
[00168] Depois esta lista de ordens de digitalização predefinidas pode ser atualizada de acordo com outros parâmetros de codificação, tais como o modo de partição, os parâmetros de transformação e os parâmetros de quantização. Em particular, esta lista pode ser atualizada de acordo com as dimensões de partição e de transformação.
[00169] Por exemplo, no modo de interpredição, modos de predição não-quadrados podem também indicar a natureza direcional do sinal residual e a lista de ordens de digitalização predefinidas pode ser adequadamente atualizada: se um retângulo de partição for orientado verticalmente, então ordens de digitalização horizontais e horizontais-diagonais são adicionadas à lista de digitalização. A lista de ordens de digitalização predefinidas é atualizada adequadamente para partição orientada horizontalmente: em tal caso, são adicionadas ordens de digitalização verticais e verticais-diagonais à lista de ordens de digitalização predefinidas.
[00170] Por exemplo, esta lista de ordens de digitalização predefinidas pode ser atualizada de acordo com as dimensões de transformação. Menores dimensões de TU introduzem restrições sobre alguns padrões de digitalização. Então, por exemplo, digitalizações helicoidais podem ser excluídas da lista de ordens de digitalização predefinidas se a dimensão de TU for menor que 8x8 pixels.
[00171] Os parâmetros de quantização (QP) podem afetar tanto a lista de ordens de digitalização predefinidas como o método de sinalização. Para valores de QP elevados, o número de padrões de digitalização pode ser reduzido. Por exemplo, digitalizações helicoidais podem ser ignoradas para todas as dimensões de TU, uma vez que QTCs ficam mais alinhados à esquerda, topo e canto superior esquerdo da matriz de QTCs.
[00172] Um exemplo da dependência do esquema de sinalização no QP é mostrado na Fig. 6. A Fig. 6 mostra em particular um fluxograma 600 de sinalização implícita e explícita de ordem de digitalização selecionada de acordo com uma modalidade da presente invenção.
[00173] Em uma etapa 601, é obtido um valor de QP. Se aquele valor de QP for menor ou igual 602 a um valor de QP para taxas de bits elevadas QPHBR, então as informações de ordens de digitalização SCAN_IDX devem ser codificadas por entropia 603 no fluxo de bits.
[00174] Se o valor de QP estiver acima do valor QPHBR e abaixo de um outro valor de QP para taxas de bits baixas QPLBR, então as informações de ordens de digitalização SCAN_IDX devem ser parcialmente codificadas por entropia 606 e parcialmente ocultas dentro dos coeficientes de transformação quantizados pelo módulo de ocultação 112.
[00175] Se o valor de QP estiver acima do valor QPHBR e acima ou igual àquele outro valor de QP para taxas de bits baixas QPLBR, então as informações de ordens de digitalização SCAN_IDX devem ser ocultas 605 dentro dos coeficientes de transformação quantizados pelo módulo de ocultação 112.
[00176] Consequentemente, a ocultação torna-se mais cara com o aumento da taxa de bits e é completamente desligada para elevadas taxas de bits. Pelo contrário, para taxas de bits baixas, a ocultação torna-se mais preferível. Por outro lado, isto é, para taxas de bits intermediárias, ambos os mecanismos de sinalização estão sendo usados. A seleção do mecanismo de sinalização é executada para cada bloco ou TU dependendo de a ocultação poder ser executada para aquele.
[00177] De acordo com a presente invenção, é proposto um decodificador 200 para decodificar coeficientes de blocos de uma sequência de vídeos a partir de um fluxo de bits 207. O decodificador compreende: - um módulo de decodificação 206 configurado para decodificar um ou mais vetores de coeficientes de cada bloco a partir do fluxo de bits 207, - um módulo de verificação 212 configurado para reconstruir, para ao menos um bloco, informações ocultas a partir de um ou mais coeficientes daquele bloco, as informações ocultas constituindo ou fazendo parte de informações de ordens de digitalização SCAN_IDX associadas àquele bloco, - um seletor de ordens de digitalização 209 configurado para selecionar uma ordem de digitalização para cada bloco a partir de um conjunto de ordens de digitalização, preferivelmente a partir de um conjunto de ordens de digitalização predefinidas e geradas, com base nas informações de ordens de digitalização SCAN_IDX associadas àquele bloco, - um desserializador 204 configurado para digitalizar inversamente, para cada bloco, o um ou mais vetores de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter uma matriz de coeficientes.
[00178] De acordo com a presente invenção, é proposto um correspondente codificador 100 para codificar coeficientes de blocos de uma sequência de vídeos em um fluxo de bits 107, os coeficientes de cada bloco estando contidos em uma respectiva matriz de coeficientes. O codificador compreende: - um seletor de ordens de digitalização 109 configurado para selecionar uma ordem de digitalização para cada bloco a partir de um conjunto de ordens de digitalização, preferivelmente a partir de um conjunto de ordens de digitalização predefinidas e geradas, - um serializador 104 configurado para digitalizar, para cada bloco, a matriz de coeficientes daquele bloco de acordo com a ordem de digitalização selecionada para aquele bloco de modo a obter um ou mais vetores de coeficientes, - um módulo de ocultação 112 configurado para ocultar, para ao menos um bloco, informações de ordens de digitalização SCAN_IDX que identificam a ordem de digitalização selecionada para aquele bloco ao menos parcialmente em um ou mais coeficientes daquele bloco, - um módulo de codificação 106 configurado para codificar os vetores de coeficientes no fluxo de bits 107.
[00179] A eficiência de codificação pode então ser melhorada porque a sobrecarga de sinalização no fluxo de bits 107, 207 gerada pelo codificador e recebida pelo decodificador pode ser reduzida.
[00180] Preferivelmente, o módulo de verificação 212 é configurado para reconstruir, para ao menos um bloco, as informações ocultas a partir de ao menos um vetor de ocultação de coeficientes escolhido entre o um ou mais vetores de coeficientes obtidos para aquele bloco. Também, o módulo de ocultação 112 é configurado para ocultar, para ao menos um bloco, as informações de ordens de digitalização SCAN_IDX em ao menos um vetor de ocultação de coeficientes escolhido entre o um ou mais vetores de coeficientes obtidos para aquele bloco.
[00181] A reconstrução e a ocultação podem depender de uma condição de ocultação. Tal condição de ocultação compreende uma comparação de um parâmetro que depende do vetor de ocultação de coeficientes com um limite.
[00182] O parâmetro pode ser: - um número de coeficientes significativos, isto é, não- zeros, dentro do vetor de ocultação de coeficientes, ou - uma distância entre primeiro e último coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma razão de um valor máximo absoluto para um valor mínimo absoluto não-zero dos coeficientes dentro do vetor de ocultação de coeficientes, onde a condição de ocultação é verdadeira se o parâmetro estiver acima do limite, e falsa se o parâmetro estiver abaixo do limite.
[00183] As Figs. 7 e 8 mostram uma condição de ocultação de acordo com uma modalidade da presente invenção. Em particular, a Fig. 7 mostra um bloco ou TU que é subdividido em grupos de coeficientes (CGs), cada vetor de coeficientes correspondendo a um grupo de coeficientes. A Fig. 8 mostra um exemplo de vetor de coeficientes que ilustra o caso em que o parâmetro consiste na distância N entre primeiro e último coeficientes significativos, isto é, não-zeros, dentro do vetor de coeficientes. Se o valor de N estiver acima de um limite TSIG, então a condição de ocultação é verdadeira e as informações de ordens de digitalização podem ser ocultadas naquele vetor de coeficientes.
[00184] Em particular, o módulo de verificação 212 pode ser configurado para reconstruir as informações ocultas a partir do vetor de ocultação de coeficientes mediante aplicação de uma função verificação ao vetor de ocultação de coeficientes, um resultado da função verificação sendo as informações ocultas. Também, o módulo de ocultação 112 é configurado para ocultar, para ao menos um bloco, as informações de ordens de digitalização SCAN_IDX no vetor de ocultação de coeficientes por meio de: - aplicar uma função verificação ao vetor de ocultação de coeficientes de modo a obter um resultado da função verificação, - determinar se o resultado da função verificação corresponde às informações de ordens de digitalização SCAN_IDX, - se não, modificar o vetor de ocultação de coeficientes de modo que o resultado da função verificação corresponda às informações de ordens de digitalização SCAN_IDX.
[00185] É proposto que o resultado da função verificação dependa das coordenadas (x, y), dentro da matriz de coeficientes, do último coeficiente significativo do vetor de ocultação de coeficientes. A função verificação pode, por exemplo, ser a seguinte função: mod(x + y + R,2) x e y sendo as coordenadas e R sendo um valor inteiro.
[00186] Por exemplo, a função verificação pode também ser uma das seguintes funções ou outras funções verificação conhecidas: - uma função verificação de paridade aplicada aos bits menos significativos de algum coeficiente selecionado a partir da matriz de coeficientes usando um padrão binário, e - uma função verificação de paridade aplicada a um índice de posição do último ou primeiro coeficiente não-zero ou a uma combinação linear do índice de posição do último e primeiro coeficientes não-zero.
[00187] No que se refere a isto, a Fig. 9 mostra uma decodificação de entropia 901 de coeficientes de acordo com o estado da técnica, e particularmente de acordo com o padrão de codificação de vídeos H.265. A decodificação de entropia 901 compreende decodificar 902 as coordenadas X e Y do último QTC significativo, isto é, não-zero. Em seguida, uma máscara de valores de significância de QTCs (máscara de significância) é assinalada 903 de acordo com uma ordem de digitalização, começando a partir do último QTC significativo. Valores e sinais são analisados 904, 905 a partir do fluxo de bits apenas para valores de coeficientes significativos.
[00188] Portanto, uma extensão da máscara de significância 1D pode ser obtida a partir da ordem de digitalização e coordenadas do último QTC significativo. Obviamente, não é suficiente apenas aplicar métodos conhecidos de ocultação de dados para embutir dados de indicação de ordens de digitalização em QTCs, uma vez que os QTCs são analisados a partir do fluxo de bits usando informações de ordens de digitalização.
[00189] A Fig. 10 mostra uma modalidade da presente invenção, e em particular uma modalidade para melhorar a eficiência de codificação mediante redução da sobrecarga de sinalização no fluxo de bits 107, 207 gerada pelo codificador e recebida pelo decodificador.
[00190] Na modalidade da Fig. 10, é possível uma ocultação de ordens de digitalização dentro de QTCs. Durante o processo de codificação, várias diferentes ordens de digitalização - indexadas por SCAN_IDX - são aplicadas durante os estágios de quantização 1001 e de ocultação 1002. O procedimento de quantização 1001 pode usar informações de digitalização para estimar o número de bits (isto é, taxa de bits) para codificar valores de QTC e para executar otimização de taxa- distorção mediante ajuste destes valores de QTC em relação à taxa de bits estimada.
[00191] Se a ocultação não tiver tido êxito 1003, isto é, por exemplo, se a condição de ocultação for falsa, então outra ordem de digitalização SCAN_IDX é selecionada 1004. De preferência outra ordem de digitalização é selecionada até que a ocultação tenha êxito. Se a digitalização selecionada for uma ordem de digitalização padrão, por exemplo, não é executada ocultação.
[00192] Se a ocultação tiver êxito ou a ordem de digitalização selecionada for a padrão, então é possível reordenar 1005 os QTCs de acordo com a ordem de digitalização padrão. As etapas seguintes compreendem sinalizar 1006 os QTCs e codificar por entropia 1007. As referidas etapas 1006 e 1007 podem corresponder aos blocos 104 e 106 da Fig. 1. A serialização 1006 pode também ser inserida entre 1001 e 1002 como no caso da Fig. 1.
[00193] A ocultação 1002 compreende verificar a condição de ocultação, e também modificar QTCs de modo que a condição de ocultação seja satisfeita. Esta modificação pode incluir: alterar valores de QTCs, ajustar valores de QTCs para zero e fazer com que QTCs insignificantes (de valor zero) sejam significativos (não-zero). Obviamente, é sempre possível ajustar QTCs de modo que a condição de ocultação seja satisfeita. Contudo, os ajustes de QTCs no lado do codificador são restringidos pela distorção provocada por estes ajustes, e são aplicadas restrições razoáveis de ajuste. Por exemplo, devido ao procedimento de quantização, um ajuste razoável de coeficientes é mais ou manos um. Esta restrição torna possível que a operação de ocultação não possa ser executada, isto é, não existiram ajustes possíveis de QTCs para satisfazer a condição de ocultação (1003 avalia para caso “não” para digitalizações não-padrão).
[00194] No lado do decodificador, após decodificação de entropia 1011, as informações ocultas são recuperadas 1012 a partir de dados serializados e, portanto, o estágio de ocultação necessita informações sobre ordens de digitalização que serão usadas no lado do decodificador de modo que possam ser embutidas em relação à ordem de digitalização selecionada. O procedimento de ocultação de dados pode também ser executado conjuntamente com quantização, como é feito, por exemplo, para Ocultação de Bits de Sinais. Contudo, a ocultação pode falhar para alguns dos QTCs, uma vez que a condição de ocultação não é satisfeita. Por exemplo, TU tem um número significativo de QTCs que é menor que um limite. Neste caso o processamento adicional depende de a ordem de digitalização ser aquela padrão. Se for usada digitalização padrão, o decodificador pode obtê-la 1015 mediante aplicação da mesma condição de ocultação a QTCs analisados durante o estágio de decodificação de entropia. Caso contrário, a ordem de digitalização é ignorada e a ordem de digitalização seguinte é verificada, se disponível.
[00195] Se a ordem de digitalização padrão estiver em vigor, o estágio de reordenação de QTCs pode ser ignorado, porque as digitalizações fonte e alvo são as mesmas. Para ordens de digitalização não-padrão é proposto executar a reordenação de coeficientes, de modo que os estágios de codificação de entropia e de decodificação de entropia possam ser executados sem mudanças. Uma implementação específica pode usar operação de remapeamento para evitar operação desnecessária de cópia para reordenação, isto é, por redefinição de uma correspondência entre coordenadas de matriz de QTC 2D e posição 1D dentro de uma digitalização selecionada. No estágio de serialização/desserialização este remapeamento pode fornecer índices de contexto CABAC e coordenadas de QTC menos significativas para a determinada posição de digitalização 1D como se os QTCs fossem reordenados.
[00196] A Fig. 11 mostra um reordenador de coeficientes de acordo com a presente invenção e, em particular, mostra um exemplo de reordenador de QTCs para um bloco 4x4: reordenação de digitalização diagonal para horizontal.
[00197] No que se refere a isto, fazer referência ao documento “Codificação de Coeficientes de Transformação em HEVC” por Joel Sole e outros, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 22, NO. 12, dezembro de 2012, páginas 1765-1777. Na Seção V.B deste documento, é mencionado que uma bandeira significativa é codificada usando um modelo de contexto para cada coeficiente entre o último na ordem de digitalização (o qual é excluído) e o coeficiente DC. Para um bloco de transformação 4x4 TB, isto é matriz de QTCs, o contexto depende da posição do coeficiente dentro do TB, como em H.264/AVC. Apesar do fato de que a codificação de entropia ser executada para dados serializados e binarizados, o modelo de contexto para codificar um bit de significância de um QTC é selecionado dependendo da posição deste QTC dentro de uma matriz de QTCs, e da significância de QTCs adjacentes espacialmente (direita e mais abaixo). O decodificador do estado da técnica analisa bit de significância a partir do fluxo de bits usando modelo de contexto, que é selecionado de acordo com a posição de QTC para o qual este bit está sendo analisado e as posições de QTCs significativos previamente decodificados. Se a ordem de digitalização estiver indisponível para o decodificador, a posição espacial de QTC é indefinida e, portanto, o modelo de contexto não pode ser obtido.
[00198] O estágio de reordenação proposto, como mostrado, por exemplo, na Fig. 11, antes do codificador de entropia, garante que o decodificador e o decodificador usarão a mesma ordem de digitalização e os mesmos modelos de contexto para os QTCs codificados/decodificados.
[00199] A Fig. 11 descreve em particular um caso em que, após quantização, uma matriz de QTCs foi obtida (parte inferior esquerda da mesma) com o coeficiente menos significativo (para digitalização diagonal) localizado em (x=1, y=2). No caso de digitalização diagonal, 8 bits de significância de coeficientes devem ser codificados.
[00200] Com a finalidade de selecionar outra ordem de digitalização (por exemplo, pelo seletor 109), por exemplo, digitalização horizontal ao invés da diagonal, pode ser benéfico codificar as primeiras duas fileiras de bits de QTCs mais dois bits de QTCs da terceira fileira (10 QTCs no total). Contudo, se estes coeficientes forem reordenados da digitalização diagonal para uma horizontal (como mostrado na parte superior da Fig. 11), a posição do último dos mesmos 8 bits de QTC deve ser codificada.
[00201] Para o módulo de codificação de entropia 106, duas digitalizações estão disponíveis: - uma padrão, que deveria ser usada pelo módulo de codificação de entropia 206 para analisar o fluxo de bits, - a digitalização selecionada pelo seletor de ordens de digitalização 109.
[00202] Quando o módulo de codificação de entropia seleciona um modelo de contexto de acordo com a posição de QTCs, o mesmo usa não apenas X, Y definidos pelo seletor de ordens de digitalização 109, mas recalcula X, Y para a correspondente posição de QTC após ser reordenado.
[00203] Por exemplo, no exemplo da Fig. 11, é proposto considerar um caso em que o seletor de ordens de digitalização 109 selecionou digitalização diagonal e a digitalização padrão é horizontal. O módulo de codificação de entropia 106 codificará o coeficiente colocado na posição (x=1, y=1) (marcada como “E” para digitalização diagonal) com uso de módulo de contexto de posição reordenada (x0, y=2) (também marcada como “E” para digitalização horizontal), assim como coeficientes adjacentes serão definidos não como “I” e “H”, mas como “F” e “I”.
[00204] Esta operação de reordenação pode ser implementada como um remapeamento das coordenadas X e Y a partir de uma digitalização selecionada para a padrão, isto é, para implementar esta reordenação não é necessário executar operações de cópia/troca de memória para QTCs, mas apenas fornecer uma tabela de pesquisa para as coordenadas x e y para cada um dos pares (digitalização selecionada, digitalização padrão).
[00205] A ocultação de dados pode usar métodos conhecidos para embutir ordem de digitalização em QTCs. Contudo, no caso presente de ocultação da ordem de digitalização, uma outra possibilidade consiste em que uma ordem de digitalização possa ser especificada por uma condição aplicada a coordenadas do último valor de QTC significativo (x, y), por exemplo: mod(x + y,2) = scan_idx (C1)
[00206] Neste caso o codificador pode modificar a posição do último QTC significativo com a finalidade de indicar uma digitalização que deveria ser usada pelo decodificador. A condição de ocultação para o método de ocultação descrito é um conjunto de coordenadas especificadas para uma ordem de digitalização. No que se refere a isto, a FIG. 12 mostra um exemplo de condições de ocultação definidas para ordens de digitalização.
[00207] Na Fig. 12, marcas “X” indicam posições que são verificadas usando a condição (C1). É também possível combinar esta técnica com ocultação de dados dentro de valores de QTC. Por exemplo, o valor recuperado a partir da última posição de QTC significativo pode ser usado como uma parte da condição de ocultação para ocultação dentro de valores de QTC.
[00208] É sabido que a ocultação é mais eficiente se sinais hospedeiro e alvo tiverem uma distribuição universal. Outra modalidade desta invenção é a possibilidade de fazer a distribuição de (C1) mais perto de universal por aleatorização. Especificamente, uma fonte adicional de ruído aleatório R pode ser adicionada:
[00209] O valor de R deverá estar tão não-relacionado com a ordem de digitalização quanto possível. Por exemplo, pode ser um número de TUs adjacentes, um valor de paridade de uma soma de valores de amostras de referência, ou um número total de bits codificados.
[00210] Portanto, a invenção propõe, para reduzir a sobrecarga de sinalização, obter uma ordem de digitalização antes da desserialização de QTCs, durante decodificação de entropia. Quando ocultando dados relacionados a TU (tais como modo de intrapredição, bandeira de filtragem, etc.) as informações sendo ocultas são utilizadas após os estágios de desserialização e dequantificação. A invenção propõe, portanto, uma possibilidade de usar dados ocultos em QTCs antes destes coeficientes serem desserializados.
[00211] A presente invenção descreve um procedimento de quantização que é aplicável aos resíduos obtidos após os processos de predição e transformação usados, por exemplo, para codificação de imagens móveis. O objetivo da presente invenção é melhorar a eficiência de taxa-distorção de quantização pele extensão do conjunto de ordens de digitalização disponíveis usando diferentes recursos de codificação (por exemplo, modo de intrapredição, tamanho de bloco, modo de partição) ao nível de TU. Uma implementação específica desta invenção é apresentada como uma técnica que simultaneamente usa mecanismos se seleção de digitalização dependentes de modo e baseados em RDO.
[00212] A presente invenção soluciona problemas relacionados à seleção baseada em RDO de ordens de digitalização. Em particular, soluciona o problema em que ordens de digitalização adaptativas baseadas em estatísticas coletadas de blocos previamente codificados ou decodificados nem sempre fornecem uma melhor eficiência de codificação em relação a padrões de digitalização predefinidos conhecidos. Portanto, é proposto como solução um procedimento baseado em RDO para selecionar apenas uma digitalização entre as ordens de digitalização geradas adaptáveis ao conteúdo e aos padrões de digitalização predefinidos.
[00213] Em particular, a presente invenção soluciona o problema acima mencionado de aumentar a eficiência de codificação de seleção de ordens de digitalização pelo fato de que tanto os padrões de digitalização predefinidos como as ordens de digitalização geradas adaptativamente estão disponíveis.
[00214] A presente invenção nas suas modalidades de codificação multimídia fornece ainda a vantagem de que pode ser usada em muitas aplicações potenciais em estruturas híbridas de codificação de vídeos que são compatíveis com Modelo de Exploração Conjunta (JEM) que é a fundação para um padrão de codificação de vídeos da próxima geração. Uma vantagem adicional é a taxa BD (Bj0ntegaard Delta Rate) reduzida e melhoramentos subjetivos de qualidade em comparação com JEM1. Uma vantagem adicional é que uma Transformação Múltipla Adaptativa (AMT) computacionalmente complexa também conhecida como Transformação Múltipla Melhorada (EMT) pode ser substituída por um procedimento de seleção de ordens de digitalização adaptativas mais simples.
[00215] Um aspecto da presente invenção é a combinação de padrões ou ordens de digitalização predefinidos com ordens de digitalização geradas adaptativamente. Além disso, a adição de um mecanismo de sinalização para um procedimento de seleção de ordens de digitalização permite melhorar significativamente o processo de geração de ordens de digitalização adaptativas para melhorar a sua eficiência de codificação.
[00216] A presente invenção foi descrita em conjunto com diversas modalidades como exemplos assim como implementações. Contudo, outras variações podem ser compreendidas e realizadas por aqueles versados na técnica e executando a invenção reivindicada, a partir dos estudos dos desenhos, desta revelação e das reivindicações independentes. Nas reivindicações, assim como na descrição, a palavra “compreendendo” não exclui outros elementos ou etapas e o artigo indefinido “um” não exclui uma pluralidade. Um único elemento ou outra unidade pode satisfazer as funções de diversas entidades ou itens mencionados nas reivindicações. O simples fato de que algumas medidas são mencionadas nas diferentes reivindicações dependentes mútuas não indica que uma combinação destas medidas não possa ser usada em uma implementação vantajosa.

Claims (37)

1. Decodificador, caracterizado por compreender: um meio legível por computador não transitório portando um programa de computador que compreende um código de programa; e um ou mais processadores configurados para executar o código de programa para: decodificar um ou mais vetores de coeficiente de um fluxo de bits representando uma sequência de quadros de vídeo, em que cada quadro de vídeo é associado a um ou mais blocos, e em que cada vetor de coeficiente dos um ou mais vetores de coeficiente corresponde a um bloco associado a um quadro de vídeo da sequência de quadros de vídeo, reconstruir, para ao menos um bloco, informações ocultas a partir do vetor de coeficiente correspondendo ao pelo menos um bloco, em que as informações ocultas compreendem uma parte de informações de ordens de varredura associadas ao pelo menos um bloco, selecionar, para cada bloco, uma ordem de varredura para o bloco a partir de um conjunto de ordens de varredura baseadas nas informações de ordens de varredura associadas ao pelo menos bloco, e varrer inversamente, para cada bloco, os um ou mais vetores de coeficientes de acordo com a ordem de varredura selecionada para o bloco de modo a obter uma matriz de coeficientes para o bloco.
2. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que reconstruir, para o ao menos um bloco, as informações ocultas compreende: reconstruir, para o ao menos um bloco, as informações ocultas a partir de um vetor de ocultação de coeficientes escolhido dentre o um ou mais vetores de coeficientes obtidos para o ao menos um bloco.
3. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que reconstruir, para o ao menos um bloco, as informações ocultas compreende: reconstruir, para o ao menos um bloco, as informações ocultas a partir de um vetor de ocultação de coeficientes que depende de uma condição de ocultação, em que a condição de ocultação é baseada em uma comparação de um parâmetro que depende do vetor de ocultação de coeficientes com um limite.
4. Decodificador, de acordo com a reivindicação 3, caracterizado pelo fato de o parâmetro ser: - um número de coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma distância entre primeiro e último coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma razão de um valor máximo absoluto para um valor mínimo absoluto não-zero dos coeficientes dentro do vetor de ocultação de coeficientes, onde a condição de ocultação é verdadeira se o parâmetro estiver acima do limite, e falsa se o parâmetro estiver abaixo do limite.
5. Decodificador, de acordo com a reivindicação 3 ou 4, caracterizado pelo fato de os um ou mais processadores serem adicionalmente configurados para executar o código de programa para verificar a condição de ocultação, e para reconstruir as informações ocultas a partir do vetor de ocultação de coeficientes se a condição de ocultação for verdadeira.
6. Decodificador, de acordo com a reivindicação 3, caracterizado pelo fato de que, se a condição de ocultação for falsa, selecionar, para cada bloco, a ordem de varredura compreende selecionar uma ordem de varredura padrão predefinida.
7. Decodificador, de acordo com a reivindicação 2, caracterizado pelo fato de que reconstruir, para o ao menos um bloco, as informações ocultas compreende: reconstruir, para o ao menos um bloco, as informações ocultas a partir do vetor de ocultação de coeficientes mediante aplicação de uma função verificação ao vetor de ocultação de coeficientes, em que um resultado da aplicação da função verificação compreende as informações ocultas.
8. Decodificador, de acordo com a reivindicação 7, caracterizado pelo fato de que o resultado da aplicação da função verificação depende das coordenadas (x, y), dentro da matriz de coeficientes, de um último coeficiente significativo do vetor de ocultação de coeficientes, em que a função verificação compreende a seguinte função: mod(x + y + R,2) onde x e y são as coordenadas da matriz de coeficientes e R é um valor inteiro.
9. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: reconstruir, para um primeiro bloco, informações ocultas a partir do vetor de coeficiente correspondendo ao primeiro bloco, em que as informações ocultas compreendem uma parte informações de ordens de varredura associadas ao primeiro bloco, e selecionar, para o primeiro e ao menos um segundo bloco, uma ordem de varredura que é baseada nas informações de ordens de varredura associadas ao primeiro bloco.
10. Método para decodificar coeficientes de blocos, caracterizado por compreender: decodificar um ou mais vetores de coeficientes de um fluxo de bits representando uma sequência de quadros de vídeo, em que cada quadro de vídeo é associado a um ou mais blocos, e em que cada vetor de coeficiente dos um ou mais vetores de coeficiente corresponde a um bloco associado a um quadro de vídeo da sequência de quadros de vídeo, reconstruir, para ao menos um bloco, informações ocultas a partir dos um ou mais vetores de coeficiente do ao menos bloco, em que as informações ocultas compreendem uma parte de informações de ordens de varredura associadas ao pelo menos um bloco, selecionar, para cada bloco, uma ordem de varredura para o bloco a partir de um conjunto de ordens de varredura baseadas nas informações de ordens de varredura associadas ao pelo menos um bloco, e obter uma matriz de coeficiente mediante varredura inversa , para cada bloco, dos um ou mais vetores de coeficientes de acordo com a ordem de varredura selecionada para o bloco.
11. Codificador para codificar coeficientes de blocos, caracterizado por compreender: um meio legível por computador não transitório portando um programa de computador que compreende um código de programa; e um ou mais processadores configurados para executar o código de programa para: selecionar, para cada bloco, uma ordem de varredura para o bloco a partir de um conjunto de ordens de varredura, em que cada bloco corresponde a uma matriz de coeficiente respectiva, varrer, para cada bloco, a matriz de coeficientes correspondendo ao bloco de acordo com a ordem de varredura selecionada para o bloco para obter um vetor de coeficiente correspondendo ao bloco, ocultar, para ao menos um bloco, informações de ordens de varredura que identificam a ordem de varredura selecionada para o pelo menos um bloco ao menos parcialmente no vetor de coeficiente correspondendo ao pelo menos um bloco, codificar, para cada bloco, o vetor de coeficiente correspondendo aos blocos em um fluxo de bits representando uma sequência de quadros de vídeo, em que cada quadro de vídeo é associado a um ou mais blocos, e em que cada vetor de coeficiente dos um ou mais vetores de coeficiente corresponde a um bloco associado a um quadro de vídeo da sequência de quadros de vídeo.
12. Codificador, de acordo com a reivindicação 11, caracterizado pelo fato de que ocultar, para o ao menos um bloco, as informações de ordens de varredura compreende: ocultar, para o pelo menos um bloco, as informações de ordens de varredura em um vetor de ocultação de coeficientes escolhido entre os vetores de coeficiente correspondendo ao pelo menos um bloco.
13. Codificador, de acordo com a reivindicação 12, caracterizado pelo fato de que ocultar, para o ao menos um bloco, as informações de ordens de varredura no vetor de ocultação de coeficientes é baseado em uma condição de ocultação, em que a condição de ocultação é baseada em uma comparação de um parâmetro que depende do vetor de ocultação de coeficientes com um limite.
14. Codificador, de acordo com a reivindicação 13, caracterizado pelo fato de o parâmetro ser: - um número de coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma distância entre primeiro e último coeficientes significativos dentro do vetor de ocultação de coeficientes, ou - uma razão de um valor máximo absoluto para um valor mínimo absoluto não-zero dos coeficientes dentro do vetor de ocultação de coeficientes, onde a condição de ocultação é verdadeira se o parâmetro estiver acima do limite, e falsa se o parâmetro estiver abaixo do limite.
15. Codificador, de acordo com a reivindicação 13, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: verificar a condição de ocultação, e ocultar as informações de ordens de varredura no vetor de ocultação de coeficientes se a condição de ocultação for verdadeira.
16. Codificador, de acordo com a reivindicação 13, caracterizado pelo fato de, se a condição de ocultação for falsa, os um ou mais processadores são adicionalmente configurados para executar o código de programa para , recursivamente, selecionar outra ordem de varedura a partir do conjunto de ordens de varredura até que a condição de ocultação para aquela outra ordem de varredura selecionada seja verdadeira.
17. Codificador, de acordo com a reivindicação 13, caracterizado pelo fato de, se a condição de ocultação for falsa, selecionar, para cada bloco, a ordem de varredura compreende selecionar uma ordem de varredura padrão predefinida.
18. Codificador, de acordo com a reivindicação 12, caracterizado pelo fato de que ocultar, para o pelo menos um bloco, as informações de ordens de varredura no vetor de ocultação de coeficientes compreende: aplicar uma função verificação ao vetor de ocultação de coeficientes para obter um resultado de aplicação da função verificação, e determinar se o resultado da aplicação da função verificação corresponde às informações de ordens de varredura, e, se não, modificar o vetor de ocultação de coeficientes de modo que o resultado da aplicação da função verificação corresponda às informações de ordens de varredura.
19. Codificador, de acordo com a reivindicação 18, caracterizado pelo fato do resultado da aplicação da função verificação depender das coordenadas (x, y), dentro da matriz de coeficientes, de um último coeficiente significativo do vetor de ocultação de coeficientes, em que a função verificação compreende a seguinte função: mod(x + y + R,2) x e y sendo as coordenadas da matriz de coeficientes e R sendo um valor inteiro.
20. Codificador, de acordo com a reivindicação 11, caracterizado pelo fato de que, se uma ordem de varredura idêntica for selecionada para um primeiro e ao menos um segundo bloco, os um ou mais processadores são adicionalmente configurados para executar o código de programa para: ocultar as informações de ordens de varredura que identificam a ordem de varrdura idêntica em um ou mais coeficientes do primeiro bloco.
21. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: obter uma ou mais ordens de varredura pré-definidas, gerar uma ou mais ordens de varredura geradas, e selecionar, para cada bloco, a ordem de varredura para o bloco a partir das uma ou mais ordens de varredura pré- definidas e as uma ou mais ordens de varredura geradas com base nas informações de ordem de varredura para o bloco contido no fluxo de bits, em que gerar as uma ou mais ordens de varredura geradas depende de uma ou mais matrizes de coeficientes obtida previamente de blocos.
22. Decodificador, de acordo com a reivindicação 21, caracterizado pelo fato de as uma ou mais ordens de varredura predefinidas serem obtidas para cada um de uma pluralidade de conjuntos de parâmetros de codificação, em que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: gerar, para cada conjunto de parâmetros de codificação, uma ordem de varredura para o conjunto de parâmetros de codificação dependendo de uma ou mais matrizes de coeficientes previamente obtidas associadas ao conjunto de parâmetros de codificação, em que selecionar, para cada bloco, a ordem de varredura para o bloco compreende: determinar um conjunto de parâmetros de codificação do bloco, e selecionar a ordem de varredura para a matriz de coeficientes obtida para o bloco a partir das uma ou mais ordens de varredura predefinidas e das uma ou mais ordens de varredura geradas para o conjunto de parâmetros de digitalização determinado do bloco.
23. Decodificador, de acordo com a reivindicação 22, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: obter, para cada um da pluralidade de conjuntos de parâmetros de codificação, estatística de distribuição de uma ou mais matrizes de coeficientes previamente obtida associada ao conjunto de parâmetros de codificação, e gerar, para cada conjunto de parâmetro de codificação, a ordem de varredura para o conjunto de parâmetros de codificação que dependem da estatística de distribuição para o conjunto de parâmetros de codificação.
24. Decodificador, de acordo com a reivindicação 23, caracterizado pelo fato de, se a ordem de varredura selecionada para um determinado bloco for uma ordem de varredura predefinida, então os um ou mais processadores são adicionalmente configurados para executar o código de programa para não atualizar ou reiniciar a estatística de distribuição para o conjunto de parâmetros de codificação do determinado bloco.
25. Decodificador, de acordo com a reivindicação 23, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: analisar, para cada bloco, informações de parâmetros de codificação a partir do fluxo de bits, e determinar o conjunto de parâmetros de codificação de um determinado bloco de acordo com as informações de parâmetros de codificação analisadas para o determinado bloco.
26. Decodificador, de acordo com a reivindicação 21, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: analisar as informações de ordens de varredura que identificam a ordem de varredura selecionada a partir do fluxo de bits.
27. Método, de acordo com a reivindicação 10, caracterizado pelo fato de compreender adicionalmente: obter uma ou mais ordens de varredura pré-definidas, gerar uma ou mais ordens de varredura geradas, e selecionar, para cada bloco, a ordem de varredura para o bloco a partir das uma ou mais ordens de varredura pré- definidas e as uma ou mais ordens de varredura geradas com base nas informações de ordem de varredura para o bloco contido no fluxo de bits, em que gerar as uma ou mais ordens de varredura geradas depende de uma ou mais matrizes de coeficientes obtidas previamente de blocos.
28. Codificador, de acordo com a reivindicação 11, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: obter uma ou mais ordens de varredura pré-definidas, gerar uma ou mais ordens de varredura geradas, e selecionar, para cada bloco, a ordem de varredura para o bloco a partir das uma ou mais ordens de varredura pré- definidas e as uma ou mais ordens de varredura geradas, em que gerar as uma ou mais ordens de varredura geradas depende de uma ou mais matrizes de coeficientes obtidas previamente de blocos.
29. Codificador, de acordo com a reivindicação 28, caracterizado pelo fato de que as uma ou mais ordens de varredura pré-definidas são obtidas para cada um de uma pluralidade de conjuntos de parâmetro de codificação, em que os um ou mais processadores são adicionalmente configurados para executar o código de programa para: gerar, para cada conjunto de parâmetro de codificação, uma ordem de varredura para o conjunto de parâmetro de codificação dependendo de uma ou mais matrizes de coeficientes previamente obtidas associadas ao conjunto de parâmetro de codificação, em que selecionar, para cada bloco, a ordem de varredura para o bloco compreende: determinar um conjunto de parâmetros de codificação do bloco, e selecionar a ordem de varredura para a matriz de coeficientes obtida para o bloco a partir das uma ou mais ordens de varredura pré-definidas e das uma ou mais ordens de varredura geradas para o conjunto de parâmetros de codificação determinado do bloco.
30. Codificador, de acordo com a reivindicação 29, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar código de programa para: obter, para cada um da pluralidade de conjuntos de parâmetros de codificação, estatística de distribuição de uma ou mais matrizes de coeficientes previamente obtida associada ao conjunto de parâmetros de codificação, e gerar, para cada conjunto de parâmetros de codificação, a ordem de varredura para o conjunto de parâmetros de codificação dependendo da estatística de distribuição para o conjunto de parâmetro de codificação.
31. Codificador, de acordo com a reivindicação 30, caracterizado pelo fato de que, se a ordem de varredura selecionada para um dado bloco for uma ordem de varredura pré-definida, então os um ou mais processadores são adicionalmente configurados para executar o código de programa para não atualizar ou reinicializar a estatística de distribuição para o conjunto de parâmetros de codificação do dado bloco.
32. Codificador, de acordo com a reivindicação 28, caracterizado pelo fato de que os um ou mais processadores são adicionalmente configurados para executar o código de programa para adicionar informações de ordem de varredura identificando a ordem de varredura selecionada no fluxo de bits.
33. Codificador, de acordo com a reivindicação 28, caracterizado pelo fato de que selecionar, para cada bloco, a ordem de varredura a partir das uma ou mais ordens de varredura pré-definidas e as uma ou mais ordens de varredura geradas é baseado em uma função custo.
34. Meio de armazenamento legível por computador não transitório, caracterizado por compreender instruções para a execução em um processador, em que as instruções, quando executados pelo processador, levam o processador a realizar o método como definido na reivindicação 10.
35. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de ordens de varredura compreende um conjunto de ordens de varredura pré- definidas e de ordens de varredura geradas.
36. Codificador, de acordo com a reivindicação 11, caracterizado pelo fato de que o conjunto de ordens de varredura compreende um conjunto de ordens de varredura pré- definidas e de ordens de varredura geradas.
37. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que o conjunto de ordens de varredura compreende um conjunto de ordens de varredura pré- definidas e de ordens de varredura geradas.
BR112018016440-2A 2016-02-12 Decodificador, método para decodificar coeficientes de blocos, codificador para codificar coeficientes de blocos e meio de armazenamento legível por computador não transitório BR112018016440B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2016/000068 WO2017138831A1 (en) 2016-02-12 2016-02-12 Method and apparatus for scan order selection

Publications (2)

Publication Number Publication Date
BR112018016440A2 BR112018016440A2 (pt) 2018-12-26
BR112018016440B1 true BR112018016440B1 (pt) 2023-07-18

Family

ID=

Similar Documents

Publication Publication Date Title
US10798390B2 (en) Method and apparatus for scan order selection
AU2016203628B2 (en) Method, apparatus and system for encoding and decoding video data
JP6595711B2 (ja) 階層的分割内でのブロックレベルの変換選択および黙示的シグナリングを伴う変換コーディングのための方法および装置
CN111819853B (zh) 图像块编码装置和图像块编码方法
CN111935482B (zh) 视频图像编码和解码的方法、装置及设备
BR112019018464A2 (pt) indicador de filtragem intra na codificação de vídeo
US11582455B2 (en) Method and apparatus for scan order selection
BR112016013761B1 (pt) Método e aparelho para reconstruir blocos de imagem utilizando predição, e meio de armazenamento legível por computador
KR20210068101A (ko) 단일-레벨 변환 분할 및 적응형 서브-블록 변환
JP2024522853A (ja) 複合インター及びイントラ予測を行うための方法及びシステム
WO2020182104A1 (zh) 进行编码和解码的方法、解码装置和编码装置
KR20230111255A (ko) 인트라 프레임 예측 방법, 장치 및 디코더와 인코더
BR112020007835A2 (pt) aparelhos e métodos de codificação de imagem e de decodificação de imagem, aparelho de armazenamento, captura, transmissão ou recepção de vídeos, software de computador, mídia de armazenamento não transitória legível por máquina, e, sinal de dados.
CN116868571A (zh) 对于帧间预测的改进的局部光照补偿
WO2023048646A2 (en) Methods and systems for performing combined inter and intra prediction
BR112018016440B1 (pt) Decodificador, método para decodificar coeficientes de blocos, codificador para codificar coeficientes de blocos e meio de armazenamento legível por computador não transitório
US20210306657A1 (en) Method and apparatus for deriving temporal motion
BR112018016409B1 (pt) Decodificador, método para decodificar, codificador, e método para codificar
CN114979632A (zh) 块矢量的编解码方法、编码设备、解码设备及存储介质
BR112018008131B1 (pt) Codificador para codificação de uma imagem de fonte, e decodificador e método para decodificar um fluxo de bits de entrada