60
"Año del Centenario de Machu Picchu para el Mundo" INFORME DE PRÁCTICAS PRE-PROFESIONALES AUTOR: LUIS BARDALEZ GARCIA ESPECIALIDAD: INGENIERÍA MECATRÓNICA CÓDIGO: 20070131A DNI: 46132843 LUGAR DE DESARROLLO: LIMA ÁREA DE TRABAJO: SOLUCIONES BIOMÉTRICAS FECHA DE INICIO: martes, 01 de Marzo del 2011 FECHA DE ELABORACION: miércoles, 11 de Mayo del 2011 2011

TECHNETSOL - Practicante de Biometría

Embed Size (px)

DESCRIPTION

INFORME DE PRACTICAS PREPROFESIONALES

Citation preview

"Año del Centenario de Machu Picchu para el Mundo"

INFORME DE PRÁCTICAS PRE-PROFESIONALES

AUTOR: LUIS BARDALEZ GARCIA

ESPECIALIDAD: INGENIERÍA MECATRÓNICA

CÓDIGO: 20070131A

DNI: 46132843

LUGAR DE DESARROLLO: LIMA

ÁREA DE TRABAJO: SOLUCIONES BIOMÉTRICAS

FECHA DE INICIO: martes, 01 de Marzo del 2011

FECHA DE ELABORACION: miércoles, 11 de Mayo del 2011

2011

2

AGRADECIMIENTOS

Agradezco en primer lugar al Ing. Franco Amato por la asesoría y el apoyo que

me dio en mi formación dentro de la empresa y por la confianza que depositó en mí

incorporándome dentro de proyectos importantes para la empresa. A las trabajadoras

del área de recursos humanos, ya que ellas siempre facilitaron toda la información

necesaria para llevar adelante mis prácticas. A los profesores de la FIM, por apoyarme

en la formación de un criterio que va más allá de lo memorista y mecánico. A mis

padres y mi hermano, por apoyarme siempre en los nuevos retos que debo afrontar

dándome ánimos y consejos.

3

RESUMEN

En el presente informe describe las actividades desarrolladas en el transcurso

de las prácticas pre-profesionales que estoy ejerciendo en la empresa TECHNETSOL

S.A.C. (parte del consorcio CERTICOM S.A.C.) hasta la fecha de elaboración de este

informe. La práctica se dio en un ambiente de oficina y apoyado de una computadora

personal. Los proyectos que se realizaron estuvieron ligados principalmente a

programación de interfaces gráficas, al manejo de cámaras de reconocimiento

biométrico, al procesamiento de imágenes y a la optimización de sistemas.

En el primer capítulo se da una visión general de los avances de la práctica. En

el segundo capítulo se muestra la organización de la empresa y otros datos de interés.

En el tercer capítulo se exponen las actividades realizadas dentro de la empresa en

orden cronológico. En el cuarto capítulo se muestran los resultados de la práctica

enfocados desde el punto de vista de proyectos realizados. En las observaciones,

conclusiones y recomendaciones puede encontrarse los resultados de la práctica

enfocados como un diferencial de aprendizaje.

4

CONTENIDO

AGRADECIMIENTOS

2

RESUMEN

3

CONTENIDO

4

1. INTRODUCCIÓN

6

1.1. Antecedentes

6

1.2. Objetivos generales y específicos

6

1.2.1. Objetivos generales

6

1.2.2. Objetivos específicos

7

1.3. Descripción de informe

7

2. LA EMPRESA

8

2.1. Localización

8

2.2. Nombre de la empresa

8

2.3. Fundación de la organización

8

2.4. Misión, visión y objetivos de la organización

8

2.4.1. Misión

8

2.4.2. Visión

8

2.4.3. Objetivos

8

2.5. Organización

9

2.5.1. Organigrama general

9

2.5.2. Funciones de área

9

2.6. Representantes de la empresa

9

2.7. Política de la organización

9

2.8. Productos y servicios de la organización

9

2.9. Infraestructura productiva

10

3. ACTIVIDADES DESARROLLADAS

11

3.1. Adquisición de conocimientos en el uso de la librería Qt

12

3.2. Elaboración de interfaces gráficas

14

3.3. Adquisición de conocimientos en el manejo de una cámara binocular

16

3.4. Adquisición de conocimientos en el manejo de hilos de ejecución

17

3.5. Desarrollo de un programa controlador de la cámara binocular en Visual C++

19

3.6. Adquisición de conocimientos en el manejo de una cámara monocular

21

3.7. Desarrollo de un programa controlador de la cámara monocular en visual C++ con la librería Qt incorporada

22

3.8. Procesamiento digital de fotografías de carros para ubicar la posición de las matrículas.

24

3.9. Adquisición de conocimientos en programación en Linux utilizando el lenguaje C++.

26

5

4. PRESENTACIÓN DE LOS RESULTADOS DE LA PRÁCTICA PRE-PROFESIONAL

28

4.1. Interfaz de ingreso manual de trayectoria para servomotores

29

4.2. Interfaz genérica para manejar cámaras de reconocimiento de iris

32

4.3. Controlador de cámara binocular

37

4.4. Controlador de cámara monocular

46

OBSERVACIONES, CONCLUSIONES Y RECOMENDACIONES

57

BIBLIOGRAFÍA

59

GLOSARIO

59

ANEXOS

60

6

Capítulo 1

INTRODUCCIÓN

La biometría es una tecnología de seguridad basada en el

reconocimiento de una característica física e intransferible, como lo son la

huella dactilar o el iris. Los sistemas biométricos incluyen un dispositivo de

captación que puede ser una cámara y un software biométrico que interpreta la

muestra física y la transforma en una secuencia numérica para ser comparada

con una base de datos que tiene registrada las secuencias de otras personas.

TECHNETSOL S.A.C., particularmente el área de tecnología biométrica,

está enfocada a la investigación y desarrollo de nuevas tecnologías

biométricas. Asimismo en el desarrollo de soluciones biométricas para

negocios que lo requieran. En este entorno se dieron mis prácticas pre-

profesionales.

1.1. Antecedentes:

La Ingeniería Mecatrónica es una especialidad multidisciplinaria que

engloba los conocimientos de Ingeniería Mecánica, Ingeniería Electrónica,

Ingeniería de Control e Ingeniería Informática.

Todo Ingeniero Mecatrónico está capacitado para diseñar sistemas

mecatrónicos, generar soluciones basadas en la mejora continua, apoyar a la

empresa a través de la automatización de procesos, integrar dispositivos

mecatrónicos y dirigir trabajos multidisciplinarios.

Mediante las Prácticas Pre-Profesionales se puede poner en práctica

una o más de estas capacidades en el campo laboral, interactuando con

problemas reales y ofreciendo soluciones idóneas.

En mi caso, las Prácticas Pre-Profesionales se dieron en el área de

soluciones biométricas, área en la cual pude aplicar mis conocimientos de

programación, procesamiento de señales digitales, manejo de sensores entre

otros.

1.2. Objetivos generales y específicos:

1.2.1. Objetivos generales:

- Adquirir conocimientos en el área de biometría. Se mide en base al

diferencial de conocimientos que se tiene al terminar las prácticas.

- Generar soluciones que mejoren los productos. Se mide en base a la

cantidad de mejoras que se hizo a productos pre-existentes.

7

1.2.2. Objetivos específicos:

- Aprender nuevos algoritmos computacionales enfocados al procesamiento

de imágenes y a la creación de interfaces gráficas.

- Aprender a manejar dispositivos utilizados en el área.

- Optimizar productos existentes.

- Proponer soluciones novedosas y eficientes a problemas ya resueltos.

1.3. Descripción del informe:

A iniciar las Prácticas Pre-Profesionales, recibí un curso enfocado a la

programación den C++ apoyado de la librería Qt, una librería multiplataforma

enfocada al desarrollo de GUI. Apoyado en estos conocimientos, pude elaborar

interfaces gráficas que fueron utilizadas para proyectos afines al área dentro de

la empresa.

Dentro de nuestra área, este aprendizaje fue incorporado al uso de

cámaras biométricas para el desarrollo de productos enfocados a la verificación

y reconocimiento de personas.

El informe expondrá las actividades mencionadas anteriormente,

priorizando a las labores que tienen que ver directamente con el cumplimiento

de los objetivos.

8

Capítulo 2

LA EMPRESA

2.1. Localización:

Av. Canaval y Moreyra 452 piso 5 San Isidro.

2.2. Nombre de la empresa:

TECHNETSOL S.A.C. (perteneciente al consorcio Centro de Riesgos

comerciales Sociedad Anónima Cerrada - CERTICOM S.A.C.)

2.3. Fundación de la organización:

Empresa fundada el 1ro de setiembre de 1995. Fue creada bajo el auspicio de

la Asociación de Bancos del Perú - ASBANC.

2.4. Misión, visión y objetivos de la organización:

2.4.1. Misión:

“Brindar un servicio de calidad y satisfacción total a nuestros clientes, en el cual

se manifieste eficiencia y buena gestión, con sentido de conciencia social,

mejora continua y capacidad innovadora”.

2.4.2. Visión:

“Brindar servicios de valor agregado a nuestros clientes mediante la

recopilación, consolidación, administración, verificación y comercialización de

información relevante vinculada al crédito y otras actividades complementarias

de personas y empresas.”

2.4.3. Objetivos:

- Ofrecer un servicio de calidad, atendiendo al cliente en forma rápida, oportuna

y eficiente; velando porque la orientación e información sea oportuna,

confiable, eficiente y consistente.

- Crecer en forma conjunta con el cliente, a través del incremento de valor,

mediante el aporte de tecnología, innovación y esfuerzo laboral.

- Ser un colaborador de la óptima gestión de los procesos de una organización

con evidente aporte de valor, basado en el Know-How específico, las sinergias

y el uso de tecnología.

- Reinventar e innovar los procesos que gestionamos por encargo; en forma

continua, buscando mayor calidad, mejores costos o menores tiempos.

9

2.5. Organización:

2.5.1. Organigrama general:

Ver en el Anexo A.

2.5.2. Funciones de área:

El área de proyectos de biometría se encarga de desarrollar soluciones

automatizadas para el reconocimiento de personas mediantes sus

características físicas, tales como los patrones que forma la huella dactilar, la

forma del iris o características del rostro. Se enfoca principalmente en el

desarrollo de software apoyado de las tecnologías de hardware existentes en el

mercado. Estos productos son usados como un valor agregado a los servicios

de tercerización de la empresa CERTICOM.

2.6. Representantes de la empresa:

- Presidente Directorio: Van Oordt Parodi Guillermo

- Gerente General: Kurtovic Diaz Franjo Thomas

- Vicepresidente: Lopez Doriga Teus Cesar

2.7. Política de la organización:

Está basada en cinco pilares de negocio.

- INICIATIVA: Tomamos la iniciativa de asumir retos. No dejamos que las

cosas pasen, hacemos que sucedan las cosas.

- ÉTICA: Propósito innegociable de actuar de manera responsable y

transparente.

- INNOVACIÓN: Creamos e introducimos nuevas formas de trabajo los

cuales mejora nuestros procesos y servicios.

- ESPÍRITU EMPRENDEDOR: Capacidad de ver más allá, adelantarse al

mañana y tener coraje de realizar, innovar e invertir.

- PROACTIVIDAD: Siendo ágiles, creativos y flexibles en nuestra manera de

pensar, desempeñando un rol activo en el proceso de cambio

2.8. Productos y servicios de la organización:

- Verificaciones: Incluye verificaciones domiciliarias (constatación de lugar,

número de habitantes, situación del inmueble, etc.), verificaciones laborales

(antecedentes, vinculo laboral, información declarada, remuneración entre

otros), verificación de expedientes (telefonía, líneas de crédito,

categorización, etc.) y verificaciones especiales (RRHH, PYME, previsional

y legales).

10

- Digitación y Digitalización: Desarrollo de actividades de digitación y

digitalización masiva para procesos específicos de negocio utilizando

tecnologías Intelligence Character Recognition (ICR) y Optical Character

Recognition (OCR) para su procesamiento.

- Gestión de Oficinas y Atención al Público: Outsourcing de atención

descentralizada de público, referido a actividades de gestión comercial para

empresas de servicios y recepción de solicitudes de trámite.

- Administración de Colas: Sistema de asignación de colas con visualización

vía TV, normalmente aplicada en Bancos. Plantea un manejo estadístico al

público pudiendo establecer prioridades de acuerdo al perfil de cada cliente.

- Comercialización de productos financieros: Servicios de originación

comercial de una amplia gama de productos financieros destinados a

personas naturales o empresas permitiendo identificar y vincular a los no

clientes de la institución mediante estrategias de venta cruzada.

- Soluciones de comercialización y control: Soluciones como SCTP (Solución

para la Comercialización Tercerizada de Productos) y SVC (Solución de

Control y Verificaciones).

- Soluciones Biométricas: Soluciones de negocio con tecnología de

identificación biométrica orientadas a prevención de fraudes, validación de

identidad en entidades públicas y privadas y operaciones transaccionales

de carácter comercial.

2.9. Infraestructura productiva:

- Terreno: La oficina se encuentra ubicada ocupando todo el quinto piso del

edificio del Banco de Comercio.

- Distribución del área de trabajo: Se ocupa un séptimo del área total entre la

recepción y el comedor. El resto es ocupado por distintas áreas de la

empresa. En total se pueden encontrar 7 áreas separadas por muros de

tamaño mediano. Todas las áreas cuentan con sus respectivas

computadoras, escritorios y útiles necesarios.

- Equipo: Se cuenta con alrededor de 30 computadoras en funcionamiento y

otras más en servicio técnico; las computadoras pueden tener desactivadas

algunas funciones de acceso a internet o de acceso a los puertos USB

dependiendo de la necesidad del trabajo desempeñado. Se cuenta también

con una sala de servidores para almacenar las bases de datos y manejar el

servicio web.

11

Capítulo 3

ACTIVIDADES DESARROLLADAS

Se presentan las actividades desarrolladas dentro de la empresa hasta la fecha de

ésta edición. Los inicios de las actividades están ordenados cronológicamente, pero

hay actividades que se desarrollaron en paralelo. Se muestra además una imagen

referencial de la actividad. En el Anexo B se muestra un gráfico que expone las

actividades y su disposición en el tiempo. Además, en los resultados se mostrará los

resultados obtenidos en las actividades más relevantes.

12

3.1. Adquisición de conocimientos en el uso de la librería Qt. [01/03/2011 -

07/04/2011]

Se adquirió conocimientos en el uso de la librería Qt. Esta librería para

C++ es utilizada para desarrollar entornos gráficos, manejar eventos de los

periféricos, crear clases avanzadas e interactuar con éstas mediante el uso

de signals (señales) y slots (puertos). Se tiene un IDE de desarrollo llamado

Qt Creator (figura 3.1) que facilita el trabajo con esta librería ya que incluye

todas las estructuras sintácticas de la librería predeterminadamente.

Figura 3.1: Vista del IDE Qt Creator.

Identificación del problema: En ese momento no tenía conocimiento del

manejo de la librería.

Recopilación de información requerida: Se revisó las distintas fuentes

donde se puede aprender el uso de ésta librería.

Análisis de información y alternativas de solución: Se disponía de recursos

en internet y de un libro [1].

Evaluación y selección: Se escogió adquirir el libro [1] por tener todos los

módulos desarrollados, incluir ejemplos y estar estructurado.

Ejecución: A la par con el avance de los demás proyectos, se estuvo

estudiando el libro.

Resultados: Se concluyó la lectura de todos los capítulos con el desarrollo

de sus ejemplos y una aplicación del capítulo.

13

Análisis de los resultados: Se logró conseguir una base sólida con la que se

pudo concretar los proyectos. Valió la pena el tiempo invertido en esta

actividad ya que también me proporcionó destreza y una visión de los

problemas comunes dentro del desarrollo en esta librería.

14

3.2. Elaboración de interfaces gráficas. [08/03/2011 - A la fecha]

Se elaboraron interfaces gráficas con la librería Qt. Entre estas están

incluidas la interfaz para un sistema de ingreso manual de trayectoria para

servomotores (figura 4.1) y la interfaz genérica para manejar las cámaras

de reconocimiento de iris (figura 3.2).

Figura 3.2: Interfaz genérica para manejar cámaras de reconocimiento de iris.

Identificación del problema: Todo producto que saldrá a la venta necesita

una interfaz amigable al usuario que le permita interactuar con el programa.

Las interfaces sirven para comunicar al usuario con la ingeniería del

programa (parte compleja o núcleo del programa que normalmente el

usuario no necesita manejar). Todas las interfaces deben seguir las

especificaciones de uso del usuario.

Recopilación de información requerida: Para cada uno de los proyectos se

consultó al usuario sobre sus requerimientos, además de coordinar con el

desarrollador del núcleo del programa para conocer las entradas y salidas

de su sistema.

Análisis de información y alternativas de solución: Con la información

obtenida desde ambas partes se procede a plantear las distintas maneras

en las que puede interactuar el usuario con el núcleo.

Evaluación y selección: De todas las alternativas se selecciona la que

utilice menor tiempo de procesamiento. Éste tiempo puede ser medido

mediante la cantidad de microsegundos que toma la interfaz en ejecutar un

conjunto de comandos orientados a una labor determinada. En esta etapa

15

sólo se implementan las labores que requieran un alto tiempo de

procesamiento, como es la muestra de un conjunto de imágenes en la

pantalla.

Ejecución: La alternativa seleccionada se pasa a implementar con todos los

detalles del producto que se entregará. Finalmente, se hacen pruebas de

funcionamiento del producto en condiciones normales.

Resultados: Se da por concluida la elaboración de la interface si cumple

con las especificaciones del usuario y tiene total compatibilidad con el

núcleo del programa.

Análisis de los resultados: En base a este procedimiento se desarrollaron

todas las interfaces que se muestran a en subsiguientes actividades.

16

3.3. Adquisición de conocimientos en el manejo de una cámara binocular.

[15/03/2011 - 08/04/2011]

Se adquirió conocimientos en el manejo de una cámara binocular (figura

3.3). Ésta fue utilizada en la implementación de un sistema binocular de

reconocimiento biométrico mediante la extracción de características del iris.

Figura 3.3: Cámara binocular.

Identificación del problema: Ante la adquisición de una nueva cámara (tipo

binocular) se necesitaba conocer todas sus funcionalidades.

Recopilación de información requerida: Se utilizó el manual de

desarrollador de la cámara.

Ejecución: Se utilizó las funciones de la cámara de manera aislada,

teniendo en cuenta que algunas funciones debían ser usadas en conjunto.

Resultados: Se tuvo completo conocimiento de las funciones que utiliza la

cámara y como interrelacionarlas para completar su funcionamiento.

Análisis de los resultados: Gracias a esta actividad se pudo tener pleno

conocimiento de la cámara con lo que se desarrollo su respectivo

controlador.

17

3.4. Adquisición de conocimientos en el manejo de hilos de ejecución.

[21/03/2011 - 29/03/2011]

Se adquirió conocimientos en el manejo de hilos de ejecución con la

librería Qt. Este conocimiento permitió poder manejar diferentes códigos en

simultáneo, pudiéndose independizar el manejo de la interfaz gráfica y el

procesamiento que realiza el programa, evitando cuelgues en el programa

por tiempo de procesamiento (que en el caso de imágenes es alto).

Figura 3.4: Documentación de la librería Qt mediante el programa Qt Assistant.

Se puede ver la página introductoria de la clase QThread.

Identificación del problema: Durante el aprendizaje de las funciones de la

cámara binocular, se tuvieron problemas con el tiempo de procesamiento.

Éste comprometía directamente el funcionamiento del programa

controlador, ya que congelaba su funcionamiento.

Recopilación de información requerida: Se utilizó la documentación incluida

con la librería Qt [2]. La clase escogida para manejar los hilos de ejecución

fue QThread.

Ejecución: En base a la documentación (figura 3.4) se elaboraron

programas simples que procesaban grandes cantidades de información a la

par que la interfaz gráfica funcionaba.

Resultados: Los programas elaborados utilizando un enfoque de manejo de

varios hilos de ejecución mostraban una menor carga al programa principal,

medido mediante el consumo de tiempo de la interfaz y el procesamiento.

18

Análisis de los resultados: Se logró resolver el problema del congelamiento

del programa, pudiéndose aplicar éste conocimiento además en otros

proyectos.

19

3.5. Desarrollo de un programa controlador de la cámara binocular en

Visual C++. [28/03/2011 - 08/04/2011]

Se desarrolló un programa controlador de la cámara binocular (Figura

3.5) en Visual C++ con la librería Qt incorporada; el programa incluye la

adquisición de la imagen óptima mediante la medición del contraste que se

utiliza en la extracción de características del iris.

Figura 3.5: Programa controlador de cámara binocular.

Identificación del problema: No se contaba con un software propietario para

controlar la cámara binocular.

Recopilación de información requerida: Se adquirieron un programa de

demostración de uso de la cámara y un código de ejemplo del manejo de la

cámara en modo de captura en tiempo real para consola de comandos.

Análisis de información y alternativas de solución: Como opciones se tenían

elaborar una interfaz similar al programa de demostración o crear una

aplicación simplificada del mismo. Así mismo, se necesitaba contar con un

algoritmo de manejo de la cámara.

Evaluación y selección: Se tomó la decisión de usar una interfaz similar al

programa de demostración. Esto debido a que en éste se puede variar los

parámetros de funcionamiento de la cámara desde interfaz. El modelo de

control de la cámara fue por máquina de estados. Este fue escogido ya que

la cámara podía hacer muchas cosas que podían tipificarse dentro de un

estado.

20

Ejecución: Se realizó el programa controlador de la cámara según lo

planeado. Se incluyó un procesamiento separado de las imágenes y la

captura de imágenes. Además, se utilizó un método de medición de

contraste de la imagen basado en el espectro de frecuencia para

seleccionar la imagen donde las características del iris estén mejor

definidas. La máquina de estados sirvió para dotar de robustez al programa

ante cualquier fallo en la comunicación con la cámara.

Resultados: Se concluyó la elaboración del software con las características

requeridas.

Análisis de los resultados: El programa funcionó satisfactoriamente. Se

pudo mimetizar todas las funcionalidades incluidas en el programa de

muestra, además de añadirle el módulo de adquisición de la mejor imagen.

21

3.6. Adquisición de conocimientos en el manejo de una cámara

monocular. [11/04/2011 – 28/04/2011]

Se adquirió conocimientos en el manejo de una cámara monocular

(Figura 3.6). Ésta fue utilizada en la implementación de un sistema

monocular de reconocimiento automático mediante la extracción de

características del iris.

Figura 3.6: Cámara monocular.

Identificación del problema: Se tenía una cámara monocular utilizada

anteriormente para otro proyecto. Se contaba con la documentación de uso

pero no con el Know-How.

Recopilación de información requerida: Se consultó la documentación del

proyecto anterior y el manual de desarrollador de la cámara.

Ejecución: Se creó una interfaz en modo consola de comandos para hacer

las pruebas de las funciones. Se utilizó un patrón de programación Façade

para evitar usar código muy extensivo dentro del programa.

Resultados: Se consiguió implementar todas las funciones de la cámara

referidas a la captación del iris, incluyendo el manejo de sus parámetros de

funcionamiento.

Análisis de los resultados: Si bien la interfaz no mostraba imágenes en

tiempo real ya que había sido elaborada en modo consola de comandos,

ésta mantiene el concepto de conexión, captura y procesamiento de la

imagen.

22

3.7. Desarrollo de un programa controlador de la cámara monocular en

Visual C++ con la librería Qt incorporada. [18/04/2011-28/04/2011]

Se desarrolló un programa controlador de la cámara monocular (Figura

3.7) en Visual C++ con la librería Qt incorporada.

Figura 3.7: Programa controlador de cámara monocular.

Identificación del problema: Se necesitaba un programa controlador de la

cámara simplificado para la rápida interacción con el usuario.

Recopilación de información requerida: Se revisó las opciones mínimas

suficientes para el buen funcionamiento de la cámara.

Análisis de información y alternativas de solución: Se planteó como opción

el uso de una interfaz minimalista que permita la rápida interacción del

usuario con la cámara sin tener que configurar nada (concepto plug & play).

Faltaba decidir que opciones tendría el programa. El sistema de control de

la cámara monocular, por tener los mismos estados que la cámara

monocular, fue reutilizado del mismo.

Evaluación y selección: De los datos se vieron como primordiales las

opciones de conexión/desconexión y de inicio/fin de captura.

Ejecución: Se independizaron la interfaz y el programa controlador de la

cámara. La interfaz fue elaborada siguiendo el bosquejo que se había

planteado (conexión y captura). El controlador se hizo utilizando los

patrones de programación Façade y Singleton. Las conexiones entre

ambos sistemas se realizaron mediante signals y slots.

23

Resultados: Se concluyó con la elaboración del software con interfaz

minimalista.

Análisis de los resultados: El programa actual tiene una mejor presentación

ante un usuario que solo desea tener las opciones que le permitan cumplir

con su trabajo y no complicarse configurando el periférico a usar. Cabe

resaltar que este programa solo está acondicionado para este modelo de

cámara, producto de la especialización de las funciones.

24

3.8. Procesamiento digital de fotografías de carros para ubicar la posición

de las matrículas. Se utilizó el software Octave. [28/04/2011-09/05/2011]

Se realizó el procesamiento digital de fotografías de carros para extraer

la ubicación de su matrícula (Figura 3.8). Éste tuvo como objetivo generar

las muestras de placas a partir de las fotos para realizar el entrenamiento

de un neuro-reconocedor de placas de autos.

Figura 3.8: Ubicación de la matricula del carro en una imagen.

Identificación del problema: Se necesitaban tener muestras de matrículas

de carro donde éstas no muestren nada más que la imagen de matrícula.

Recopilación de información requerida: Se encontraron para transformar

espacios de colores (para tener un grupo de características independientes,

no como en el dominio RGB) y de ubicación de figuras geométricas básicas

(en este caso rectángulos).

Análisis de información y alternativas de solución: Para las

transformaciones se tenían el PCA y la transformación a HSV por ser las

más utilizadas para la separación de características más relevantes. Para la

ubicación de figuras geométricas se tenían la Transformada de Hough o

aplicar una serie de convoluciones de rectángulos de diferentes tamaños.

Evaluación y selección: De éstas alternativas se escogieron la

transformación HSV por tener una mayor aproximación a como el ojo

humano adquiere las imágenes además de mostrar mayor contraste entre

la placa y el fondo (carro y ambiente). Para la ubicación de las figuras

geométricas se utilizó la Transformada de Hough ya que éste incluye datos

25

de la máxima área encerrada por un rectángulo; se utilizaron como

parámetros de variación la posición de la esquina superior izquierda y el

largo y ancho del rectángulo. Se decidió también utilizar un filtro de

medianas para el pre-procesado de las imágenes.

Ejecución: El programa se elaboro en el software de simulación Octave. El

programa tenía implementadas la transformación del espacio RGB al

espacio HSV y el filtro de medianas, así que la principal implementación fue

la de la Transformada de Hough [3] para sectores rectangulares. En medio

de la implementación se vio necesario implementar también un

discriminador de colores [3] basado en histograma para disminuir el gasto

computacional de la transformada.

Resultados: Se utilizaron para el testeo 200 imágenes de diferentes carros

tomadas en un ángulo no mayor a 15° de inclinación y con iluminación de

luz natural en diferentes momentos del día, con diferentes colores de placa

y evitando en lo posible tener en la imagen objetos que pudieran ser

confundidos como una placa. Se obtuvo un total de 157 imágenes

clasificadas satisfactoriamente.

Análisis de los resultados: El principal error que se noto en las imágenes

falladas fue la existencia de áreas parecidas a una placa de carro. En las

aplicaciones que se den a este proceso se deberá tener en cuenta además

utilizar la existencia de letras y la cantidad de las mismas para reducir las

incidencias en este tipo de error.

26

3.9. Adquisición de conocimientos en programación en Linux utilizando el

lenguaje C++. [28/04/2011 – A la fecha]

Figura 3.9: IDE de desarrollo Code::Blocks corriendo bajo el sistema

operativo Ubuntu, distribución de Linux.

Identificación del problema: En ese momento no tenía conocimiento de

programación en las distribuciones del sistema operativo Linux. Esto es

necesario para desarrollar programas para empresas que utilizan este

sistema operativo.

Recopilación de información requerida: Se buscó información en diversas

páginas enfocadas al desarrollo de software en Linux. Se tenía pensado

enfocarse en la plataforma de desarrollo (IDE) a usar y la distribución sobre

la que se debía trabajar.

Evaluación y selección: Se escogió como sistema operativo el Ubuntu por

tener un entorno gráfico y contar con una base de datos desde donde se

obtendrán los programas que se utilizarán. Como IDE se escogieron el

Code::Blocks (Figura 3.9) y el Qt Creator por tener gran flexibilidad en

cuanto a complementos y manejo de librerías.

Ejecución: Con los recursos obtenidos se paso a desarrollar interfaces

simples. Se aprendió también a programar usando Emacs [4] y Vi para

tener la capacidad de programar en distribuciones de UNIX que no posean

entorno gráfico.

27

Resultados: Se logró desarrollar interfaces similares a las que se manejan

en Windows y tener la capacidad de reutilizar código escrito para un

entorno de Windows al entorno de Ubuntu.

Análisis de los resultados: El desarrollo de actividades en entorno Linux es

un poco más complicado que el desarrollo en Windows; sin embargo,

existen muchas empresas que lo utilizan preferentemente por los bajos

costos de mantenimiento que tiene, por el precio bajo o inexistente de su

uso (software libre) y por la seguridad y robustez de este sistema operativo

ante ataques informáticos.

28

Capítulo 4

PRESENTACIÓN DE LOS RESULTADOS DE LA

PRÁCTICA PRE-PROFESIONAL

Los trabajos a continuación expuestos describen principalmente detalles de

funcionamiento de los productos finales. Se expone someramente algunos

detalles del desarrollo e implementación de los productos; esto es debido a que

la divulgación de información de propietario del software de la empresa está

restringida a aspectos genéricos; además, los nombres de los productos no

pueden ser mostrados ya que no se encuentran en libre circulación. Las

imágenes que se muestran son en su mayoría imágenes del producto listo para

darle últimos detalles (mostrar algún mensaje personalizado, poner el logo de

la empresa compradora, etc.).

29

4.1. Interfaz de ingreso manual de trayectoria para servomotores

Se elaboró una interfaz gráfica para el ingreso manual de trayectoria (figura

4.1) utilizado en otro proyecto que utiliza servomotores para controlar un robot.

Este sistema era necesario para evitar utilizar programas externos (como

Excel) permitiendo integrar todo el sistema en un solo programa. Este

programa fue realizado bajo ciertos requerimientos del proyecto en mención,

por lo que no se añadió características adicionales a las requeridas (se evita

añadir código innecesario que aumenta la complejidad del programa sin una

ganancia real). Se muestran algunas capturas del programa (figuras 4.2, 4.3,

4.4, 4.5) con su respectiva leyenda.

Figura 4.1: Interfaz gráfica para el ingreso manual de trayectoria.

30

Figura 4.2: La cantidad de tablas a trabajar puede variarse según el usuario lo

requiera.

Figura 4.3: La cantidad de filas o columnas pueden variar.

Predeterminadamente se cuentan con 9 filas y 15 columnas.

31

Figura 4.4: El programa acepta el ingreso manual de datos por parte del

usuario. También pueden pegarse datos desde otras hojas de cálculo como

Excel.

Figura 4.5: El programa pide confirmación de cierre al usuario evitar pérdidas

de información accidentales.

32

4.2. Interfaz genérica para manejar cámaras de reconocimiento de iris

Se implementó una interfaz (Figura 3.2) sin comunicación con la cámara de

manera que haciendo ligeros cambios en ésta puede servir para cámaras de

diferentes fabricantes, pensando siempre en la reutilización de código para

evitar reinventar una interfaz ya existente. Se muestran capturas del programa

con su respectiva leyenda (figuras 4.6, 4.7, 4.8, 4.9, 4.10, 4.11).

Figura 4.6: Vista predeterminada de la interfaz.

33

Figura 4.7: Vista de la interfaz luego de ser conectada (entre cámaras se

cambian los parámetros de conexión y se conecta, esta interfaz solo emula la

conexión).

34

Figura 4.8: La interfaz requiere el ingreso manual del nombre del usuario que

será registrado/verificado y el número de cuadros/segundos con los que

trabajará (en el caso de la interfaz genérica, estos datos no se utilizan).

35

Figura 4.9: Animación que simula la muestra de cuadros de los ojos. Esta se

activa luego de presionar “Iniciar captura”.

Figura 4.10: Animación que simula la muestra de cuadros de los ojos.

36

Figura 4.11: Si se activa el modo manual, el operador del programa puede

escoger cuando se tomará la imagen presionando el botón “Capturar”.

37

4.3. Controlador de cámara binocular

Se implementó un programa controlador de la cámara binocular. Este fue

hecho en base a la interfaz genérica, con variaciones de código en las etapas

de conexión con la cámara, la muestra de imágenes y toma de la imagen

óptima. Se dibujaron dos líneas de referencia para ayudar a las pruebas de

desarrollo; en el producto real esta característica no fue incluida. Se muestran

capturas del programa (figuras 4.12, 4.13, 4.14, 4.15, 4.16, 4.17, 4.18, 4.19) y

fotos del funcionamiento (figuras 4.20, 4.21, 4.22, 4.23, 4.24) con su respectiva

leyenda.

Figura 4.12: Vista predeterminada del programa controlador de cámara

binocular.

38

Figura 4.13: Vista del programa controlador de cámara binocular

Figura 4.14: El nombre de usuario es necesario para tener acceso al programa.

Este se verifica con una base de datos.

39

Figura 4.15: Se requiere un número de cuadros/segundos. Este número es la

cantidad de muestras que se utilizaran para hallar la imagen óptima.

Figura 4.16: Presionando “Iniciar captura” la cámara comienza a mostrar las

imágenes que está captando.

40

Figura 4.17: Si la persona está muy lejos de la cámara estará desenfocada.

Figura 4.18: Si la persona está muy cerca la cámara estará desenfocada.

41

Figura 4.19: Cuando la persona llega a una distancia aceptable la cámara

captura imágenes y muestra la mejor (modo automático). En modo manual el

operario es quien escoge el momento ideal para tomar la imagen.

Figura 4.20: Cámara binocular encendida.

42

Figura 4.21: Cámara binocular apagada

43

Figura 4.22: Cámara binocular mostrando las imágenes que está capturando

mientras espera que aparezca una imagen aceptable.

44

Figura 4.23: Imagen óptima adquirida luego de la captura de imágenes.

45

Figura 4.24: Imagen óptima adquirida luego de la captura de imágenes.

46

4.4. Controlador de cámara monocular

Se implementó un programa controlador de la cámara monocular. Para la

elaboración del mismo se creó una nueva interfaz debido a que se necesitaba

que sea lo más simple posible. Este programa permite la muestra de imágenes,

mostrar gráficamente la distancia entre la cámara y el usuario (gracias a sus

sensores de distancia) y el almacenamiento de las imágenes en el disco para

su posterior uso. Se muestran capturas del programa (figuras 4.25, 4.26, 4.27,

4.28, 4.29, 4.30, 4.31, 4.32, 4.33) y fotos de su funcionamiento (figuras 4.34,

4.35, 4.36, 4.37) con su respectiva leyenda.

Figura 4.25: Vista predeterminada del programa.

47

Figura 4.26: La cámara se encuentra en estado abierto, esto quiere decir que

ningún otro programa puede tener acceso al dispositivo hasta que la cámara

sea desconectada del programa. Esto asegura que ningún otro programa

pueda iniciar la captura.

48

Figura 4.27: La cámara comienza a capturar. La cámara binocular tiene como

característica de que puede ser desactivada mientras no haya un objetivo

cerca de la misma, lo que permite el ahorro de energía.

49

Figura 4.28: La cámara encontró un objetivo cercano, así que se encendió. Sin

embargo, El objetivo está muy cerca de la cámara. Se muestran las esquinas

dentro del rectángulo con una separación proporcional a la distancia de

alejamiento a la posición ideal para que el operario pueda saber si el usuario

debe alejarse.

50

Figura 4.29: El objetivo está cerca de la cámara, pero no lo suficiente. Se

muestran las esquinas fueras del rectángulo con una separación proporcional a

la distancia de alejamiento a la posición ideal para que el operario pueda saber

si el usuario debe acercarse.

51

Figura 4.30: Cuando el usuario está en la posición ideal, las esquinas se

superponen al rectángulo de referencia. Este rectángulo solo sirve de

referencia al operario de la cámara, no es necesario que la pupila quede

enmarcada dentro del mismo.

52

Figura 4.31: Cuando la cámara toma la imagen óptima se elimina el rectángulo

para que el operario pueda ver si la imagen fue correctamente tomada.

53

Figura 4.32: Si la persona hace la toma sin quitarse los lentes la cámara no

dará bueno resultados.

54

Figura 4.33: Opcionalmente se puede mostrar la performance del proceso en la

parte superior de la pantalla.

Figura 4.34: Imagen de la cámara monocular.

55

Figura 4.35: Captura del programa funcionando.

Figura 4.36: Cámara y programa en modo espera de imágenes.

56

Figura 4.37: Imagen capturada por la cámara.

57

OBSERVACIONES, CONCLUSIONES Y

RECOMENDACIONES

Observaciones:

- Una interfaz gráfica que incluye procesamiento puede colgarse si todo el código

está incluido en el programa principal.

- Los programas con interfaces estáticas restringen al usuario haciendo que el

producto pierda acogida.

- Los dispositivos biométricos poseen sus propios controladores y software de

apoyo.

- La toma de muestras no automatizada es un proceso tedioso pero muchas veces

necesario.

- El manejo de periféricos tiene problemas si no se consideran todas las incidencias

que puede tener, tales como la desconexión accidental del periférico o el uso por

parte de otro programa que lo bloquea.

Conclusiones:

- La Práctica Pre-profesional me permitió poner en práctica y consolidar los

conocimientos adquiridos en los cursos de Programación Orientada a Objetos,

Circuitos digitales, Procesamiento de señales digitales, Ingeniería de métodos y

Sensores y acondicionamiento de señales dictados en la Facultad de Ingeniería

Mecánica - UNI.

- La Práctica Pre-profesional me mostró cómo es que funciona realmente un

proyecto que debe generar dinero, los estándares que maneja y como es que

realmente se deben cumplir con los plazos de entrega.

- La Práctica Pre-profesional me permitió adquirir nuevos conocimientos en cuanto a

la programación de interfaces gráficas con la librería Qt. Además, se adquirieron

conocimientos en el manejo de aplicaciones con varios hilos de ejecución en la

misma librería.

- Se logró con la adquisición de conocimientos en el manejo de periféricos

enfocados a biometría.

- Se logró optimizar programas pre-existentes en base a los nuevos conocimientos

adquiridos y la base teórica que poseo a partir de los cursos de la UNI.

58

Recomendaciones:

- Se debe enfocar el curso de programación no solo a aspectos de funcionamiento,

sino también a la presentación al cliente.

- Se debe independizar el programa principal y la interfaz gráfica mediante el uso de

hilos de ejecución.

- Se debe desarrollar del programa principal como una librería para poder reutilizarlo

en otros proyectos. Esto permitirá ahorrar tiempo de desarrollo.

- Se debe encapsular la solución de problemas teniendo en cuenta su naturaleza

para que estos sean posteriormente reutilizables.

- No se debe dejar corriendo un programa o encendida una computadora por

demasiado tiempo a menos que esté diseñada para ello.

59

Bibliografía

[1] Johan Thelin (2007). Foundations of Qt Development. Apress.

[2] Nokia Corporation (2011). Qt Assistant, Version 4.7.2.

[3] R. Gonzalez, R. Woods (2002). Digital Image Processing,

Second Edition. Prentice Hall.

[4] Free Software Foundation (2009). GNU Emacs manual.

Glosario

- Algoritmo: Conjunto de instrucciones definidas, ordenadas y finitas que permite

realizar una actividad mediante pasos sucesivos.

- Biometría: Estudio de métodos automáticos para el reconocimiento único de

humanos basados en uno o más rasgos conductuales o físicos intrínsecos

- Cámara de reconocimiento biométrico: Cámara utilizada para capturar

imágenes que se utilizarán, luego de un procesamiento, para aplicaciones

biométricas.

- Façade: Patrón de diseño que proporciona una interfaz unificada de alto nivel

para un conjunto de clases en un subsistema.

- GUI: Interfaz gráfica de usuario.

- Hilos de ejecución: Característica que permite a una aplicación Realizar varias

tareas a la vez. Estos comparten recursos como archivos o memoria.

- IDE: Entorno de desarrollo integrado. Programa informático compuesto por un

conjunto de herramientas de programación.

- Interfaz gráfica: Medio con que el usuario puede comunicarse con una

máquina, un equipo o una computadora, utilizando un conjunto de imágenes y

objetos gráficos para representar la información y acciones disponibles en la

interfaz.

- Iris: Membrana coloreada y circular del ojo que permite a la pupila dilatarse o

contraerse. Posee características diferentes entre distintas personas y es

estable a cambios durante el tiempo, lo que la hace idónea para el

reconocimiento biométrico.

- Librería: Conjunto de funciones que pueden ser usadas en distintos programas

sin ser cambiadas.

- Máquina de estados: Modelo de comportamiento de un sistema con entradas y

salidas donde las salidas dependen tanto de las señales de entrada como de

los estados anteriores.

60

- Optimización: Conversión de programas existentes en otros que realicen las

mismas tareas en menos tiempo o utilizando menos recursos del sistema.

- Práctica Pre-profesional: Modalidad que permite a la persona en formación

durante su condición de estudiante aplicar sus conocimientos, habilidades y

aptitudes mediante el desempeño en una situación real de trabajo.

- Procesamiento de imágenes: Es una serie de operaciones y análisis aplicados

a una imagen resultando otra imagen o un conjunto de características extraídas

de la misma.

- Pupila: Orificio situado en la parte central del iris por el cual penetra la luz al

interior del globo ocular. Aparentemente es de color negro.

- Signals y slots: Vías de comunicación entre objetos derivados de la librería Qt.

Permiten llamadas asíncronas. Un objeto envía un signal hacia un slot de otro

para activar el funcionamiento del éste último.

- Singleton: Patrón de diseño que restringe la creación de objetos pertenecientes

a una clase a un unido objeto; esto es, una instancia única.

- Vi: Editor de texto incluido en todas las distribuciones de UNIX

ANEXOS

A. Organigrama de la institución

B. Cronograma de las Prácticas Pre-profesionales