Reconocimiento de imágenes
INTRODUCCIÓN AL PROCESAMIENTO DIGITAL DE IMÁGENES I (PDF)
Leandro DiMatteo
INTRODUCCIÓN AL PROCESAMIENTO DIGITAL DE IMÁGENES II (PDF)
Leandro DiMatteo
Objetivo:
El objetivo de este módulo es crear un entorno de trabajo y experimentación para el reconocimiento del habla humana.
Hay dos etapas de programación para realizar sobre las imágenes obtenidas: Procesamiento e Interpretación. Donde la interpretación al tratarse de imágenes vistas por un robot, que serian similares a las que vemos nosotros cotidianamente, presentan la dificultad de que los patrones a buscar pasan a ser infinitos, por ejemplo para interpretar la imagen y determinar si hay una silla en el camino del robot, el robot tendría que conocer todas las formas de silla, reconocerlas con cualquier iluminación y color, si está cerca o lejos. Entonces estos cálculos se multiplican con la cantidad de objetos a reconocer, por consiguiente el mundo real resulta demasiado amplio para la interpretación de las imágenes.
En la actualidad esta interpretación se limita a medir roscas de tornillos, distancias muy pequeñas entre dos objetos que siempre son los mismos y están iluminados de forma tal que no presente ambigüedad, además de tener un color de fondo acorde para la buena definición del objeto. Otro ejemplo es el de interpretación de etiquetas o de ciertos objetos en la fabricación, pero esto se trata de buscar en la imagen una imagen parecida a la imagen patrón. Pero cuando el robot avanza y los objetos en su entorno cambian, no hay imagen patrón a buscar, sino que se debe interpretar la imagen nueva.
En definitiva se pretende:
- Poder determinar si el camino está libre de objetos.
- Calcular el ancho y altura de distintos objetos, para ello es necesario una coordinación con el sonar para obtener la distancia a dicho objeto, pues la imagen es un espacio en dos dimensiones.
Problemas:
- Influye mucho el color de los objetos y la iluminación del ambiente.
- La velocidad de procesamiento.
El programa es realizado en C ANSI usando funciones que manipulan las imágenes con la idea que luego sea transportable a un DSP, solo la parte gráfica no es ANSI, pero esto es solo para la visualización en la etapa de prueba y para el programa que está en la PC que permite ver lo que el robot ve. Contamos con una cámara digital con sistema inalámbrico que tiene un alcance de 30 m., entonces la cámara que esta montada en el robot le transmite las imágenes a la PC, y al mismo tiempo la procesa el DSP que se encuentra en el robot.
Operaciones que se realizan para el procesamiento:
- Filtros para mejorar la imagen: mediana, media, moda, y filtros de frecuencia pasa bajos, pasa banda, y pasa altos.
- Gradiente para detección de bordes: Gx, Gy, Laplaciano, detección de puntos y líneas con los operadores: EO, NS, NE-SO, NO-SE.
- Convolución de la imagen con máscaras.
- Histograma para ecualización y segmentación.
- Operaciones geométricas: Zoom y unzoom, giro y traslación. Con interpolación bilineal.
- Morfología matemática binaria: erosión, dilatación Operaciones que se realizan para la interpretación de las imágenes:
- transformada de Hough.
Descripción General del Sistema:
Imagen capturada: Consideramos una función bidimensional para definir una imagen, el par de coordenadas (x,y) definen un único punto en la matriz y el valor de la función en ese punto f(x,y) da el valor de la intensidad lumínica en ese punto, donde:
x <= f(x,y) <= 255 es decir: negro <= f(x,y) <=blanco
Entonces para realizar la representación de una imagen usamos matrices en memoria, las hacemos cuadradas para simplificar: m=256 …… Filas n=256 ……..columnas p=8 …nº de bits para la cuantificación de una muestra Cada punto de la matriz es un píxel.
Entonces la matriz queda de un tamaño de MxNxP…..64k Bytes Comandos: Se usa como software de prueba de las funciones que se implementan un programa que corre en DOS. y que se programa en un nivel más alto desde el promt. Asi manejamos a las imágenes como matrices que se identifican con las letras A, B , C , D , a las variables, matrices de ventanas, vectores y puntos con otras letras.
Entonces una línea de programación podría ser: A open silla.dat ; B mediana A 3 ; C grad B 4 5 ; ver A ; ver C ;& Esto realiza la carga de una imagen capturada que se encuentra en el archivo “silla.dat” en la matriz A, se le aplica el filtro de mediana con una ventana de 3×3 poniendo el resultado en la matriz B, luego se le realiza el gradiente en el modo 4 que binariza con el umbral de 5 al resultado del gradiente y el resultado se pone en la matriz C, por último muestra la matriz A (Figura 1) y C (Figura 2) en la pantalla. El símbolo “&” es para indicar el fin. Otra opción es realizar la operación: run prog.bar & Esto corre las líneas de programa definidas como antes que están tipeadas en el archivo “prog.bar” como si fuera un archivo bach. Entonces combinando las diferentes funciones se puede ir analizando los parámetros que más conviene pasarle y el orden en que se las debe llamar.
Ejemplo de la aplicación de la transformada de Hough para detectar líneas:
Cada píxel no nulo de la imagen binarizada vota por una línea que pasa por él y que es perpendicular a una recta que va desde el centro de la imagen al píxel. Luego normalizo para que 255 sea el máximo n.º de votos. Se puede extraer la distancia perpendicular al centro y el ángulo que tienen las rectas. Y aplicando un umbral de votos puedo separar las rectas que tuvieron más votos, es decir las que están formadas por más puntos de la imagen binarizada. Así podemos ver en la Figura 3 las rectas que tuvieron más de 100 votos y compararla con la Figura 4 que muestra las rectas que tuvieron más de 80 votos.
Aplicaciones:
- Detección de líneas
- Calcular la distancia entre dos rectas para obtener la abertura de la puerta.
- Con el ángulo de una de las rectas se puede “enderezar” la imagen
Problemas:
- El numero de votos que sirve de umbral varia con cada imagen
- Aparecen rectas parásitas.
Hough es bastante eficiente en la detección de rectas siempre y cuando las líneas a procesar tengan grosor de 1 píxel.
Material Extra
Libro: “Introducción al procesamiento y análisis de imágenes digitales”. R. Molina. (PDF)
Manual de Referencia de OpenCV. Intel Corp. (PDF)
Bibliografía Recomendada
Etapa introductoria:
-
-
- A.Kvitca
-
Resolución de problemas con Inteligencia Artificial
-
-
- Barr,Feigenbaum
-
The handbook of Artificial Intelligence
-
-
- E.Rich
-
Artificial Inteligence
-
-
- Golzein,Carnota
-
Inteligencia Artificial aplicada
-
-
- N.Nilsson
Principles of Artificial Intelligence
- Sowa
- N.Nilsson
-
Conceptual Structures
Otros Libros:
-
- Hartnell
Inteligencia Artificial
- Nilsson
Principles of A.I.
- Furtado
Paradigmas de Leng. de Programación
- Shell
Expert Systems Practical Int.
- Valente
Logo 1 y 2
- Borland
Turbo Prolog
Manual
- Barr,Feigenbaun
The Handbook of A. I.
Volumen 1
- Barr,Feigenbaun
The Handbook of A. I.
Volumen 2
- Rich
Artificial Intelligence
- Berk
10 Lisp
- Winston
Lisp
- Scott
The Robotic Revolution
- Mulisp83
Manual
- Micro Prolog
Manual
- Nilsson
Problem Solving Method in A. I.
- Kowalsky
Logic for Problem Solving
- Winston
Artificial Intelligence
- Monro
Basic Básico
- OPS83
Manual
- Bratko
Prolog in A. I.
Volumen 1
- Bratko
Prolog in A. I.
Volumen 2
- Goldzein,Carnota
A. I. Aplicada
- Micro Expert
Manual
- Sowa
Conceptual Structures
- Anderson
Proving Program Correctness
- Minsky
Robotica
- Feigenbaum
La Quinta Generación
- Minsky
La Sociedad de la Mente
- Geneserth,Nilsson
Logical Fundations of A. I.
- Kandel
Fuzzy Mathematical Thecnics.
- Hughes,Cresswell
Introduction to Modal Logics
- Tim O’Shea
Advances in A.I.
- Naishtat
Lógica para Computación
- Bauer
Software Engineering
- Ward,Mellor
Structured Development for Real Time Systems
Volumen 1 y 2
- Jeffrey
The Logic of Decision
- Microsoft
Mulisp86
Manual
- Microsoft
Mulisp86
Manual
- Carnota
S. E. y Representación del Conocimiento
- Kvitca
Resolución de Problemas en A. I.
- Vidart
Programación Lógica y Funcional
- Takahashi
Introducao a P.O. O.
- Savadosvsky
Contucao de Interpretadores de L. N.
- Wirth
Pascal
- Martinez
Sistemas Expertos en OPS5
- Browton,Farrell
Expert Systems in OPS5
- Cox
Object Oriented Programming
- Dijktra
A Discipline do Programming
- Hartnell
- Dr. Juan Prawda Witemberg;
Métodos y Modelos de Investigación de operaciones
Volumen 2;
Editorial México Limusa;1993 - A.T. Barucha Reid.;
Elements of the theory of Markov processes and their aplications.
McGraw Hill
1960 - Giuliano Carli and Roberto Gretter.;
A start-end point detection algorithm for a real time acoustic Front-End based on DSP32C VME Board.
IRST Istituto per la Ricerca Scientifica e Tecnologica. - M. S. Ryan * and G. R.Nudd;
The Viterbi Algorithm.
Department of Computer Science
University of Warwick, Coventry; England.
February
1993 - Yoshua Bengio;
Markov Models for Secuential Data.
Neural Computing Surveys 2
129-162
1999. - Joe Tebelskis;
Speech Recognition using Neural Networks.
School of Computer Science Carnegie Mellon University
Pittsburgh,Pennsylvania.
May
1995 - L.R. Rabiner;
A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition.
Proceedings of the IEEE, Vol 77, Nº 2
February
1989 - L. R. Rabiner and B.H Juang;
Fundamentals of Speech Recognition. Prentice Hall
Kit para Procesamiento de Imagenes para Vision Artificial:
- Alberto Domingo Ajenjo;
Tratamiento Digital de Imágenes
1993 - David Young;
Hough Transforms , 1993
Medición de distancias empleando franjas de Moire:
- Pablo Meilán, Anibal Laquidara y Mario Garavaglia.
Hidden grids, moiré patterns, and 3D metrology
2001. - Mario Garavaglia y Anibal Laquidara.
Optoelectronic hidden grids and moiré patterns: basics and applications in distance measurement
Optical Engineering
2001. - Alberto Domingo Ajenjo
Tratamiento digital de imágenes
1993.
- Alberto Domingo Ajenjo
Tratamiento digital de imágenes
1993 - David Young
Hough Transforms
1993
Implementación de redes neuronales en FPGA
Gonzalez, Hernando
Redes Neuronales Artificiales
Carpio, Grau
VHDL: Lenguaje para sintesis y modelado de circuitos
Xilinix Databook
Altera Databook
Medición de distancias utilizando medios optoelectrónicos
Alberto Domingo Ajenjo
Tratamiento Digital de Imágenes
1993
Compac, Intel, Microsoft, NEC
Universal Serial Bus Specification
Revisión 1.1
September 1998.
Compac, Intel, Microsoft, NEC
HID Specification
1998.
Axelson, Jan
USB Complete
1999.