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.

 

 

Figura 1: Original

 

 

Figura 2: A la imagen original se le aplico el filtro de mediana y luego el gradiente

 

 

Figura 3: Rectas que tuvieron mas de 100 votos

 

 

Figura 4: Rectas que obtuvieron mas de 80 votos.

 

 

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

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

 

Reconocedores de Voz:

  • 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.

Transformada de Hough

  • 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

Placa de E/S para puerto USB

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.