MÉTODO E APARELHO PARA CRIAR UM BLOCO DE PIXELS COM GRÃO DE FILME E PORTADORA DE DADOS
REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
Este pedido reivindica prioridade sob 35 U. S . C. 119(e) para o pedido de patente provisório no. de série 60/527.895 depositado em 5 de dezembro de 2003, cujos preceitos estão aqui incorporados.
CAMPO TÉCNICO
Esta invenção diz respeito a uma técnica para simular grão de filme em uma imagem.
ANTECEDENTES DA INVENÇÃO
Filmes com imagem em movimento compreendem cristais de haleto de prata dispersos em uma emulsão, que é revestida em camadas delgadas em uma base do filme. A exposição e revelação desses cristais formam a imagem fotográfica que consiste de minúsculas partículas discretas de prata. Em negativos em cores, ocorrem conjuntos de pixels minúsculos de corante nos locais onde os cristais de prata se formam, após a remoção química da prata durante a revelação do estoque de filme. Esses pequenos grãos de areia de corante geralmente levam o nome de grão em filme em cores. Grãos aparecem distribuídos aleatoriamente na imagem resultante em virtude da formação aleatória de cristais de prata na emulsão original. Dentro de uma área uniformemente exposta, alguns cristais são revelados depois da exposição, enquanto outros não.
O grão varia de tamanho e forma. Quanto mais rápido o filme, maiores os borrões de prata formados e dos con
1¾ •··· ·· φ ♦ *
juntos de pixels de corante gerados, e tanto mais eles tendem a se agrupar em padrões aleatórios. 0 termo granularidade tipicamente se refere ao padrão de grãos. O olho nu não pode distinguir grãos individuais, que variam de 0,0002 mm a cerca de 0,002 mm. Em vez disso, o olho resolve grupos de grãos, referidos como conjuntos de pixels. Um expectador identifica esses grupos de conjuntos de pixels como grão de filme. Ã medida que a resolução da imagem fica maior, a percepção do grão de filme aumenta. Grão de filme fica clara10 mente perceptível no cinema e imagens de Alta Definição (HD) , enquanto que grão de filme perde progressivamente a importância em Definição Padrão (SD) e fica imperceptível em formatos menores.
Filme com imagem em movimento tipicamente contém ruído dependente da imagem resultante tanto do processo físico de exposição e revelação do filme fotográfico como da subsequente edição das imagens. O filme fotográfico possui um padrão quase aleatório característico, ou textura, resultante de granularidade física da emulsão fotográfica. Alter20 nativamente, a simulação de padrão similar pode ocorrer em imagens geradas por computador a fim de misturá-las com o filme fotográfico. Em ambos os casos, este ruído dependente da imagem leva a designação de grão de filme . Muito freqüentemente, textura de grão moderada apresenta um recurso desejável em imagens em movimento. Em alguns casos, o grão de filme fornece dicas visuais que facilitam a correta percepção de imagens bidimensionais. 0 grão de filme geralmente varia dentro de um único filme para fornecer várias dicas
![Figure BRPI0417216B1_D0002](https://patentimages.storage.googleapis.com/5f/2b/10/9e2ec3ed07b978/BRPI0417216B1_D0002.png)
![Figure BRPI0417216B1_D0003](https://patentimages.storage.googleapis.com/8c/89/eb/c39656fcdda85d/BRPI0417216B1_D0003.png)
como referência de tempo, ponto de visão, etc. Muitas outras demandas técnicas e artísticas existem para controlar textura de grão na indústria cinematográfica. Portanto, preservar a aparência granulosa de imagens por todo o processamento da imagem e cadeia de entrega tem se tornado uma exigência na indústria cinematográfica.
Diversos produtos comercialmente disponíveis têm a * capacidade de simular grão de filme, geralmente para misturar um objeto gerado por computador na cena natural. Cineon® da Eastman Kodak Co, Rochester New York, uma das primeiras aplicações de filme digital a implementar simulação de grão, produz resultados bastante realísticos para altos ajustes de grão de filme. Entretanto, a aplicação Cineon® não leva a um bom desempenho para muitos filmes de alta velocidade em vir15 tude das tiras diagonais perceptíveis que a aplicação produz para altos ajustes de grão de filme. Adicionalmente, a aplicação Cineon® não consegue simular grão com fidelidade adequada quando as imagens são submetidas a processamento anterior, por exemplo, tal como quando as imagens são copiadas ou processadas digitalmente.
Um outro produto comercial que simula grão de fil„ me é Grain Surgery™ da Visual Infinity Inc., que é usado como um plugue de Adobe® After Effects®. O produto Grain Surgery™ parece gerar grão sintético filtrando um conjunto de números aleatórios. Esta abordagem apresenta a desvantagem de uma alta complexidade computacional.
Assim, existe uma necessidade de uma técnica de simulação de grão de filme eficiente, que reduza a necessi-
dade de largura de banda de memória e esforço computacional, permitindo assim simulação de grão de filme em dispositivos de alto volume e baratos, tais como aparelhos decodificadores de televisão.
SUMÁRIO DA INVENÇÃO
Resumidamente, de acordo com um aspecto da presente invenção, é provido um método para criar um bloco de Μ x N pixels com grão de filme para misturar com pixels de um bloco de imagem, onde N e M são números inteiros maiores do que zero. O método começa mediante o recebimento de informação de grão de filme que inclui pelo menos um parâmetro que especifica um atributo do grão de filme para aparecer no bloco de grão de filme. (Esses parâmetros que não são transmitidos devem ser estabelecidos nos valores padrões. Em uma modalidade particular, os valores padrões devem ser derivados da maneira especificada no padrão H.2641AVC). Um bloco de grão de filme de Μ χ N pixels é selecionado de uma base de dados de blocos previamente estabelecidos contendo grão de filme em função de um número pseudoaleatório e um conjunto de frequências de corte caracterizantes do padrão de grão de filme. Todos os valores de pixel no bloco de grão de filme selecionado são submetidos a ajuste de escala de acordo com um parâmetro na informação de grão de filme recebida. O bloco criado de grão de filme então se torna parte de um conjunto de blocos de grão de filme do qual um bloco é selecionado para mistura com pixels em um bloco de imagem para similar grão de filme no bloco de imagem.
De acordo com um outro aspecto da presente inven♦ ♦ ·· ♦ ·
• · ção, é provido um método para simular grão de filme em um bloco de imagens de pixels. O método começa mediante seleção do bloco de grão de filme de uma coleção de valores de grão de filme pré-estabelecidos. A seleção do bloco de grão de filme ocorre aleatoriamente, de acordo com um número aleatório, entre os blocos da coleção para o intervalo de intensidade luma correspondente ao valor médio de luma do bloco de imagens. 0 bloco de grão de filme selecionado passa por desbloqueamento. Pelo menos uma parte do bloco de grão de filme 10 desbloqueado é misturada com pixels resultantes do bloco de imagem para simular grão de filme e os pixels misturados resultantes são recortados antes da saída, tal como para exibição ou algo parecido.
DESCRIÇÃO RESUMIDA DOS DESENHOS
A Figura 1 representa um desenho esquemático de blocos de um aparelho para gerar blocos de grão de filme pré-estabelecidos para uso em simulação de grão de filme subsequente; e
A Figura 2 representa um desenho esquemático de blocos de um aparelho de acordo com os presentes princípios para simular grão de filme com base em pixel-por-pixel usando os blocos de grão de filme pré-estabelecidos gerados pelo aparelho da figura 1.
DESCRIÇÃO DETALHADA
Introdução
De acordo com os presentes princípios, simulação de grão de filme ocorre de acordo com informação de grão de filme transmitida com uma imagem na qual o grão de filme si-
mulado está misturado. Na prática, a imagem transmitida tipicamente é submetida a compressão (codificação) antes da transmissão via um de uma variedade de esquemas de compressão bem conhecidos, tal como o esquema de compressão H.264.
Com a imagem transmitida comprimida usando o esquema de compressão H.2 64, a transmissão da informação de grão de filme tipicamente ocorre via uma mensagem de Informação de Melhoria Suplementar (SEI). No que diz respeito ãs contribuições recém-adotadas pelo corpo de normas responsável pela promul10 gação do padrão H.264, a mensagem SEI pode agora incluir vários parâmetros que especificam diferentes atributos de grão de filme.
Restrições a respeito dos parâmetros de mensagem SEI de grão de filme
0 método dos presentes princípios impõe algumas restrições com relação ao número de parâmetros e sua faixa de possíveis valores permitidos pela recomendação H.264. A tabela 1 fornece uma lista de tais parâmetros, incluindo a descrição de sua semântica e as restrições impostas pelos 20 presentes princípios.
TABELA 1
PARÂMETRO DO GRÃO DE FILME |
DESCRIÇÃO & RESTRIÇÕES |
model id |
Este parâmetro especifica o modelo de simulação. Ele deve ser 0, que identifica a o modelo de simulação de grão de filme como filtração de frequência. |
sepa- |
Este parâmetro especifica se o |
mm ··
9 · ·<··
rate colour_description_ present-flag |
espaço de cor no qual os parâmetros são estimados é diferente do espaço de cor no qual a seqüência de vídeo (onde a mensagem SEI de grão de filme foi embutida) foi codificada. Ele deve ser 0, que identifica o espaço de cor do grão de filme igual ao da seqüência codificada |
blending mode_id |
Este parâmetro identifica o modo de mistura usado para misturar o grão de filme simulado com as imagens decodificadas. Ele deve ser 0, que corresponde a um modo de mistura aditiva. |
log2_scale_factor |
Este parâmetro identifica o fator de escala logarítmica usado para representar os parâmetros de grão de filme na mensagem SEI. Ele deve ser na faixa [0,4] para garantir que a simulação de grão de filme possa ser feita usando aritmética de 16-bits. |
comp model present-flag[1] |
Este parâmetro permite a transmissão de parâmetros de grão de filme para o componente de cor Cb no espaço de cor YCbCr. Ele deve ser 0, uma vez que a simu- |
![Figure BRPI0417216B1_D0009](https://patentimages.storage.googleapis.com/7d/f2/db/baf37af2d2bb7b/BRPI0417216B1_D0009.png)
|
lação de grão de filme na croma não é suportado. |
comp_model_present_flag[2] |
Este parâmetro permite a transmissão de parâmetros de grão de filme para o componente de cor Cr no espaço de cor YCbCr. Ele deve ser 0, uma vez que a simulação de grão de filme na croma não é suportada. |
no intensity__intervals_min
usl [0] |
Este parâmetro define o número de intervalos de intensidade para os quais um conjunto específico de parâmetros foi estimado. Ele deve ser na faixa de [0,7]. |
inten-
sity interval_lower_bound[ o] [i+i]
intensity_interval_upper_
bound[0] [i] |
Esses parâmetros definem os limites dos intervalos de intensidade luma para os quais diferentes parâmetros de grão de filme são definidos.
0 limite inferior do intervalo i + 1 tem que ser maior do que o limite superior do intervalo i em virtude de não ser permitido grão de filme multigeracional. |
num_model_values_minusl[0] |
Este parâmetro especifica o número de valores do modelo presentes para cada intervalo de intensidade no qual o grão de |
|
filme foi modelado. Ele deve ficar na faixa [0,4] em virtude de não ser permitida correlação de cor . |
comp model_value [0] [i] [0] |
Este parâmetro representa a intensidade de grão de filme para cada intervalo de intensidade de luminância no qual o grão de filme foi modelado. Ele deve ser na faixa de [0,255] para garantir que a simulação de grão de filme possa ser feita usando aritmética de 16-bits. |
De acordo com os presentes princípios, os parâmetros comp_model_value[0] [i] [1] e comp_model_value[0] [i] [2] podem ter diferentes valores. Entretanto, somente um número limitado de diferentes pares comp_model_value[0][i][1] e 5 comp_model__value [0] [i] [2] é permitido, conforme especificado na tabela 2.
TABELA 2
comp model[0] [i] [1] |
comp model value[0][i][2] |
4 |
3 |
6 |
4 |
7 |
5 |
8 |
6 |
10 |
7 |
11 |
8 |
13 |
9 |
14 |
10 |
15 |
11 |
15 |
12 |
15 |
13 |
15 |
14 |
15 |
15 |
Todos os parâmetros da mensagem SEI de grão de filme não têm restrições em relação à especificação padrão. Implementação precisa de Bits de simulação de grão de filme
A simulação de grão de filme de acordo com os pre5 sentes princípios ocorre em um processo de duas etapas. Primeiramente, a geração de um grupo de blocos de grão de filme ocorre durante a inicialização após o recebimento da mensagem SEI antes de uma imagem I, conforme descrito com mais detalhes em relação à figura 1. A partir da coleção de blo10 cos de grão de filme, um bloco particular de valores é selecionado. Em seguida, as partes do grão de filme selecionadas são adicionadas a cada pixel de luminância de cada imagem decodificada da maneira descrita com relação à figura 2.
A Figura 1 representa um aparelho 10 de acordo com uma modalidade ilustrada dos presentes princípios para gerar um grupo de blocos de grão de filme para uso em simulação de grão de filme. Mediante recebimento de uma mensagem SEI de grão de filme contendo informação de grão de filme, ocorre um processo de inicialização para criar uma coleção de 4.096 20 (512 x 8) valores de pixel de grão de filme para cada um dos até 8 diferentes intervalos de intensidade luma. O número de intervalos de intensidade luma está indicado por 1 mais o • ·
campo de mensagem SEI num_intensity_intevals_minusl[0]. A geração das amostras de grão de filme começa com o intervalo de intensidade luma mais baixo.
Simulação com precisão de bit do ruído de grão de filme tipicamente ocorre pelo uso de um polinômio gerador de números pseudoaleatórios uniformes especificado e pelo uso de uma base de dados especificada de padrões de grão de filme 12. Na prática, a base de dados 12 de padrões de grão de filme compreende 26 conjuntos de 4.096 (512 x 8) valores de grão de filme (13 conjuntos com grãos redondos e 13 conjuntos com grãos alongados). Os valores são armazenados na forma de complementos de 2 e variam de [-127,127] . A lista de valores para cada conjunto pode ser pré-definida e armazenada em um armazenamento permanente acessível pelo sistema ou criado usando um método de precisão de bit mediante inicialização ou restabelecimento do sistema.
Os padrões de grão de filme armazenados na base de dados 12 passam por seleção por meio de um bloco de seleção 14 e um subseqüente ajuste de escala por meio de um bloco de ajuste de escala 16 para obter uma coleção 18 de blocos de grão de filme. O acesso da base de dados 12 de padrões de grão de filme, o ajuste de escala dos valores pelo bloco 16 e o subseqüente armazenamento dos valores ajustados na escala em blocos na coleção 18 ocorre de acordo com a seguinte rotina: for(i = 0..4,095) v = comp_model_value[0][s][0] * database[m] [n][i] pool [s] [i] = ( (v + 2 1°92-scale-factor“1) >>log2_scale_factor) +
32)>>6 onde η é igual a comp_model_value [o] [ [2] - 3, me é igual a 0 quando num__param_minusl [0] é igual ale igual a 1 f caso contrário, e o fator 6 ajusta a escala dos valores de grão de filme armazenados na base de dados. Este processo é realizado tantas vezes quanto indicado por 1 mais o campo da mensagem SEI num_intensity__intervals_minusl [0] .
Operações de bloco e pixel antes da exibição de pixel
A Figura 2 representa um aparelho 20 para realizar as operações necessárias para adiciona grão de filme à imagem decodificada no nível de bloco e pixel. Um bloco de média luma 22 processa cada bloco 8 x 8 da imagem decodificada e computa a média dos valores de pixel luma para comparação com os parâmetros da mensagem SEI inten15 sity__interval_lower_bound [0] [i] e intensity__intervalo_upper_ bound[0][i] para determinar o intervalo de intensidade luma correto para o bloco. Um gerador de números aleatórios uniforme 24 gera um número aleatório para entrada em um bloco seletor 26 usando um operador do módulo polinomial primitivo
2, χ18 + χ5 + χ3 + χ1 + 1. O bloco seletor 26 acessa a coleção de grão de filme 18 para selecionar blocos de grão de filme de acordo com o número aleatório e o valor da intensidade luma.
Para perceber a maneira na qual o gerador de núme25 ros aleatórios 24 gera o número aleatório para a seleção do bloco de grão de filme, deixe x(i,e) indicar o i-gésimo símbolo da seqüência x, começando com uma semente inicial e. (A semente é estabelecida em 1 mediante recebimento de cada
mensagem SEI de grão de filme). O deslocamento para o bloco 8x9 atual de grão de filme é gerado como se segue. previous_offset = offset offset = (x(i,l) % 4,088)>>2 offset A=(index == previous__of f set) offset <<= 2 onde o deslocamento foi inicializado em 0 depois da criação da coleção. Depois do cálculo do deslocamento, o bloco 8x8 de grão de filme é extraído da coleção como se segue.
for (i = 0...7, j - 0..7) block[i] [j] = pool [s] [offset + i + j*4096]
Um bloco de grão de filme selecionado pelo bloco seletor de acordo com o número aleatório proveniente do gerador de números aleatórios 24 e do valor de luminância médio proveniente do bloco 22 passa por desbloqueamento dos pixels das colunas de esquerda e da direita do bloco por meio de um filtro de desbloqueamento 28 antes da mistura. Em seguida, um adicionador 30 adiciona o valor correspondente do bloco de grão de filme desbloqueado aos pixels decodificados correspondentes, e um recortador 32 recorta os resultados dentro da faixa [0, 2 55] para produzir pixels luma misturados com grão de filme para exibição em um mostrador (não mostrado) ou para subsequente gravação. Note que ruído de grão de filme só é adicionado aos pixels luma.
Filtro de Desbloqueio 28
Conforme indicado, o filtro de desbloqueio opera para desbloquear o bloco de grão de filme antes da mistura para suavizar artefatos de bloqueio resultantes do pequeno •14 tamanho da transformada. Na modalidade ilustrada, o filtro de desbloqueio 206 toma a forma de um filtro de 3-derivações aplicado a todos os pixels que margeiam as bordas esquerda e direita do bloco 8x8. Dada uma fileira de pixels pertencente a dois blocos 8x8 adjacentes, a transição entre os blocos sendo localizada entre os pixels b e c.
Bloco A Bloco B o filtro é aplicado como se segue:
b' = (a + (b<<l) + c) >> 2 c' = (b + (c<<1) + d) >> 2 onde b' e c' substituem o valor dos pixels originais b e c, respectivamente. O desbloqueio das bordas do bloco esquerda e direita ocorre para cada bloco de grão de filme antes da adição à imagem decodificada.
O método supradescrito para simulação de grão de filme pode ser facilmente praticado por dispositivos de replicação de conteúdo, tais como um aparelho DVD (ou tocador/gravador) ou mecanismo de entrega de conteúdo, tais como aparelhos decodificadores de televisão ou algo parecido. No caso de um dispositivo de replicação de conteúdo tal como um aparelho DVD ou tocador/gravador DVD, a mídia de conteúdo (por exemplo, o DVD) carregaria a informação de grão de filme juntamente com o próprio conteúdo (isto é, vídeo comprimido) para permitir que o dispositivo de replicação de conteúdo simule grão de filme da maneira descrita. Assim, por exemplo, um DVD carregaria tanto informação de imagem, tipi-
4 ··· •· *· •«4 camente na forma macroblocos compactados, bem como informação de grão de filme, que permitiría a um aparelho DVD ou tocador/gravador misturar grão de filme com o vídeo descompactado para subseqüente exibição.
O exposto descreve uma técnica para simular grão de filme em uma imagem. Vantajosamente, a técnica de simulação de grão de filme disponibiliza a capacidade de simular grão de filme alongado em virtude dos valores permitidos para o parâmetro num_model_values_minusl[0], bem como os valo10 res permitidos para os parâmetros comp_model__value [0] [i] [1] e comp__model_value [0] [i] [2] . Além disso, a técnica de simulação de grão de filme dos presentes princípios de um conjunto de amostras de grão de filme da base de dados 12 de amostras evita a necessidade de realizar uma Transformada 15 Discreta de Cosseno (CDT) e uma DCT inversa.