Vous êtes sur la page 1sur 12

NOSSO HAIR: SISTEMA PARA SIMULAO DE COLORAO

EM TINGIMENTO DE CABELOS
Marcelo Guilherme Khl
Moacir de Souza da Silva

INTRODUO
Dentro do setor de beleza e esttica so encontradas algumas dificuldades
pelo profissional cabeleireiro no que se refere ao tingimento de cabelos. Isto porque
muitas vezes porque quando um cliente escolhe uma cor nem sempre o mesmo tem
noo visual de como ir ficar sua aparncia final. O que pode acarretar
descontentamento pelo cliente, perda de tempo pelo profissional, desgaste
emocional e at mesmo a perda daquele cliente. Observado a importncia desses
fatos, justifica-se a fundamentao de proposta de um sistema com o objetivo de
fornecer uma pr-visualizao de um resultado aproximado em tingimento de
cabelos. Para o desenvolvimento do trabalho, foi realizado estudo nas reas de
viso artificial (computacional), reconhecimento, tratamento e processamento de
imagens. O que forneceu suporte para a determinao de quais tcnicas de PDI
seriam adotadas para o reconhecimento do cabelo na imagem.
O enfoque principal deste trabalho est em desenvolver ou adaptar um
algoritmo que consiga de forma automtica ou semi-automtica identificar o cabelo
na imagem obtida do cliente; e dessa forma alterar sua cor ou at mesmo trocar o
corte do cabelo. Dessa forma tornou-se indispensvel o aprendizado das principais
teorias sobre Processamento de Imagens, as quais foram baseadas em Gonzalez e
Richard (1987).
1 Processamento de Imagens: Representao de Imagens Digitais
O termo imagem monocromtica, ou simplesmente imagem, refere-se
funo bidimensional de intensidade da luz f(x,y), onde x e y denotam as
coordenadas espaciais e o valor f em qualquer ponto (x, y) proporcional ao brilho
(ou nveis de cinza) da imagem naquele ponto.
s vezes se torna til a visualizao da funo da imagem em perspectiva
com um terceiro eixo representando o brilho. Neste caso, a Figura 01 apareceria
como uma srie de picos em regies com numerosas modificaes do nvel de brilho
e regies planas ou plats em que os nveis de brilho variam pouco ou so
constantes.

Figura 1 - Conveno dos eixos para representao de imagens digitais

Usando-se esta conveno para atribuir proporcionalmente valores mais altos


para reas de maior brilho obtm-se a altura dos componentes da figura
proporcional ao brilho correspondente na imagem.
Uma imagem digital uma imagem f(x, y) discretizada tanto em coordenadas
espaciais quanto em brilho. Uma imagem digital pode ser considerada como sendo
uma matriz cujos ndices de linhas e de colunas identificam um ponto na imagem, e
o correspondente valor do elemento da matriz identifica o nvel de cinza naquele
ponto. Os elementos dessa matriz digital so chamados de elementos da imagem,
elementos da figura, "pixels" ou "pels", estes dois ltimos, abreviaes de "picture
elements" (elementos de figura). Quanto mais pixels uma imagem tiver melhor a
sua resoluo e qualidade.
A Conveno dos eixos para representao de imagens digitais no
Processamento de Imagens diferente da conveno usada na Computao
Grfica.
1.1 Modelo de Cor RGB
O modelo de cores utilizado na implementao dos algoritmos o Modelo
RGB (Red Green Blue vermelho, verde e azul). Este o modelo (ou sistema) de
cores utilizado pelos monitores de computador, que possuem trs canhes de luz,
um para cada componente. Para se obter uma determinada cor neste sistema,
necessrio que se faa uma combinao dos seus componentes, que variam num
intervalo pr-especificado, normalmente de 0 a 255, sendo que a cor preta obtida
pela combinao (0,0,0), a cor branca (255,255,255), j o azul (0,0,255). A
representao do espao de cores RGB pode ser ilustrada como um cubo figura 2,
o chamado cubo RGB, onde nas extremidades (vrtices) esto suas cores bsicas,
mais as secundrias, a preta e a branca (GONZALEZ e RICHARD, 1987).

Figura 2 Cubo RGB

Cada pixel tem seu prprio valor RGB representado por trs bytes, um para
cada componente de cor: vermelho, verde e azul (red, green, blue). Esses bytes, na
linguagem Java, so todos empacotados em um inteiro. Alm da informao do
vermelho, verde e azul, cada pixel tem uma informao de transparncia,
denominado canal alpha. Esse canal tambm descrito por um byte. Se um pixel
tem um valor alpha igual a 0, significa que ele totalmente transparente; se seu
valor 255 o pixel opaco. O canal alpha integrado no mesmo inteiro em que os
componentes vermelho, verde e azul so integrados.

Uma vez que Java armazena cada componente vermelho, verde e azul como
um byte, cada componente pode representar 256 diferentes intensidades da cor
correspondente. Isso significa que se pode trabalhar com mais de 16,7 milhes de
cores. Isso freqentemente referenciado como cores reais (truecolor). No
necessrio se preocupar com a quantidade de cores que um usurio est apto a
mostrar em seu sistema. Java cuida de converter a imagem em cores reais para o
formato adequado antes de mostr-la.
Os componentes de cor so organizados em um inteiro, como mostrado a
seguir: 0xAARRGGBB
Para se extrair os valores dos componentes vermelho, verde e azul mais o
canal Alpha, de um inteiro rgb, pode-se usar o seguinte cdigo:
Byte Alpha = (rgb & 0xff000000) >> 24;
Byte Red = (rgb & 0xff0000) >> 16;
Byte Green = (rgb & 0xff00) >> 8;
Byte Blue = rgb & 0xff;
1.2 Modelo de Cor HSV
O modelos de cores HSV (Hue Saturation Value Matiz de cor, Saturao e
Valor), aproxima-se ao modelo de percepo humana.
Assim como o RGB, o HSV trabalha com trs valores para determinar uma
cor, contudo, devido a sua forma de representao fica muito mais fcil determinar a
regio e at mesmo a posio exata de uma cor. Ele trabalha com um hexacone (um
cone com base hexagonal), onde um ngulo H com respeito ao eixo vermelho
determina a matiz de cor desejada (0-360), a distncia perpendicular do centro at
a borda (ponto preto) determina a saturao S (intensidade da cor) e a distncia
vertical, determina a luminosidade V (se mais escuro, ou mais claro). A
representao deste sistema ilustrado na figura 3.

Figura 3 Modelo HSV

1.3 Componente Alfa


No momento de fazer a eliminao dos pixels, deve-se fazer uso de um
mecanismo para se armazenar esta informao sem associ-la com alguma cor em
especial.
Este mecanismo que na realidade um componente - chamado de Alpha
Channel, ou canal alfa (aqui chamado de componente alfa). O Componente alfa

incorporado no modelo RGB como mais um componente na formao de uma cor,


tornando-a uma representao RGBA (Red Green Blue Alpha). A faixa de valores
possveis de alfa a mesma que utilizada pela representao RGB simples, ou
seja, se o sistema utilizado for de 0 a 255, ele tambm ter esta faixa de valores.
Sendo assim, o esquema de representao de uma cor numa determinada posio i
da imagem : Ci = [Ri Gi Bi i].
Para fins de anti-aliasing (interpolao ou suavizao entre duas cores) e
composio de imagens, o Componente alfa funciona como um componente que
guarda a informao de quanto ser influente a cor do foreground contra a do
background no momento da combinao. Se um ponto considerado totalmente
eliminado (chama-se de transparente), significa que o seu alfa igual a 0. No
entanto, se o mesmo for preservado integralmente (o pixel ento chamado de
opaco), ele teria como valor alfa = 255.
Portanto, todos aqueles pixels onde o fator de eliminao no total,
possuem um valor em alfa calculado entre 0 e 255, exclusive.
2 Histograma da Imagem
O histograma de uma imagem fornece informao til para fazer realce e
anlise da imagem. O histograma de uma imagem revela a distribuio dos nveis de
cinza da imagem. representado por um grfico que d o nmero de pixels na
imagem para cada nvel de cinza.
Definio: Seja uma imagem digital g de M linhas e N colunas. O histograma
da imagem g, Hg, pode, analiticamente, ser definido por :

onde nk o nmero de vezes que o nvel de cinza K aparece na imagem.


Nas figuras 04 e 05 um exemplo de uma imagem lida pelo sistema e seu
respectivo histograma.

Figura 4 Imagem Original

Figura 5 Histograma da Fig. 05

2.1 Segmentao
O primeiro passo na anlise de imagens a segmentao que consiste em
usar o computador para definir na imagem, recortes automticos ao redor de objetos
de interesse. A segmentao subdivide uma imagem em suas partes ou objetos
constituintes. O nvel at o qual essa subdiviso deve se realizada, assim como a
tcnica utilizada, depende do problema que est sendo resolvido.
Algoritmos de segmentao permitem achar diferenas entre dois ou mais
objetos, e distinguir as partculas umas das outras e do fundo. Esta distino
permitir ao programa interpretar pixels contguos e agrup-los em regies. Os
algoritmos de segmentao para imagens monocromticas so geralmente
baseados em uma das seguintes propriedades bsicas de valores de nveis de
cinza: descontinuidade e similaridade.
Na descontinuidade a abordagem particionar a imagem baseado em
mudanas bruscas nos nveis de cinza. As principais reas de interesse so a
deteco de pontos isolados, deteco de linhas e bordas na imagem.
Na similaridade as principais abordagens baseiam-se em limiarizao e
crescimento de regies.
2.2 Limiarizao (Thresholding)
Limiarizao uma das mais importantes abordagens para a segmentao
de imagens (IMAGESN, 2004). Na Limiarizao analisamos a similaridade dos nveis
de cinza da imagem extraindo os objetos de interesse atravs da seleo de um
limiar T que separa os agrupamentos de nveis de cinza.
Uma imagem limiarizada g(x,y) definida como:
g(x,y)=

1 se f(x,y) T
0 se f(x,y) T

Onde f(x,y) corresponde ao nvel, de cinza do ponto, os pixels rotulados com


1 correspondem aos objetos e os pixels rotulados com 0 correspondem ao fundo e T
um valor de tom de cinza predefinido denominado limiar (IMAGENS, 2004).

Fig 6a - Histograma particionado por um nico


limiar

Fig 6b - Histograma particionado por dois limiares

2.2.1 Determinao do Limiar


Uma das dificuldades da limiarizao de uma imagem a melhor
determinao do valor de thresholding, ou seja, do ponto de separao dos pixels.
Mtodo do vale: Atravs da anlise do histograma estabelecer T (valor de
Threshold) na regio de vale mais prxima ao meio de escala dos nveis de cinza,
na figura 7.

Figura 7 Threshold

2.2.2 Limiarizao Global Simples


A mais simples de todas as tcnicas de limiarizao a do particionamento
do histograma da imagem por um limiar nico T (Fig.11a). A segmentao ento
efetuada, varrendo-se a imagem, pixel por pixel, e rotulando-se cada pixel como
sendo do objeto ou do fundo, dependendo se o nvel de cinza daquele pixel for maior
ou menor que T. O sucesso desse mtodo depende inteiramente de quo bem o
histograma pode ser particionado. Para isso transformamos primeiramente a
imagem RGB original em nveis de cinza, utilizando as seguintes frmulas de
converso: IntensidadeCinza = (0.3*R + 0.59 * G + B*0.11).
As figuras 08 e 09 demonstra um exemplo de Limiarizao utilizando alguns
valores para T, esses resultados foram obtidos utilizando as classes da biblioteca
JAI (Java Advance Image) do Java.

Figura 8 - Limiar mltiplo 94 e 129

Figura 9 - Limiar mltiplo 141 e 183

Com a tcnica do threshold podemos verificar que os tons de cinza da pele


esto prximos de alguns tons do cabelo, mesmo alterando nosso Limiar (T), isso

ocorre porque temos somente 256 nveis de cinza da imagem. Dessa forma
descartamos essa tcnica, e teremos que experimentar tcnicas com a imagem em
RGB.
2.3 Segmentao Baseada em Bordas
Na deteco de bordas, analisamos as descontinuidades nos nveis de cinza.
Uma borda o limite entre duas regies com propriedades relativamente distintas de
nvel de cinza. As bordas na imagem caracterizam os contornos dos objetos e so
bastante teis para segmentao e identificao de objetos na cena. Pontos de
borda podem ser entendidos como as posies dos pixels com variaes abruptas
de nveis de cinza. Os pontos de borda caracterizam as transies entre objetos
diferentes.
Existem vrias tcnicas de segmentao baseadas em bordas. As mais
simples so aquelas em que as bordas so detectados pelos operadores gradiente
(Sobel, Roberts, Laplaciano) seguidos de uma limiarizao (GONZALEZ e
RICHARD, 1987).
2.3.1 Operador Sobel
Utiliza duas mscaras para encontrar os gradientes vertical e horizontal das
bordas.

A computao de |G| se torna mais complexa. Na prtica |G| aproximada da


seguinte forma: |G|= |Gx| + |Gy|.
O mdulo do gradiente proporcional a derivada local da intensidade.
Primeiro varre-se os pixels do eixo x, detectando o gradiente horizontal das
bordas, como mostrado na Figura 10.

Figura 10 - Sobel Gx

Figura11 - Sobel Gy

e o resultado final = G(Gx +

GY)

Depois varre-se o eixo y detectando o gradiente vertical das bordas, conforme


mostrado na figura 11. Por ltimo temos a soma dos mdulos gradiente horizontal
e vertical de sobel, detectando as bordas da imagem como mostrado na figura 11.

3 Materiais
Quanto ao hardware, todos os testes foram realizados em mquina Pentium
III (350Mhz) HD QUANTUM FIREBALLlct20 10 (10 GB, 4500 RPM, Ultra-ATA/100)
e 128MB de memria. Para captura das imagens utilizamos de uma cmera digital
WebCam da Creative modelo PC-Cam-550. Para o desenvolvimento do sistema
utilizou-se a ferramenta Rational Rose para a diagramao e anlise; a tecnologia
JAVA com a JVM (Java Virtual Machine 1.4) adicionadas as bibliotecas JMF(Java
Media Framework) e JAI (Java Advance Image). Essas bibliotecas contm classes
prontas para: aquisio de imagens (JMF) (JMF, 2003) e manipulao de imagens
(JAI) (JAVA, 2003); usada para programao e ambiente de desenvolvimento
juntamente com: o editor Gel que acopla as funcionalidades de compilao e
depurao do cdigo em Java, assim como a IDE do Bluette 1.0 que uma IDE
grfica; e Interbase 6.0 como Sistema Gerenciador de Banco de Dados (SGBD).
3.1 JAI
JavaTM Advanced Imaging - API, um conjunto de Classes (biblioteca)
especfica para tratamento de imagens, incluindo classes para leitura, gravao,
operaes morfolgicas, deteco de bordas - inclusive com os principais
operadores (kernel) como Sobel; vrias operaes como: de ponto, de rea,
geomtricos, quantizao de cor (dithering), de arquivo, de freqncia, estatsticos.
Portanto, esta classe tornou-se parte essencial para nosso projeto, quando da
deteco do cabelo.
3.2 JMF
JavaTM Media Framework (JMF) prov uma arquitetura unificada e protocolos
de mensagem para gerenciamento de aquisio, processamento e entrega de
dados tipo mdia. JMF desenhado para suportar os diversos padres de tipos de
contedo mdia, como AIFF, AU, AVI, GSM, MIDI, MPEG, QuickTime, RMF e WAV.
Utilizamos essa classe para capturar a imagem a ser processada por nosso
sistema.
4 Mtodos
Aps os experimentos precedentes sem sucesso para detectar o cabelo,
optou-se em trabalhar com os operadores de morfologia matemtica de eroso e
dilatao (OG e HUGO, 1987), tendo como base o artigo de Marcelo Cesar Cirelo e
Ismnia Blavatsky de Magalhes sobre deteco da face humana (WANG, 2001).
Uma vez detectada a face humana podemos usar o operador morfolgico de
subtrao entre a imagem original e a mscara obtida da face humana. A seguir
esto descritas as fases.
4.1 O pr-processamento da imagem
Binarizao da imagem utilizando a informao de tons de pele. Todos os
pixels cuja cor identificada como cor de pele e possuem alta intensidade so
transformados em pontos pretos, os demais so transformados em pontos brancos.
Como resultado, temos regies escuras que correspondem a pele.

As cores que caracterizam a pele humana variam muito com relao a


intensidade, embora fiquem concentradas numa regio estreita do espectro de cores
(WANG,2001). Por essa razo o modelo RGB normalizado bastante utilizado para
representar tons de pele. Embora o RGB normalizado despreza a informao de
intensidade ele foi utilizado pelo fato de j dispormos dos parmetros. Para
complet-lo utilizamos tambm o componente V do modelo HSV, assim os
parmetros so descritos na frmula a seguir. Um dado pixel transformado em
preto se:

Todos esses parmetros (exceto V, que foi determinado experimentalmente)


foram extrados de (DETECCAO, 2003).
4.2 Tratamento da imagem
Depois de termos a imagem binarizada na figura 13, utilizando os parmetros
para deteco da pele, sobre uma imagem RGB figura 12; aplicamos os processos
de morfologia matemtica: processo de abertura para a reduo de rudos e
fechamento para que sejam eliminados pequenos furos presentes na imagem. A
operao de abertura caracterizada pela eroso da imagem seguida por sua
dilatao. Na operao de fechamento primeiro a imagem sofre dilatao e, em
seguida, eroso - figura 14. Aps isto aplicamos um operador morfolgico de
subtrao entre a imagem original (figura 12) e a imagem resultante da dilatao
(figura 14), obtendo ento a mscara final como visto na figura 15.

Figura 12 - Imagem RGB

Figura 14 Abertura seguida de Dilatao

Figura 13 - Binarizao Tons da Pele

Figura 15 Operao de Subtrao entre 14 e 12

10

Desta forma podemos ver em destaque o cabelo, salientando que este, na


imagem original de cor escura, pois a mesma tcnica no satisfaz quando o cabelo
claro.
Com a imagem vista na figura 15 obtm-se a mdia dos pixels do cabelo que
no caso 237,237,237; aplicamos um algoritmo de subtrao entre a mesma e a
imagem original, escolhendo uma cor para pintarmos o cabelo e aplicando um limiar
de 237. Na figura 16, vemos o resultado obtido, notando-se que nesse momento do
trabalho surge uma nova dificuldade: como pintar o cabelo sem perder sua forma
original?

Figura 16 Reconhecimento e Pintura do Cabelo

Na figura 17 apresentamos a tela de captura e processamento da imagem


(quando esta tela chamada a partir da principal, a cmera automaticamente
inicializada para captura da imagem), escolhido a cor do tingimento, clicando-se
sobre a figura com a cor desejada do cabelo, e obtendo-se o resultado na imagem
direita.

Figura 17 Tela de Tingimentos.

11

CONCLUSO
Vrias dificuldades foram encontradas em relao s bibliotecas JMF e JAI,
com relao sua correta utilizao, pois as mesmas devem estar bem definidas
tanto no classpath do sistema, como nas configuraes do Bluete. Caso contrrio as
bibliotecas no sero encontradas pelo aplicativo, no momento de sua compilao.
Surgiram alguns problemas quanto conexo ao SGBD Interbase6.0 com o
aplicativo Java, que feita atravs do Interclient, fornecido pela Borland e o JDBC
do prprio Java. Perdeu-se muito tempo em descobrir que a verso tanto do drive
interclient.jar quanto a verso do Interbase deveriam ser compatveis e tambm
devem estar no classpath.
O sistema de converso de datas do Interbase tambm ofereceu certo grau
de complexidade, pois precisam ser convertidas e formatadas corretamente, tanto
nas consultas dos dados quanto na gravao e alterao dos mesmos, pois o
interbase usa um tipo de formatao para consulta e outra para gravao.
O tingimento virtual do cabelo apresentou outro obstculo, pois ao pint-lo
perdemos sua forma original.
As tcnicas utilizadas permitiram detectar e colorir o cabelo, porm no de
forma satisfatria para todos as cores naturais dos cabelos.
Em uma comparao usando a ferramenta do Adobe PhotoDeluxe, o efeito
para o cabelo escuro (preto) obtido foi igual ao nosso produzido pelo sistema
NossoHair, objeto deste trabalho. Porm quando a mesma comparao feita com
cabelos mais claros, o PhotoDeluxe consegue fazer o tingimento sem perder a
forma, o mesmo efeito no obtido no sistema desenvolvido. Ressalta-se, contudo,
que no Adobe h necessidade de realizar este procedimento manualmente poprque
o sistema no consegue detectar o que cabelo.
Para este processo so utilizados os seguintes passos: a) faz-se uma cpia
da imagem original, sobrepondo-a; b) altera-se a matiz e o brilho; c) apaga-se a
regio sobre a qual no se quer aplicar o efeito (tingimento), deixando s o cabelo
com a nova cor.
No sistema desenvolvido, uma das dificuldades encontradas reside no fato
que cabelos claros contm pixels prximos a cor da pele, por esse motivo a regio
de interesse (cabelo) se confunde com a cor da pele; no sendo possvel aplicar o
efeito desejado. Tem-se, assim, que a tcnica utilizada neste trabalho no
adequada para cabelos claros. Entretanto, comparando o PhotoDeluxe com o
sistema NossoHair, ambos no conseguiram resultados satisfatrios, ou seja,
identificao da regio de interesse (cabelo) e pintura do mesmo, caso a cor do
cabelo e da pele no possuam diferenas explcitas o suficiente para serem
distinguidas.
Os resultados alcanados com o desenvolvimento do sistema culminaram
num significativo ganho de conhecimento nas reas de PDI e Java, onde aconteceu
a chamada construo do saber.
Apesar dos resultados obtidos terem ficado um pouco aqum dos inicialmente
previstos, verifica-se que a linguagem Java, juntamente com as bibliotecas JMF e
JAI possuem recursos para os efeitos pretendidos.

12

REFERNCIAS BIBLIOGRFICAS
DETECO. DETECO da Face Humana, disponvel em http://www.lti.pcs.usp.br
/vc/turma 2002/grupo4/index.html, acesso em Julho de 2003.
GONZALES, Rafael C.; WOODS, Richard E., Processamento de Imagens,
traduzido por Roberto M. C. Jnior e Luciano da F. Costa. Editora Edgard Blucher
Ltda., So Paulo, 2000.
http://java.sun.com/products/java-media/jai, acesso em julho de 2003.
IMAGEM. Processamento de Imagens, disponvel em http://atlas.ucpel.tche.br
/~vbastos/segmenta.htm, acesso em janeiro de 2004.
JAVA. Programming in Java Advanced Imaging. Release 1.0.1, November, 1999.
JMF. JMF 2.0 API Guide. Dezembro de 2003, disponvel em http://java.sun.com/
products/ava-media/jmf/ Acessado em julho de 2003.
OG, Marques Filho; VIEIRA NETO, Hugo. Processamento Digital de Imagens.
Editora Brasport Livros e Multimdia Ltda., Rio de Janeiro, 1999.
WANG, B. e YUAN Y. A novel approach for human face detection from color
images
under
complex
background.
Pattern
Recognition,
Pattern
Recognition(10):1983 - 1992, 2001.

Vous aimerez peut-être aussi