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/sbsr@80/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.