conversão e manipulação em espaços de côrmandrade/tvd/2006/trabalhos1-2006/td-trab1... · É...

10
Faculdade de Engenharia da Universidade do Porto LEEC / MIEEC 5.º Ano - 1.º Semestre - 2006-2007 Televisão Digital Conversão e Manipulação em Espaços de Côr Grupo: 020503068 - Carlos Guilherme Varela Araújo 020503251 - José António Pacheco Ribeiro

Upload: vuongxuyen

Post on 09-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Faculdade de Engenharia da Universidade do Porto

LEEC / MIEEC – 5.º Ano - 1.º Semestre - 2006-2007

Televisão Digital

Conversão e Manipulação em Espaços de Côr

Grupo: 020503068 - Carlos Guilherme Varela Araújo 020503251 - José António Pacheco Ribeiro

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

1

1. Introdução

1.1. Objectivos

Este é um trabalho que teve como objectivo principal operar imagens em vários Espaços de Côr. Operações como conversões entre alguns Espaços de Côr e aplicação de novos níveis de côr, foram os principais propósitos do desenvolvimento do trabalho, sendo ainda abordados temas como adição/remoção de ruído e aplicação de filtros de valor de côr.

1.2. Espaços de Côr

Um Espaço de Côr pode ser visto como um sistema definido por uma base representativa das componentes, de acordo com a definição do espaço considerado. A representação de qualquer côr pode então ser feita à custa da combinação dessas componentes. São normalmente tridimensionais, pelo que se desenvolveu uma aplicação com a apresentação das três componentes de cada Espaço de Côr. Foram utilizados no trabalho os Espaços de Côr mais conhecidos nesta área.

● RGB

É o mais comum dos espaços, pois é directamente suportado nos ecrãs a cores.

Qualquer côr é expressa sobre a mistura de Vermelho (R), Verde (G) e Azul (B). Valores destas componentes variando entre 0 (min) e 255 (max).

● YUV

É um espaço definido em termos de luninância (brilho) e de duas componentes de crominância. Além disso, tem uma grande aproximação à precepção do olho humano.

A derivação a partir do RGB é:

Y = 0.299 * R + 0.587 * G + 0.114 * B

U = 0.436 * (B - Y) / (1 - 0.114)

V = 0.615 * (R - Y) / (1 - 0.299)

(Na figura, Y=0.5) (Fórmulas necessárias para a personalização de funções)

● HSV

HSV (Hue, Saturation e Value - Tonalidade, Saturação e Valor, respectivamente), é um Espaço de Côr preferencial no meio artístico, pelas suas componentes serem directamente relaccionadas com o modo de como o humano caracteriza uma determinada côr.

O H, variando de 0º a 360º (no algoritmo será entre 0 e 1), corresponde ao tipo de côr – sendo a referência o Vermelho; com S, variando de 0 a 1, dando a “pureza”; e V, também de 0 a 1, correspondendo ao brilho.

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

2

● NTSC (YIQ)

É também conhecido como video color space.

Tal como em YUV, a primeira componente é a luminância, e as duas outras são a Crominância, mas pelo que, neste caso, são denominadas por “em fase” (I) e “em quadratura” (Q), referindo ao método de como estas componentes são combinadas na obtenção das cores.

Na prática, trata-se de uma outra representação do plano UV (com um determinado Y) com um referencial desfasado.

● YCbCr

Este Espaço de Côr também tem a mesma caracteística de ter a componente de luminância, tal como outros acima referidos.

As restantes duas componentes são a Crominância de Azul (Cb) e de Vermelho (Cr). Como se pode ver no plano representado, com Y=0.5 (numa escala de 0 a 1), a variação da segunda componente – eixo horizontal – faz perceber a variação de tonalidade azul, e a variação segundo o eixo de Cr – vertical – faz notar a variação de tonalidade vermelha. A combinação destas variações resulta no aparecimento das outras cores.

Uma característica importante de salientar dos Espaços de Côr com componente Y (luminância) é a possibilidade de tornar as imagens compatíveis com dispositivos (ecrãs) a Perto e Branco.

1.3. Ambiente e Ferramentas de trabalho

A aplicação foi desenvolvida no Matlab®, com interface gráfica para facilitar as operações e usufruindo das variadas funções já existentes na toolbox de processamento de imagem.

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

3

2. Algoritmos desenvolvidos

2.1. Princípios gerais

De encontro com os objectivos do trabalho, as conversões entre Espaços de Estados e as manipulações nas componentes não requereram a implementação de algoritmos muito complexos, pelo que usou-se funções já disponíveis pela ferramenta de trabalho e desenvolveu-se algumas outras, partindo de fundamentos teóricos.

A ideia principal foi construir a aplicação de modo a que a partir duma imagem seja possível separar em componentes num Espaço de Côr disponibilizado e posteriormente, ser possível manipular cada componente nos seus valores fazendo representar essas alterações relativamente à imagem original.

Imagem Original

Comp. R Comp. G Comp. B

Exemplo de separação em componentes RGB

Estendendo a estas funcionalidades, implementou-se a aplicação de filtros de valor de côr que consistem em processar os pixels de acordo com o seu valor de componente (e não de acordo com a sua posição espacial). Foi também implementado um sistema de remoção de ruído de uma imagem, que, se devidamente utilizado em conjunto com os filtros, permitem recuperar uma imagem quase na totalidade. Para este efeito foi também implementado uma pequena funcionalidade que permite adicionar ruído a uma imagem (ruído preto ou branco).

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

4

2.2. Implementação

Visto a base do nosso trabalho ser a conversão entre Espaços de Côr optou-se por colocar uma caixa de opções com os vários Espaços de Côr, tornando assim as mudanças entre Espaços de Côr simples e imediatas.

Exemplo da caixa de opções com os vários Espaços de Côr

No sentido de facilitar o manuseamento das imagens foram colocados “sliders” por baixo da representação de cada componente que permitem de uma forma rápida e cómoda incrementar/decrementar todos os valores de côr nos pixels, de uma dada componente. Isto é feito aplicando o mesmo valor (positivo ou negativo) a todos os pixels da componente em questão, e visualizando de imediato quer as mudanças obtidas na referida componente, quer na imagem reconstruída (obtamos por mostrar sempre esta imagem no formato RGB, independentemente do espaço de côr utilizado, visto assim ser mais fácil observar o que certas mudanças fazem na imagem original). Através do exemplo abaixo percebe-se facilmente a funcionalidade:

Exemplo de funcionamento com os “sliders” na componente R de RGB

Imagem modificada de acordo com as mudanças efectuadas na componente R

Componente “R” modificada

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

5

Visto o principal objectivo do trabalho ser o manuseamento de imagens através da aplicação de filtros foi também implementada uma funcionalidade que permite modificar o valor de apenas os pixels que estão na gama escolhida pelo utilizador, ou seja, para uma certa componente de dado Espaço de Côr, os pixels que tiverem valor superior/inferior/igual a um limite definido pelo utilizador, terão o seu valor aumentado/diminuído em um valor novamente definido pelo utilizador. Esta funcionalidade torna-se bastante útil se, por exemplo, queremos tornar os pixels que tem um valor de vermelho baixo (em RGB logicamente), em pixels com valor de vermelho alto. De seguida apresentamos um exemplo elucidativo do que acabamos de descrever:

Exemplo de funcionamento dos filtros para a componente RED

Para terminar esta secção falta-nos referir as filtragens espaciais dos planos de côr. Tais filtragens, tal como vamos poder observar nos exemplos seguintes, são fundamentais quando precisamos de recuperar uma imagem. Para tal podem ser usados três algoritmos, sendo o primeiro denominado por nós de “algoritmo uniforme” visto aplicar a cada pixel, independentemente do seu valor e do valor dos seus vizinhos, a filtragem espacial. O segundo, “algoritmo inteligente”, tal como próprio nome sugere, apenas aplica a filtragem aos pixels que tem um valor muito diferente dos valores dos seus vizinhos. Com isto, além de conseguirmos melhorar o tempo de resposta do algoritmo, evitamos estar a “estragar” a imagem desnecessariamente aplicando filtragens a todos os pixels. Por último temos o “algoritmo inteligente para ruído branco”, que, tal como o nome indica, apenas atinge o seu potencial máximo quando o ruído é em tons claros (isto deve-se ao facto de o valor do ruído preto em RGB ser (0,0,0), o que faz com que as fórmulas usadas para calcular a diferença entre o valor do pixel e o valor do seu vizinho deixem de fazer sentido visto que ao multiplicar uma margem de segurança por o valor 0, obtemos 0).

Eis então a equação que calcula o valor de um pixel, através da média ponderada do valor dos seus vizinhos (equação para a componente RED sendo análogo para as outras):

1,1),j1,RGB(i*0.125

j,1)1,RGB(i*0.1251,1)-j1,RGB(i*0.1251,1)jRGB(i,*0.1251,1)-jRGB(i,*0.125

1,1)j1,-RGB(i*0.125j,1)1,-RGB(i*0.1251,1)-j1,-RGB(i*0.125j,1)RGB(i,

+++

++++++++

++++=

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

6

Quadro resumo com os pontos chave dos algoritmos de remoção de ruído:

Nome do algoritmo Condição para aplicação da filtragem espacial

Algoritmo uniforme Nenhuma – filtragem aplicada a todos os pixels

Algoritmo inteligente if((RGB(i,j,1)>1.5*RGB(i+1,j,1))||(RGB(i,j,1)<0.5*RGB(i-1,j,1))

|| (RGB(i,j,2)>1.5*RGB(i,j+1,2) ||(RGB(i,j,2)<0.5*RGB(i,j-1,2)))

|| (RGB(i,j,3)>1.5*RGB(i,j+1,3) ||(RGB(i,j,3)<0.5*RGB(i+1,j,3))))

Algoritmo inteligente para ruído branco

if((abs(RGB(i,j,1)-RGB(i+1,j,1)))>abs(0.2*RGB(i,j,1))

|| abs((RGB(i,j,2)-RGB(i,j+1,2))>abs(0.2*RGB(i,j,2)))

|| abs((RGB(i,j,3)-RGB(i+1,j,3)))>abs(0.2*RGB(i,j,3)))

Imagem Original Imagem com 10% de ruído “branco”

Algoritmo uniforme Algoritmo inteligente

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

7

Algoritmo inteligente para ruído branco Algoritmo inteligente para ruído branco com manipulação de algumas componentes através de sliders

Todos estes processamentos são acumuláveis, isto é, podem ser feitos uns sobre outros, e o resultado será a sobreposição dos efeitos de cada operação. Ainda foi possivel a implementação de opcionalmente se poder guardar o resultado final da imagem num novo ficheiro, com o tipo de extensão diferente.

Todos estes processamentos são acumuláveis, isto é, podem ser feitos uns sobre outros. O resultado será a sobreposição dos efeitos de cada operação. Ainda foi possivel a implementação de um botão que permite guardar o resultado final da imagem num novo ficheiro, com o tipo de extensão diferente

2.3. Aspectos importantes

A ferramenta Matlab® não disponibiliza todas funções para conversão entre estes Espaços de Côr, pelo que foi necessário criar formas de converter, nomeadamente, RGB para YUV e vice-versa, segundo as formulas de conversão descritas. Estas novas funções seguem em ficheiros em paralelo ao da aplicação para este trabalho.

Na etapa de apresentação das componentes separadas de cada Espaço de Côr houve algumas dificuldades em converter o aspecto de cada componente no correspondente espaço RGB. Por exemplo, a apresentação da componente U de uma imagem YUV, no monitor (em RGB), causou dificuldades em compreender se poderia estar alguma conversão – RGB para YUV e/ou vice-versa – com erros significativos. Esta dificuldade foi acrescida de uma confusão na literatura sobre o espaço YUV com o espaço YCbCr.

No decorrer do desenvolvimento do trabalho, focou-se mais as relações entre os Espaços de Côr. Isso resultou em não se desenvolver algoritmos de aplicação de filtros espaciais, por exemplo, em componentes separadas, uma vez que não se achou tanta importância no que respeita aos objectivos principais de todo o trabalho. Como já descrito, implementou-se, sim, um tipo de filtro de níveis de côr para qualquer componente, com a representação do resultado.

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

8

3. Resultados e Análise

Com o auxílio de uma imagem considerada “pura”, isto é, com zonas de valor de côr pura, permitiu concluír que:

● RGB

Como esperado, as três componentes são geralmente importantes para a reprodução de uma côr. Numa imagem genérica, não se pode descartar qualquer uma delas pois vai interferir no aspecto original.

● YUV

No caso de imagens “puras” como esta, todas as componentes tem a sua importância. Mas dependendo da imagem, as componentes de crominância podem ter valores praticamente nulos, o que proporciona a que possam ser ignorados na representação da imagem e com isso obter-se uma

melhor compactação, para efeitos de armazenamento ou transmissão. Este exemplo, mosta bem que devido à caracteristica geral da imagem original, pode-se ignorar a componente U.

● HSV

Para uma imagem “pura” que, ao contrário desta apresentada, não tenha zonas de branco, a componente S torna-se desinteressante, pois, como se trata de cores “puras”, o nível de saturação é máxima. Pela mesma razão, a componente V também tem um valor igual por toda a imagem (máximo), pelo

que resulta de pouca informação ao representá-la. Estas componentes apresentam-se em tons de vermelho pela razão de o vermelho ser a referência da componente H (Tom).

A imagem à direita tem algumas zonas com tom praticamente constante – o que corresponde a que na componente H em cada essas zonas tenha um valor semelhante – mas também existe uma zona de variação de tons (a cara) – bastante evidente na componente de tons, H. Essa zona da cara é também quase a única com níveis de saturação muito baixos – corresponde a quase branco – e a zona do chapéu/cabelo é uma zona com Valores (V - Value) muito baixos – que, como esperado, corresponde a quase preto.

● NTSC (YIQ)

Este Espaço de Côr, aplicado a uma imagem como esta, tem características semelhantes à aplicação no Espaço de Côr YUV – o que é esperado pela relação entre este espaços. Uma imagem genérica que tenha importantes zonas com laranjas e/ou azuis vai traduzir num importante peso na componente I. De

forma análoga, uma imagem com zonas violetas e/ou verdes resultará em valores importantes na componente Q. A primeira componente caracteriza-se da mesma forma que do espaço YUV.

FEUP - MIEEC/LEEC Televisão Digital C&M Espaços de Côr

9

Como exemplo realizado, partindo da tonalidade predominante desta imagem, a correspondente componente I tem a sua importância, contrariamente à componente Q, cujos valores se tornam despresáveis, na situação de compressão ou transmissão de uma imagem como esta.

● YCbCr

Tal como outras, verifica-se a importância da primeira componente – luminância – dando os níveis de “brilho” à imagem em questão. A componente de crominância azul (Cb) torna-se importante se a imagem conter zonas com mistura de amarelos e/ou violetas, e a componente de crominância vermelha (Cr) tem

importante informação caso a imagem apresente zonas de vermelhos e/ou verdes.

Estas conclusões podem ser confirmadas com esta outra imagem, que é geralmente em tons de amarelo, laranja e vermelho – para alem da luminância. Assim, a componente Cb correspondente tem valores relativos aos tons amarelos e a componente Cr correspondente surge com níveis representados pelos tons vermelhos.

4. Referências

● http://paginas.fe.up.pt/~mandrade/tvd, acedido em 09/10/2006

● http://en.wikipedia.org/wiki/HSV, acedido em 27/10/2006

● http://en.wikipedia.org/wiki/YCbCr, acedido em 30/10/2006

● http://en.wikipedia.org/wiki/YIQ, acedido em 30/10/2006

● http://en.wikipedia.org/wiki/YUV, acedido em 31/10/2006