Subido por zuarez.tk

Tesis de LabView

Anuncio
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE TECNOLOGÍA E INGENIERÍA ELECTRÓNICA
DISEÑO DE UN SISTEMA DE ADQUISICIÓN Y PROCESAMIENTO DE
IMÁGENES CON LABVIEW
Por:
Leonardo Darı́o González Alarcón
PASANTÍA LARGA
Presentado ante la Ilustre Universidad Simón Bolı́var
como requisito parcial para optar al tı́tulo de
Ingeniero Electrónico
Sartenejas, Junio de 2015
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE TECNOLOGÍA E INGENIERÍA ELECTRÓNICA
DISEÑO DE UN SISTEMA DE ADQUISICIÓN Y PROCESAMIENTO DE
IMÁGENES CON LABVIEW
Por:
Leonardo Darı́o González Alarcón
Realizado con asesorı́a de:
Tutor Académico: Gerardo Fernández
Tutor Industrial: Oscar Garzón
PASANTÍA LARGA
Presentado ante la Ilustre Universidad Simón Bolı́var
como requisito parcial para optar al tı́tulo de
Ingeniero Electrónico
Sartenejas, Junio de 2015
UNIVERSIDAD SIMÓN BOLÍVAR
DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIÓN DE TECNOLOGÍA E INGENIERÍA ELECTRÓNICA
DISEÑO DE UN SISTEMA DE ADQUISICIÓN Y PROCESAMIENTO DE
IMÁGENES CON LABVIEW
INFORME FINAL DE CURSOS DE COOPERACIÓN TÉNICA,
PRESENTADO POR:
Leonardo Darı́o González Alarcón
RESUMEN
Los sistemas de procesamiento de imágenes son necesarios para la optimización de espacio y
tiempo de análisis de los datos. Con este proyecto se pretende incursionar en los sistemas de
procesamiento de imágenes para periscopio, los cuales servirán de herramienta fundamental
para ser utilizados por la Armada de Venezuela. El sistema de visión se dispone como una
herramienta para la adquisición y manipulación de imágenes de barcos en un mismo sistema,
todo ello a través de una interfaz sencilla desplegada en un panel táctil para el operador.
Con el objetivo de ofrecer un producto de alta calidad se plantea la utilización de equipos de
última generación para servir en un sistema stand-alone para el procesamiento y adquisición
de imágenes dentro de un submarino. El software de adquisición, procesamiento y manejo
de imágenes fue diseñado con NI LabVIEW y se implementó una base de datos en SQL
con PostgreSQL. El presente informe tiene como objetivo exponer los procesos de análisis,
diseño e implantación de las funcionalidades que ofrece el sistema, ası́ como de las tecnologı́as
utilizadas. Como resultado de los procesos mencionados, se logró a través de NI LabVIEW
generar una solución capaz de adquirir imágenes y video para su almacenamiento en una
base de datos. Además se implemento un detector básico de objetos en la escena marı́tima,
utilizando K-means.
Palabras Claves: Adquisición de imágenes en tiempo real, sistemas de visión, detección
automática, segmentación de imágenes.
iv
Índice general
Resumen
IV
Índice general
V
Índice de tablas
VIII
Índice de figuras
IX
Introducción
1
Lista de Abreviaturas
3
1 Entorno empresarial
1.1 Descripción de la empresa
1.2 Misión . . . . . . . . . . .
1.3 Visión . . . . . . . . . . .
1.4 Estructura organizacional
.
.
.
.
4
4
4
5
5
.
.
.
.
.
.
.
.
.
6
6
7
8
9
9
10
11
12
13
.
.
.
.
.
.
.
.
.
.
.
.
2 Marco teórico y tecnológico
2.1 Periscopio . . . . . . . . . . . .
2.2 Imágenes digitales . . . . . . . .
2.2.1 Espacios de color . . . .
2.2.1.1 RGB . . . . . .
2.2.1.2 HSL . . . . . .
2.2.1.3 CIELAB . . . .
2.2.2 Sensores de imagen . . .
2.2.2.1 Filtro de Bayer
2.2.3 Adquisición de imágenes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.3
2.4
2.2.3.1 USB3 Vision . . . . . . . . . . .
2.2.4 Formatos y compresión de imágenes . . . .
2.2.4.1 JPEG . . . . . . . . . . . . . . .
2.2.4.2 TIFF . . . . . . . . . . . . . . .
2.2.5 Procesamiento de imágenes digitales . . .
2.2.5.1 Filtrado en el dominio espacial .
2.2.5.2 Operadores morfológicos . . . . .
2.2.5.3 Envolvente convexa . . . . . . . .
2.2.5.4 Segmentación mediante K-means
2.2.5.5 Mediciones de partı́culas . . . . .
2.2.5.6 Transformada de Hough . . . . .
Video digital . . . . . . . . . . . . . . . . . . . . .
2.3.1 Formatos y códecs de video . . . . . . . .
2.3.1.1 AVI . . . . . . . . . . . . . . . .
2.3.1.2 Códec Lagarith . . . . . . . . . .
Tecnologı́as y herramientas utilizadas . . . . . . .
2.4.1 NI LabVIEW . . . . . . . . . . . . . . . .
2.4.1.1 NI Vision Development . . . . .
2.4.1.2 Database and connectivity toolkit
2.4.1.3 Machine learning toolkit . . . . .
2.4.2 PostgreSQL . . . . . . . . . . . . . . . . .
3 Desarrollo del proyecto
3.1 Arquitectura de hardware . . . . . . . . . .
3.2 Arquitectura de software . . . . . . . . . . .
3.2.1 Sistema de adquisición . . . . . . . .
3.2.1.1 Almacenado de imágenes .
3.2.1.2 Adquisición de video . . . .
3.2.2 Procesamiento de imágenes . . . . .
3.2.2.1 Enmascaramiento . . . . . .
3.2.2.2 Definición de ROI . . . . .
3.2.2.3 Pseudo-corrección de campo
3.2.2.4 Mejora de contraste . . . .
3.2.2.5 Filtrado de ruido . . . . . .
vi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
plano
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
14
14
14
15
15
17
19
20
21
22
23
24
24
24
25
25
25
25
26
26
.
.
.
.
.
.
.
.
.
.
.
27
27
29
30
32
32
34
37
37
39
41
42
.
.
.
.
.
.
.
.
.
.
43
44
46
47
47
50
50
51
54
55
4 Pruebas y resultados
4.1 Resultados de adquisición . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Resultados del procesamiento de imágenes . . . . . . . . . . . . . . . . . . .
56
57
60
5 Conclusiones y recomendaciones
65
Bibliografı́a
67
3.2.3
3.2.4
3.2.2.6 Detección básica de horizonte . . . . . .
3.2.2.7 Segmentación de la imagen . . . . . . .
3.2.2.8 Filtrado de partı́culas . . . . . . . . . .
Base de datos . . . . . . . . . . . . . . . . . . . .
3.2.3.1 Diseño . . . . . . . . . . . . . . . . . . .
3.2.3.2 Implementación . . . . . . . . . . . . . .
Diseño de interfaz HMI . . . . . . . . . . . . . . .
3.2.4.1 Estructura . . . . . . . . . . . . . . . .
3.2.4.2 Administrador de marcadores . . . . . .
3.2.4.3 Módulo de envı́o de correos electrónicos
vii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Índice de tablas
3.1
3.2
3.3
Caracterı́sticas de la cámara elegida para el sistema de visión. . . . . . . . .
Caracterı́sticas del computador elegido para el sistema de visión. . . . . . .
Diccionario de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
29
49
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Caracterı́sticas del sistema utilizado para la simulación. .
Tabla comparativa de formatos de imágenes . . . . . . . .
Resultados de adquisición de video. . . . . . . . . . . . . .
Tamaño de archivos para diferentes tiempos de adquisición.
Eficacia del detector de horizonte . . . . . . . . . . . . . .
Matriz de detección (Matching matrix ). . . . . . . . . . . .
Resultados de detección detallados. . . . . . . . . . . . . .
56
59
60
60
61
63
63
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Índice de figuras
1.1
Estructura organizacional de Alter-info. . . . . . . . . . . . . . . . . . . . . .
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
Funcionamiento básico de un periscopio de espejos paralelos. . . .
Ilustración de la propiedad aditiva de RGB. . . . . . . . . . . . .
Representación cilı́ndrica del espacio HSL. . . . . . . . . . . . . .
Gama de colores de CIELAB a una luminosidad del 75 %. . . . . .
Patrón de filtro de Bayer. . . . . . . . . . . . . . . . . . . . . . .
Convolución de una imagen. . . . . . . . . . . . . . . . . . . . . .
Convolución de una imagen. . . . . . . . . . . . . . . . . . . . . .
Ejemplos de operadores básicos morfológicos sobre una partı́cula.
Envolvente convexa. . . . . . . . . . . . . . . . . . . . . . . . . .
Pasos del algoritmo K-means. . . . . . . . . . . . . . . . . . . . .
Espacio de Hough. . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
9
10
11
12
16
17
19
20
21
23
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
Estructura del hardware diseñado. . . . . . . . . . . . . . . . .
Jerarquı́a de rutinas creadas. . . . . . . . . . . . . . . . . . . .
Diagrama de flujo de adquisición. . . . . . . . . . . . . . . . .
Subrutina para almacenado de imágenes. . . . . . . . . . . . .
Subrutina para almacenado de video. . . . . . . . . . . . . . .
Diagrama de flujo del procesamiento empleado . . . . . . . . .
Diagrama de bloques del enmascarado. . . . . . . . . . . . . .
Enmascaramiento de visor del periscopio. . . . . . . . . . . . .
Diagrama de bloques para la definición de ROI . . . . . . . . .
ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagrama de bloques para pseudo-corrección de campo plano.
Campo correctivo . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
30
31
32
34
36
37
37
38
38
39
40
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23
3.24
3.25
3.26
3.27
3.28
3.29
3.30
Pseudo correción de campo plano . . . . . . . . .
Diagrama de bloques para mejora de contraste. .
Mejora de contraste. . . . . . . . . . . . . . . . .
Diagrama de bloques para filtrado de ruido. . . .
Filtro de mediana. . . . . . . . . . . . . . . . . .
Diagrama de bloques para detección de horizonte.
Detección básica de horizonte. . . . . . . . . . . .
Diagrama de bloques de segmentación. . . . . . .
Segmentación utilizando K-means. . . . . . . . . .
Diagrama de análisis morfológico utilizado. . . . .
Posibles barcos detectados. . . . . . . . . . . . . .
Diagrama entidad-relación de la base de datos . .
Eventos de HMI. . . . . . . . . . . . . . . . . . .
Pantalla de adquisición del sistema . . . . . . . .
Pantalla del administrador de imágenes. . . . . .
Pantalla de procesamiento del sistema . . . . . . .
Pantalla del módulo de correo electrónico . . . . .
Pantalla del módulo de correo electrónico . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
40
41
41
42
43
43
44
45
46
46
47
48
51
52
53
53
54
55
4.1
4.2
4.3
4.4
Cuadros por segundo mostrados en el visor. . . .
Tasa de cuadros durante adquisiciones de video. .
Ejemplo de procesamiento a una imagen de barco.
Distribución de pı́xeles para componente L y A .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
58
59
62
62
x
Introducción
En la actualidad contamos con una avanzada tecnologı́a en cuanto a software y hardware para el procesamiento de imágenes. Esta área del análisis de señales digitales se ha
visto potenciada en los últimos años por las capacidades cada vez mayores que tenemos de
procesamiento computacional.
El sistema de adquisición y procesamiento de imágenes tiene el propósito de satisfacer la
necesidad que tiene la Armada de Venezuela, de un sistema integrado al visor de periscopio
para la realización de registros de imágenes.
Actualmente las imágenes son capturadas por una cámara comercial de alta resolución,
que además no se encuentra fija en el visor del periscopio. Por ello, pese a la resolución de
la cámara, las imágenes tomadas son de mala calidad, con presencia de ruido y un pobre
despliegue de color.
Se plantea ası́ la implantación de un sistema de visión integrando no sólo la adquisición
de las imágenes, sino también su posterior procesamiento. Permitiendo al submarino adquirir
información táctica de la escena marı́tima. El presente proyecto, busca solucionar los problemas actuales de adquisición ofreciendo más flexibilidad y usabilidad del sistema, ası́ como
también una incursión en el procesamiento de imágenes para periscopio.
2
Objetivo general
Diseñar una solución basada en el software LabView que permita almacenar y procesar
las imágenes adquiridas a través de una cámara de alta resolución.
Objetivos especı́ficos
Investigar las opciones disponibles para la adquisición y procesamiento de imágenes.
Diseñar el software y hardware de la herramienta de adquisición y procesamiento de
imágenes.
Desarrollar y programar la herramienta de adquisición y procesamiento de imágenes.
Implementar un registro de las imágenes que permita generar una base de datos de las
imágenes guardadas.
Desarrollar una interfaz humano máquina (HMI).
Implementar un módulo para el envı́o de correos electrónicos con las imágenes capturadas.
Realizar pruebas a la herramienta desarrollada con imágenes reales.
Lista de Abreviaturas
ADO
Objetos de datos ActiveX, del inglés: ActiveX Data Objects.
API
Interfaz de programación de aplicaciones del inglés: Application Programming Interface.
AVI
Siglas del inglés: Audio Video Interleave.
DSN
Nombre de origen de datos, del inglés: Data Source Name.
EDA
Arquitectura dirigida por eventos, del inglés: Event Driven Architecture.
FPS
Fotogramas o cuadros por segundo, del inglés: Frames per second.
HMI
Interfaz humano máquina, del inglés: Human Computer Interface.
JPEG
Grupo conjunto de expertos en fotografı́a, del inglés: Joint Photographic
Experts Groupl.
ODBC
Conectividad abierta de base de datos, del inglés: Open DataBase Connectivity.
ORDBMS Sistema de administración de base de datos objeto-relacional, del inglés:
Object-Relational Database Management System.
ROI
Región de interés, del inglés: Region of Interest.
SQL
Lenguaje de consulta estructurado, del inglés: Structured Query Language.
TIFF
Siglas del inglés: Tagged Image File Format.
Capı́tulo 1
Entorno empresarial
1.1
Descripción de la empresa
Alternativas Informáticas Alterinfo C.A., es una empresa que se dedica a la ejecución de
proyectos y servicios tecnológicos. Se encuentra constituida por un grupo de profesionales
dedicados a dimensionar y construir soluciones de tecnologı́a en automatización y sistemas
de control industrial, electrónica de potencia, integración de sistemas, y desarrollo de aplicaciones informáticas con seguridad basada en certificados y firmas electrónicas.
1.2
Misión
Contribuir de manera eficiente a la solución de los problemas tecnológicos de sus clientes
en las áreas que les compete, con un equipo humano altamente calificado y comprometido
con la razón de ser de la Empresa; todo ello, bajo criterios de mejoramiento continuo de la
calidad, productividad y excelencia, con un compromiso ético hacia las personas, clientes e
instituciones con las cuales se relacione.
5
1.3
Visión
Consolidarse como la mayor empresa latinoamericana de consultorı́a técnica y de integración de sistemas tanto en el área civil como militar, reconocida por la capacidad y profesionalismo de sus recursos humanos, por el impacto nacional e internacional de sus proyectos y
por la calidad de los servicios que presta.
1.4
Estructura organizacional
La estructura organizacional de la empresa se muestra en la figura 1.1. El pasante de
ingenierı́a electrónica ocupo un puesto dentro del área de proyectos de la dirección de gestión
técnica.
Figura 1.1: Estructura organizacional de Alter-info.
Capı́tulo 2
Marco teórico y tecnológico
El siguiente capı́tulo tiene como finalidad presentar en detalle aquellos conceptos que son
necesarios para la correcta comprensión del proyecto de pasantı́a. Estos conceptos abarcan
tanto definiciones utilizadas en el proyecto, ası́ como tecnologı́as empleadas en el desarrollo
de la solución planteada.
2.1
Periscopio
El periscopio representa los ojos de un submarino. Es un instrumento utilizado para
observar objetivos desde una posición camuflada o evitando la exposición del observador. En
su forma más simple consiste de un tubo con un juego de espejos en los extremos, paralelos
y en un ángulo de 45 grados respecto a la lı́nea que los une, como se muestra en la figura 2.1.
7
Figura 2.1: Funcionamiento básico de un periscopio de espejos paralelos.
La principal función de un periscopio es dar a un operador una imagen del horizonte
circundante a la nave, mientras esta permanece sumergida. Para ello es necesario que el tubo
del periscopio sea lo suficientemente largo para alcanzar la superficie. También es importante
que la parte del periscopio que se mantiene sobre el agua sea tan pequeña e imperceptible
como sea posible, dándole ası́ al periscopio su caracterı́stica forma larga y angosta [1]. Los
periscopios de submarinos suelen tener un visor principal y uno auxiliar, el último es utilizado
comúnmente en conjunto con una cámara, para adquisición de imágenes.
2.2
Imágenes digitales
Las imágenes digitales pueden ser principalmente de dos tipos, gráficos vectoriales o rasterizados, también llamados mapas de bits. Al hablar de imágenes digitales de ahora en
adelante, nos estaremos refiriendo a estos últimos.
Las mapas de bits pueden ser definidos como una función bidimensional f (x, y), donde
8
las coordenadas (x, y) son coordenadas espaciales del plano. La amplitud en un determinado
punto de ese plano es a lo que llamamos intensidad, para una imagen monocrómatica esta
amplitud representarı́a un tono de gris [2]. Este concepto se puede generalizar para imágenes
a color. Todas las imágenes digitales están compuestas por un número finito de elementos
fundamentales, llamados pı́xeles, cada uno de ellos con una posición y valor dentro del plano.
Los pı́xeles guardan la información de color de la imagen en un determinado punto [3].
Una imagen no es más que un arreglo matricial o grilla de pı́xeles, donde su tamaño está
definido por el número de pı́xeles de ancho (width) y alto (height) que la componen. Un pı́xel
sólo puede representar una cantidad lı́mitada de colores, ello se debe a que cada pı́xel no es
más que una representación númerica de color, y esta se ve limitada por la cantidad de bits
utilizados para representarla, a esta resolución se le llama profundidad de color (del inglés
color depth).
En la mayorı́a de las imagenes a color, cada pı́xel es representado por tres valores numéricos. Una foto tomada por una cámara digital, por ejemplo, tendrá para un determinado
pı́xel, tres valores distintos o canales, tı́picamente rojo, verde y azul. Cada canal contiene la
misma cantidad de pı́xeles que la imagen completa, pero sólo representa la información de
un determinado color. Existen distintas formas de representar estos canales, para distintos
propósitos.
2.2.1
Espacios de color
Los espacios de color son una forma de cuantificar matemáticamente el color. Están compuestas por tuplas numéricas, tı́picamente triplas donde cada uno de los componentes de
la tupla es llamado canal. La profundidad de color está determinada por la representación
númerica que se utilice para cada canal. Por ejemplo en la representación RGB, comúnmen-
9
te cada canal se representa con 8bits, dado que esta representación tiene tres canales, la
profundidad de color resultante es de 24bits.
2.2.1.1
RGB
RGB (de sus siglas en inglés Red-Gren-Blue) es el espacio de color utilizado por la mayorı́a de dispositivos de visualización que utilizamos en la actualidad. Es un espacio de color
aditivo, esto significa que cualquier color en este espacio se entiende como una suma de sus
componentes primarias: rojo (R), verde (G) y azul (B). Como resultado, la suma de sus tres
componentes a su máxima intensidad produce el color blanco. Debido a que en RGB cada
canal es comúnmente representado por ocho (8) bits, el rango de de la intensidad de cada
canal está entre 0 y 255.
Figura 2.2: Ilustración de la propiedad aditiva de RGB.
2.2.1.2
HSL
El espacio de color HSL (de sus siglas en inglés Hue-Saturation-Luminance) plantea una
representación cilı́ndrica del espacio de color RGB como se muestra en la figura 2.3. Sus
componentes primarias son el matiz (H), saturación (S) y luminosidad (L). Para definir un
10
determinado color, elegir una suma de rojo, verde y azul, no resulta intuitivo, sin embargo,
en HSL se elige un matiz o tono en el espectro de colores visibles, con la saturación se ajusta
la intensidad o brillantez del color, que va desde un color totalmente saturado hasta un gris
equivalente, y finalmente se define su luminosidad, haciéndolo mas cercano al blanco o negro.
Esta forma de definir un color es mucho mas intuitiva y por ello su representación es muy
utilizada en la edición de imágenes digitales.
Figura 2.3: Representación cilı́ndrica del espacio HSL.
2.2.1.3
CIELAB
El espacio de color LAB o CIELAB esta basado en el espacio de color CIE XYZ. Es
un espacio tridimensional de números reales, ofreciendo virtualmente un número infinito de
colores. La gama de colores de RGB representa solamente un 90 % de los colores perceptibles
para el ojo humano, en cambio, el espacio de color CIELAB abarca su totalidad. Tı́picamente
las componentes del espacio LAB son cuantificadas, con una resolución de 16 bits por canal.
La componente L representa la luminosidad, mientras que las componentes a y b son canales
opuestos de color que van entre rojo y verde, y entre amarillo y azul, respectivamente como
se observa en la figura 2.4. La representación de colores de CIELAB esta diseñada con el fin
11
de adaptarse a la forma en que el ojo humano funciona y percibe el color, su componente
L es muy similar a la luminosidad que percibimos con nuestra visión, produciendo ası́ un
espacio de color que es percibido de forma más lineal. Esto se traduce en que cambios de
cierta cantidad de color producen cambios de la misma importancia visual.
Figura 2.4: Gama de colores de CIELAB a una luminosidad del 75 %.
2.2.2
Sensores de imagen
Los sensores de imagen son elementos electrónicos que detectan y transmiten la información que constituye una imagen. Cada sensor está compuesto por una matriz de componentes
fotosensibles que capturan la luz de un objetivo y la convierten en una señal eléctrica, que
luego se transmite de forma analógica o digital. En las cámaras digitales actuales existen
dos tipos de sensores predominantes, los CMOS (semiconductor complementario de óxido
metálico, del inglés complementary metal-oxide-semiconductor ) y los CCD (dispositivo de
carga acoplada, del inglés charge-coupled device)
12
2.2.2.1
Filtro de Bayer
El filtro de Bayer o mosaico de Bayer es un arreglo de filtros de color dispuesto sobre
la matriz de foto-sensores que compone el sensor de la imagen en una cámara. El mosaico
de Bayer esta compuesto por 25 % de rojo, 25 % azul y un 50 % verde como se muestra en
la figura 2.5, esta distribución se debe a la alta sensibilidad que tienen nuestros ojos a la
percepción de luz en el rango entre los 500nm y 600nm. De esta forma cada pı́xel sólo graba
uno de estos colores, y posteriormente decodifica los canales RGB completos, para ello se
realiza una interpolación de los valores circundantes ponderados dependiendo del sensor.
Figura 2.5: Patrón de filtro de Bayer.
Algunas cámaras pueden almacenar directamente el mosaico de bayer y dejan al usuario la
decodificación de la imagen. Esto puede llevar a mejoras en los algoritmos de decodificación,
variando los pesos para cada uno de los filtros de color. Además, el mosaico de Bayer tiene
virtualmente una profundidad de color equivalente a un tercio de la profundidad de color
final. Esto quiere decir que para imágenes sin compresión se reduce a un tercio la tasa de
bits necesaria para la transferencia de archivos.
13
2.2.3
Adquisición de imágenes
La adquisición de imágenes es el proceso que comienza con la captura de una escena hasta
su almacenado o transmisión a través de algún medio electrónico. La velocidad de captura de
imágenes depende de las especificaciones utilizadas para un sistema de visión. Estas incluyen:
Numero de cámaras.
Resolución de la imagen.
Cuadros por segundo a adquirir.
Capacidad de transmisión del puerto.
Velocidad de escritura en disco.
2.2.3.1
USB3 Vision
USB3 Vision es un nuevo estándar de visión desarrollado sobre SuperSpeed USB también
llamado USB 3.0. Este estándar es capaz de manejar tasas de transferencia de hasta 400
MB/s y 4.5 Watts de potencia a 5 V en el mismo cable.
El estándar es desarrollado y administrado por la AIA (siglas del inglés Automated Imaging Association). Este define los mecanismos para la configuración, identificación y control
de dispositivos que utilicen el estándar. USB3 Vision permite el uso de tecnologı́a plug-andplay entre un dispositivo compatible y una computadora con puerto USB 3.0. USB3 Vision
está desarrollado y basado en estándares previos como GigE Vision. Una de las principales
ventajas sobre estándares pasados, además de las altas tasas de transferencia, es la poca
utilización de CPU necesaria para realizar una adquisición.
14
2.2.4
Formatos y compresión de imágenes
Los formatos de archivos de imágenes son formas estandarizadas de almacenar imágenes.
Existe una amplia gama de formatos de imágenes, cada uno desarrollado con un propósito
especı́fico. Por ello es necesario entender las ventajas de los principales formatos de imágenes
y sus aplicaciones.
La formatos de imagen pueden realizar un almacenamiento de los datos descomprimidos,
en cuyo caso son formatos de empaquetado (wrappers), o realizar algún tipo de compresión
para ahorrar espacio de almacenamiento. Esta puede modificar de forma irreversible la información contenida en la imagen, en cuyo caso hablaremos de un formato con pérdidas (lossy),
o bien comprimir la imagen sin modificarla de ninguna forma, en cuyo caso nos referimos a
un formato sin pérdidas (loseless) [4].
2.2.4.1
JPEG
JPEG (del inglés Joint Photographic Experts Group) es un método de compresión con
pérdidas ampliamente utilizado para el intercambio de archivos. El éxito de JPEG se debe a
su capacidad para comprimir las imágenes sin presentar cambios observables a simple vista.
2.2.4.2
TIFF
TIFF (del inglés Tagged Image File Format) es un formato de imágenes utilizado principalmente para el almacenamiento y edición. Una de sus ventajas es que permite guardar
imágenes con y sin compresión. Dentro de los métodos de compresión para almacenar archivos
TIFF se encuentran métodos con pérdidas y sin pérdidas como JPEG y ZIP respectivamente [4].
15
2.2.5
Procesamiento de imágenes digitales
El procesamiento de imágenes comprende una serie de métodos y algoritmos que realzan
ciertas caracterı́sticas en la imagen, o extraen información valiosa de ella. El procesamiento
de imágenes digitales es un campo en constante crecimiento dada la capacidad computacional
cada vez mayor de la cual se dispone para el análisis de grandes sets de datos.
Existen diversas definiciones de procesamiento de imágenes, principalmente con el propósito de diferenciarlo de técnicas de visión artificial, una rama de la inteligencia artificial que
busca emular la visión humana. En nuestro caso utilizaremos la definición dada por González
et al. [2], donde el procesamiento de imágenes digitales incluye procesos en los cuales la entrada y salida son imágenes, y procesos que incluyen la extracción de atributos de una imagen,
ası́ como la detección de objetos en una escena.
2.2.5.1
Filtrado en el dominio espacial
El filtrado de imágenes es una técnica utilizada para modificar o mejorar una imagen,
con la finalidad de que esta sea mas adecuada para una aplicación especı́fica o se facilite la
extracción de información de la misma.
Las operaciones de filtrado en el dominio espacial utilizan la información que proveen una
serie de pı́xeles distribuidos en una zona especı́fica del plano. Por lo tanto son los pı́xeles
como unidad fundamental los que atraviesan el proceso de filtrado.
Los pı́xeles se encuentran en la vecindad (neighbourhood) de un pı́xel central, sobre el
cual se realiza la operación. Esta vecindad de pı́xeles es modificada por un elemento llamado
kernel, como se muestra en la figura 2.6. El procedimiento del filtrado espacial consiste en
mover esta ventana de pı́xel en pı́xel y calcular un nuevo valor central para cada punto del
16
plano, utilizando para ello información contenida en la ventana. Un filtro es lineal cuando
su resultado es una combinación lineal de los valores en los pı́xeles para una ventana. Un
ejemplo de un procedimiento lineal utilizado para filtrar imágenes es la convolución lineal.
Para realizar la convolución de una imagen se calcula la suma balanceada (weighted sum)
del producto de los valores de un kernel y los valores de la imagen en la zona que abarca
dicho kernel para cada uno de los pı́xeles en una imagen. Algunos de los filtros más populares
para el procesamiento de imágenes caen en esta categorı́a, como son:
Filtros de suavizado (Gaussiano, promedio).
Realce de bordes direccionales (Prewitt, sobel).
Detección de bordes (Laplaciano).
Figura 2.6: Convolución de una imagen.
En contraste, los filtros no lineales no utilizan coeficientes pesados en sus ventanas. Se
consideran filtros espaciales porque igualmente operan sobre una vecindad, pero utilizan
17
operadores no lineales para lograr su cometido. Un operador no lineal comunmente utilizado
es el de la mediana, en la figura 2.7 se aprecia el funcionamiento de un filtro de mediana.
Este filtro calcula la mediana dentro de una conjunto de pı́xeles circundantes (ventana) y
reemplaza el valor central por el de la mediana.
Figura 2.7: Convolución de una imagen.
2.2.5.2
Operadores morfológicos
El filtrado morfológico de imágenes define una serie de operaciones que modifican la
imagen a través de operadores lógicos con una forma geométrica predefinida. El lenguaje
utilizado en el análisis morfológico de imágenes es aquel desarrollado por la lógica y la teorı́a
de grupos. En el análisis morfológico de imágenes tı́picamente se utilizan imágenes binarias
aunque su implementación es escalable a imágenes en escala de grises y colores.
Las imágenes binarias son aquellas donde su completa gama de valores se puede representar con un único bit. Usualmente se utiliza el valor cero (0) para el negro y uno (1) para
el blanco. Las operaciones morfológicas aplican elementos estructurales a estas imágenes y
generan una imagen de salida del mismo tamaño. En una operación morfológica el tamaño
18
y forma del elemento estructural puede ser modificados para hacer la operación sensitiva a
figuras especı́ficas en la imagen de entrada.
El valor de un pı́xel en la imagen de salida esta determinado por la comparación con
pı́xeles vecinos dentro de una ventana. Esta comparación no es más que una conjunción
lógica entre los valores de la ventana que conforman un elemento estructural y los valores de
la imagen.
En la figura 2.8 se muestra un ejemplo de los principales operadores morfológicos. Los
más básicos son las operadores de dilatación y erosión. La dilatación es equivalente a la
conjunción lógica OR entre la ventana que define el elemento estructural y la imagen. El
filtro morfológico de dilatación incrementa el tamaño o dilata el perı́metro de las figuras. La
dilatación de una imagen I con un elemento estructural M resulta se puede expresar como:
Dilatar(I) = I ⊕ M
En el caso de la operación de erosión, esta reduce el area total de la figura, y su operador lógico
equivalente es el AND. De forma equivalente la erosión de una imagen I con un elemento
estructural M resulta:
Erosionar(I) = I
M
En ambos casos, la cantidad de área que se expande o reduce una figura como resultado de un
proceso morfológico es dependiente del tamaño y forma del elemento estructural utilizado. La
mayorı́a de los filtros morfológicos resultan de una combinación de los filtros anteriormente
mencionados.
Los operadores abrir y cerrar (del inglés opening y closing), son una combinación de las
operaciones de dilatación y erosión. Estos resultan útiles para eliminar pequeñas aberturas
19
en las partı́culas (closing) o remover ruido en las partı́culas de forma menos agresiva que la
erosión(opening). Para una determinada imagen I se tiene:
Closing(I) = Erosionar(Dilatar(I))
Opening(I) = Dilatar(Erosionar(I)).
(a) Original
(c) Erosión
(b) Dilatación
(d) Opening
(e) Closing
Figura 2.8: Ejemplos de operadores básicos morfológicos sobre una partı́cula.
2.2.5.3
Envolvente convexa
La envolvente convexa de un conjunto de puntos en matemática se define como el polı́gono
convexo, cuyos vértices pertenecen al grupo de puntos, y el resto de ellos se encuentra contenido dentro del polı́gono.
En el procesamiento de imágenes el método de envolvente convexa es un operador morfológico que permite obtener un perı́metro formado por lı́neas convexas a partir de una
determinada partı́cula. Un ejemplo de una envolvente convexa se muestra en la figura 2.9.
20
Figura 2.9: Envolvente convexa.
2.2.5.4
Segmentación mediante K-means
La segmentación es un procedimiento que subdivide la imagen en regiones. El número de
subdivisiones a realizar dependerá de la escena a estudiar. El fin último de la segmentación es
el de aislar en una región bien definida al objeto de interés de análisis en un procesamiento.
K-means es un algortimo de agrupamiento (Machine learning), de aprendizaje no supervisado, el cual es ampliamente utilizado para el análisis y minerı́a de datos. El criterio de
agrupamiento utilizado por K-means es un criterio de distancia, entre los vectores que se
desean agrupar con la finalidad de reducir la diferencia entre grupos [5]. Inicialmente se asignan k-centroides aleatoriamente y se particionan los datos en k-grupos, para ello se asignan
las muestras al grupo con el centroide más cercano, luego se actualiza la media de cada grupo
y esta se asigna como nuevo centroide del grupo. Se repiten los pasos de asignación y actualización, hasta que las asignaciones no cambian. En la figura 4.4 se muestra gráficamente cada
uno de los pasos del algoritmo para un valor de k = 3 en un espacio bidimensional.
21
Figura 2.10: Pasos del algoritmo K-means.
El objetivo de utilizar K-means en la segmentación de imágenes es el de generar un set
de k-grupos de pı́xeles que sean muy parecidos dentro de cada grupo y lo mas distanciados
posibles de otros grupos. Para ello es necesario utilizar un espacio de color que represente
y cuantifique las caracterı́sticas que queremos segmentar y a su vez elegir un número k de
colores o tonos a separar dentro de la imagen.
K-means es un algoritmo de segmentación robusto y se ha demostrado que la segmentación que produce es equivalente a aquella producida por el algortimo de Otsu y no requiere
del tiempo computacional de análisis que requiere este último [6]. K-means como herramienta de agrupamiento también resulta superior que otros métodos clásicos como Mean-shift,
produciendo resultados similares a un costo computacional menor [7].
2.2.5.5
Mediciones de partı́culas
Una vez segmentadas las imágenes, estas se separan en valores nulos, que representan
espacio vacı́o o el fondo de la imagen, y partı́culas. Estas imágenes son tı́picamente binarias,
con un valor numérico de cero (0) para el fondo y de uno (1) para las partı́culas, sin embargo
es posible separar y marcar label las partı́culas para su diferenciación. Definiremos ası́ a una
partı́cula como un elemento de valores iguales dentro de la imagen, no nulo que se encuentra
22
rodeado de elementos nulos [8]. Existen una serie de mediciones que podemos realizar sobre
cada partı́cula segmentada en una imagen, entre las más comunes tenemos:
Largo y ancho.
Momentos de inercia.
Perı́metro.
Orientación.
Área.
2.2.5.6
Transformada de Hough
La transformada de Hough, es un método utilizado para la búsqueda de curvas parametrizables dentro de una imagen. En el más simple de los casos, consiste en la detección de
segmentos de lı́nea. Para el parametrización de rectas se utiliza la ecuación de una recta en
coordenadas polares, ya que esta permite representar rectas verticales [9].
ρ = xcosθ + ysinθ
Donde ρ es la distancia perpendicular, entre la recta y el origen y θ es el ángulo de la normal entre el origen y la lı́nea. Con esta parametrización se consigue que para un determinado
punto (x, y) el grupo de todas las rectas que pasan por él se transformen en una sinusoide en
el espacio definido por (ρ, θ) también llamado espacio de Hough.
Un grupo de dos o mas puntos que forman lineas rectas, producirá sinusoides que se
cruzan en (ρ, θ) para una determinada recta. De esta forma se reduce el problema de hallar
puntos colineales, al problema de hallar intersección de curvas. En la figura 2.11 se aprecia
23
el espacio de hough para un valor de θ entre -90 y 90 grados, el punto señalado, marca la
intersección de sinusoides que se corresponde con puntos colineales en la imagen.
Figura 2.11: Espacio de Hough.
2.3
Video digital
El vı́deo digital es una secuencia de imágenes digitales que representa escenas en movimiento. Cada imagen que compone el vı́deo es llamada cuadro. Al igual que las imágenes
digitales cada cuadro de vı́deo esta definido por el número de pı́xeles que lo componen e
igualmente la profundidad de color define el tamaño de cada pı́xel. Adicionalmente, una caracterı́stica que permite evaluar la fluidez de un video, es la cantidad de cuadros por segundo
(frames per second ) que es capaz de reproducir. A mayor cantidad de cuadros por segun-
24
do la escena luce más fluida y en movimiento, donde para bajas tasas nuestra visión puede
percibir las imágenes en el vı́deo como objetos quietos. La cantidad de cuadros necesarios
para una reproducción fluida ha variado a través de los años con la introducción de nuevas
tecnologı́as. Las transmisiones de televisión utilizan entre 24 (como 24p, 25p) y 30 (como
por ejemplo 30p,60i) cuadros por segundo, con la introducción reciente de nuevos estándares
para transmisiones entre 50 y 60 cuadros por segundo.
2.3.1
Formatos y códecs de video
Al igual que los formatos de imágenes los formatos de video son estándares que definen
una forma en la cual la información que contiene un video es organizada y almacenada en un
archivo. Los códecs de vı́deo tienen por objeto codificar y decodificar los datos contenidos en
un archivo de video.
2.3.1.1
AVI
AVI del inglés Audio Video Interleave es un formato de archivos de videos que soporta
una amplia gama de códecs. El formato fue desarrollado por Microsoft y sirve de contenedor
a un archivo de video y de audio.
2.3.1.2
Códec Lagarith
Lagarith es un códec de video sin pérdidas diseñado para el almacenamiento y la edición
de video. Permite una tasa de compresión alrededor de 4:1 respecto del video sin compresión.
Lagarith es uno de los mejores códecs sin pérdidas disponible de forma gratuita. El único
problema con Lagarith resulta en que el tiempo necesario para codificar un video, suele ser
mas largo que otros códecs sin pérdida comúnes, como HuffYUV [10].
25
2.4
Tecnologı́as y herramientas utilizadas
A continuación se ofrece una descripción de las herramientas y tecnologı́as utilizadas para
la ejecución del proyecto de pasantı́a.
2.4.1
NI LabVIEW
LabVIEW (acrónimo del inglés Laboratory Virtual Instrument Engineering Workbench)
es una plataforma de software creada por National Instruments para el diseño y desarrollo
de sistemas en un lenguaje gráfico propietario, llamado G. Su principal foco es el diseño de
sistemas embebidos y de tiempo real, para el control y adquisición de datos a través de un
lenguaje gráfico [11].
2.4.1.1
NI Vision Development
El Módulo NI Vision Development está compuesto por una serie de algoritmos y funciones
de procesamiento de imágenes y visión artificial para la identificación de objetos en LabVIEW.
Este módulo también incluye las interfaces de programación de aplicación o API (de sus
siglas en inglés Application Programming Interface), IMAQ e IMAQdx. Estos API permiten
la adquisición y configuración de cámaras de National Instruments y de otros fabricantes [12].
2.4.1.2
Database and connectivity toolkit
El juego de herramientas de base de datos y conectividad (Database and connectivity
toolkit) para LabVIEW está compuesto por una serie de funciones para la edición, creación
y manejo de bases de datos. Es compatible con bases de datos que utilicen el controlador
ODBC o OLE DB, ası́ como también bases de datos que se adhieran al estándar ADO (de
sus siglas en inglés ActiveX Data Object) [13].
26
2.4.1.3
Machine learning toolkit
El juego de herramientas de aprendizaje de máquinas para LabVIEW, incluye una serie
de algoritmos de aprendizaje supervisado y no supervisado, ası́ como también una serie de
herramientas de análisis de datos.
2.4.2
PostgreSQL
PostgreSQL o Postgres es un sistema de gestión de bases de datos relacionales orientado
a objetos (ORDBMS). Postgres es un proyecto de software libre y código abierto. Como
servidor de base de datos su principal función es la de guardar datos de forma segura y
permitir su recuperación (retrieval ) por parte de otras aplicaciones de software.
Capı́tulo 3
Desarrollo del proyecto
El presente capı́tulo expone el proceso de desarrollo del proyecto, en el que se especifican
los procesos llevados a cabo para cumplir con los objetivos planteados, desde su diseño hasta
su implementación.
3.1
Arquitectura de hardware
El hardware propuesto para el sistema de visión del periscopio tiene que estar integrado
por hardware de nivel industrial y ofrecer alto desempeño tanto en calidad de imagen como
en poder computacional.
Se eligió una cámara con el sensor CCD Sony ICX445 recomendada por National Instruments, similar a la mostrada en la figura 3.1. Esta se encuentra equipada con la nueva
tecnologı́a EXview HAD de Sony, que aumenta la sensibilidad manteniendo un tamaño de
sensor compacto [14]. Además utiliza el nuevo estándar de transmisión USB3 vision y es
capaz de adquirir imágenes a color con una velocidad de treinta (30) cuadros por segundo. A
su vez permite decoficar el mosaico de Bayer dentro o fuera de la cámara. Esta caracterı́stica
28
resulta importante ya que permite una reducción sustancial de la tasa de bits necesaria para
la transmisión.
Figura 3.1: Estructura del hardware diseñado.
Sensor
Resolución
Tamaño de pixel
Mono/Color
Interfaz
Profundidad de bits
Relación focal
Distancia focal
Sony ICX445
1294x964
3.75 µm x 3.75 µm
Color
USB 3.0
Hasta 12 bits
f /1.4
35mm
Tabla 3.1: Caracterı́sticas de la cámara elegida para el sistema de visión.
Por su parte el software de visión diseñado funcionará sobre una computadora industrial
de alto desempeño con enfriamiento pasivo. Adicionalmente, se utilizará un panel táctil de
quince (15) pulgadas para desplegar la interfaz HMI al operador.
29
Sistema operativo
RAM
Tarjeta de video
Procesador
Almacenamiento
Windows 8.1
8 GB
Intel HD 4600
Intel Core i7-4770TE Haswell 2.3GHz
Western Digital 2.5”HDD 1TB 7200RPM
Tabla 3.2: Caracterı́sticas del computador elegido para el sistema de visión.
3.2
Arquitectura de software
El software está basada en un modelo dirigido por eventos o EDA (del inglés Event driven
architecture). En este modelo cada uno de los actores responde cuando su correspondiente
evento es activado y sólo si ese evento es activado.
Los procesos a continuación descritos responden a una serie de eventos determinados, en
su mayorı́a ejecutan una operación en respuesta a la interacción con el operador. Por ejemplo,
el evento de adquirir imagen ocurre, únicamente cuando el botón para tomar una fotografı́a
es presionado.
30
Figura 3.2: Jerarquı́a de rutinas creadas.
3.2.1
Sistema de adquisición
El evento de adquisición es un evento condicional temporizado, este comprende la inicialización de variables y configuración de la cámara, captura de imágenes y/o video. Las
imágenes adquiridas pueden estar codificadas con el mosaico de Bayer, en cuyo caso la decodificación de estas, se hará de forma ası́ncrona para ası́ reducir la tasa de bits necesaria para
su escritura. De esta forma se adquieren y muestran imágenes a color a una tasa de treinta
cuadros por segundo. Cabe destacar que estas imágenes constituyen la virtualización de un
visor, y no son almacenadas en disco.
31
Figura 3.3: Diagrama de flujo de adquisición.
32
3.2.1.1
Almacenado de imágenes
El evento utilizado para adquirir imágenes y grabarlas a disco esta controlado por un
botón desplegado en la interfaz de usuario. Se guarda la imagen en un búfer y se almacena de
forma ası́ncrona en el disco duro. Para no degradar la calidad de la imagen, esta se guarda en
formato TIFF y en el espacio de color RGB, con una compresión sin pérdidas ZIP. Finalmente,
se genera una entrada para registrar la adquisición en la base de datos.
Figura 3.4: Subrutina para almacenado de imágenes.
3.2.1.2
Adquisición de video
De forma similar a la adquisición de imágenes, el evento de adquisición de video esta
manejado por un botón en la interfaz del operador. Dado que las inspecciones realizadas por
un submarino cerca de la superficie deben ser cortas, se dispuso de un máximo de adquisición
33
de video de diez (10) minutos. De ser necesario un mayor tiempo de grabación, el operador
deberá tomar un nuevo video.
Para realizar la codificación de un archivo de video en LabVIEW es necesario que el
archivo se encuentre completo, esto supone una limitación en la velocidad de la codificación
ya que solo se puede comenzar la codificación una vez se termine la adquisición. Es por ello
que se optó por escribir todas las imágenes adquiridas que conforman el video, directamente
en disco y sin comprimir. Es aquı́ donde el mosaico de Bayer cobra importancia. Escribir las
imágenes en disco sin decodificar el mosaico de Bayer, reduce la profundidad de color de 32
bits a 8 bits y requiere una tasa de bits de escritura en disco de
Tasa de Bits= Profundidad de bits × Numero de Pixeles × Cuadros por segundo
Tasa de Bits= 8bits × (1294 × 964)pixeles × 30f ps = 35,54M B/s
Esta velocidad de transferencia es perfectamente manejable por discos duros actuales, sin
necesidad de establecer configuraciones de redundancia como RAID 0. Sin embargo, la tasa
necesaria para escribir la misma cantidad de información, con el filtro de Bayer decodificado,
se cuadruplica limitando la adquisición en discos convencionales. Nótese que a la tasa de
escritura actual, un archivo de video de diez (10) minutos pesará más de 20GBytes. Debido a
ello se prefirió el almacenamiento en discos duros covencionales sobre discos de estado sólido,
ya que ofrecen mayores capacidades de almacenamiento a bajo costo.
Posterior a la adquisición, se realiza la codificación del video, utilizando el códec de
Lagarith para ahorrar almacenamiento en disco. Es importante resaltar que mientras mayor
sea el tiempo de adquisición, mayor será el tiempo necesario para codificar el video. Una vez
el video se codifica, se guarda una entrada en la base de datos registrando la grabación y se
hace disponible al operador a través de la interfaz HMI.
34
Figura 3.5: Subrutina para almacenado de video.
3.2.2
Procesamiento de imágenes
En esta sección se explicarán todos los procedimientos relacionados con el mejoramiento
y la extracción de información de imágenes de periscopio. La finalidad última es, a través de
un algoritmo computacional, detectar la presencia de barcos en la escena marı́tima.
35
Para ello inicialmente se realiza un pre-procesamiento, en donde se determina una zona
de interés o ROI (del inglés region of interest) para el análisis y se aplican una serie de filtros
para facilitar la extracción de caracterı́sticas de la imagen. Posteriormente, se detecta la lı́nea
del horizonte, y se segmenta la imagen con la información de color disponible. Por último un
filtrado de partı́culas refina la búsqueda y nos deja con los posibles barcos en la escena. A
continuación se explica con mas detalle cada una de las fases utilizadas.
36
Figura 3.6: Diagrama de flujo del procesamiento empleado
37
3.2.2.1
Enmascaramiento
Una vez el procesamiento es iniciado, el primer paso es definir una región de interés dentro
de la imagen. Para ello se debe enmascarar y definir el cı́rculo correspondiente al visor del
periscopio. Se fijó un umbral en el histograma de la imagen, para dividir la sección oscura,
bloqueada por el visor, y la información relevante. Luego se aplicaron filtros morfológicos
para obtener una única gran partı́cula que corresponde al cı́rculo del visor. De esta se obtiene
el área de la cáscara convexa (convex hull ) y el centro geométrico del mismo para cálculos
posteriores.
Figura 3.7: Diagrama de bloques del enmascarado.
(a) Imagen original
(b) Imagen enmascarada
Figura 3.8: Enmascaramiento de visor del periscopio.
3.2.2.2
Definición de ROI
La región de interés o ROI (del inglés Region of interest), es un subconjunto de la imagen
enmarcado por una serie de primitivas. En el caso de nuestro sistema de visión para periscopio,
38
se define como ROI al rectángulo inscrito en el cı́rculo que compone el visor del periscopio
como se muestra en la figura 3.10. Este rectángulo puede ser ajustado variando el ángulo
α mostrado en la figura 3.10, entre 26 y 45 grados. El mı́nimo ángulo establece una sagita
(segmento AB) en cada lado, inferior a un veinteavo del diámetro del periscopio, y el máximo
ofrece una relación de aspecto 1:1. El ángulo por defecto es de 36 grados, y establece una
sagita de un décimo del diámetro a cada lado. Esta reducción se hace para evitar el cı́rculo
externo oscuro debido al visor del periscopio en análisis posteriores, y la forma rectangular
trata de aprovechar la mayor cantidad de información en una escena marı́tima.
Figura 3.9: Diagrama de bloques para la definición de ROI
Figura 3.10: ROI
39
3.2.2.3
Pseudo-corrección de campo plano
La correción de campo plano, es una correción que se realiza sobre imágenes que se
encuentran iluminadas de forma dispareja, donde existe un efecto de viñeteado (vignetting),
para corregir variaciones entre la sensibilidad de pı́xeles y eliminar polvo o rayas en el sensor
CCD. Para ello se aplica una calibración de la imagen mediante captura de un cuadro oscuro
y uno claro.
Sin embargo, en la práctica se utilizó una pseudo-corrección (ver figura 3.11) debido a que
la cámara que se utilizará en el sistema final no estaba disponible. La pseudo-corrección toma
el canal de luminosidad de la imagen de entrada y aplica un filtro gaussiano de kernel grande,
para obtener una versión difuminada de la imagen [15]. La versión difuminada de la imagen,
se llama campo correctivo, y permite detectar y corregir la iluminación de la escena. En la
figura 3.12 se muestra el campo correctivo generado para la imagen de periscopio mostrada
en 3.13.
Figura 3.11: Diagrama de bloques para pseudo-corrección de campo plano.
40
Figura 3.12: Campo correctivo
En la práctica se utilizó un kernel de tamaño 51, y desviación estándar 20. Al campo
correctivo se le hace una corrección de desplazamiento (maximización de brillo) y finalmente
se divide de la imagen original. La pseudo-correción de campo plano se realizo sólo sobre el
canal de luminosidad de la imagen en el espacio HSL. En la 3.13 se muestra un ejemplo de
pseudo-corrección de campo plano, nótese como el efecto de viñetado se ve disminuido.
(a) Imagen original
(b) Imagen corregida
Figura 3.13: Pseudo correción de campo plano
41
3.2.2.4
Mejora de contraste
Se realizó una maximización del contraste mediante un estiramiento del histograma de
la imagen. Para ello se dividió la imagen en canales, en el espacio HSL, y se analizó el
histograma de cada uno de ellos, para realizar una modificación del rango dinámico que
permitiera mapear los valores mı́nimos y máximos de cada canal, en los mı́nimos y máximos
representables. En un canal de luminosidad de profundidad de 8 bits, esto significa que los
valores más óscuros de la imagen y más claros de la imagen, se representan con el valor
mı́nimo (0) y máximo disponible (255).
Figura 3.14: Diagrama de bloques para mejora de contraste.
Figura 3.15: Mejora de contraste.
42
3.2.2.5
Filtrado de ruido
Para el filtrado de ruido se utilizó un filtro de mediana, con una ventana de tamaño
reducido para evitar la difuminación de la imagen. El filtro de mediana se prefirió sobre un
filtro pasa-bajo debido a que preserva mejor la información de los bordes cuando el tamaño de
la ventana es pequeño [16]. Se implementó ası́ un filtro con un tamaño de ventana de 3x3 y se
aplicó a todos los canales de la imagen en el espacio HSL. Un ejemplo del resultado obtenido
se puede apreciar en la figura 3.17, a simple vista no parece haber cambio alguno respecto
de la imagen original (izquierda en 3.13), sin embargo este filtro resulta de importancia para
limpiar ruido que se hace mas visible durante la segmentación de la imagen. Aún ası́ se puede
apreciar diferencias si se inspecciona la imagen con detalle, por ejemplo, la grilla del visor en
la figura 3.17 sufre una transformación importante bajo este filtro.
Figura 3.16: Diagrama de bloques para filtrado de ruido.
43
Figura 3.17: Filtro de mediana.
3.2.2.6
Detección básica de horizonte
Los procesamientos vistos hasta ahora buscan corregir o realzar caracterı́sticas presentes
en la imagen, sin embargo la detección básica de horizonte busca extraer información valiosa
de ella. Para definir los objetos en la escena marı́tima era importante la detección de la lı́nea
de horizonte con la finalidad de establecer una frontera sobre la cual buscar información.
La salida del algoritmo de detección de horizonte, es un número entero, que representa la
posición en la coordenada espacialy, en la cual este fue detectado. En la figura 3.18 se muestra
un diagrama de bloques con los procedimientos utilizados para el algoritmo de detección.
Figura 3.18: Diagrama de bloques para detección de horizonte.
44
Para ello se aplicó un filtro espacial laplaciano con la finalidad de resaltar los bordes dentro
de la imagen. Luego se utilizó un filtro Canny para extraer los bordes en una imagen binaria
y finalmente se empleo la transformada de Hough para buscar segmentos de recta dentro
del conjunto de bordes. Una vez extraı́dos los segmentos se eligió el segmento con mayor
puntuación, y se gráfico su posición para mejor visualización, este segmento es el horizonte
detectado. La imagen 3.19 muestra el resultado obtenido por el algoritmo, el segmento de
recta en color rojo marcado en la imagen, representa el horizonte encontrado.
Figura 3.19: Detección básica de horizonte.
3.2.2.7
Segmentación de la imagen
Para realizar la segmentación de la imagen se utilizó el algoritmo de agrupamiento no supervisado, K-means. Inicialmente se realizó una transformación del espacio RGB a CIELAB,
y se convirtió la imagen en un arreglo matricial de tamaño N × 3, donde N es el número de
pı́xeles que contiene la imagen. En el diagrama de la figura 3.20 se muestra el procedimiento
básico utilizado.
Este arreglo se agrupó utilizando K-means con un valor de k igual a cinco (5). Por ende la
45
imagen se se segmento en cinco (5) grupos, se utilizó un máximo de iteraciones predeterminado de cincuenta (50), este valor fija el número máximo de veces que el algoritmo de K-means
asigna y clasifica muestras en el espacio. El parámetro de parada del algoritmo utilizado
es el error de convergencia tolerado en el cálculo de nuevos centroides, si la posición de un
centroide varia más que este valor, se vuelve a iterar hasta que el centroide varie menos que
el error. Estas distancias son medida dentro del espacio de color CIELAB. El error minino
de distancia elegido se fijó en 0.1.
Figura 3.20: Diagrama de bloques de segmentación.
Finalmente, cada uno de los arreglos se le asigno un valor númerico y se reconvirtió cada
uno a una imagen. De esta forma se obtienen cinco (5) imágenes binarias. En la figura 3.21
se muestran las cinco (5) imágenes obtenidas para una escena marı́tima obtenida por el
periscopio. Nótese la correcta segmentación de los barcos en la cuarta imagen de izquierda a
derecha.
46
Figura 3.21: Segmentación utilizando K-means.
3.2.2.8
Filtrado de partı́culas
Una vez segmentada la imagen, las cinco imágenes resultantes fueron sometidas a un
filtrado morfológico de auto-mediana, también se aplicó un filtro morfológico para remover
las partı́culas que no soportaran un cierto número de erosiones.
Auto − mediana(I) = Opening(closing(opening(I))) ∧ closing(opening(closing(I)))
Luego se utilizaron una serie de filtros de partı́culas para determinar si estas guardaban la
posibilidad de ser un barco o bote. Se utilizaron una serie de caracterı́sticas como la relación
entre perı́metro y área, la posición del momento cero de las partı́culas (centro de masa), y el
número de orificios en la partı́culas [17].
Figura 3.22: Diagrama de análisis morfológico utilizado.
47
Figura 3.23: Posibles barcos detectados.
3.2.3
Base de datos
La base de datos es una de las partes fundamentales para mantener la integridad del
sistema. Ella brinda acceso a la herramienta de programación (LabVIEW) a las imágenes y
videos adquiridos, y permite realizar búsquedas de forma rápida y eficiente. Esta se encontrara
de forma local en el computador utilizado para adquisición y procesamiento, con un único
usuario protegido por contraseña, al cual el operador no tiene acceso, mas que con la interfaz
diseñada en LabVIEW.
3.2.3.1
Diseño
Para el sistema de adquisición de imágenes para periscopio, se diseño una base de datos
muy sencilla, que permitiese mantener datos relevantes de todas las adquisiciones y nos diese
la posibilidad de clasificar estas en grupos a través de marcadores o tags. Estos pueden ser
creados por el operador del sistema y asignados a cada imagen o video en particular. La
búsqueda por marcadores, devuelve ası́ todas las imágenes pertenecientes a un determinado
grupo.
48
En la figura 3.24 se muestra un diagrama entidad relación de la base de datos diseñada.
La tabla de imágenes (llamada images) guarda cinco atributos de la imagen o video, entre
ellos nombre (name) y dirección en disco de la adquisición (path). La tabla de asignación
(asign) permite crear tuplas entre adquisiciónes y marcadores, no existe un máximo para la
cantidad de relaciones que se pueden crear, sin embargo, cada marcador debe estar asignado
mı́nimo a una imagen y cada imagen puede o no estar asignada a algún marcador. Por ultimo
la tabla de marcadores (tags) guarda el nombre de un determinado marcador. En la tabla
3.3 se muestra una explicación detallada de cada atributo.
Figura 3.24: Diagrama entidad-relación de la base de datos
49
Entidades
Entidad
Semántica
Atributo
images
Imágenes y
videos adquiridos
id
name
path
date time
type
tags
Marcadores de
imágenes o videos.
id
name
Semántica
del atributo
Identificación
de la entidad
Nombre de la
imagen o video
Dirección del
archivo
Fecha y hora
de adquisición
Tipo video
o imagen
Identificación
de la entidad
Nombre del
marcador
Tipo
SERIAL
VARCHAR(250)
VARCHAR(250)
TIMESTAMP
VARCHAR(50)
SERIAL
VARCHAR(250)
Interrelacionales
Entidad
Semántica
Atributo
Semántica
del atributo
Tipo
asign(i,t)
Representa la
asignación de un
tag t a una imagen i
id
Identificación
de la relación
SERIAL
Tabla 3.3: Diccionario de base de datos
50
3.2.3.2
Implementación
La base de datos se creó utilizando PostgreSQL, debido a su simplicidad y robustez para
desarrollo de bases en lenguaje SQL. Para ello se utilizó la interfaz gráfica que provee Postgres,
llamada Pgadmin.
PostgreSQL no tiene un tamaño máximo para bases de datos, cada tabla tiene sin embargo
un máximo disponible de 32TB, cada fila, de 400GB, y un máximo de 250 columnas por
tabla [18]. En nuestro caso particular, la tabla más grande tiene un total de 5 campos o
atributos. En el peor de los casos, sin tomar en consideración la distribución y overhead que
se introduce en una base de datos, los valores depositados en ella, no superan los 700Bytes
(ver tabla 3.3 para tipos de datos almacenados).
Dado que la base de datos funcionará sólo de forma local, se creó un único usuario y un
archivo de configuración DSN (del inglés Data source name). Este último permite conectar el
driver de la base de datos a través del estándar ODBC (del inglés Open database connectivity)
con el entorno de programación de LabVIEW.
3.2.4
Diseño de interfaz HMI
La interfaz HMI (del inglés Human machine interface) del sistema de adquisición y procesamiento de imágenes para periscopio, permitirá al operador monitorear y adquirir imágenes
en tiempo real, ası́ como también grabar videos y modificar archivos dentro de la base de
datos.
El manejo de la interfaz se realiza a través de eventos que son activados por los controles
presentes en la interfaz, desde un botón hasta el cambio de pestañas, en la figura 3.25 se
listan los eventos utilizados en cada una de las ventanas.
51
Figura 3.25: Eventos de HMI.
3.2.4.1
Estructura
La pantalla principal del sistema esta estructurada en tres secciones principales, divididas
por pestañas. En la primera sección se encuentran los controles de adquisición acompañados
de un visor. También se añadió la capacidad de importar imágenes del sistema de archivo, con
la finalidad de facilitar las pruebas del sistema. La figura 3.26 muestra como luce la sección
de adquisición en la interfaz diseñada.
52
Figura 3.26: Pantalla de adquisición del sistema
La segunda sección llamada Administrador de imágenes, permite inspeccionar las imágenes y videos almacenados a través de un par de listas, una para imágenes y otra para videos.
En estas se pueden seleccionar imágenes para su despliegue en el visor y cambiar el nombre por defecto de una imagen en particular. Dichas listas se pueden refinar a través de la
búsqueda por marcadores incluida en la interfaz. También en esta sección se permite eliminar
adquisiciones seleccionadas.
Por último la pestaña de administración de imágenes brinda acceso al administrador de
marcadores y al módulo de envı́o de correos electrónicos. En la figura 3.27 se muestra una
captura de pantalla de la segunda sección.
53
Figura 3.27: Pantalla del administrador de imágenes.
La tercera pestaña esta diseñada para albergar, manipulaciones o procesamientos que se
quieran realizar sobre la imagen. Actualmente sólo se dispone de un control para aplicar
el procesamiento descrito en este libro, y modificar parámetros sencillos como el brillo o
contraste de una imagen seleccionada. Se dispone para ello de un visor de imágenes, y un
control para el almacenamiento de una imagen procesada. La figura 3.28 muestra la pantalla
de procesamiento descrita.
Figura 3.28: Pantalla de procesamiento del sistema
54
3.2.4.2
Administrador de marcadores
Adicionalmente a la pantalla principal, se diseñaron un par de ventanas de diálogo con
finalidades mas especı́ficas. La primera de ellas es un administrador de marcadores, cuyo
propósito es el de asignar a una imagen en particular un marcador.
El administrador sólo puede ser desplegado una vez se haya seleccionado una imagen o
video en la pantalla del administrador de imágenes (ver figura 3.27). Ello se debe a que el
administrador de marcadores permite la modificación de marcadores en sólo una imagen a la
vez.
En la figura 3.29 se visualiza la interfaz creada para el administrador de marcadores.
Ella permite la creación de marcadores nuevos, la asignación de alguno existente (a través
del control Seleccionar Tag), o la remoción de estos, y muestra una lista con los marcadores
actuales de la imagen. No se permite eliminar marcadores de forma global, dicha funcionalidad
será manejada por la aplicación cuando un marcador sea eliminado de la última imagen a la
cual se encuentra asignado.
Figura 3.29: Pantalla del módulo de correo electrónico
55
3.2.4.3
Módulo de envı́o de correos electrónicos
El módulo de envı́o de correos electrónicos ofrece flexibilidad al momento de transmitir
información valiosa fuera del sistema de visión. Para ello se incluyo la funcionalidad de envı́o
de imágenes a través de correo electrónico, utilizando el módulo de conectividad ofrecido por
LabVIEW. En este se utilizó el protocolo SMTP para enviar correos desde una dirección
pre-configurada, con la posibilidad de añadir hasta 10 imágenes por mensaje. Es importante
destacar que las imágenes son convertidas a formato JPEG antes de ser enviadas, para reducir
el tiempo de envı́o.
Figura 3.30: Pantalla del módulo de correo electrónico
Capı́tulo 4
Pruebas y resultados
Para realizar las simulaciones del sistema de adquisición y procesamiento de imágenes,
se utilizó una computadora portátil con las caracterı́sticas mostradas en la tabla 4.1. Cabe
destacar que el poder de procesamiento entregado por ésta máquina es mucho menor, al
diseñado para el sistema final.
Sistema operativo
Entorno
RAM
Tarjeta de video
Procesador
Almacenamiento
Windows 7
LabVIEW 2014
4 GB
Intel HD 3000
Intel Core i3-2310M Sandy Bridge @ 2.1 GHz
Hitachi HDD 640GB 5400RPM
Tabla 4.1: Caracterı́sticas del sistema utilizado para la simulación.
En cuanto a la cámara, se utilizó la cámara integrada en la computadora portátil (webcam)
para simular las tasas de transferencia necesarias. Ésta produce imágenes de una resolución
más limitada y no permite la transferencia con el mosaico de Bayer.
Debido a ello, la decodificación de Bayer se mantuvo desactivada en todas las adquisiciones. Al no estar codificadas, las imágenes enviadas por la cámara contienen la información
57
completa de los canales RGB, necesitando ası́ una mayor tasa de transferencia de bits, que
compensó la baja resolución de la cámara para efectos de la simulación.
Es importante resaltar que estas imágenes se corresponden a escenas dentro del entorno
de trabajo, y su utilización pretende probar que se cumplan los requerimientos en cuanto
a la tasa de bits necesaria para una correcta adquisición. Estas representan el tamaño de
imágenes en un formato descomprimido, sin embargo no representan el tamaño final de los
archivos comprimidos, ya que variaciones en la escena, modificarán la forma en la que ésta
se comprima.
4.1
Resultados de adquisición
Para medir la velocidad de adquisición, se gráfico la cantidad de cuadros por segundo que
el visor de imágenes despliega, mientras el sistema estaba funcionando. La gráfica de la figura
4.1 muestra que el sistema sin estrés; ésto es sin almacenar ni procesar más de un archivo a
la vez, mantiene alrededor de treinta (30) cuadros por segundo de forma constante.
58
Figura 4.1: Cuadros por segundo mostrados en el visor.
Sin embargo, si se está realizando una grabación y codificando al mismo tiempo un vı́deo
ya adquirido la cantidad de cuadros por segundo decae. Ello ocurre ya que la adquisición
requiere una tasa de bits, que ahora tiene que compartir con la codificación de otro archivo
en segundo plano. Nótese también que todas éstas pruebas fueron realizadas en un disco
duro no dedicado, por lo cual ambos procesos, también tienen que compartir recursos con
otros servicios del sistema operativo y otras aplicaciones. Además el disco duro presente en el
computador portátil presenta prestaciones disminuidas respecto del diseñado (ver tabla 3.2).
En el sistema de adquisición la captura de fotografı́as se realiza a través de un botón
que el operador controla de forma manual. Para probar la capacidad del sistema de adquirir
imágenes, se diseño una prueba fuera del sistema. En ella se modificó el evento relacionado con
la toma de fotografı́as, y se configuró el sistema para adquirir y guardar imágenes en formato
TIFF y JPEG a una resolución de 640x480 tan rápido como fuera posible. En la tabla 4.2
se puede observar que la velocidad de escritura tanto para TIFF (usado en almacenamiento)
59
como para JPEG (usado en el módulo de envı́o de correos) excede la cantidad de veces que
el operador es capaz de accionar el evento de tomar fotografı́a.
Tipo de Archivo
JPEG
TIFF Sin compresión
TIFF ZIP
Número de archivos
generados por segundo
28,52
21,82
9,68
Tamaño de archivo
(promedio) [KB]
28,2
900
476,3
Tabla 4.2: Tabla comparativa de formatos de imágenes
También se hicieron pruebas con diferentes resoluciones de video para estresar el sistema
y comprobar que se cumple con las velocidades de escritura en disco necesarias. Para ello, se
procedió a grabar por un total de diez (10) minutos continuos. Como se puede ver en la tabla
4.3 y la figura 4.2, se mantuvieron valores alrededor de los treinta (30) cuadros por segundo
para una tasa de bits similar a la diseñada. Para una tasa de bits superior, se pierden cuadros
debido a limitaciones en la velocidad de escritura en disco, y como resultado la velocidad de
adquisición se ve reducida.
(a) Video 640x480
(b) Video 1280x720
Figura 4.2: Tasa de cuadros durante adquisiciones de video.
60
Resolución
640x480
1280x720
Tasa de bits
requerida
[MB/s]
35,2
105,5
Tasa de bits
efectiva
[MB/s]
35,1
68,2
FPS
(promedio)
FPS
(mı́nimo)
FPS
(máximo)
29,9
19,4
24,9
5,6
30,4
24,9
Tabla 4.3: Resultados de adquisición de video.
En la tabla 4.4 se muestran los resultados obtenidos para diferentes tamaños de archivos
de video utilizando una tasa de bits similar a la diseñada. En esta se aprecia la capacidad
del códec para comprimir archivos. Nótese que estos archivos, son grabaciones en el entorno
de trabajo, y no videos reales, motivo por el cual, el tamaño del archivo comprimido puede
variar a futuro.
Tiempo
de adquisición
[s]
120
300
600
Tiempo
codificando
Lagarith [s]
148,3
341,1
860,4
Tamaño
de archivo
comprimido [GB]
0,864
2,16
4,45
Tamaño
de archivo
sin comprimir [GB]
4,08
10,2
20,45
Tabla 4.4: Tamaño de archivos para diferentes tiempos de adquisición.
4.2
Resultados del procesamiento de imágenes
Para las pruebas de procesamiento se utilizaron catorce (14) imágenes con dieciséis (16)
barcos en total. Estas imágenes fueron entregadas por la Armada de Venezuela, y adquiridas
con una cámara comercial, actualmente dispuesta en el visor auxiliar del periscopio.
Inicialmente se probó la eficacia del detector de horizonte, cuyos resultados se muestran
en la tabla 4.5.
61
Total Imágenes
14
Horizonte
detectado
correctamente
7
Horizonte
detectado
erróneamente
7
Horizonte
no detectado
0
Tabla 4.5: Eficacia del detector de horizonte
El principal problema con éste detector, fueron las lı́neas del visor del periscopio. Éstas se
encuentran en todas las imágenes, y se ubican en posiciones distintas para cada una de ellas
lo cual dificulta su remoción. Ésto sumado a la falta de contraste existente entre el cielo y el
mar, en muchas de las imágenes, provocó una detección errónea. Es importante destacar que
para seis (6) de las siete (7) detecciónes erróneas, el horizonte fue confundido con una lı́nea
horizontal en el visor.
Sin embargo dicha detección no afectó de forma importante el procesamiento de las imágenes utilizadas, ya que en todos los casos la grilla del visor del periscopio se encontraba por
encima del mar. Ésto provocó que en una imagen se obtuviera una partı́cula sobre el nivel
del mar, pero nunca descartó la información relacionada a los barcos.
A continuación se muestra la distribución obtenida en los datos segmentados. En la figura
4.4 podemos apreciar como se encuentra espaciada la información de color segmentada. Principalmente se aprecia que los centroides asignados se corresponden con una segmentación de
la componente de luminosidad. Nótese que esta gráfica presenta la información en dos (2)
para su mejor entendimiento, en el procesamiento diseñado, se utilizaron tres (3) coordenadas
(L, a y b del espacio CIELab)
62
(a) Original
(d) Segmentación
(b) Pre-procesamiento
(c) Detección de horizonte
(e) Filtrado de partı́culas
(f) Detección
Figura 4.3: Ejemplo de procesamiento a una imagen de barco.
Figura 4.4: Distribución de pı́xeles para componente L y A
63
Para evaluar la eficiencia obtenida con el sistema de detección es necesario tomar en
cuenta los falsos positivos que éste pueda generar. En nuestro caso particular, llamaremos
al complemento del objeto barco, no-barco. Todos las partı́culas que sobrevivan las erosiones
morfológicas realizadas para filtrar objetos pequeños y alcancen la etapa de clasificación de
partı́culas son barcos potenciales.
La matriz mostrada a continuación permite evaluar las asignaciones a estos barcos potenciales, realizadas por el algoritmo de procesamiento diseñado.
Reales
Barcos
No-Barcos
Detectados
Barcos
11
5
No-Barcos
5
–
Tabla 4.6: Matriz de detección (Matching matrix ).
De dieciséis (16) barcos, se detectaron correctamente once (11). Además cinco (5) objetos
que no eran barcos, fueron detectados como barcos (falsos positivos). Los barcos detectados
como no-barcos, corresponden a barcos no detectados (falsos negativos).
Imagen ID
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Detección
ideal
1
1
2
2
1
1
1
1
1
1
1
1
1
1
Barcos
detectados
1
1
2
2
1
1
0
0
0
1
1
0
1
0
Falsos
positivos
0
0
0
0
0
0
1
0
0
0
1
2
1
0
Tiempo
detectando [s]
18,3
22,6
9,5
20,1
25,1
21,1
50,9
54,2
52,2
36,3
49,6
51,4
48,2
34,3
Horizonte
correcto
1
1
1
1
1
1
0
0
0
0
0
0
0
1
Horizonte
errado
0
0
0
0
0
0
1
1
1
1
1
1
1
0
Tabla 4.7: Resultados de detección detallados.
Segmentación
correcta
1
1
1
1
1
1
1
1
0
1
0
0
1
0
64
En la tabla 4.7 se aprecia como los resultados se dividen principalmente en dos grupos,
aquellos con un bajo tiempo de detección y una detección buena y aquellos con un alto tiempo
de detección, que en general lograron resultados pobres.
De los cinco (5) barcos no detectados, en dos (2) de los casos se debió a que la grilla del
visor interfirió con la segmentación del objeto. Debido a ello, el objeto fue dividido en dos
partes, y descartado posteriormente. En los otros tres casos el objeto, era muy pequeño y
muy poco definido por efecto de la bruma presente en la imagen.
Por su parte, los falsos positivos ocurrieron en imágenes donde el algoritmo de segmentación alcanzó su máximo de iteraciones sin alcanzar o converger a un error mı́nimo, ello
provocó un mayor tiempo durante la segmentación y generó segmentaciones erradas que al
llegar a la etapa de detección fueron erróneamente clasificadas como barcos. Ésto ocurrió
cuando los datos utilizados para la segmentación en K-means carecen de contrate suficiente,
lo cual se traduce en un bajo valor de varianza entre clases.
Capı́tulo 5
Conclusiones y recomendaciones
El proyecto de pasantı́a se culmina de manera exitosa, al lograr los objetivos necesarios
para el desarrollo de un sistema de adquisición y procesamiento de imágenes con LabVIEW.
Además se logró una primera versión de un detector de objetos en la escena marı́tima.
La utilización de NI LabVIEW permitió un desarrollo rápido de subrutinas para poder
realizar iteraciones sobre el desarrollo, que verificaran la funcionalidad del sistema en cada
fase. A su vez PostgreSQL a través de su interfaz gráfica Pgadmin permitió la creación y
modificación de la base de datos de forma sencilla.
Se realizó con éxito la adquisición de imágenes en tiempo real. En el caso del video,
las librerı́as de LabVIEW ofrecen poco soporte para su visualización, reduciendo el número
de códecs y formatos compatibles. Además el video solo puede ser codificado luego de su
completa adquisición, lo cual demora la capacidad del operador para inspeccionarlo.
Se recomienda utilizar una unidad de disco exclusiva para el programa de adquisición,
separada de la unidad donde se encuentre el sistema operativo. Esto permitirá el completo uso
de la capacidad de escritura en disco cuando se realicen dos adquisiciones de video continuas.
66
Con éste proyecto de pasantı́a se hizo una primera incursión en los algoritmos para detección de óbjetos en la escena marı́tima. Los resultados obtenidos, muestran, limitaciones en
las caracterı́sticas necesarias en la escena para una correcta detección. Las escenas con alto
contraste y buena diferenciación llegaron en general a una detección exitosa, pero cuando la
calidad de la imagen se veı́a deteriorada, la detección no existı́a o era errónea.
Por ello resulta indispensable la correcta calibración de la cámara una vez se disponga en
el visor del periscopio. Ésta se debe encontrar fija y bien enfocada, para permitir un mejor
análisis de la escena, al eliminar la rejilla del visor.
Es necesario también generar una librerı́a de procesamiento más amplia para LabVIEW
a través de la inclusión de librerı́as dinámicas de OpenCV, ya que los recursos disponibles
actualmente se encuentran muy enfocados a el procesamiento de imágenes en la industria,
principalmente en lı́neas de producción.
Finalmente se debe considerar la utilización de algoritmos supervisados de aprendizaje
automático, una vez se tenga una base de datos de barcos más nutrida, con la finalidad de
generar detectores más robustos que permitan la clasificación de barcos dentro de la escena
marı́tima de forma automática.
Bibliografı́a
[1] N. 16165, Submarine Periscope Manual.
Maritime Park Association, 1946. [Online].
Available: http://maritime.org/doc/fleetsub/pscope/index.htm
[2] R. C. Gonzalez and R. E. Woods, Digital image processing 3rd edition.
Prentice Hall,
2007.
[3] A. C. Bovik, The essential guide to image processing. Academic Press, 2009.
[4] T. Vitale, “Digital image file formats - tiff, jpeg, jpeg2000, raw and dng,” July
2007. [Online]. Available: http://cool.conservation-us.org/coolaic/sg/emg/library/pdf/
vitale/2007-07-vitale-digital image file formats.pdf
[5] J. A. Hartigan and M. A. Wong, “Algorithm as 136: A k-means clustering algorithm,”
Applied statistics, pp. 100–108, 1979.
[6] D. J. Liu and J. Yu, “Otsu method and k-means,” in Hybrid Intelligent Systems, 2009.
HIS’09. Ninth International Conference on, vol. 1. IEEE, 2009, pp. 344–349.
[7] J. Li. (2012, March) On mean shift and k-means clustering. [Online]. Available:
http://jamesxli.blogspot.com/2012/03/on-mean-shift-and-k-means-clustering.html
68
[8] National Instruments. (2011, June) Particle measurements. [Online]. Available: http://zone.ni.com/reference/en-XX/help/372916L-01/nivisionconcepts/particle
measurements/
[9] ——. (2011, June) Edge detection concepts. [Online]. Available: http://zone.ni.com/
reference/en-XX/help/372916L-01/nivisionconcepts/edge detection concepts/
[10] B. Greenwood. (2011, December) Lagarith lossless video codec. [Online]. Available:
http://lags.leetcode.net/codec.html
[11] National Instruments, “What is labview?” Newsletter, August 2013. [Online]. Available:
http://www.ni.com/newsletter/51141/en/
[12] ——, “Vision development module.” [Online]. Available: http://www.ni.com/vision/
esa/vdm.htm
[13] ——, LabVIEW, Database Connectivity Toolkit User Manual, June 2008. [Online].
Available: http://www.ni.com/pdf/manuals/371525a.pdf
[14] Basler. Aplication notes, comparison: aviator one megapixel vs. a102f, sca1400-17gm,
sca1300-32gm, pia1000-48gm. [Online]. Available: https://www.baslerweb.com/media/
documents/BAS0911 Application Note Aviator and others.pdf
[15] T.
Collins,
2005.
“Pseudo-flat
[Online].
Available:
field
for
imagej
for
microscopy
manual,”
March
http://www.uhnres.utoronto.ca/facilities/wcif/imagej/
image intensity proce.htm
[16] E. Arias-Castro and D. L. Donoho, “Does median filtering truly preserve edges better
than linear filtering?” The Annals of Statistics, pp. 1172–1206, 2009.
69
[17] T. Acharya and A. K. Ray, Image processing: principles and applications. John Wiley
& Sons, 2005.
[18] PostgreSQL. About postgresql. [Online]. Available: http://www.postgresql.org/about/
Descargar