Download - TECHNETSOL - Practicante de Biometría
"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.
43
Figura 4.22: Cámara binocular mostrando las imágenes que está capturando
mientras espera que aparezca una imagen aceptable.
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.
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