PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

84
UNIVERSIDAD ANDRÉS BELLO FACULTAD DE INGENIERÍA ESCUELA DE INDUSTRIAS PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR EN PYTHON/ OPENCV/ MYSQLMEMORIA PARA OPTAR AL TÍTULO DE INGENIERO EN AUTOMATIZACION Y ROBOTICA AUTOR: DAVID ESTEBAN DONOSO CONTALBA PROFESOR GUÍA: NESTOR PALOMINOS GONZALEZ Santiago, 2018

Transcript of PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Page 1: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

UNIVERSIDAD ANDRÉS BELLO

FACULTAD DE INGENIERÍA

ESCUELA DE INDUSTRIAS

“PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR

EN PYTHON/ OPENCV/ MYSQL”

MEMORIA PARA OPTAR AL TÍTULO DE

INGENIERO EN AUTOMATIZACION Y ROBOTICA

AUTOR: DAVID ESTEBAN DONOSO CONTALBA

PROFESOR GUÍA: NESTOR PALOMINOS GONZALEZ

Santiago, 2018

Page 2: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

UNIVERSIDAD ANDRES BELLO

FACULTAD DE INGENIERÍA

ESCUELA DE INDUSTRIAS

INGENIERÍA EN AUTOMATIZACIÓN Y ROBÓTICA

DECLARACIÓN DE ORIGINALIDAD Y PROPIEDAD

Yo, David Esteban Donoso Contalba, declaro que este documento no incorpora

material de otros autores sin identificar debidamente la fuente.

Santiago, julio de 2018

_____________________________

Firma del alumno

Page 3: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

AGRADECIMIENTOS

Mis agradecimientos están destinados a todas las personas que me guiaron en mi

formación como alumno: mis profesores. Ellos me proporcionaron todas las

herramientas necesarias para desarrollarme y crecer como profesional, y como persona.

Agradezco también, a mis amigos y compañeros de carrera por su constante apoyo en

este proceso: guiándome en los momentos en que necesité consejos, encaminando mi

trabajo, otorgándome buenos momentos, y grandes experiencias. Éste largo proceso ha

estado lleno de retroalimentación y ayuda mutua. Sin ella, todo lo que he conseguido me

habría costado mucho más. Es por eso que siempre valoraré nuestro compañerismo y

solidaridad.

Agradezco de forma especial a mi profesor guía, Néstor Palominos, que desde el primer

momento supo reconocer mis capacidades y logro potenciarlas, otorgándome todos los

conocimientos y herramientas necesarias para poder desenvolverme de la mejor manera

posible.

Page 4: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

DEDICATORIA

A mis padres, los pilares de mi vida, que desde siempre apoyaron mi vocación y me

permitieron realizarme en esta profesión. Ellos me han orientado, y siempre han estado

activamente presentes en todas las decisiones que he tomado.

Page 5: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Tabla de contenidos

1. ANTECEDENTES GENERALES ...................................................................................... 11

1.1 INTRODUCCIÓN ............................................................................................................. 11

1.2 OBJETIVOS ...................................................................................................................... 13

1.2.1 OBJETIVO GENERAL .............................................................................................. 13

1.2.2 OBJETIVOS ESPECÍFICOS ...................................................................................... 13

2. MARCO TEÓRICO ............................................................................................................. 14

2.1 ESTADO DEL ARTE ........................................................................................................ 14

2.1.1 DESCRIPCIÓN DE LA PROBLEMÁTICA .............................................................. 16

2.1.2 IMPACTO DE LA SOLUCIÓN ................................................................................. 17

2.2 PROCESAMIENTO DIGITAL DE IMÁGENES Y VIDEOS. ........................................ 17

2.2.1 CONCEPTOS PRINCIPALES ................................................................................... 18

2.2.1.1 VISIÓN ARTIFICIAL Y SISTEMAS BIOMÉTRICOS ..................................... 18

2.2.1.2 VISIÓN ARITIFICAL ......................................................................................... 18

2.2.1.3 ETAPAS DE UN SISTEMA DE VISION ARTIFICIAL ................................... 18

2.2.1.4 TOMA DE IMÁGENES Y REPRESENTACIÓN .............................................. 19

2.2.1.5 COMPONENTES DE LA LUZ ........................................................................... 20

2.2.1.6 COLOR ................................................................................................................ 20

2.2.1.7 ESPECTRO OBSERVADO POR EL OJO HUMANO ...................................... 21

2.2.1.8 MATERIAL DE LA SUPERFICIE ..................................................................... 22

2.2.1.9 SENSIBILIDAD LUMÍNICA DE LA CÁMARA .............................................. 23

2.2.1.10 SENSOR CCD ................................................................................................... 24

2.2.1.11 SENSOR CMOS ................................................................................................ 25

2.2.1.12 PATRONES LOCALES BINARIOS ................................................................ 26

2.2.1.13 VECINIDAD ..................................................................................................... 26

2.2.1.14 HISTOGRAMA ................................................................................................. 27

2.2.1.15 TIPOS DE FILTROS PARA IMAGENES ........................................................ 28

2.2.1.15.1 FILTRO DE CONTRASTE ........................................................................ 28

2.2.1.15.2 THRESHOLDING O FILTRO DE UMBRALIZACION .......................... 29

2.2.1.15.3 FILTRO DE MEDIA .................................................................................. 30

Page 6: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.15.4 FILTRO CANNY ....................................................................................... 31

2.2.1.15.5 FILTRO GAUSSIANO ............................................................................... 32

2.2.1.16 RECONOCIMIENTO BIOMETRICO DACTILAR ......................................... 33

2.3 HERRAMIENTAS UTILIZADAS.................................................................................... 33

2.3.1 HERRAMIENTAS PARA EL RECONOCIMIENTO DE OBJETOS ....................... 33

2.3.2 TEMPLATE MATCHING ......................................................................................... 33

2.3.2 SIFT: SCALE INVARIANT FEATURES TRANSFORM ........................................ 34

2.3.3 SURF: SPEED-UP ROBUST FEATURES ................................................................ 35

2.3.4 HAARCASCADE ....................................................................................................... 37

2.3.4.1 METODOLOGÍA DEL ALGORITMO HAARCASCADE................................ 38

2.3.4.2 IMAGEN INTEGRAL ......................................................................................... 39

2.3.4.3 EXTRACCIÓN DE CARACTERISTICAS HAAR ............................................ 40

2.3.4.4 CLASIFICACIÓN HAARCASCADE ................................................................ 41

2.3.5 ELECCIÓN DEL MÉTODO ...................................................................................... 42

2.3.6 RASPBERRY PI 3 B .................................................................................................. 42

2.3.6.1 CARACTERÍSTICAS DEL SOFTWARE .......................................................... 43

2.3.6.2 CARACTERÍSTICAS DEL HARDWARE ........................................................ 44

2.3.7 MODULO FINGERPRINT:MIAXIS BIOMETRICS SM-621 ................................. 45

2.3.7.1 CARACTERISTICAS FINGERPRINT MIAXIS BIOMETRICS SM-621 ........ 45

2.3.7.2 PINOUT DEL MODULO FINGERPRINT SM-621 ........................................... 47

2.3.7.4 CODIFICACION Y DECODIFICACION .......................................................... 49

2.3.7.5 DIAGRAMA DE FLUJO DE COMANDOS DE CONTROL ............................ 50

2.3.7.6 MODULOS DE COMANDOS ............................................................................ 53

2.3.7.7. COMANDOS DE VERIFICACION .................................................................. 54

2.3.7.8 EJEMPLOS DE COMANOS Y VERIFICACION .............................................. 56

2.3.8 MODULO CONVERTIDOR SERIAL FT232rl FTDI USB A TTL .......................... 57

2.3.9 WEB CAM USB ......................................................................................................... 58

2.4 HERRAMIENTAS UTILIZADAS PARA LA PROGRAMACION ................................ 59

2.4.1 PYTHON 2.7 .............................................................................................................. 59

2.4.2 OPENCV 3.0 ............................................................................................................... 59

Page 7: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.4.3 NUMPY ...................................................................................................................... 60

2.4.4 MYSQL ....................................................................................................................... 60

2.4.5 PHP ............................................................................................................................. 61

2.4.6 APACHE ..................................................................................................................... 61

2.4.7 LIBRERÍA TIME ....................................................................................................... 61

3. DESARROLLO ................................................................................................................... 61

3.1 MODELAMIENTO DE LA SOLUCION ......................................................................... 61

3.1.1 PUTTY ........................................................................................................................ 63

3.1.2 INSTALACION PYTHON 2.7, OPENCV 3.0 y NUMPY. ....................................... 64

3.2.2 PROCESAMIENTO DE LA IMAGEN...................................................................... 67

3.2.2.1 DIAGRAMA DE MODULOS DE DETECCION REGION DE INTERES (ROI)

......................................................................................................................................... 68

3.2.2.1.1 ETAPA PRE-PROCESAMIENTO ............................................................... 69

3.2.2.2 DETECCION DE ROSTROS .............................................................................. 69

3.2.2.3 RECONOCIMIENTO FACIAL .......................................................................... 70

3.2.2.4 RECONOCIMIENTO DACTILAR .................................................................... 71

3.2.3 CONEXION DEL FT232rl CON MODULO SM-621 ............................................... 75

4. ANALSIS DE LA SITUACION .......................................................................................... 75

4.1 ANALISIS FODA ............................................................................................................. 75

4.2 DIAGRAMA DE FLUJO DEL PROTOTIPO ................................................................... 76

4.3 CARTA GANTT ............................................................................................................... 78

5. IMPLEMENTACIÓN DEL SISTEMA Y RESULTADOS ................................................ 78

6. CONCLUSIÓN .................................................................................................................... 78

7. REFERENCIAS ................................................................................................................... 78

ANEXOS ..................................................................................................................................... 81

CAPTURA.PY ............................................................................................................................. 81

RECONOCIMIENTO.PY .............................................................................................................. 82

Page 8: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

RESUMEN

En la actualidad, la identificación de personas como proceso industrial se ha

transformado es una necesidad de primer orden para muchas empresas, ya que radica en

la seguridad de un recinto o espacio. Esto puede lograrse mediante la detección e

identificación de rostros, que genera una función que controla el acceso a un área o

proceso restringido específico. Y es aquí donde nace la inquietud de por qué resulta tan

útil la detección facial: porque los rasgos en el rostro humano son únicos e irrepetibles.

Semejantes por ejemplo, a las huellas dactilares.

Estas, por su parte, permiten el reconocimiento dactilar, que también es un sistema de

seguridad muy utilizado actualmente. Este se ha masificado debido a la aceptación que

el mercado ha tenido con él; y las razones radican en su simpleza, precisión y

accesibilidad económica.

Es por eso que la implementación integrada de ambas funciones mencionadas

anteriormente permite el desarrollo de un proceso de seguridad más confiable.

En este proyecto se presenta el desarrollo de un prototipo de reconocimiento de

identidad, el cual identificará a sujetos específicos mediante biometría, utilizando para

ello dos sistemas integrados: La visión artificial para el reconocimiento facial; y el

reconocimiento dactilar.

Los requerimientos para llevarlo a cabo son: una Raspberry pi 3, una cámara web USB

tradicional, un Print finger SM-621, y una pantalla LCD de 3.5 pulgadas.

Estos funcionarán con la ayuda de una placa Raspberrypi sobre el sistema operativo

Raspbian, la cual será programada para que utilice Python 2.7, en conjunto con la

librería para procesamiento de imágenes Opencv.

El reconocimiento de rostro o sistema de detección facial contará con un dispositivo

Page 9: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

compuesto por una cámara web y un Print finger; los que serán utilizados para capturar

imágenes. Éstas serán identificadas con Software desarrollado en Python 2.7, y base de

datos MYSQL.

Para comprobar la efectividad del sistema, se ingresará a la base de datos de personas

registradas anteriormente haciendo uso de todos estos procesos. En ésta se almacenarán

imágenes de rostros capturados por la cámara con sus características, rasgos e

identificación, y con su respectiva huella dactilar.

(Se validó el prototipo con una muestra de 10 personas, donde al solo usar Opencv

se obtuvo un error del 10%, y al usar ambos sistemas, se logró reducir a un 2% de

error)

Conceptos Claves: Visión Artificial, Opencv, Raspberry.

Page 10: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

ABSTRACT

In the present the constant advance of the technologies have managed to simplify the life

of the human being to help him with his tasks, have arisen new necessities that look for

the way to be solved of some way.

In the need to detect faces and identify them for different types of reasons, either for use

in home automation, identify a person to have restricted access to a place or obtain

permits on a process, since the features of each are like the Fingerprints, that is, they are

unique and difficult to replicate among other people.

Through the artificial vision is that we will give a solution that seeks to implement a

system which is able to detect and identify a subject through a webcam. With the help of

the Opencv library we will develop this solution to this need, Opencv is a free artificial

vision library which was developed by Intel and is still growing.

This project will carry out this solution through a computer reduced plate called

Raspberry, which will have a camera in perfect position, ready to capture the direct

image of the person's face, but before the camera begins to obtain images , Previously

with a sensor which will indicate if the person is in the correct position to analyze his

face. This system will have a database of faces that will compare the faces that already

have in your memory with the one that you see through the camera, allowing a

recognition and later access to some domain or sector.

Keywords: Vision Artificial, Opencv, Raspberry, Data base.

Page 11: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

1. ANTECEDENTES GENERALES

1.1 INTRODUCCIÓN

Identificar y familiarizar formas humanas son conductas inherentes del ser humano.

Éstas se manifiestan desde el primer instante en que nos relacionamos con otros pares.

El recuerdo facial de un individuo que puede alojarse en la memoria humana está

compuesto por parámetros que conforman el concepto de la identificación.

Al observar un rostro, el cerebro humano reconoce una serie de caracteres que le

permiten conocer su identidad. Cada rostro humano es único e irremplazable y para

nosotros la captura de estas particularidades es una tarea completamente necesaria.

En la actualidad esta habilidad humana de identificar ha sido utilizada como inspiración

por la automatización. Esta ha creado y desarrollado operaciones similares a las que

nuestro cerebro puede realizar, y los objetivos de estas nuevas tecnologías son variados.

Por ejemplo, permitir o denegar el acceso a una zona privada, y controlar el horario de

las personas.

Las tecnologías basadas en visión artificial han dado un gran paso en el terreno de la

seguridad y la domótica, mejorando y perfeccionando sus funciones. Estas tareas

contribuyen positivamente a problemáticas tan concretas como el control de la

delincuencia, por ejemplo.

Este tipo de tecnologías ya se encuentran en funcionamiento en el país, un ejemplo es la

comuna de Las Condes, en Santiago. La municipalidad se encargó de implementar un

sistema de reconocimiento facial que diferencia a personas comunes de otras que tienen

Page 12: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

órdenes de detención. Este opera en conjunto con Carabineros de Chile, que tiene acceso

su base de datos.

Los encargados de seguridad de la comuna aseguran que, desde la implementación de

algunos artefactos, han disminuido la delincuencia entre 30 y 40 por ciento. (Gonzales

E, 2018).

Esta y otras razones han empujado a la ingeniería a crear herramientas de seguridad

mucho más avanzadas, logrando la completa seguridad de los espacios y restringiendo el

acceso de individuos extraños a un lugar determinado.

Por otra parte, es necesario y positivo que existan diversas opciones de solución a este

problema. La competencia frente a una demanda permite la variedad y por ende, que las

empresas escojan la solución que más se acomode a sus necesidades, considerando

siempre sus costos y beneficios.

Sin embargo, para que un proyecto tenga éxito es imprescindible que sea transversal y

universal. Que sea estándar, flexible, manipulable, y accesible económicamente; que

tenga una vasta cantidad de funciones y soluciones. De esta manera podrá cubrir la

necesidad de una gran parte de la demanda, y podrá constituirse como un sistema

efectivo y rentable.

Utilizando la biometría, la necesidad de identificarnos puede cubrirse, encargando a ella

la medición de características biológicas del ser humano. En este caso, el

reconocimiento facial y dactilar.

En este proyecto, se presenta un informe que está diseñado para satisfacer las

necesidades de todo aquello en lo que se requiera tener el control de quién ingresa o

transita en una zona de seguridad específica. Esto es posible gracias a la tecnología de

Page 13: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

visión artificial creada con componentes de fácil acceso y manipulación.

El dispositivo Raspberry pi3 es el que se encargará de la parte relacionada con el

Software y el control del sistema. Ella hará la tarea de integrar a la base de datos a un

individuo para identificarlo posteriormente.

Teniendo un reconocimiento facial y luego uno dactilar es que se eliminara los posibles

falsos positivos que se puedan presentar, teniendo una especie de feed back, con la

ayuda de estos dos procesos es que se brindara una mayor seguridad.

1.2 OBJETIVOS

1.2.1 OBJETIVO GENERAL

- Desarrollar un prototipo de reconocimiento facial y dactilar que identifique a un

individuo, lo busque, lo agregue a una base de datos, y controle su acceso.

1.2.2 OBJETIVOS ESPECÍFICOS

- Desarrollar un sistema de reconocimiento facial mediante el uso de Python/ OpenCV

- Desarrollar y entrenar el reconocimiento de rostros nuevos.

- Desarrollar códigos que permitan asociar huellas dactilares.

- Implementar una base de datos que vincule rostro/ huella.

- Evaluar mediante pruebas experimentales los resultados finales.

Page 14: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2. MARCO TEÓRICO

2.1 ESTADO DEL ARTE

Las huellas dactilares son un patrón de identificación que es único para cada ser humano, y que

se mantiene a lo largo de la vida. Éste ha sido utilizado desde la antigüedad como un código de

identidad, y a través de la historia se ha dado uso a éstas, generando con ellas tecnologías de

reconocimiento. Actualmente están a nuestra disposición alternativas muy variadas de

estos dispositivos, para distintos usos y niveles de usuario.

Por otra parte, gracias a la visión artificial existen sistemas de control que permiten

monitorear un recinto privado, a esto se le denomina domótica. Una de sus tantas

funciones es llevar el control de asistencia para el personal de trabajo, manejando

imágenes con sus respectivos ingresos o salidas.

Al trabajar en conjunto ambos sistemas de identificación, facial y dactilar, se crea un

sistema combinado de reconocimiento de identidad mucho más preciso, reduciendo al

máximo posible el margen de error en un sistema de seguridad.

La Empresa ITecsa Identification technology, por ejemplo, ha desarrollado un

dispositivo llamado MultiBio700, que es un lector de nueva generación que ofrece

múltiples formas de identificación biométrica. Está integrado con cámara para

reconocimiento facial, lector de huella digital, pantalla Touch para contraseña y módulo

opcional de tarjetas RFID, permitiendo así configurar hasta 20 combinaciones de

verificación. (ITECRA, 2018)

Page 15: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

En modo de verificación 1: N cuenta con una capacidad de 1,500 plantillas faciales y

2,000 huellas digitales, y en modo de verificación 1:1 soporta hasta 3,000 plantillas

faciales y 5,000 huellas digitales.

Este sistema hace posible el reconocimiento facial en condiciones de nula iluminación.

Mediante un avanzado algoritmo de detección que tiene como funciones: detectar rostro

y almacenarlo; capturar la posición relativa, su tamaño, forma de los ojos, nariz,

pómulos y quijada; y crear la plantilla biométrica para verificar o identificar el rostro de

cada usuario.

Puede ser utilizado como lector autónomo conectando una cerradura eléctrica, botón de

salida, sensor de puerta y alarma; o puede ser compatible con paneles de acceso

mediante su salida de datos Wiegand.

La visión artificial es una rama dentro de la ciencia que genera tecnología, que crea y

también incorpora métodos para analizar, procesando la representación digital del

entorno, llevándola a un campo donde la computadora se maneja. Este sería su

semejante digital con información simbólica que el computador pueda manejar y

comprender fácilmente.

Page 16: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

El reconocimiento por computadora intenta asemejar las funciones de percepción visual,

tales como el reconocimiento de formas, colores o patrones. La visión artificial busca

percibir y comprender las imágenes, objetos, colores, distancias, etc.

En el reconocimiento facial, la imagen ya pasó por el proceso de detección, y en esta

etapa ya es posible reconocer características únicas en el rostro; pudiendo ingresarlo a

una base de datos ya integrada al programa. Esta cumplirá con informaciones tales

como: decir que nombre es, si se trata de un familiar, un extraño, etc.

Por otra parte, usar de forma simultánea el sistema de reconocimiento dactilar es

fundamental y determinante. Esta función disminuye el margen de error al máximo

posible, ya que además se vincula información de un patrón único e irrepetible, que es la

huella dactilar.

De esta forma, los falsos positivos de los resultados de la identificación facial pueden ser

descartados mediante esta segunda operación, que es más exacta que el reconocimiento

de un rostro, y que en conjunto con el reconocimiento facial permiten un sistema de

mejor seguridad.

2.1.1 DESCRIPCIÓN DE LA PROBLEMÁTICA

Una de las problemáticas presentes puede ser que los métodos, a pesar de sus buenos

resultados, son costosos y requieren una instalación especial dependiendo del método y

plataforma en el cual nos estemos enfocando.

Todo dispositivo de reconocimiento e identificación necesita estar dotado de la

instrumentación del procesamiento de imágenes. Este debe ser capaz de cumplir ciertas

funciones, como adaptar las obstrucciones que podrían existir al desarrollar la solución

(como estrategias de control) con capacidades de procesar la información obtenida desde

Page 17: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

el exterior. Una alternativa a esta problemática son los sistemas de procesamiento digital

de imágenes. Estos ya existen y permiten la detección de rostros y otros aspectos

biométricos.

Sin embargo, como se mencionaba anteriormente, son costosos y no entregan la

autonomía y la personalización de la solución a la problemática, lo cual se soluciona en

la propuesta de valor de este proyecto.

2.1.2 IMPACTO DE LA SOLUCIÓN

La solución planteada implica un abaratamiento de costos, desarrollo open-source y

mayor redundancia en la seguridad, lo cual lleva a este dispositivo a una potencial

posición competitiva en el mercado.

Para esto se implementarán dos sistemas que trabajarán en conjunto: Un sistema de

reconocimiento de imágenes y otro basado en el reconocimiento dactilar. El primero

creará una inteligencia en el dispositivo capaz de obtener la autonomía deseada para

realizar las distintas actividades en las que se pueda emplear, y el segundo se encargará

de corroborar la información proporcionada por el anterior de manera más exacta.

2.2 PROCESAMIENTO DIGITAL DE IMÁGENES Y VIDEOS.

El procesamiento digital de imágenes está enfocado a distintas aplicaciones: en la

fotografía, el cine, el reconocimiento, el control inteligente, la navegación controlada y

muchas otras más.

Este proyecto tiene como base el procesamiento de video por webcam, la que

desarrollará varias operaciones. Como por ejemplo, analizar la detección de un rostro,

Page 18: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

huella o imagen; que es lo esencial de esta aplicación a desarrollar. Se dará una reseña o

introducción del procesamiento digital de imágenes y videos, y se darán a conocer

conceptos necesarios para entenderlo mejor.

2.2.1 CONCEPTOS PRINCIPALES

A continuación, se nombrarán algunos conceptos fundamentales que serán considerados

como generales, y que ayudarán a la comprensión y transcurso de este documento. (R.C

Gonzales y R.E Woods, 2008)

2.2.1.1 VISIÓN ARTIFICIAL Y SISTEMAS BIOMÉTRICOS

Lo principal que debe saberse acerca de los sistemas biométricos de reconocimiento

facial es que su tarea se divide en 2 partes: una es la detección, y la otra es el

reconocimiento del rostro. Estas dos palabras tienen mucho que ver en el análisis de

imágenes, pero también deben evaluarse con detención sus diferencias.

2.2.1.2 VISIÓN ARITIFICAL

Visión artificial o visión por computadora tiene como objetivo principal extraer

información del medio ambiente o mundo físico a través de imágenes digitales, haciendo

uso de algún tipo de programación o computador.

2.2.1.3 ETAPAS DE UN SISTEMA DE VISION ARTIFICIAL

Un sistema de visión artificial cuenta con 4 etapas: Captura, Procesado, Segmentación y

Reconocimiento.

Page 19: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

1. Captura: adquisición de las imágenes digitales mediante algún tipo de sensor.

2. Pre-Procesado: preparación de la imagen, dejándola libre de ruido y enfocando

con mayor énfasis las partes que nos interesen.

3. Segmentación: aislación de la región de interés y los elementos para

interpretarla.

4. Reconocimiento: distinción de los objetos de la segmentación en función a los

parámetros y características.

Los puntos 2, 3 y 4 pertenecen a la etapa de Procesamiento.

2.2.1.4 TOMA DE IMÁGENES Y REPRESENTACIÓN

Las imágenes adquiridas por la visión artificial se trabajan en matrices representadas por

Page 20: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

pixeles. Y a su vez, estos pixeles vienen con valores numéricos RGB que van del rango

0 a 255.

Estos valores van asignados dependiendo de los siguientes componentes:

1. El color de la luz

2. La sensibilidad de la cámara

3. El material de la superficie

2.2.1.5 COMPONENTES DE LA LUZ

La luz es energía que se caracteriza principalmente por sus componentes los cuales se

pueden representar como una onda determinada de longitud y frecuencia.

La longitud de la onda indica la periodicidad con la que se repite la señal. (Michalski,

2009).

2.2.1.6 COLOR

El color es una representación de una característica que posee la luz, la cual es retenida

por el ojo humano y que depende exclusivamente de la longitud de onda.

Page 21: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Las ondas que son observadas por el ojo humano se encuentran en el rango de 400 a 700

nanómetros en su longitud de onda.

2.2.1.7 ESPECTRO OBSERVADO POR EL OJO HUMANO

El espectro observado por el ojo humano va de 400 a 700 nm, la luz con una longitud de

onda más baja serán de color azulado y violeta, la luz que tenga una longitud de onda

más cercana a los 700 nm será percibida como color rojo, en este conjunto de

parámetros se encuentran los demás colores.

Siguiendo esta lógica hay luz con muchos componentes los cuales se combinan y crean

luces de distintos colores, combinándolos muchas veces entre ellos, creando colores por

media de la combinación de ondas de sus componentes.

Page 22: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.8 MATERIAL DE LA SUPERFICIE

La procedencia del material, sus características y sus pigmentos determinan la longitud

de onda que emite y recibe el material. Esto depende de los distintos pigmentos que

puede contener la superficie.

La luz que rebota de un material es sólo una parte de toda la luz que incide, y la

representaremos en una función de longitud de onda S. La luz que emite la

representaremos como función de I.

Así, si se tiene una luz que puede alcanzar la cámara de un punto en cuestión azul, y se

le inyecta una luz amarilla, se logrará como consecuencia que se mezclen entre sí, y se

obtendrá un producto con tonos verdosos. (Michalski, 2009)

𝐼(𝑎)𝑥 𝑆(𝑎) = 𝐼(𝑎)𝑆(𝑎)

Page 23: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.9 SENSIBILIDAD LUMÍNICA DE LA CÁMARA

Las cámaras para tener un mayor alcance sobre las longitudes de onda de las imágenes,

poseen 3 tipos de sensores los cales bordean las longitudes de ondas para cubrir todo el

espectro visible (Michalski, 2009)

Page 24: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Azul = B Verde = G Rojo= R Todos en la onda de alpha.

Los valores que obtendremos de RGB son propuestos a cada pixel, y el resultado de la

integración del producto de las 3 funciones será: la luz, función superficie y el sensor.

(𝑅, 𝐺, 𝐵) = (∫ 𝐼(λ)S(λ)R(λ)dλ, ∫ 𝐼(λ)S(λ)G(λ)dλ, ∫ 𝐼(λ)S(λ)B(λ)dλ) )

2.2.1.10 SENSOR CCD

EL sensor CCD (Charge Coupling Device) da como resultado una mejor imagen que los

otros sensores, como es el caso de cámaras profesionales. Estas poseen un sensor para

cada color, haciendo una mejor tarea y facilitando la solución, al contrario de las otras

cámaras que poseen un solo sensor para todo el espectro de luz.

De este modo, se construirán en forma de mosaico los detectores de colores, se capturará

una menor densidad de la imagen, y se enviará la información serializada fila a fila.

Page 25: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.11 SENSOR CMOS

En el sensor CMOS cada celda es independiente. Esto significa que la digitalización de

la imagen a los pixeles se realiza internamente en los transistores que posee cada celda.

Aquí, todo el trabajo lo hace el sensor y no se necesita un chip adicional que haga esta

función. Esto permite simplificar las estructuras de las cámaras y hacer equipos más

reducidos. (Gordon Wan, 2012)

Page 26: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.12 PATRONES LOCALES BINARIOS

Calculan una representación local de la textura. Esto se logra con la comparación de

cada pixel con su vecino o mejor dicho, su vecindario: los pixeles que tienen más

proximidad del pixel en cuestión (Haizhou, 2005)

2.2.1.13 VECINIDAD

El valor de la vecinidad o LBP se calcula con el nivel de gris que posee un pixel en

cuestión, y se compara con el nivel de gris que contienen sus demás vecinos con los que

limita.

Dependiendo del grado de vecindad es que operaremos este método al 4 o al 8.

Page 27: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

La vecindad procesa la imagen en una umbralización, acumulando la cadena de los

pixeles vecinos y almacena el valor decimal de la salida LBP, esto se hace para cada

pixel de la imagen. (Martin, 2004)

2.2.1.14 HISTOGRAMA

Es una representación gráfica de barras, en la que la altura de cada barra nos muestra el

número de pixeles que posee determinado nivel de grises. (Martin, 2004).

Page 28: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.15 TIPOS DE FILTROS PARA IMAGENES

A continuación se darán a conocer algunos de los filtros que se usan en el procesamiento

digital de imágenes, para los siguientes propósitos.

1) Suavizar la imagen: Reducir las variaciones de intensidad entre pixeles vecinos.

2) Eliminar el ruido: Cambiar aquellos pixeles cuyo nivel de intensidad es muy

diferente al de sus vecinos.

3) Realzar la imagen: Aumentar las variaciones de intensidad, para poder asi

enfocar la imagen deseada.

4) Detectar bordes: Detectar aquellos pixeles donde se produce un cambio brusco

en la función intensidad.

2.2.1.15.1 FILTRO DE CONTRASTE

El contraste como definición es la diferencia de la intensidad entre una zona exacta de la

imagen con su entorno o alrededores. Una imagen con alto nivel de contraste representa

un histograma con barras más separadas, como segmentando el nivel de grises.

Page 29: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

(Martin, 2014)

2.2.1.15.2 THRESHOLDING O FILTRO DE UMBRALIZACION

El Threslholding o umbralización es un método muy importante al momento de hablar

de segmentación. El método consiste en convertir una imagen deseada en escala de

grises, la cual será modificada a una nueva con sólo 2 niveles; y generando como

resultado que los objetos quedan totalmente separados del fondo.

Page 30: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.15.3 FILTRO DE MEDIA

El filtro de media es uno de los más simples filtros a usar, es intuitivo y facil de

implementar para suavizar imágenes, la función de este filtro es reducir la cantidad de

variaciones de intensidad entre pixeles vecino.

Este filtro de media tiene como modo de operación el siguiente, visita cada pixel de la

imagen y la reemplaza por la media de los pixeles vecinos, se puede operar atraves de la

convolucion de una máscara determinada.

Ejemplo mascara de convolución de 3x3.

Page 31: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.15.4 FILTRO CANNY

El algoritmo de Canny permite una localización más precisa de los bordes o “edges”, ya

que los reduce a una anchura de un pixel, con este algoritmo evita las posibles rupturas o

discontinuidades en los bordes, reduce la cantidad de bordes ruidosos y permite cerrar

los contornos de la imagen propuesta. . (Canny, 1987)

El algoritmo de canny consiste en tres etapas:

a) Obtención del gradiente: En esta etapa se calcula la magnitud y orientación del

vector gradiente en cada pixel.

b) Supresión no máxima: En esta etapa se logra el adelgazamiento del ancho de los

bordes, obtenidos con el gradiente, hasta lograr bordes de un pixel de ancho.

c) Histeresis de Umbral: En este paso se aplica una función de histeresis basada en

dos umbrales; con este proceso se pretende reducir la posibilidad de aparición de

contornos falsos.

Page 32: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.15.5 FILTRO GAUSSIANO

El filtro gaussiano se usa para emborronar imágenes y eliminar el ruido que pueda tener

la imagen a tratar. Usa un tratamiento similar al filtro de media pero se usa una máscara

diferente, la función gaussiana seria la siguiente.

𝐺(𝑥, 𝑦) =1

2𝜋𝜎2𝑒

−𝑥2+𝑦2

2𝜎2

Una de las ventajas que tiene el filtro gaussiano frente a otros filtros como el de media,

es que es separable, es decir, en lugar de realizar una convolución bidimensional,

podemos realizar o separar estas convoluciones en 2 unidimensionales, una en sentido

horizontal y otra en sentido vertical.

Page 33: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.2.1.16 RECONOCIMIENTO BIOMETRICO DACTILAR

El reconocimiento de huellas dactilares es uno de los métodos más populares usados con

mayor grado de éxito para la identificación de personas. La huella dactilar tiene

características únicas llamadas minucias, las cuales son puntos donde los bordes

terminan o se dividen. Los sistemas de identificación que usan patrones biométricos de

huella dactilar se denominan AFIS (Sistema de Identificación Automático de Huella

Dactilar). En este trabajo se realizó un sistema para reconocimiento de huella dactilar

usando combinación de Transformada Rápida de Fourier (FFT) con Filtros de Gabor

para aclarar la imagen y después un novedoso método para el reconocimiento usando

características locales. (Aguilar, Sanchez, Toscano, Nakano y Perez, 2008)

2.3 HERRAMIENTAS UTILIZADAS

A continuación, se dará la explicación de cada una de las herramientas que se utilizarán

para llevar a cabo las tareas de reconocimiento.

Ambos dispositivos conforman una serie de requerimientos: cámara web, PrintFinger,

Raspberry pi 3, Python 2.7, Numpy y OpenCV 3.x.

2.3.1 HERRAMIENTAS PARA EL RECONOCIMIENTO DE OBJETOS

Existen distintos tipos de métodos para el reconocimiento, pero cada uno de ellos sirve

para disntintas cosas o fue diseñado para un objetivo en específico, a continuación se

darán a conocer algunos de los métodos usados para el reconocimiento de objetos en

imágenes.

2.3.2 TEMPLATE MATCHING

Page 34: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

El template matching es un método que se utiliza para encontrar objetos en una imagen,

esta funciona con la comparación de las imágenes o plantillas.

El método de comparación es un método para encontrar la ubicación de la imagen dentro

de una plantilla más grande.

En OpenCV la función escrita en el código es cv2.matchTemplate(), esta función hace

una comparación y compara plantillas (Mordvintsev. 2016)

Si la imagen de entrada tiene dimensión de (W+H) siendo W el ancho de la imagen de

entrada, H el alto de la imagen y la imagen de la plantilla es de (w+h) la imagen de

salida tendrá el tamaño de (W-w+1, H-h+1).

Posteriormente se utiliza el comando cv2.minMaxLoc() con esta función podemos

encontrar el valor máximo y mínimo.

Como usamos (W, H) como las dimensiones del rectángulo o zona de interés.

Para utilizar la función Matching de varias plantillas utilizamos un umbral.

2.3.2 SIFT: SCALE INVARIANT FEATURES TRANSFORM

SIFT (En español, detección invariante de puntos característicos) es uno de los métodos

Page 35: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

de detección de puntos invariantes más utilizados. Este método transforma los datos de

la imagen en caracteres invariantes a la rotación, escala, translación y también a la

iluminación.

Cada uno de estos caracteres se considera único para cada imagen y dice también sobre

la posición de esta, la escala y su vector descriptivo.

Desde las características locales, se busca conseguir la escala de invariancia, la

orientación y los cambios de luz. Esto se puede utilizar igualmente para buscar

correspondencias en diferentes puntos de una escena o perspectiva, estas se almacenan

en los llamados descriptores.

El método SIFT es invariante con respecto a la rotación. (Hess, 2011)

.

2.3.3 SURF: SPEED-UP ROBUST FEATURES

Page 36: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Este algoritmo tiene cuatro fases similares al método SIFT, y su propósito es poder

extraer los puntos clave en las imágenes. La principal diferencia radica en que SURF es

mucho más veloz en cuanto al procesamiento.

El vector que genera es de un tamaño de 64 bits. Las etapas de este método son la

generación de la imagen integral para poder realizar los cálculos necesarios; la creación

del espacio escala mediante aproximaciones a la derivada de la función gaussiana;

localización de puntos invariantes o puntos clave (mínimos y máximos en el espacio

escala); orientación mediante wavelets Haar; y la generación del descriptor.

Este método o algoritmo de detección de puntos clave utilizado es el de Vecino más

cercano, que se calcula con la distancia euclidea entre los vectores singulares.

Para aumentar la confiabilidad de este método de emparejamiento, se impone un umbral

entre las distancias del vecino más cercano con el que este más próximo a este es decir el

segundo más cercano, con esto, se garantiza que el vecino más cercano sea un punto más

singular y clave, así se reduce los fallos en un 90% (I. García Barquero, 2010).

Page 37: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.4 HAARCASCADE

EL método de Haarcascade propuesto por Paul Viola y Michael Jones, es un algoritmo

de detección el cual se basa en características clasificadoras en cascada. Este método es

muy efectivo a la hora de clasificar y detectar ciertos objetos en las imágenes. Fue

presentado por sus autores en el artículo “Rapid Object Detection using a Boosted

Cascade of Simple Features” en el año 2011.

Es un algoritmo de machine learning que tiene una función en cascada entrenada para

una gran cantidad de imágenes a detectar, en las cuales se presentan imágenes positivas

a la detección y otras que no. Este método se utiliza para detectar objetos en otras

imágenes. (Santana, 2009)

Este algoritmo tiene como inicialización la incorporación de imágenes positivas

(imágenes de rostros) e imágenes negativas por llamarlas así (imágenes las cuales no

aparecen caras) para así entrenar el clasificador de Haarcascade.

Para poder ejecutar esta metodología de reconocimiento hay que extraer las

características del objeto en cuestión. Estas características son llamadas “características

haar”. Cada característica obtenida por el clasificador es un solo valor obtenido, restando

la suma de los pixeles bajo rectángulo blanco de suma de pixeles bajo rectángulo negro.

El clasificador final es una suma de las ponderaciones de los clasificadores más débiles.

Se les llama débiles por el simple hecho de que no son tan relevantes, y con estas

características únicamente, no se podría realizar o detectar los objetos en cuestión

(rostros), en el artículo suponen una estadística de 200 características proporcionan una

detección eficaz de un 98%.

Generalmente en las imágenes, la mayor parte del área de ellas está compuesta por zonas

Page 38: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

donde no se encuentra la cara. Por lo tanto este método es lo más acertado a la hora de

reconocer caras, porque a su vez es muy sencillo. Por ejemplo, comprobar que una silla,

puerta o cuadro colgado en la pared no es una cara, así el clasificador ya tendrá guardado

que cierto objeto no es un acierto para la detección y lo tendrá familiarizado, y así el

algoritmo no lo procesara nuevamente. El método tendrá como primer objetivo la región

donde no puede haber un rostro, y así se podrá encontrar con mayor sencillez y eficacia

una zona donde se encuentre un rostro. (Viola y Jones, 2001)

2.3.4.1 METODOLOGÍA DEL ALGORITMO HAARCASCADE

La metodología de este algoritmo se divide en tres etapas; en la primera se realiza una

transformación de la imagen generando una nueva llamada imagen integral, en la

segunda etapa se realiza la extracción de características usando filtros con base Haar, y

por último se usa boosting para la construcción de clasificadores en cascada. (Guevara,

Echeverry & Urueña, 2008)

Page 39: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.4.2 IMAGEN INTEGRAL

Esta imagen permite extraer de forma rápida características a diferentes escalas ya que

no se trabaja directamente con los valores de intensidad si no con una imagen

acumulativa que se construye a partir de operaciones básicas

La imagen integral, en la localización x, y, contiene la suma de los píxeles de la parte

Page 40: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

superior izquierda de la imagen y se puede calcular como se indica a continuación:

II(x, y) = ∑ 𝑙𝑚(𝑥′, 𝑦′)

x′≤x, y′≤y

Donde II (x,y,) es la imagen integral e Im(x,y) es la imagen original.

2.3.4.3 EXTRACCIÓN DE CARACTERISTICAS HAAR

En imágenes las características de cada objeto se extraen al aplicar ciertas funciones que

permitan la representación y descripción de los objetos de interés de la imagen

(patrones). La extracción de características es un paso en el reconocimiento de patrones

en el cuál las medidas u observaciones son procesadas para encontrar a tributos que

puedan ser usados para asignar los objetos a determinada clase.

En la metodología seguida, la extracción de características es realizada aplicando a la

imagen filtros con bases Haar. Estos filtros pueden ser calculados eficientemente sobre

la imagen integral, son selectivos en la orientación espacial y frecuencia, y permiten ser

modificados en escala y orientación.

Page 41: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Los filtros con bases Haar, realizan una codificación de diferencia de intensidades en la

imagen, generando características de contornos, puntos y líneas, mediante la captura de

contraste entre regiones.

2.3.4.4 CLASIFICACIÓN HAARCASCADE

Esta etapa dentro del algoritmo de detección se encarga de asignar un conjunto de

características dado a una clase con la que se encuentra una mayor similitud.

Es un método de clasificación que combina varios clasificadores básicos para formar un

único clasificador más complejo y preciso. La idea se basa en la afirmación de que

varios clasificadores sencillos, cada uno de ellos con una precisión ligeramente superior

a una clasificación aleatoria, pueden combinarse para formar un clasificador de mayor

precisión, siempre y cuando se disponga de un número suficiente de muestras de

entrenamiento. La aplicación de clasificadores en cascada ha permitido obtener buenos

resultados. (Guevara, Echeverry & Urueña, 2008).

Page 42: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.5 ELECCIÓN DEL MÉTODO

La razón por la cual se utilizará el método de Haarcascade se debe a que, si bien el

método es sencillo y básico en cuanto a las distintas dificultades que presentan las

imágenes (como variaciones de luz, rotación, etc), es muy eficaz al momento de la

detección y post reconocimiento de caras.

Los métodos y características de este algoritmo ayudan mayormente en esta tarea de

reconocimiento facial

2.3.6 RASPBERRY PI 3 B

Raspberry es un microcomputador de bajo costo que puede utilizarse para tareas

específicas, al contrario de un computador personal.

Dada sus características de hardware reducida, el consumo de recursos es muy bajo en

comparación a un PC, por lo que este dispositivo de placa reducida se puede mantener

funcionando por tiempos indefinidos, pero a la vez, no tiene mayores capacidades en

cuánto a memoria, espacio de almacenamiento, memoria de video, o memoria ram como

para realizar más tareas simultáneamente, o tareas que requieran mayores requerimientos

que si puede realizar una computadora personal.

(Dhaval, Darde y Chitalia, 2013)

Page 43: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.6.1 CARACTERÍSTICAS DEL SOFTWARE

El Sistema operativo oficial para el dispositivo Raspberry es el Raspbian, que es

exclusivamente para el uso de Raspberry pi. Está basado en la distribución de

GNU/LINUX, Debian y para ser instalada hay que grabar la imagen de ésta en una

tarjeta micro SD. Este dispositivo ofrece acceso a través de líneas de comandos o por

SSH (Secure Shell), y posee un Desktop o escritorio basado esencialmente en LXDE

(Entorno de Escritorio x11 Liviano) (Depht, 2014).

Page 44: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.6.2 CARACTERÍSTICAS DEL HARDWARE

Los Hardware de este microcomputador presentan las siguientes características.

DATOS TÉCNICOS

Dimensión 85x54 mm

Procesador ARMv8

Velocidad del

Procesador 1.2Ghz

Memoria RAM 1 GB

Procesador Grafico GPU Video Core IV graphics

core

System on a Chip Broadcom BCM2835

Amperaje 2.5 A

Este dispositivo se alimenta a través de un adaptador AC/DC con salida de 5 V del tipo

micro USB.

Los elementos de entrada y salida, al igual que un PC, hay varios puertos para los

periféricos:

Puertos de salida de video HDMI

Puerto de salida de video RCA

Puerto de salida de audio Jack 3.5 mm

Puertos USB 2.0

Puerto Ethernet RJ.45 para conexión de Internet

Ranura para Tarjeta SD para almacenamiento de datos.

Puertos GPiO para pines y periféricos específicos.

Page 45: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.7 MODULO FINGERPRINT:MIAXIS BIOMETRICS SM-621

Es un modulo optico de verificacion de huellas dactilares de la marca Mixis Biometrics

co. Este modulo consta de una memoria flash de alta capacidad y un sensor óptico

CMOS a color, también un procesador digital de señales de alta calidad que hace una

comunicación mucho mas efectiva y segura.

Con este dispositivo se puede realizar tareas de enrolamiento de huellas digitales,

procesamiento de imágenes, almacenamiento de perfiles, compararmiento de huellas y le

búsqueda de ellas mismas.

2.3.7.1 CARACTERISTICAS FINGERPRINT MIAXIS BIOMETRICS SM-621

Amplia funcionalidad: Realiza de forma independiente tareas de enrolamiento de huellas

digitales, procesamiento de imágenes, almacenamiento de templates, verificación de

huella 1:1 o búsqueda de huella 1:N a partir de comandos de un PC o microcontrolador.

Fácil de desarrollar: Interpreta simples comandos lo que lo hace fácil de usar para

personal no conocedor de la tecnología de lectura de huella digital.

Interfaz altamente compatible: Requiere una alimentación de 3.6V hasta 7V e interfaz de

comunicación serial. También posee protocolo de comunicación estándar UART con dos

niveles lógicos disponibles y baud rate configurable.

Diseño de bajo consumo de energía: Función Sleep configurable para bajo consumo de

energía.

Page 46: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Alta adaptabilidad: El algoritmo de lectura del equipo es excelente, fue diseñado a partir

de la teoría de imagen óptica y tiene gran tolerancia a errores.

Nivel de seguridad ajustable: Los usuarios pueden configurar el nivel de seguridad del

lector dependiendo de las condiciones de la aplicación.(Miaxis Biometrics, 2007)

Page 47: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.7.2 PINOUT DEL MODULO FINGERPRINT SM-621

El pinout se distribuye en una hilera de 6 filamentos los cuales se configuran de la

siguiente manera.

PIN NOMBRE DEFINICION TIPO Función

1 VIN Fuente de alimentacion P DC: 3.6 V - 7 V

2 TD Transmisión de datos O OC output; HOST se debe conectar al pull-up de impedencia

3 RD Recepcion de datos I TTL Level 3.3 V or 5 V

4 NC

5 EN Control de ABLE I

Cuando esta conectado al pull-up de impedancia funciona normalmente, cuando esta conectado a la tierra, se corta el modulo

6 GND Fuente de almientacion y Tierra P Fuente de alimentacion y Tierra

2.3.7.3 PROTOCOLOS DE COMUNICACIÓN MODULO SM-621

El Host en pro de una comunicación efectiva entre el modulo y su programación envía

comandos para realizar disinttas funciones del modulo, tales como recepción y envio de

comandos/datos/estructuras, estas están codificadas en paquetes de este protocolo. En

cuanto al contenido de estos paquetes, se clasifican en los siguientes tres.

Paquetes de Ordenes.

Page 48: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Paquete de datos.

Nota: Los paquetes de datos no siempre están solos, la mayoría de las veces son varios

paquetes de datos que consisten en múltiples datos, este se la llama proceso de

transmisión.

Paquete de Fin.

Nota: Este tipo de paquete está presente cuando se envía un conjunto de paquetes de

datos dando un fin a la cadena de paquetes. Es la última en el lote de paquetes de datos.

Page 49: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.7.4 CODIFICACION Y DECODIFICACION

Todos los paquetes deben ser codificados antes de su transmisión, el receptor recibe el

paquete y solamente después de la decodificación puede obtener la información del

paquete.

Reglas de Codificacion.

1) El carácter 0xC0 se utiliza como inicio y fin del paquete de datos.

2) Si en el paquete existe algún 0xC0, este se debe reemplazar con 0xDB y 0xDC.

3) Si en el paquete existe 0xDB, añadir 0xdd después de ella.

4) Un paquete de datos no puede ingresar al Diagrama de Flujo de forma

independiente, debe seguir el protocolo de comunicación con un paquete de

comandos antes o un paquete de respuesta. Lenght del paquete indica los bytes

del contenido del paquete.

Reglas de Decodificacion

1) El carácter 0xC0 recibido por el destinatario es considerado como una marca o

límite de fase.

2) Si se recibe un 0xDB o 0xDC, reemplazarlo por un 0xC0.

3) Si se recibe un 0xDB reemplazar con un 0xdd, siguiente de esto eliminar un

0xdd

4) La suma de control de todos los bytes desde la bandera hasta el CheckSum. No

tener en cuenta los valores que exceden de 2 bytes.

Ejemplos de códigos.

Codificacion detección de dedo – Paquete de comandos.

Page 50: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Codificacion Paquete de datos

2.3.7.5 DIAGRAMA DE FLUJO DE COMANDOS DE CONTROL

El Host o Pc utiliza las instrucciones de comandos para controlar el mdoulo SM-621

para asi poder realizar diversas tareas, como enrolar una huella, buscar una huella en la

base de datos, etc.

Page 51: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

ENROLAMIENTO DE HUELLA DACTILAR

Page 52: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

LEER O CARGAR UNA PLANTILLA DESDE LA BASE DE DATOS

Page 53: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

VERIFICACION DE HUELLA DACTILAR

Leer la huella actual y compararla con la base de datos de huellas que van de 10-100

2.3.7.6 MODULOS DE COMANDOS

Numero Comando Codigo Funcion

1 DetectFinger 01H dectar dedo en el sensor

2 GetImage 02H obtener imagen desde el sensor

3 GenTemplet 03H generar minucias de huellas dactilares

4 MoveTemplet 20H mover archivos

5 MatchTwoTemplet 04H Verificacion exacta de buffer A y B

6 Search 05H Busqueda de minucias en el buufer A y B

Page 54: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

7 MargueTwoTemplet 06H Combinar archivos de Buffer A y B y generar una plantilla

8 StoreTemplet 07H archivar una plantila de una huella dactilar

9 LoadTemplet 08H leer una plantilla a partir de una huella digital

10 UpTemplet 09H cargar archivos a la memoria caracteristica para el HOS

11 DownTemplet 0AH descargar un archivo que este cargado el buffer

12 UpImage 0BH cargar imágenes

13 DownImage 0CH descargar imágenes

14 DeleteOneTemplet 0DH eliminar una base de datos de huellas dactilares

15 EraseAllTemplet 0EH borrar todas las huellas datilares

16 ReadParTablet 0FH Parametro de lectura de datos

17 SetsecurLecel 12H Establecer niveles seguros o configurarlos

18 setpwd 13H Establecer contraseña con patron de manos

19 VfyPwd 14H Verificar contraseña con patron de manos

20 Reset 15H Reiniciar el sistema

21 FlashLed 16H indicacion de la luz led

22 WriteNotePad 23H Escribir bloc de notas

23 ReadNotePad 24H Leer bloc de notas

24 LevelSearch 25H Busqueda por nivel

25 CheckTemplet 28H Buscar la base de datos de huellas dactilares

2.3.7.7. COMANDOS DE VERIFICACION

Page 55: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …
Page 56: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.7.8 EJEMPLOS DE COMANOS Y VERIFICACION

Detecta Dedo

Comando : DetectFinger

Funcion: Detectar dedo en el lector.

Parametro de entrada: Ninguno

Page 57: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Return Parametro: Confirmacion Bit

Codigo del comando: 01H

Formato de paquete de comandos:

Formato de la respueta a el paquete de comandos.

Nota: Confirm code 00H = dedo detectado

Confirm code 01H= Error al recibir el paquete

Confirm code 02H= dedo no detectado

2.3.8 MODULO CONVERTIDOR SERIAL FT232rl FTDI USB A TTL

Es un modulo adpatador USB a UART (USB-TTL) el cual cuenta con 6 pines machos

para la comunicación. Puede ser usado para modulos Xbee o para adaptar cualquier

moodulo que sea TTL a USB, con esto se puede conectar a innumerables dispositivos

raspberry pi 3, pc, etc y también para comunicarse atraves de modulos Bluetooth, Wifi,

GSM y GPS.

Page 58: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.3.9 WEB CAM USB

La cámara a utilizar será una cámara para pc genérica conectada vía USB 2.0, contiene

un sensor CMOS y 8 mega pixeles, se eligió esta cámara por ser compacta y versátil,

también por su alta resolución en cuanto a costo se refiere.

MARCA VAKIND

PIXELES 8 Megapixeles

SENSOR CMOS

VIDEO

RESOLUTION 5 Megapixeles

MAX

RESOLUCION 640x480

INTERFAZ USB 2.0

FRAME RATE

320x240 /

640x480

LENTE OPTICO

Page 59: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.4 HERRAMIENTAS UTILIZADAS PARA LA PROGRAMACION

A continuación, se dará la explicación de cada una de las herramientas que se utilizarán

para llevar a cabo las tareas de reconocimiento.

2.4.1 PYTHON 2.7

Es un lenguaje que permite múltiples estilos de programación. Permite dar un uso

orientado a objetos, a usar programación imperativa y funcional; y si se requiere usar

otro estilo, se puede añadirle una extensión.

Otra característica muy importante es su sintaxis en la resolución dinámica de nombres,

enlazando a él su nombre y un nombre de variable durante la ejecución del programa.

2.4.2 OPENCV 3.0

Opencv es una biblioteca de uso libre de visión artificial, desarrollada por Intel. Su

primer lanzamiento fue en el año 2000 y tiene una infinidad de aplicaciones. Desde

sistemas de seguridad con detección de movimiento, hasta programas que desean

reconocer objetos.

Es de uso libre porque está bajo licencia BSD, lo que permite que sea usada libremente

para distintos motivos: comerciales o con fines de investigativos.

Opencv es compatible con todos los algoritmos relacionados a la visión por

computadora y Machine Learning.

Page 60: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Requerimientos Opencv 3.0 es compatible con varios lenguajes de programación como

Java, Ruby, C, C++ y Python, también tenemos como requerimientos el uso de Gcc 4.4

y Cmake 2.8.7 o posterior.

2.4.3 NUMPY

Numpy es una extensión de Python, en la que es posible dar soporte a grandes y

múltiples matrices. Es una biblioteca de alto nivel matemático que es necesaria para

operar en ellas. Numpy es una extensión y librería de código abierto y tiene bastantes

colaboradores que hacen mucho más grandes los usos de esta gran extensión.

Numpy se utilizara para realizar los grandes cálculos matemáticos requeridos por

OpenCV para el tratamiento de imágenes, ya que divide la imagen a tratar en matrices

rellenas por pixeles, si no fuera por esta herramienta, los cálculos matemáticos serían

muy complejos de realizar y gastarían una infinidad de tiempo.

2.4.4 MYSQL

MySQL es una de las bases de datos más populares del mundo, ya que es de código

abierto, desarrollada por Oracle. Con su rendimiento, facilidad de uso y versatilidad,

MySQL se ha convertido actualmente en la principal opción para bases de datos para

aplicaciones Web, es utilizada por propiedades web de alto perfil, como lo es Facebook,

Twitter, Youtube, etc.

Bajo estas características y referencias, es que se utilizara MySQL para la base de datos

de los rostros y huellas dactilares.

Page 61: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2.4.5 PHP

2.4.6 APACHE

2.4.7 LIBRERÍA TIME

3. DESARROLLO

3.1 MODELAMIENTO DE LA SOLUCION

La estructura del proyecto se compone de dos partes, una es el reconocimiento facial y la

otra parte es el reconocimiento dactilar, las dos se llevan a cabo en el mismo dispositivo

(raspberry pi 3 ).

1) El reconocimiento facial consta de dos fases igualmente, una que se encarga que

el programa capture unas fotos y logre identificar el rostro en cuestión, y la otra

fase que se encarga del reconocimiento de este rostro, si la cara que se encuentra

frente a la cámara se encuentra en la base de datos.

2) El reconocimiento dactilar posee dos fases, una de enrolamiento donde

asociamos la huella con un nombre en específico, posteriormente dentro de el

mismo software podemos exportar la imagen de la huella, reconocerla, enrolar

otro dedo.

Page 62: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

En la microcomputadora Raspberry pi 3 se debe instalar Python 2.7 y OpenCV 3.0 para

esto, en este proyecto accederemos de manera remota desde otra computadora para

acceder al terminal de la Raspberry pi 3.

Una de las formas para obtener una conexión SSH (Secure Shell) entre nuestra

computadora y la Raspberry pi 3, es por medio del programa PuTTy.

Page 63: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

3.1.1 PUTTY

Para poder acceder a la microcomputadora Raspberry pi 3 remotamente desde Windows,

debemos utilizar el programa PuTTy que es un cliente SSH para el sistema operativo.

Se puede obtener desde la página web oficial del software (http://www.putty.org), se

puede descargar en la modalidad portable o mediante una previa instalación.

Una vez ya descargado el porgrama, se desplegara la ventana principal en donde

deberemos insertar el nombre del servidor, el protocolo de comunicación que se utilizara

y el puerto de conexión. Para este proyecto en especificio la configuración será la

siguiente.

PARAMETROS

Servidor 192.168.0.20

Protocolo SSH

Puerto 22

Page 64: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Con esta configuración de parámetros le damos al botón Open y se abrirá un terminal de

comandos que nos pedirá el usuario y contraseña para el acceso a nuestra Raspberry pi

3, después de haber ingresado los datos correctamente podremos dar por iniciada la

sesión con la microcomputadora.

3.1.2 INSTALACION PYTHON 2.7, OPENCV 3.0 y NUMPY.

La instalación de Python, opencv y numpy en este proyecto son esenciales para el

funcionamiento de este, y para lograr la instalación se deben ejecutar los siguientes

comandos en el terminal de la raspberry. Pi 3.

1) Lo primero que haremos será actualizar el sistema operativo Raspbian y luego

actualizar el administrador de paquetes apt-get.

$ sudo apt-get update

$ sudo apt-get upgrade

Luego de esto reiniciar la raspberry pi 3

$sudo reboot

Page 65: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

2) Luego que la Raspberry pi se haya reiniciado, podremos ejectuar el siguiente

comando para la instalación de la Herramientas del Desarrollador.

$ sudo apt-get install build-essential cmake git pkg-config

3) La extensión OpenCV es una biblioteca que opera con graficos que funciona en

imágenes, muchas de estas se encuentran en formatos comprimidos. Por lo tanto,

es necesario instalar las libreririas necesarias que permitan trabajar en estos

formatos de imágenes, como lo son JPEG, JPG, PNG, TIFF, etc

$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-

dev

4) OpenCV tambien opera en formatos de videos, para lo cual es necesario instalar

los siguientes paquetes.

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get libv4l-dev libxvidcore-dev libx264-dev

5) Para realizar interfaces gráficas y mostrar videos a traves de la pantalla, es que

se necesita la biblioteca de GTK para que se pueda compilar el submodulo

highgui de OpenCV.

$ sudo apt-get install libgtk2.0-dev

6) Se instalara unos paquetes adicionales para cálculos matriciales dentro de

OpenCV.

$ sudo apt-get install libatlas-base-dev gfortran

7) Ahora se instalara el lenguaje de programacion Python 2.7 para poder trabajar en

el entorno OpenCV.

$ sudo apt-get install python2.7-dev python3-dev

8) Descarga OpenCV 3.0, también se descargara e instalara librería Opencv

contrib que no es oficial, pero posee varias herramientas las cuales son de gran

ayuda.

Page 66: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

$ cd ~

$ wget -O opencv.zip https://github.com/ItSeez/opencv/archive/3.0.0.zip

$ unzip opencv.zip

$ wget -O opencv_contrib.zip

https://github.com/ItSeez/opencv_contrib/archive/3.0.0.zip

$ unzip opencv_contrib.zip

9) Instalación de pip.

$ wget https://bootstrap.pypa.io/get-pip.py

$ sudo python get-pip.py

10) Se instala virtualenv y virtualenvwrrapper, estos 2 paquetes sirven para realizar

proyectos por separados en el entorno Python 2.7.

$ sudo pip install virtualenv virtualenvwrapper

$ sudo rm -rf ~/.cache/pip

11) Para la instalación de estos dos paquetes es necesario configurar el archivo ~ /

.bashrc y agregar las siguientes líneas al final

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

12) Ejecutar el archive para cargar los cambios realizados.

$ source ~/.profile

13) Se crea el entorno virtual que se usara exclusivamente para OpenCV

$ mkvirtualenv cv

14) Se instala el complemento para cálculos numéricos Numpy

$ pip install numpy

15) Compilacion e Instalacion de OpenCV

$ cd ~/opencv-3.0.0/

$ mkdir build

$ cd build

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.0.0/modules \

-D BUILD_EXAMPLES=ON ..

16) Se compila OpenCV, dentro del entorno cv.

Page 67: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

$ make

17) Se instala OpenCV

$ sudo make install

$ sudo ldconfig

18) En el directorio /usr/local/lib/python2.7/site-packages se instalaran estos

paquetes de sym-link de OpenCV. $ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/

$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

19) Con esto se termina la instalacion de OpenCV 3 y Python 2.7, y probamos. $workon cv

$python

>>> import cv2

>>> cv2.__version___

‘2.4.10’

3.2.2 PROCESAMIENTO DE LA IMAGEN

En el siguiente capitulo se darán a conocer los pasos a seguir para el

reconocimiento de imágenes, las cuales pasan por diferentes procesos para poder

trabajarlos.

La forma del proyecto empieza por la adquisición de datos desde el entorno por

medio de una cámara digital. Con el objetivo de realizar una detección de una

imagen en particular, en este caso un rostro. Cuando el dispositivo detecte un

rostro en imagen ingresada, el aparato podrá comparar si se encuentra en la base

de datos de rostros enrolados o es la de un desconocido, y si es la de un

desconocido tener la opción de enrolarla.

Para poder llevar a cabo esta tarea se deben procesar previamente las imágenes,

es decir estas deben pasar por un pre-proceso, los cuales son: conversión a escala

de grises, filtrado de imagen y umbralizacion, esta imagen procesada ya se

utilizara para la etapa de detección de la imagen en este caso un rostro

posteriormente el rostro también se encerrara en un rectángulo.

Page 68: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

3.2.2.1 DIAGRAMA DE MODULOS DE DETECCION REGION DE INTERES

(ROI)

Una vez se haya procesado la imagen limpiándola en el pre-procesamiento, le

aplicaremos a la imagen el algoritmo Haarcascade previamente entrenado para detección

Page 69: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

de rostros de la manera frontal, de esta manera el algoritmo determinara las

particularidades o características del rostro ojos, nariz, boca, etc.

Posteriormente una vez obtenidas las características Haar se determina la posición del

rostro en la imagen y con esto señalamos a través de un rectángulo la región de interés

(ROI) en este caso la cara de una persona.

3.2.2.1.1 ETAPA PRE-PROCESAMIENTO

Esta etapa de pre-procesamiento de imagen consta de 3 etapas.

Conversion escala de gris .

Filtrado de imagen(GaussianBlur).

Umbralizacion (Threshold)

Esta es la primera etapa para el procesamiento de imágenes en donde preparamos

previamente la imagen para un mayor entendimiendo del dispositivo y se pueda realizar

la detección sin ningún problema.

3.2.2.2 DETECCION DE ROSTROS

La elección del método para realizar la detección de rostros fue la de HaarCascade, que

consiste en recorrer la imagen en busca de características particulares del rostro.

Estas características son patrones que están presentes en el objeto que intentamos

detectar, como por ejemplo la distancia entre ojos, nariz y boca o la cantidad de luz q

existe en la frente.

Para ello le daremos un modelo de características y se entrenara este modelo con varias

imágenes, las cuales aparece y no aparece un rostro, para enseñarle a la computadora

que es y no un rostro.

Una vez tengamos listo el modelo y entrenado, podemos realizar el recorrido en la

imagen para poder extraer aquellas características.

Este es un extracto del archivo XML que es el archivo entrenado para hacer el

reconocimiento facial de forma frontal.

Page 70: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Este es el algoritmo que recorre la imagen en búsqueda de características particulares de

cada rostro.

3.2.2.3 RECONOCIMIENTO FACIAL

Una vez que ya hemos detectado con éxito el rostro de un individuo, lo que sigue es

reconocer este y asociarlo a una persona .

Existen dos conceptos que están relacionados a la detección de rostros por el método

haarcascade.

Eigenvectors: Son vectores en los que se guardan las características de un rostro

Eigenfaces: Son conjuntos de Eigenvectors relacionados entre si que hacen

referencia al mismo rostro.

Estos conceptos son muy importantes, debibo a que el calculo para comparar rostro

detectado con los de nuestra base de datos sigue siendo muy costoso para nuestra

microcomputadora, lo que se realizara será extraer eigenvectors y luego agruparlos en

eigenfaces. Asi lo que comparemos no serán rostros en si, sino sus eigenfaces.

Page 71: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Para hacer una detección de quien es el rostro que se detecto, se debe restar la distancia

entre su eigenface con cada uno de los eigenfaces extraidos de los rostros en la base de

datos.

La distancia entre los vectores predice la probabilidad de que dos rostros sean la misma

persona, mientras mas corta es la distancia, mayor es la probabilidad de que se trate de la

misma persona.

Para terminar solo se debe tomar la etiqueta que se le coloco al rostro previamente

detectado en el entrenamiento o enrolamiento y mostrarla en pantalla.

3.2.2.4 RECONOCIMIENTO DACTILAR

S M621 es un lector de huellas digitales de fácil implementación y que es compatible

con los más importantes lenguajes de programación que existen hasta la fecha, tales

como: C++, VB.NET, JAVA, LINUX, etc.

En general, la imagen capturada puede contener ruidos, por lo que es necesario

eliminarlos al máximo posible.

Para ello se utiliza el método de realce de imagen, el cual mejora la calidad y elimina el

ruido, traspasando la imagen en blanco y negro, y haciéndola más apta que la imagen de

entrada; para después ser procesada y finalmente comparada.

Page 72: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

El proceso de realce de imagen consta de los siguientes pasos:

Page 73: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Ejemplo de estos pasos aplicados a la imagen filtrada.

Después de aplicar El realce en la imagen de entrada se prosigue a realizar la extracción

de características la cual consta de las etapas que se mencionarán:

1. Binarización

2. Adelgazamiento

3. Extracción de características usando el método de números cruzados

Esquema del proceso antes mencionado

Page 74: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Finalmente se utilizará el método de comparación con vectores adyacentes, el que consta

de una comparación entre puntos invariantes de rotación y traslación de las imágenes en

procesamiento. Es por esta razón que es muy utilizado en huellas.

Luego de la determinación de los puntos, se procede a una comparación más fina:

Donde la imagen de la base de datos (u, s, q, r) se compara con la imagen de entrada (u’,

s’, q’, r’), comprobando de esta manera que el patrón de entrada es idéntico al patrón

original.

Page 75: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

3.2.3 CONEXION DEL FT232rl CON MODULO SM-621

Para poder comunicar el lector de huellas con la raspberry pi 3 se tubo que realizar una

adaptación de TTL que es la comunicación que tiene el modulo a USB, para ello

utilizamos este FTDI.

A continuación se muestra un diagrama de la conexión.

4. ANALSIS DE LA SITUACION

4.1 ANALISIS FODA

Page 76: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

4.2 DIAGRAMA DE FLUJO DEL PROTOTIPO

Page 77: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …
Page 78: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

4.3 CARTA GANTT

5. IMPLEMENTACIÓN DEL SISTEMA Y RESULTADOS

COSTOS

Articulo Proveedor CLP IVA TOTAL

NETO

Raspberry pi 3 B OLIMEX 33.990 6.459 27.531

WebCam Genérica USB PC FACTORY 6.990 1.328 5.662

Digital Persona UrU

4500B MUNDOTEC 45.000 8.550

36.450

Pantalla Táctil LCD 3.5' OLIMEX 26.500 5.035 21.465

Cable Gpio OLIMEX 500 95 405

TOTAL 112.980 21.467 91.513

6. CONCLUSIÓN

7. REFERENCIAS

- [1] R.C Gonzales y R.E Woods Digital Image Processing. Prentice-Hall, 3rd

edition 2008.

Nombre Fecha inicio Fecha fin mar abr may jun ago sep oct nov dic mar abr may jun

Modelamiento de la solución 15/03/2017 20/04/2017

Desarrollo detección de rostro 23/04/2017 05/06/2017

Desarrollo reconocimiento facial 08/06/2017 15/08/2017

Desarrollo reconocimiento dactilar 20/08/2017 02/10/2017

implementación base de datos 07/10/2017 02/12/2017

Integración de ambos sistemas 15/03/2018 20/04/2018

Testeo y pruebas 22/04/2018 22/05/2018

Análisis de resultados 24/05/2018 07/06/2018

Conclusiones 08/06/2018 15/06/2018

2017 2018

Page 79: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Disponible en:

http://web.ipac.caltech.edu/staff/fmasci/home/astro_refs/Digital_Image_Processi

ng_3rdEd_truncated.pdf

- [2] Itecra .SA. Multibio 700 Biometrico Facial.

Disponible en : http://www.itecra.com/productos/accesos-biometricos/accesos-y-

horarios/multibio-700-biometrico.html

- [3] Michalski, S. (2009). Luz visible, radiación Ultravioleta e Infrarroja.

Canadian Conservatioon Institute Journal.

Disponible en: http://www.cncr.cl/611/articles-56474_recurso_8.pdf

- [4] Gordon Wan, X. L (2012). CMOS Image Sensors With Multi-Bucket Pixels

for Computational Photography. IEEE JOURNAL OF SOLID-STATE

CIRCUITS.

Disponible en: https://graphics.stanford.edu/papers/multibucket/gordon-

multibucket-jssc12.pdf

- [5] Haizhou, Z. Y. (2005). Demographic Classification with Local Binary

Patterns- Departament of Computer Science and Technology Tsinghua

University. Beijing 100084, China.

Disponible en:

http://media.cs.tsinghua.edu.cn/~ahz/papers/ICB07_demographic.pdf **

- [6] Martin, M. (2004). T’ecnicas Clasicas de Segmentación de imagen

- [7] Mordvintsev. (2016). OpenCV-Python Tutorials.

Disponible en: https://media.readthedocs.org/pdf/opencv-python-

tutroals/latest/opencv-python-tutroals.pdf

- [8] Hess, R. (2011) An Open-Source SIFT Library. Oregon, USA.

Page 80: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

Disponible en: https://robwhess.github.io/opensift/siftlib-acmmm10.pdf

- [9] I. Garcia Barquero, P. S. –G. (2010). Comparación de algoritmos detectores

de puntos singulares. Centro de investigación Biomédica en red en Bioingeniería,

Biomateriales y Nanomedicina, Zaragoza, España, 4.

Disponible en: http://oa.upm.es/20480/1/INVE_MEM_2012_135438.pdf

- [10] Snatana, M, F. (2009) Viola Jones

Disponible en: http://cmm.ensmp.fr/~angulo/publicat/AnguloSerra_CyS_05.pdf

- [11] Jones, P. V. (2001). Rapid Object Detenction using a Boosted Cascade of

Simple. 9.

Disponible en: http://wearables.cc.gatech.edu/paper_of_week/viola01rapid.pdf

- [12] Dhavel, C., Darde, D., &Chitalia, S. (16 de noviembre del 2013). Smart

Projectors using Remote Controlled Raspberry Pi. (IJCA, Ed.) International

Journal pf Computer Applications (0975-8887), 82,6-11.

Disponible en:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.401.9063&rep=rep1&t

ype=pdf

- [13] Depht, L. (21-23 de diciembre del 2014). Remote control of a domestic

equipment from an Android application bassed on Raspberry pi card. (IEEE, Ed.)

Sciences and Techniques of Automatic Control and Computer Engineering

(STA), 2014. 15th International Conference on, 903-908.

Disponible en: **

- [14] Marta Lucia Guevara, Julian David Echeverry & William Ardilla Uruaña

(Junio de 2008). DETECCIÓN DE ROSTROS EN IMÁGENES DIGITALES

Page 81: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

USANDO CLASIFICADORES EN CASCADA. Universidad Tecnológica de

Pereira, Colombia.

Disponible en: https://dialnet.unirioja.es/descarga/articulo/4748251.pdf

- [15] Gonzales E. (13 de febrero 2018) Municipalidades aumentan tecnología

para disminuir la delincuencia. Chilevision Noticias.

Disponible de: http://www.chvnoticias.cl/nacional/municipalidades-aumentan-

tecnologia-para-disminuir-la-delincuencia/2018-02-13/220301.html

- [16] DIPROTEC, (2018) Digital persona UrU 4500B FingerPrint

Disponible en:http://www.diprotec.cl/tienda/images/pdf/digital-

persona/digitalpersona_barMax.pdf

ANEXOS

Este código sirve para detectar un rostro mediante el lenguaje Python 2.7, encierra en un

rectángulo el lugar donde se encuentra la cara de la persona y saca fotos del rostro.

CAPTURA.PY

import cv2, sys, numpy, os

2 size = 4

3 fn_haar = 'haarcascade_frontalface_alt.xml'

4 fn_dir = 'att_faces/orl_faces'

5 fn_name = sys.argv[1]

6 path = os.path.join(fn_dir, fn_name)

7 if not os.path.isdir(path):

8 os.mkdir(path)

9 (im_width, im_height) = (112, 92)

Page 82: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

10 haar_cascade = cv2.CascadeClassifier(fn_haar)

11 webcam = cv2.VideoCapture(0)

12

13 count = 0

14 while count < 100:

15 (rval, im) = webcam.read()

16 im = cv2.flip(im, 1, 0)

17 gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

18 mini = cv2.resize(gray, (gray.shape[1] / size, gray.shape[0] / size))

19 faces = haar_cascade.detectMultiScale(mini)

20 faces = sorted(faces, key=lambda x: x[3])

21 if faces:

22 face_i = faces[0]

23 (x, y, w, h) = [v * size for v in face_i]

24 face = gray[y:y + h, x:x + w]

25 face_resize = cv2.resize(face, (im_width, im_height))

26 pin=sorted([int(n[:n.find('.')]) for n in os.listdir(path)

27 if n[0]!='.' ]+[0])[-1] + 1

28 cv2.imwrite('%s/%s.png' % (path, pin), face_resize)

29 cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0), 3)

30 cv2.putText(im, fn_name, (x - 10, y - 10), cv2.FONT_HERSHEY_PLAIN,

31 1,(0, 255, 0))

32 count += 1

33 cv2.imshow('OpenCV', im)

34 key = cv2.waitKey(10)

35 if key == 27:

36 Break

RECONOCIMIENTO.PY FOTO

import cv2, sys, numpy, os

size = 4

fn_haar = 'haarcascade_frontalface_alt.xml'

fn_dir = 'att_faces/orl_faces'

# Part 1: Creando fisherRecognizer

print('Formando...')

# Crear una lista de imagenes y una lista de nombres correspondientes

(images, lables, names, id) = ([], [], {}, 0)

for (subdirs, dirs, files) in os.walk(fn_dir):

for subdir in dirs:

names[id] = subdir

subjectpath = os.path.join(fn_dir, subdir)

for filename in os.listdir(subjectpath):

path = subjectpath + '/' + filename

lable = id

Page 83: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

images.append(cv2.imread(path, 0))

lables.append(int(lable))

id += 1

(im_width, im_height) = (112, 92)

# Crear una matriz Numpy de las dos listas anteriores

(images, lables) = [numpy.array(lis) for lis in [images, lables]]

# OpenCV entrena un modelo a partir de las imagenes

model = cv2.createFisherFaceRecognizer()

model.train(images, lables)

# Part 2: Utilizar fisherRecognizer en funcionamiento la camara

haar_cascade = cv2.CascadeClassifier(fn_haar)

webcam = cv2.VideoCapture(0)

while True:

(rval, frame) = webcam.read()

frame=cv2.flip(frame,1,0)

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

mini = cv2.resize(gray, (gray.shape[1] / size, gray.shape[0] / size))

faces = haar_cascade.detectMultiScale(mini)

for i in range(len(faces)):

face_i = faces[i]

(x, y, w, h) = [v * size for v in face_i]

face = gray[y:y + h, x:x + w]

face_resize = cv2.resize(face, (im_width, im_height))

# Intentado reconocer la cara

prediction = model.predict(face_resize)

cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 3)

# Escribiendo el nombre de la cara reconocida

# [1]

if prediction[1]<500:

cv2.putText(frame,

'%s - %.0f' % (names[prediction[0]],prediction[1]),

(x-10, y-10), cv2.FONT_HERSHEY_PLAIN,1,(0, 255, 0))

# La variable cara tendra el nombre de la persona reconocida

cara = '%s' % (names[prediction[0]])

#Encender led en caso de que la cara se de chito

if cara == "chito":

os.system("sudo ./encender_led.sh")

# Si la cara es desconocida, poner desconocido

else:

cv2.putText(frame,

'Desconocido',

(x-10, y-10), cv2.FONT_HERSHEY_PLAIN,1,(0, 255, 0))

# Apagar Led

os.system("sudo ./apagar_led.sh")

cv2.imshow('OpenCV', frame)

key = cv2.waitKey(10)

if key == 27:

break

Page 84: PROTOTIPO DE SISTEMA DE RECONOCIMINETO FACIAL Y DACTILAR …

FOTOS COD.NO. ESTRUCTURA BASE MYSQL