Buscar

APS Reconhecimento facial

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIP – UNIVERSIDADE PAULISTA
Curso de Ciência da Computação
ATIVIDADES PRÁTICAS SUPERVISONADAS - APS
DESENVOLVIMENTO DE SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO BIOMÉTRICA
Alexandre Fossati Filho - RA – C9402G-4
Juan Patrick da Silva Almeida - RA – D00515-4
Marília Salmazzo Negrão - RA – D0051G-0
Matheus Silvério Gonçalves - RA – D00CHG-1
São José dos Campos, 09 de Outubro de 2018.
UNIP – UNIVERSIDADE PAULISTA
Curso de Ciência da Computação
ATIVIDADES PRÁTICAS SUPERVISONADAS - APS
DESENVOLVIMENTO DE SISTEMA DE IDENTIFICAÇÃO E AUTENTICAÇÃO BIOMÉTRICA
Atividades Práticas Supervisionadas do 5º e 6º Semestres do Curso de Ciência da Computação da Universidade Paulista – UNIP.
Coordenador: Prof. Fernando A. Gotti
São José dos Campos, 09 de Outubro de 2018.
UNIP – UNIVERSIDADE PAULISTA
Curso de Ciência da Computação
FICHA DE APROVAÇÃO
Tema: Desenvolvimento de sistema de identificação e autenticação biométrica
Este Trabalho foi aprovado como avaliação semestral da disciplina Atividades Práticas Supervisionadas - APS
Os alunos receberam as seguintes notas:
	Aluno
	Trabalho Impresso
	Apresentação
	Média (Total)
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
Professor Orientador
__________________________
André Kusumoto
São José dos Campos,_____ de _________________de 2017.
SUMÁRIO
LISTA DE FIGURAS
Figura 1 - Leitor de Impressão Digital Fonte: http://lectro.vteximg.com.br	10
Figura 2 - Leitor de Geometria da Mão Fonte: http://1.bp.blogspot.com	10
Figura 3 - Leitor de Reconhecimento de Retina Fonte: https://blog.superfluous.com.br	11
Figura 4 - Leitor de Reconhecimento de Iris Fonte: https://http2.mlstatic.com	12
Figura 5 - Logo do Java e logo da IDE NetBeans Fonte:	15
Figura 6 - Logo da biblioteca OpenCV Fonte:	16
Figura 7 - Etapas para o Reconhecimento - Detectar Faces Fonte: Autoria Propria	17
Figura 8 - Procura da haar feature Fonte:	18
Figura 9 -Etapas para o Reconhecimento - Coletar Fotos Fonte: Autoria Propria	19
Figura 10 - Etapas para o Reconhecimento - Treinamento	20
Figura 11 -EigenFaces - Transformação da face em vetor	21
Figura 12 - Etapas para o Reconhecimento - Reconhecimento	22
OBJETIVO
Esse trabalho tem como o objetivo utilizar os conhecimentos adquiridos nas matérias de Processamento de Imagens, Computação Gráfica e Métodos de pesquisa nos 5º e 6º Semestre de Ciências da Computação para desenvolver uma aplicação de identificação e autenticação utilizando alguma técnica biométrica. 
2. INTRODUÇÃO
Dentro da área da Tecnologia da Informação, um dos fatores mais importantes durante o desenvolvimento de um software é ter certeza de que o programa terá um grau de confiabilidade ideal para que o usuário tenha seus dados mantidos com segurança. 
A busca pela precisão da autenticidade de acessos escalou de uma maneira significativa no ramo tecnológico, o que incentivou a criação de métodos de verificação que vão além de senhas que faziam com que o usuário devesse decorar uma sequência de números e letras. Além das inúmeras técnicas de criptografia, as características biológicas do ser humano se tornaram um parâmetro muito mais seguro quando o assunto se refere a resposta sobre quem está consumindo (ou enviando) o conteúdo de alguma aplicação, tendo em vista de que cada indivíduo possui uma gama de características únicas e imutáveis.
A implementação do uso das impressões digitais como certificados de autenticidade ou como identificação de alguma pessoa para muitos pode ser considerada algum tipo de tecnologia recente, entretanto, há dados que comprovam seu uso nos tempos antigos com finalidades quase semelhantes ao que realizamos nos dias de hoje. Um exemplo disso são dados que comprovam que pinturas rupestres possuíam diversas marcas de mãos no intuito de identificar quem teria sido o autor da mesma. Anos depois, nas regiões do Oriente Médio e da Ásia, o uso das impressões digitais era utilizado como identificador de produtos de alguns mercantis tanto como as suas características biológicas, ou seja, suas cicatrizes, formato do rosto ou cor dos olhos eram um parâmetro para os seus clientes terem a confiança de que o comerciante a quem eles estavam realizando alguma forma de negócio era realmente quem ele dizia ser, ou se o mesmo possuía uma reputação boa dentro do comércio.
	Outra área na qual a utilização das características únicas de um ser humano serviram como elemento chave para reconhecimento ou autenticação foi dentro da criminologia, criminosos tinham suas características fisiológicas descritas em fichas para fácil reconhecimento das autoridades em caso de busca. Um dos pioneiros na técnica foi Alphonse Bertillon, criminologista francês que implementou o uso de fotos de diversas partes do corpo dos indivíduos que cometiam delitos, tais fotos eram armazenadas em um banco de dados para que elas fossem utilizadas na identificação do criminoso, sua tática se tornou tão famosa ao longo dos anos e ao redor do mundo que o concederam o título de pai da Antropometria (que é a medição e registro de características físicas do ser humano).
	A introdução de sistemas computacionais que utilizavam características de pessoas que eram armazenadas surgiu próximo da década de sessenta, o Identimat era um sistema utilizado em locais nos quais a entrada de indivíduos devia ser controlada, o parâmetro utilizado pelo sistema era o tamanho e formato da mão e dos dedos da pessoas, desde então técnicas muito mais avançadas começaram a surgir e ainda estão em aprimoramento, o advento da computação serviu de auxílio para que a assertividade dos métodos se torne cada vez mais eficiente.
	O trabalho apresentado traz uma descrição de métodos e parâmetros utilizados para reconhecimento de usuários, com a utilização da linguagem de programação Java, foi desenvolvido um sistema no qual é possível armazenar detalhes de uma pessoa na qual ela possa ser reconhecida por um algoritmo chamado de eigenfaces.
3. FUNDAMENTOS DAS PRINCIPAIS TÉCNICAS BIOMÉTRICAS
Dentro do ramo atual relacionado à segurança da informação, a biometria se destaca como uma das áreas de estudo mais importantes. Devido a grande necessidade de uma forma de autenticação confiável, seja para acesso à rede ou até mesmo acesso a um local físico, o uso da autenticação biométrica tem aumentado conforme os anos passam. 
O termo biometria tem como definição a medição biológica, sendo o estudo de características físicas ou comportamentais que são únicas a cada pessoa. O crescente uso da autenticação por biometria se faz devido à confiabilidade oferecida por esse método. Sendo uma característica única de cada pessoa (íris, impressão digital, voz etc.) a autenticação biométrica se faz difícil de copiar e de ser transferida e sendo parte do corpo ou comportamento inato de cada usuário também é impossível de ser esquecida. 
Em tese, qualquer característica ou comportamento de uma pessoa pode ser utilizado como critério de identificação biométrica. Porém essas características precisam atender alguns requisitos:
•	Universalidade: todos os usuários devem possuir essa característica ou comportamento usado para autenticação.
•	Permanência: o fator de autenticação não pode variar com o tempo
•	Singularidade: a característica não pode ser igual para usuários diferentes
•	Coletabilidade: a característica deve poder ser armazenada e medida
Apesar de atualmente existirem numerosos modos de autenticação por biometria, todos eles seguem uma lista de processos necessários para que a autenticação seja bem sucedida, sendo eles:
•	Captura: primeiramente uma amostra da característica a ser avaliada é capturada pelo dispositivo que irá fazer a autenticação biométrica. 
•	Extração: são removidos os traços que são únicos do individuo para que seja feita a comparação apenas dos dados únicos.
•	Comparação: o processocompara a informação fornecida pelo usuário com aquela armazenada como correta. 
Vários ramos nos dias de hoje fazem uso de biometria como a leitura da impressão digital para votar, para desbloquear o celular ou acessar informações em um caixa eletrônico. Porém existem outros vários métodos para autenticação biométrica além da leitura de impressão digital. Esses métodos podem ser classificados entre características fisiológicas ou características comportamentais. 
3.1 Características fisiológicas 
Trata-se de características físicas do usuário a ser analisado. Esse tipo de analise biométrica é considerada de maior confiabilidade e singularidade, uma vez que é muito difícil ou impossível de se copiar determinadas amostras como a impressão digital e íris do usuário. 
3.1.1 Reconhecimento de face
Tipo de reconhecimento biométrico que permite, através da captura da imagem da face do usuário, registrar pontos identificadores e delimitadores da face. Trata-se de um método rápido e de baixo custo, comparando distancias (como a distancia entre os olhos, orelhas e etc.) e definições (formato do rosto, nariz, olhos e etc.) da imagem da face da uma pessoa com a imagem armazenada no banco de dados. Não é considerado um método confiável, pois não atende ao requisito permanência, ou seja, os features da autenticação podem mudar ao longo do tempo como, por exemplo, mudanças faciais ocasionadas pela idade. 
3.1.2 Impressão digital
Um dos métodos mais utilizados por possuir baixo custo, alto nível de confiabilidade e rapidez. Através de um dispositivo, que funciona como um scanner, que capta com precisão os traços presentes nos dedos do usuário e os transforma em imagens, a autenticação ocorre quando os traços são comparados ao banco de dados das imagens já pré-armazenadas e encontra ou não a imagem correspondente. Esse método não é totalmente infalível, porque ao longo do tempo, podem ocorrer situações aonde o usuário perca parte da impressão digital (como queimaduras ou cortes). 
Figura 1 - Leitor de Impressão Digital Fonte: http://lectro.vteximg.com.br
3.1.3 Geometria da Mão
Método pouco utilizado por não possuir alta confiabilidade. A biometria baseada na geometria da mão se baseia em características presente na mão do usuário como forma da mão, distancia entre os dedos e tamanho dos mesmos. Esse método não é considerado confiável pois pode sofrer inúmeros impactos externos: mão mal posicionada no leitor, presença de anéis, mudanças decorrentes à acidentes etc. 
Figura 2 - Leitor de Geometria da Mão Fonte: http://1.bp.blogspot.com
3.1.4 Reconhecimento de Retina
Dentre as características dos seres humanos, a retina se trata de um padrão imutável com o tempo e de maior singularidade. Um leitor ótico emite uma luz de baixa intensidade que mapeia os vasos sanguíneos presentes na retina do usuário. Trata-se de um método de altíssima confiabilidade, porém não muito utilizado, pois utiliza equipamentos caros e é tratado como um procedimento invasivo (por emitir uma luz diretamente no olho). 
Figura 3 - Leitor de Reconhecimento de Retina Fonte: https://blog.superfluous.com.br
3.1.5 Reconhecimento de Iris 
Assim como a retina, a íris se trata de um padrão imutável e de alta singularidade. Um leitor ótico emite uma luz de baixa intensidade que mapeia os contornos e padrões geométricos existentes na íris. Assim como o reconhecimento de retina se trata de um procedimento de altíssima confiabilidade, porém de altos custos e resistência dos usuários a utilizarem o método por medo de danos nos olhos ocasionados pela luz que faz a leitura das informações. 
Figura 4 - Leitor de Reconhecimento de Iris Fonte: https://http2.mlstatic.com
3.2 Características Comportamentais
Trata-se de características apresentadas pelo comportamento da pessoa, como modo de digitação ou assinatura. São consideradas de baixa confiabilidade, pois são afetadas pelo estado físico e psicológico do usuário. 
	3.2.1 Reconhecimento de Assinatura 
Existem dois tipos de reconhecimento de assinatura atualmente:
•	Dinâmica: Através de um dispositivo touch screen (como tablet) a pessoa escreve sua assinatura. Além da própria imagem, aspectos como pressão da caneta, aceleração e posição da escrita são armazenados para que possam ser usados futuramente como método de autenticação.
•	Estática: A assinatura do usuário é digitalizada e comparada com a amostra já pré-armazenada. Nesse caso apenas a imagem da assinatura é comparada. 
Ambos os métodos são considerados de pouca confiabilidade uma vez que ambos podem sofrer com mutabilidade devido ao tempo ou até mesmo ao humor do usuário no momento da coleta da informação. 
3.2.2 Reconhecimento de dinâmica de digitação
Método pouco utilizado e pouco confiável, porém com baixo custo e com a vantagem do usuário não saber se está sendo monitorado para ser autenticado ou não. Trata-se de um processo que verifica o ritmo da digitação. É criado um perfil de digitação no sistema a ser utilizado. Esse perfil armazena dados como velocidade da digitação, tempo de pressão e tempo entre o pressionamento entre as teclas. 
Apesar de ser um método de difícil copia, se trata de um método de pouca confiabilidade, pois assim como a assinatura o humor ou outros aspectos psicológicos podem afetar na coleta dos dados. 
3.2.3 Reconhecimento por Voz
Método de baixo custo e não invasivo, porém não altamente confiável. Através de um microfone a fala do usuário é gravada. O processo de identificação analisa as ondas e frequências captadas na gravação da voz do usuário e depois as comparadas com a já existente. Esse tipo de autenticação não é considerado confiável pois pode sofrer mudanças com o tempo ou estado psicológico e físico do usuário (resfriado, faringite, estado emocional etc.), porém não é um método que possa sofrer fraude (imitação da voz de outra pessoa) pois os dados analisados pelo computador não são o mesmo que o ouvido humano percebe. 
4. INTERDISCIPLINARIDADE
Buscando integrar todas as matérias cursadas até o momento no curso de Ciência de computação para o desenvolvimento de uma ferramenta de reconhecimento facial foi possível relacionar o conteúdo destas a diversas áreas do trabalho.
Com o conteúdo aprendido nas disciplinas de processamento de imagens e computação gráfica, foi possível o entendimento de como são formadas a imagens e como é feito o processo de transformação digital, levando assim ao esclarecimento das técnicas de programação utilizadas para criar a ferramenta de reconhecimento facial.
Fazendo uso das técnicas de programação aprendidas na disciplina Orientação a objetos foi possível a criação de um código de programação de fácil compreensão e estável. Usando os princípios de encapsulamento, polimorfismo, herança, classe entre outros, foi possível criar um código com um número reduzido de linhas, de modo que a aplicação continue compreensível e segura.
Os conceitos de inteligência artificial foram importantes para a compreensão do sistema sobre a forma que ele memoriza os padrões e os armazena, é necessário que ele seja “ensinado” de acordo com alguns modelos de rosto, e após isso seja capaz de identificar de forma autônoma as divergências de cada um dos usuários, sabendo como identifica-los.
Com a disciplina metodologia dos trabalhos acadêmicos e metodologia de pesquisa também foi possível aprimorar a capacidade de percepção do grupo, descobrindo e abordando mais profundamente os tópicos de maior relevância para o desenvolvimento da pesquisa. Como um dos resultados desse estudo, foi concebido que um enfoque maior na contextualização histórica do trabalho é essencial para situar o leitor do ambiente onde os fatos ocorrem e também a relevância da evolução tecnológica na área de comunicações desenvolvidas pelo ser humano ao longo dos anos. A melhor forma de expressar a explicação da construção do software criado, bem como os modos mais eficazes de se buscar o conhecimento necessário para a construção de cada etapa do trabalho, também foi auxiliado peloestudo das metodologias que um trabalho acadêmico deve apresentar em seu corpo. Não apenas os conhecimentos subjetivos foram aprimorados durante o estudo da matéria, mas também os práticos como o entendimento da importância das normas ABNT, não apenas como uma forma de deixar o trabalho final com uma formatação agradável ao leitor, mas também para a facilitação de um trabalho desenvolvido de forma coletiva, facilitando todas as formas como escrita e modulação das tarefas dos integrantes do grupo. 
5. PLANO DE DESENVOLVIMENTO DA APLICAÇÃO
5.1 Ferramentas Utilizadas
	Para o desenvolvimento do presente trabalho foram utilizadas diversas ferramentas computacionais para se atingir os objetivos do mesmo. O código foi gerado na linguagem de programação JAVA tendo o programa sendo desenvolvido através da IDE NetBeans na sua versão 8.2. Abaixo imagens ilustrativas do logo da linguagem e IDE utilizada.
Figura 5 - Logo do Java e logo da IDE NetBeans Fonte:
	O JavaCV foi utilizado como biblioteca auxiliar para todo o tipo de manipulação do programa, a ferramenta trata desde a etapa inicial configurando a interface para a utilização da webcam, para que seja possível a captura das imagens bem como dos rostos que serão identificados adiante, como a transformação da imagem capturada para escala de cinza, redimensionamento e diversas outras funções que serão mais profundamente explicadas nos próximos capítulos. O JavaCV é uma biblioteca que realiza interface direta com a famosa biblioteca OpenCV. Como o OpenCV foi inicialmente implementado em C++, a utilização deste recurso em outras linguagens que não fosse a nativa gerava a princípio diversos problemas de comunicação, sendo necessária uma configuração prévia nada trivial para os desenvolvedores de forma geral. Visando facilitar a utilização desse recurso entre os usuários de diversas linguagens, bibliotecas nativas em outras linguagens foram criadas implementando interfaces direta com métodos do OpenCV, no caso da linguagem Java foi criado o JavaCV que pode ser utilizado de forma muito mais simples assim como qualquer outra biblioteca pertencente à linguagem. Além disso, o JavaCV possui além das interfaces com os métodos do OpenCV, um vasta gama de funções próprias ligadas a área de imagens, que também pode ser utilizada uma vez que foi importado para o projeto. Abaixo logo do OpenCV.
Figura 6 - Logo da biblioteca OpenCV Fonte:
	Para capturar as faces, realizar a detecção e em seguida o treino e estudo dos padrões foi utilizada uma webcam de um notebook no seu estado padrão, não havendo a necessidade de instalação de outros recursos adicionais ou configurações específicas para o projeto.
	O EigenFaces foi o algoritmo escolhido para a realização do reconhecimento facial para esse trabalho, ele está incluso dentro da biblioteca do JavaCV e é o responsável pela identificação das faces detectadas pela câmera.
	5.2 Plano de Desenvolvimento
	O desenvolvimento de uma aplicação que realiza o reconhecimento facial é uma tarefa com várias etapas, portanto uma imagem demonstrativa com o passo a passo deixa mais claro o caminho que deve ser seguido para a criação. Abaixo a imagem informa essa sequência.
Figura 7 - Etapas para o Reconhecimento - Detectar Faces Fonte: Autoria Propria
	Como observado acima o primeiro passo que deve-se tomar para atingir o objetivo é realizar a detecção das faces, para tanto diversas abordagens existem à disposição. No presente projeto foi criada uma aplicação que reconhece e exibe as imagens capturadas pela webcam de um notebook, esse processo seria deveras complicado se não fosse pelo auxílio da biblioteca JavaCV que nos permite realizar toda essa operação com pouquíssimas linhas de código.
	Uma vez que as imagens são capturadas é necessário que se faça a detecção das faces que aparecem na tela, afinal o algoritmo de reconhecimento facial deve receber como dados de entrada para a etapa do treinamento unicamente faces humanas, caso contrário um treinamento errôneo da rede neural poderá ocorrer, acarretando inúmeras incertezas na hora do resultado final. Para realizar então a detecção das faces da webcam foi utilizado como modelo o arquivo “haarcascade-frontalface-alt”, este é um arquivo xml que contém informação sobre o treinamento de detecção de faces em imagens. Esse arquivo está presente no OpenCV junto com diversos outros arquivos xml, cada um com um treinamento específico para um determinado tipo de objeto que se deseja encontrar. Esses arquivos são gerados com base nos resultados posteriores a um treinamento de uma rede neural e para o caso da detecção das faces uma técnica chamada “haar features” é utilizada. Essa técnica consiste em quebrar uma imagem capturada em diversos quadrados menores e aplicar dentro desse espaço um cálculo já estabelecido pelo algoritmo, quando esse cálculo é executado um resultado é gerado, esse resultado então é comparado a um valor padrão que é o valor da haar feature. Quando esse valor comparado está dentro do desvio aceitado pelo algoritmo, é detectado que em volta daquele quadrado existe uma face. A imagem abaixo exemplifica a situação.
Figura 8 - Procura da haar feature Fonte:
	O primeiro quadrado na imagem acima representa o espaço que a haar feature procura para identificar a face. A parte preta de cima precisa ser colocada sobre os olhos em uma face, enquanto a parte branco fica logo abaixo. Quando um cálculo envolvendo os pixels da parte preta com os pixels da parte branca são realizados, um resultado é obtido. Esse resultado é claramente diferente para cada tipo de imagem onde ele é aplicado, no entanto quando esse quadrado coincide exatamente de ser posto em cima dos olhos, um resultado dentro de uma certa escala é sempre obtido e é aí então que o algoritmo capta a face na tela. Essa não é a única haar feature que o algoritmo busca, da mesma maneira que temos essa feature para a detecção dos olhos, existem outras para a detecção de outras regiões da face, porém todas funcionam dentro dessa mesma lógica de passar pela imagem toda, até encontrar o ponto exato onde a face está.
	Depois que a face foi detectada na imagem é necessário fazer a conversão dela para um tipo que possa ser lido pelo algoritmo, a imagem é então convertida para uma matriz que guardará todas as informações de cada pixel, com esses números sim os cálculos podem ser efetuados e então seus resultados armazenados em um arquivo para ser usado em uma futura detecção, como o “haarcascade-frontalface-alt” usado nessa aplicação.
Enfim após a detecção da face a próxima etapa pode ser executada conforme mostra a imagem abaixo.
 
Figura 9 -Etapas para o Reconhecimento - Coletar Fotos Fonte: Autoria Propria
	Cada usuário terá que tirar vinte e cinco fotos para que a sua etapa de cadastro seja concluída, esse número foi estabelecido de acordo com o indicado na documentação do próprio método no OpenCV, é claro que em um sistema real quanto mais imagens cadastradas um usuário tiver melhor será a precisão do algoritmo na hora de identificar a face, no entanto para os fins de estudo esse número é o suficiente para que seja compreendido o funcionamento. As faces coletadas devem ser vinculadas a uma pessoa para que quando detectada o sistema reconheça qual é o usuário por trás da tela, caso contrário o reconhecimento não faria sentido algum. Portanto sempre que uma nova pessoa for tirar fotos para armazenar para o treinamento será pedido o nome, ou a forma como ela gostaria de ser identificada. Feito isso um diretório deve ser separado para que todas as faces sejam guardadas nele e para este passo isso é tudo. No entanto é importante observar que ao tirar as fotos para o treinamento alguns detalhes devem ser tomados.
	Sempre que fotos forem coletadas, as mesmas não devem estar tremidas para não dificultar assim a identificação de detalhes importantes da face, é também importante que a pessoa tenha fotos com diferentes expressões, caso contrário o algoritmo de aprendizagem pode vincularuma característica como por exemplo a de ter sempre a boca fechada como uma característica do usuário em questão. O ângulo de inclinação da face diante da câmera é algo que deve variar para que treinamento não caracterize o usuário como um que está sempre olhando em direção a câmera. Por último e talvez o mais importantes dos detalhes a serem ressaltados é a atenção com a iluminação, uma vez que a sensibilidade a luz é um dos pontos fracos do algoritmo EigenFaces, portanto atenção redobrada na hora de tirar as fotos é necessária para que o ângulo da luz incidente não fique apenas de um lado da face do usuário. O próximo passo é indicado na imagem abaixo e explicado em seguida.
Figura 10 - Etapas para o Reconhecimento - Treinamento
	Agora que as imagens estão armazenadas e vinculadas aos devidos usuários dá-se início a fase de treinamento. Para essa fase é necessário carregar para dentro da aplicação todas aquelas matrizes que foram resultado da conversão das imagens, uma vez que as matrizes estão prontas para serem percorridas é necessário também que elas sejam devidamente identificadas para que o treinamento saiba diferenciar qual matriz é pertencente a qual usuário. Tendo essas duas informações basta enviar para o algoritmo de aprendizado do EigenFaces localizado na biblioteca OpenCV e ele gerará um arquivo com as características da face em questão para cada um dos usuários cadastrados.
	O funcionamento do algoritmo EigenFaces é complexo e composto de várias etapas. O primeiro passo é receber todas as faces cadastradas que devem estar ainda em escala de cinza para diminuir a complexidade dos cálculos, uma vez que a imagem é recebida ela é transformada em um vetor, contendo a informação de todos os pixels da mesma conforme indicado abaixo.
Figura 11 -EigenFaces - Transformação da face em vetor
	Conforme mostra a imagem acima, cada linha de pixels da imagem irá se tornar um elemento dentro do vetor, por exemplo, a linha um se tornará o elemento um do vetor, enquanto a linha dois se tornará o elemento dois e assim por diante.
No fim do processo a imagem inteira será representada por um único vetor.
	No entanto essa é apenas uma única face, mas existem várias a passar por esse mesmo processo. Quando todas as outras faces tiverem sido convertidas também em vetores o que teremos é uma matriz resultante, onde cada coluna representa uma face do conjunto de dados.
	Após ter a matriz com os dados de todas as faces é aplicado um algoritmo denominado PCA (Principal Component Analysis), como o nome sugere esse algoritmo busca reduzir a quantidade massiva de dados obtidas pelas aplicações, buscando e identificando apenas componentes principais, aqueles que tem realmente relevância para as manipulações e então descarta os dados que são desnecessários. Graças a essa técnica é possível reduzir bastante a quantidade de informação obtida e sem muitas perdas relevantes, o que salva um grande tempo de processo computacional. O que o algoritmo EigenFaces faz então é encontrar uma face média que represente o conjunto de dados estudados, os pixels de mesma posição são todos somados e então divididos para se encontrar o valor intermediário. Quando todos pixels passam por esse processo o que se obtém é uma face intermediária que será utilizada para manipulações nas imagens originais.
	
Depois que o treinamento foi realizado, o próximo passo pode ser executado e este é o informado na imagem abaixo.
Figura 12 - Etapas para o Reconhecimento - Reconhecimento
	Na etapa de reconhecimento assim como na etapa de detecção o uso da webcam será necessário e o uso do arquivo resultante da etapa anterior será necessário para o reconhecimento da face. Ao iniciar a aplicação uma janela com a imagem filmada será exibida e após a devida identificação da face em questão um quadrado vermelho será exibido em volta da face detectada, logo acima do quadrado o nome do usuário coincidente será exibido, ou caso a face detectada não coincida com nenhuma das outras da base de dados uma mensagem informando que é uma face desconhecida será exibida no lugar, mostrando assim então o resultado final do projeto desenvolvido.
6. Referência Bibliográfica
A.GUERINE, Marcos. Professor do Instituto de Computação da Universidade Federal Fluminense. Disponível em: <ic.uff.bri-mguerine/data/uploads/2014- 1/progii/progii-aula8.pdf>. Acesso em: 13 abr. 2017. 
ARALDI, Altamir. Professor da Universidade Federal de Santa Catarina. Disponível em: <www.ensinoeinformacao.com/teoria-grafos-ordem-de-complex-algoritmo >. Acesso em: 02 abr. 2017.
FARIAS, Ricardo. Professor da Universidade Federal do Rio de Janeiro. Disponível em: <cos.ufrj.bil-rfarias/cos121/aula_05.html>. Acesso em: 15 abr. 2017. 
FEOFILOFF, Paulo. Professor da Universidade de São Paulo. Disponível em: <ime.usp.br/-pf/algoritmos/aulas/guick.html >. Acesso em: 25 mar. 2017. 
FEOFILOFF, Paulo. Professor da Universidade de São Paulo. Disponível em: ime.usp.br/-pf/algoritmos/aulas/ordena.htnnl >. Acesso em: 25 mar. 2017. 
SOUZA, Jairo. Professor da Universidade Federeal de Juiz de Fora. Disponível em: <ufjf.br/jairo_souzalfiles/2009/12/2-Ordena%C3°/0A7°/0C3 1Y0A3o- ubbleSort.pdf>. Acesso em: 20 abr. 2017. 
TONIETTO, Leandro. Professor da UNISINOS. Disponível em: professor.unisinos.brAtonietto/inf/1b2/sort.pdf>. Acesso em: 13 abr. 2017. 
7. APÊNDICE
8. CONCLUSÃO
Após todo o processo desenvolvido, podemos ter como conclusão do projeto apresentado que o uso das características biológicas (tanto como um parâmetro referente a segurança ou fácil identificação de um elemento) era um tipo de técnica já aplicada anos atrás. Entretanto, sua precisão, rapidez de identificação e capacidade de armazenamento provinham da memorização e olhar descritivo do ser humano, o que tornava a resposta mais suscetível a erro.
O advento da computação foi o que impulsionou tanto quanto o estudo do ser humano e suas características imutáveis quanto o desenvolvimento de técnicas mais precisas para a realização da identificação de uma pessoa. O algoritmo de Eigenfaces é um dos mais simples, e como consequência, apresenta problemas referente ao reconhecimento e captação de informações quando se trata do assunto luminosidade, porém serve como base para modelos mais apurados desenvolvidos posteriormente.
Como há uma gama de métodos já desenvolvidos, a aplicação fluiu de forma tranquila, apresentando como dificuldades a compreensão do Java CV e a aplicabilidade das funções que vinham disponíveis nele.

Outros materiais