UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
PROTÓTIPO DE UM SIMULADOR DE CORTES DE CABELOS
UTILIZANDO TÉCNICAS DE PROCESSAMENTO DIGITAL DE
IMAGENS
por
Alexandre da Silva
Itajaí (SC), dezembro de 2013
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
PROTÓTIPO DE UM SIMULADOR DE CORTES DE CABELOS
UTILIZANDO TÉCNICAS DE PROCESSAMENTO DIGITAL DE
IMAGENS
Área de Computação Gráfica
por
Alexandre da Silva
Relatório apresentado à Banca Examinadora
do Trabalho Técnico-científico de Conclusão
do Curso de Ciência da Computação para
análise e aprovação.
Orientador(a): Ana Elisa Schmidt, Doutora
Co-orientador: Ovidio Felippe Pereira da Silva
Júnior, Doutor.
Itajaí (SC), dezembro de 2013
Dedico este TTC aos meus pais Eder da Silva e Rosana da Silva que me apoiaram muito, a
minha professora Ana Elisa que está assiduamente me ajudando. Agradeco a minha
namorada Ana Cristina Prim Silva por ter ajudar a definir esta ideia do TTC. Aos amigos
que me ajudaram na busca do sucesso: Fernando Augusto Paz, Mateus Conceição e Fillipi
Domingos Pelz.
“Uma pessoa inteligente resolve um problema, um sábio o previne”
Albert Eistein
RESUMO
SILVA, Alexandre de. Protótipo de um Simulador de Cortes de Cabelos. Itajaí, 2013. 73 f.
Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da Computação) Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí,
2012.
A definição de um novo corte de cabelo de uma pessoa pode ser um problema quando não se
sabe escolher um novo estilo que se aplique ao gosto da pessoa. Este trabalho apresenta uma
proposta de um simulador de cortes de cabelo semiautomático. O principal objetivo deste
simulador é auxiliar na escolha final do usuário para a troca de corte de cabelo, minimizando
o medo do usuário em escolher um novo estilo e não gostar. Para criar o simulador proposto é
necessário detectar o cabelo da pessoa em uma imagem digital. São apresentadas e utilizadas
neste projeto técnicas de Processamento Digital de Imagens, como por exemplo, para
realização da segmentação e recorte da região do cabelo, posicionamento e
redimensionamento do novo corte escolhido e a junção da imagem segmentada com o novo
corte, gerando assim, a simulação final. Com isso são utilizadas respectivamente as técnicas
de Processamento Digital de Imagens: algoritmo de Threshold em HSV, bibliotecas nativas
do Java e a técnica de Chroma Key. A descrição do projeto da ferramenta de simulação de
cortes, incluindo sua interface, requisitos e estrutura de classes implementadas também são
apresentados. Por fim são mostrados os resultados e avaliações da qualidade do algoritmo de
segmentação proposto, bem como resultados de simulações completas também são avaliados
e comentados.
Palavras-chave: Corte de cabelo. Simulador. Processamento Digital de Imagens.
ABSTRACT
Setting a new haircut a person can be a problem when you do not know how to choose a new
style that applies to the taste of the person. This work presents a proposal of a simulator
semiautomatic hair cuts. The main goal of this simulator is to assist in the final choice of the
user to exchange haircut, minimizing the fear of the user in choosing a new style and dislike.
To create the proposed simulator is necessary to detect the person's hair in a digital image.
Are presented and techniques used in this project of Digital Image Processing, for example, to
perform the segmentation and clipping of the hair, positioning and resizing of the new cutting
chosen and the junction of the segmented image with the new cutting area , thus generating
the simulation end. Thus they are used respectively techniques Digital Image Processing:
Threshold algorithm in HSV, native Java libraries and technique Chroma Key. A description
of the simulation tool cuts, including its interface requirements and class structure
implemented project are also presented. Finally the results are shown and evaluations of the
quality of the proposed segmentation algorithm as well as results of full simulations are also
evaluated and discussed.
Keywords: HairCut. Simulation. Digital Image Processing.
LISTA DE FIGURAS
Figura 1. Finalização após uma simulação de corte de cabelo ................................................. 21
Figura 2. Sequência de PDI ...................................................................................................... 22
Figura 3. Processo de Discretização de uma Imagem .............................................................. 26
Figura 4. Representação de um cubo com as cores do modelo RGB ....................................... 27
Figura 5. Detalhes do Diagrama de Cromaticidade .................................................................. 27
Figura 6. A Mesma Imagem em Diferentes Resoluções e Número de Cores .......................... 29
Figura 7. Modelo de espaço HSV ............................................................................................. 30
Figura 8. Exemplo de uma operação local em uma área em torno do pixel ............................. 31
Figura 9. Operação Pontual ...................................................................................................... 32
Figura 10. Pseudo-código para encontrar os valores limitantes. .............................................. 34
Figura 11. Imagem segmentada pelo algoritmo de Threshold em HSV. ................................. 35
Figura 12. Operação Lógica XOR ............................................................................................ 38
Figura 13. Redimensionamento de imagem usando transformação de redução de escala ....... 39
Figura 14. UC01 - Diagrama de Casos de Uso do Usuário e Administrador. .......................... 43
Figura 15. Pseudo-algoritmo de detecão de cabelo utilizando Threshold em HSV. ................ 47
Figura 16. Pseudo-algoritmo de redimensionamento e posicionamento de corte de cabelo. ... 48
Figura 17. Pseudo-algoritmo da utilização do algoritmo de Chroma Key. .............................. 49
Figura 18. Diagrama de Classes. .............................................................................................. 51
Figura 19. Segmentação Manual de cabelo. ............................................................................. 54
Figura 20. Resultado do algoritmo de Threshold em HSV. (a) imagem original, (b) imagem
segmentada. .............................................................................................................................. 56
Figura 21. Resultado de Threshold em HSV com cabelo curto. (a) imagem original, (b)
imagem segmentada. ................................................................................................................ 57
Figura 22. Resultado do algoritmo de Threshold em HSV com cor de fundo similar do cabelo.
(a) imagem original, (b) imagem segmentada. ......................................................................... 58
Figura 23. Resultado do algoritmo de Threshold em HSV através de cores do cabelo similares
a outras regiões da imagem. (a) imagem original, (b) imagem segmentada. ........................... 59
Figura 24. Resultado do algoritmo de Threshold em HSV com cor de fundo da imagem
similar do cabelo. (a) imagem original, (b) imagem segmentada. ........................................... 60
Figura 25. Resultado do algoritmo de Threshold em HSV com redimensionamento da região
de detecção do rosto. (a) imagem original, (b) imagem segmentada, (c) resultado final com o
novo corte. ................................................................................................................................ 65
Figura 26. Etapas do algoritmo da segmentação de cabelo. (a) Imagem inicial, (b) Definição
da Área da Cabeça, (c) Máscara de Frequência, (d) Máscara de Cor, (e) Máscara de Fusão, (f)
Máscara final, (g) Cabelo segmentado. .................................................................................... 71
LISTA DE TABELAS
Tabela 1. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV. ......................................................................................................................................... 55
Tabela 2. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV. ......................................................................................................................................... 57
Tabela 3. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV com fundo similar do cabelo. .......................................................................................... 58
Tabela 4. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV com cores similares do cabelo. ........................................................................................ 59
Tabela 5. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV com cor de fundo similar do cabelo................................................................................. 60
Tabela 6. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV. ......................................................................................................................................... 65
LISTA DE ABREVIATURAS E SIGLAS
HSV
PDI
PPI
Hue Saturation Value
Processamento Digital de Imagem
Pixels per Inch
SUMÁRIO
1 INTRODUÇÃO .................................................................................................................. 15
1.1 PROBLEMATIZAÇÃO .................................................................................................. 16
1.2 FORMULAÇÃO DO PROBLEMA ................................................................................ 16
1.2.1 Solução Proposta........................................................................................................... 16
1.3 OBJETIVOS .................................................................................................................... 16
1.3.1 Objetivo Geral ............................................................................................................... 16
1.3.2 Objetivos Específicos ................................................................................................... 17
1.4 DEFINIÇÃO DE ESCOPO ............................................................................................. 17
1.5 ESTRUTURA DO TRABALHO .................................................................................... 17
2 FUNDAMENTAÇÃO TEÓRICA ...................................................................................... 19
2.1 ANÁLISE DE SOLUÇÕES SIMILARES ...................................................................... 19
2.2 PROCESSAMENTO DIGITAL DE IMAGEM .............................................................. 22
2.2.1 Análise dos Processos de PDI ....................................................................................... 23
2.2.2.1 Extração de Atributos ................................................................................................ 23
2.2.2.2 Classificação .............................................................................................................. 23
2.2.2.3 Segmentação .............................................................................................................. 24
2.2.2 Definição e Conceitos de Imagem ................................................................................ 25
2.2.2.1 Modelo de Representação de Cor RGB ..................................................................... 26
2.2.2.2 Modelo de Representação de Cor HSV ..................................................................... 29
2.2.3 Operações Passíveis de Serem Aplicadas à Imagem .................................................... 31
2.2.3.1 Operações Locais ou de Vizinhança .......................................................................... 31
2.2.3.2 Operações Pontuais .................................................................................................... 32
2.2.4 Técnicas de Processamento Digital de Imagem ........................................................... 32
2.2.4.1 Técnica de Segmentação por Threshold .................................................................... 33
2.2.4.2 Conversão de Modelo RGB Para HSV ...................................................................... 35
2.2.4.3 Cálculo de Distância Entre Duas Cores em HSV ...................................................... 36
2.2.4.4 Técnica de Chroma Key ............................................................................................ 37
2.2.4.5 Técnica XOR ............................................................................................................. 37
2.2.4.6 Posicionamento do Novo Corte de Cabelo ................................................................ 38
2.2.4.7 Redimensionamento do Novo Corte de Cabelo ......................................................... 38
3 PROJETO E DESENVOLVIMENTO ............................................................................... 40
3.2 ATORES .......................................................................................................................... 40
3.3 ANÁLISE DE REQUISITOS .......................................................................................... 41
3.3.1 Requisitos Funcionais ................................................................................................... 41
3.3.2 Requisitos Não Funcionais ........................................................................................... 41
3.3.3 Regras de Negócio ........................................................................................................ 42
3.3.4 Diagrama de Casos de Uso ........................................................................................... 43
3.4 DETALHES DE IMPLEMENTAÇÃO ........................................................................... 46
3.5 DIAGRAMA DE CLASSES ........................................................................................... 50
3.6 TÉCNICAS ESCOLHIDAS PARA DETECÇÃO SEMIAUTOMÁTICA DE CABELO
51
4 RESULTADOS .................................................................................................................. 53
4.3 TESTES E VALIDAÇÃO ............................................................................................... 53
4.4 ANÁLISE DA SEGMENTAÇÃO .................................................................................. 53
4.3.1 Cabelos com contraste com fundo e rosto .................................................................... 55
4.3.2 Cabelos sem contraste com fundo ou rosto .................................................................. 57
4.4 ANÁLISE DA SEGMENTAÇÃO .................................................................................. 60
4.4.1 Avaliação da Qualidade do Algoritmo de Threshold em HSV ....................................... 61
5 CONCLUSÕES .................................................................................................................. 62
6 TRABALHOS FUTUROS ................................................................................................. 64
6.1 REDIMENSIONAR REGIÃO DE DETECÇÃO DE ROSTO ....................................... 64
6.2 SEGMENTAR CABELO EM TEMPO REAL AO ALTERAR PORCENTAGEM DE
ERRO ....................................................................................................................................... 65
6.3 SUBSTITUIR CABELO REMOVIDO PELA COR DE FUNDO DA IMAGEM ......... 66
APÊNDICE A.
TÉCNICA DE DETECÇÃO DE CABELO PROPOSTO POR ROUSSET71
15
1 INTRODUÇÃO
Salão de beleza é uma área cuja especialidade é oferecer tratamentos cosméticos aos
seus clientes. Como observado por Aquino (2007), os salões de beleza precisam se
transformar em "salões de negócios de beleza" ao invés de apenas salões de beleza, ou seja,
precisam aplicar diversas mudanças reavaliando os seus conceitos de gestão e serviços
inovadores.
Com o intuito de aumentar a demanda, encontrar a melhor maneira de chamar e
manter novos clientes, os salões de beleza procuram por profissionais qualificados,
atendimento adequado, onde a satisfação do cliente seja o objetivo fundamental (Sebrae,
2013). Segundo análise do Sebrae (2013), foi constatado que o segmento de beleza dobrou
nesses últimos seis anos no Brasil, aumentando seu crescimento médio de 10,5% ao ano. A
pesquisa mais atual da Associação Nacional do Comércio de Artigos de Higiene Pessoal e
Beleza indica que o número de salões de beleza aumentou em 78% em cinco anos, deixando o
número de 309 mil, em 2005, para 550 mil, em 2010, somente no Brasil (Alvarenga, 2012).
O empresário Jaime Alves (Sebrae, 2013) do salão de beleza Hair Brasil diz o quanto é
importante aos profissionais que trabalham em salões de beleza ter o acesso a informações via
internet, especialmente visando à busca de novas ideias e tecnologias que possam dar um
diferencial para os serviços prestados.
É muito comum empresas buscarem por inovações, pois sem ela é pouco provável que
haja crescimento. A empresa que não inova, deixa de ser interessante aos clientes e acaba
perdendo competitividade (Sebrae, 2013).
Em relação ao serviço de cortes de cabelos, uma constante dúvida dos clientes que
chegam a um salão de beleza diz respeito ao novo estilo de cabelo que gostariam de
experimentar. Usualmente o cliente escolhe um tipo de corte de cabelo, o cabeleireiro aplica o
novo estilo de cabelo e somente após o corte ser concluído o cliente tem a oportunidade de
verificar se gostou ou não do resultado. Caso o resultado não seja de seu agrado, o cliente fica
insatisfeito, gerando uma situação constrangedora tanto para o cliente quanto para o
cabeleireiro, podendo até mesmo fazer com que o cliente não volte mais ao salão de beleza.
16
Para o salão de beleza, pode ser interessante oferecer um serviço em que o cliente
possa escolher seu novo corte de cabelo, e logo após, simular o efeito deste corte na sua
pessoa sem que o corte em si aconteça. Para que esta proposta de simulação aconteça,
identifica-se a necessidade de utilização de novas tecnologias computacionais, onde um
programa de simulação de cortes de cabelo possua a funcionalidade de testar vários tipos de
cortes de cabelo, aplicados computacionalmente à imagem do rosto do usuário.
1.1 PROBLEMATIZAÇÃO
1.2 FORMULAÇÃO DO PROBLEMA
O problema enfrentado é quando uma pessoa deseja mudar de estilo de cabelo e não
sabe exatamente qual novo corte de cabelo aplicar. Sem uma simulação do novo corte de
cabelo, o usuário escolhe qualquer corte sem ao menos ver como ficará nele, estando sujeito a
erros na escolha, pois pode pensar que era uma coisa e ficou outra. No entanto, se existir uma
simulação, o usuário teria o trabalho de tirar uma foto, escolher o novo corte de cabelo e
visualizar o novo estilo em sua própria foto.
1.2.1 Solução Proposta
Criar um simulador semiautomático de corte de cabelo baseando-se na foto digital do
rosto do usuário, que possibilite a demonstração de diferentes cortes de cabelo, a fim de
identificar qual ou quais novos estilos podem ser ou não interessantes para o usuário.
1.3 OBJETIVOS
Os objetivos deste projeto estão divididos em geral e específicos, visualizando uma
base do que pretende-se desenvolver.
1.3.1 Objetivo Geral
Projetar e desenvolver um software, a nível de protótipo, que possibilite a simulação
de estilos de cortes de cabelos utilizando como entrada a fotografia digital do rosto de uma
pessoa através da aplicação de técnicas de PDI (Processamento Digital de Imagens).
17
1.3.2 Objetivos Específicos

Analisar soluções similares buscando compreender as dificuldades e
facilidades oferecidas nestas soluções;

Implementar o algoritmo de Threshold em HSV para segmentar e remover a
região de cabelo em uma imagem digital;

Implementar a técnica de PDI de Chroma Key para gerar uma imagem
resultante da simulação;

Implementar técnicas de PDI para posicionamento e redimensionamento do
novo corte na imagem original;

Desenvolver o projeto do simulador baseado nos estudos e escolhas feitas nas
etapas anteriores;

Implementar o protótipo do simulador projetado;

Efetuar testes visando à validação das funcionalidades especificadas no projeto
e o atendimento dos requisitos.
1.4 DEFINIÇÃO DE ESCOPO
O projeto implementa um simulador semiautomático de cortes de cabelo que
possibilite ao usuário posicionar um retângulo vermelho em uma região do cabelo, para que o
algoritmo de detecção de cabelo escolhido consiga segmentar o cabelo.
É implementado no projeto o algoritmo de detecção de cabelo escolhido e remove o
cabelo detectado pelo algoritmo. Implementa técnicas de PDI para redimensionamento e
posicionamento do novo corte. Na finalização da simulação, junta-se a imagem segmentada
com o novo corte escolhido pelo usuário, através de técnicas de PDI.
É um sistema de uso desktop, não precisa estar conectado na Internet e a ferramenta
não é multiusuário.
1.5 ESTRUTURA DO TRABALHO
Este documento está dividido em seis capítulos, sendo o Capítulo 1, Introdução, que
apresentará uma breve visão do trabalho proposto. No Capítulo 2, Fundamentação Teórica,
18
onde são apresentadas conceitos relacionados a PDI, abordando detalhes das técnicas
utilizadas.
O Capítulo 3 apresenta o projeto e desenvolvimento do simulador, sendo possível
visualizar detalhes de como o sistema está organizado, incluindo sua especificação, definição
de escopo, imagem de interface do simulador, modelagem em UML e detalhes da
implementação.
No Capítulo 4, apresentam-se os resultados finais, validações, análises e as
dificuldades encontradas durante o desenvolvimento do projeto. Já no Capítulo 5, apresentamse as conclusões referente a implementação e aos problemas encontrados durante o projeto.
Por fim, no Capítulo 6, apresentam-se as sugestões de trabalhos futuros, visando dar
uma análise das implementações que podem ser realizadas futuramente.
19
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo são abordados tópicos que servem de apoio ao desenvolvimento deste
trabalho. Os assuntos estudados foram: soluções similares a do projeto, técnicas de PDI,
técnicas relacionadas à detecção, remoção, posicionamento, resimensionamento e combinação
de imagens de cabelo.
Uma das técnicas de pesquisa vastamente utilizada neste trabalho é a de pesquisa
bibliográfica a repositórios online de trabalhos científicos e soluções comerciais similares.
Portanto, utiliza-se de algoritmos e técnicas de PDI, principalmente com a teoria de PDI, que
é de extrema importância para entendimento dos demais assuntos citados ao longo do projeto.
2.1 ANÁLISE DE SOLUÇÕES SIMILARES
Com o propósito de criar uma ferramenta que auxilie na escolha do novo corte de
cabelo, realizou-se uma seleção de funcionalidades que são analisadas nas soluções similares
encontradas.
Através de testes na ferramenta Cosmopolitan (2013), identificou-se que não utiliza de
técnicas de PDI referente à detecção de corte de cabelo. Utiliza-se somente de técnicas como
posicionamento do novo corte de cabelo.
Na ferramenta FundooHairStyles (2013), a ferramenta é semiautomática. Não possui
uma interface intuitiva, como demonstrada na Figura 1, onde é preciso procurar ações como
enviar imagem. Com a análise, identifica-se a falta de utilização de técnicas de PDI, onde é
realizada a detecção de cabelo. O resultado da Figura 1, no lado esquerdo da figura, o rosto da
pessoa na imagem não é visualizada porque a ferramenta não consegue encontrar a região de
rosto, pois a ferramenta somente centraliza a imagem em todos os testes realizados, não
levando em consideração se o cabelo está em outra posição na imagem.
A ferramenta Taaz (2013) é semiautomática. Possui uma interface de fácil manuseio,
onde o processo de simulação se torna mais simples, porém a qualidade da simulação é baixa.
A ferramenta não utiliza de algoritmos e técnicas de PDI capazes de detectar e removê-los
cabelos na imagem.
20
Na ferramenta MarieClaire (2013) também é semiautomática. A ferramenta não
remove o cabelo antigo, gerando uma imagem final da simulação de má qualidade visual, pois
o cabelo atual e o novo corte de cabelo se confudem e sobrepõem. A interface da ferramenta
fornece botão para enviar foto, escolher e posicionar o novo corte.
A seguir, no Quadro 1, é realizado uma comparação de algumas características entre as
soluções similares encontradas com a ferramenta proposta.
Quadro 1. Comparação entre soluções similares.
Nome
Remove
Posicionamen-
Redimensiona-
Ambiente
Salvar
Web ou
o cabelo
to de corte de
mento de corte
que foram
novos
Desktop
atual
cabelo
de cabelo
coletados as
cortes
ferrementas
similares
Cosmopo-
Não
Sim
Não
litan
Internet 1
Não
Web
Não
Web
Não
Web
Não
Web
Sim
Desktop
Giga bytes
Fundo
Não
Não
Não
Hair Styles
Taaz
Internet 1
Giga bytes
Não
Sim
Não
Internet 1
Giga bytes
Maire
Não
Sim
Não
Claire
Solução
proposta
Internet 1
Giga bytes
Sim
Sim
Sim
Não
interfere
Apresenta-se somente uma figura como demonstração das ferramentas similares, isso
explica pelo fato de todas as ferramentas similares encontradas possuírem o mesmo tipo de
21
simulação final e o mesmo tipo de processamento, sendo redundante incluí-las como figura
neste trabalho.
As ferramentas similares encontradas e descritas neste documento não apresentam
nenhum tipo de processamento de imagem. A simulação final resulta em uma má visualização
digital; deixa o cabelo antigo aparecer com o novo corte.
Figura 1. Finalização após uma simulação de corte de cabelo
Fonte: FundooHairStyles (2013)
As soluções similares são importantes para identificar pontos que precisam ser
melhorados ou criados na ferramenta proposta, como por exemplo: remoção do cabelo atual,
redimensionamento e posicionamento do novo corte. A ferramenta proposta inclui estas
funcionalidades como objetivo deste documento, conforme a seção Objetivos.
22
2.2 PROCESSAMENTO DIGITAL DE IMAGEM
PDI refere-se ao processamento de uma imagem através de técnicas computacionais.
Á área de PDI é entendida como subárea da computação onde técnicas para análise e
manipulação de imagens por computador são estudadas. Em PDI tanto a entrada como a saída
do processamento são imagens (Facon, 2002).
Como demonstrado na Figura 2, o diagrama visualiza a sequência comumente
utilizada em aplicações de manipulação de imagens que fazem uso de técnicas de PDI. O
primeiro processo é a digitalização, ou seja, onde é enviada uma imagem do mundo real para
o computador. A próxima etapa é a técnica de restauração de imagem, que consiste em
compensar distorções, normalmente geradas no momento da aquisição, por exemplo, correção
de foco e imagens borradas em movimento. Quando é preciso identificar regiões da imagem,
é utilizada a técnica de segmentação, resultando em um conjunto de regiões de uma imagem.
Outra etapa é a extração de atributos, que tem como função extrair informações relevantes, ou
atributos das regiões segmentadas, como por exemplo, número total de objetos, propriedades
geométricas, propriedades de luminância, tais como: nível de cinza. Após esses parâmetros
coletados, é necessário distinguir os objetos na imagem, utilizando a técnica de classificação,
que tem como objetivo classificar os objetos e reconhecê-los. O processo de reconhecimento
geralmente é bastante complexo, necessitando de técnicas de inteligência artificial, de visão
computacional ou do auxílio humano para o seu reconhecimento (Scuri, 2002).
Figura 2. Sequência de PDI
Fonte: Scuri (2002).
23
2.2.1 Análise dos Processos de PDI
Os processos de PDI são divididos em: análise quantitativa e qualitativa. Técnicas de
análise quantitativas e qualitativas são utilizadas para caracterizar a forma dos objetos nas
imagens (Oliveira, 2013).
Análise quantitativa é constituída por Extração de Atributos, Classificação e
Reconhecimento. Já a análise qualitativa é constituída por Captura ou Digitalização,
Restauração ou Realce e Segmentação.
Dentre os processos citados acima, somente os que percentem ao universo da solução
proposta neste trabalho são detalhados nas próximas subseções.
2.2.2.1
Extração de Atributos
Segundo Oliveira (2013), extração de atributos é um processo usualmente associado à
análise das regiões de uma imagem. Extrair características importantes de uma imagem
evidencia diferenças e similaridades entre os objetos.
Em PDI, para representar uma região tem-se em duas opções: representação de sua
fronteira; ou seu interior em termos de pixels que compõem a região. Ao classificar as
regiões, as informações contextuais e geométricas podem ser importantes para identificar as
regiões que representam uma determinada classe (Oliveira, 2013).
2.2.2.2
Classificação
O objetivo da classificação de imagens é particionar a imagem em classes definidas
significativas à aplicação. O processo de classificação pode ser não supervisionado e
supervisionado (Nishida, 2013).

Classificação não Supervisionada: realiza uma busca automática de grupos de
valores homogêneos na imagem, enquanto que na fase supervisionada o usuário
realiza o trabalho de encontrar os grupos e as categorias de interesse (Mather,
1999).
Quanto maior a heterogeneidade das amostras nos resultados da busca
automática tem-se mais certeza que as classes encontradas serão representadas
de maneira correta.
Após os pixels das classes serem encontradas, são
24
submetidos a algoritmos de agrupamento, que tem como objetivo determinar o
agregamento natural dos dados (Envi, 2013);

Classificação Supervisionada: baseia-se na disponibilização prévia de
amostras, que foram identificadas na imagem, para cada classe de interesse
(Mather, 1999). Conforme Envi (2013) utiliza-se de algoritmos para
determinar os pixels que representam valores para uma determinada classe.
Uma etapa necessária na classificação é definir as classes nas quais a imagem pode ser
dividida, por exemplo, água, floresta, pasto entre outros (Envi, 2013).
Exemplos de classificação utilizada no contexto deste trabalho, em imagens digitais:
2.2.2.3

Cabelo;

Rosto;

Fundo da imagem.
Segmentação
Segmentação é obter, a partir de uma imagem digitalizada, um conjunto de primitivas
ou segmentos significativos que possuem
a informação semântica relativa à imagem de
origem (Facon, 2002).
O processo de segmentação consiste em uma divisão ou separação de uma imagem em
regiões de atributos similares. Esses atributos podem ser, por exemplo, amplitude e a
luminância, que é uma medida de intensidade de uma luz refletida (LABCOM, 2013).
Um dos passos da análise da imagem é a identificação dos objetos que correspondem a
linhas ou regiões, grupos de pontos conectados (LABCOM, 2013).
Para extrair uma determinada região ou dividir, particionar a imagem em conjuntos de
regiões distintas, utiliza-se detecção de regiões. Uma região em uma imagem é um conjunto
de pontos interligados entre si. As regiões que se deseja chegar são chamadas de homogêneas,
pois apresentam alguma propriedade local constante em toda a sua extensão (LABCOM,
2013).
25
Os métodos estudados para realização da segmentação são:

Crescimento de Regiões: no crescimento de regiões, a imagem é percorrida de
cima pra baixo e da esquerda para direita. Cada ponto x e y são comparados
com seus vizinhos anteriores, já rotulados, e então adicionados à região de um
dos vizinhos (LABCOM, 2013);

Divisão e Fusão: o método de divisão e fusão realiza a manipulação a partição
através de divisões e fusões de regiões até obter a partição esperada
(LABCOM, 2013);

Classificação de Pontos: Na segmentação por classificação de pontos é uma
atribuição de uma classe a cada ponto da imagem. Escolhe-se uma classe para
cada função de propriedade do ponto da imagem. Nas propriedades das classes
que podem ser usadas são: nível de cinza e as medidas de propriedades locais,
por exemplo, textura (LABCOM, 2013).
Depois de representados os pontos da imagem, existem duas maneiras de rotular os
pontos da imagem: classificação supervisionada e classificação não supervisionada, conforme
citado na seção Análise dos Processos de PDI deste trabalho (LABCOM, 2013).
O uso da segmentação utilizada neste projeto, é na identificação e remoção do cabelo
na imagem digital, que é a técnica de Threshold em HSV, explicado na seção Técnica de
Threshold. A segmentação pela distância HSV, conforme detalhado na seção Cálculo de
Distância Entre Duas Cores em HSV, pode ser classificada através do encontro e divisão dos
pixels que são cabelo, separando as regiões de interesse que o algoritmo de Threshold em
HSV utiliza como base posteriormente.
2.2.2 Definição e Conceitos de Imagem
Imagem digital é composta por uma matriz de pixels, onde cada pixel representa um
valor. A matriz normalmente é quadrada, conforme Figura 3 (d), gerando uma grade regular
devido sua amostragem uniformemente espaçada. Pixel é o menor elemento que forma uma
imagem, sendo um conjunto de pixels que formam uma imagem (Scuri, 2002).
26
Figura 3. Processo de Discretização de uma Imagem
Fonte: Scuri (2002).
2.2.2.1
Modelo de Representação de Cor RGB
Para ser visualizada uma imagem digital no computador, é necessário que as cores
presentes nesta imagem sejam representadas através de um padrão de cor, como o padrão
RGB (red, green e blue). Este foi o primeiro padrão baseado nos conceitos de RGB onde
todas as cores formadas através do processo aditivo das 3 cores primárias, são elas: vermelho
(Red), verde (Green) e azul (Blue), como demonstrado na Figura 4, sendo que foi estabelecido
em 1931 pelo comitê CIE (Comission Internacionale de l'Éclairag). Chamado de CIE-RGB,
pois define as cores primárias do emissor como sendo três cores espectrais (Scuri, 2002).
27
Figura 4. Representação de um cubo com as cores do modelo RGB
Fonte: Scuri (2002).
Conforme mostrado na Figura 4, são colocadas três luzes monocromáticas, vermelho,
verde e azul baseadas nas cores primárias, através de um mecanismo que possa variar a
intensidade de cada uma delas (Scuri, 2002).
A imagem apresentada na Figura 5 foi originalmente definida para o sistema CIERGB. Com isso é possível identificar uma série de propriedades referentes à cor,
demonstrando as cores espectrais (Scuri, 2002).
Figura 5. Detalhes do Diagrama de Cromaticidade
Fonte: Scuri (2002).
28
No centro da Figura 5, é possível visualizar a luz branca, e a partir dela podem ser
geradas outras cores, como por exemplo, juntar a cor azul e verde, resultando em uma cor
diferente. No sistema RGB utiliza-se um espaço de cores para referenciá-las, contendo outras
modalidades como matiz e saturação. Matiz é uma das três propriedades de cor que permite
classificar e distinguir uma cor de outra através das três cores RGB, e saturação especifica a
qualidade de um matiz (Scuri, 2002).
Scuri (2002) diz que, no começo dos anos 40 MacAdam realizou algumas experiências
e descobriu que pequenas variações na cor não são detectadas pelo olho humano, ajudando ao
CIE criar sistemas de cores uniformes, facilitando a detecção pelo olho humano (Scuri, 2002).
Ao ser visualizado uma imagem digital, esta pode sofrer alterações na resolução da
imagem, dependendo da resolução do monitor. Esta resolução é chamada ponto por polegada
(PPI – pixels per inch), com isso a dimensão dos pixels é alterada, de acordo com sua
resolução (Scuri, 2002).
Após uma imagem ser criada, esta é armazenada na memória do computador, como
uma sequência de bytes, ou seja, vários bits, onde um bit vale zero ou um. Portanto, quanto
maior o número de pixels, maior será o tamanho da imagem. O tamanho em bits de cada pixel
vai depender do sistema de cor de bits que é usado para representação de cada componente.
Se a imagem é monocromática, ou seja, possui tons de uma única cor, terá apenas um
componente, porém se for colorida no sistema RGB, terá três componentes (Scuri, 2002).
Em sistemas de processamento de imagens, é muito comum tratar imagens com
números inteiros com 32 bits incluindo valores negativos, ou até mesmo valores com várias
casas decimais de precisão (Scuri, 2002).
Quando se fala em oito bits, significa dois na oitava, equivalente a 256 possiblidades.
Sendo assim, se tiver três componentes, como no sistema RGB, será dois na oitava vezes três,
totalizando em dois na vinte e quatro, sendo equivalente a 16 milhões de cores possíveis.
Porém, é pouco provável que uma imagem utilize todas as cores disponíveis ao mesmo tempo
(Scuri, 2002). A Figura 6 demonstra o efeito de reduzir o número total de cores e a resolução
em uma imagem.
29
Figura 6. A Mesma Imagem em Diferentes Resoluções e Número de Cores
Fonte: Scuri (2002).
2.2.2.2
Modelo de Representação de Cor HSV
HSV ou Hue Saturarion e Value diz respeito a matiz, saturação e valor de intensidade
de cada cor, podendo ser descrita como um cone. Matiz permite classificar e distinguir uma
cor de outra através de termos como vermelho, verde, azul etc., saturação refere-se à
intensidade da matiz e valor de intensidade representa o brilho na imagem, como demonstrado
na Figura 7 (GEORGIEVA, 2005).
O espaço de cor HSV, assim como o RGB, é um espaço de cor que depende do
dispositivo, ou seja, a cor que se vê no monitor depende das configurações do mesmo,
podendo haver diferenças entre uma mesma imagem sendo exibida em dispositivos diferentes
(HSV, 2013).
30
Figura 7. Modelo de espaço HSV
Fonte: HSV (2013).
Um dos primeiros sistemas de cores baseado em coordenadas HSV foi o de Munsell,
definindo termos como (HSV, 2013):

Matiz: qualidade pela qual podemos distinguir uma família da cor do outro,
como o vermelho, amarelo ou verde;

Saturação: é a qualidade da cor, podendo distinguir uma cor forte da cor fraca,
ou até a intensidade de uma cor;

Valor de intensidade: é a qualidade pela qual pode-se distinguir uma cor clara
de uma escura.
Os valores em RGB são utilizados como vetores no espaço cartesiano de [0,255]
enquanto os valores do modelo HSV são em graus no espaço circular: [0,360], sendo que
[0,60] são vermelhos, [61,120] amarelos, [121, 180] verdes, [181, 240] cianos, [241, 300]
azuis e [301, 360] são cores magentas (ALVES, 2010).
31
2.2.3 Operações Passíveis de Serem Aplicadas à Imagem
Após a imagem ser digitalizada ela pode sofrer operações como pré-processamento,
segmentação, representação e reconhecimento, obtendo uma nova imagem de saída. Nesta
seção são abordados conceitos de operações que podem ser aplicáveis na imagem.
2.2.3.1
Operações Locais ou de Vizinhança
Operações locais utilizam de conjuntos vizinhos de pixels, resultando em um pixel
como demonstrado na Figura 8. Citando um exemplo onde n é três, cada pixel da vizinhança
3x3 do pixel na imagem original deve ser multiplicado por um valor, sendo esses valores
somados e gerando um novo valor para o mesmo pixel na imagem resultante. Esses valores
que são utilizados como ponderadores da vizinhança podem igualmente ser armazenados em
uma matriz, chamada de kernel de convolução (Scuri, 2002).
Figura 8. Exemplo de uma operação local em uma área em torno do pixel
Fonte: GEOMETRIA FRACTAL (2013).
As operações morfológicas podem ser consideradas como um conjunto de operações
locais. Sendo muito utilizadas por sistemas de processamento de imagens na etapa de
segmentação. Contudo, é muito semelhante à kernel de convolução, pois utilizam operações
lógicas, como por exemplo, AND e OR (Scuri, 2002).
32
2.2.3.2
Operações Pontuais
Operações pontais são operações onde um pixel de uma imagem resultante depende do
mesmo pixel na imagem original. O resultado esperado é a cor do pixel, por isso muitas das
operações pontuais são operações que alteram características de cor e luminância, como por
exemplo: brilho, contraste, nível de branco e nível de preto e saturação (Scuri, 2002).
Figura 9. Operação Pontual
Fonte: Operações em Imagens (2013).
As operações pontuais podem ser visualizadas como um mapeamento de pixels da
imagem original para a imagem processada, como demonstrada na Figura 9. Sendo facilmente
representado em um gráfico que relaciona as tonalidades na imagem original com as
tonalidades da imagem processada. Essas operações pontuais citadas acima envolvem apenas
uma imagem original, chamadas de unárias. Porém operações que utilizam mais de uma
imagem original se chamam binárias, ternárias e assim por diante. As operações binárias mais
comuns são de soma, subtração ou divisão de duas ou mais imagens (Scuri, 2002).
O processamento de uma operação pontual precisa levar em consideração dados
globais da imagem, como por exemplo, o histograma. São operações que alteram o nível de
cinza de um pixel (PROCESSAMENTO DE IMAGENS, 2013).
2.2.4 Técnicas de Processamento Digital de Imagem
Nesta etapa são abordadas técnicas de PDI que são relevantes ao desenvolvimento
deste trabalho.
33
2.2.4.1 Técnica de Segmentação por Threshold
A técnica de Threshold ou limiarização tem como objetivo separar regiões de uma
imagem. É o método de segmentação mais utilizado e o mais simples de ser implementado.
Este algoritmo tem como função limiar objetos de interesse usando apenas valor limite, que é
estimado com base em estatística ou heurísticas de atributos na imagem (SOM, 2011).
O método de Threshold envolve iteração em todos os possíveis valores de
limirialização e realiza cálculos, como por exemplo, de distância menor entre duas cores, com
o objetivo de identificar cores de interesse (SOM, 2011).
Quando há iluminação na imagem, a limiarização pode sofrer alterações que podem
eventualmente eliminar regiões de interesse, naturalmente quando é para uma definição de um
limiar global (FILHO, 1999).
No contexto deste trabalho, o algoritmo de Threshold em HSV é utilizado para realizar
uma busca na imagem para encontrar valores de cor de pixeis que se encontrem dentro de um
limite mínimo e máximo de cores. Estes valores limitantes são obtidos a partir de uma região
de cabelo selecionado pelo usuário, que são utilizados durante a fase de cálculo de distância
entre duas cores para determinar se uma determinada cor se encontra dentro ou fora do
intervalo considerado pelo Threshold. O algoritmo de cálculo da distância entre duas cores
está detalhado na seção Cálculo de Distância Entre Duas Cores em HSV.
Como apresentado na Figura 11, possui um retângulo vermelho na imagem, onde o
usuário posicionou o retângulo em uma região de cabelo, que será utilizado pelo algoritmo de
Threshold em HSV, com o objetivo de encontrar os valores limitantes.
A Figura 10 demonstra um pseudo-código de implementação que encontra os valores
limitantes e utiliza o método distanceHsv para realizar os cálculos de distância, que são
utilizados para identificar os dois pixeis que possuem a cor mais próxima do preto e do
branco, respectivamente, cor mínimo e cor máximo, através da região do cabelo selecionado
pelo
usuário.
Na
saída
do
pseudo-código,
as
variáveis
minMaskColorBlack
e
maxMaskColorWrite são identificadas respectivamente como cor mínimo e cor máximo
dentre os valores limitantes.
34
As principais variáveis utilizadas pelo pseudo-código da Figura 10 são:

color: pixel atual que está sendo verificado da região do cabelo selecionado
pelo usuário;

colorBlack: cor preta definida no modelo HSV;

colorWrite: cor branca definida no modelo HSV;

distanceBlack: distância entre o pixel atual da cor preta no modelo HSV;

distanceWrite: distância entre o pixel atual da cor branca no modelo HSV;

minMaskColorBlack: cor mínimo da região do cabelo selecionado pelo
usuário;

maxMaskColorWrite: cor máximo da região do cabelo selecionado pelo
usuário.
Figura 10. Pseudo-código para encontrar os valores limitantes.
A imagem de saída do algoritmo de Threshold em HSV é uma imagem binária,
reduzindo a complexidade dos dados e simplificando o processo de reconhecimento e
classificação (AL-AMRI, 2013).
35
Figura 11. Imagem segmentada pelo algoritmo de Threshold em
HSV.
A técnica de Threshold em HSV é utilizada neste trabalho para segmentar regiões do
cabelo. Como mostra a Figura 11, é realizado a segmentação de uma imagem através do
algoritmo de Threshold em HSV.
2.2.4.2 Conversão de Modelo RGB Para HSV
A conversão do modelo RGB para HSV neste trabalho é necessário para realizar o
cálculo de distância de cores através do sistema HSV, pois o sistema RGB não é adequado
para cálculo de similaridade de cores, por exemplo, ao escolher uma cor qualquer e tentar
isolar suas similaridades numa região, não tem-se a garantia que as cores vizinhas sejam
similares, podendo serem, visualmente, diferentes (VILLAMIL, 2002).
Apesar da transformação do modelo RGB para HSV não ser linear, a criação do
algoritmo de transformação é relativamente simples. Do ponto de vista humano, a
representação HSV é mais apropriada do que a representação no espaço RGB, porque a cor é
definida pelas grandezas que compõem o modelo, que coincidem com a forma com que o
sistema visual humano entende a cor e suas características de similaridade e proximidade
HSV (ALVES, 2010).
36
2.2.4.3 Cálculo de Distância Entre Duas Cores em HSV
O cálculo de distância é utilizado neste trabalho para executar o algoritmo de
Threshold em HSV, onde são encontradas as regiões de interesse, que são os cabelos. A seção
Conversão de Modelo RGB para HSV explica porque o cálculo de distância entre duas cores é
necessário ser no modelo HSV, e não no modelo RGB.
O cálculo da distância é realizado pela seguinte equação:
√
Equação 1. Equação do cálculo de distância entre cores do modelo HSV.
Como apresenta a Equação 1, a equação tem como objetivo calcular a distância entre
duas cores do modelo HSV, recebendo como parâmetros cor 1 e cor 2 para realizar o cálculo
de distância, que será utilizado pelo algoritmo de Threshold em HSV.
As variáveis apresentadas na Equação 1 possuem as seguintes descrições:

hdiff: representa o menor valor da matiz entre as duas cores que estão sendo
comparadas;

corS1: valor de saturação da cor 1;

corS2: valor de saturação da cor 2;

corV1: valor do brilho da cor 1;

corV2: valor do brilho da cor 2.
Equação 2. Equação que identifica se é região de cabelo através do modelo HSV.
A Equação 2 apresenta o cálculo que verifica se o pixel atual que está sendo analisado
pelo Threshold em HSV pertence ao intervalo de regiões de cabelo, como detalhado na seção
Técnica de Segmentação por Threshold.
37
Seguem as descrições das variáveis da Equação 2:

VL1: valor limitante 1 encontrado a partir de uma região de cabelo selecionado
pelo usuário;

VL2: valor limitante 2 encontrado a partir de uma região de cabelo selecionado
pelo usuário;

PA: pixel atual para análise se é região de cabelo.
Ao percorrer uma imagem, cada pixel é definido como região de cabelo se a soma da
distância entre VL1 e PA mais VL2 e PA é menor que a soma da distância entre VL1 e VL2.
2.2.4.4 Técnica de Chroma Key
Esta é uma técnica de PDI cujo objetivo é inserir uma imagem sobre outra através de
anulação de uma cor padrão, como por exemplo, o branco (XAVIER, 2011).
Antigamente para a utilização da técnica de chroma key eram necessários as cores
básicas do RGB. Porém com a tecnologia atual, esse recorte pode ser executado por qualquer
cor, mas para que possa alcançar um resultado melhor é preciso utilizar como cor chave as
cores azul ou verde (ANDRADE, 2013).
Na ferramenta proposta utiliza-se a cor branca como cor chave. O algoritmo de
chroma key é aplicado para a composição da imagem gerada pela segmentação para remoção
do cabelo atual com a imagem que contém o novo corte selecionado, gerando a imagem final
da simulação. Utiliza-se o modelo RGB para a execução do algoritmo de chroma key.
2.2.4.5 Técnica XOR
A técnica XOR é uma operação lógica onde a saída será verdade se uma entrada for
diferente da outra entrada, havendo apenas duas entradas. A Figura 12 mostra os símbolos e a
tabela verdade para a operação lógica XOR. Este tipo de técnica é frequentemente utilizado
em PDI, onde uma imagem pode passar por cima da outra, sendo que a imagem de trás não é
perdida (Gomes, 2013).
A técnica de Xor é utilizada no momento em que o novo corte de cabelo é movido
pelo usuário, alterando seus valores de localização x e y.
38
Figura 12. Operação Lógica XOR
Fonte: Gomes (2013).
2.2.4.6 Posicionamento do Novo Corte de Cabelo
Com a utilização de métodos nativos do Java é possível alterar a posição de uma
imagem. A alteração da posição da imagem é utilizada neste trabalho no novo corte de cabelo
selecionado pelo usuário, e é posicionado automaticamente em relação ao cabelo e rosto da
imagem original do usuário que está sendo segmentada. Na seção Detalhes de
Implementação, é apresentado parte da implementação do posicionamento do novo corte de
cabelo.
2.2.4.7 Redimensionamento do Novo Corte de Cabelo
Nesta seção é apresentada a técnica de escala em imagens que auxilia no
redimensionamento do novo corte de cabelo na imagem da pessoa, melhorando em casos que
o novo corte de cabelo é maior ou menor que o formato do rosto.
39
Figura 13. Redimensionamento de imagem usando
transformação de redução de escala
Fonte: JAVA IMAGE SCALING (2013).
A Figura 13 visualiza uma imagem sendo redimensionada em tempo real, que utiliza
transformações de escala em imagens. As transformações de escala em imagens utilizam-se
dos conceitos de SubSampling e SuperSampling. SubSampling é utilizado para compressão
da imagem. A maioria dos métodos SubSampling são utilizados para operações de buscar
pixels vizinhos. Como a compressão de imagem pode haver distorções, pode ser eliminado
essas distorções por técnicas de SubSampling (Dumitras, 2013).
SuperSampling é uma técnica de suavização da imagem, por exemplo, após ser
redimensionada a imagem, a imagem fica com as bordas recortadas, que são chamadas de
aliasing. Então é realizada a técnica de Anti-Aliasing, que simplesmente conserta essas
bordas recortadas. SuperSampling é uma destas técnicas de suavização da imagem, pois
enquanto a imagem sofre alterações, é necessário corrigi-la (Beetz, 2013).
40
3 PROJETO E DESENVOLVIMENTO
O projeto foi desenvolvido com base nos estudos descritos na seção “Fundamentação
Teórica”, que contribuiu com as definições de técnicas de PDI e os resultados obtidos através
do algoritmo de detecção de cabelo, descritos na seção Resultados.
O desenvolvimento resultou na criação de técnicas de PDI, como por exemplo,
carregar a imagem enviada para a simulação, segmentar a região do cabelo na imagem
enviada, na disponibilidade da utilização de redimensionamento e posicionamento do novo
corte selecionado e a junção do novo corte selecionado com a imagem segmentada,
finalizando a simulação.
No simulador desenvolvido, a interface gráfica permite a visualização da imagem
enviada pelo usuário e de cortes de cabelo disponibilizados pelo simulador, cabendo ao
usuário iniciar o processo de segmentação para o recorte do cabelo atual, bem como a escolha
do novo corte, ajustando seu posicionamento à imagem segmentada e salvando a imagem
final da combinação quando estiver satisfeito com o resultado obtido.
3.2 ATORES
O único ator do sistema é o usuário, o qual possui as seguintes ações no sistema:

Enviar foto: envia a foto para o simulador;

Segmentar imagem: inicia o algoritmo de Threshold em HSV para
segmentação do cabelo, que remove o cabelo substituindo pela cor branca;

Escolha do novo corte: o simulador carrega o novo corte escolhido mais
próximo da imagem da pessoa;

Posicionamento e redimensiomamento do novo corte: o usuário tem a opção de
posicionar e redimensionar o novo corte, alterando conforme necessidade;

Finalizar a simulação: encerra a simulação gerando a imagem final.
41
3.3 ANÁLISE DE REQUISITOS
Nesta etapa são abordados os requisitos funcionais, não funcionais e regras de
negócios do sistema proposto.
3.3.1 Requisitos Funcionais
Os requisitos funcionais descrevem quais funcionalidades que a ferramenta oferece,
conforme apresentadas a seguir:

RF01: O sistema deverá permitir a remoção de corte de cabelo e substituir com
a imagem de fundo;

RF02: O sistema deverá permitir ao usuário posicionar e redimensionar o novo
corte de cabelo;

RF03: O sistema deverá permitir ao usuário simular em tempo real o novo
corte de cabelo;

RF04: O sistema deverá permitir ao usuário salvar as simulações realizadas;

RF05: O sistema deverá permitir o salvamento de novos cortes a partir da
imagem do cliente.
3.3.2 Requisitos Não Funcionais
Os requisitos não funcionais estão relacionados ao desempenho, usabilidade,
segurança, disponibilidade entre outros. A seguir serão apresentados:

RNF01: O rosto da pessoa na imagem deve estar centralizado;

RNF02: O computador desktop deve ter instalado o banco de dados SQLite
versão 3.6.20.1;

RNF03: O sistema deve conter a versão 7 do Java;

RNF04: O Sistema Operacional deve ser Windows 7 ou superior;

RNF05: A resolução da tela do computador deve estar entre 1024x768 e
1440x900;
42

RNF06: Para envio da foto, deve ser uma imagem que contenha o rosto da
pessoa;

RNF07: A cor de fundo da imagem deve ser diferente da cor do cabelo;

RNF08: A qualidade da imagem deverá ser no mínimo 300x300 e orientação
paisagem;

RNF09: O sistema deve ser implantado em plataforma Desktop;

RNF10: A foto da pessoa deve estar centralizada na imagem digital;

RFN11: A nova imagem gerada pela simulação deve ser no formato png;

RNF12: O banco de dados deverá ser local e instalado em cada computador
que for utilizar o simulador;

RNF13: O cabelo da pessoa não pode tampar o rosto nem a testa para enviar a
imagem ao simulador;

RNF14: O computador deve ter no mínimo 1GB de memória e processador
1.6.
3.3.3 Regras de Negócio
As regras de negócios definem regras que devem ser cumpridas pelo sistema a fim de
atender um objetivo do negócio. Serão apresentadas a seguir:

RN01: Uma simulação só se diz completa quando o usuário clicar em finalizar
simulação;

RN02: Uma simulação somente inicia se houver uma imagem enviada pelo
usuário;

RN03: A remoção do cabelo só inicia se o usuário clicar em Segmentar
imagem;

RN04: O usuário deve escolher um novo corte para realizar a simulação;
43

RN05: Deve existir pelo menos um corte pré-definido para que a simulação
possa ser realizada;

RN06: O sistema deverá permitir ao usuário enviar uma foto para o sistema;

RN07: O sistema deverá permitir ao usuário escolher o novo corte a partir de
uma lista de cortes pré-definidos;

RN08: O sistema deverá permitir ao usuário arrastar um quadrado vermelho na
imagem enviada que seja parte da região do cabelo.
3.3.4 Diagrama de Casos de Uso
O diagrama de casos de uso representado na Figura 14 apresenta as funções do ator
Usuário no projeto.
As funcionalidades do ator administrador foram projetadas porém não implementadas,
conforme seção Projeto e Desenvolvimento.
Figura 14. UC01 - Diagrama de Casos de Uso do Usuário e Administrador.
44
Conforme a Figura 14, apresenta-se a seguir os cenários do Diagrama de Casos de Uso
do Usuário (UC1):
UC1.01: Enviar imagem do rosto da pessoa ao simulador de corte de cabelo
Descrição: O usuário envia uma foto que contenha o rosto dele na imagem para o
simulador.
Condições: nenhuma.
Cenário Principal:
1. O usuário seleciona a imagem para a simulação.
2. O sistema exibe a imagem escolhida e fornece diferentes cortes de cabelo.
Erros {Exceção}
Imagem inválida.
UC1.02: Posicionar retângulo vermelho em uma região do cabelo
Descrição: O usuário posiciona o retângulo vermelho em uma região do cabelo.
Condições: Enviar a foto ao simulador.
Cenário Principal:
1. O usuário posiciona o retângulo vermelho.
2. O sistema exibe a imagem atualizada com o retângulo vermelho.
Erros {Exceção}
Nenhum.
UC1.03: Iniciar processo de segmentação do cabelo
Descrição: O usuário inicia o algoritmo de segmentação de cabelo.
45
Condições: Posicionar o retângulo vermelho em uma região do cabelo.
Cenário Principal:
1. O usuário inicia o algoritmo de segmentação de cabelo através do botão de iniciar
segmentação.
2. O sistema inicia o algoritmo de segmentação do cabelo.
Erros {Exceção}
Ocorreu um erro inesperado ao realizar a segmentação do cabelo.
UC1.04: Escolher novo corte de cabelo
Descrição: Usuário escolhe novo corte de cabelo.
Condições: Precisa ter uma imagem ativa, ou seja, a imagem atual a ser modificada,
que foi enviada pelo usuário.
Cenário Principal:
1. O usuário seleciona o novo corte de cabelo.
2. O sistema coloca o novo corte selecionado próximo ao rosto da pessoa.
Erros {Exceção}
Nenhum.
UC1.05: Realizar ajustes no novo corte de cabelo
Descrição: O usuário tem opção de realizar ajustes no novo corte escolhido, como por
exemplo, posicionamento e redimensionamento.
Condições: Ter escolhido o novo corte de cabelo.
Cenário Principal:
1. O usuário altera a posição ou o tamanho do novo corte escolhido, se necessário.
2. O sistema altera de acordo com a escolha do usuário.
46
Erros {Exceção}
Nenhum.
UC1.06: Finalizar simulação com o novo corte escolhido
Descrição: O usuário precisa clicar no botão de finalizar simulação para encerrar a
simulação.
Condições: Ter definido o novo corte de cabelo.
Cenário Principal:
1. O usuário clica no botão de finalizar simulação.
2. O sistema informa ao usuário que a simulação foi realizada com sucesso e visualiza
a simulação final.
Erros {Exceção}
Erro ao salvar a simulação.
3.4 DETALHES DE IMPLEMENTAÇÃO
A implementação da ferramenta proposta utiliza a linguagem de programação Java,
seguido da utilização de bibliotecas nativas do Java, onde é possível criar os métodos de
posicionamento e redimensionamento do corte de cabelo selecionado.
A funcionalidade de detecção de rosto utiliza o método cvHaarDetectObjects do
OpenCV para executar o script haarcascade_frontalface_default.xml da Intel, liberada para
uso acadêmico, conforme licença que contém no código utilizado do algoritmo
(HAARCASCADE, 2013).
Na detecção de cabelo a técnica de PDI utilizada é a Threshold em HSV, cuja criação
da técnica utiliza-se os métodos nativos do Java. Para o cálculo de distância de cores do
modelo HSV, utiliza-se a classe CvSeq do OpenCV, como armazenamento dos intervalos de
cores, encontrados pelo algoritmo de Threshold. A remoção de cabelo é feito por métodos
nativos do Java, que percorre toda a imagem em busca da máscara binária gerada pelo
Threshold em HSV, que é executado em busca de regiões de interesse que sejam o cabelo.
47
Figura 15. Pseudo-algoritmo de detecão de cabelo utilizando Threshold em HSV.
A Figura 15 visualiza o principal método responsável pela execução do algoritmo de
Threshold em HSV, com as chamadas de métodos necessários para a segmentação da
imagem, desde o início da segmentação até o retorno da imagem segmentada.
Na linha 1 da Figura 15, é o método principal de segmentação do cabelo que será
retornado o caminho da imagem segmentada, onde possuem os seguintes parâmetros:

subImagePath: região de cabelo selecionado pelo usuário (retângulo vermelho
utilizado na ferramenta), que será encontrado o intervalo de cores utilizado
pelo algoritmo de Threshold em HSV;

originImagePath: é o caminho de onde está salvo a imagem original que será
segmentada.
Na linha 3 da Figura 15, são encontrados os valores limitantes a partir da região do
retângulo vermelho selecionado pelo usuário.
A linha 6 da Figura 15, utiliza-se o algoritmo de detecção de rosto para identificar se o
pixel atual, da imagem a ser segmentada, é região de rosto, caso seja região de rosto o
algoritmo de Threshold em HSV ignora o pixel atual.
Já na linha 10 da Figura 15, utiliza-se o método de cálculo de distância para verificar
se o pixel atual, da imagem a ser segmentada, se encaixa no intervalo de cores, região de
48
cabelo selecionado pelo usuário; caso condição verdadeira, o pixel é identificado como região
de cabelo e é atribuído cor branca, como demonstra a linha 11 da Figura 15.
A linha 15 da Figura 15, tem como objetivo remover o cabelo que foi identificado pelo
algoritmo de Threshold em HSV, atribuindo a cor que foi definida anteiormente, na linha 11.
No final do procedimento de remoção do cabelo, o método execute retorna o caminho da
imagem segmentada que já está salva em uma pasta temporária, como demonstra a linha 17.
Após isso, a ferramenta busca a imagem salva e visualiza para o usuário a imagem
segmentada.
Figura 16. Pseudo-algoritmo de redimensionamento e posicionamento de corte de
cabelo.
No momento que o usuário arrasta ou altera o tamanho do novo corte selecionado,
utiliza-se de métodos nativos do Java para o redimensionamento e posicionamento do novo
corte selecionado, sendo os métodos: mouseMoved e mouseDragged, como demonstra uma
parte da implementação na Figura 16, como pseudo-algoritmo.
Na Figura 16, os métodos mouseMoved e mouseDragged possuem o parâmetro da
classe MouseEvent, que é o evento disparado através da utilizado do mouse do usuário, que
obtém, por exemplo, a posição x e y do mouse.
49
No método hasFocus, como apresenta a linha 2 da Figura 16, é verificado se o mouse
está com foco no novo corte de cabelo selecionado, então inicia-se a classe ResizableBorder,
responsável por mover a posição x e y do novo corte, como apresenta a linha 3. Em seguida, é
atualizado o cursor do mouse com a nova posição do novo corte, como demonstrado na linha
4.
Já na linha 9 da Figura 16, é o método responsável pelo redimensionamento do novo
corte, que obtém as posições x e y do mouse, como visualizado nas linhas 10 e 11. Nas linhas
13 e 14, obtém-se as posições do mouse que foi pressionado pela primeira vez, sem soltá-lo
ainda, que será utilizado pelo método resize, responsável pelo redimensionamento do novo
corte, como apresentado na linha 17 da Figura 16.
Figura 17. Pseudo-algoritmo da utilização do algoritmo de Chroma Key.
Na linha 1 da Figura 17, é apresentado o método responsável pela técnica de Chroma
Key, utilizada para junção do novo corte com a imagem segmentada, onde são utilizados as
seguintes variáveis:

firstImage: imagem segmentada, contendo a região de fundo, retornada pelo
método de segmentação de cabelo;

secondImage: novo corte de cabelo selecionado pelo usuário;

newImageReturned: imagem de retorno com o resultado final da utilização da
técnica de Chroma Key;
50

red: cor vermelha no modelo RGB do novo corte;

green: cor verde no modelo RGB do novo corte;

blue: cor azul no modelo RGB do novo corte.
No método chromaKey da Figura 17, possui um tratamento de exceção de erros, que
está na linha 2, chamado throws IOException, responsável por retornar erros de tratamento de
imagens, enviado pelo próprio código nativo do Java, enquanto o método é executado.
A linha 4 da Figura 17, é inicializada a variável newImageReturned que armazenará a
imagem retornada e gerada pelo método chromaKey. Nas linhas 6, 7 e 8, é um exemplo que
obtém as cores RGB da imagem do novo corte; neste caso utiliza-se o formato RGB pois
somente na utilização da segmentação de cabelo que é necessário ser no formato HSV, como
demonstra a seção Técnica de Segmentação por Threshold. Com isso, essas cores RGB são
utilizadas pelo método updateNewImageReturned, que é responsável por atualizar a variável
newImageReturned, que retorna a imagem atualizada, como demonstra a linha 13 da Figura
17.
3.5 DIAGRAMA DE CLASSES
O diagrama de classes deste projeto representa todas as interações entre as classes
atribuídas ao projeto, para demonstrar o funcionamento do sistema. Como demonstrado na
Figura 18, as classes necessárias para a criação da ferramenta são: Janela_Principal, Usuario,
Imagem_Captura, Processamento_Imagem, Corte e Imagem_Simulada. As classes possuem
nome, atributos e métodos, detalhando as interações entre elas.
51
Figura 18. Diagrama de Classes.
A classe Janela_Principal é a tela principal do sistema, onde o usuário vai realizar a
simulação; a classe Janela_Principal também tem a funcionalidade de carregar imagem
enviada pelo usuário, visualizar os cortes para o usário e mostrar a simulação final. Já a classe
Usuario é responsável por interação com o sistema. A imagem capturada carrega a imagem
selecionada pelo usuário. A classe Processamento_Imagem possui os métodos mais
importantes do sistema, que são de detecção da região do cabelo, posicionamento e
redimensionamento do novo corte de cabelo e da junção do novo corte com a imagem
segmentada. A classe corte armazena dados do corte selecionado e a Imagem_Simulada é
constituída pela imagem final.
3.6 TÉCNICAS ESCOLHIDAS PARA DETECÇÃO SEMIAUTOMÁTICA
DE CABELO
A técnica para detecção de cabelo que havia sido escolhida durante o TTC I foi o
método proposto por Rousset (2013), apresentado no apêndice Técnica de Rousset deste
trabalho. Durante os estudos realizados em TTC I, acreditou-se que as técnicas de PDI
necessárias para implementar a segmentação proposta pelo método de Rousset existiam
bibliotecas do OpenCV e JavaCV, segundo mencionado por Goossaert (2013).
Porém no TTC II identificou-se que a implementação da técnica de Rousset não era
viável, pois as técnicas de PDI necessárias não estavam disponíveis em OpenCV e havia
pouca documentação para realizar o desenvolvimento da técnica de segmentação proposta no
TTC I.
52
Assumir que tais funcionalidades estavam implementadas de forma satisfatória na
biblioteca OpenCV foi um erro de projeto, que foi mitigado pela proposta de um novo
algoritmo de segmentação e detecção de cabelo, baseado na segmentação por Thresold em
HSV, conforme descrito na seção Técnica de Segmentação por Threshold desta
fundamentação teórica.
Portanto a técnica escolhida é o algoritmo de Threshold em HSV, que tem como
objetivo encontrar regiões que seja o cabelo, substituindo o algoritmo de Rousset proposto em
TTC I.
Para que a segmentação por Threshold em HSV possa ser implementada corretamente,
conta-se com ajuda da seleção de uma parte do cabelo pelo usuário, a fim de identificar uma
média de cores de interesse e encontrar as regiões da imagem que correspondem ao cabelo.
Para melhorar a segmentação do cabelo atual é utilizado o algoritmo de detecção de
rosto,
disponível
pela
Intel
Licence
Agreement,
utilizado
a
partir
do
método
cvHaarDetectObjects do OpenCV (HAARCASCADE, 2013). Este algoritmo, tem como
objetivo encontrar a região do rosto da pessoa na imagem. Tem-se como o principal intuito
com este algoritmo excluir os olhos, as sobrancelhas ou parte do rosto como falsos-positivos
de região de cabelo.
Ao ser finalizado uma simulação, o simulador salva o corte atual, sendo este a parte
segmentada do cabelo da pessoa, e a imagem final da simulação com o novo corte. Essa
imagem final é a combinação da imagem original sem o cabelo e o novo corte selecionado
pelo usuário, que é sobreposto à imagem original segmentada. No processo da combinação da
imagem final utiliza-se a técnica de Chroma Key, descrita na seção Técnica de Chroma Key.
53
4 RESULTADOS
4.3 TESTES E VALIDAÇÃO
O plano de testes e validação detalham os resultados obtidos em termos de qualidade
da segmentação dos cortes de cabelo, visando mostrar os resultados eficazes e ineficazes,
detalhando cada caso.
Para realizar os testes e validações do sistema utilizou-se a ferramenta Netbeans,
sendo esta a ferramenta de desenvolvimento, que possibilitou executar o simulador. Esta etapa
tem como principal objetivo identificar e validar as funcionalidades da ferramenta, como por
exemplo, enviar imagem para simulação, redimensionar e posicionar o novo corte, realizar a
simulação final e avaliação do algoritmo de Threshold em HSV para segmentar as regiões de
cabelo.
4.4 ANÁLISE DA SEGMENTAÇÃO
São apresentados resultados obtidos da realização de testes em imagens com diferentes
tipos de cabelos. O intuito da seleção deste conjunto de imagens é identificar pontos positivos
e negativos do algortimo de segmentação escolhido, o Threshld em HSV.
Para tanto, são apresentados resultados e suas respectivas análises em imagens
contendo quatro tipos de cortes de cabelo:
•
Cabelos escuros longos;
•
Cabelos escuros curtos;
•
Cabelos claros longos;
•
Cabelos claros curtos.
Além das características do cabelo existentes na imagem, o contraste deste com a cor
de fundo também é considerado como variável de teste e análise dos resultados.
Nesta seção são apresentados diferentes critérios de avaliação de acerto na qualidade
da segmentação de cabelo através do algoritmo de Threshold em HSV.
54
Para encontrar a porcentagem aproximada de qualidade na segmentação, propõe-se a
criação de uma baseline obtida através da seleção manual das regiões de cabelo a partir da
imagem enviada. A Figura 19 (b) mostra o resultado da segmentação manual do cabelo em
uma imagem enviada pelo usuário, sendo que a Figura 19 (a) mostra a imagem pintada
manualmente.
Figura 19. Segmentação Manual de cabelo.
Como a Figura 19 (a) demonstra, o cabelo foi manualmente substituido pela cor
vermelha, cuja quantidade de pixeis é calculada utilizando-se o algoritmo de Threshold em
HSV, buscando-se pelo intervalo da cor vermelha selecionada. Com base no resultado final da
contagem de pixeis da segmentação manual, pode-se estabelecer uma baseline para
comparação dos resultados obtidos através da segmentação semiautomática implementada.
A baseline foi criada com ênfase em qualificar a qualidade de acerto na identificação
de regiões de cabelo do algoritmo de Threshold em HSV. Foi criado e separado a baseline em
porcentagem e tipos de qualidade, para determinar os diferentes resultados do algoritmo de
Threshold em HSV, tornando possível analisar e obter médias de qualidade do algoritmo.
Portanto os critérios de avaliação de qualidade do algoritmo de Threshold em HSV são
caracterizados conforme a seguir:
55

Qualidade ótima: superior a 97% de regiões de cabelos encontrados;

Qualidade boa: superior a 90% de regiões de cabelos encontrados;

Qualidade média: superior a 70% de regiões de cabelos encontrados;

Qualidade ruim: superior ou igual a 50% de regiões de cabelos encontrados;

Qualidade péssima: inferior a 50% de regiões de cabelos encontrados.
A seguir são apresentados os testes, seus resultados e respectivas análises em relação a
qualidade da segmentação.
4.3.1 Cabelos com contraste com fundo e rosto
Na criação manual de uma máscara binária do cabelo, conforme exemplo da Figura
19, foram encontrados 35.200 pixels, com relação à Figura 20. Realizando a simulação com a
imagem original da Figura 20 (a) foram encontrados 29.222 pixels, resultando em uma
segmentação de qualidade média, aproximadamente 83,01%, como demonstra a Tabela 1.
Tabela 1. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV.
Imagem
Quantidade de pixeis encontrados
Baseline da imagem original
35.200
Imagem original
29.222
A Figura 20 (b) demonstra o resultado do algoritmo de Threshold em HSV, com
margem de erro de 52% e com o uso do algoritmo de detecção de rosto, conforme a Figura 20
(a). É possível visualizar que na Figura 20 (a) possui um retângulo vermelho, sendo
necessário que o usuário arraste em cima de um região de cabelo, para iniciar-se o algoritmo
de segmentação de cabelo.
56
Figura 20. Resultado do algoritmo de Threshold em HSV. (a) imagem original, (b) imagem
segmentada.
Como demonstrado na Figura 21 (b), o algoritmo de Threshold em HSV encontrou a
região de interesse que é o cabelo, porém o algoritmo não conseguiu identificar toda região de
cabelo, pois ao passar pelo processo de ignorar regiões que não sejam o cabelo, o algoritmo
de detecção de rosto ignorou também parte que é o cabelo.
A seguir na Figura 21 (a) é apresentada a imagem original com o retângulo
selecionado pelo usuário que indica região de cabelo, e na Figura 21 (b) a imagem
segmentada.
A segmentação manual da Figura 21 (a) estabeleceu uma baseline de 4.735 pixeis de
cabelo, sendo que realizando a simulação com a imagem original foram encontrados 4.180
pixeis, resultando em 88,27% de acerto do algoritmo de Threshold em HSV. Portanto a
qualidade de segmentação é caracterizado como média, ficando próximo de uma qualidade
boa, como demonstra a Tabela 2.
57
Tabela 2. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV.
Imagem
Quantidade de pixeis encontrados
Baseline da imagem original
4.735
Imagem original
4.180
Figura 21. Resultado de Threshold em HSV com cabelo curto. (a) imagem original, (b)
imagem segmentada.
4.3.2 Cabelos sem contraste com fundo ou rosto
A seguir, na Figura 22 (a), é uma imagem que foi alterada manualmente a cor do
fundo, e na Figura 22 (b) é apresentada a imagem segmentada, resultando em 62.010 pixels
encontrados, aproximadamente 57.000 pixels a mais de diferença do que deveria ser. Isso
explica que o algoritmo de Threshold em HSV não consegue distinguir as regiões de cabelo
com regiões de fundo quando são cores similares, conforme a Tabela 3 visualiza.
58
Tabela 3. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV com fundo similar do cabelo.
Imagem
Baseline (imagem com fundo similar da cor
Quantidade de pixeis encontrados
62.010
do cabelo)
Imagem original
4.180
Figura 22. Resultado do algoritmo de Threshold em HSV com cor de fundo similar do cabelo.
(a) imagem original, (b) imagem segmentada.
O resultado obteve uma qualidade péssima, pois identificou-se até a região do rosto
como cabelo, devido a falta de contraste. Nos casos em que a camiseta é parecida com a cor
do cabelo também foi identificado como região de interesse.
No exemplo apresentado da Figura 23 (b) é possível observar que praticamente toda
imagem é definida como região de interesse, isso explica o fato de que a cor do cabelo, a cor
de pele e a roupa que a pessoa está usando na imagem é similar ao fundo da imagem.
Após alterar-se manualmente para a cor vermelha a região de cabelo da Figura 23 (a) e
segmentar a imagem, encontraram-se 45.422 pixels, sendo possível visualizar na Tabela 4. Ao
realizar a segmentação da imagem original, encontraram-se 69.998 pixels, aproximadamente
o dobro de pixels que seria correto.
59
Tabela 4. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV com cores similares do cabelo.
Imagem
Baseline (imagem com fundo similar da cor
Quantidade de pixeis encontrados
45.422
do cabelo)
Imagem original
69.998
Figura 23. Resultado do algoritmo de Threshold em HSV através de cores do cabelo similares
a outras regiões da imagem. (a) imagem original, (b) imagem segmentada.
Alterando manualmente para a cor vermelha a região de cabelo da Figura 24 (a) e
realizada a segmentação, encontraram-se 18.664 pixels. Ao realizar a simulação, foram
encontrados 90.180 pixels, como demonstra a Tabela 5, resultando em uma qualidade
péssima.
60
Tabela 5. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV com cor de fundo similar do cabelo.
Imagem
Baseline (imagem com fundo similar da cor
Quantidade de pixeis encontrados
18.664
do cabelo)
Imagem original
90.180
Figura 24. Resultado do algoritmo de Threshold em HSV com cor de fundo da imagem
similar do cabelo. (a) imagem original, (b) imagem segmentada.
4.4 ANÁLISE DA SEGMENTAÇÃO
A análise da segmentação do algoritmo de Threshold em HSV mostrou que pode ser
utilizado para simular diferentes cortes de cabelo, porém outros resultados mostraram o
contrário, que dependendo da imagem enviada à simulação não é possível realizar uma
segmentação com média, boa ou ótima qualidade.
61
4.4.1 Avaliação da Qualidade do Algoritmo de Threshold em HSV
Após realizar a análise e validação do algoritmo de Threshold em HSV, identificou-se
que o algoritmo segmentou com qualidade média e péssima nos exemplos apresentados neste
projeto, seguindo a baseline criada na sub-seção Análise da Segmentação. As simulações de
qualidade média podem se tornar qualidade ótima no algoritmo, caso as implementações da
seção Trabalhos Futuros sejam criadas, aprimorando na qualidade dos resultados do algoritmo
de Threshold em HSV.
Conclui-se que o algoritmo de Threshold em HSV apresentou confiança nas
simulações realizadas, exceto em alguns casos, como por exemplo, onde a cor do cabelo é
similar com a cor do rosto, como demonstrado nos exemplos da seção Análise da
Segmentação, porque nos casos em que a cor do cabelo seja diferente de outras regiões da
imagem, o algoritmo segmenta a imagem, removendo o cabelo original da pessoa, resultando
em qualidade média.
62
5 CONCLUSÕES
A principal ideia que motivou a criação e desenvolvimento do sistema computacional
que foi contemplado neste trabalho técnico-científico é de criar o simulador de cortes de
cabelo, que auxilie na escolha final de uma pessoa ao trocar seu corte de cabelo.
Este trabalho iniciou por pesquisas de técnicas de PDI, definindo etapas de
segmentação do cabelo, a fim de identificar o cabelo na imagem enviada pelo usuário; o
encontro de bibliotecas foi útil no algoritmo de detecção de rosto, redimensionamento e
posicionamento do novo corte escolhido.
A grande dificuldade e o maior problema deste trabalho é a organização e o
funcionamento correto dos métodos de OpenCV, que deveriam ser executados na utilização
do algoritmo de detecção de cabelos. Houveram muitos problemas com a biblioteca OpenCV,
pouco conhecimento da biblioteca prejudicou no desenvolvimento.
O método de Rousset (2013) proposto em TTC I foi estudado e detalhado na seção
Apêndice A, que foi iniciado a implementação efetiva em TTC II, cujo métodos de OpenCV
citados no artigo não retornavam os resultados esperados. Após vários testes em TTC II,
tornou-se inviável permanecer com a proposta de Rousset, havendo a necessidade de alteração
de escopo na técnica de segmentação de cabelo.
Com a alteração do escopo do projeto, decidiu-se implementar uma nova técnica de
PDI para a detecção de cabelo, que é o algoritmo de Threshold em HSV, cuja técnica nem
havia sido estudada na fase de TTC I, sendo necessário buscá-la o mais rápido possível para
iniciar o desenvolvimento com a nova técnica de detecção de cabelo na fase de TTC II.
Após a implementação da nova técnica de detecção de cabelo, foram executados os
testes e validações da ferramenta, que forneceram contribuições importantes a este trabalho,
por exemplo, apresentou resultados de qualidade média e péssima, seguindo a baseline
descrita na seção Resultados; resultou também que dependendo da cor do fundo da imagem a
simulação pode não ser o esperado.
A fim de demonstrar o que este trabalho se propôs a fazer, criou-se um protótipo da
ferramenta proposta, que ajudou a utilizar e a trazer um maior conhecimento em técnicas de
PDI, concluindo o projeto e apresentando seus resultados, conforme seção de Resultados. A
63
ferramenta criada facilitou ao usuário na simulação de cortes de cabelo, diminuindo a dúvida
na escolha de um novo corte, como citado na seção Problematização.
Na seção de Trabalhos Futuros foram acrescentados ideias que podem ser
implementadas futuramente.
64
6 TRABALHOS FUTUROS
Concluiu-se após os testes e validações da ferramenta alguns levantamentos que
podem ser sugeridos como trabalhos futuros. Onde deve ser levado em consideração o fato de
que o simulador foi criado de modo modular, ou seja, se for preciso melhorar ou alterar o
algoritmo de detecção de cabelo é preciso alterar somente o método que executa-o e a
ferramenta permancece funcionando, não sendo necessário alterar outras partes do sistema.
6.1 REDIMENSIONAR REGIÃO DE DETECÇÃO DE ROSTO
Ter a opção no simulador de redimensionar manualmente a região de detecção de
rosto na imagem enviada, onde o algoritmo de detecção de rosto pode variar muito de imagem
para imagem, resultando em ignorar regiões que sejam cabelo. Visualiza-se no capítulo
Análise da Segmentação de Resultados as Figuras 23 e 24 com problemas ao definir
exatamente o rosto da pessoa, dificultando na segmentação final. Portanto, pode ser útil esta
opção em casos que o cabelo fique próximo da região do rosto.
É levado em consideração que os olhos da pessoa na Figura 25 (b) foram ignorados
pelo algoritmo de Threshold em HSV, devido a alteração manual a fim de visualizar que se o
redimensionamento de rosto for criado, é possível melhorar a segmentação. O retângulo de
detecção de rosto foi redimensionado, deixando a segmentação com ótima qualidade. Se esta
opção não existisse o retângulo ignoraria partes do cabelo, deixando a segmentação em uma
qualidade ruim.
Substituindo manualmente o cabelo da Figura 25 (a) para a cor vermelha e após
segmentar a imagem, totalizou-se em 200.123 pixels. Ao simular a imagem original da Figura
25 (a) foram encontrados 199.552 pixels, como visualizado na Tabela 6, resultando em
99.71% na qualidade da segmentação, utilizando Theshold em HSV.
65
Tabela 6. Tabela de comparação em quantidade de pixeis encontrados pelo Threshold em
HSV.
Imagem
Quantidade de pixeis encontrados
Baseline
200.123
Imagem original
199.552
Figura 25. Resultado do algoritmo de Threshold em HSV com redimensionamento da região
de detecção do rosto. (a) imagem original, (b) imagem segmentada, (c) resultado final com o
novo corte.
6.2 SEGMENTAR CABELO EM TEMPO REAL AO ALTERAR
PORCENTAGEM DE ERRO
Logo que a porcentagem de erro do simulador for alterada o simulador deve
automaticamente executar a segmentação, ou seja, a segmentação final atualiza em tempo
real. Evitou-se de criar essa alternativa, pois a performance do algoritmo de Threshold em
HSV ainda não é ótima para esse tipo de situação, não retornando resposta em tempo real.
Portanto ao melhorar a performance do algoritmo, torna-se viável criar essa opção.
66
6.3 SUBSTITUIR CABELO REMOVIDO PELA COR DE FUNDO DA
IMAGEM
Há a necessidade de se criar a substituição do cabelo removido por uma cor similar ou
idêntica da cor do fundo da imagem enviada pelo usuário, pois desenvolveu-se que a remoção
do cabelo é substituída por uma cor branca, deixando a simulação final com pouca qualidade.
A solução estudada identifica-se que a utilização da técnica de PDI Chroma Key seja a
melhor alternativa, pois esta técnica substitui através de uma cor de interesse outras partes na
imagem digital, que seria trocar a cor branca da remoção do cabelo por uma cor de interesse.
67
REFERÊNCIAS
AL-AMRI, Saleh Salem; Kalyankar, N.V; SD, Khamitkar. Image segmentation by using
threshod techniques. Disponível em: <http://arxiv.org/ftp/arxiv/papers/1005/1005.4020.pdf>.
Acesso em: 21 set 2013.
ALVES, Dorirley, Rodrigo. Avaliação dos modelos de cores RGB e HSV na segmentação
de curvas de nível em cartas topográficas coloridas. Belo Horizonte: 2010. Disponível em:
<http://www.biblioteca.pucminas.br/teses/EngEletrica_AlvesDR_1.pdf>. Acesso em: 08 out
2013.
ANDRADE, Ândrea Barreto; Sementille, Antonio Carlos. Campus de Bauru. Faculdade de
Ciências Bacharelado em Ciência da Computação – PIBIC/Reitoria. Disponível em:
<http://bit.ly/18qU4oX>. Acesso em: 1 out 2013.
AQUINO, José Milton Ferreira de. Os salões de beleza. Porto Alegre: 2007. Disponível em:
<www.portalbeleza.com.br/index.php?acao=603&id=13&passport=f63a68bc8a01c11f2ca10a
69574c87e3> Acesso em: 2 mar 2013.
GOOSSAERT,
Emmanuel.
CODECAPSULE.
2011.
Disponível
<http://codecapsule.com/2011/12/26/hair-analysis-and-detection-in-facial-picture/>.
em:
Acesso
em 5 jun 2013.
COSMOPOLITAN. Disponível em: <http://www.cosmopolitan.com/hairstyles-beauty/haircare/virtual-celeb-hairstyles>. Acesso em: 22 mar 2013.
DUMITRAS, Adriana; KOSSENTINI, Faouzi. Fast and high performance image
subsampling
using
feedforward
neural
<http://bit.ly/1bOFMkU>. Acesso em 25 abr 2013.
networks.
1999.
Disponível
em:
68
ENVI. Classificação não supervisionada e classificação supervisionada. Disponível em:
<http://www.inele.ufro.cl/apuntes/Teledeteccion_Satelital/Tutorial_ENVI/CapituloF.pdf>.
Acesso em 3 abr 2013.
FACON, Jacques. Paraná. Processamento e análises de imagens. Paraná: 2002. Disponível
em: <www.ppgia.pucpr.br/~facon/CursoProcImagem.pdf>. Acesso em: 6 mar 2013.
FILHO, Ogê Marques; Neto Hugo Vieira. Processamento digital de imagens. 1 ed. Brasport,
1999. 99 p.
FUNDOOHAIRSTYLES. 2011. Disponível em: <http://fundoohairstyles.com>. Acesso em:
22 mar 2013.
GEOMETRIA
FRACTAL.
2009.
Disponível
em:
<http://www2.ic.uff.br/~aconci/Fractais.html>. Acesso em: 23 mar 2013.
GEORGIEVA, Lidiya. 2005. RGB and HSV colour models in colour identification of
digital
traumas
images.
Disponível
em:
<http://ecet.ecs.ru.acad.bg/cst05/Docs/cp/sV/V.12.pdf>. Acesso em: 21 set 2013.
GOMES, Otávio da Fonseca Martins. Processamento e análise de imagens aplicadas à
caracterização automática de materiais. 2001. Disponível em: <http://www.dcmm.pucrio.br/cursos/ipdi/html/ogomesmestrado.pdf>. Acesso em 27 abr 2013.
HAARCASCADE.
Disponível
em:
<http://svn.etv.cx/filedetails.php?repname=returnface&path=%2Ftrunk%2Fhaarcascade_front
alface_default.xml>. Acesso em 1 out 2013.
69
HSV.
Disponível
em:
<http://dcssrv1.oit.uci.edu/~wiedeman/cspace/me/infohsv.html>.
Acesso em: 21 set 2013.
INSTITUTO
GAUS.
Disponível
em:
<http://www.igm.mat.br/aplicativos/index.php?option=com_content&view=article&id=310%
3Amgauss&catid=41%3Aconteudosal&Itemid=38>. Acesso em 10 mai 2013.
MARIECLAIRE. Disponível em: <http://www.marieclaire.com/hair-beauty/trends/virtualhairstyle-makeovers>. Acesso em: 22 mar 2013.
MATHER, P.M. Computer processing of remotely-sensed images: an introduction. 2 ed.
Chichester: John Wiley & Sons, 1999. 292 p.
NISHIDA, Waleska; BASTOS, C. Lia. Classificação de imagens de sensoriamento remoto
utilizando uma rede neural artificial com função de base radial. Disponível em:
<http://marte.dpi.inpe.br/col/sid.inpe.br/deise/1999/02.11.11.58/doc/8_122p.pdf>. Acesso em:
3 mar 2013.
OLIVEIRA, Joanito de Andrade; DUTRA, Vieira Luciano; RENNÓ, Daleles Camilo;
SANTOS, Santana Pablo. Extração de atributos de forma para classificação de imagens
de
alta
resolução
do
satélite
HRC/CBERS-2B.
Disponível
em:
<http://marte.dpi.inpe.br/col/dpi.inpe.br/[email protected]/2008/11.17.22.33/doc/7015-7022.pdf>.
Acesso em: 3 abr 2013.
OPERAÇÕES EM IMAGENS. Disponível em: <http://bit.ly/IxRjZi>. Acesso em: 5 jul 2013.
PROCESSAMENTO
DE
IMAGENS.
Disponível
<http://labeee.ufsc.br/~luis/ecv5360/apostilas/Infoproc1.pdf>. Acesso em: 29 jun 2013.
em:
70
ROUSSET, C. Transferable belief model for hair mask segmentation. 2010. Disponível
em: <http://hal.archives-ouvertes.fr/docs/00/53/01/56/PDF/ICIP_2010.pdf>. Acesso em 7 abr
2013.
SCURI, Antonio Escaño. Fundamentos da imagem digital. 2002. Tecgraf/PUC-Rio, Rio de
Janeiro, 2002.
SEBRAE. São Paulo: Salão de beleza: destaque-se nesse mercado competitivo, 26 fev.
2013.
Disponível
em:
<http://www.sebraesp.com.br/index.php/23-noticias/comercio-e-
servicos/7702-salao-de-beleza-destaque-se-nesse-mercado-competitivo>. Acesso em: 3 mar
2013.
SOM, Mat. Hafizan. 2011. Application of threshold techniques for readability
improvement
of
jawi
historical
manuscript
images.
Disponível
em
<http://airccse.org/journal/acij/papers/0311acij06.pdf>. Acesso em: 21 set 2013.
TAAZ. Virtual Makeover. 2013. Disponível em: <http://www.taaz.com/virtual-makeover>.
Acesso em: 22 mar 2013.
VILLAMIL,
Marta
Becker.
Processamento
Gráfico.
2002.
Disponível
em:
<http://professor.unisinos.br/mbvillamil/files/SistemasDeCores.pdf>. Acesso em: 30 out
2013.
XAVIER,
Jardel.
Chroma-key.
2011.
Disponível
em:
<http://www.slideshare.net/JardelXavier/o-que-o-efeito-chromakey>. Acesso em: 9 out 2013.
71
APÊNDICE A. TÉCNICA DE DETECÇÃO DE CABELO
PROPOSTO POR ROUSSET
Nesta seção serão abordados métodos que auxiliarão na detecção de cabelo na imagem
da pessoa. Na Figura 26 são apresentadas as etapas do método proposto por Rousset (2013)
para detecção semiautomática de cabelo. Seguem as etapas a seguir:
Etapa A: imagem inicial;
Etapa B: definição da Área da Cabeça;
Etapa C: máscara de Frequência;
Etapa D: máscara de Cor;
Etapa E: máscara de Fusão;
Etapa F: máscara final;
Etapa G: visualização da imagem segmentada.
Figura 26. Etapas do algoritmo da segmentação de cabelo. (a) Imagem inicial, (b) Definição
da Área da Cabeça, (c) Máscara de Frequência, (d) Máscara de Cor, (e) Máscara de Fusão, (f)
Máscara final, (g) Cabelo segmentado.
Fonte: Rousset (2013).
A seguir são apresentados detalhes das etapas de segmentação, através de técnicas de
máscaras. A cada processo é retornado uma nova imagem para dar continuidade na
segmentação e reenviada essa imagem para a próxima etapa, e assim sucessivamente.
72

Imagem inicial (A): imagem inicial, enviada pelo usuário;

Definição da área da cabeça (B): inicialmente é pedido ao usuário para arrastar
um quadrado em volta da cabeça e do rosto e outro quadrado no rosto da
imagem. Considera-se aqui que o cabelo está em torno do rosto. Esta etapa é
necessária na etapa E, que será gerada a Etapa F, a fim de separar o que estiver
fora do quadrado, que praticamente está somente a parte do cabelo;

Máscara de frequência (C): a ideia desta etapa é diferenciar boa parte do cabelo
das outras partes da imagem. É caracterizado o cabelo com uma análise de
frequência da imagem. Após aplicar o filtro, obtém-se uma média e desvio
padrão da frequência, separando diferentes objetos na imagem, e uma delas é a
área do cabelo (INSTITUTO GAUS, 2013);
O método de Gauss consiste na redução de incógnitas, utilizando critérios de
equivalência, transformando uma matriz ampliada em uma matriz triangular,
sendo que cada linha tenha uma incógnita menor. Utiliza-se método de Gauss
para resolver sistemas de equações lineares (INSTITUTO GAUS, 2013);

Máscara de cor (D): este método é responsável por inserção de marcadores.
Com o objetivo de ajudar a eliminar as partes que não sejam o cabelo, pixels
são marcados por volta do cabelo através de algumas etapas citadas
posteriormente, com base na imagem retornada pela Máscara de Frequência.
Somente com o método de Máscaras de Frequência não é suficiente obter uma
boa segmentação, como se pode identificar através da Figura 26, o cabelo
ainda está muito fora da segmentação desejada. A máscara de cor é dividida
em calcular um modelo de cor de cabelo com base em análise da imagem.
Utiliza-se como cor a área definida pela Máscara de Frequência;

Máscara de fusão (E): após ter sido criado as duas máscaras de frequência e de
cor, é preciso manter apenas as informações comuns de ambos. Neste caso é
utilizado o operador AND, onde a máscara de fusão é uma união da máscara de
frequência com a máscara de cor;
73
Nesta etapa, colocam-se os marcadores brancos no interior e os marcadores
pretos do lado de fora da Máscara de Fusão, ignorando a parte de fora da área
da cabeça, gerando assim a Etapa F;

Máscara final (F): após o retorno da imagem, o mesmo é representado por: a
parte em branco representa o cabelo e a parte em preto representa o fundo,
finalizando a segmentação da imagem;

Cabelo segmentado (G): cabelo segmentado com uma cor de diferenciação na
imagem inicial enviada pelo usuário.
Download

universidade do vale do itajaí centro de ciências