Tesis Opencv Python
Tesis Opencv Python
Tesis
Que para obtener el título de:
Presenta:
Director
Revisores
A mi mama por todo el apoyo y esfuerzo dedicado para mi desarrollo profesional y personal.
A mi director de tesis Dr. en I. S. José Sergio Ruiz Castilla por la dedicación que invirtió en
el desarrollo de este proyecto.
A los revisores M. en C. Yedid Erandini Niño Membrillo y Dr. en C. Adrián Trueba Espinosa
por la aportación de sus conocimientos para la mejora de este proyecto.
II
Índice
Tabla de contenido
Oficio de digitalización………………...………………………………………………............ I
Agradecimientos………………………...………………………………………………….…. II
Índice……………………………………...………………………………………………….. III
Índice de figuras……………………………...………………………………………...…….. IV
Resumen…………...………………………………………………………………………….. V
1 Capítulo 1 Introducción.....................................................................................................................1
1.1. Introducción ..............................................................................................................................1
1.2. Planteamiento del problema ......................................................................................................2
1.3. Justificación...............................................................................................................................2
1.4 Objetivos .....................................................................................................................................3
1.4.1 Objetivo general ...................................................................................................................3
1.4.2 Objetivos específicos............................................................................................................3
2 Capítulo 2: Herramientas utilizadas y actividades de una tlapalería .................................................3
2.1 Introducción ...............................................................................................................................3
2.2 Raspberry Pi 2............................................................................................................................4
2.3 OpenCV ......................................................................................................................................6
2.3.1 Estructura.............................................................................................................................6
2.3.2 Funciones de OpenCV .........................................................................................................8
2.4 Python ......................................................................................................................................11
2.4.1 Lenguaje interpretado o de script ......................................................................................11
2.5 Adobe Photoshop .....................................................................................................................13
2.6 Ciclo de vida en cascada ..........................................................................................................14
2.7 Concepto y productos de una tlapalería ...................................................................................15
2.7.1 Modelos de negocio de una tlapalería ...............................................................................16
2.7.2 Proceso de venta de un artículo en específico ...................................................................17
3 Capítulo 3 Imágenes digitales .........................................................................................................18
3.1. Conceptos básicos del procesamiento digital de imágenes .....................................................18
3.1.1 Proceso de captación y formación de una imagen .............................................................19
3.2 Modelos de representación .......................................................................................................21
3.2.1 Mapa de bits ......................................................................................................................21
3.2.2 Gráfico vectorial................................................................................................................22
3.3 Principales aplicaciones ...........................................................................................................23
3.4 Problemática en el análisis automatizado de imágenes ............................................................24
3.5 Textura .....................................................................................................................................25
3.6 Clasificadores ...........................................................................................................................27
3.7 Introducción a la edición paramétrica de imágenes .................................................................29
3.8 Paradigma en el análisis de imágenes ......................................................................................30
3.8.1 Etapa 1: Captación de la Imagen .......................................................................................32
3.8.2 Etapa 2: Pre procesamiento: ..............................................................................................34
3.8.2.1 Filtros ..............................................................................................................................37
3.9 Etapa 3: Segmentación .............................................................................................................44
3.9.1 Segmentación por el clasificador de Bayes .......................................................................46
3.9.2 Formula de Bayes aplicada a la segmentación supervisada ..............................................46
3.9.3 Detección de bordes ..........................................................................................................48
3.9.4 Operador de Canny ...........................................................................................................50
3.10 Técnicas actuales de segmentación ........................................................................................50
3.10.1 Modelos deformables ......................................................................................................51
3.11 Etapa 4: Representación .........................................................................................................52
3.11.1 Modelos en dos dimensiones...........................................................................................54
3.11.2 Polilíneas .........................................................................................................................54
3.12 Etapa 5: Descripción ..............................................................................................................55
3.12.1 Obtención de características del objeto por color ............................................................55
3.12.2 Modelo sensorial ..............................................................................................................56
3.12.3 Modelo perceptual............................................................................................................56
3.12.4 Extracción de puntos .......................................................................................................57
3.12.5 Puntos característicos a partir de aristas: puntos de fuga ................................................58
3.12.6 Puntos característicos a partir de la propia imagen: puntos esquina ...............................59
3.13 Extracción de líneas ...............................................................................................................59
3.13.1 Transformada de Hough para líneas ...............................................................................61
3.14 Extracción de círculos ............................................................................................................62
3.15 Etapa 6: Reconocimiento .......................................................................................................63
3.15.1 Clasificador “K Vecinos más Próximos” .........................................................................63
4 Capítulo 4. Técnicas de tratamiento de imágenes ...........................................................................64
4.1 Sift .............................................................................................................................................64
4.2 Surf ..........................................................................................................................................69
4.3 Orb ...........................................................................................................................................74
4.4 Freak ........................................................................................................................................74
4.5 Flann .........................................................................................................................................75
5 Capítulo 5. Metodología..................................................................................................................77
5.1 Propuesta de solución...............................................................................................................77
5.1.1 Ciclo de vida en cascada ....................................................................................................78
5.1.1.1 Etapa 1 Análisis de requerimientos .................................................................................78
5.1.1.2 Etapa 2 Diseño ................................................................................................................81
5.1.1.3 Etapa 3 Implementación..................................................................................................87
5.1.1.4 Etapa 4 Integración .........................................................................................................90
6 Capítulo 6 Resultados .....................................................................................................................91
6.1 Etapa 5 Pruebas .........................................................................................................................91
7 Capitulo 7 Conclusiones ...............................................................................................................104
7.1 Temas futuros..........................................................................................................................105
7.2 Referencias ..............................................................................................................................107
III
Índice de figuras
Resumen
Con el paso del tiempo la tecnología va teniendo un auge rápidamente, lo que da origen a la
creación de nuevas tecnologías que son de gran utilidad en la vida diaria de las personas.
Estas nuevas ideas son de gran utilidad en el ámbito informático debido a que el auge en la
tecnología trae consigo la creación de nuevos sistemas, aplicaciones entre otras cosas, las
cuales al hacer uso de ellas conlleva a la creación de nuevos conocimientos.
1.1. Introducción
Un problema clásico sucede en tiendas que venden herramientas, refacciones o componentes
cuyos nombres podrían ser difíciles de aprender y recordar, por lo que, los clientes llevan
físicamente un objeto y piden uno nuevo. Por otro lado, puede haber empleados de las tiendas
que tampoco saben los nombres de los artículos. Por lo anterior, se planteó resolver el
problema para reconocer objetos por computadora.
El objetivo del trabajo consiste en, reconocer objetos a partir de una imagen que puede ser
una fotografía. Con la idea de que, se proporcione la imagen al sistema y pueda reconocer el
objeto para darnos el nombre, existencia, precio, ubicación, etc.
Se probó con 20 imágenes de las cuales reconoció 15 y las otras 5 fue necesario aplicar un
pre-procesamiento adicional como cambiar el tamaño. Agregar que, se estableció el 80% de
grado de similitud para el reconocimiento de objetos. Al final se lograron reconocer los 20
objetos.
1
1.2.Planteamiento del problema
Un problema que se presenta de las tlapalerías, entre otros tipos de negocios similares, sucede
cuando un cliente se presenta con un objeto que desea comprar, por lo que, lo muestra en la
tlapalería sin conocer el nombre y especificaciones del mismo, por otro lado, el dependiente
del mostrador también podría desconocer dicho objeto. Lo anterior, obliga a una búsqueda
comparando la pieza con las existentes en todo el almacén con una considerable pérdida de
tiempo y posible fracaso.
Cuando el cliente llega a la sucursal y lleva una muestra del producto que desea adquirir, en
la mayoría de las veces, la tlapalería no ha podido ayudar al cliente a encontrar lo que busca,
debido a que, tanto el trabajador como el cliente ignoran el nombre del artículo buscado.
1.3.Justificación
Cabe mencionar que, el uso de este tipo de sistemas no solo beneficia a microempresas de
este tipo, sino también, contribuye a otros tipos de negocio, como tiendas de herramienta
especializadas, material para hospitales, material de electrónica, entre otro tipo de negocio.
Por otra parte, esto conlleva a una mayor atención personalizada a los clientes debido a que
las imágenes de los productos almacenados en una base de datos acorde a la empresa, dando
lugar a mayores innovaciones tecnológicas, trayendo consigo, la generación de ventajas
competitivas sobre las demás empresas.
2
1.4 Objetivos
3. Desarrollar un algoritmo que permita identificar una imagen, a partir de, una
fotografía.
5. Implementar el sistema.
1.4. Hipótesis
2.1 Introducción
La inteligencia artificial ha evolucionado en todas sus áreas. En este caso, la visión artificial
no es la excepción. En los últimos tiempos, esta área permite diversas aplicaciones entre ellas
el reconocimiento de objetos, huellas dactilares y rostros, entre otros.
3
2.2 Raspberry Pi 2
En función del modelo que se elija, se dispone de una o más opciones de conexión, aunque
siempre se dispone de al menos un puerto de salida de video HDMI y otro de tipo RCA,
minijack de audio y un puerto USB 2.0 (modelos A y A+, el modelo B dispone de dos USB
y B+, Raspberry Pi 2 y Raspberry Pi 3 disponen de 4 USB) al que conectar un teclado y ratón.
4
Figura 1: Estructura Raspberry pi 2 (raspberryshop, 2016)
En la placa se encuentra además con una salida de vídeo y audio a través de un conector
HDMI, con lo que se consigue conectar la tarjeta tanto a televisores como a monitores que
cuenten con dicha conexión. En cuanto a vídeo se refiere, también cuenta con una salida de
vídeo compuesto y una salida de audio a través de un minijack. Posee una conexión ethernet
10/100 y, si bien es cierto que podría echarse en falta una conexión Wi-Fi, gracias a los dos
puertos USB incluidos, se puede suplir dicha carencia con un adaptador WIFI si se necesita.
La placa Raspberry Pi se entrega sin ningún Sistema Operativo; éste se debe descargar e
instalarlo sobre una tarjeta SD / microSD que se introduce en la ranura de la Raspberry Pi.
5
2.3 OpenCV
Menciona (Arevalo, Gonzalez, & Ambrosio, 2016) OpenCV The Open Computer Vision
Library, el 13 de Junio del 2000, Intel® Corporation anunció que estaba trabajando con un
grupo de reconocidos investigadores en visión por computadora para realizar una nueva
librería de estructuras/funciones en lenguaje C. Esta librería proporcionaría un marco de
trabajo de nivel medio-alto que ayudaría al personal docente e investigador a desarrollar
nuevas formas de interactuar con los ordenadores. Este anuncio tuvo lugar en la apertura del
IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR).
Había nacido The Open Computer Vision Library y lo hacía bajo licencia BSD (Software
Libre).
No utiliza librerías numéricas externas, aunque puede hacer uso de alguna de ellas, si están
disponibles, en tiempo de ejecución.
• Es compatible con The Intel® Processing Library (IPL) y utiliza The Intel® Integrated
Performance Primitives (IPP) para mejorar su rendimiento, si están disponibles en el
sistema.
Dispone de interfaces para algunos otros lenguajes y entornos: EiC - intérprete ANSI C
escrito por Ed Breen. Hawk y CvEnv son entornos interactivos (escritos en MFC y TCL,
respectivamente) que utilizan el intérprete EiC; Ch - intérprete ANSI C/C++ creado y
soportado por la compañía SoftIntegration; Matlab® - gran entorno para el cálculo numérico
y simbólico creado por Mathworks; y muchos más.
2.3.1 Estructura
6
segmentación y reconocimiento de objetos; reconocimiento de gestos; seguimiento del
movimiento; estructura del movimiento; y robots móviles. Ver figura 2.
7
2.3.2 Funciones de OpenCV
Según (Ruiz, 2015) como se muestra en la figura 3 OpenCV tiene una estructura modular.
Los módulos principales de OpenCV son:
– core: Este es el módulo básico de OpenCV. Incluye las estructuras de datos básicas y
las funciones básicas de procesamiento de imágenes. Este módulo también es usado por otros
módulos como highgui.
8
– objdetect: Incluye algoritmos de detección y reconocimiento de objetos para objetos
estándar.
• Lo primero que se debe hacer es actualizar los paquetes existentes desde la terminal,
una vez concluida esta tarea se debe actualizar el firmware de la raspberry pi 2.
• Ahora se pasa a la instalación de los paquetes de E/S que permiten cargar los formatos
de archivo de imagen como JPEG, PNG, TIFF, etc.
• Al igual que los paquetes de E/S, también se tienen paquetes de video de E/S. Estos
paquetes permiten cargar varios formatos de archivos de vídeo.
• Por último, se tienen que instalar los archivos de Python 2.7 para que se puedan
compilar los enlaces de OpenCV + Python.
• Hasta este punto se tienen todos los requisitos previos instalados, así que se
descargará la versión 3.0.0 de OpenCV desde el repositorio de OpenCV.
9
NOTA: Para la instalación completa de OpenCV 3.0.0 (que incluye características tales
como SIFT y SURF), se tendrá que descargar OpenCV_contrib) en tal caso las versiones de
OpenCV y OpenCV_contrib tienen que ser las mismas (OpenCV 3.0.0, OpenCV_contrib
3.0.0).
El primer pasó en la instalación Python para compilarlo en OpenCV, es instalar pip, un gestor
de paquetes de Python
• Suponiendo que se está en el entorno virtual cv, se procede a instalar NumPy, una
dependencia importante a la hora de compilar los enlaces Python para OpenCV.
• Compilar OpenCV.
Siempre y cuando el Paso # 4 termine sin error, OpenCV 3.0.0 debería estar instalado.
2.4 Python
La ventaja de los lenguajes compilados es que su ejecución es más rápida. Sin embargo los
lenguajes interpretados son más flexibles y más portables.
Python tiene, no obstante, muchas de las características de los lenguajes compilados, por lo
que se podría decir que es semi interpretado. En Python, como en Java y muchos otros
lenguajes, el código fuente se traduce a un pseudo código máquina intermedio llamado
bytecode la primera vez que se ejecuta, generando archivos .pyc o .pyo (bytecode
optimizado), que son los que se ejecutarán en sucesivas ocasiones.
Tipado dinámico
11
La característica de tipado dinámico se refiere a que no es necesario declarar el tipo de dato
que va a contener una determinada variable, sino que su tipo se determinará en tiempo de
ejecución según el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si
se le asigna un valor de otro tipo.
Fuertemente tipado
No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario
convertir de forma explícita dicha variable al nuevo tipo previamente. Por ejemplo, si
tenemos una variable que contiene un texto (variable de tipo cadena o string) no podremos
tratarla como un número (sumar la cadena “9” y el número 8). En otros lenguajes el tipo de
la variable cambiaría para adaptarse al comportamiento esperado, aunque esto es más
propenso a errores.
Multiplataforma
Orientado a objetos
Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara y sencilla;
el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la
potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea
sencillo, muy rápido y, lo que es más importante, divertido.
12
La sintaxis de Python es tan sencilla y cercana al lenguaje natural que los programas
elaborados en Python parecen pseudocódigo. Por este motivo se trata además de uno de los
mejores lenguajes para comenzar a programar.
Python no es adecuado sin embargo para la programación de bajo nivel o para aplicaciones
en las que el rendimiento sea crítico.
Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA, Industrias Light &
Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por
ciento mayor de los programas disponibles.
Menciona (Alegsa, 2016) Adobe Photoshop es una aplicación para la creación, edición y
retoque de imágenes. Fue desarrollado por la compañía Adobe Systems. Se lanzó
originalmente para computadoras Apple, pero luego saltó a la plataforma Windows.
Los formatos propios de Photoshop son PSD y PDD, que guardan capas, canales, guías y en
cualquier modo de color. Su uso es libre tanto para su uso comercial como no comercial.
Photoshop también soporta otros formatos como PostScript, EPS, DCS, BMP, GIF, JPEG,
PICT, PIFF, PNG, PDF, IFF, PCX, RAW, TGA, Scitex CT, Filmstrip, FlashPix por
mencionar algunos.
El programa comenzó a ser escrito para Macintosh en 1987 por Thomas Knoll, un estudiante
de la Universidad de Michigan, con el objetivo de mostrar imágenes en escala de grises en
pantallas monocromáticas.
Este programa, que fue llamado Display, llamo la atención de su hermano John Knoll,
empleado de Industrial Light & Magic, quien recomendó convertirlo en un editor de
imágenes.
Para su trabajo Thomas se tomó un receso de seis meses de sus estudios en 1988 y, junto con
su hermano, crearon el programa ImagePro.
13
Finalmente ese mismo año Thomas renombró al programa Photoshop, logrando un acuerdo
con los fabricantes de escáneres Barneyscan para que distribuya este programa con sus
dispositivos. Apenas unas 200 copias del programa fueron distribuidas de esta manera.
Mientras tanto, John viajó a Silicon Valley y mostró su programa a ingenieros de Apple
Computer y a Russell Brown, director de arte de Adobe.
John se quedó en California desarrollando plugins, mientras que Thomas permaneció en Ann
Arbor escribiendo el código del programa, Photoshop 1.0 fue lanzado en 1990 para
Macintosh.
Caracteristicas:
4) Escrito en C++
14
Menciona (procesosdesoftware, 2016) este modelo de ciclo de vida fue propuesto por
Winston Royce en el año 1970. Es un ciclo de vida que admite iteraciones, contrariamente a
la creencia de que es un ciclo de vida secuencial como el lineal. Después de cada etapa se
realiza una o varias revisiones para comprobar si se puede pasar a la siguiente. Ver figura 4.
Menciona (construramablanquita, 2016) los productos que se pueden encontrar dentro de una
tlapalería son:
• Mallas y cercas
• Cintas adhesivas
• Lonas
• Anti fungicidas de madera Artículos de sujeción.
Según (Giraldo, Roldan, & Garro, 2009) los modelos de negocio principales dentro de una
tlapalería integran los siguientes procesos:
16
2.7.2 Proceso de venta de un artículo en específico
17
3 Capítulo 3 Imágenes digitales
La herramienta usada en el tratamiento digital de las imágenes son las matemáticas; los
conceptos que se verán son básicos. La computadora y los algoritmos que se implementan
sobre éstas también tienen un papel muy importante en la manipulación de las imágenes.
Una imagen digital es una imagen (función) f(x,y) que ha sido discretizada tanto en
coordenadas espaciales como en luminosidad. Una imagen digital puede ser considerada
como una matriz cuyos índices de renglón y columna identifican un punto (un lugar en el
espacio bidimensional) en la imagen y el correspondiente valor de elemento de matriz
identifica el nivel de gris en aquel punto. Los elementos de estos arreglos digitales son
llamados elementos de imagen.
Los dispositivos sensoriales realizan un número limitado de mediciones sobre las señales de
entrada; estas mediciones deben ser adecuadas para obtener aproximaciones útiles. Decidir
que mediciones realizar y como usarlas de tal manera que aproximen mejor a la señales de
entrada son los problemas que deben ser resueltos.
Para la selección del procesamiento y/o codificación que se hará sobre una señal, es necesaria
una interpretación de las componentes de la señal. El modelo del sistema de visión humano
puede ser utilizado en ciertas etapas de procesamiento para dicha interpretación.
Los dispositivos de despliegue sintetizan una imagen usando un número finito de respuestas
básicas de despliegue, como los puntos de fósforo utilizados en un tubo de rayos catódicos.
Seleccionar el tamaño y la forma de éstas respuestas de despliegue, la configuración (número
y posición relativa) y como pueden ser controlados de la mejor manera óptima para obtener
imágenes con la calidad/fidelidad requerida son aspectos que deben ser cubiertos.
Según (Rodríguez & Sossa, 2012) una imagen: Es la representación óptica de uno o más
objetos iluminados por una o más fuentes de radiación. Así en general, los elementos que
forman parte del proceso de formación de una imagen son los siguientes: objeto u objetos,
fuente o fuentes de iluminación y sistema de formación de la imagen. Es por ello que todo
19
modelo matemático que pretenda reflejar de forma fiel esta realidad física debe tomar en
consideración la fuente de radiación (la cual puede ser luz visible, de rayos X, radiación
ultrasónica, infrarroja u otra), la física de la interacción de la radiación y el objeto y como es
lógico el sistema de adquisición empleado.
Cualquier sistema de análisis de imágenes no es tan robusto como el sistema visual humano.
Estos sistemas pueden fácilmente conducir a resultados errados debido a factores como el
número, tipo y material de los objetos en la escena, su interrelación, las sombras, los tipos de
fuentes iluminación y, por supuesto, al proceso no lineal de formación de la imagen.
La luz reflejada f(u, v) es la imagen óptica que sirve de entrada al sistema de formación de la
imagen digital. Tal sistema está constituido, en general, por lentes ópticos, un captor óptico
y un digitalizador o numerizador de imagen. El sistema óptico H se modela como un sistema
de desplazamiento lineal e invariante el cual tiene una respuesta tipo impulso: h(x, y). Este
sistema óptico (H), generalmente, es un sistema pasa bajo que tiende a suprimir las altas
frecuencias contenidas en la imagen de entrada f(u, v). Por tal motivo la imagen de salida s(x,
y) es, en general, una versión borrosa o no fielmente enfocada de la imagen original f(u,v).
Como estas dos señales, f(u, v) y s(u, v), representan valores de intensidades ópticas ellas
deben tomar valores no negativos, es decir:
𝑓(𝑢, 𝑣) += 0 ( 1)
𝑠(𝑥, 𝑦) += 0 ( 2)
f(u, v)
Sistema
f(i, j)
Óptico Captor Digitalizador
20
Existen otras muchas modalidades un poco más efectivas que las cámaras a tubo para la
percepción y generación de la imagen, las cuales pueden ser desde un simple captor hasta
captores en filas o arreglos de captores, entre otros. En la actualidad las cámaras de estado
sólido (CCD) y los exploradores de imágenes juegan un papel muy importante en los sistemas
de visión por computadora. Sin embargo, el empleo de uno u otro dispositivo de captación
están estrechamente relacionados con la aplicación. Por ejemplo, si la aplicación consiste en
la lectura de películas fotográficas el captor más apropiado será un densitómetro. Si se quiere
realizar, a través de imágenes, el estudio ambiental de una zona determinada un sensor
adecuado podría ser una cámara en cualquiera de las siguientes versiones; fotográfica, de
televisión o de digital. Aquí en esta aplicación el explorador o escáner queda excluido. Si en
otra situación lo que se desea es realizar la restauración de documentos antiguos un
explorador con una alta resolución seria el captor más apropiado.
No obstante, no existen fronteras absolutas para el uso de uno u otro dispositivo ya que
muchas veces, en distintos casos prácticos, algunos de ellos han sido utilizados de forma
ingeniosa fuera de sus fronteras. Otro aspecto al cual no se ha hecho mención y que juega un
rol de peso importante en la formación de la imagen digital es la cuantificación y el muestreo.
De acuerdo con (Jimenez, 2016) a la hora de representar el contenido de una imagen existen
básicamente dos métodos que a su vez sirven para dividir las imágenes en dos grandes grupos:
mapa de bits y gráficos vectoriales.
21
El uso de gráficos vectoriales se encuadra normalmente dentro de trabajos que requieren un
alto nivel de detalle a cualquier tamaño, como diseños complejos o mapas
Un pixel es la unidad mínima a partir del cual se forma cualquier imagen en mapa de bits.
Para la representación de un pixel se puede utilizar un bit, dos bits, cuatro bits de información,
y proviene de la abreviatura de picture element (elemento de imagen). Sus propiedades son:
• Tamaño relativo, siempre en relación con una unidad de longitud fija, cuyas unidades más
habituales son pulgadas y centímetros. Lo más usual es trabajar en píxeles por pulgada (ppi).
A mayor número de ppi, menor será el tamaño del píxel. Esto está directamente relacionado
con el concepto de resolución, cualidad de la que dependen todas las imágenes de mapas de
bits. A menor número de ppi, menor es la resolución, lo que produce una menor definición
de la imagen, con la correspondiente pérdida de calidad y detalle.
Es muy importante a la hora de crear o tratar imágenes, saber cuál va a ser su utilización para
tener la resolución óptima. Toda imagen de mapas de bits tiene un número invariable de
píxeles a determinada resolución según su tamaño, y éste variará si varía la resolución.
De acuerdo con (redgrafica, 2016) un gráfico vectorial es toda imagen digital formada por
diferentes objetos geométricos independientes. Cada uno de estos elementos definido por
parámetros matemáticos como la forma, posición, color, el tipo y grosor de contorno, etc.
Los gráficos vectoriales son en su formato completamente distintos a los gráficos de mapas
de bits o también llamados matriciales, los cuales están constituidos por pixeles.
22
Los vectores tienen la ventaja sobre los pixeles de ser escalables, es decir, se puede aumentar
su tamaño conservando su calidad original. Lo que no ocurre con los gráficos a base de
pixeles que presentan degradación de la calidad al aumentar el tamaño.
Otra diferencia importante entre estos dos tipos de imágenes digitales es el peso, los
vectoriales por ser solamente parámetros matemáticos, suelen ser mucho menos pesados que
una imagen rasterizada o de pixeles. De la misma manera los gráficos vectoriales pueden ser
transformados (estirar, rotar, mover, distorsionar) de una manera más sencilla y con menos
requerimientos de memoria en el equipo.
Sin embargo todos los gráficos vectoriales o vectorizados tienen que ser transformados a
pixeles cuando se presentan en una pantalla o cuando se requiere su impresión.
Documentos digitales
Permiten la descripción grafica de un documento digital, sin la pérdida de calidad de la
imagen por aplicaciones o transformaciones de forma.
Videojuegos
Utilizados generalmente en la producción de ambientes virtuales de tres dimensiones.
Tipografía
Las fuentes son archivos tipográficos que utilizan en la mayoría de las ocasiones imágenes
vectoriales. Algunos de los formatos más conocidos son TrueType, OpenType y PostScript.
CDR Corel Draw: Utilizado generalmente para diseño y autoedición para impresos.
Es importante resaltar que las fotografías no pueden ser vectorizadas sin un pérdida
considerable de calidad en la imagen; por lo que en este caso sigue siendo recomendable el
uso formatos de pixeles (jpeg, png, tiff, etc.).
En una cámara analógica la luz entra a través de la lente e incide sobre la película que a su
vez tiene un tratamiento químico fotosensible que permite registra la imagen. En el caso de
los sistemas digitales de fotografía la primera parte no varía, es decir, la luz llega a través de
la lente de la cámara, pero en esta ocasión, es un pequeño dispositivo electrónico denominado
CCD (coupling Charge Device) el que se encarga de convertir la luz en un una señal eléctrica.
Este sensor dispone de miles de pequeñas células fotosensibles de distintas formas que
recogen la luz recibida y la envía a un circuito electrónico que interpreta esta formación,
mostrando en cada caso la imagen que deseamos capturar con la cámara.
24
o no en una imagen. Para esto se puede utilizar, por ejemplo, una descripción del objeto a
detectar o una imagen recortada de dicho objeto.
3) Interpretación de una imagen: Se trata de la etapa de más alto nivel en el análisis de una
imagen. Se busca no solo determinar la identidad de los objetos en una imagen sino además
poder contestar, en el sentido más amplio, a la pregunta: ¿de qué habla la imagen? A través
de procedimientos como este se intentaría determinar las relaciones entre los objetos en la
imagen, el estado de ánimo, el género o edad de una persona en el caso de análisis de una
imagen del rostro de una persona, por citar algunos.
3.5 Textura
3) El contraste entre un píxel y sus vecinos. Sin embargo, es independiente del tono o color
de la imagen.
Para llevar a cabo el procesamiento digital de imágenes es de gran utilidad, para ciertas
aplicaciones, obtener información sobre la textura. Este problema se puede abordar desde
diferentes puntos de vista, dependiendo de la técnica específica utilizada para extraer de
forma cuantitativa la información contenida en la textura de la imagen Para caracterizar las
texturas existen básicamente tres formas de procesar la imagen y extraer su información:
26
3) Descriptores probabilísticos: Estos métodos se basan en construir de un modelo de la
imagen, cuyos parámetros estimados sirven para describir y sintetizar una textura, ya que
reúnen las características esenciales que caracterizan a la textura. Se consideran como tales
las cadenas de Markov y los modelos fractales.
3.6 Clasificadores
De acuerdo con (Sanz, 2008) el objetivo del clasificador es analizar los datos obtenidos en la
fase anterior para aprender a distinguir entre diferentes objetos. Este conocimiento puede ser
expresado como reglas, patrones, asociaciones, relaciones o de forma general como modelo.
En general el error de combinar varios clasificadores se explica por lo que se conoce como
bias-variance decomposition. El sesgo (bias) de cada clasificador viene dado por su error
intrínseco y mide lo bien que un clasificador explica el problema. La varianza está dada por
los datos que se usan para construir el modelo. El error esperado total de clasificación está
dado por la suma del sesgo y la varianza. Al combinar múltiples clasificadores se reduce el
error esperado ya que se reduce la varianza.
Una muestra de ejemplos bootstrap se genera al muestrear uniformemente ‘m’ instancias del
conjunto de entrenamiento con reemplazo. Se generan T muestras, B1, … , BT y se construye
un clasificador Ci para cada muestra. Con estos, se construye un clasificador final C* de
todos los C1 a Ct cuya salida es la salida mayoritaria de los clasificadores.
27
aproximadamente un 63% de aparecer en los ejemplos de entrenamiento. En general, se
puede mejorar el resultado si se quita la opción de podado en los árboles de decisión, lo que
los hace más inestables.
Los algoritmos de segmentación se basan en una de estas dos propiedades básicas de los
valores del nivel de gris: discontinuidad o similitud entre los niveles de gris de píxeles
vecinos.
b) Detección de líneas
28
c) Detección de bordes
1) Crecimiento de región
2) Umbralización.
De acuerdo con (Krogh, 2010) es una clase de edición de imagen no destructiva en la que el
software de edición no altera los archivos originales, registrando en su lugar los cambios
realizados en la imagen, como conjunto de instrucciones o parámetros.
La cámara captura lo que se conoce como datos con referencia a la escena, o la información
de color y brillo creada a partir de la respuesta del sensor de la cámara la luz que está
rebotando en el mundo real. Los datos con referencia a la escena son los que crean la imagen
sin procesar (una forma de describir la luz que choca contra el sensor de la cámara, pero que
no se parecen para nada a una fotografía final).
Para que se parezca a una fotografía, el software tiene que transformar los datos referidos a
la escena en datos referidos a la impresión, que es la información del color que parece una
fotografía cuando se envía a un monitor o a una impresora.
Un programa puede leer e interpretar una imagen, pero no puede guardar los nuevos datos de
pixeles de nuevo en el archivo sin procesar.
Menciona (Mcmahon & Nichols, 2007) las cámaras digitales se presentan en todos los
formatos y resoluciones aunque, para ser justo, la mayoría ofrece características muy
similares. Las grandes diferencias se encuentran en las posibilidades de resolución de la
cámara, el alcance de sus lentes de ampliación y la capacidad de la tarjeta de memoria.
29
Si se desea conseguir la más alta calidad de su fotografía con vista a la impresión comercial,
se tiene que buscar una cámara con la resolución más alta que su presupuesto pueda
permitirse.
Otros factores como la calidad de lentes, dimensiones del sensor de imagen (CCD),
posibilidades de software de procesamiento (color y contraste) y características físicas de
manejo también afectan al resultado.
Los ordenadores son más fáciles de entender. Puesto que las fotografías contienen numerosos
datos por lo que necesitan mucha información, contienen numerosos datos por lo que
necesitan mucha potencia.
• Segmentación: Es el proceso que divide a una imagen en objetos que sean de nuestro
interés.
• Reconocimiento: Es el proceso que identifica a los objetos de una escena. Por ejemplo
las diferentes tipos de piezas en un tablero de ajedrez.
30
Figura 7: Etapas de un sistema de visión por computadora (García F. , 2009)
Como se muestra en la figura 7 las etapas de un sistema de visión por computadora supone
distintos tipos de procesamiento en función del nivel en el que se mueva.
• Visión de bajo nivel: comprende la captación y el pre-procesamiento. Ejecuta
algoritmos típicamente de filtrado, restauración de la imagen, realce, extracción de
contornos, etc.
• Visión de nivel intermedio: comprende la segmentación, descripción y
reconocimiento, con algoritmos típicamente de extracción de características,
reconocimiento de forma y etiquetado de éstas.
• Visión de alto nivel: comprende la fase de interpretación, normalmente estos
algoritmos se refieren a la interpretación de los datos generalmente mediante
procedimientos típicos de la Inteligencia Artificial para acceso a bases de datos,
búsquedas, razonamientos aproximados, etc.
31
Figura 8: Pasos en un sistema de análisis de imágenes incorporando una base de
La figura 8 muestra los pasos de un sistema de análisis de imágenes incorporando una base
de conocimientos sobre el problema a resolver.
Según (Gonzalez & Woods, Procesamiento Digital de Imágenes, 2002) las etapas son:
La cual se puede llevar a cabo a través de variados dispositivos, a saber: una cámara
(analógica o digital), un escáner o cualquier otro dispositivo de captación de imágenes.
Los días algo nublados son perfectos para realizar fotografías al aire libre ya que no hacen
tan pronunciadas las sombras y ofrecen unos colores bastante neutros.
En situaciones de mucha luz, las sombras y los reflejos pueden estropear cualquier fotografía,
por lo que debemos intentar buscar distintos ángulos hasta encontrar el más adecuado.
32
Menciona (Delgado, 2009) por lo general, las cámaras digitales tienen un mejor
comportamiento que las analógicas en situaciones de poca luz. En cualquier caso, es
conveniente usar un trípode o apoyar la cámara sobre un lugar firme para evitar que una
velocidad lenta de obturación, necesaria para capturar todos los detalles en este tipo de
situaciones, provoque una foto movida o poco nítida.
Hay dos tipos principales de cámaras que se utilizan en sistemas de visión por computadoras:
Cámaras Matriciales y Cámaras Lineales.
Cámaras Matriciales:
Término que se refiere a que el sensor de la cámara cubre un área o que está formado por una
matriz de píxeles.
Una cámara matricial produce una imagen de un área, normalmente con una relación de
aspecto de 4 a 3. Esta relación viene de los tiempos de las cámaras Vidicon y de los formatos
de cine y televisión. Actualmente existen muchas cámaras que ya no mantienen esta relación
y que no siguen los formatos de la televisión.
La tecnología de cámaras lineales hace mucho tiempo que fue desarrollada para aplicaciones
de inspección de materiales fabricados en continuo, como papel, tela, planchas metálicas, etc.
Sin embargo en la actualidad se está imponiendo en muchos otros procesos productivos
y de inspección, que requieren alta resolución y / o alta velocidad a un precio
competitivo.
Las cámaras lineales utilizan sensores lineales que acostumbran a tener entre los 512 y 8192
elementos (píxeles), con una longitud lo más corta posible, y con una gran calidad con el fin
de obtener la mejor sensibilidad y prestaciones.
33
Con la tecnología de cámaras lineales es posible capturar objetos de grandes dimensiones en
una sola pasada, mientras que con cámaras matriciales este mismo objeto debería ser dividido
en una secuencia de imágenes parciales
De acuerdo con (Valera, 2015) muchos son los aspectos que pueden influir en la elección de
una cámara a otra. Sin embargo, algunas consideraciones han de tenerse en cuenta
para no arrepentirse de la compra o para no gastarse más dinero del que realmente hace
falta. Normalmente, la elección de la cámara va íntimamente ligada a la de la óptica.
Las características técnicas son las más importantes y las que siempre se tendrá presente a la
hora de adquirir una cámara. Por ejemplo:
Según (Rodríguez & Sossa, 2012) la cual no es siempre necesario llevar a cabo. Sin embargo,
en muchas aplicaciones esta etapa tiene un peso importante y básicamente consiste en la
atenuación del ruido presente en la imagen, el mejoramiento del contraste, así como filtrados
para la eliminación de artefactos, entre otros.
34
Menciona (Escalante, 2006) los procesos de realce de imágenes consisten de una serie de
técnicas cuyo objetivo es mejorar la apariencia visual de una imagen, ya sea en contraste,
ruido, escala de grises, distorsiones, luminosidad, falta de nitidez, etc., o bien convertir o
mapear la imagen a una mejor forma para su análisis. El principal objetivo del realce de la
imagen es procesar una imagen de tal manera que el resultado obtenido sea el apropiado para
una aplicación específica. Los métodos de realce de imágenes se pueden dividir en dos
categorías: los métodos de realce en el dominio espacial y los métodos de realce en el dominio
de la frecuencia. Los métodos de la primera categoría consisten en la manipulación directa
de los pixeles de la imagen mientras que los métodos de la segunda categoría corresponden
a técnicas basadas en la representación de los pixeles, a través de una transformación hacía
el dominio frecuencial y usa como operador de mapeo o transformación a la DFT.
Dentro de los métodos de realce espacial se pueden encontrar dos técnicas: El realce
radiométrico donde las operaciones son efectuadas directamente sobre un pixel sin importar
o tomar en cuenta a los pixeles vecinos. Sirve para mejorar condiciones de bajo contraste,
baja luminosidad o demasiada obscuridad. Ejemplo: ecualización de histograma.
El realce con operaciones entre vecinos que, a diferencia del realce radiométrico, las
operaciones son efectuadas sobre un pixel pero tomando en cuenta a los pixeles que lo rodean.
Sirve para eliminar ruido o para el mejoramiento de la nitidez. Ejemplo: kernel
correspondiente a un filtro paso-bajas usando la convolución para realizar un filtrado
espacial.
35
Figura 9: Histograma de una imagen. (Escalante, 2006)
La figura 9 muestra gráficamente la diferencia entre una imagen con poco contraste y una
imagen obscura.
En la figura 10 se muestra gráficamente la diferencia entre una imagen con mucho brillo y
el histograma ideal para una imagen.
El histograma de una imagen digital con niveles de gris en el rango [0,L − 1] es una función
discreta P(r) = nr donde r representa un nivel de gris y nr representa el número de pixeles
que tienen ese valor de gris como se muestra en la figura 11:
36
Figura 11: Histograma de una imagen digital (Escalante, 2006)
Es muy frecuente normalizar un histograma dividiendo cada uno de sus valores por el número
total de pixeles en la imagen, denotado por n. De tal modo que el histograma nos quedaría
P(rk) = nk/n, para k = 0, 1,..., L−1. De esta manera, P(rk) da una estimación de la probabilidad
de la ocurrencia del nivel de gris rk. Hay que notar que la suma de todos los componentes de
un histograma normalizado es igual a 1.
3.8.2.1 Filtros
Según (Gonzalez & Woods, Procesamiento Digital de Imagenes, 2002) los filtros espaciales
tienen como objetivo modificar la contribución de determinados rangos de frecuencias de
una imagen. El término espacial se refiere al hecho de que el filtro se aplica directamente a
la imagen y no a una transformada de la misma, es decir, el nivel de gris de un pixel se obtiene
directamente en función del valor de sus vecinos.
Los filtros espaciales pueden clasificarse basándose en su linealidad: filtros lineales y filtros
no lineales. A su vez los filtros lineales pueden clasificarse según las frecuencias que dejen
pasar: los filtros paso bajo atenúan o eliminan las componentes de alta frecuencia a la vez
que dejan inalteradas las bajas frecuencias; los filtros paso alto atenúan o eliminan las
componentes de baja frecuencia con lo que agudizan las componentes de alta frecuencia; los
filtros paso banda eliminan regiones elegidas de frecuencias intermedias.
La convolución es una operación por la cual se lleva a cabo una acción de filtrado. Como
veremos más adelante y como se ha visto en las propiedades de la Transformada de Fourier,
existe una relación entre el filtrado espacial y el filtrado en el dominio de la frecuencia (con
una restricción a tomar en cuenta). En general, el filtrado de señales posee tres categorías,
según el resultado que se busque:
37
2) Filtros Paso-Altas: Estos filtros son utilizados para detectar cambios de luminosidad.
Son utilizados en la detección de patrones como bordes o para resaltar detalles finos de una
imagen. Son conocidos como Sharpening Spatial Filters.
3) Filtros Paso-Banda: Son utilizados para detectar patrones de ruido. Ya que un filtro
pasobanda generalmente elimina demasiado contenido de una imagen casi no son usados. Sin
embargo, los filtros paso-banda son útiles para aislar los efectos de ciertas bandas de
frecuencias seleccionadas sobre una imagen. De esta manera, estos filtros ayudan a
simplificar el análisis de ruido.
Suavizado:
De acuerdo con (Escalante, 2006) los filtros paso-bajas son utilizados para difuminar y
reducir ruido en las imágenes, a este proceso se le conoce en inglés como smoothing. El
difuminado (blurring) es usado en etapas de pre procesamiento desde la eliminación de
pequeños detalles hasta la extracción de objetos y rellenado de pequeños huecos en líneas y
curvas. La reducción de ruido puede ser completada por el difuminado usando filtros lineales
o bien con un filtrado no lineal. Ver figura 12.
38
Los filtros basados en derivadas de Gaussianas fueron en un principio obtenidos de manera
heurística. Sin embargo estos filtros tienen un fundamento matemático y un comportamiento
muy similar al sistema de visión humano (HVS); por ello son muy importantes ya que se
especializan en la detección de cambios bruscos como los bordes.
Una de las más simples formas de interpolación es elegir la amplitud de un pixel de salida
como la amplitud de su vecino más cercano. Está interpolación es llamada interpolación del
vecino más cercano o bien interpolación de orden cero. El factor de interpolación T indicará
cuantos pixeles se desean interpolar. Por ejemplo, en una dimensión podríamos ver lo
39
siguiente, se tiene una señal compuesta por cuatro muestras y se desea interpolar con un filtro
h(x) de orden cero con un factor de interpolación T = 2 como se muestra en la figura 14:
Transformaciones de intensidad
De acuerdo con (Sucar & Gomez, 2016) una transformación de intensidad consiste en mapear
los valores de intensidad de cada pixel a otros valores de acuerdo a cierta función de
transformación. Las funciones de transformación pueden ser de dos tipos:
1. lineales.
2. no-lineales.
En las transformaciones lineales, se tiene una relación o función lineal de los valores de
intensidad de los pixeles de la imagen de salida respecto a la imagen de entrada. Los tipos de
transformaciones lineales más comúnmente utilizados son:
• Aumento de contraste
Las funciones de transformación para cada uno de estos tipos se especifica gráficamente en
la figura 15 Por ejemplo, para el negativo, el pixel de entrada (eje X) de intensidad 0 se
transforma en un pixel de salida (eje Y) de intensidad máxima, y el de entrada de intensidad
máxima se transforma en intensidad 0.
40
Figura 15: Transformaciones linéales (Sucar & Gomez, 2016)
I(x, y) − min
(𝑥, 𝑦) = ( ∗ 255) ( 3) max − min
41
Donde I(x, y) es la imagen a procesar y C(x, y) es la imagen con aumento lineal del contraste.
Se puede verificar fácilmente que para I(x, y) en min, C(x, y) resulta cero (el numerador es
cero); para I(x, y) en máx, C(x, y) resulta en 255 (cociente 1).
Selección de Propiedades
42
El problema está en que la selección individual puede descartar propiedades poco
informativas por separado pero que usadas en combinación son altamente discriminantes
como se muestra en la figura 17:
Además, la selección individual produce a veces resultados poco intuitivos: p. ej., dadas tres
propiedades p1, p2 y p3, ordenadas de mayor a menor calidad individual, existen situaciones
(debido a las dependencias entre ellas) en que el conjunto {p1, p2} es peor que el conjunto
{p2, p3}. Las medidas de calidad individual pueden ser útiles para fabricar árboles de
clasificación.
Tipos de textura:
1.1.- Difusa: Estos son los datos de pixeles actuales colocados sobre la malla de la
superficie 3D. La textura puede ser una imagen o un color sólido.
1.2.- Auto iluminación: Es un color que no necesita las luces de la escena para verse.
Le da al objeto el efecto de estar iluminado desde dentro, o resplandecer. Observe
que si los lados del objeto son 100 por 100 opacos, esta textura o tendrá efecto.
1.4.- Resplandor: Este mapa define la cantidad de luz que refleja la superficie de un
objeto. Negro es la sombra más reflectante, mientras que blanco es el menos.
43
1.5.- Brillo: Es diferente de Resplandor en que define las propiedades especulares
de la superficie del objeto, o la dispersión de la luz reflejada. Con valores altos
produce una reflexión pequeña de baja dispersión, mientras que valores bajos crean
una reflexión dispersa más difusa.
1.6.- Opacidad: Controla la opacidad local de un objeto. Las regiones blancas son
100 por 100 opacas, mientras que las regiones negras son 100 por 100 transparentes.
1.8.- Entorno: Este mapa contiene la imagen del "mundo" alrededor del objeto. Es
lo que reflejara un objeto si no hay otros objetos en la escena. El mapa de entorno
se hace como un panorama esférico.
De acuerdo con (Rodríguez & Sossa, 2012) la segmentación es una de las etapas cruciales de
cualquier sistema de análisis de imágenes, tanto por las dificultades que conlleva como por
la importancia de sus resultados. Básicamente, la segmentación puede considerarse como la
partición de una imagen, digamos ƒ(x, y) en un conjunto de regiones R no solapadas,
homogéneas respecto a algún criterio cuya unión cubra la imagen completa. En otras
palabras, el objetivo fundamental de la segmentación, en el proceso del análisis de imágenes,
es el de separar los objetos de interés del resto no relevante el cual es considerado como
fondo.
3
1 2
Segmentación
4
Figura 18: Esquema que representa el proceso de segmentación. (Rodríguez & Sossa, 2012)
Métodos basados en el umbralado a partir del histograma de la imagen: En este caso, a partir
del histograma de una imagen es posible obtener un umbral de comparación para el
agrupamiento de los pixeles.
Métodos basados en la propiedad de similitud de los valores de los niveles de grises: En este
caso se usan criterios de homogeneidad para la agrupación de los pixeles.
45
3.9.1 Segmentación por el clasificador de Bayes
Menciona (Larrañaga, Inza, & Moujahid, 2016) en muchas ocasiones cuando se utiliza un
clasificador automático basado, por ejemplo, en la distancia Euclideana se utilizan prototipos
fijos. Estos prototipos representan cada una de las clases u objetos a clasificar. Al hacer esto
se está suponiendo una hipótesis determinística en el comportamiento de los elementos de las
clases. Sin embargo, en aquellas situaciones en las cuales los vectores de algunas de las clases
presentan una dispersión significativa con respecto a su media es conveniente utilizar un
enfoque estadístico en vez de una hipótesis determinística. Así, por ejemplo, si se supone que
se tienen dos tipos de frutas, por ejemplo naranjas y plátanos, las cuales pasan delante de un
sistema de captación de imágenes con el objetivo de ser reconocidas para posteriormente
desviarlas a diferentes lugares según las clases a la que pertenezca cada fruta.
Menciona (Diaz, Montoya, & Boulanger, 2007) sea un elemento con un valor v y para cada
clase i sea q(i/v) la probabilidad de que el elemento sea de la clase i, entonces la mejor clase
para asignar dicho elementos es la clase para la cual q(i/v) es máxima. Esto viene dado por la
expresión siguiente:
(4)
𝑞(𝑣/𝑖)𝑞(𝑖)
46
clase i, o la probabilidad que un elemento de la clase i tenga valor v. q(i/v) es la probabilidad
q(v) es la suma de las probabilidades q(v/i) sobre toda las clases i. Esto se puede considerar
sencillamente como un factor de normalización o un factor de escala.
( 6)
( 7)
Los pasos genéricos del algoritmo para segmentar una imagen según el clasificador de Bayes
son los siguientes:
1.- Seleccionar las áreas de entrenamiento para cada una de las clases candidatas. Estas áreas
se suponen conocidas y, en general, se debe escoger una gran cantidad de datos por clase con
el fin de que estos representen lo mejor posible dicha clase.
2.- Calcular el histograma Hi(v) de los datos de entrenamiento para cada una de las áreas
seleccionadas y normalizarlos. Esta estimación es usada como una función de densidad de
probabilidad condicional: q(v/i). Existe una q(v/i) para cada una de las clases i seleccionadas.
3.- Estimar la probabilidad a priori q(i) la cual será usada como un factor de escala
4.- Clasificar cada uno de los pixeles de la imagen calculando, para la clase i, q(i/v) mediante
la expresión anterior. En la práctica se omite el denominador en le expresión anterior.
5.- Clasificar el valor del pixel en la clase i si el valor de q(i/v) es máximo. Los pasos 1, 2 y
3 se realizan una sola vez, el paso 4 se aplica para cada uno de los pixeles de la imagen para
producir la imagen segmentada.
47
Los métodos de segmentación supervisados han sido muy utilizados en la teledetección de
los recursos naturales donde muchas veces se tiene, a partir de las pruebas de campo
realizadas, algún conocimiento del terreno y de los objetos.
Según (Martin, 2013) un borde puede definirse como un cambio significativo en el valor de
la intensidad de los pixeles en una región de la imagen. Durante el proceso de detección de
bordes se puede obtener la siguiente información:
• Ancho de los elementos del borde (puesto que los bordes no son pasos ideales, estos
en general varían considerablemente en su ancho).
• Colocación de la representación del borde (puesto que pueden tener más de un pixel
de ancho, es importante determinar dónde poner el punto del borde).
• Polaridad del elemento del borde (cuál de las regiones es la más brillante).
48
• Valor de gris de las regiones del entorno.
• Manchas o emborronamiento (algunas partes del contorno son más espesas o densas
que otras).
Es importante tener en cuenta que un buen detector de bordes debe contar con las propiedades
siguientes:
del umbral.
La importancia que tiene la determinación de los contornos de una figura dentro de una
imagen radica en que muchos algoritmos requieren que se demarquen los objetos que están
contenidos en una imagen. Algunas de las aplicaciones más importantes que requieren de
ésta operación como paso previo son las siguientes:
• Conteo de objetos
49
• Localización de objetos
Es posible formular otros modelos para el cálculo de bordes a partir del concepto de derivada.
Menciona (ehu, 2016) el operador de Canny basa su operación en los siguientes criterios:
1. Buena detección: El detector debe distinguir con suficiente Margen entre bordes
verdaderos y bordes falsos. Esto implica, por un lado, marcar con alta probabilidad
puntos tipo bordes reales. Por otro lado, el detector debe marcar, con baja
probabilidad, puntos que no son bordes.
3. Respuesta única: En lo posible, el detector debe responder con un solo borde. Esto,
de alguna manera, queda implícito en el primer criterio, ya que cuando existen dos
respuestas para un mismo borde una de ellas se debe considerar como falsa. Sin
embargo, la forma matemática del primer criterio no toma en cuenta el requisito de
múltiples respuestas y por tanto esto se debe especificar de manera explícita.
Menciona (Ramiro, 2016) la segmentación que utiliza técnicas tradicionales, tales como: el
umbralado, por cálculo de gradiente, por crecimiento de regiones y otras operaciones clásicas,
requieren de una considerable cantidad de iteraciones para la obtención de resultados
50
satisfactorios. La automatización de estos modelos libre de aproximaciones es difícil debido
a muchos factores, entre otros a la complejidad de los objetos en escena, los tipos de
iluminación, las sombras producidas por el acomodo de los objetos y la forma en que estos
son iluminados.
De acuerdo con (Rodríguez & Sossa, 2012) estos modelos son capaces de acomodarse a la
frecuente variabilidad que tienen los objetos y además soportan altamente el mecanismo de
interacción intuitiva, el cual permite que el especialista pueda aportar su experiencia cuando
el modelo de interpretación de imagen así lo requiera. Los modelos existentes pueden
agruparse en general en dos grandes grupos: modelos deformables de formas activas y
modelos deformables de contornos activos. Por su uso más variado y práctico.
Los modelos de contorno activo son curvas definidas dentro del dominio de la imagen, las
cuales pueden moverse bajo la influencia de fuerzas internas que se producen dentro de la
misma curva y de fuerzas externas computadas sobre los datos de la imagen. Las fuerzas
externas e internas son definidas de forma tal que los contornos activos vayan acomodándose
en forma iterativa a la frontera de un objeto u otras características deseadas dentro de la
imagen. Los contornos activos son ampliamente usados en muchas aplicaciones, incluyendo
la detección de bordes, el modelado de formas, el seguimiento de movimiento, entre otras.
Existen básicamente dos tipos de modelos deformables de contornos activos, a saber: los
contornos activos paramétricos y los contornos activos geométricos.
51
esta diferencia fundamental los principios que subyacen en ambos modelos son muy
similares.
Las tareas de análisis de imágenes de alto nivel son verdaderamente difíciles y pueden llevar
a resultados no reales o incorrectos. Esto se debe básicamente a que las técnicas empleadas
utilizan modelos paramétricos inadecuados que frecuentemente presuponen que el usuario
“adivina” correctamente los valores de los parámetros de afinación. Para mejorar el
rendimiento de estas técnicas la ejecución de las tareas deben ser manejables; es decir,
apoyadas por información independiente de alto nivel.
Según (Sucar & Gomez, 2016) su objetivo principal es llevar los datos de cada uno de los
objetos o regiones segmentados a formas en que la computadora pueda trabajar con ellos de
manera más apropiada; una lista ligada circular que presente la información del contorno de
la región de un objeto es más fácil de trabajar que un conjunto de pares de coordenadas de
los pixeles del contorno de la misma región.
Una representación es “un sistema formal para hacer explicitas ciertas características o tipos
de información, junto con una especificación de como el sistema hace esto” (definición de
David Marr). Ver Figura 19. Hay dos aspectos importantes de una representación para visión:
52
Figura 19: Reconocimiento de caracteres en base a su codificación radial. (Sucar & Gomez, 2016)
Las representaciones apropiadas para reconocimiento en visión deben de buscar tener las
siguientes propiedades:
• Genéricas
53
Figura 20: Estructura de un sistema de visión basado en modelos. (Sucar & Gomez, 2016)
Las técnicas para correspondencia dependen del tipo de representación. Para modelos que
utilizan parámetros globales se utilizan técnicas de reconocimiento estadístico de patrones.
Con modelos en base graficas relacionales, se usan algoritmos de grafos (isomorfismo). En
modelos paramétricos se aplican técnicas de optimización paramétrica.
Menciona (Gambini, 2006) los modelos en dos dimensiones (2-D) están orientados al
modelado y reconocimiento de objetos en función de su representación a nivel imagen, es
decir, en dos dimensiones. Para representar un objeto en 2-D, existen básicamente dos
alternativas:
3.11.2 Polilíneas
𝑋1𝑋2 … 𝑋𝑛, 𝑋1 ( 8)
54
Donde X1 corresponde a las coordenadas x, y de cada punto.
Menciona (Quiles & Garrido, 1996) el objetivo principal consiste en capturar las diferencias
esenciales entre objetos pertenecientes clases diferentes; por supuesto se buscaría que estos
mismos rasgos se mantuvieran lo más invariantes ante cambios como escalamientos,
traslaciones y rotaciones. Es el proceso mediante el cual se obtienen características
convenientes para diferenciar un tipo de objeto de otro, por ejemplo tamaño y forma.
Según (Florencia, 2016) existen varias representaciones o modelos de color. Estos modelos
se dividen en dos clases de modelos. Unos son modelos sensoriales y otros se denominan
modelos preceptúales.
La idea principal de obtener características por color es sacar datos relevantes en formato
RGB de objetos, para crear características que puedan ser utilizadas por otros procesos para
llegar al resultado. Ver figura 21.
Figura 21: Obtención de características del objeto por color. (Florencia, 2016)
Por la naturaleza de la captura de la imagen, se trabaja en formato RGB, por lo cual se trabaja
con un formato sensorial en lugar de un formato de percepción como el HSI.
55
Además se pueden aplicar las mismas técnicas que se utilizan en imágenes monocromáticas.
Para esto se toma cada componente (R,G,B) como una imagen monocromática y se aplica
algún operador o método a cada una independientemente.
Menciona (Florencia, 2016) el modelo RGB es el modelo básico que utiliza los componentes
primarios rojo, verde y azul, normalizadas. En este modelo se basan las cámaras y receptores
de televisión. Sin embargo se tienen problemas al aplicarlo al procesamiento de imágenes (
ecualización).
Según (Martinez, 2016) el modelo HSI (Hue, Saturation, Intensity) se puede ver como una
transformación del espacio RGB al espacio perceptual. En principio los modelos perceptuales
deben ser mejores ya que nosotros detectamos los cambios en estos componentes. Sin
embargo, es compleja la implementación de la detección de orillas en croma por no ser lineal.
Otra alternativa es definir técnicas especiales para detección de orillas en imágenes a color.
El procesamiento de imágenes a color es relativamente reciente, por los altos requerimientos
de memoria y cómputo necesarios.
56
requerimientos del propio problema los que nos obligarán a desarrollar y personalizar nuestro
método.
Una imagen contiene una gran cantidad de datos la mayoría de los cuales proporciona muy
poca información para interpretar la escena. Un sistema que incorpore visión artificial debe,
en un primer paso, extraer de la forma más eficaz y robusta posible determinadas
características que nos proporcionen la máxima información posible. Estas características
deben cumplir, entre otras, las siguientes condiciones:
La extracción de características más importantes en el análisis de imagen son: los puntos, las
líneas y los círculos como geometrías básicas en la extracción de características.
Según (Martinez, 2016) desde el punto de vista computacional se han propuesto dos enfoques
para la detección de este tipo de características geométricas:
• Métodos que obtienen los puntos como intersección de aristas o como cambio de
pendiente sustancial entre dos aristas y por tanto vienen precedidos de una extracción de
bordes.
57
3.12.5 Puntos característicos a partir de aristas: puntos de fuga.
De acuerdo con (González, 2016) los puntos de fuga constituyen el soporte estructural y
geométrico de una imagen en perspectiva u oblicua. En este sentido representan puntos de
interés que vendrán determinados por la intersección de aristas o líneas de fuga. A
continuación se comentan brevemente los dos métodos más sencillos para su cálculo:
Método de la intersección de rectas. Se trata del método más sencillo de todos, ya que su
cálculo computacional se limita a determinar la intersección de dos rectas perspectivas.
A partir de la figura 22, en el que una recta queda identificada geométricamente mediante su
distancia al origen y el ángulo que dicha recta forma con los ejes cartesianos se obtiene la
expresión de la misma y sus versiones lineales:
La resolución matemática del problema pasa por el planteamiento y resolución del siguiente
sistema de ecuaciones:
( 9)
El área de cada triángulo (S) se calcula a través del determinante formado por las coordenadas
de los dos puntos extremos de la línea de fuga (P1, P2) y las coordenadas del punto de fuga
(PF). Ver Figura 23.
Figura 23: Método de la minimización del área del triángulo. (González, 2016)
Menciona (González, 2016) existen otros métodos que obtienen los puntos de máxima
curvatura de una imagen utilizando directamente los valores de la imagen, sin realizar el paso
previo de obtención de aristas. Estos métodos definen una medida que suelen denominar de
‘esquinidad’ la cual se calcula para todos los puntos de la imagen. Cuando esta medida supera
un cierto umbral se considera que el punto es una esquina. La mayoría de estos métodos
utilizan operadores diferenciales.
De acuerdo con (Gomez & Guerrero, 2016) los métodos de gradiente y laplaciano vistos hasta
ahora no proporcionan por si solos una solución de calidad para la extracción de líneas, de
59
ahí que tengamos que recurrir a estrategias más complejas. A continuación, se describen tres
metodologías para la extracción automática de líneas:
• Canny + Burns
• RANSAC + MMCC
• Transformada de Hough
Canny & Burns. Extracción de líneas siguiendo un proceso multifase jerárquico que se basa
en la extracción de bordes mediante el algoritmo de Canny y en la segmentación posterior de
dichos bordes mediante el algoritmo de Burns.
Detección de bordes: Filtro de Canny. El detector de bordes de Canny (Canny, 1986) resulta
el más idóneo para la detección de bordes en imágenes donde existe la presencia de
geometrías regulares, ya que mantiene tres criterios vitales para nuestros propósitos:
• Unicidad en la obtención de un único borde para el contorno, garantizando bordes con una
achura máxima de un píxel.
RANSAC+MMCC.
60
Los pasos a considerar por parte de RANSAC serían los siguientes:
1. Selección aleatoria de dos puntos aleatorios para constituir una posible recta candidata.
2. Validación de la recta, en función del número de puntos que más menos una cierta
tolerancia tengan una variación mínima de su distancia ortogonal a la recta candidata.
De acuerdo con (Gomez & Guerrero, 2016) la transformada de Hough está diseñada
especialmente para encontrar líneas. Definimos una línea como una colección de puntos de
borde que son adyacentes y que tienen la misma dirección. La transformada de Hough es un
algoritmo que tomará una colección de puntos de borde, encontrados mediante un detector
de bordes y buscará todas las líneas sobre las cuales estos puntos de borde se encuentran.
• Se barre la imagen de manera que cada pixel de borde da lugar a una recta: las celdas por
las que "pasa" esta recta reciben un "voto".
61
• En teoría todos los píxeles que pertenecen a una misma recta (en la representación espacial)
son rectas (en el dominio de parámetros) que se cortan en una misma celda (en la
representación de los parámetros): la recta resultará ser la celda más votada.
Según (González, 2016) transformada de Hough para círculos. Al igual que se explotaba la
dualidad punto-línea en la transformada de Hough para líneas se podrá hacer algo similar en
el caso de los círculos.
62
en las que se obtengan valores numéricos similares para una misma imagen rotada y escalada,
es decir que sean invariantes a la rotación y a la escala.
1.- Análisis: Es el procedimiento que asigna una determinada etiqueta a un objeto a partir
de la información proporcionada por sus descriptores.
Hay diversos métodos para llevar a cabo dicha etapa, una de ellas es el clasificador “K vecinos
más próximos”.
Según (Garcia E. , 2008) la clasificación por los “K” vecinos más próximos (K Nearest
Neighbor o K-NN) es ampliamente utilizada en el reconocimiento de formas. Dado un vector
a clasificar (rasgos característicos del objeto a clasificar) y un conjunto de vectores prototipo
asignados a las diversas clases existentes (base de conocimiento). La regla consiste en
calcular la distancia del primero a cada uno de los segundos, seleccionar los “K” vecinos más
próximos y decidir por la clase más votada entre los mismos.
Sea x un vector de dimensión “n” a clasificar, sea una base de datos de referencia
construida de N vectores de dimensión “n” y se conoce la clase Ci a la cual pertenecen los
vectores de la base de referencia . Como se muestra en la figura 24 el clasificador K vecinos
más próximos está basado en la estimación local de la densidad de probabilidad de la muestra
x a partir de los “K próximos vecinos” de la base de referencia.
63
Figura 24: Clasificador KNN. (Garcia E. , 2008)
Sea p(x/C) la densidad de probabilidad. A partir de esta estimación, la regla de BAYES nos
permite expresarlo en términos de la probabilidad a posteriori que la muestra x pertenezca a
la clase Ci, tal que:
𝑝𝑟 (𝐶𝑖 𝑙𝑥) = 𝑝(𝑥𝑙𝐶 𝑖 )𝑝∗( 𝑥𝑝)𝑟 (𝐶𝑖) = ∑𝑐𝑘=𝑝1𝑟 𝑝(𝑥𝑙𝑟 (𝐶𝑥𝑙𝑖)𝐶∗ 𝑘𝑝)𝑟∗( 𝑝𝐶𝑟𝑖)(𝐶𝑘) ( 10)
4.1 Sift
De acuerdo a (Juarez, 2011) el objetivo principal del algoritmo SIFT es la extracción de unas
características que describan de forma correcta los objetos que aparecen en las distintas
imágenes que se tengan recopiladas. De esta forma se podrán observar las similitudes
existentes entre las imágenes almacenadas en la base de datos y la imagen introducida al
programa para su reconocimiento. El coste de la extracción de dichos descriptores debe ser
el mínimo posible, y esto se consigue mediante un filtrado en cascada, en los que los
algoritmos más pesados sólo se realizan en los lugares que han pasado los filtrados anteriores.
En 1999, David Lowe propuso una técnica de descripción de objetos invariante a escala y
rotaciones, el Scale-Invariant Feature Transform (SIFT). Hasta ese momento todos los
detectores de objetos creados consideraban un único nivel de detalle (escala) y no tenían en
64
cuenta que los objetos de interés pueden tener diferentes tamaños o estar a diferentes
distancias de la cámara. La técnica se dividía en 2 partes diferenciadas:
- Una vez tenemos la orientación de todos sus vecinos, creamos un histograma, donde su
máximo determinará la orientación del punto. De aquí podremos obtener los ejes locales
para cada punto de interés.
- Hay que tener en cuenta que un pequeño desplazamiento espacial provoca que la
contribución de un píxel pase de un segmento a otro y cambie la descripción. En el caso de
una pequeña rotación la contribución podría pasar de una orientación a otra.
– Para evitar este problema un píxel contribuye a todos sus vecinos, multiplicando la
contribución por un peso 1-d, donde d es la distancia al centro del segmento.
El descriptor SIFT creado por David Lowe es parcialmente robusto a cambios de iluminación,
puntos de vista, se calcula rápido y es muy distintivo; pero también tiene inconvenientes ya
que no es robusto a deformaciones rígidas o elásticas de objetos. Esto es debido a que a la
hora de describir se basa en la creación del vector descriptor a partir de las normales de los
puntos de interés del objeto y eso provocaría que pequeños cambios de curvatura varíen
radicalmente el descriptor.
66
Menciona (Guitart, 2009) en 2004 apareció una modificación a SIFT propuesta por Ke y
Sukthankar cuya idea era obtener un descriptor que sea tan distintivo y robusto como SIFT,
pero con un vector de menos componentes. Para reducir la dimensionalidad usaron la técnica
de Análisis de Componentes Principales (PCA). El cálculo de la orientación de los puntos de
interés se realiza igual que en SIFT, pero se trabaja con ventanas de 39x39, girando la ventana
según la orientación dominante y formando un vector concatenando los mapas de gradientes
horizontales y verticales.
En este caso se obtiene un vector de 2x39x39 = 3042 elementos, pero no toda la información
es significativa. Para reducir el número de casillas se recopilan muchos ejemplos de puntos
de interés y utilizando sus vectores calculamos la matriz de covarianza, obteniendo así el
promedio. Después se diagonaliza la matriz y se organiza por eigenvalores decrecientes,
donde los primeros serán los más altos.
A partir de aquí, para cada nuevo punto de interés se obtiene el vector inicial y se convierte
al sistema de ejes de los eigenvectores. Finalmente el descriptor estará constituido por las 20
primeras componentes, los 20 ejes más distintivos.
De esta manera se consiguió crear una versión simplificada del descriptor SIFT, pero aun así
continuaba presentando carencias respecto a deformaciones rígidas o elásticas de objetos.
Según (Juarez, 2011) es necesario detectar una serie de puntos clave mediante una serie de
algoritmos en cascada. Estos algoritmos, irán filtrando los puntos de la imagen que más
posibilidades tengan de llegar a ser un keypoint, para realizar posteriormente en torno a ellos
un examen más exhaustivo.
En un primer momento, se deben localizar los lugares y escalas que pueden repetirse en
distintas vistas del objeto. La localización de estos lugares puede hacerse mediante una
búsqueda de características estables en todas las escalas que se den en la imagen, utilizando
una función continua conocida como “Escala-espacio”, desarrollada en 1983 por Witkin y
descrita en su trabajo de investigación en 1986.
67
Koenderink en 1984 y Linderberg en 1994 demostraron que bajo algunas circunstancias, la
única posibilidad de utilizar una función del tipo “Escala-Espacio” es mediante la función
Gaussiana. Por lo tanto, la función que define la “Escala-Espacio” de una imagen sería del
tipo L(x, y, ).
Escala
(Siguiente
octava)
Diferencias de
Gaussiano Gaussiano
Escala
(Primera
octava)
68
Las imágenes de escalas adyacentes serán restadas para producir la Diferencia de Gaussianas
necesaria.
Una vez que la octava completa ha sido procesada se volverá a muestrear la imagen
Gaussiana que tiene el doble del valor inicial de σ que tomen el segundo píxel de cada
columna y fila. La precisión de las muestras relativas de σ no es diferente de las del comienzo
de la octava previa, mientras que la cantidad de cálculos computacionales se reducen bastante
de esta forma.
4.2 Surf
De acuerdo con (Patiño, 2012) el algoritmo SURF (Speeded Up Robust Features), fue
empleado por Herbert Bay en el año 2006, se basa en SIFT pero a diferencia de este, es más
robusto puesto que utiliza wavelets y determinantes Hessianas, además SURF está libre de
patentes y existen numerosas implementaciones mucho más eficientes que SIFT.
Hace réplicas de la imagen para así buscar los puntos que estén en todas las réplicas
asegurando la invariancia de escala. Las réplicas pueden ser piramidales o del mismo tamaño
a la original.
En las piramidales la principal idea es tener una imagen más pequeña que la anterior, para
ello se realiza un filtro de la imagen y se submuestrea ya que si se realiza solo el submuestreo
se pierde la información de la imagen como se muestra en la figura 26:
SURF ofrece la detección de objetos con menor coste computacional, es más rápido y eficaz
que SIFT en lo que se refiere a realizar cálculos para la generación de puntos claves, todo
esto gracias a la reducción de la dimensionalidad y dificultad en el cálculo de vectores.
Menciona (Aracil, 2012) SURF es otro de los algoritmos más utilizado para la extracción de
puntos de interés en el reconocimiento de imágenes. La extracción de los puntos la realiza
69
detectando en primer lugar los posibles puntos de interés y su localización dentro de la
imagen.
Es mucho más rápido que el método SIFT, ya que los keypoints contienen muchos menos
descriptores debido a que la mayor cantidad de los descriptores son 0.
Este descriptor se puede considerar una mejora debido a que las modificaciones que
supondría en el código no serían excesivas, ya que el descriptor SURF utiliza la gran mayoría
de las funciones que utiliza el descriptor SIFT.
70
Figura 27: Esquema del proceso de clasificación SURF. (Aracil, 2012)
71
Detección de puntos de interés.
Menciona (Benito, 2016) la primera de las etapas del descriptor SURF es idéntica a la del
descriptor SIFT en cuanto a la detección de puntos de interés se refiere.
El descriptor SURF hace uso de la matriz Hessiana, más concretamente, del valor del
determinante de la matriz, para la localización y la escala de los puntos. El motivo para la
utilización de la matriz Hessiana es respaldado por su rendimiento en cuanto a la velocidad
de cálculo y a la precisión.
( 12)
Las aproximaciones de las derivadas parciales se denotan como Dxx, Dxy y Dyy, y el
determinante se calcula de la siguiente manera:
2
( 13)
Donde el valor de 0,9 está relacionado con la aproximación del filtro Gaussiano.
72
Figura 28: Se puede observar la representación de la derivada parcial de segundo orden de un filtro
gaussiano discretizado y la aproximación de la derivada implementada en el caso del descriptor SURF.
(Aracil, 2012)
Finalmente para calcular la localización de todos los puntos de interés en todas las escalas,
se procede mediante la eliminación de los puntos que no cumplan la condición de máximo
73
en un vecindario de 3 x 3 x 3. De esta manera, el máximo determinante de la matriz Hessiana
es interpolado en la escala y posición de la imagen.
4.3 Orb
4.4 Freak
De acuerdo con (Peralta, 2013) FREAK (Fast Retina Keypoint) es un descriptor que usa las
ideas propuestas en BRISK y además se inspira en el sistema visual humano, principalmente
en la topografía que tienen los conos y los bastones en la retina del ojo. Este descriptor usa
un patrón similar a BRISK, es un patrón circular basado en los campos receptivos de la retina
humana que imita las densidades de los receptores al tener mayor representación en el área
central. Esta concentración decrece exponencialmente cuando se aleja del centro, y además
74
existe un traslape en los campos receptivos. Un filtro Gaussiano con diferentes desviaciones
estándar por cada nivel es aplicado para reducir el ruido.
El descriptor se forma usando diferencias entre pares de puntos que comparten el mismo
filtro, si la resta es positiva se asigna un valor de 1, en caso de ser igual o menor a cero se
deja el valor de cero. Los autores diseñaron el descriptor considerando pares cuyas restas
puedan representar mejor al punto, para ello consideran las parejas con varianza más alta.
Experimentalmente se encontraron 512 pares que dan la mejor representación al punto,
agregar más pares no mejora el desempeño del descriptor. Finalmente, se determina la
orientación del punto usando el mismo concepto de BRISK al usar pares con distancias largas
sobre una configuración simétrica.
4.5 Flann
Menciona (Morante, 2012) FLANN (fast library for approximate nearest neighbours). Nos
ofrece varias ventajas: Permite el tratamiento de imágenes a color. Esto no afecta al
rendimiento del algoritmo pero de cara al operador el resultado es más sencillo de interpretar.
Se puede definir el problema de la búsqueda del vecino más cercano de la siguiente manera:
dado un conjunto de puntos P=p1+p2+…+pn en un espacio X, estos puntos deben ser
preprocesados de tal forma que dado un nuevo punto de búsqueda q Є X, encontrar el punto
en P que es más cercano a q puede ser realizado rápidamente.
75
El problema de la búsqueda del vecino más cercano es uno de mayor importancia en una
variedad de aplicaciones tal como reconocimiento de imágenes, compresión de datos,
reconocimiento de patrones y clasificación, aprendizaje de máquina, sistemas de
recuperación de documentos, estadística y análisis de datos. Como sea, resolver este
problema en un espacio multidimensional parece ser una tarea bastante ardua y no existe ese
algoritmo que realice la tarea significativamente mejor que los buscadores por fuerza bruta.
Esto ha llevado a un interés creciente en esa clase de algoritmos que realicen búsquedas
aproximadas del vecino más cercano, el cual ha probado ser una aproximación bastante buena
en la mayoría de las aplicaciones prácticas.
FLANN es una librería para realizar aproximaciones rápidas de los vecinos más cercanos.
FLANN está escrito en lenguaje C++. FLANN puede ser fácilmente usado en la mayoría de
los contextos que usen el lenguaje C, como MATLAB y Python.
Según (Pacheco, 2011) el clásico algoritmo de kd-tree es eficiente en bajas dimensiones, pero
en altas dimensiones el rendimiento rápidamente decae. Para obtener un impulso sobre
búsqueda lineal se hace necesaria una aproximación al vecino cercano. Esto mejora la
velocidad de búsqueda al costo de que el algoritmo no estará retornando el vecino cercano
exacto. El algoritmo original de kd-tree separa los datos a la mitad en cada nivel del árbol en
la dimensión en la cual los datos muestran una gran varianza. Por comparación, los arboles
aleatorios son construidos escogiendo la dimensión a partir al azar desde la primera
dimensión D en la que el dato tiene gran varianza.
76
Como se muestra en la figura 31 el árbol kd-tree jerárquico es construido dividiendo los datos
en cada nivel en K distintas regiones usando agrupamiento k-ésimo y luego aplicando el
mismo método recursivamente a los puntos de cada región. Se detiene la recursión cuando el
número de puntos en la región es más pequeño que K.
Figura 31: Algoritmo de búsqueda del vecino más cercano. (Bueno, 2012)
5 Capítulo 5. Metodología
Contextualizando, en caso de que, el cliente no lleve consigo el producto que desea adquirir,
el vendedor será el encargado de buscar en la base de datos si tiene en existencia algún
77
producto similar por el cual el cliente pregunto y se lo mostrará, en caso contrario se le
notificará que dicho producto no está en venta en la tlapalería.
Por otro lado, cuando se realice la búsqueda de un objeto en específico y existan varios
modelos del mismo, el sistema tomará el objeto con más porcentaje de similitud y lo mostrará
en la pantalla del usuario.
Por lo anterior, se propone un sistema de visión artificial para reconocer solo objetos
existentes dentro de una tlapalería para su venta, con la posibilidad de incorporar nuevos
objetos al banco de imágenes. El caso de estudio está enfocado a las tlapalerías en general e
insumos que no excedan el tamaño de 37.4 cm de ancho x 30cm de alto.
Además de su planificación sencilla, provee un producto con un elevado grado de calidad sin
necesidad de un personal altamente calificado.
En esta etapa se realizó una investigación previa donde se consultaron diferentes libros acerca
del procesamiento digital de imágenes y de OpenCV en bibliotecas universitarias y páginas
web, así como también artículos y trabajos referentes a estos temas, los cuales fueron
necesarios para comprender los conceptos básicos del PDI y de OpenCV, para posteriormente
generar el algoritmo que permita reconocer un objeto a partir de una imagen.
Una vez comprendido los conceptos básicos del PDI y haber analizado las diferentes técnicas
y funciones de OpenCV para reconocer objetos, se procede a generar los requerimientos
funcionales y no funcionales del sistema de reconocimiento de objetos.
Requerimientos Funcionales:
78
• El sistema debe reconocer un objeto a partir de una imagen de entrada solo si esta se
encuentra en el banco de imágenes.
• El vendedor buscará los objetos que desee para saber si se encuentran en existencia.
• El sistema debe tener un banco de imágenes pre-procesado para poder realizar una
búsqueda de un objeto en específico.
• El sistema debe contar con un espacio físico pre-diseñado para la captación del objeto
a buscar.
Requerimientos no funcionales:
Interfaces
• Hardware:
Banco de imágenes: Imágenes de los objetos captados por la raspberry pi cámara que
serán examinados.
79
• Software
Librería OpenCV 3.0.0: Para hacer uso de sus funciones para el reconocimiento de
objetos.
Sistema operativo Raspbian Jessie: Para que OpenCV 3.0.0 pueda ser instalado
eficazmente.
Adobe Photoshop CS6: Para el pre-procesamiento del banco de imágenes así como
también de los objetos a buscar.
Ambiente físico: El equipo deberá permanecer en una zona en específica, lejos de la luz
natural y con una buena ventilación e iluminación, debido al rígido proceso de captación del
objeto a buscar. Como ya se ha mencionado anteriormente el contexto físico es un factor muy
importante al momento de tomar una fotografía a determinado objeto.
Usuarios: El sistema será operado solo por el vendedor de la tlapalería, siendo capacitado
anteriormente para que pueda manejar el sistema sin ningún tipo de problema. En relación al
sistema, su estructura no es muy compleja siendo fácil de manejar y entendible para la
persona que lo use.
Datos: Debido a que el sistema contará con un banco de imágenes de todos los objetos que
estén en venta, estos datos deberán estar almacenados hasta que objetos nuevos lleguen a la
tlapalería para ser procesados junto con los actuales. Solo en este caso el banco de imágenes
deberá ser actualizado.
80
Seguridad: Es importante mencionar que el banco de imágenes cuente con uno o más
respaldos para que de ese modo se prevean contingencias que puedan surgir en un momento
determinado.
Una vez recabados todos los requisitos para desarrollar el sistema, se procede a realizar el
diseño del sistema. En la figura 32 se muestra el prototipo que se ha creado para las pruebas
del sistema en cuestión.
81
Figura 32: Diseño del sistema de reconocimiento de objetos (Elaboración propia)
En la figura 33 se muestra el Diagrama de Caso de uso del requerimiento más importante que
consiste en obtener la imagen y buscará la identificación del objeto
82
Figura 33: Diagrama de casos de uso (Elaboración propia)
El usuario del sistema es el encargado de tomar la foto del objeto que quiere buscar en el
sistema y lo pre-procesa para poder buscarlo y saber sus características con ayuda del
sistema, para poder presentarlo físicamente al cliente.
El sistema es el encargado de obtener una imagen del objeto a buscar, lo procesa y compara
en el banco de imágenes y si lo reconoce y encuentra, muestra al usuario del sistema las
características e imagen de dicho objeto.
83
La tlapalería es el espacio físico donde el sistema y el usuario del sistema son utilizados para
la búsqueda de objetos a petición del cliente.
Diagrama de componentes
Para incorporar un objeto nuevo se llevará a cabo este proceso. Ver figura 35.
1) Obtener la fotografía del objeto con dimensiones de máximo 30 cm x 37.4 cm.
84
2) Aplicar el tratamiento de imagen necesario
85
3) Iniciar la búsqueda donde se comparará la “imagen a buscar” con las “imágenes del
banco de imágenes” ya procesadas.
4) Obtener los resultados que consistirán en una o más imágenes con grado de similitud.
5) Determinar si se encontró el objeto o no.
En la figura 36 se muestra el espacio físico y las dimensiones establecidas para que el proceso
de captación del objeto a buscar pueda ser llevado a cabo eficazmente.
En la Figura 37 se muestra el proceso para la identificación del objeto. Una vez que el objeto
se identifica se busca para ver si existe en la base de datos de objetos.
86
Da el nombre
del objeto
Para tener un mejor entorno de desarrollo el sistema será dividido en dos partes: guardar los
descriptores de las imágenes de los objetos de la tlapalería en un archivo externo para luego
examinar dichos descriptores para encontrar imágenes, en este caso objetos, similares con la
imagen de entrada (objeto a buscar).
Los descriptores le permiten al sistema analizar las características de las imágenes y de ese
modo puedan ser procesadas y encontrar posibles similitudes con otros objetos.
87
El primer proceso que se realizó fue guardar los descriptores de las imágenes en un archivo
externo. Esto es para que no se tenga que recrear los descriptores de cada imagen cada vez
que se ejecute una búsqueda de imágenes parecidas.
En el sistema se examinará una carpeta con imágenes, dentro de la misma se crearán los
descriptores correspondientes para futuras búsquedas.
Para crear los descriptores y guardarlos en un archivo se usaron las funciones Load an image,
feature detector, detect, compute y NumPy.
Una vez terminado el script, su función será la de pasar el nombre de la carpeta que
contienen todas nuestras imágenes, creando los respectivos descriptores y guardarlos en la
misma carpeta. Ver figura 38.
88
Una vez teniendo los descriptores guardados debidamente, el siguiente paso es ejecutar el
proceso de búsqueda sobre todos los descriptores y observar si existe alguna imagen
parecida a la imagen de entrada (objeto a buscar).
1) Cargar una imagen de entrada (objeto a buscar) y la creación de un descriptor para él.
5) Si el descriptor posee un 80% de parecido por sobre todos los demás descriptores del
banco de imágenes al objeto de entrada se considera como objeto encontrado.
Primeramente se crea una matriz con el nombre de los archivos y utilizar la función
cv2.imread para leer la imagen de entrada (objeto a buscar).
Después se crean los archivos, imágenes y los descriptores globales, también se hará uso
del bucle for para detectar a los descriptores de las imágenes contenidas en la carpeta. Se
89
Después se hace uso de la función print para indicar el proceso de búsqueda de las imágenes,
a la vez de utilizar un bucle for para iterar nuestros descriptores e ir buscando en cada
descriptor algún parecido con la imagen de entrada (objeto a buscar) con la ayuda de FLANN.
Para poder cargar un archivo tipo npy dentro de una matriz se utilizó la función numpy.load
(nombre del archivo).
En cada iteración el sistema realizará una comparación entre la imagen de entrada con los
descriptores almacenados, evaluando si existe o no un parecido, informando si hay una o más
coincidencias en cada descriptor.
Para terminar el sistema tomará el mayor número de similitudes de todos los descriptores y
en dado caso que un descriptor tenga un muy alto grado de parecido con la imagen de entrada,
este se tomará como objeto o imagen encontrada. Ver figura 39.
Una vez terminado el sistema, es importante aclarar que una parte del programa fue
desarrollada principalmente para generar los descriptores de todas las imágenes almacenadas
90
en una carpeta. Este script se guardó con el nombre de descriptores.py, para ser identificado
más fácilmente y tener un rol en específico a la hora de ejecutar el programa y mostrar sus
funcionalidades.
Por otra parte se generó otro script llamado búsqueda de objeto.py el cual es el encargado de
buscar objetos parecidos en el banco de imágenes, para que de este modo puedan ser
examinados todos los objetos almacenados.
El sistema clasifica debidamente arrojando el nombre del objeto (si es que este se encuentra
en nuestro banco de imágenes), así que para volverlo un poco más específico se le añadieron
nuevas funciones, por mencionar algunas: que nos muestre aparte del nombre del objeto, el
precio y la ubicación, además de que nos muestre la imagen del objeto.
Para esto se le añadió la función imshow la cual nos permite mostrar la imagen del objeto a
buscar. Ver Figura 40.
6 Capítulo 6 Resultados
En esta parte se necesitará tanto del banco de imágenes previamente procesadas, así como
del espacio físico, donde el proceso de captación de imagen se llevará a cabo:
91
Primeramente se mostrará el procedimiento para almacenar y procesar las imágenes.
Se han escogido 20 objetos diferentes para entrenar la red neuronal que está integrada en
OpenCV.
Los objetos fueron captados por la raspberry pi cámara con el comando raspistill –o
<nombre de la imagen>.
Después de que se juntaron las imágenes de prueba, se les da el tratamiento, por mencionar
algunas (recorte de la fotografía para obtener solo el contorno de la figura, eliminar el fondo,
cambiar su color a escala de grises), por medio del programa Adobe Photoshop cs6.
La figura 41 muestra las imágenes de todos los objetos que serán almacenados en el banco
de imágenes antes de ser procesados con la herramienta Photoshop.
Imágenes originales
92
Figura 41: Banco de imágenes
La figura 42 muestra el resultado del procesamiento de las imágenes de todos los objetos
que serán almacenados en el banco de imágenes con ayuda de la herramienta Photoshop.
Imágenes procesadas
93
94
Figura 42: Banco de imágenes procesado
Espacio físico
La figura 43 muestra el espacio físico mediante el cual se lleva a cabo el proceso de captación
de la imagen de los objetos.
Figura imagen del objeto con raspberry pi cámara44: Proceso de captación de la Figura 44:
La figura 44 muestra la función de la raspberry pi cámara para captar las imágenes de los
objetos.
95
Figura 45: Instalación eléctricaFigura 45:
La figura 45 muestra la instalación eléctrica del espacio físico.
Una vez teniendo el banco de imágenes de una manera óptima, se procede a observar el
funcionamiento del sistema al momento de buscar y encontrar objetos en base a una imagen
de entrada:
El primer objeto a buscar fue un clavo largo, el sistema deberá de reconocerlo debido a que
este objeto está almacenado en el banco de imágenes, así como sus datos (nombre, precio,
ubicación, fotografía por mencionar algunos).
Es importante recordar que se está usando la versión 3.0.0 de OpenCV y para poder usar SIFT
se tiene que acceder desde el ambiente virtual.
96
Figura 47: Accediendo al ambiente virtual
La figura 47 Muestra la manera de acceder al ambiente virtual para poder usar eficazmente
SIFT.
Una vez aclarado este punto se procede con la ejecución del script:
La figura 48 Muestra un error al tratar de generar los descriptores de las imágenes contenidas
en la carpeta tlapalería.
97
La salida fue un error debido a que las imágenes tenían unas dimensiones realmente grandes
en cuanto a anchura y altura en pixeles,
La figura 49 Muestra el objeto fotografiado por la raspberry pi 2 cámara la cual nos da las
dimensiones que poseen todos los objetos del banco de imágenes.
Por tal motivo se decidió trabajar con esas imágenes cambiándolas de tamaño a 500 x 500
pixeles, de este modo el problema quedó resuelto:
98
Figura 50: Resultados de la ejecución del script para generar descriptores
Ahora que ya se tienen los descriptores de los respectivos objetos, lo siguiente es que a partir
de una imagen de entrada (objeto a buscar) sea comparado con el banco de imágenes, para
así poder encontrar posibles similitudes en base a la imagen de entrada. En dado caso que un
objeto de nuestro banco de imágenes posea un alto grado de patrones similares se tomara
como un objeto parecido y por ende encontrado.
De este modo se procede a probar la red neuronal que está integrada en OpenCV:
99
Figura 51: Clavo
La figura 51 Muestra la imagen del objeto a buscar en el banco de imágenes antes de ser
preprocesado.
100
Se pasa el descriptor e imagen del objeto a buscar en el banco de imágenes:
La figura 54 Muestra la incorporación del descriptor del objeto a buscar al banco de imágenes.
Acto seguido se ejecuta el script para poder saber si en el banco de imágenes existe un objeto
con algún parentesco a este.
101
El sistema lo reconoció debidamente: Entonces se procede a examinar todos nuestras demás
imágenes con el mismo procedimiento antes mencionado:
Esto se originó porque al momento de extraer el contorno del objeto a buscar la herramienta
de-procesamiento modificó las dimensiones de las imágenes por lo que no pudieron ser
examinadas debidamente:
103
Figura 59: Imagen original segmentada por el editor Imagen retocada posteriormente.
Antes Después
Es importante mencionar que en el caso de objetos pequeños tales como clavo, pijas, etc. la
distancia debe ser más aproximada al objeto, de este modo se puede obtener la forma del
objeto más detalladamente.
7 Capítulo 7 Conclusiones
Después de haber aplicado la metodología y obtenido resultados se ha llegado a las siguientes
conclusiones.
104
El problema planteado consistió en reconocer objetos usando una computadora Raspberry Pi
2 y la Librería OpenCV, por lo que, una vez que se llevó a cabo la metodología se obtuvieron
resultados que muestran la posibilidad de reconocer objetos de una tlapalería, por lo tanto, se
concluye que el problema podría quedar resuelto si se implementa la propuesta de solución.
Mientras que, el objetivo que se planteó de reconocer objetos a partir de imágenes digitales
se logró usando la librería OpenCV y dos programas desarrollados en Python que fueron: El
que genera los descriptores de las imágenes y el otro que busca el objetos en el banco de
imágenes. Por lo que, el objetivo queda cumplido.
Por otro lado, la hipótesis que dice: “Si se implementa un sistema de reconocimiento de
objetos en las tlapalerías será posible reconocer objetos a partir de una fotografía así como
su existencia y características del objeto buscado”, y que de acuerdo a los resultados la
hipótesis ha resultado verdadera al lograrse el reconocimiento de objetos.
Las características de los objetos del banco de imágenes fueron almacenadas en los
descriptores de los mismos.
Se requirió obtener la imagen a partir de una fotografía del objeto, luego se procesó para su
segmentación y luego pasar a la escala de grises y finalmente el proceso de reconocimiento
de imágenes. Todo lo anterior, se requiere de al menos 4 minutos para obtener la imagen y la
búsqueda del objeto tardó segundos, pero cambia al aumentar el banco de imágenes.
Este tipo de sistema una vez implementado en alguna tlapalería sustituiría la búsqueda de
objetos en la base de datos, obteniendo una búsqueda de objetos más detallada y a la vez
brindando a los clientes una mayor atención personal.
1. Probar el sistema con un gran conjunto de imágenes, considerando que una tlapalería
puede contar con cientos e incluso miles de artículos.
105
2. Probar el reconocimiento de objetos con un equipo de hardware de alto rendimiento,
digamos con un servidor.
106
7.2 Referencias
Diaz, I., Montoya, D., & Boulanger, P. (Diciembre de 2007). scielo.org.co. Recuperado el 11
de Octubre de 2016, de scielo.org.co:
http://www.scielo.org.co/scielo.php?script=sci_arttext&pid=S1692-33242007000200011
107
ehu. (2016). sc.ehu.es. Recuperado el 12 de Octubre de 2916, de sc.ehu.es:
http://www.sc.ehu.es/ccwgrrom/transparencias/pdf-vision-1-transparencias/capitulo-6.pdf
Escalante, B. (6 de Octubre de 2006). http://verona.fi-p.unam.mx/. Recuperado el 10 de
Septiembre de 2016, de http://verona.fi-p.unam.mx/:
http://verona.fip.unam.mx/boris/teachingnotes/Capitulo4.pdf
Giraldo, D., Roldan, M., & Garro, D. (13 de Noviembre de 2009). slideshare. Recuperado el
12 de Septiembre de 2016, de es.slideshare.ne:
http://es.slideshare.net/FERRETERIALA87/proyecto-ferreteria-la-87
108
Gonzalez, R. (2016). https://launchpadlibrarian.net. Recuperado el 15 de Septiembre de
2016, de https://launchpadlibrarian.net:
https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf
Gonzalez, R., & Woods, R. (2002). Procesamiento Digital de Imagenes. Estados Unidos:
Prentice Hall.
Krogh, P. (2010). Gestion del archivo digital para fotografos. Madrid: Ediciones Anaya
multimedia.
Larrañaga, P., Inza, I., & Moujahid, A. (2016). sc.ehu.es. Recuperado el Octubre de 10 de
2016, de sc.ehu.es: http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t6bayesianos.pdf
Mcmahon & Nichols, (2007) Paint shop pro x para fotografos. Ediciones Anaya multimedia.
109
Peralta, R. (Mayo de 2013). http://www.ptolomeo.unam.mx/. Recuperado el 15 de
Septiembre de 2016, de http://www.ptolomeo.unam.mx/:
http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/handle/132.248.52.100/6876/Tesis.p
df?sequence=1
Rodríguez, R., & Sossa, J. (2012). Procesamiento y analisis digital de imagenes. Madrid:
Alfaomega.
110
Sucar, E., & Gomez, G. (2016). http://ccc.inaoep.mx/. Recuperado el 10 de Septiembre de
2016, de http://ccc.inaoep.mx/: http://ccc.inaoep.mx/~esucar/Libros/vision-sucargomez.pdf
Valentine & Moughamian, (2010) Fotomontaje con photoshop cs4. Anaya multimedia.
Valera, B. (30 de Julio de 2015). http://documents.mx/. Recuperado el 10 de Septiembre de
2016, de http://documents.mx/: http://documents.mx/documents/sistema-de-vision-
porcomputadora.html
111