[go: up one dir, main page]

BRPI0721427B1 - modificação de um fluxo de bits codificado - Google Patents

modificação de um fluxo de bits codificado Download PDF

Info

Publication number
BRPI0721427B1
BRPI0721427B1 BRPI0721427A BRPI0721427A BRPI0721427B1 BR PI0721427 B1 BRPI0721427 B1 BR PI0721427B1 BR PI0721427 A BRPI0721427 A BR PI0721427A BR PI0721427 A BRPI0721427 A BR PI0721427A BR PI0721427 B1 BRPI0721427 B1 BR PI0721427B1
Authority
BR
Brazil
Prior art keywords
modified
value
values
result
fact
Prior art date
Application number
BRPI0721427A
Other languages
English (en)
Inventor
Zou Dekun
Adam Bloom Jeffrey
Divorra Escoda Oscar
Yin Peng
Original Assignee
Contentarmor
Thomson Licensing
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Contentarmor, Thomson Licensing filed Critical Contentarmor
Publication of BRPI0721427A2 publication Critical patent/BRPI0721427A2/pt
Publication of BRPI0721427B1 publication Critical patent/BRPI0721427B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/913Television signal processing therefor for scrambling ; for copy protection
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking
    • G06T1/0028Adaptive watermarking, e.g. Human Visual System [HVS]-based watermarking
    • G06T1/0035Output size adaptive watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/467Embedding additional information in the video signal during the compression process characterised by the embedded information being invisible, e.g. watermarking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • H04N21/8358Generation of protective data, e.g. certificates involving watermark
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2201/00General purpose image data processing
    • G06T2201/005Image watermarking
    • G06T2201/0053Embedding of the watermark in the coding stream, possibly without decoding; Embedding of the watermark in the compressed domain

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Editing Of Facsimile Originals (AREA)

Description

Diretor Substituto de Patentes, Programas de Computador e Topografias de Circuitos Integrados “MODIFICAÇÃO DE UM FLUXO DE BITS CODIFICADO”
Referência remissiva a pedidos relacionados
Esse pedido reivindica o benefício tanto de (1) pedido provisional US número de série 60/919.702, intitulado “Modifying a coded bitstream”, e depositado em 23 de março de 5 2007 (número de referência do advogado PU070063), como (2) pedido provisional US número de série 60/934.634, intitulado “Modifying a coded bitstream”, e depositado em 14 de junho de 2007 (número de referência do advogado PU070137). Esses dois pedidos de prioridade são pelo presente incorporados a título de referência na íntegra.
ANTECEDENTES
Campo técnico
A presente revelação provê implementações referentes, por exemplo, à codificação.
Descrição da técnica anterior
Impressão com marca d'água envolve, tipicamente modificar uma porção de dados de tal modo que a marca d’água possa ser detectada posteriormente. Vários tipos diferentes 15 de dados podem ser impressos com marca d'água, incluindo dados codificados. Entretanto, . esquemas de codificação estão avançando e mecanismos existentes para modificar dados codificados podem não fornecer capacidades desejadas de impressão com marca d'água > para tais esquemas de codificação avançados.
Sumário
De acordo com um aspecto geral, dados codificados são acessados que incluem pelo menos uma primeira porção e uma segunda porção. A segunda porção é decodificável para produzir um resultado que se baseia na primeira porção bem como na segunda porção. Uma primeira porção modificada é determinada de tal modo que a segunda porção seja decodificável para produzir o resultado com base na segunda porção e primeira porção modifi25 cada.
De acordo com outro aspecto geral, informações identificam um valor de substituição para uma primeira porção de um conjunto de dados codificado. O conjunto de dados codificado também inclui uma segunda porção, e a decodificação da segunda porção se baseia na segunda porção e na primeira porção. O valor de substituição tem uma proprieda30 de tal que: (1) a decodificação da segunda porção produz um resultado decodificado específico se a decodificação for executada no conjunto de dados codificado incluindo a primeira porção, e (2) a decodificação da segunda porção produz o resultado decodificado específico se a decodificação for realizada no conjunto de dados codificado incluindo o valor de substituição em vez da primeira porção.
De acordo com outro aspecto geral, um fluxo de bits codificado é acessado que inclui pelo menos uma primeira porção e uma segunda porção, a segunda porção sendo decodificável para produzir um resultado que se baseia na primeira porção bem como na segunda porção. A primeira porção é substituída com um valor de substituição para produzir um fluxo de bits codificado modificado para o qual uma decodificação da segunda porção ainda produzirá o resultado.
De acordo com outro aspecto geral, dados codificados incluem uma primeira porção modificada e uma segunda porção, a primeira porção modificada sendo uma substituição de uma primeira porção. A segunda porção é decodificável para produzir um resultado que se baseia na primeira porção modificada bem como na segunda porção. O resultado é igual como se a decodificação da segunda porção fosse realizada com base na segunda porção e a primeira porção em vez da segunda porção e primeira porção modificada.
De acordo com outro aspecto geral, um conjunto de dados modificado é acessado incluindo uma primeira porção modificada e uma segunda porção. A primeira porção modificada resulta de uma modificação de uma primeira porção. A segunda porção é decodificável para produzir um resultado, e o resultado se baseia na primeira porção modificada bem como na segunda porção. A segunda porção é decodificada para produzir o resultado, onde o resultado é igual como se decodificação da segunda porção fosse realizada com base na segunda porção e primeira porção em vez da segunda porção e primeira porção modificada. A primeira porção modificada é decodificada.
Os detalhes de uma ou mais implementações são expostos nos desenhos em anexo e descrição abaixo. Mesmo se descrito em uma modalidade específica, deve ser evidente que implementações podem ser configuradas ou incorporadas em vários modos. Por exemplo, uma implementação pode ser realizada como um método.ou incorporada como um aparelho configurado para executar um conjunto de operações, ou incorporada como um aparelho para armazenar instruções para executar um conjunto de operações, ou incorporada em um sinal. Outros aspectos e características tornar-se-ão evidentes a partir da seguinte descrição detalhada considerada em combinação com os desenhos em anexo e reivindicações.
Breve descrição dos desenhos
A figura 1 é um diagrama de blocos de uma implementação de impressão de marca d’água de fluxo codificado por entropia.
A figura 2a é um diagrama de blocos que mostra uma ordenação de operações utilizadas na modificação de um fluxo de bits codificado.
A figura 2b é um diagrama de blocos que mostra outra ordenação de operações utilizada na modificação de um fluxo de bits codificado.
A figura 2c é um diagrama de blocos de um método para modificar um fluxo de bits codificado.
A figura 2d é um diagrama de blocos de outro método para modificar um fluxo de bits codificado.
A figura 3 é um diagrama de fluxo de um método para modificar um elemento de sintaxe alvo.
A figura 4 é um diagrama de fluxo de um método para modificar um elemento de sintaxe alvo que é codificado como modo de derivação.
A figura 5 é um diagrama de fluxo de outro método para modificar um elemento de sintaxe alvo.
A figura 6 é um diagrama de fluxo de um método para substituir um bloco de bits codificado.
A figura 7 é um diagrama de fluxo de um método para decodificar um fluxo de bits modificado.
A figura 8 é um diagrama de fluxo de um método para detectar informações de marca d’água.
A figura 9 é um diagrama de fluxo de outro método para detectar informações de marca d’água.
Descrição detalhada
Pelo menos uma implementação modifica um fluxo de bits codificado por entropia diretamente sem exigir etapas de decodificar e recodificar por entropia. Além disso, implementações são fornecidas nas quais o código de entropia é um código aritmético e, mais especificamente, em que o esquema de codificação aritmético conhecido como Codificação aritmética binária adaptável com base em contexto (CABAC) é utilizado. CABAC pode ser caracterizado como um esquema de codificação com “memória” em que sequências codificadas subsequentes dependem de sequências codificadas anteriores. Desse modo, uma sequência codificada dada é modificada, na implementação, de tal modo que sequências codificadas subsequentes podem ainda ser corretamente decodificadas. Adicionalmente, implementações são fornecidas que aplicam uma marca d’água a um fluxo de bits codificado por entropia diretamente sem exigir etapas de decodificar e recodificar por entropia. Pelo menos uma implementação de impressão com marca d’água modifica o fluxo de bits codificado por CABAC. CABAC é amplamente utilizado no padrão H.264/AVC.
Em muitas aplicações há uma necessidade crescente no mercado para impressão com marca d’água de um fluxo de vídeo comprimido. Abordagens anteriores descomprimiram o fluxo, aplicaram a impressão de marca d’água no domínio de pixel e então recomprimiram. Um avanço anterior foi utilizar informações a partir do fluxo comprimido original para simplificar a recompressão. Isso foi aperfeiçoado com técnicas que descomprimem parcialmente o fluxo por aplicar decodificação por entropia e análise do fluxo de bits codificado. Após decodificação por entropia, os algoritmos de impressão de marca d’água trabalharam diretamente em elementos de sintaxe como coeficientes e vetores de movimento. Após o fluxo ser modificado para representar os dados de marca d’água, a codificação por entropia seria aplicada. Os requerentes propuseram as implementações nessa revelação que aplicam a impressão com marca d’água em um fluxo de bits codificado por entropia diretamente sem as etapas de decodificar e recodificar por entropia.
A impressão com marca d’água de um fluxo CABAC envolve alterar um elemento de sintaxe codificado no fluxo CABAC. Entretanto, como mencionado acima, é desejável aplicar-se uma marca d’água por modificar um elemento de sintaxe codificado de um fluxo de bits CABAC sem alterar a codificação de quaisquer outros elementos de sintaxe. Isso é difícil porque o valor de cada elemento em um fluxo CABAC afeta a interpretação dos valores que seguem. Em geral, a alteração de um elemento de sintaxe codificado fará com que todos os elementos codificados futuros sejam interpretados erroneamente ou não decodificáveis pelo decodificador.
Algumas aplicações têm uma limitação adicional de que as alterações feitas em um fluxo de bits codificado não podem alterar o comprimento do fluxo de bits. No extremo, é necessário que um elemento codificado seja substituído com um valor alternativo somente se o comprimento de bits do valor alternativo for igual àquele do valor original.
Inicialmente, os requerentes discutem o cenário no qual uma cadeia de bits em um fluxo H.264/AVC codificado por CABAC pode ser substituída com uma cadeia de bits diferente de tal modo que as modificações afetem somente um elemento de sintaxe alvo e não interfiram na interpretação correta de quaisquer outros elementos de sintaxe codificados. Em um tal cenário, não é necessário que a cadeia de bits de substituição seja do mesmo comprimento que a cadeia de bits original. Nem todos os elementos de sintaxe em um fluxo de bits H.264/AVC são codificados por CABAC e pode ser possível modificar esses elementos não CABAC. Entretanto, pelo menos uma implementação descrita aqui concentra especificamente naqueles elementos de sintaxe que são codificados com CABAC.
Em segundo lugar, os requerentes descrevem e mostram uma abordagem eficiente que pode ser utilizada quando não exigem que a cadeia de bits de substituição seja do mesmo comprimento que a cadeia de bits original.
Em terceiro lugar, os requerentes descrevem e mostram como modificar elementos de sintaxe em um fluxo de bits codificado por CABAC, como descrito acima, para incorporar informações no fluxo de bits. Além disso, essas informações podem ser posteriormente recuperadas por analisar o fluxo de bits modificado ou por decodificar o fluxo de bits em uma sequência de imagens de domínio de pixel e analisar essas imagens.
Finalmente, os requerentes descrevem e mostram como o modo de derivação pode ser explorado para aperfeiçoar a eficiência do processo de incorporação de marca d’água para o fluxo de bits codificado.
Uma breve discussão de CABAC, Modo de derivação e Impressão com marca d’água é fornecida para auxiliar a compreender as várias implementações. Essas discussões são frequentemente específicas. Entretanto, essas discussões não pretendem ser completas e além disso, cada detalhe nessas discussões pode não necessariamente se aplicar a todas as implementações descritas nesse pedido. Adicionalmente, essas discussões incluem muito material que é conhecido por aqueles versados na técnica. Entretanto, essas discussões incluirão invariavelmente material, ou a organização de material, que é novo, embora tais instâncias possam não ser indicados especificamente. Essas discussões não pretendem limitar a amplitude do pedido. Em vez disso, essas discussões fornecem um ou mais contextos específicos, de muitos contextos possíveis, para auxiliar o leitor a compreender as implementações.
Discussão sobre CABAC
A etapa final em muitos métodos de compressão de vídeo é a codificação por entropia sem perda dos dados comprimidos. Em H.264/AVC, CABAC é comumente utilizado para codificação por entropia. CABAC é um esquema de codificação aritmética que obtém desempenho de compressão aperfeiçoado por manter contextos individuais para cada tipo de elemento de sintaxe e por adaptar esses contextos com cada elemento codificado. Isso representa um número de extensões de esquemas de codificação aritmética típicos. Em primeiro lugar, CABAC é projetado para codificar aritmeticamente dados binários. Em outras palavras, cada símbolo é um 0 ou um 1. Valores de elemento de sintaxe que não são inerentemente binários são primeiramente binarizados antes da codificação aritmética. Isso significa que há somente a probabilidade de um 0 e a probabilidade de um 1. O método de binarização específico pretende otimizar a eficácia da codificação aritmética subsequente. Cada elemento de sintaxe binarizado é denominado uma cadeia bin. Uma segunda extensão é que a codificação é adaptável. À medida que cada bit de cadeia de bin é processado, as variáveis de decodificação que controlam a codificação são deixadas mudar. Finalmente, essa adaptação é permitida ser baseada em contexto. Associado a cada bit está um contexto composto de um número de variáveis. Algumas das variáveis de contexto são compartilhadas entre um número de contextos e algumas são dedicadas a um contexto único. A codificação de um elemento de sintaxe causa a adaptação do contexto associado. H.264/AVC define 460 contextos separados que são mantidos durante codificação e decodificação.
O termo “Variáveis de decodificação” utilizado acima, se refere a dois conjuntos de variáveis. O primeiro conjunto é denominado “Variáveis de contexto” que contém duas variáveis que representam a probabilidade de um 0 ou um 1 (representado pela identificação de qual desses símbolos é menos provável, LPS, e um índice de estado de probabilidade, I, em uma tabela de probabilidades indicando a probabilidade desse LPS aparecer a seguir no fluxo de bits). Cada contexto é associado a um índice de contexto que mantém um conjunto de variáveis de contexto. O segundo conjunto é denominado “Variáveis de estado” que é composto de duas variáveis para definir o valor de faixa de CABAC interno (representado pela parte inferior d faixa, L, e a largura da faixa, R). As variáveis L e R são compartilhadas entre todos os elementos de sintaxe que separam LPS e valores I são mantidos para cada contexto. Os termos “variáveis de estado”, “valor(es) de estado” e “valores de variável de estado” são utilizados de forma intercambiável aqui.
Após binarização, as variáveis de decodificação apropriadas são recuperadas e utilizadas para codificar aritmeticamente a cadeia de bin. Após codificação (ou decodificação) de cada bit, o contexto correspondente será atualizado com base no bit codificado (ou decodificado) e os valores de contexto anteriores.
Para um elemento de sintaxe específico, espera-se que o símbolo seguinte a ser codificado seja o MPS (o símbolo mais provável é o símbolo binário que não é o LPS). Se isso ocorrer, fará com que o índice, I, mude para refletir uma diminuição adicional na expectativa ou probabilidade do LPS que aparece a seguir. Se o LPS aparecer, o índice mudará para refletir um aumento na probabilidade do LPS. A probabilidade do LPS não pode exceder 50% pois isso significaria que o símbolo não mais é o menos provável. Nesse caso, o LPS mudará para o outro símbolo e o índice novamente representará uma probabilidade menor do que 50%.
Os valores L e R são atualizados do mesmo modo que todos os processos de codificação aritmética. Dependendo de qual símbolo é codificado, o L será o limite inferior do intervalo atual e o R será a largura do intervalo atual.
Em geral, há duas cadeias de bin que resultam nas mesmas alterações nas variáveis de estado (especificamente L e R) e isso indicaria que não é possível modificar um fluxo de bits aritmeticamente codificado sem fazer com que o decodificador interprete erroneamente todos os elementos codificados subsequentes. Entretanto, CAB requer que L e R sejam representados com números binários de comprimento fixo. Isso é realizado através de um processo conhecimento como renormalização. Detalhes específicos da renormalização do L e R podem ser encontrados, por exemplo, no padrão H.264.
Um resultado desse processo de renormalização é que se torna possível para um número de diferentes cadeias de bin induzir as mesmas alterações no L e R. Pelo menos uma implementação explora esse fato para identificar valores de elemento de sintaxe que podem ser substituídos com valores diferentes enquanto mantém os valores originais de variável de estado L e R no decodificador de CABAC.
Discussão de modo de derivação
No caso especial de elementos de sintaxe para os quais os dois símbolos têm probabilidade igual, o LPS e índice de estado seriam atualizados constantemente sem introduzir nenhum ganho em termos de eficiência de codificação. A probabilidade representada pelo índice seria essencialmente 50% significando que a faixa, R, experimentaria a mesma alteração previsível de um bit para o seguinte.
Para acelerar o processo de codificação/decodificação sem comprometer eficiência de codificação, elementos de sintaxe para os quais se espera que os símbolos tenham probabilidade igual são identificados e tratados em um modo especial denominado modo de derivação. Aqui, nenhum contexto é utilizado e a probabilidade dos dois símbolos é fixa para ser 0,5. O resultado é que a faixa, R, será metade do valor após cada bin decodificado independente de seu valor. A renormalização dobraria a R de modo que a representação final de comprimento fixo de R permanecerá inalterada na decodificação do modo de derivação. Somente a parte inferior da faixa, L, se adapta à medida que novos símbolos são codificados. Pelo menos uma implementação explora modo de derivação para simplificar a busca por valores de elemento de sintaxe que podem ser substituídos com valores diferentes enquanto mantém os valores originais de variável de estado no decodificador de CABAC.
O padrão H.264 especifica três elementos de sintaxe que devem ser codificados com CABAC modo de derivação. São o sinal de coeficientes, o sufixo de diferença de vetor de movimento, e o sufixo de dados de coeficiente.
Discussão sobre impressão com marca d’água
Os requerentes apresentam agora uma discussão curta sobre o campo geral de impressão com marca d’água e a área mais específica nesse campo na qual uma ou mais implementações descritas se aplicam. Aqueles com conhecimentos comuns na técnica de impressão com marca d’água estarão familiarizados com grande parte das informações apresentadas aqui.
A frase “impressão com marca d’água digital”, como utilizado aqui, se refere tipicamente a métodos que modificam uma obra de arte (tipicamente, uma imagem, sequência de imagem em movimento, ou clipe de áudio), de acordo com alguns dados de carga útil, de tal modo que as seguintes condições sejam atendidas:
1. a versão modificada da obra é indistinguível de forma perceptual em relação à versão original da obra, e
2. os dados de carga útil podem ser recuperados da versão modificada da obra em um momento posterior.
Uma subclasse de métodos de impressão com marca d’água digital, mencionados como “impressão com marca d’água digital robusta” introduz uma terceira condição:
3. os dados de carga útil podem ser recuperados a partir de uma versão distorcida da versão modificada da obra,onde a distorção pode ter sido introduzida pelo processamento de sinal comum e tratamento de sinal aos quais a obra modificada pode ter sido submetida (por exemplo, compressão, filtração de redução de ruído, intensificações de cor, etc.) ou a distorção pode ter sido introduzida intencionalmente por um adversário que tenta tornar os dados de carga útil irrecuperáveis.
Há muitas aplicações de impressão com marca d’água digital robusta incluindo, porém não limitado a, o que se segue:
1. identificação do proprietário: a carga útil de marca d’água identifica o proprietário de uma obra;
2. controle de cópia: a carga útil de marca d’água indica um direito autoral associado a uma obra. Dispositivos para visualização, duplicação, gravação, impressão, distribuição ou qualquer outra ação podem recuperar os dados de carga útil e limitar a ação para aqueles permitidos pelo direito autoral.
3. rastreamento de transação: a carga útil de marca d’água identifica o receptor a quem a cópia de uma obra foi legitimamente distribuída. Isso pode ser útil quando os receptores legítimos não recebem os direitos para distribuir adicionalmente a obra. Se uma obra não autorizada for descoberta, o proprietário do conteúdo original pode recuperar a carga útil a partir da cópia não autorizada e identificar o receptor responsável pelo uso não autorizado.
Aqueles com conhecimentos comuns na técnica reconhecerão que há muitas outras aplicações de impressão com marca d’água digital robusta.
A impressão com marca d’água pode ser executada na “banda base” ou em obras comprimidas. Sequências de imagem em movimento ou imageamento de banda base são, por exemplo, representações de domínio de pixel. Obras de áudio de banda base são, por exemplo, amostras de áudio. Algumas aplicações exigem impressão com marca d’água de uma obra comprimida. Nesse caso, o resultado também é uma obra comprimida. A última etapa de compressão é tipicamente codificação por entropia e a primeira etapa de descompressão é tipicamente decodificação por entropia. O processo de codificação / decodificação por entropia é tipicamente sem perda. Uma abordagem para impressão com marca d’água de uma obra comprimida é primeiramente aplicar a decodificação por entropia, a seguir aplica a descompressão para obter uma representação de banda base. A representação de banda base é impressa com marca d’água e a obra impressa com marca d’água resultante é comprimida e codifica por entropia. Essa abordagem pode ser demorada e pode resultar em degradação de qualidade perceptual devido a recompressão.
Para melhorar a qualidade perceptual e reduzir a computação necessária, informações a partir da obra comprimida original, como vetores de movimento, decisões de modo, fatores de qualidade e outras informações podem ser poupados durante descompressão e utilizadas durante recompressão. Isso significa que a recompressão não necessita executar nenhuma estimação de movimento (desse modo poupando computação e/ou tempo) e uso dos fatores de quantização originais e decisões de modo pode resultar em qualidade perceptual aperfeiçoada.
Uma classe de algoritmos de impressão com marca d’água denominada “impressão com marca d’água de domínio comprimido” surgiu. Esses métodos podem ser descritos como executando uma “decodificação parcial” antes de impressão com marca d’água em vez de “decodificação total” anteriormente descrito. Aqui a obra comprimida é primeiramente decodificada por entropia para expor os elementos de sintaxe da obra comprimida. Esses podem incluir coeficientes (DCT de bloco ou coeficientes de onda pequena, por exemplo), vetores de movimento, tipos de imagem, modos de previsão, e muitos outros elementos de sintaxe. O algoritmo de impressão com marca d’água modifica então diretamente alguns daqueles elementos de sintaxe. Finalmente, os elementos de sintaxe modificados são codificados por entropia para obter a obra comprimida modificada.
Pelo menos uma implementação descrita nesse pedido está compreendida em uma nova classe de algoritmos de impressão com marca d’água que poderia ser denominada “impressão com marca d’água de fluxo codificado por entropia”. Esses métodos modificam diretamente um fluxo codificado por entropia, como ilustrado na figura 1.
Com referência à figura 1, o fluxo comprimido original é diretamente modificado pela modificação de fluxo 102, de acordo com a Carga útil, e o resultado é o fluxo comprimido marcado resultante 103. A carga útil pode ser, por exemplo, o número de série do tocador, o modelo do tocador, ou essencialmente qualquer outra informação que se deseja ser utilizada para identificação posterior. O processo de modificação de fluxo é informado com relação ao local de todas as alterações a serem feitas e as alterações efetivas a serem feitas por metadados que podem ser geradas durante um estágio de pré-processamento 104. Os metadados 105 são gerados por decodificação 106 do fluxo comprimido original, e geração de uma marca d’água 108. Os metadados identificam os locais no fluxo onde alterações devem ser feitas (isto é, para geração de marca d’água) e indicam como o fluxo deve mudar em resposta a diferentes símbolos de carga útil. A figura 1 mostra um caso especial no qual os metadados são gerados por uma análise dos elementos de sintaxe decodificados da obra comprimida. Um aspecto de desafio de um método de impressão com marca d’água como esse é a geração dos metadados. O que se segue explica como isso pode ser feito para uma ou mais implementações.
O parágrafo anterior e a figura 1 sugerem que pode haver um estágio de préprocessamento 104. É útil indicar a situação na qual há três momentos importantes. O primeiro momento é onde/quando o fluxo de bits comprimido é analisado para gerar alguns metadados. O segundo momento é onde/quando alguns ou todos os metadados gerados no primeiro momento são utilizados, juntamente com uma sequência específica de símbolos, conhecido como a carga útil, para modificar o fluxo de bits. O terceiro momento é onde/quando alguns ou todos ou nenhum dos metadados gerados no primeiro momento são utilizados para analisar um fluxo de bits modificado ou uma sequência de imagem de movimento obtida por descompressão do fluxo de bits modificado ou uma versão distorcida da sequência de imagem de movimento obtida por descompressão do fluxo de bits modificado. A finalidade dessa análise, no terceiro momento, é recuperar a carga útil.
Para entender o contexto, considere que o primeiro momento ocorre antes da distribuição de uma obra, o segundo momento ocorre durante duplicação onde a carga útil utilizada para cada cópia identifica exclusivamente aquela cópia, e o terceiro momento ocorre após uma cópia não autorizada da obra ter sido encontrada em cujo momento a carga útil é recuperada para revelar qual das cópias distribuídas foi a fonte da cópia não autorizada. Esse exemplo é somente uma ilustração, e não pretende sugerir quaisquer limites para a aplicação desses conceitos. Além disso, embora possa haver exigências específicas de aplicação, não há exigência técnica de que o primeiro momento (o pré-processamento) e o segundo momento (a incorporação) sejam diferentes.
Como exemplos adicionais, os requerentes se referem novamente à figura 1. O estágio de pré-processamento pode ser realizado durante a criação de um filme para entrega, por exemplo. Em um cenário, um processo é realizado para identificar locais de elementos codificados para os quais substituições aceitáveis foram determinadas. Os resultados desse processo (por exemplo, os locais de tais elementos codificados e os valores de substituição aceitáveis) são armazenados em metadados que são incluídos com o filme codificado.
A modificação de fluxo pode ser realizada durante reprodução do filme, na qual, por exemplo, o número serial do tocador (por exemplo, um tocador de software, um tocador de set top box, ou um tocador de DVD) é utilizado como a carga útil. A carga útil é utilizada, por exemplo, para determinar se deve substituir os elementos codificados identificados. Por exemplo, se uma alternativa aceitável única for fornecida nos metadados, então um “0” na sequência de carga útil pode indicar “sem substituição” para a sequência codificada associada, e um “1” pode indicar “substituição”. Como outro exemplo, todos os locais identificados podem ser substituídos, e a carga útil pode indicar qual de dois valores de substituição fornecidos (para cada sequência codificada que é identificada pelo local) deve ser utilizado. Por exemplo, um “0” pode indicar o uso da primeira substituição, e um “1” pode indicar o uso da segunda substituição.
A recuperação da carga útil pode ser realizada em um local que não é relacionado aos locais nos quais a modificação de fluxo ocorreu. A chave é ter acesso a um documento que contém dados baseados em fluxo modificado. Por exemplo, um fluxo modificado pode ser copiado eletronicamente e colocado em um DVD gravável, ou um fluxo modificado pode ser apresentado e então gravado novamente e codificado, e então colocado em um DVD gravável. Se esse DVD gravável for adquirido, então esse DVD gravável pode ser analisado para recuperar a carga útil.
Incorporação de Dados baseados em CABAC em fluxos de bits codificados por AVC
Um modo para imprimir com marca d’água um fluxo comprimido é alterar os valores de um ou mais elementos de sintaxe de acordo com as seguintes exigências/condições:
R1. o fluxo comprimido modificado ainda é um fluxo válido (permanece em conformidade com o padrão de compressão específico).
R2. a sequência de imagem em movimento obtida por descompressão do fluxo comprimido modificado é indistinguível de forma perceptual a partir da sequência de imagem em movimento obtida por descompressão do fluxo comprimido original.
R3. A modificação no fluxo resulta em uma alteração mensurável na sequência de imagem em movimento obtida por descompressão do fluxo comprimido modificado.
A exigência R1 é particularmente um desafio quando a técnica de compressão utiliza uma técnica de codificação por entropia de código aritmético. Esse é o caso para H.264/AVC com CABAC.
Os requerentes consideram primeiramente a exigência R1 e discutem como uma cadeia de bits em um fluxo H.264/AVC codificado por CABAC pode ser substituída com uma cadeia de bits diferente de tal modo que fluxo comprimido modificado ainda é um fluxo válido. Isso requer que as modificações afetem somente um elemento de sintaxe alvo e não interfiram na interpretação correta de quaisquer outros elementos de sintaxe codificados. Nessa implementação, não é necessário que a cadeia de bits de substituição tenha o mesmo comprimento que a cadeia de bits original (essa limitação é discutida posteriormente). Para fins de explicação, a seguinte descrição trata da modificação de um elemento de sintaxe único, mencionado como o “elemento alvo”. Entretanto, aqueles com conhecimentos comuns na técnica reconhecerão que o mesmo conceito pode ser aplicado a um conjunto de elementos alvo que inclui mais de um elemento alvo.
O elemento alvo tem um “valor original” que é binarizado em uma “cadeia bin original”. A cadeia bin original é codificada por CABAC, juntamente com outros elementos de sintaxe para fornecer o “Bloco codificado original” de bits. No processo de codificação por CABAC, a cadeia de bit original modifica as variáveis de estado e os contextos que são associados ao sintaxe a partir de seus valores originais para seus valores modificados.
Em várias implementações descritas, há duas etapas para modificar um fluxo de bits codificado por CABAC para estar de acordo com a exigência R1, porém as etapas podem ser realizadas em qualquer ordem. Ao discutir essas etapas, faz-se referência a “Etapa 1” e “Etapa 2”, porém esses números de etapa não pretendem indicar ou exigir qualquer ordem específica ou particular de desempenho das mesmas. As figuras 2a e 2b são diagramas de blocos que mostram as etapas para cumprir a exigência R1.
Dado um fluxo de bits H.264/AVC codificado por CABAC, a etapa 1 é construir um mapeamento (202) a partir do elemento alvo para o bloco codificado original. Em uma implementação prática, isso é feito por decodificar o fluxo de bits e rastrear quais bits de fluxo de bits produzem quais elementos de sintaxe (e valores variáveis de estado correspondentes). Em uma segunda implementação prática, um decodificador CABAC é aplicado ao fluxo de bits comprimido para expor os elementos de sintaxe. Esses elementos de sintaxe são então processados por um codificador de CABAC com instrumento para recuperar o fluxo de bits comprimido original. O fluxo de bits recuperado não é de interesse aqui, porém em vez disso é a instrumentação do codificador de CABAC que é útil. O codificador de CABAC com instrumento pode ser utilizado para rastrear a correspondência entre elementos de sintaxe e suas posições finais no fluxo de bits comprimido.
A etapa 2 é para buscar um ou mais valores alternativos aceitáveis para o elemento alvo (204). Um modo para buscar valores alternativos aceitáveis é examinar todos os valores alternativos possíveis e determinar quais, se algum, são aceitáveis. Cada valor de sintaxe alternativo possível será binarizado por uma cadeia de bin alternativa. A cadeia de bin alternativa é codificada por CABAC, juntamente com outros elementos de sintaxe para fornecer o Bloco Codificado de bits alternativo. No processo de codificação por CABAC, a cadeia de bin alternativa modifica as variáveis de estado e os contextos afetados a partir de seus valores originais para seus valores alternativos. Se todos os valores de variável de estado alternativos e os contextos afetados forem idênticos a todos os valores de variável de estado modificados e os contextos afetados, o valor de sintaxe alternativo possível é denominado um “valor alternativo aceitável.” Em outras palavras, a alteração seria aceitável se as variáveis de estado e os contextos afetados tiverem os mesmos valores que teriam tido se a alteração não tivesse sido feita.
Duas ordenações diferentes essas duas etapas 202, 204 são representadas nas figuras 2a e 2b, e os detalhes da etapa 204 são ilustrados na figura 3. Observe que o mapeamento e atribuição na etapa 1 (202) são somente necessários para elementos alvo para os quais pelo menos um valor de sintaxe alternativo foi encontrado na etapa 2 (204). Na segunda ordenação das etapas na figura 2b, o mapeamento da etapa 2 (202) necessita somente ser executado para aqueles elementos alvo identificados.
A figura 2c mostra um diagrama de blocos de um método 250 para modificar o fluxo de bits codificado. Inicialmente o fluxo de bits codificado tendo uma primeira porção e segunda porção é acessado (252). O valor de substituição é determinado para a primeira porção (254) e a primeira porção é então substituída com o valor de substituição determinado (256). Após o valor de substituição ter substituído a primeira porção, o fluxo de bits codificado modificado é enviado (258). O “envio” pode ser, por exemplo, transmissão eletrônica ou envio em um disco ou formulário mestre.
A segunda porção mencionada aqui pode ser o elemento de sintaxe adjacente seguinte (e valor variável de estado correspondente), ou pode ser a porção restante do fluxo de bits que poderia ser composto de dois ou mais elementos de sintaxe e valores de variável de estado correspondentes. Desse modo, ao determinar o valor de substituição para a primeira porção, pode-se considerar todos os elementos de sintaxe subsequentes e seus respectivos valores de variável de estado. Quando o valor de substituição alternativo ou determinado para a primeira porção não mudar ou alterar o valor variável de estado para os outros elementos de sintaxe na segunda porção, então o primeiro valor de substituição fornecerá a decodificação resultante desejada da segunda porção.
A operação 254 que determina um valor de substituição, também pode ser caracterizada como determinando uma primeira porção modificada. Na implementação sendo discutida, antes da modificação da primeira porção, a segunda porção é originalmente decodificável (a decodificação depende em parte da primeira porção não modificada) para produzir um resultado específico. Além disso, após a modificação da primeira porção, a segunda porção é decodificável (a decodificação depende em parte da primeira porção modificada) para produzir o mesmo resultado específico.
Outra implementação similar ao método 250, envolve duas operações. A primeira operação é acessar dados codificados incluindo pelo menos uma primeira porção e uma segunda porção. A segunda porção é decodificável para produzir um resultado que se baseia na primeira porção bem como na segunda porção. A segunda operação é determinar uma primeira porção modificada de tal modo que a segunda porção seja decodificável para produzir o resultado com base na segunda porção e primeira porção modificada.
Todos ou parte dos dados que identificam locais de elementos codificados e possíveis valores de substituição podem ser armazenados em um dispositivo de armazenagem, ou enviados eletronicamente. Uma implementação é um aparelho como um DVD, um disco rígido ou outro dispositivo de armazenagem. O aparelho inclui um meio legível por processador tendo informações armazenadas no mesmo. As informações armazenadas identificam um valor de substituição para uma primeira porção de um conjunto codificado de dados. O conjunto codificado de dados também inclui uma segunda porção, e a decodificação da segunda porção se baseia na segunda porção e na primeira porção. O valor de substituição tem uma propriedade de tal modo que (1) decodificação da segunda porção produz um resultado decodificado específico se a decodificação for executada no conjunto codificado de dados incluindo a primeira porção, e (2) decodificação da segunda porção produz o resultado decodificado específico se a decodificação for executada no conjunto codificado de dados incluindo o valor de substituição em vez da primeira porção. Outra implementação provê um sinal formatado para incluir as informações que são armazenadas no meio legível por processador desse aparelho.
A figura 2d mostra um diagrama de blocos de outra implementação de um método 260 para modificar o fluxo de bits codificado. Inicialmente, o fluxo de bits codificado tendo uma primeira porção e uma segunda porção é acessado (262). Metadados são então acessados (264) fornecendo informações com relação ao local da primeira porção no fluxo de bits codificado. Um valor de substituição para a primeira porção é então acessado (266) e a primeira porção é substituída (268) com o valor de substituição acessado. Após o valor de substituição ter substituído a primeira porção, o fluxo de bits codificado modificado é enviado (270). O “envio” pode ser, por exemplo, transmissão eletrônica ou envio em um disco ou formulário mestre.
Outra implementação, similar ao método 260, envolve duas operações. A primeira operação é acessar um fluxo de bits codificado que inclui pelo menos duas porções. A segunda porção é decodificável para produzir um resultado que se baseia na primeira porção bem como na segunda porção. A segunda operação está substituindo a primeira porção com um valor de substituição para produzir um fluxo de bits codificado modificado para o qual uma decodificação da segunda porção ainda produzirá o resultado.
Implementações adicionais são dirigidas ao resultado de métodos como o método 260. Por exemplo, uma implementação é um aparelho como um DVD, um disco rígido, ou outro dispositivo de armazenagem que inclui dados codificados modificados, e outra implementação é um sinal formatado para incluir tais dados codificados modificados. Mais especificamente, uma implementação é um aparelho que inclui um meio legível por processador, o meio legível por processador tendo armazenado no mesmo dados codificados que incluem uma primeira porção modificada e uma segunda porção. A primeira porção modificada é uma substituição de primeira porção, onde (1) a segunda porção é decodificável para produzir um resultado que se baseia na primeira porção modificada bem como na segunda porção, e (2) o resultado é igual como se decodificação da segunda porção fosse realizada com base na segunda porção e a primeira porção em vez da segunda porção e primeira porção modificada. Outra implementação é um sinal formatado para incluir os dados codificados que são armazenados no meio legível por processador desse aparelho.
A figura 3 mostra um diagrama de fluxo 300 que representa uma implementação para a etapa de encontrar todos os valores alternativos aceitáveis do elemento alvo. Inicialmente, uma lista de todos os valores alternativos (substituição) em potencial do elemento alvo é fornecida (302). Uma determinação é feita 304 com relação a se há quaisquer valores alternativos (substituição) deixados na lista. Em caso negativo, o processo termina 316. Quando há um valor alternativo (substituição) na lista, o próximo valor alternativo (substituição) possível é obtido e o valor de sintaxe é codificado (306). Uma determinação é feita então com relação a se os valores de variáveis de decodificação alternativos (substituição), incluindo valores de variável de estado e contextos, são iguais aos valores de variáveis de decodificação modificados (308). Quando são, o valor alternativo (substituição) é salvo na lista de valores alternativos aceitáveis (312) e o valor testado é então removido da lista (314). O processo inicia então novamente na etapa 304 até que a lista de valores alternativos (substituição) em potencial seja esgotada.
Os requerentes consideram agora a segunda exigência R2. Para um elemento alvo dado, os requerentes necessitam avaliar ou prever o impacto perceptual de substituir seu valor original com cada um dos valores alternativos que atendem a exigência R1. Lembre que essa avaliação ou previsão tem acesso total a todos os elementos de sintaxe do fluxo comprimido e pode utilizar esses para prever o efeito de máscara do imageamento subjacente e a sensibilidade do sistema visual ou auditivo humano (no caso de vídeo, os requerentes estão preocupados com o sistema visual humano) às modificações. Os detalhes de uma tal previsão são bem conhecidos para aqueles versados na técnica de modelagem perceptual. Modelos perceptuais são amplamente citados tanto na literatura de compressão como na literatura de impressão de marca d’água.
Além do uso de previsões computacionais de domínio comprimido de capacidade de percepção, os requerentes tem o luxo de serem capazes de descomprimir totalmente o fluxo em uma sequência de imagem de movimento. Esse pode ser o caso, por exemplo, se a análise estiver sendo realizada como um pré-processo. Nesse caso, as previsões computacionais podem examinar os dados de pixel efetivos. Isso pode levar a previsões mais precisas de capacidade de percepção. Adicionalmente, os requerentes podem ser capazes de avaliar a capacidade de percepção de substituir um valor de elemento de sintaxe original com um valor alternativo por descomprimir o fluxo original para obter uma sequência de imagem de movimento de referência e então substituir o valor de elemento de sintaxe com a alternativa e descomprimir o fluxo resultante para obter uma segunda sequência de imagem de movimento. Muitas técnicas bem conhecidas podem ser utilizadas para avaliar a capacidade de percepção da diferença entre as duas sequências de imagem de movimento.
Finalmente, os requerentes têm o luxo de recorrer à avaliação subjetiva. Um telespectador humano pode avaliar a capacidade de percepção da diferença entre a sequência de imagem de movimento de referência e a sequência de imagem de movimento modificada. Se o sujeito não puder perceber a diferença, então a modificação atende a exigência R2.
Esses são apenas alguns dos métodos que podem ser utilizados para determinar quais, de todas as alterações que atendem a exigência R1, também atendem a exigência R2.
Os requerentes consideram agora a terceira exigência R3. O uso do valor de sintaxe alternativo para o elemento de sintaxe alvo deve induzir alguma alteração mensurável quando o fluxo modificado é posteriormente descomprimido em uma sequência de imagem de movimento. Há dois tipos de alterações mensuráveis que podem ser induzidas, “direta” e “indireta”.
Com “alterações diretas” o elemento de sintaxe corresponde diretamente a um artefato mensurável da sequência de imagem de movimento. Por exemplo, a modificação de um coeficiente DC de bloco de luminância resultará diretamente em uma alteração mensurável em luminância média do bloco descomprimido correspondente. Com “alterações indiretas”, por outro lado, o artefato medido na sequência de imagem é somente indiretamente relacionado à modificação no fluxo. Por exemplo, a modificação de um vetor de movimento resultará no bloco errado sendo utilizado como uma previsão e portanto levará a dados de pixel incorretos no bloco descomprimido correspondente. Pode ser difícil determinar qual vetor de movimento foi utilizado, porém o uso de um vetor de movimento diferente pode impactar outros artefatos mensuráveis. O vetor de movimento pode ser utilizado para fornecer um bloco reconstruído com luminância média mais elevada ou mais baixa.
A alteração mensurável de exigência R3 auxiliará a identificar os locais e a ver quaisquer alterações foram feitas para recuperar a carga útil. Isso é particularmente útil quando uma cópia pirata é obtida. Por “ver” as alterações que foram feitas, a fonte da cópia pirata pode ser obtida.
Em uma implementação, é determinado quais elementos de sintaxe de vetor de movimento têm pelo menos dois valores de sintaxe alternativos que atendem as Exigências R1 e R2, de tal modo que o uso de um dos valores de sintaxe alternativos fornecerá um bloco reconstruído com luminância média mais elevada e uso de um valor de sintaxe alternativo diferente fornecerá um bloco reconstruído com luminância média mais baixa. Os blocos codificados de bits correspondendo à codificação de CABAC de cada um desses dois valores alternativos, juntamente com o local de bit no fluxo de CABAC, são enviados, como metadados, para o meio de incorporação. Com base no valor do bit de carga útil correspondente, o meio de incorporação substituirá o bloco de bits original com o bloco de bits correspondendo a um ou o outro bloco alternativo de bits. Por exemplo, o meio de incorporação escolhe ou seleciona o bloco de bits associado ao valor de sintaxe que diminui a luminância média no bloco correspondente se o bit de carga útil for um Ό’ e escolhe o bloco de bits associado ao valor de sintaxe que aumenta a luminância média no bloco correspondente se o bit de carga útil for um Ί’. Evidentemente, os requerentes necessitam pelo menos um elemento alvo que atenda a todas as exigências R1, R2 e R3 para cada bit de carga útil a ser incorporado.
Os metadados devem conter também o número de quadro e o número de bloco na sequência de imagem de movimento descomprimida onde a alteração em luminância será induzida. Para robustez adicional, o estágio de pré-processamento também pode armazenar a luminância média original daquele bloco nos metadados. Essa informação é utilizada no tempo de recuperação (por exemplo, decodificação) para identificar o bloco modificado e comparar sua luminância média com o valor original armazenado nos metadados. No exemplo dado, uma luminância média que é mais elevada do que o valor original indicará que o bit de carga útil correspondente é um T e uma luminância média que é mais baixa do que o valor original indicará que o bit de carga útil correspondente é um Ό’.
Limitação de comprimento de bit
Quando há uma limitação adicionada de que o Bloco codificado de bits, alternativo, tem o mesmo comprimento que o Bloco Codificado de bits, original os requerentes podem simplesmente adicionar essa limitação à Exigência R1. Em outras palavras, a alteração seria aceitável se todas as variáveis de estado e os contextos afetados permanecem iguais como teriam sido e se o bloco codificado resultante for do mesmo comprimento que o original. Por exemplo, com referência novamente à figura 3, o bloco de decisão 308 podería ser modificado para determinar não somente se os valores de variáveis de decodificação permanecem iguais, como também para determinar se o bloco codificado resultante tem o mesmo comprimento que o original. Como outro exemplo, com referência novamente à figura 3, o bloco 302 poderia ser modificado para fornecer uma lista de todos os valores alternativos em potencial do Elemento alvo que resulta em um bloco codificado de bits tendo o mesmo comprimento que o original.
A abordagem anteriormente descrita para adicionar a limitação de comprimento de bit é uma abordagem possível. Entretanto, em algumas aplicações uma abordagem alternativa pode ser apropriada. Os requerentes apresentam agora uma abordagem diferente destinada a limitar a busca por valores alternativos aceitáveis. Nessa implementação, descrita na figura 5, a primeira etapa é construir um mapeamento a partir de todos os elementos de sintaxe para seus bits codificados correspondentes no fluxo de bits (502). Na segunda etapa, um elemento alvo a partir da lista é identificado e o bloco codificado de bits no fluxo de bits representando aquele elemento é identificado (504).
Uma vez que CABAC pode atribuir frações de bits para representar elementos de sintaxe, há a possibilidade de que os blocos de bits que representam elementos de sintaxe diferentes podem sobrepor. A terceira etapa é a identificação de quaisquer outros elementos de sintaxe cuja representação no fluxo de bits codificado sobrepõe àquela do elemento a ser modificado (506). Esses são mencionados aqui como Elementos de sintaxe de sobreposição. A lista para todas as combinações de bit alternativas possíveis que têm o mesmo comprimento de bit é determinada (508), e as etapas restantes subsequentes para determinar qual das combinações de bits alternativas possíveis identificadas que têm o mesmo comprimento de bit serão utilizadas (isto é, etapas 510 - 522) são substancialmente idênticas às etapas 304-316, respectivamente, descritas para determinar qual dos valores alternativos em potencial do elemento alvo serão utilizados. Uma diferença é que o bloco 514 inclui determinar se a combinação de bits alternativa atende a condição de que os valores decodificados de quaisquer Elementos de sintaxe de sobreposição permanecem inalterados, bem como determinar se os valores de variáveis de decodificação permanecem inalterados.
Se o bloco de bits codificado tiver comprimento n, haverá 2n de valores possíveis diferentes que pode representar. Os requerentes buscam qualquer valor que atenda aos dois critérios a seguir:
1. os valores decodificados dos Elementos de sintaxe de sobreposição permanecem inalterados; e
2. todas as variáveis de estado e variáveis de contexto alteradas pelo bloco de bits codificados são deixadas com os mesmos valores como estavam com o bloco não modificado de bits codificados.
Aqui os requerentes limitaram a busca somente àqueles valores alternativos que resultam em um bloco codificado de bits alternativo do mesmo tamanho que o bloco codificado de bits, original.
Implementações não necessitam tratar tanto de elementos de sintaxe de sobreposição como de limitações de comprimento de bit. Em vez disso, certas implementações podem tratar somente de elementos de sintaxe de sobreposição, ou somente uma limitação de comprimento de bit, sem tratar da outra consideração.
Além disso, várias implementações podem trabalhar em múltiplos elementos de sintaxe juntos (por exemplo, elementos de sintaxe que são contíguos no fluxo de dados). Por exemplo, uma implementação trata de múltiplos elementos de sintaxe contíguos (sobreposição ou não sobreposição) como um grupo único e determina uma substituição para o grupo, de tal modo que os valores de variáveis de decodificação no final do grupo (porém não necessariamente entre elementos de sintaxe no grupo) permanecem inalterados. Uma tal implementação considera dois elementos de sintaxe contíguos como um elemento alvo, com o segundo elemento de sintaxe sendo um elemento de sintaxe de sobreposição, e permite que os dois elementos de sintaxe sejam modificados.
Incorporação de informações
A discussão acima descreve um método para analisar um elemento de sintaxe alvo e identificar todos, se algum, valores alternativos aceitáveis que poderíam ser substituídos por substituir um bloco de bits no fluxo de bits codificado com um bloco de bits alternativo. Por examinar todos os elementos de sintaxe na sequência codificada H.264/AVC, os requerentes podem construir uma lista daqueles para os quais existe pelo menos um valor alternativo aceitável. Essa é a lista de “elementos de sintaxe alteráveis”. Para cada elemento de sintaxe que pode ser alterado, os requerentes podem construir uma lista de valores alternativos aceitáveis.
Um exemplo de como isso pode ser utilizado para incorporar informações no fluxo de bits foi apresentado. O objetivo de incorporação de informações é modificar um subconjunto dos elementos de sintaxe na lista de todos os elementos de sintaxe alteráveis, alterando seus valores a partir de seus valores originais para um dos valores alternativos aceitáveis listados, de acordo com a carga útil. Em uma implementação prática, isso é realizado em três etapas como mostrado na figura 6.
Com referência à figura 6, há um processo 600. Na primeira etapa do processo 600, um subconjunto dos elementos de sintaxe alteráveis é selecionado (602). Essa seleção de subconjunto pode ser baseada em uma estimativa do impacto perceptual que a alteração teria sobre imageamento decodificado. A seleção de subconjunto pode ser baseada em uma estimativa da dificuldade de detectar a alteração no imageamento decodificado após o imageamento ter sido modificado por processamento de sinal ou por violação intencional. A seleção de subconjunto pode ser influenciada por exigências de implementação que, por exemplo, limitam o número de bits consecutivos em um bloco alterado ou limitam o número mínimo de bits inalterados que devem estar entre quaisquer dois blocos alterados. Na implementação preferida, essa primeira etapa é executada durante pré-processamento.
Na segunda etapa, os metadados são salvos (604) para uso posterior. Esses metadados consistem em “dados de incorporação” e “dados de detecção.” Dados de incorporação são os locais no fluxo de bits comprimido onde o bloco codificado original de bits pode ser encontrado e dois blocos de bits, um a ser utilizado como um bloco de substituição se o bit de carga útil correspondente for um Ό’ e o outro a ser utilizado como um bloco de substituição se o bit de carga útil correspondente for um Ί’. Em uma implementação, um desses blocos é ele próprio o bloco original de bits e o outro é um bloco alternativo de bits. Nesse caso, a lista de elementos de sintaxe alteráveis pode incluir aqueles para os quais há somente um valor alternativo aceitável. Em outras implementações, os dois blocos são ambos blocos alternativos de bits que correspondem a valore de sintaxe diferentes. Nesse caso, a lista de elementos de sintaxe alteráveis pode incluir somente aqueles para os quais há pelo menos duas alternativas aceitáveis.
Dados de detecção incluem o conjunto de elementos alteráveis que serão utilizados para incorporação e os valores originais daqueles elementos. Inclui também o local na sequência de imagem de movimento descomprimida onde a modificação de fluxo de bits será detectável. Isso pode ser especificado como um número de quadro e um número de bloco ou número de macrobloco ou posição de pixel ou qualquer outro localizador exigido para recuperação. Dados de detecção também podem incluir o valor da medida de detecção que teria sido medida se nenhuma alteração tivesse sido feita. Em outras palavras, isso pode incluir o valor original da medida de detecção. No exemplo anterior, a medida de detecção é a luminância média de um bloco específico e os dados de detecção podem incluir a luminância média original daquele bloco. Em uma implementação, essa segunda etapa é executada durante pré-processamento.
Para aumentar a robustez da técnica de impressão com marca d 1 água para alterações globais ou locais em brilho ou contraste, dados de detecção podem ser também salvos para blocos que não se espera serem modificados pelo processo de impressão com marca d’água. Por exemplo, os dados de detecção podem incluir a luminância média original de blocos não alterados pela marca d’água. O detector pode então utilizar esses como uma referência para determinar se a imagem inteira, ou pelo menos a parte da imagem na região da referência, experimentou uma alteração em luminância. Se a luminância medida nos blocos de referência não casa com aquela registrada nos dados de detecção, uma compensação pode ser feita antes da recuperação da carga útil.
Na terceira etapa, o bloco codificado original de bits correspondendo ao elemento alterável é substituído com um bloco diferente de bits utilizando os dados de incorporação e a carga útil (606). Os requerentes consideram dois casos. No primeiro caso, o bloco de substituição de bits é o bloco de bits codificados que corresponde a um dos valores alternativos aceitáveis se o bit de carga útil a ser representado tiver um valor de símbolo, por exemplo um Ί’. O bloco de substituição de bits codificados é o bloco original de bits codificados se o bit de carga útil a ser representado tiver outro valor de símbolo, por exemplo um Ό’. No segundo caso, a seleção de subconjunto é limitada a elementos para os quais há pelo menos dois valores alternativos aceitáveis. Nesse caso, o bloco de substituição de bits codificados é o bloco de bits codificados que corresponde a um dos valores alternativos aceitáveis se o bit a ser representado for um Ό’ e é o bloco de bits codificados que corresponde a um valor alternativo aceitável diferente se o bit a ser representado for um ‘1’. Os dois valores alternativos são armazenados nos dados de detecção juntamente com os rótulos Ό’ ou Ί’, que representam. Na modalidade preferida, essa terceira etapa é executada durante incorporação.
A carga útil pode ser recuperada a partir do fluxo de bits H.264/AVC com o auxílio dos dados de detecção. Os dados de detecção indicam os elementos de sintaxe específicos que representam as informações de carga útil oculta e os valores originais daqueles elementos. Se o processo de incorporação utilizou os valores originais para representar um Ό’ e o valor alternativo para representar um T, o detector pode comparar o valor no fluxo de bits com o valor original armazenado nos dados de detecção. Se casarem, o detector reporta um bit ‘0’. Se não casarem, o detector reporta um bit ‘1’. Se o processo de incorporação substituiu o valor original com um de dois valores alternativos, aqueles dois valores alternativos e seus rótulos correspondentes são recuperados a partir dos dados de detecção. O detector então compara o valor no fluxo de bits com cada uma das duas alternativas e relata o rótulo correspondente.
Os dados ocultos podem ser também recuperados a partir do imageamento de domínio de pixel decodificado. Esse processo é específico para a medida específica utilizada no processo de seleção de subconjunto. Em uma implementação prática, a medida é a luminância média de um bloco de pixels. A luminância média original de cada bloco modificado é recuperada dos dados de detecção. O detector calcula a luminância média do bloco especificado de pixels na sequência de imagem decodificada e compara aquele valor com o valor original armazenado nos dados de detecção. Se o valor calculado for mais elevado do que o valor original, o detector relata um bit T. Se o valor calculado for mais baixo do que o original, o detector relata um bit Ό’.
Esse método de recuperação poderia ter problemas se imageamento decodificado for modificado por alteração uniforme em luminância após decodificação, porém antes da detecção. Para tratar isso, a luminância média de um número de blocos de referência pode ser armazenada nos dados de detecção. Esses são blocos que não são alterados pelo processo de incorporação. O detector pode calcular a luminância média dos blocos de referência pouco antes da recuperação e descobrem quaisquer alterações de luminância que não são relacionadas com os dados ocultos. Essas alterações de luminância podem ser compensadas pelo ajuste dos valores originais de acordo.
Deve ser evidente que incorporação de informações pode incluir uma variedade de aplicações. Uma tal aplicação é impressão com marca d’água na qual uma carga útil é incorporada em um fluxo de dados. Outras aplicações incluem incorporar virtualmente qualquer informação que se deseja ser comunicada. Adicionalmente, algumas informações que incorporam aplicações podem utilizar diferentes exigências. Por exemplo, pode ser desejável fazer uma alteração no fluxo de dados que resulte em uma alteração que é percebível por um usuário.
Exploração de modo de derivação
H.264/AVC especifica três elementos de sintaxe que são codificados no modo byass. Por esses, somente uma variável é modificada durante codificação. Somente o valor L, representando a parte inferior da faixa, muda à medida que os bits são codificados. Desse modo, a probabilidade de encontrar valores de sintaxe alternativos que fornecem os mesmos valores de variáveis de decodificação que o original é mais elevada com elementos de sintaxe de modo de derivação. Em uma implementação prática, somente o sufixo de elementos de sintaxe de diferença de vetor de movimento é considerado. Para cada um desses, os requerentes buscam valores alternativos que 1) resultam no mesmo número de bits no bloco codificado de bits, 2) não afetam os valores de quaisquer outros elementos de sintaxe, e 3) fornecem o mesmo valor L no codificador de CABAC após processamento de sua cadeia de bin correspondente. A partir desses, os requerentes selecionam um subconjunto a ser utilizado para incorporação como descrito acima (vide, por exemplo, a figura 6). As etapas para modo de derivação, substituição de comprimento fixo são mostradas por um método 400 representado na figura 4. Aqui, os processos nas etapas 402-416 são idênticos àqueles anteriormente descritos nas etapas 302-316, respectivamente mostrados no método da figura 3, com a exceção de que a etapa 408 é uma determinação de que a alternativa L é igual ao L modificado para codificação de CABAC, ao contrário de uma determinação de valores de variáveis de decodificação alternativos vs. valores de variáveis de decodificação modificados (isto é, etapa 308).
Como deve ser evidente, um fluxo de bits não modificado pode ser decodificado para produzir os valores de sintaxe originais, incluindo valores para um elemento de sintaxe alvo e um ou mais elementos de sintaxe que seguem o elemento de sintaxe alvo. Como descrito anteriormente, a codificação de um ou mais elementos de sintaxe que seguem o elemento de sintaxe alvo depende, pelo menos em parte, no valor do elemento de sintaxe alvo. Após o valor do elemento de sintaxe alvo ser modificado, um fluxo de bits modificado resultante é produzido que corresponde ao valor de sintaxe modificado e os valores de um ou mais elementos de sintaxe que seguem o elemento de sintaxe alvo agora modificado. Esse fluxo de bits modificado pode ser também decodificado.
Com referência à figura 7, é mostrado um processo 700 que pode ser executado, por exemplo, por um decodificador, um tocador de DVD, ou outro dispositivo que acessa e decodifica um fluxo de bits modificado. A decodificação do fluxo de bits modificado produz o valor modificado do elemento de sintaxe alvo e também produz os valores originais de um ou mais elementos de sintaxe que seguiram o elemento de sintaxe alvo.
Mais especificamente, com referência ao processo 700, um conjunto modificado de dados é acessado (710). O conjunto modificado de dados inclui uma porção modificada e outra porção que é, nessa implementação, não modificada. Como indicado acima, a porção não modificada é decodificável para produzir um resultado que se baseia na porção não modificada bem como na porção modificada.
O processo 700 inclui decodificação da porção modificada (720) e porção não modificada (730). A decodificação da porção não modificada produz o mesmo resultado como se a porção modificada não tivesse sido modificada.
Com referência à figura 8, um processo 800 é mostrado para recuperar informações de carga útil, ou mais genericamente, para detectar uma marca d’água. O processo 800 inclui determinar um local para checar uma possível marca d’água (810). Observe que uma marca d’água, que se refere genericamente a dados modificados ou inseridos para permitir detecção subsequente, não precisa necessariamente ter sido inserida. O processo 800 inclui acessar (820) e analisar (830) dados a partir do local determinado. O processo 800 inclui ainda identificar as informações de marca d’água, se existir alguma marca d’água, com base na análise (840). As informações de marca d’água identificadas podem ser, por exemplo, um bit ou outra unidade de informação. O processo 800 pode ser repetido para um ou mais outros locais para identificar um ou mais bits adicionais que compõem uma carga útil. Desse modo, uma carga útil inteira pode ser recuperada utilizando o processo 800.
As implementações do processo 800 incluem analisar um fluxo de bits modificado bem como analisar dados de domínio de pixel. Por exemplo, um fluxo de bits pode ser modificado por modificar bits associados a um elemento alvo, de acordo com uma das implementações anteriormente descritas. Uma marca d’água pode ser detectada em um tal fluxo de bits por acessar os locais de bit apropriados e testar em relação à marca d’água (modificação) naqueles locais. Os locais de bit e valores modificados (ou possivelmente valores modificados) como encontrados nos metadados, também podem ser incluídos nos dados de detecção.
Altemativamente, ou além disso, um tal fluxo de bits modificado pode ser decodificado e possivelmente sujeito a outro processamento, incluindo recodificação. No caso de recodificação, não se esperará que um tal fluxo de bits recodificado inclua o elemento alvo modificado, no mesmo local, como no fluxo de bits modificado original. Entretanto, o fluxo de bits recodificado pode ser decodificado para produzir uma representação digital domínio de pixel na qual um efeito da modificação original está ainda tipicamente presente. Desse modo, dados de detecção serão úteis que identificam o quadro e número de bloco nos quais a modificação original teve seu impacto. Por exemplo, o elemento alvo pode ter sido originalmente um vetor de movimento para um bloco específico, e o impacto de modificar o vetor de movimento pode ter sido um aumento na luminância média daquele bloco específico. Esse aumento em luminância média será tipicamente preservado apesar do processamento do fluxo de bits modificado original. Entretanto, o vetor de movimento, e a alteração original ao vetor de movimento não serão tipicamente exatamente iguais.
Com referência à figura 9, um processo 900 descreve uma implementação na qual informações de marca d’água é detectada a parti de dados de domínio de pixel. O processo 900 inclui determinar um identificador de quadro e um identificador de bloco para uma possível marca d’água (910), e acessar (920) dados de domínio de pixel correspondendo ao identificador de quadro determinado e identificador de bloco. O processo 900 inclui determinar um valor de uma característica para os dados acessados (930), e comparar o valor determinado com um marco de referência (940). O processo 900 então inclui identificar as informações de marca d’água, se houver alguma, com base na comparação (950).
Várias implementações de um processo 800 ou processo 900 utilizam dados de detecção armazenados que incluem um ou mais de uma variedade de pedaços de dados. Por exemplo, os dados de detecção podem incluir informações de local que identificam os locais para verificar uma possível marca d’água. As informações de local podem incluir, por exemplo, um identificador de quadro e/ou um identificador de bloco.
Dados de detecção podem incluir, por exemplo, um valor de marco de referência para uma característica. O marco de referência pode ser, por exemplo, o valor da característica antes da modificação do local. O marco de referência pode ser, por exemplo, comparado com o valor efetivo (o novo marco de referência) da característica para o local acessado (820) para fornecer uma indicação da alteração. Por exemplo, a comparação pode indicar se o valor (o novo marco de referência) aumentou ou diminuiu como resultado da modificação.
Dados de detecção podem incluir,por exemplo, um valor base para uma caracterís24 tica a partir de um local diferente (não impresso com marca d’água). Um tal valor de base pode ser, por exemplo, a luminância média de um local não impresso com marca d’água. O valor de base pode ser utilizado, como explicado anteriormente, para determinar se houve alteração nos dados que afetou mais do que o local impresso com marca d’água. Em certas circunstâncias, pode ter havido uma alteração global (por exemplo, uma alteração em um quadro inteiro). Por exemplo, a luminância média de um quadro inteiro pode ter sido alterada. O valor de base pode ser então comparado com o valor novo da característica no local não impresso com marca d’água (um valor de base novo). Se a diferença for maior do que um limite, então pode ser determinado que uma alteração global ocorreu. Alternativamente, a diferença pode ser simplesmente tomada como sendo uma diferença global, e a diferença pode ser adicionada ao valor (o novo marco de referência) determinado para o local impresso com marca d’água (possível)( para responder pela alteração global. Observe que nessa alternativa, a diferença pode (alternativamente) ser adicionada ao marco de referência em vez do valor (o novo marco de referência). Além disso, em certas implementações uma razão pode ser determinada entre o valor de base e o novo valor de base, e o marco de referência ou o novo marco de referência pode ser multiplicado pela razão.
Evidentemente, o processo 800 pode ser executado por uma variedade de dispositivos, incluindo dispositivos de processamento. Tais dispositivos também podem incluir um dispositivo de armazenagem para armazenar dados, como, por exemplo, os dados acessados, o valor de marco de referência, o valor de base, e o(s) local(is) de possíveis informações de marca d’água. Além disso, o processo 800 pode ser incorporado em um conjunto de instruções também.
Como deve ser evidente, um elemento de sintaxe pode representar um ou mais de vários tipos de informações diferentes. Por exemplo, um elemento de sintaxe pode ser um vetor de movimento, um coeficiente DCT (transformada de co-seno discreta) de resíduo, um tipo de macrobloco, um parâmetro de quantização, ou um indicador. Por conseguinte, elementos de sintaxe não necessitam todos ter o mesmo comprimento porém podem ter vários comprimentos diferentes. Várias implementações reveladas nesse pedido podem funcionar em qualquer tipo de elemento de sintaxe, independente de qual tipo de informação é representado pelo elemento de sintaxe e independente do tamanho/comprimento do elemento de sintaxe.
Adicionalmente, como anteriormente indicado, várias implementações podem funcionar em múltiplos elementos de sintaxe juntos (por exemplo, elementos de sintaxe que são contíguos no fluxo de dados). Por exemplo, uma implementação trata múltiplos elementos de sintaxe contíguos (sobreposição ou não sobreposição) como um grupo único e determina uma substituição para o grupo, de tal modo que os valores de variáveis de decodificação no final do grupo (porém não necessariamente entre elementos de sintaxe no grupo) permanecem inalterados.
As implementações descritas aqui podem ser implementadas, por exemplo, em um método ou processo, um aparelho ou um programa de software. Mesmo se somente discutido no contexto de uma forma única de implementação (por exemplo, discutido somente como um método), a implementação de características discutidas também pode ser implementada em outras formas (por exemplo, um aparelho ou programa). Um aparelho pode ser implementado, por exemplo, em hardware, software e firmware apropriado. Os métodos podem ser implementados, por exemplo, em um aparelho como, por exemplo, um processador, que se refere a dispositivos de processamento em geral, incluindo, por exemplo, um computador, um microprocessador, um circuito integrado, ou um dispositivo de lógica programável. Dispositivos de processamento também incluem dispositivos de comunicação, como, por exemplo, computadores, telefones celulares, assistentes pessoais digitais/portáteis (“PDAs”), e outros dispositivos que facilitam a comunicação de informações entre usuários finais.
A implementação dos vários processos e características descritos aqui pode ser incorporada em uma variedade de equipamentos ou aplicações diferentes, particularmente, por exemplo, equipamento ou aplicações associados à codificação e decodificação de dados. Os exemplos de equipamentos incluem codificadores de vídeo, decodificadores de vídeo, codecs de vídeo, servidores de rede, set-top boxes, laptops, computadores pessoais, telefones celulares, PDAs, e outros dispositivos de comunicação. Como deve ser evidente, o equipamento pode ser móvel e mesmo instalado em um veículo móvel.
Adicionalmente, os métodos podem ser implementados por instruções sendo executadas por um processador, e tais instruções podem ser armazenadas em um meio legível por processador como, por exemplo, um circuito integrado, uma portadora de software ou outro dispositivo de armazenagem como, por exemplo, um disco rígido, um disquete compacto, uma memória de acesso aleatório (“RAM”), ou uma memória somente de leitura (“ROM”). As instruções podem formar um programa de aplicação incorporado de forma tangível em um meio legível por processador. As instruções podem ser, por exemplo, em hardware, firmware, software ou uma combinação. As instruções podem ser encontradas, por exemplo, em um sistema operacional, uma aplicação separada ou uma combinação dos dois. Um processador pode ser caracterizado, portanto, como por exemplo, tanto um dispositivo configurado para realizar um processo como um dispositivo que inclui um meio legível por computador tendo instruções para realizar um processo.
Como deve ser evidente para uma pessoa versada na técnica, as implementações também podem produzir um sinal formatado para realizar informações que podem ser, por exemplo, armazenadas ou transmitidas. As informações podem incluir, por exemplo, instruções para executar um método, ou dados produzidos por uma das implementações descri26 tas. Um tal sinal pode ser formatado, por exemplo, como uma onda eletromagnética (por exemplo, utilizando uma porção de radiofrequência de espectro) ou um sinal de banda base. A formatação pode incluir, por exemplo, codificar um fluxo de dados e modular uma portadora com o fluxo de dados codificado. As informações que o sinal contém podem ser, por e5 xemplo, informações analógicas ou digitais. O sinal pode ser transmitido através de uma variedade de ligações cabeadas ou sem fio, como sabido.
Diversas implementações foram descritas. Não obstante, será entendido que várias modificações podem ser feitas. Por exemplo, elementos de implementações diferentes podem ser combinados, suplementados, modificados ou removidos para produzir outras im10 plementações. Adicionalmente, uma pessoa com conhecimentos comuns entenderá que outras estruturas e processos podem ser substituídos por aqueles revelados e as implementações resultantes executarão pelo menos substancialmente a(s) mesma(s) função(ões), pelo menos substancialmente do(s) mesmo(s) modo(s), para obter pelo menos substancialmente o(s) mesmo(s) resultado(s) que as implementações reveladas. Por conseguinte, es15 sas e outras implementações são consideradas por esse pedido e estão compreendidas no escopo das reivindicações que se seguem.

Claims (10)

  1. REIVINDICAÇÕES
    1. Método, CARACTERIZADO pelo fato de que compreende:
    acessar (252) um fluxo de bits codificado aritmeticamente e adaptável com base em contexto (CABAC) incluindo pelo menos uma primeira porção e uma segunda porção, em que a segunda porção é decodificável para produzir um resultado que se baseia na primeira porção bem como na segunda porção, em que a primeira porção compreende um elemento de sintaxe e a segunda porção compreende pelo menos um segundo elemento de sintaxe, cada um tendo um valor de variável de estado correspondente;
    determinar (254) uma primeira porção modificada de tal modo que a segunda porção é decodificável para produzir o mesmo resultado particular com base na segunda porção e na primeira porção modificada, em que a primeira porção modificada modifica o referido elemento de sintaxe e não altera valores de variáveis de estado para toda a decodificação de todos os elementos de sintaxe subsequentes no fluxo de bits codificado de CABAC; e transmitir ou armazenar a primeira porção modificada.
  2. 2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que decodificar a primeira porção produz um primeiro resultado e decodificar a primeira porção modificada produz um primeiro resultado modificado que é diferente do primeiro resultado.
  3. 3. Método, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que determinar a primeira porção modificada se baseia adicionalmente na provisão de um primeiro resultado modificado tendo uma diferença a partir do primeiro resultado que é imperceptível, a partir do ponto de vista de um telespectador, e detectável por um dispositivo de processamento.
  4. 4. Método, de acordo com qualquer uma das reivindicações de 1 a 3, CARACTERIZADO pelo fato de que dito resultado é baseado na primeira porção sendo baseado em um estado produzido a partir de uma codificação da primeira porção.
  5. 5. Método, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que a dita determinação compreende adicionalmente:
    determinar (302-304, 402-404) todos os valores de substituição alternativos possíveis para o elemento de sintaxe;
    determinar (308, 408), para cada valor de substituição alternativo possível, se o valor de substituição gera o mesmo valor de variável de estado para o elemento de sintaxe;
    salvar uma lista de valores de substituição alternativos que geram o mesmo valor de variável de estado para o elemento de sintaxe.
  6. 6. Método, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que compreende adicionalmente codificar (306) o valor de substituição alternativo antes de determinar se o valor de substituição gera a mesma variável de estado.
    Petição 870180150510, de 12/11/2018, pág. 8/9
  7. 7. Método, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que a primeira porção modificada compreende um valor tendo um comprimento de bit igual àquele da primeira porção, a primeira porção modificada gerando um valor L em um codificador de CABAC que é igual ao valor L que teria sido gera-
    5 do pela primeira porção.
  8. 8. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende substituir (256) a primeira porção com a primeira porção modificada, em conformidade com uma carga útil.
  9. 9. Aparelho, CARACTERIZADO pelo fato de ser adaptado para executar um mé10 todo conforme definido em qualquer uma das reivindicações 1 a 8.
  10. 10. Aparelho, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que compreende um meio legível por processador contendo instruções armazenadas no meio legível por processador para executar um método conforme definido em qualquer uma das reivindicações 1 a 8.
BRPI0721427A 2007-03-23 2007-11-02 modificação de um fluxo de bits codificado BRPI0721427B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US91970207P 2007-03-23 2007-03-23
US93463407P 2007-06-14 2007-06-14
PCT/US2007/023172 WO2008118145A1 (en) 2007-03-23 2007-11-02 Modifying a coded bitstream

Publications (2)

Publication Number Publication Date
BRPI0721427A2 BRPI0721427A2 (pt) 2014-02-25
BRPI0721427B1 true BRPI0721427B1 (pt) 2019-01-15

Family

ID=39106118

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0721427A BRPI0721427B1 (pt) 2007-03-23 2007-11-02 modificação de um fluxo de bits codificado

Country Status (9)

Country Link
US (2) US8358703B2 (pt)
EP (1) EP2130173B1 (pt)
JP (1) JP5277180B2 (pt)
KR (1) KR101398534B1 (pt)
CN (1) CN101636761B (pt)
BR (1) BRPI0721427B1 (pt)
CA (1) CA2681402C (pt)
MX (1) MX2009010182A (pt)
WO (2) WO2008118145A1 (pt)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
US8942289B2 (en) * 2007-02-21 2015-01-27 Microsoft Corporation Computational complexity and precision control in transform-based digital media codec
US8358703B2 (en) 2007-03-23 2013-01-22 Thomson Licensing Modifying a coded bitstream
WO2008154041A1 (en) 2007-06-14 2008-12-18 Thomson Licensing Modifying a coded bitstream
EP2310983A4 (en) 2008-07-03 2011-12-21 Verimatrix Inc EFFECTIVE APPROACHES OF DIGITAL TATTOO OF COMPRESSED MEDIA
KR101612729B1 (ko) 2008-08-19 2016-04-15 톰슨 라이센싱 전파 맵
JP5639056B2 (ja) 2008-08-19 2014-12-10 トムソン ライセンシングThomson Licensing 輝度評価
EP2321904B1 (en) * 2008-08-19 2014-05-28 Thomson Licensing Context-based adaptive binary arithmetic coding (cabac) video stream compliance
JP5373909B2 (ja) 2008-08-19 2013-12-18 トムソン ライセンシング 圧縮ビデオにおける構文要素のcabac/avc準拠の透かし入れ
US8824727B2 (en) 2008-08-20 2014-09-02 Thomson Licensing Selection of watermarks for the watermarking of compressed video
JP5394212B2 (ja) * 2008-12-19 2014-01-22 トムソン ライセンシング データを挿入する方法、挿入されたデータを読み出す方法
KR101834825B1 (ko) 2009-01-27 2018-03-06 톰슨 라이센싱 비디오 인코딩 및 디코딩에서 변환 선택을 위한 방법 및 장치
EP2257067A1 (en) 2009-05-29 2010-12-01 Thomson Licensing Method for inserting watermark assistance data in a bitstream, method of watermarking said bitstream, device implementing the method of watermarking and bitstream comprising the watermark assistance data
KR101193534B1 (ko) 2009-07-17 2012-10-22 주식회사 케이티 비디오 콘텐츠에 워터마크를 삽입하는 워터마킹 장치 및 방법
EP2534638B1 (en) 2010-02-09 2019-01-16 ContentArmor Watermark detection using a propagation map
EP2693752B1 (en) 2010-04-13 2017-03-08 GE Video Compression, LLC Coding of significance maps and transform coefficient blocks
US20110280434A1 (en) * 2010-05-11 2011-11-17 Rajesh Mamidwar Method and system for watermakr insertin using video start codes
US20120014433A1 (en) * 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
CN103270528B (zh) * 2010-09-30 2016-09-07 安努纳公司 使用匿名配置文件分配目标数据的系统、方法和计算机可读介质
US8886945B2 (en) * 2010-12-17 2014-11-11 Motorola Mobility Llc System and method for conveying session information for use in forensic watermarking
DK2697979T3 (en) 2011-04-15 2017-01-23 Nagravision Sa Method for identifying the origin of a security module in a pay-TV decoder system
US8805099B2 (en) 2011-06-22 2014-08-12 Panasonic Intellectual Property Corporation Of America Image decoding method and image coding method
KR20140032930A (ko) * 2011-06-24 2014-03-17 파나소닉 주식회사 화상 부호화 방법, 화상 복호방법, 화상 부호화 장치, 화상 복호장치 및 화상 부호화 복호장치
EP2544142A1 (en) 2011-07-08 2013-01-09 Thomson Licensing Method for watermark detection using reference blocks comparison
JP2013085049A (ja) * 2011-10-07 2013-05-09 Nippon Hoso Kyokai <Nhk> 直交変換係数の符号または値を用いて情報伝送を行う符号化装置、復号装置、方法およびプログラム
MY164594A (en) * 2011-11-07 2018-01-15 Tagivan Ii Llc Image coding method, image coding apparatus, image decoding method and image decoding apparatus
US9288508B2 (en) 2011-11-08 2016-03-15 Qualcomm Incorporated Context reduction for context adaptive binary arithmetic coding
EP2600531A1 (en) * 2011-12-01 2013-06-05 Thomson Licensing Method for determining a modifiable element in a coded bit-stream and associated device
EP2605536A1 (en) 2011-12-13 2013-06-19 Thomson Licensing Device for generating watermark metadata, associated device for embedding watermark
EP2611064A1 (en) 2011-12-29 2013-07-03 Thomson Licensing Method for selectively scrambling bit-streams
WO2013106987A1 (en) 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of bypass coding and reducing contexts for some syntax elements
CN103931188B (zh) * 2012-01-16 2017-05-10 寰发股份有限公司 语法元素的基于上下文的自适应二进制算术编码装置及方法
CN105850144B (zh) 2013-11-04 2019-03-01 耐瑞唯信有限公司 用于标记数字音频或音频和/或视频内容的装置和方法
JP6208885B2 (ja) 2014-01-03 2017-10-04 ジーイー ビデオ コンプレッション エルエルシー ウェッジレットに基づいた符号化概念
GB201601793D0 (en) * 2016-02-01 2016-03-16 Nagravision Sa Embedding watermarking data
CN119484874A (zh) 2016-02-09 2025-02-18 弗劳恩霍夫应用研究促进协会 解码器、编码器、方法、网络设备以及可读存储介质
EP3622426B1 (en) 2017-05-09 2023-01-04 Verimatrix, Inc. Systems and methods of preparing multiple video streams for assembly with digital watermarking
US10560728B2 (en) 2017-05-29 2020-02-11 Triton Us Vp Acquisition Co. Systems and methods for stitching separately encoded NAL units into a stream
US11057685B2 (en) * 2018-03-29 2021-07-06 Ncr Corporation Media content proof of play over optical medium
WO2020242260A1 (ko) * 2019-05-31 2020-12-03 한국전자통신연구원 전역적 문맥을 이용하는 기계 학습 기반의 이미지 압축을 위한 방법 및 장치

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4939515A (en) * 1988-09-30 1990-07-03 General Electric Company Digital signal encoding and decoding apparatus
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US5721788A (en) * 1992-07-31 1998-02-24 Corbis Corporation Method and system for digital image signatures
CA2175363C (en) * 1993-10-29 1999-12-21 Christopher J. Cookson System and method for controlling play of multiple versions of same motion picture stored on optical disk
US5748783A (en) * 1995-05-08 1998-05-05 Digimarc Corporation Method and apparatus for robust information coding
US5710834A (en) * 1995-05-08 1998-01-20 Digimarc Corporation Method and apparatus responsive to a code signal conveyed through a graphic image
US7113615B2 (en) * 1993-11-18 2006-09-26 Digimarc Corporation Watermark embedder and reader
US5636292C1 (en) * 1995-05-08 2002-06-18 Digimarc Corp Steganography methods employing embedded calibration data
US5530751A (en) * 1994-06-30 1996-06-25 Hewlett-Packard Company Embedded hidden identification codes in digital objects
US5646997A (en) * 1994-12-14 1997-07-08 Barton; James M. Method and apparatus for embedding authentication information within digital data
GB9500285D0 (en) 1995-01-07 1995-03-01 Central Research Lab Ltd A method of labelling an audio signal
US5530759A (en) * 1995-02-01 1996-06-25 International Business Machines Corporation Color correct digital watermarking of images
US5613004A (en) * 1995-06-07 1997-03-18 The Dice Company Steganographic method and device
US6411725B1 (en) * 1995-07-27 2002-06-25 Digimarc Corporation Watermark enabled video objects
US5687191A (en) * 1995-12-06 1997-11-11 Solana Technology Development Corporation Post-compression hidden data transport
US5664018A (en) * 1996-03-12 1997-09-02 Leighton; Frank Thomson Watermarking process resilient to collusion attacks
WO1997039410A1 (en) 1996-04-02 1997-10-23 The Regents Of The University Of California Data embedding
US7412072B2 (en) 1996-05-16 2008-08-12 Digimarc Corporation Variable message coding protocols for encoding auxiliary data in media signals
US6978370B1 (en) * 1996-09-03 2005-12-20 Cryptography Research, Inc. Method and system for copy-prevention of digital copyright works
US5809139A (en) * 1996-09-13 1998-09-15 Vivo Software, Inc. Watermarking method and apparatus for compressed digital video
US5734752A (en) * 1996-09-24 1998-03-31 Xerox Corporation Digital watermarking using stochastic screen patterns
US5825892A (en) * 1996-10-28 1998-10-20 International Business Machines Corporation Protecting images with an image watermark
US5960081A (en) * 1997-06-05 1999-09-28 Cray Research, Inc. Embedding a digital signature in a video sequence
US6785332B1 (en) * 1997-07-18 2004-08-31 Ecole Polytechnique Federale De Lausanne Method for marking a compressed digital video signal
KR100323441B1 (ko) * 1997-08-20 2002-06-20 윤종용 엠펙2동화상부호화/복호화시스템
JP4064506B2 (ja) * 1997-09-17 2008-03-19 パイオニア株式会社 電子透かし重畳方法及び検出方法並びに装置
US6208745B1 (en) * 1997-12-30 2001-03-27 Sarnoff Corporation Method and apparatus for imbedding a watermark into a bitstream representation of a digital image sequence
US6332194B1 (en) * 1998-06-05 2001-12-18 Signafy, Inc. Method for data preparation and watermark insertion
US6154571A (en) 1998-06-24 2000-11-28 Nec Research Institute, Inc. Robust digital watermarking
JP3480700B2 (ja) 1999-06-25 2003-12-22 日本ビクター株式会社 電子透かし記録方法及び電子透かし記録装置
JP2001242786A (ja) * 1999-12-20 2001-09-07 Fuji Photo Film Co Ltd 配信装置、配信方法、及び記録媒体
US6282300B1 (en) * 2000-01-21 2001-08-28 Signafy, Inc. Rotation, scale, and translation resilient public watermarking for images using a log-polar fourier transform
JP2001275115A (ja) * 2000-03-23 2001-10-05 Nec Corp 電子すかしデータ挿入装置および検出装置
US6687384B1 (en) * 2000-03-27 2004-02-03 Sarnoff Corporation Method and apparatus for embedding data in encoded digital bitstreams
BR0109448A (pt) 2001-01-23 2003-06-03 Koninkl Philips Electronics Nv Processo e arranjo para embutir uma marca d'água em um sinal de informação
US7254249B2 (en) * 2001-03-05 2007-08-07 Digimarc Corporation Embedding location data in video
JP3565182B2 (ja) 2001-05-11 2004-09-15 日本電気株式会社 可変長符号の入力が中断されることを防止する方式及びその方法
JP2004536531A (ja) 2001-07-19 2004-12-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 圧縮メディア信号の処理
US7046818B2 (en) * 2001-07-20 2006-05-16 Seiko Epson Corporation Standards compliant watermarking for access management
JP3977216B2 (ja) * 2001-09-27 2007-09-19 キヤノン株式会社 情報処理装置及び方法及び情報処理プログラム及び記憶媒体
US6724914B2 (en) * 2001-10-16 2004-04-20 Digimarc Corporation Progressive watermark decoding on a distributed computing platform
WO2003062960A2 (en) * 2002-01-22 2003-07-31 Digimarc Corporation Digital watermarking and fingerprinting including symchronization, layering, version control, and compressed embedding
JP3720791B2 (ja) 2002-04-24 2005-11-30 ソニー株式会社 画像符号化装置及び方法、並びに画像復号装置及び方法
US7277587B2 (en) * 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
AU2003228048A1 (en) * 2002-06-03 2003-12-19 Koninklijke Philips Electronics N.V. Encoding and decoding of watermarks in independent channels
AU2003256333A1 (en) * 2002-06-28 2004-01-19 University Of Rochester System and method for embedding information in digital signals
US20040120404A1 (en) 2002-11-27 2004-06-24 Takayuki Sugahara Variable length data encoding method, variable length data encoding apparatus, variable length encoded data decoding method, and variable length encoded data decoding apparatus
US7636440B2 (en) * 2003-01-31 2009-12-22 Hewlett-Packard Development Company, L.P. Digital watermark with variable location
EP1604483A2 (en) * 2003-03-07 2005-12-14 Chaoticom, Inc. Methods and systems for digital rights management of protected content
DE10321983A1 (de) * 2003-05-15 2004-12-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Einbetten einer binären Nutzinformation in ein Trägersignal
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
JP4726140B2 (ja) 2003-06-25 2011-07-20 トムソン ライセンシング 圧縮されたビデオ・ビットストリームにおける電子透かしの検出のための復号化方法および装置
US20060257000A1 (en) * 2003-06-25 2006-11-16 Boyce Jill M Decoding method an apparatus for detection of watermarks in a compressed video bitsream
KR101081729B1 (ko) * 2003-07-07 2011-11-08 로비 솔루션스 코포레이션 저작권 침해를 제어하고 쌍방향 컨텐츠를 인에이블시키기 위한 재프로그램가능한 보안
JP4612797B2 (ja) 2004-03-11 2011-01-12 キヤノン株式会社 符号化装置、符号化方法
US8127137B2 (en) 2004-03-18 2012-02-28 Digimarc Corporation Watermark payload encryption for media including multiple watermarks
WO2005099385A2 (en) * 2004-04-07 2005-10-27 Nielsen Media Research, Inc. Data insertion apparatus and methods for use with compressed audio/video data
US7437721B2 (en) 2004-09-29 2008-10-14 Microsoft Corporation Isolating software deployment over a network from external malicious intrusion
WO2006041145A1 (en) * 2004-10-15 2006-04-20 Matsushita Electric Industrial Co., Ltd. Information-detecting apparatus and method
GB2419762A (en) 2004-11-01 2006-05-03 Sony Uk Ltd Method of generating protected media signals by replacing data bits with hash values
GB2421134A (en) * 2004-12-09 2006-06-14 Sony Uk Ltd Detection of payload data from a watermarked image by calculation of payload probability values
FR2879878B1 (fr) 2004-12-22 2007-05-25 Thales Sa Procede de chiffrement selectif compatible pour flux video
US7672373B2 (en) * 2005-04-11 2010-03-02 Cisco Technology, Inc. Digital watermarking of a media stream using coded macroblock types
US8320453B2 (en) * 2005-07-08 2012-11-27 Lg Electronics Inc. Method for modeling coding information of a video signal to compress/decompress the information
CN100466739C (zh) * 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
BRPI0520718A2 (pt) * 2005-12-05 2009-05-26 Thomson Licensing inserir marca d'água em conteúdo codificado
FR2894759A1 (fr) 2005-12-12 2007-06-15 Nextamp Sa Procede et dispositif de tatouage sur flux
DE102005063136B3 (de) * 2005-12-30 2007-07-05 Siemens Ag Verfahren und Vorrichtung zum Generieren eines markierten Datenstroms, Verfahren und Vorrichtung zum Einfügen eines Wasserzeichens in einen markierten Datenstrom und markierter Datenstrom
EP2011075B1 (en) 2006-04-25 2017-03-29 Thomson Licensing Digital watermarking method
US20080097786A1 (en) * 2006-10-18 2008-04-24 Rohit Sachdeva Digital data security in healthcare enterprise
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US8358703B2 (en) 2007-03-23 2013-01-22 Thomson Licensing Modifying a coded bitstream
WO2008154041A1 (en) 2007-06-14 2008-12-18 Thomson Licensing Modifying a coded bitstream
JP5270674B2 (ja) 2007-06-29 2013-08-21 トムソン ライセンシング ウォーターマークデータの挿入のためにデータを処理する方法、データソースに埋め込まれたウォーターマークデータを検出する方法、ウォーターマークデータの埋め込み処理により生成された検出データを使用して、データソースに埋め込まれたウォーターマークデータを検出する方法、データソースに埋め込まれたウォーターマークを検出する装置及びプログラム記憶媒体
JP5373909B2 (ja) 2008-08-19 2013-12-18 トムソン ライセンシング 圧縮ビデオにおける構文要素のcabac/avc準拠の透かし入れ

Also Published As

Publication number Publication date
JP2010522470A (ja) 2010-07-01
US9299120B2 (en) 2016-03-29
BRPI0721427A2 (pt) 2014-02-25
US20100169349A1 (en) 2010-07-01
US8358703B2 (en) 2013-01-22
CN101636761B (zh) 2013-07-24
CA2681402A1 (en) 2008-10-02
US20100027684A1 (en) 2010-02-04
EP2130173B1 (en) 2019-01-02
JP5277180B2 (ja) 2013-08-28
CN101636761A (zh) 2010-01-27
KR101398534B1 (ko) 2014-05-27
EP2130173A1 (en) 2009-12-09
WO2008118146A1 (en) 2008-10-02
KR20100014902A (ko) 2010-02-11
CA2681402C (en) 2016-02-16
MX2009010182A (es) 2009-10-12
WO2008118145A1 (en) 2008-10-02

Similar Documents

Publication Publication Date Title
BRPI0721427B1 (pt) modificação de um fluxo de bits codificado
JP5892704B2 (ja) 符号化ビット・ストリームの修正
CN114930835B (zh) 变换系数为水印提供嵌入式信令的用途
US20090080689A1 (en) Watermarking Encoded Content
CN1168303C (zh) 数字视频复制保护系统
KR20110061551A (ko) 상황-기반의 적응형 이진 산술 코딩(cabac)비디오 스트림 준수
JP2004531942A (ja) ウォーターマーク埋め込み
KR20020077209A (ko) 디지털 이미지에 워터마크를 임베드하는 방법
US9514504B2 (en) Encoding/decoding message by selectively adjusting characteristics of sub-units in image data
CA2613997A1 (en) Image watermarking using multiple watermarking methods for multiple regions
CN1277412C (zh) 一种视频数据复制控制系统及方法
JP5571756B2 (ja) ウォーターマークエンコードコンテンツ
AU2006265780B2 (en) Image watermarking
ABDi et al. A robust video watermarking algorithm in H. 264/AVC compressed domain
HK1115465B (en) Image watermarking

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: CONTENTARMOR (FR)

B06T Formal requirements before examination [chapter 6.20 patent gazette]

Free format text: PARECER 6.20

B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06T 1/00

Ipc: G06T 1/00 (1995.01), H04N 19/13 (2014.01), H04N 19

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 15/01/2019, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 17A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2799 DE 27-08-2024 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.