“visión artificial: percepción de profundidad” opción i...

67
“Visión Artificial: Percepción de Profundidad” Opción I: Tesis Profesional Autor: Mario Gonzalo Chirinos Colunga Asesor: José Ramón Atoche Enseñat Departamento de Ingeniera Electrónica. Instituto Tecnológico de Mérida. Noviembre 2004

Upload: others

Post on 25-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • “Visión Artificial: Percepción de Profundidad”

    Opción I: Tesis Profesional

    Autor: Mario Gonzalo Chirinos Colunga

    Asesor: José Ramón Atoche Enseñat

    Departamento de Ingeniera Electrónica.

    Instituto Tecnológico de Mérida.

    Noviembre 2004

  • A la memoria de mi abuelo.

  • Agradecimientos

    Este trabajo es la culminación de mis estudios de licenciatura, los cuales

    aproveche plenamente gracias a la formación que me dieron mis padres y a su

    empeño en que esta fuera más allá de lo aprendido en la escuela.

    Mi interés por la visión por computadora surgió gracias a mi profesor y asesor de

    tesis así como de otros proyectos José Ramón Atoche Enseñat, del cual he

    aprendido mucho.

    Los resultados de este trabajo mejoraron ampliamente gracias a los consejos de

    los doctores Luís Alberto Muñoz Ubando, Arturo Espinosa Romero y Ricardo

    Legarda Sáenz y a sus discusiones y platicas en las juntas de lunes dentro de la

    facultad de matemáticas.

    A mis tíos Dra. Patricia Colunga y Dr. Daniel Zizumbo, gracias por sus consejos

    sobre la forma de redactar textos científicos así como su paciencia para revisar y

    corregir parte de este documento.

    Y muchas gracias a toda mi familia por toda su confianza y apoyo.

  • INDICE

    1. Introducción. 1

    1.1. Hipótesis. 5

    1.2. Justificación. 5

    2. Fundamento Teórico. 6

    2.1. Formatos de Imagen. 6

    2.2. Almacenamiento. 7

    2.3. Filtros Lineales. 8

    2.4. Tratamiento y Mejoramiento de Imagen. 9

    2.4.1. Escala de Grises. 10

    2.4.2. Contraste y Brillo. 10

    2.4.3. Tolerancia Binaria. 11

    2.4.4. Filtros Pasa Bajas (Eliminación de Ruido). 12

    2.4.5. Filtros Pasa Altas (Detección de Contornos). 14

    2.4.6. Filtro Pasa Bandas. 18

    2.4.7. Histograma. 19

    2.5. Percepción de Profundidad. 20

    2.5.1. Geometría Epipolar. 23

    2.5.2. Rectificación de Imágenes. 25

    2.5.3. Algoritmos de Apareamiento Estereoscopio. 27

    3. Procedimiento. 33

    3.1. Introducción. 33

    3.2. Algoritmo. 35

    3.2.1. Apareamiento. 37

    3.2.2. Mapa de Disparidad. 41

    3.2.3. Mapa de Disparidad en Sub-pixel. 43

    3.2.4. Filtro Iterativo de Mediana Condicional. 45

    3.2.5. Oclusiones. 45

    4. Resultados. 47

    5. Conclusiones y Trabajos Futuros 52

    6. Referencias. 53

    Anexos. 56

    Apéndice A. Algoritmos en C++. 56

  • Visión Artificial: Percepción de Profundidad Introducción

    Instituto Tecnológico de Mérida 2004 1

    1. Introducción.

    El término “visión por computadora” dentro del campo de la Inteligencia Artificial

    puede considerarse como el conjunto de todas aquellas técnicas y modelos

    que nos permitan el procesamiento, análisis y explicación de cualquier tipo de

    información obtenida a través de imágenes digitales. Desde sus inicios, los

    desarrollos de la visión por computadora han estado inspirados en el estudio

    del sistema visual humano, el cual sugiere la existencia de diferentes tipos de

    tratamiento de la información visual dependiendo de metas u objetivos

    específicos, es decir, la información percibida es procesada en distintas formas

    con base en las características particulares de la tarea a realizar; así como en

    psicología se estudian y desarrollan teorías sobre la percepción visual, la visión

    por computadora propone varias técnicas y teorías que permiten obtener una

    representación del mundo a partir del análisis de imágenes obtenidas desde

    cámaras de video.

    Debido a que la información visual es una de las principales fuentes de datos

    del mundo real, resulta útil el proveer a una computadora digital del sentido de

    la vista, que junto con otros mecanismos como el aprendizaje hagan de esta

    una herramienta capaz de detectar y ubicar objetos en el espacio.

    La meta de la visión por computadora es modelar y automatizar el proceso de

    reconocimiento visual, esto es, “distinguir entre objetos con importantes

    diferencias entre ellos”, como diferenciar un automóvil y una bicicleta en una

    fotografía así como separar aves en vuelo del fondo en un video, o seguir la

    trayectoria de objetos en imágenes aéreas.

    El campo de la visión artificial esta aun en desarrollo, es una frontera

    intelectual. Como cualquier otra frontera del conocimiento es excitante y a la

  • Visión Artificial: Percepción de Profundidad Introducción

    Instituto Tecnológico de Mérida 2004 2

    vez desorganizada. Muchas veces no hay una autoridad en el campo a la cual

    se pueda acudir o hacer referencia, por lo que es necesario desarrollar

    métodos innovadores. Algunas ideas muy útiles, por su simpleza u obviedad

    carecen de sustento teórico y al mismo tiempo algunas teorías bien

    desarrolladas son imprácticas en muchos casos por el tiempo de

    procesamiento requerido, el cual impide que el análisis se haga en tiempo real.

    Este es uno de los principales problemas, pues el análisis de imágenes utiliza

    muchos recursos, por lo que cada vez se necesita de equipo más veloz para

    lograr analizar la imagen en el tiempo requerido, es decir, antes de que la

    siguiente imagen sea capturada, de forma que, dependiendo de la aplicación

    existirán sistemas en los cuales el tiempo de análisis no sea tan prioritario

    como en otros que necesiten procesar treinta imágenes por segundo, por

    ejemplo el tiempo en la identificación de una huella digital no requiere ser tan

    corto como el requerido para el análisis de imágenes en un sistema de rastreo

    de objetos en movimiento.

    La visión por computadora tiene una amplia variedad de aplicaciones, típicas

    como inspección industrial o inteligencia militar y nuevas como interacción

    humana, recuperación de imágenes de bibliotecas digitales, análisis de

    imágenes médicas y la generación de escenas en graficas por computadora,

    muy utilizadas en los videojuegos. El estudio de la visión por computadora así

    como el desarrollo de nuevos métodos y teorías no siempre requiere del uso de

    matemáticas profundas, pero si requiere de tener facilidad y estar abierto a una

    muy amplia variedad de ideas matemáticas.

    Uno de los tipos de información visual mas importante es la percepción de

    profundidad, la cual percibimos gracias a la visión estereoscópica; ella nos

  • Visión Artificial: Percepción de Profundidad Introducción

    Instituto Tecnológico de Mérida 2004 3

    permite interactuar en un mundo tridimensional al juzgar las dimensiones de los

    objetos que nos rodean.

    Por medio de la visión por computadora podemos procesar la información

    obtenida en un par de imágenes estereoscópicas, pues estas contienen una

    gran cantidad de información geométrica de la escena capturada, y con ella

    generar información útil para sistemas de navegación, robots, mapas

    topográficos, modelos tridimensionales etc.

    Auque existen otros métodos para obtener la profundidad de una escena, la

    visón estereoscópica es un proceso de captura rápido, y un método no invasivo

    pues a diferencia de los demás métodos no requiere de enviar una señal y

    analizar la señal de regreso, con esto se logra una invasión mínima en el

    ambiente que se desea recrear, el hardware involucrado es barato y fácil de

    utilizar ya que solo involucra al aparato estereoscópico formado por las dos

    cámaras para capturar la escena que se quiere reconstruir [1].

    Alguno de los métodos utilizados para la obtención de profundidad son:

    Dispositivos ultrasónicos: El principal problema con estos dispositivos es que la

    medición obtenida es afectada por fenómenos extraños e impredecibles como

    reflexiones múltiples de las ondas ultrasónicas sobre varios objetos lo que lleva

    a una estimación errónea del tiempo de reflexión.

    Dispositivos láser: Son aplicados a la medición y reconstrucción de objetos

    relativamente pequeños y navegación autónoma. Estos sistemas son en

    extremo precisos pero sufren de los mismos problemas que los dispositivos

    ultrasónicos, son usados para un rango especifico de distancias y pueden ser

    caros y algunas veces peligrosos.

  • Visión Artificial: Percepción de Profundidad Introducción

    Instituto Tecnológico de Mérida 2004 4

    Luz estructurada. Es método activo que emplea cámaras para adquirir la

    imagen de un objeto iluminado por un patrón regular de luz, requiere de

    dispositivos auxiliares como un emisor láser o un proyector, para proyectar un

    patrón o patrones de luz en el objeto. Se utiliza para la medición precisa de

    superficies de objetos en un rango cercano y de poca textura. La necesidad de

    un proyector auxiliar hace que este método sea poco flexible, las mediciones

    obtenidas por dispositivos activos pueden ser afectadas por reflexiones

    inesperadas o interferencia y necesitan ser usadas con extremo cuidado.

    El utilizar un aparato estereoscópico formado por dos cámaras de video, nos

    permite obtener de una forma sencilla y no invasiva, la información necesaria

    para la recreación tridimensional de la escena sin necesidad de aditamentos

    externos que elevan el costo y reducen la flexibilidad del instrumento.

    Para recuperar la mayor cantidad posible de información en una escena

    estereoscópica se requiere de un método que logre generar un mapa de

    profundidad detallado y sin ruidos, el cual es el objetivo de este trabajo, pues

    los algoritmos que encuentran un mapa suave, sin errores que generen saltos

    bruscos de profundidad, tienden a perder detalle y aquellos que obtienen un

    mapa detallado tienden a ser ruidosos.

    Para el desarrollo de este trabajo fue necesario aprender sobre técnicas

    básicas en visión artificial. En el fundamento teórico se explican técnicas para

    la manipulación de imágenes, su almacenamiento en memoria y filtros lineales,

    y en al apéndice A se incluye su código fuente en C++. En la segunda parte del

    fundamento teórico se explican los principios de la visión estereoscópica y sus

    propiedades geométricas. En la parte final del fundamento teórico se describen

    las clases de algoritmos de apareamiento estereoscópico y los resultados

  • Visión Artificial: Percepción de Profundidad Introducción

    Instituto Tecnológico de Mérida 2004 5

    obtenidos mediante su implementación. EL resto del documento describe el

    método de apareamiento estereoscópico desarrollado, el cual genera mapas de

    disparidad detallados y sin ruido. Seguido de los resultados obtenidos para

    imágenes estereoscópicas reales y sintéticas.

    El método desarrollado permite generar mapas densos de disparidad

    detallados y sin ruido, mediante la modificación varias de técnicas como suma

    de diferencias al cuadrado, ventana de correlación adaptativa, filtros de

    mediana y obtención de disparidades en sub-píxel. La eficacia del algoritmo se

    demuestra por la calidad de los mapas de disparidad obtenidos.

    1.1 Hipótesis.

    Por medio del perfeccionamiento de técnicas de apareamiento estereoscópico,

    como son la correlación con ventana adaptativa y el refinamiento de mapas de

    disparidad, se puede mejorar el detalle obtenido por los métodos actuales de

    apareamiento estereoscópico.

    1.2 Justificación.

    Una de las principales motivaciones para la realización de este trabajo fue la

    necesidad de la comunidad de oceanógrafos de recrear el modelo del suelo

    marino y arrecifes para estudiarlo y obtener medidas precisas a partir de videos

    submarinos, sin embargo, esta no es la única aplicación, las técnicas de

    apareamiento estereoscópico son útiles para la generación de modelos

    tridimensionales, manipulación de objetos con robots, mapas topográficos,

    sistemas de navegación autónoma y otros.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 6

    2. Fundamento Teórico

    Para lograr el objetivo de esta tesis es necesario tener conocimiento básico de las

    técnicas utilizadas en visión por computadora, como la forma de almacenar las

    imágenes para su posterior análisis, los filtros básicos para el tratamiento de

    imágenes y los métodos actuales de apareamiento estereoscópico.

    2.1 Formatos de Imagen

    El estándar para imágenes de colores son palabras de 24 bits, tres palabras juntas

    de ocho bits cada una, las cuales representan los tres colores primarios [2], rojo

    verde y azul (RGB por sus siglas en ingles). De forma que para el negro se tiene la

    ausencia de color y se representa por: 0x00-0x00-0x00, el blanco contiene todas

    las frecuencias y se expresa: 0xFF-0xFF-0xFF, el color rojo puro es: 0xFF-0x00-

    x00, y así para el verde y azul, la combinación de los tres colores puede formar

    una gama de 16,777,216 colores.

    Formalmente se define como el uso las longitudes primarias, 564.16nm para el

    rojo, 526.32nm para el verde y 444,44nm para el azul.

    Existe otro estándar de colores para imágenes digitales, HSL (Hue, Saturation &

    Light) [2] el cual indica el tono de color, su saturación y su brillantes, de igual

    manera son tres palabras cada una con valores del 0 al 255, pero no todos los

    filtros diseñados para estándar RGB responden de la misma manera para HSL.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 7

    RGB HSL Figura 2.1: Diferencia entre los canales de formato RGB y el HSL

    2.2 Almacenamiento

    Para poder manipular una imagen es necesario almacenar los datos en la

    memoria de la computadora; una imagen digital es una matriz enorme en donde

    cada casilla representa un píxel en la imagen y su valor contiene el color del píxel

    correspondiente, por lo que la imagen se almacenara en forma de un arreglo

    bidimensional de las mismas dimensiones de la imagen.

    El primer código en el apéndice A genera un arreglo dinámico bidimensional en el

    cual se almacena la imagen en memoria, las direcciones del arreglo pueden ser

    accesadas de manera aleatoria.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 8

    2.3 Filtros Lineales [2].

    Los filtros para el tratamiento de imágenes

    digitales se basan en la convolución de la

    imagen con un patrón de píxeles llamado

    “Kernel”, máscara o ventana.

    Para los filtros lineales este proceso es un

    sistema lineal e invariante al desplazamiento.

    Invariante al desplazamiento por que el núcleo o máscara se desplaza a través de

    toda la imagen y el resultado de la convolución de la imagen con la máscara

    depende del patrón en la máscara y no de la posición de esta. Sistema lineal por

    que la convolución para la suma de dos imágenes, es la misma que la suma del

    resultado de aplicar la convolución a las dos imágenes independientemente.

    La mayoría de los sistemas lineales de imágenes cumplen tres importantes

    propiedades.

    Superposición: La respuesta a la suma de los estímulos es la suma de la

    respuesta individual de cada estimulo. )()()( gRfRgfR +=+

    Escalamiento: La respuesta a un impulso nulo es cero. Con esto y la

    superposición, tenemos que la respuesta a un estimulo multiplicado por una

    constante es la respuesta del estimulo original multiplicada por la constante:

    )()( fkRkfR =

    El tener la propiedad de superposición y la de escalamiento, lo hace un

    sistema lineal.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 9

    Invariante al desplazamiento: la respuesta a un estimulo desplazado es

    solo el traslado de la respuesta al estimulo. Esto significa que si por

    ejemplo, la vista de una pequeña luz apuntando al centro de la cámara, es

    un pequeño punto brillante, entonces si la luz es movida en la periferia,

    debemos de ver el mismo punto brillante solo desplazado.

    La respuesta de estos sistemas es obtenida por una convolución discreta en dos

    dimensiones y se expresa de la siguiente forma:

    ( ) ( ) ( ) ),(','','),)(( yxhgyxhyyxxgyxhRx y

    ⋅⋅=−−=∑∑ Lo anterior representa la convolución de el núcleo o máscara (h(x,y), respuesta a un

    impulso unitario) y la imagen (estimulo), los dos son arreglos en dos dimensiones,

    que representan la estructura de los píxeles en la imagen.

    2.4 Tratamiento y Mejoramiento de Imagen [3]

    Uno de los primeros pasos en las aplicaciones de visión artificial es mejorar la

    calidad de la imagen obtenida; en las imágenes con poca luz se observa

    generalmente un granulado o ruido que cubre toda la imagen, en algunas

    aplicaciones es útil el resaltar los bordes o las superficies uniformes de los objetos,

    algunas aplicaciones biométricas como el análisis de radiografías o de huellas

    digitales requieren de resaltar ciertas componentes de frecuencia y otras eliminar

    o resaltar colores específicos, también es útil mejorar la iluminación o el contraste

    de la imagen.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 10

    2.4.1 Escala de Grises.

    En ciertas ocasiones es útil pasar una imagen a color (24 bits) a escala de grises

    (8 bits) ya sea solo por estética o por que se requiere trabajar con menos memoria

    utilizando palabras de solo ocho bits en vez de palabras de 24 bits, para agilizar el

    tiempo de procesamiento al realizar operaciones binarias mas cortas. Para lograr

    esto se requiere fusionar los tres canales de colores en uno solo que indique el

    tono de gris de la imagen. Esto se hace promediando los tres valores de cada

    píxel en la imagen original y poniendo el resultado en una imagen de 8 bits de un

    solo canal que indica el nivel de gris de la imagen. En el apéndice A se encuentra

    el código desarrollado para esta función.

    Figura 2.2: Imagen a color (izquierda). Imagen en escala de grises (Derecha)

    2.4.2. Contraste y Brillo.

    Al modificar por igual el valor de cada canal de color en una imagen se aumenta o

    disminuye su luminosidad, al modificar el contraste se separan más los valores de

    colores en la imagen en base a un punto de balance, los valores por debajo del

    punto de balance se toman como obscuros, y los que están sobre el como claros,

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 11

    el contraste hace que los tonos claros tengan mas brillo y las partes obscuras lo

    sean mas.

    El código para contraste y brillo en el apéndice A modifica el brillo y el contraste de

    una imagen de entrada en una imagen destino, con base al los paramentos de

    entrada, contraste, brillo y punto de balance. Se modifica el valor de cada píxel en

    cada canal de color, aumentando o disminuyendo la separación del color al punto

    de balance y aumentando o disminuyendo brillo. El parámetro de contraste se

    introduce en términos de porcentaje y el de brillo es un valor de –255 a +255 que

    determina el valor que se sumara por igual a cada canal de color.

    Figura 2.3: Modificar el brillo y contraste en una imagen es útil cuando se quiere separar del fondo los objetos que se encuentran en la imagen.

    2.4.3 Tolerancia Binaria

    Este filtro convierte la imagen en una imagen binaria, se parte la imagen mediante

    un valor de tolerancia, cualquier valor por debajo del valor de tolerancia es tomado

    como 0 y cualquier por arriba de este es tomado como 255, en el caso de escala

    de grises como negro o blanco y en una imagen a color cada canal de color a cero

    o a 255. EL condigo en C++ para este filtro se encuentra en el apéndice A

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 12

    Figura 2.4: Imagen en escala de grises e Imagen binaria resultante

    Figura 2.5: Imagen RGB e Imagen binarizada resultante en 8 colores.

    2.4.4 Filtros Pasa Bajas (Difuminado - Eliminación de Ruido)

    Generalmente una imagen tiene la propiedad de que el valor de un píxel es similar

    el valor de sus vecinos, aunque la imagen sea afectada por el ruido podemos

    asumir que esta propiedad se mantiene. El ruido puede hacer que haya

    ocasionalmente píxeles faltantes o que un número aleatorio pueda ser añadido al

    valor de los píxeles, para corregir esto se puede sustituir el valor de este píxel por

    el valor promedio de sus píxeles vecinos.

    Para hacer esto se realiza la convolución de una máscara redonda de radio r con

    la imagen haciendo un promedio de los valores dentro del área de la máscara.

    Un mejor modelo para el difuminado, consiste en hacer que la importancia de los

    píxeles que conforman la máscara disminuya conforme se alejan de su centro.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 13

    Este filtro tiene una mejor respuesta, pues si bien un píxel es similar a sus vecinos

    esta similitud disminuye con la distancia. Si se le da a la máscara la forma de una

    campana gaussiana [2], la importancia de los píxeles vecinos para el promedio de

    valores tendrá la forma de esta y mientras mas cerca del centro de la máscara el

    efecto de difuminado será mayor pues el peso de los píxeles vecinos no caerá tan

    rápido con la distancia.

    El código de difuminado en el apéndice A es un filtro que difumina la imagen de

    entrada, mediante la convolución con una máscara de radio igual al parámetro de

    entrada “Kernel” en píxeles y el resultado lo almacena en una imagen destino. Al ir

    desplazando la máscara, se promedia el valor de todos los píxeles en ella y se

    remplaza el valor del píxel central con el promedio de los valores, entre mayor sea

    el radio de la máscara el difuminado será mas intenso, este filtro produce el efecto

    de que en apariencia la cámara esta desenfocada.

    Figura 2.6: Reducción de ruido gaussiano mediante un filtro de difuminado por promedio.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 14

    2.4.5 Filtros Pasa Altas. (Detección de Contornos)

    En una imagen se puede utilizar un filtro de paso alto para resaltar sus bordes,

    pues estos son cambios bruscos de color y corresponden a altas frecuencias en la

    imagen, esto es un método basado en las primeras derivadas. En este método

    primero se miden los cambios de intensidad en todos los puntos de la imagen,

    haciendo uso de la primera derivada, después se seleccionan como puntos de

    bordes aquellos puntos en los que el cambio de intensidad rebasa algún umbral

    preestablecido.

    Una imagen puede representarse matemáticamente por una función f cuyo valor

    en el punto (x, y) representa la iluminación existente en ese punto, el cambio de

    iluminación de un punto en la imagen esta representado gráficamente por la

    pendiente que allí tiene la superficie que representa a f, y normalmente resulta

    diferente según sea la dirección considerada, la dirección en la que el cambio es

    más intenso esta dada por el vector gradiente en ese punto.

    El vector gradiente indica la dirección y magnitud del cambio máximo en la imagen

    y esta dado por la primera derivada:

    ⎥⎥⎥⎥

    ⎢⎢⎢⎢

    ∂∂

    ∂∂

    =⎥⎦

    ⎤⎢⎣

    ⎡=∆

    yI

    xI

    GyGx

    I

    El cálculo del gradiente, por tanto, se basa en obtener las derivadas parciales para

    cada píxel. En la figura 2.7 se pueden ver los operadores de Roberts, Prewitt,

    Sobel y Frei-Chen para determinar las derivadas parciales. El requisito básico de

    un operador de derivación es que la suma de los coeficientes de la máscara sea

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 15

    nula, para que la derivada de una zona uniforme de la imagen sea cero. Como en

    todos los métodos que utilizan máscaras, el procedimiento es realizar el producto

    de los elementos de la máscara por el valor correspondiente a los píxeles de la

    imagen encerrados por la máscara.

    Figura2.7 Operadores de derivación.

    Otro metodo para encontrar los contornos en una imagen es el SUSAN (“Smallest

    Univalue Segment Assimilating Nucleus”) [4], del cual se presenta un desarrollo

    mas a fondo por ser el que genera mejores resultados. En este modelo se hace la

    convolución R(r0) entre la imagen y una máscara circular para asegurar una

    respuesta isotropica, la máscara se centra en cada píxel de la imagen. En cada

    caso se compra cuantos del los píxeles dentro del área de la máscara tiene un

    valor similar, con una tolerancia t, al del píxel central c(r,r0), cada píxel similar se

    marca con un 1 y los otros con un 0. Si el total de píxeles similares al píxeles

    central n(r0) (área USAN) es aproximadamente del 50% (g tolerancia geométrica),

    del área total de la máscara entonces el píxel central se encuentra en un borde

    R(r0), y el píxel central se marca como borde en una nueva imagen, la respuesta a

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 16

    los bordes será mayor si el área USAN es pequeña, este es el principio del

    algoritmo SUSAN:

    ( )( ) ( )( ) ( )⎪⎩

    ⎪⎨⎧

    >−

    ≤−=

    trIrIsi

    trIrIsirrc

    0

    00 0

    1, , ( ) ( )∑=

    rrrcrn 00 , , ( )

    ( )⎩⎨⎧

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 17

    4. Calcule el momento del área USAN para determinar la dirección del los

    bordes.

    La dirección de el contorno se encuentra con la perpendicular a la línea entre el

    centro de gravedad del área USAN y el núcleo de la máscara.

    Figura 2.9: Imagen obtenida después de pasar un filtro SUSAN para la detección bordes.

    El algoritmo SUSAN para la detección de esquinas se pude resumir en los

    siguientes pasos:

    1. Use una máscara circular centrada en cada píxel de la imagen.

    2. Cuente el número de píxeles con intensidad similar al píxel del núcleo.

    3. Reste el área USAN de la tolerancia geométrica para detectar esquinas.

    4. Buscar los falsos positivos calculando cada centroide USAN y sus

    contiguos.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 18

    2.4.6. Filtros Pasa Bandas.

    Los filtros pasa bandas se utilizan para resaltar características en la imagen que

    estén en determinado rango de frecuencias.

    Una de sus aplicaciones es el mejoramiento de imágenes de huellas dactilares, en

    las imágenes de abajo se muestra el mejoramiento de una huella digital por medio

    de un filtro pasa bandas Grabor, este filtro permite resaltar los surcos de la huella

    introduciendo como parámetros del filtro pasa bandas, la orientación y frecuencia

    de estos [6].

    Figura 2.10: La imagen de una huella digital puede ser mejorada mediante un filtro Grabor con la orientación y frecuencia de los surcos.

    Figura 2.11: Imagen original de círculos concéntricos (izquierda), Ruido añadido a la imagen original (Centro). Imagen recuperada mediante el filtro Grabor (Derecha).

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 19

    2.4.7 Histograma

    El histograma proporciona información acerca de la distribución de los canales de

    color en la imagen (rojo, verde y azul). El eje horizontal representa la luminosidad

    de la imagen de negro a blanco (0 a 255) para una imagen en escala de gris y la

    intensidad de cada canal para una imagen a color, el eje vertical indica el numero

    de píxeles en la imagen que contienen el tondo de color indicado en el eje

    horizontal. Cuando hay un muchos píxeles con la misma intensidad, aparecerá un

    pico en la grafica en el valor correspondiente, donde hay pocos píxeles con la

    misma intensidad la grafica estará cercana al eje horizontal. En imágenes

    obscuras, la mayoría de los píxeles están agrupados del lado izquierdo, si la

    imagen es muy clara los píxeles se agrupan a la derecha. Esta información es útil

    para determinar los valores de entrada de los filtros, de esta manera los filtros

    pueden determinar sus valores de entrada de manera autónoma.

    El algoritmo para obtener el histograma es fácil de implementar, solo se requiere

    explorar toda la imagen e incrementar la aparición de cada intensidad de color en

    una variable que contenga 3 vectores, uno por cada canal de color y 255 casillas

    para cada una de las tonalidades en cada canal.

    Figura 2.12: En el histograma (derecha) se observan que los picos corresponden a los colores característicos de la imagen (izquierda).

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 20

    2.5 Percepción de Profundidad

    A través de la visión binocular, somos capaces de interactuar en un mundo

    tridimensional al apreciar las distancias y volúmenes en el entorno que nos rodea.

    Nuestros ojos, debido a su separación, obtienen dos imágenes con pequeñas

    diferencias entre ellas, a lo que denominamos disparidad. Nuestro cerebro

    procesa las diferencias entre ambas imágenes y las interpreta de forma que

    percibimos la sensación de profundidad, lejanía o cercanía de los objetos que nos

    rodean. Este proceso se denomina estereopsis. La distancia interpupilar más

    habitual es de 65 mm, pero puede variar desde los 45 a los 75 mm [7].

    En la estereopsis intervienen diversos mecanismos. Cuando observamos objetos

    muy lejanos, los ejes ópticos de nuestros ojos son paralelos. Cuando observamos

    un objeto cercano, nuestros ojos giran para que los ejes ópticos estén alineados

    sobre él, es decir, converjan. A su vez se produce la acomodación o enfoque para

    ver nítidamente el objeto. Este proceso conjunto se llama fusión. No todo el mundo

    tiene la misma capacidad de fusionar un par de imágenes en una sola

    tridimensional. Alrededor de un 5% de la población tiene problemas de fusión. La

    agudeza estereoscópica es la capacidad de discernir, mediante la estereopsis,

    detalles situados en planos diferentes y a una distancia mínima. Hay una distancia

    límite a partir de la cual no somos capaces de apreciar la separación de planos, y

    que varía de unas persona a otras. Así, la distancia límite a la que dejamos de

    percibir la sensación estereoscópica puede variar desde unos 60 metros hasta

    cientos de metros.

    La figura 2.13 ilustra una situación simplificada en dos dimensiones.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 21

    Figura 2.13: El punto mas cercano es enfocado por los ojos, y se proyecta en el centro de sus retinas, sin disparidad, .Las dos imágenes del punto lejano se desvían de la posición central en diferente cantidad. Si l y r denotan el ángulo (en sentido antihorario) entre los planos de simetría

    vertical de los dos ojos y los dos rayos pasando a través de el mismo punto en la

    escena, entonces denotamos sus disparidades correspondientes como d = r - l y

    por lo tanto como se puede demostrar por trigonometría d = D - F, donde D es el

    ángulo entre estos rayos y F es el ángulo entre los rayos que pasan por el punto

    de enfoque. Los puntos con disparidad cero caen en el círculo Vieth-Muller que

    pasa por el punto enfocado y los centros focales de los ojos. Los puntos que se

    encuentran adentro del círculo tienen una disparidad positiva (o convergente), los

    que están fuera del circulo tienen una disparidad negativa (o divergente), y la

    posición de todos los puntos que tienen una disparidad dada d, forman, d como

    variable, un circulo que pasa a través de los dos centros focales. Esta propiedad

    es claramente suficiente para ordenar por orden de disparidad los puntos que

    están cerca del punto de enfoque,

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 22

    Sin embargo también es claro que los ángulos entre el plano medio vertical de

    simetría de la cabeza y los dos rayos de enfoque se deben conocer para poder

    reconstruí la posición absoluta de los puntos en la escena.

    El caso tridimensional es un poco mas complicado, la posición para los puntos de

    disparidad cero se convierte en una superficie, horopter, pero la conclusión

    general es la misma, una posición absoluta requiere de los ángulos.

    Como fue demostrado por A Wundt y Helmholtz [8] hay evidencia clara de que

    estos ángulos no pueden ser evaluados con precisión por nuestro sistema

    nervioso. Por lo tanto se puede argumentar razonablemente que la salida del

    esteropsis humana consiste en un mapa de profundidad relativa. Transmitiendo un

    orden parcial de profundidad ente los puntos [9]. En este contexto el papel

    principal de el movimiento de los ojos en la estereopsis es poder traer las

    imágenes dentro del área de fusión, un disco pequeño en el centro de la retina

    donde la fusion puede ocurrir [9] (se pueden percibir puntos para disparidades

    mucho mas grandes pero aparecerán como imágenes dobles, un fenómeno

    conocido como diplopía).

    Un factor que interviene directamente en la estereopsis es la separación

    interocular. A mayor separación entre los ojos, mayor es la distancia a la que

    apreciamos el efecto de relieve. Esto se aplica por ejemplo en los prismáticos, en

    los que, mediante prismas, se consigue una separación interocular efectiva mayor

    que la normal, con lo que se consigue apreciar en relieve objetos distantes que en

    condiciones normales no seríamos capaces de separar del entorno. También se

    aplica en la fotografía aérea, en la que se obtienen pares estereoscópicos con

    separaciones de cientos de metros y en los que es posible apreciar claramente el

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 23

    relieve del terreno, lo que con la visión normal y desde gran altura sería imposible.

    El efecto obtenido con una separación interocular mayor que la habitual es el de

    que los objetos parecen más pequeños de lo normal (liliputismo), y la técnica se

    denomina hiperestereoscopia.

    El efecto contrario se consigue con la hipoestereoscopia, es decir, con la

    reducción de la distancia interocular, imprescindible para obtener imágenes

    estereoscópicas de pequeños objetos (macrofotografías), o incluso obtenidas por

    medio de microscopios

    2.5.1 Geometría epipolar [2]

    La geometría epipolar describe las relaciones geométricas de las imágenes

    formadas en dos o más cámaras enfocadas en un mismo punto o polo.

    Los elementos más importantes de este sistema geométrico (figura 2.14) son: El

    plano epipolar, formado por el polo (P) y los dos centros ópticos (O y O’) de dos

    cámaras. Los epipolos (e y e’) que son la imagen virtual del centro óptico (O’ y O)

    de una cámara en otra. La línea base, la cual une los dos centros ópticos. Y las

    líneas epipolares (l y l’), formadas por las intersecciónes del plano epipolar con los

    planos de las imagenes (Π y Π’), esta une el epipolo con la imagen del punto

    observado (p, p’).

    La línea epipolar es fundamental en la visión estereoscópica, pues una de las

    partes mas difíciles en el análisis estereoscópico es establecer la correspondencia

    entre dos imágenes, apareamiento estero, decidiendo que punto en la imagen

    derecha corresponde a cual en la izquierda.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 24

    La restricción epipolar :(figura 2.15) “Si p y p’ son imágenes del mismo punto P,

    entonces p’ debe encontrarse en la línea epipolar l’ asociada con p”, nos permite

    reducir la búsqueda de la correspondencia estereoscópica, de dos dimensiones

    (toda la imagen) a una búsqueda en una dimensión sobre la línea epipolar.

    Figura 2.14. Geometría epipolar, el punto P, los centros ópticos O y O’, las dos imágenes p y p’ de P, todos se encuentran sobre el mismo plano [2].

    Figura 2.15. Restricción epipolar: el conjunto de posibles apareamientos para el punto p se restringe a estar sobre la línea epipolar l’ [2].

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 25

    2.5.2 Rectificación de Imágenes.

    Una forma de simplificar aun más los cálculos asociados con los algoritmos

    estereoscópicos es rectificar las imágenes, esto consiste en remplazar las

    imágenes por sus proyecciones equivalentes sobre un plano común paralelo a la

    línea base (Figura 2.16).

    Se proyecta la imagen, eligiendo un apropiado sistema de coordenadas, las líneas

    epipolares rectificadas son paralelas a la línea base y se convierten en una sola

    línea de exploración.

    Existen dos grados de libertad involucrados en la selección del plano de

    rectificación [10]:

    (1) La distancia entre el plano y la línea base, este es irrelevante pues al

    modificarlo solo se cambia la escala de las imágenes rectificadas, su

    efecto se balancea fácilmente haciendo un escalamiento inverso.

    (2) La dirección del plano rectificado normal en el plano perpendicular a la

    línea base, la elección natural incluye escoger un plano paralelo a la línea

    donde las dos retinas originales se intersectan y minimizar la distorsión

    asociada con el proceso de proyección

    Para el caso de las imágenes rectificadas (figura 2.17) dados dos puntos p y p’

    localizados en la misma línea de exploración de la imagen izquierda y derecha,

    con coordenadas (u, v) y (u’, v’), la disparidad es dada como la diferencia d = u’-u.

    Si B es la distancia entre los centros ópticos, también llamada línea base, es fácil

    demostrar que la profundidad de P es dBz /−= [2].

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 26

    Figura 2.16: Un Par de imágenes rectificadas: los dos planos de la imagen Π y Π’ son proyectados en un plano común 'Π=Π paralelo a la línea base. Las líneas epipolares l y l’ asociadas con los puntos p y p’ en las dos imágenes tiene la línea epipolar común 'll = también paralela a la línea base y pasa a través de los puntos p y 'p [2].

    Figura 2.17: Triangulación para imágenes rectificadas: los rayos asociados con dos puntos p y p’ en la misma línea de exploración se intersectan en el punto P. La profundidad de P relativa al sistema de coordenadas de la cámara izquierda es inversamente proporcional a la disparidad d = u-u’ [2].

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 27

    2.6 Algoritmos de Apareamiento Estereoscopio.

    Los algoritmos de apareamiento estereoscópico reproducen el proceso de

    estereopsis humana para que una maquina pueda percibir la profundidad de cada

    punto en la escena observada y así poder manipular objetos, evitarlos o recrear

    modelos tridimensionales.

    Para un par de imágenes estereoscópicas la meta principal de estos algoritmos es

    encontrar para cada píxel en una imagen su correspondiente en la otra imagen

    (apareamiento) con el fin de obtener un mapa de disparidad que contienga la

    diferencia de posición para cada píxel entre las dos imágenes la cual es

    proporcional a la profundidad. Para conocer la profundidad real de la escena es

    necesario conocer la geometría de sistema estereoscópico en el cual feron

    tomadas las imágenes, para obtener un mapa de profundidad métrico

    Principalmente existen dos tipos de algoritmo de apareamiento estereoscópico:

    Basados en características: Encuentran los apareamientos solo de las

    principales características en la imagen como contornos de los objetos.

    Requieren mucho menos tiempo de proceso pues al solo utilizar algunas

    características de la imagen la información de entrada es menor.

    Tienen la desventaja de que no pueden encontrar las profundidades que

    cambian suavemente y producen mapas de disparidad dispersos.

    Por correlación: Producen mapas densos de disparidad, en los cuales se

    encuentra la disparidad para cada píxel en la imagen.

    Como aparear un solo píxel es casi imposible, cada píxel es representado

    por una pequeña región que lo contiene, llamada ventana de correlación,

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 28

    realizando asi la correlación entre la ventana de una imagen y de otra

    utilizando el color de los píxeles dentro de ellas.

    Uno de los métodos basados en contornos titulado: “Stereo by intra and Inter-

    Sacanline Search Using Dinamic Programing” [11] fue el primero analizado e

    implementado para la realización de este trabajo de investigación

    En el se presenta un algoritmo de apareamiento estereoscópico usando la técnica

    de programación dinámica. La búsqueda de correspondencia que se realiza dentro

    de líneas de exploración “intra-scanline” es tratada como el problema de encontrar

    un camino de apareo en un espacio de búsqueda de dos dimensiones, cuyos ejes

    son las líneas de exploración derecha e izquierda, los contornos conectados

    verticalmente en la imagen proveen la restricción de consistencia a través de los

    planos de búsqueda. La búsqueda entre líneas de exploración “Inter-scanline” en

    un espacio tridimensional (el cual es una pila de todos los planos de búsqueda) es

    necesaria para utilizar esta restricción. El algoritmo usa intervalos delimitados por

    contornos como los elementos a ser apareados, y utiliza las dos búsquedas antes

    mencionadas: una es entre líneas de exploración “Inter-scanline” para posibles

    correspondencias entre contornos conectados en la imagen derecha e izquierda y

    la otra dentro de la línea de exploración “intra-scanline” para correspondencias de

    intervalos delimitados por contornos en cada par de líneas de exploración. Se

    utiliza la programación dinámica para ambas búsquedas, las cuales proceden

    simultáneamente: la primera provee la restricción de consistencia para la siguiente

    mientras esta provee el puntaje de apareamiento para la inicial. Una medición de

    similitud entre los intervalos es usada para obtener el puntaje.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 29

    El método genera un mapa de disparidad disperso y obtiene la información faltante

    interpolando la profundidad de los contornos encontrados. Es muy susceptible al

    ruido en la imagen y el mapa obtenido presenta muchos saltos que aparecen

    como líneas horizontales de disparidad continua.

    El resultado para un par de imágenes sintéticas mediante la implementación del

    algoritmo de programación dinámica se muestra a continuación.

    Figura 2.18: Mapa de disparidad (derecha) resultado de la implementación del algoritmo [11], para un par de imágenes estereoscópicas sintéticas (izquierda).

    Otro método Analizado “Maximum Likelihood Stereo Algorithm” [12] también

    basado en programación dinámica genera un mapa de disparidad denso mediante

    el mismo principio realizando la comprobación para cada píxel en lugar de para

    cada segmento entre contornos [12], sin embargo aunque obtiene un mejor

    resultado que el anterior basado en contornos al poder encontrar las disparidades

    que cambian suavemente entre los contornos de un objeto, genera los mismos

    errores en forma de líneas horizontales de disparidad continua.

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 30

    Figura 2.19: Mapa de disparidad obtenido para el par de imágenes estereoscópicas del pentágono mediante “Maximum Likelihood Stereo Algorithm” [12]

    Figura 2.20: Mapa de disparidad obtenido mediante “A Cooperative Algorithm For Stereo, Matching And Occlusion Detection” [13](izquierda). Mapa de disparidad obtenido por “Fast Stereo Vision for Mobile Robots by Global Minima of Cost Functions” [14] (drecha)

    Algunos métodos basados en correlación utilizan un paso complementario de

    refinamiento para todos los valores obtenidos por las correlaciones evaluadas,

    para reducir el tiempo de proceso utilizan una ventana de comparación pequeña y

    después mejoran el resultado [13] [14]. La figura 2.19 y 2.20 muestra los

    resultados obtenidos para el par de imágenes estereoscópicas del pentágono las

    cuales son muy utilizadas para comparar resultados entre los métodos de

    apareamiento estereoscópico. La imagen de la figura 2.20 izquierda presenta el

    resultado obtenido por Kanade en [13] mediante un algoritmo para obtener mapas

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 31

    de disparidad con las oclusiones detectadas explícitamente. Para producir un

    mapa suave y detallado, Kanade adopta dos supuestos propuestos originalmente

    por Marr y Poggio: unicidad y continuidad. Esto es, el mapa de disparidad tiene un

    valor único para cada píxel y es continuo casi en cualquier lado. Estos supuestos

    se cumplen dentro de un arreglo tridimensional de valores de apareo en el espacio

    de disparidad. Cada valor de disparidad corresponde a un píxel en una imagen y

    su disparidad relativa a la otra imagen. Un algoritmo iterativo actualiza los valores

    de apareamiento con una cobertura difusa entre los valores vecinos e inhibiendo

    otros a través de líneas de vista similares. Aplicando este supuesto de unicidad,

    las regiones ocluidas pueden ser identificadas explícitamente. Para demostrar la

    eficiencia del algoritmo, Kanade presenta los resultados del procesamiento para

    pares de imágenes sintéticas y reales.

    EL mapa de disparidad de la figura 2.20 izquierda se obtiene después de una gran

    cantidad de iteraciones del algoritmo, en cada una de las cuales se pierden

    detalles de la imagen para obtener un mapa de disparidad suave y con las

    oclusiones marcadas.

    De manera similar el mapa de disparidad (Figura 2.20 derecha) obtenido por: “Fast

    Stereo Vision for Mobile Robots by Global Minima of Cost Functions” [14] obtiene

    un mapa de disparidad suave pero sin detalle mediante un algoritmo para

    computar mapas de disparidad de un par de imágenes minimizando la función de

    costo global. El método consiste de dos pasos: primero se realiza una correlación

    tradicional basada en la medición de similitud. Entonces el segundo paso toma

    lugar para eliminar posibles ambigüedades, este es descrito como un método de

    optimización de costos, tomando en cuenta la restricción de continuidad

  • Visión Artificial: Percepción de Profundidad Fundamento Teórico.

    Instituto Tecnológico de Mérida 2004 32

    estereoscópica y las consideraciones de similitud del píxel. La descripción

    garantiza la existencia de un mínimo único de la función de costos el cual puede

    ser encontrado fácil y rápidamente por procedimientos comunes.

    La dificultad en los métodos por correlación esta en la selección del tamaño de la

    ventan, pues esta debe ser lo suficientemente grande para contener la cantidad

    suficiente de variación de intensidad y los suficientemente pequeña para evitar los

    efectos de la distorsión proyectiva [15]. El mapa de disparidad obtenido por un

    algoritmo estereoscópico debe ser detallado y sin errores, aunque esto es difícil de

    lograr pues los que logran evitar los errores tienden perder detalle y aquellos que

    conservan detalle tienden a ser ruidosos.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 33

    3. Procedimiento: Algoritmo de Apareamiento Estereoscópico

    En esta sección se describe los pasos del método de apareamiento estereoscopio

    desarrollado, el cual obtiene un mapa de disparidad denso y detallado en sub-píxel

    a partir de un par de imágenes rectificadas.

    3.1. Introducción:

    Mediante un algoritmo de apareamiento estereoscopio se determina el conjunto de

    correspondencias correctas entre al menos dos imágenes estereoscópicas con el

    fin de encontrar la profundidad de la escena en base a las diferencias de posición

    entre un conjunto de correspondencias.

    La geometría epipolar del sistema estereoscópico limita la búsqueda de

    correspondencia a solo una dimensión. Mediante la restricción epipolar la

    correspondencia para un píxel en una imagen se encontrara sobre la línea

    epipolar de la otra imagen, esta búsqueda se simplifica aun más si se rectifican las

    imágenes, transformando así la línea epipolar en una línea de exploración

    horizontal común a las dos imágenes.

    La comparación para cada píxel de una imagen se realiza utilizando todos los

    píxeles alrededor de este que estén dentro de una ventana de correlación

    mediante alguna función de similitud como la suma de diferencias al cuadrado

    SSD, la correlación cruzada NCC o la suma de las diferencias absolutas SAD. En

    el presente algoritmo el diámetro de la ventana de comparación es variable, crece

    hasta contener la suficiente variación de textura con la cual la comparación pueda

    encontrar una buena correspondencia, esto otorga un balance entre detalle y

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 34

    error, el cual es uno de los problemas principales en los mapas de disparidad

    densos, pues los algoritmos que encuentran un mapa suave, sin errores que

    generen saltos bruscos de disparidad, tienden a perder detalle y aquellos que

    obtienen un mapa detallado tienden a ser ruidosos. La búsqueda de

    correspondencia se realiza sobre la línea de exploración dentro de un rango de

    disparidad establecido, como las imágenes se encuentran rectificadas esta es una

    línea horizontal común a las dos imágenes. El mejor valor obtenido por la función

    de similitud determina a que distancia o disparidad horizontal, se encuentra el

    píxel analizado, respecto a la posición de su correspondiente en la otra imagen.

    Con cada apareamiento se crea un mapa de disparidad el cual indica para cada

    píxel la diferencia de posición a la que se encuentra su correspondencia en la otra

    imagen. En cada imagen existirán detalles que no se encuentran en la otra pues

    se encuentran ocluidos. Las oclusiones se determinan mediante un umbral en los

    costos de oclusión obtenidos por la función de similitud.

    El valor de disparidad de cada píxel se mejora encontrando le valor mínimo de la

    función de segundo grado descrita por los valores de apareo cercanos al valor

    mínimo encontrado, así se obtiene un mapa de disparidad en sub-píxel, donde

    existe una gama mas amplia de disparidades utilizando fracciones de píxel.

    Para encontrar la profundidad real de la escena es necesario conocer las

    propiedades geométricas del sistema y así transformar las disparidades en

    unidades de longitud.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 35

    3.2. Algoritmo

    La entrada del algoritmo estereoscopio son dos imágenes rectificadas, derecha e

    izquierda (Figura 3.1), las cuales se comparan una a otra para obtener un arreglo

    tridimensional (volumen de disparidad) el cual almacena el costo de apareamiento

    para cada disparidad en cada píxel respecto a una imagen. Con los valores

    mínimos de apareamiento se obtienen un mapa de disparidad denso, en base al

    cual se encuentran las disparidades en sub-pixel mediante la función de segundo

    grado descrita por los costos almacenados en el volumen de disparidad, y final

    mente los errores en el mapa de disparidad en sub-pixel se eliminan utilizando un

    filtro de mediana condicional.

    Los pasos del algoritmo son los siguientes:

    1) Cálculo de costos de apareamiento. Para cada píxel de la imagen:

    a. Selección del tamaño de ventana.

    b. Para cada valor en el rango de disparidad, se obtiene el costo de

    apareamiento.

    c. Cada costo calculado se almacena en el volumen de disparidad

    2) Obtención del mapa de disparidad

    a. A cada elemento (x, y) del mapa de disparidad se le asigna el valor d

    del volumen de disparidad para el cual el costo de apareamiento en

    (x, y, d) es mínimo.

    3) Determinación de oclusiones. Para cada valor (x, y) del mapa de

    disparidad:

    a. Si el valor de costo de oclusión (x, y, d) en el volumen de disparidad

    es mayor a un umbral marcar elemento como ocluido.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 36

    b. Generar mapa de oclusiones

    4) Refinamiento a sub-píxel. Para cada elemento del mapa de disparidad se

    encuentra su valor en sub-píxel:

    a. Obtener los coeficientes de la función de segundo grado descrita por

    los valores próximos a la disparidad mínima d, (x, y, d-n) a (x, y, d+n)

    b. Obtener el valor mínimo de la función de segundo grado.

    c. Actualizar el mapa de disparidad.

    5) Eliminación de errores por filtro de mediana condicional. Para cada

    elemento (x, y) del mapa de disparidad:

    a. Aplicar una mascara de N x N centrada en el elemento actual del

    mapa de disparidad.

    b. Obtener la mediana de las disparidades dentro de la mascara.

    c. Si la diferencia del valor mediano y el valor de la disparidad original

    (x, y) es mayor a un umbral, remplazar el valor con el valor mediano,

    si no conservar el valor (x, y).

    Figura 3.1: Par de imágenes estereoscópicas rectificadas.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 37

    3.2.1 Apareamiento

    La diferencia de posición de cada característica en una imagen respecto a la otra

    es proporcional a su profundidad. La meta del algoritmo es encontrar para cada

    píxel de una imagen su correspondiente en la otra imagen, ya que las imágenes

    de entrada se encuentran rectificadas, esto es son coplanares, el punto

    correspondiente a (x, y) se encontrara sobre la misma línea y a una distancia o

    disparidad horizontal d en el punto (x+d, y) de la otra imagen [2]. Para encontrar la

    correspondencia de una imagen respecto a la otra, utilizamos una ventana circular

    de área Φ píxeles, centrada en la imagen de interés en (x, y) [16] y otra de igual

    área en la segunda imagen cuyo centro será desplazado sobre la línea de

    exploración, línea que comparten las dos imágenes sobre la cual se busca la

    correspondencia, dentro de un rango de disparidad (x-D, y) a (x+D, y) (Figura 3.2).

    Para determinar cual punto dentro del rango de disparidad es el apareamiento

    correcto se utiliza la sumatoria de las diferencias al cuadrado SSD [12, 13, 15,

    17,18] como función de similitud para comparar las dos ventanas, pues a

    diferencia de la sumatoria de diferencias absolutas SAD, otorga un mayor costo a

    los errores grandes. Cada píxel de la primera ventana se sustrae de su

    correspondiente en la otra y la diferencia se eleva al cuadrado, la suma de todos

    estos valores determina la similitud o costo de apareamiento entre las dos

    ventanas, o que tan parecida es la característica de interés en una imagen con la

    evaluada en la segunda imagen, entre menor sea el valor SSD mayor será la

    similitud entre las dos ventanas.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 38

    ( ) ( )( )∑Φ∈

    +−=),(

    221 ,,

    yxydxIyxISSD

    El área de la venta Φ, la cual es el numero de píxeles dentro de ella, deberá

    contener la suficiente información para realizar un buen apareamiento [14, 17], si

    la ventana es pequeña, no contendrá la suficiente información en áreas de baja

    textura, pues no existirá referencia para la comparación, y si es muy grande se

    perderán los detalles debido a que el numero de píxeles correspondientes a el

    detalle analizado será mucho menor que el resto que se encuentran dentro de la

    ventana y su valor se prendera dentro de la sumatoria. Por lo que el tamaño de la

    ventana deberá variar en proporción a la cantidad local de textura, variación en el

    tono de color, (Figura 3.2). Por lo tanto antes de realizar la comparación entre las

    dos ventanas se deberá ajustar el tamaño de estas.

    ( )∑Φ∈

    −Φ

    =∝Φ),(

    2),(1yx

    myxIσ

    El radio de la ventana se incrementara en un píxel hasta que la desviación

    estándar de las tonalidades en los píxeles dentro de esta sea mayor a un umbral

    ThΦ, el cual es establecido experimentalmente. En la Figura 3.4 la tonalidad indica

    el radio de la ventana utilizado para cada píxel, en donde los tonos obscuros

    corresponden a ventanas pequeñas y los claros a ventanas grandes.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 39

    Figura 3.2: Dos imágenes estereoscópicas, derecha e izquierda, son comparadas por medio de dos ventanas, la primera centrada en el punto de interés de la primera imagen y la segunda se desplaza dentro de un rango de disparidad sobre la línea de exploración de la segunda imagen obteniendo el valor de la comparación SSD dentro de las dos ventanas para cada valor del rango de disparidad. El diámetro de la ventana de correlación varia dependiendo de la cantidad de textura local contenida en ella.

    Como el tamaño de cada ventana es diferente para cada píxel, en ventanas de

    diferente área los valores SSD encontrados no estarán en la misma escala, por lo

    que utilizaremos el promedio de las diferencias al cuadrado como función de

    similitud para que independientemente del tamaño de la ventana, el costo obtenido

    este en la misma escala para todos los posibles diámetros.

    ( ) ( )( )

    Φ

    +−=

    Φ=

    ∑Φ∈),(

    221 ,,

    yx

    ydxIyxISSDSimil

    Para mejorar el resultado, la contribución de cada píxel a la sumatoria variará de

    forma gaussiana al alejarse del centro de la ventana, de manera que al alejarse

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 40

    del centro el píxel perderá importancia en la sumatoria, pues no tendrá tanta

    similitud con el centro de la mascara.

    2

    22

    22 σπσyx

    ePeso+

    −⋅=

    De manera que nuestra función de similitud es la siguiente:

    ( ) ( ) ( )( )( )∑

    Φ∈

    Φ∈

    +−⋅=

    ),(

    ),(

    221

    ),(

    ,,,

    yx

    yx

    yxPeso

    ydxIyxIyxPesoSimil

    El costo de apareamiento para cada píxel (x, y) con otro a una disparidad d en la

    segunda imagen (x+d, y), se almacena en un arreglo tridimensional de

    dimensiones [X, Y, D] en la posición [x, y, d], donde X es el ancho de la imagen, Y

    su altura y D el rango de disparidad.

    [ ] ),,(,, dyxSimildyxCosto ⇐ Cada valor del arreglo tridimensional (x, y, d) indica el costo de apareamiento del

    píxel (x, y) en la imagen de referencia con el píxel (x+d, y) de la segunda imagen.

    (Figura 3.3).

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 41

    Figura 3.3:.El valor de coso de apareamiento obtenido por la función de similitud para la comparación de la ventana centrada en cada píxel (x, y) de la primera imagen con cada píxel (x+d, y) de la segunda imagen, dentro de el rango de disparidad D, es almacenado en un arreglo tridimensional de dimensiones [X, Y, D] en la posición [x, y, d]. Donde X es el ancho de la imagen, Y su altura, D el rango de disparidad y la escala de colores indica el costo de apareamiento

    3.2.2 Mapa de Disparidad

    Un mapa de disparidad es un arreglo bidimensional con las mismas dimensiones

    que la imagen de referencia, en donde cada localidad indica la distancia horizontal

    en píxeles a la cual se encuentra el mejor apareamiento encontrado en la otra

    imagen para la comparación estereoscópica. Se representa mediante una imagen

    donde la intensidad de tono en cada píxel indica a que distancia horizontal se

    encuentra el píxel correspondiente de una imagen en la otra [2] (Figura 3.7). A

    cada píxel (x, y) en el mapa de disparidad se le asigna el valor de disparidad d, del

    volumen de costos de apareamiento, para el cual el costo de apareo es mínimo en

    la coordenada (x, y, d). De esta manera el mapa de disparidad contendrá el valor

    de disparidad para cada píxel en la cual se encontró el mejor apareamiento.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 42

    Figura 3.4. El tono de gris en cada píxel de la imagen indica el tamaño utilizado para la ventana de comparación (imagen ecualizada).

    Figura 3.5. Mapa de costos de oclusión correspondientes a cada apareamiento utilizado para el mapa de disparidad.

    En la figura 3.6 y 3.7 los niveles de disparidad se indican en escala de grises de

    256 tonos, la disparidad cero esta indicada por el tono medio, d0 = 227, los valores

    por debajo de este corresponden a disparidades negativas y las disparidades

    positivas se indican con tonos mayores a 227.

    127],[ +⇐ dyxDisMap

    Donde d es la disparidad en el punto (x, y) para la cual el costo de apareamiento

    es mínimo.

    Figura 3.6: Mapa de disparidad obtenido con una mascar de diámetro fijo de 7 píxeles

    Figura 3.7: Mapa de disparidad en exactitud de píxel obtenido con mascara de diámetro variable.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 43

    3.2.3 Mapa de Disparidad en Sub-píxel

    En el mapa de disparidad anterior los niveles de disparidad se encuentran

    limitados a valores enteros, lo que ocasiona que los cambios en disparidad no

    sean suaves, se obtenga un mapa tosco y no se aprecien los detalles cuya

    profundidad esta en disparidades intermedias. Como se observa en la figura 3.2 y

    3.3 los valores de los costos de oclusión próximos al valor mínimo describen una

    parábola, el valor mínimo real para esta parábola puede ser encontrado

    aproximando estos valores a una función de segundo grado [19, 20] por medio del

    método de mínimos cuadrados, y hallar los coeficientes del polinomio de segundo

    grado:

    CBdAdSimil ++= 2 De esta manera se obtienen disparidades fraccionarias (sub-píxel).

    El método de mínimos cuadrados es el procedimiento más conveniente para

    determinar la mejor aproximación de un grupo de muestras a un polinomio,

    minimizando el error dado por la suma de los cuadrados de las diferencias entre

    los valores de la curva de aproximación y los valores de los datos. El método de

    mínimos cuadrados proporciona sustancialmente mas peso a un punto que se

    encuentre fuera de la tendencia del resto de los datos, pero no permitirá que tal

    punto domine por completo la aproximación [21].

    Los términos de la ecuación de segundo grado se encuentran resolviendo el

    siguiente sistema de ecuaciones.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 44

    ∑∑∑∑

    ∑∑∑∑

    ∑∑∑∑

    ====

    ====

    ====

    =++

    =++

    =++

    m

    iii

    m

    ii

    m

    ii

    m

    ii

    m

    iii

    m

    ii

    m

    ii

    m

    ii

    m

    iii

    m

    ii

    m

    ii

    m

    ii

    dSimildAdBdC

    dSimildAdBdC

    dSimildAdBdC

    1

    2

    1

    4

    1

    3

    1

    2

    1

    1

    1

    3

    1

    2

    1

    1

    1

    0

    1

    2

    1

    1

    1

    0

    El costo mínimo se encuentra igualando la derivada de la función de costos a cero.

    ABdBAd

    dSimil

    2;020 min −==+⇒=∂

    En el mapa en sub-pixel (Figura 3.8) se puede observar como se redujeron los

    apareamientos erróneos y aparecieron detalles que no eran observables en el

    mapa anterior (Figura 3.7) pues tienen valores de disparidad fraccionaria.

    Figura 3.8: Mapa de disparidad en sub-píxel. Figura 3.9: Mapa de disparidad en sub-píxel,

    obtenido después del filtrado por mediana condicional.

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 45

    3.2.4 Filtro Iterativo de Mediana Condicional.

    Si bien el mapa obtenido por el procedimiento anterior contiene los detalles que se

    encuentran en disparidades fraccionarias (sub-píxel), aun contiene apareamientos

    erróneos los cuales son áreas pequeñas que presentan saltos bruscos de

    disparidad, estos son causados por varios factores, como ruido, oclusiones o

    patrones periódicos.

    Estos saltos erróneos se eliminan utilizando un filtro no lineal sobre el mapa de

    disparidad, el cual encuentra la mediana [22] de todos los valores de disparidad

    dentro de una mascara centrada en el píxel de interés y remplaza su valor por el

    valor mediano si la diferencia entre este y el valor original es mayor a uno. De esta

    manera se eliminan los saltos indeseados de disparidad y se conservan los

    detalles en sub-pixel. El filtro es aplicado cíclicamente hasta que no encuentre

    valor alguno de disparidad que modificar. El mapa de disparidad resultante se

    muestra en la figura 3.9.

    3.2.5 Oclusiones

    En un par de imágenes estereoscópicas existen detalles que se encuentran en

    una imagen pero no en la otra, pues se encuentran ocluidos por objetos cercanos

    debido a la diferencia de perspectiva entre ellas y a los cambios en profundidad. El

    costo de aparear una característica será muy alto si esta se encuentra ocluida en

    la otra imagen, pues no existirá similitud entre ninguno de los apareamientos

    dentro del rango de disparidad D. Para determinar las oclusiones se toman todos

    los puntos del mapa de disparidad cuyo costo de colusión sea mayor a un umbral

    tho [15, 22] y se les marca como ocluidos (Figura 3.10 y 3.11).

  • Visión Artificial: Percepción de Profundidad Procedimiento

    Instituto Tecnológico de Mérida 2004 46

    Figura 3.10: Los costos de apareamiento que son mayores a un umbral tho se marcan como oclusiones en el mapa de disparidad.

    Figura 3.11: Mapa de disparidad en sub-píxel con oclusiones marcadas en negro.

  • Visión Artificial: Percepción de Profundidad Resultados

    Instituto Tecnológico de Mérida 2004 47

    4. Resultados

    Los resultados para la imagen del pentágono, en el primer mapa de disparidad

    (Figura 3.6) muestra la desventaja de utilizar una mascara de diámetro fijo, pues si

    su tamaño es pequeño no podrá encontrar en áreas de baja textura un buen

    apareamiento, produciendo errores en el mapa de disparidad y si su tamaño es

    grande se perderán los detalles cuyo tamaño sea menor que el área de la

    ventana. En el mapa de disparidad de la figura 3.7 se observa el detalle obtenido y

    la reducción de errores al usar una ventana redonda de tamaño variable en

    proporción a la cantidad de textura local, en comparación con la ventana de

    tamaño fijo. Con el Refinamiento en sub-píxel (Figura 3.8) el detalle se incrementa

    considerablemente, dejando ver pequeñas variaciones de profundidad que no

    aparecen en el mapa de disparidad anterior.

    Aunque se obtiene un mapa de disparidad detallado existen aun errores

    indeseables en la imagen ocasionados por oclusiones y malos apareamientos.

    Para eliminarlos se aplica repetidamente el filtro de mediana condicional hasta que

    el filtro no pueda modificar ningún valor, eliminando así la mayoría de los errores

    (Figura 3.9).

    Las oclusiones se determinan por medio de un umbral sobre los costos de

    oclusión de las disparidades utilizadas para el apareamiento correcto (Figura 3.10)

    el cual fue ajustado a un valor de 255, los apareamientos con un costo mayor son

    declarados como ocluidos y se marcan en negro en el mapa de disparidad (Figura

    3.11)

    En la tabla 4.1 se muestra el tiempo proceso requerido para las tres etapas

    principales del algoritmo para las imágenes de prueba: 1) Apareamiento,

  • Visión Artificial: Percepción de Profundidad Resultados

    Instituto Tecnológico de Mérida 2004 48

    almacenamiento en el volumen de disparidad y obtención del mapa de disparidad.

    2) obtención y generación del mapa de disparidad en sub-píxel. 3) Filtro de

    iterativo de mediana condicional. El algoritmo fue implementado en C++ Builder,

    sobre Windows XP, en una computadora Pentium 4 a 2.8 GHz y 512Mb en RAM.

    En la tabla 4.2 se muestran los resultados para cada una de las imágenes sobre

    las cuales fue probado el algoritmo. Se indica el tamaño de la imagen, el rango de

    disparidad utilizado para la búsqueda de apareamientos, el tamaño mínimo,

    máximo, promedio y mediano de la ventana de comparación utilizada, la cual varia

    en cada píxel de la imagen dependiendo de la cantidad de textura existente; El

    rango de costos de los apareamientos utilizados para el mapa de disparidad, el

    numero de niveles mostrados en el mapa de disparidad en exactitud de píxel

    contra el numero del mapa en sub-pixel, el numero de veces que fue aplicado el

    filtro de mediana al mapa de disparidad y finalmente la disparidad máxima y

    mínima mostradas en la imagen.

    Las figuras 4.2 a 4.6 muestran las imágenes utilizadas y los mapas de disparidad

    en píxel y en sub-píxel resultantes junto con la escala de colores utilizada, en la

    cual el blanco corresponde la menor profundidad y el negro a lo que se encuentra

    mas alejado. En el caso de la imagen “Tsukuba”, se muestra el mapa en sub-pixel

    y el mapa de profundidad verdadera proporcionado.

    Para estas pruebas el umbral de textura fue fijado en 20, el de oclusiones en 255,

    el diámetro menor utilizado para la ventana de comparación en 7 pixeles, el

    tamaño de la ventana para el filtro de mediana en 5x5 píxeles y la cantidad de de

    valores tomados para el método de mínimos cuadrados al generar el mapa de

  • Visión Artificial: Percepción de Profundidad Resultados

    Instituto Tecnológico de Mérida 2004 49

    disparad en sub-píxel fue de 5 valores de disparidad dos a la izquierda y dos a la

    derecha de la disparidad de apareamiento. Estos valores fueron calculados

    experimentalmente.

    Imagen Tamaño Volumen y Mapa de

    disparidad (seg)

    Sub-pixe (seg)

    Filtro iterativo de mediana

    Condicional (seg)

    Total (seg)

    Pentágono 512x512 1050.561 4.837 775.065 1830.463

    Random Dot 250x250 12.147 1.152 14.060 27.359

    Coal Mine 240x256 193.268 1.102 22.642 197.012

    CMU Shurub 512x480 6017.333 4.596 562.569 6584.498

    House of 512x512 578.993 4.827 449.667 1033.487

    Tsukuba 384x288 527.759 2.123 237.611 767.493

    Tabla 4.1

    Tabla 4.2

    Imagen Tamaño

    Rango de

    disparidad

    Diámetro de ventana

    Mínimo/Máximo/ Promedio/Media

    na

    Costo de apareamiento Mínimo/Máxim

    o/Mediana

    Niveles de disparidad

    Píxel/Subpixel

    Numero de

    Iteraciones

    Filtro 5x5

    Disparidad Mínima/Má

    xima

    Pentágono 512x512 -20/+20 7 / 251 / 19 / 11 0 / 2047 / 38 41 / 831 81 -18/+12

    Random Dot 250x250 - 20/+20 7/ 7/ 7 / 7 0 / 6655 41 / 1003 38 -17/+16

    Coal Mine 240x256 0/+55 7/ 77 / 21 / 19 0 / 5887 / 5 54 / 743 9 +29/+41

    CMU Shurub 512x480 -20/+20 7 / 231 / 45 / 23 0 / 1023 / 9 41 / 692 88 -14/+13

    House of 512x512 -15/+40 7 / 127 / 13 / 9 0 / 5631 / 42 46/917 70 -13/+27

    Tsukuba 384x288 -5/+30 7 / 127 / 25 / 15 0 / 65535 36 / 939 58 -2/+27

  • Visión Artificial: Percepción de Profundidad Resultados

    Instituto Tecnológico de Mérida 2004 50

    Figura 4.1: Representación tridimensional del mapa de disparidad.

  • Visión Artificial: Percepción de Profundidad Resultados

    Instituto Tecnológico de Mérida 2004 51

    Figura 4.2 Random Dot 250x250.

    Figura 4.3 Coal Mine CMU 240x256.

    Figura 4.4 CMU Shurub 512x480.

    Figura 4.5 House Of 512x512.

    Figura 4.6 Tsukuba 384X288.

  • Visión Artificial: Percepción de Profundidad Conclusiones

    Instituto Tecnológico de Mérida 2004 52

    5. Conclusiones y Trabajos Futuros

    Como se puede observar en los mapas de disparidad resultantes, por medio de

    este tipo de técnicas de apareamiento estereoscópico se pueden obtener mapas

    de disparidad muy detallados y sin ruido.

    Si bien la obtención de un mapa de disparidad denso, mediante este método

    incrementa el tiempo de procesamiento, debido principalmente a que la variación

    de tamaño en la ventana permite diámetros de tamaño considerable, el tiempo de

    proceso se pede reducir limitando el tamaño máximo de la ventana de

    comparación o utilizando un método piramidal en el cual se encuentre las

    disparidades iniciales en una menor resolución de la imagen original y realizar las

    siguientes búsquedas en una resolución mayor y dentro de un rango de disparidad

    limitado por las encontradas en el paso anterior, hasta llegar a la resolución

    original de la imagen. El tiempo del algoritmo también puede reducirse mediante la

    paralelización del algoritmo utilizando lenguajes de descripción hardware para

    implementarlo sobre hardware configurable, utilizando múltiples mascaras que

    exploren las imágenes paralelamente o utilizando tarjetas aceleradoras graficas

    GPU (Graphics Processing Units) las cuales permiten operaciones con matrices

    de gran tamaño [23, 24] en menor tiempo que el CPU. El tiempo total de proceso

    se puede reducir dividiendo el proceso entre el CPU y el GPU o bien entre un

    conjunto de procesadores gráficos trabajando en forma simultanea.

  • Visión Artificial: Percepción de Profundidad Referencias

    Instituto Tecnológico de Mérida 2004 53

    6. Referencias [1] Antonio Criminisi. “Accurate Visual Metrology from Single and Multiple

    Uncalibrated Images”. Robotics Research Group Department of Engineering Science University of Oxford. Michaelmas Term, 1999

    [2] David A. Forsyth, Jean Ponce “Computer Vision: A Modern Approach”.

    Prentice Hall. [3] Rafael C. González y Richard E. Woods, “Digital Image Processing”.

    Addison-Wesley, 1992. [4] Stephen M. Smith, J. Michael Brady. “SUSAN – A New Approach to Low

    Level Image Processing”. Department of Engineering Science, Oxford University, Oxford, UK. Technical Report, FMRIB, 1995.

    [5] Miguel Arias-Estrada, César Torres-Huitzil. “A Real-time FPGA Architecture for Computer Vision”. National Institute for Astrophysics, Optics and Electronics, Computer Science Department. Puebla. Pue., México.

    [6] Raymond Thai. “Fingerprint Image Enhancement and Minutiae Extraction”.

    The University of Western Australia, 2003.

    [7] K. N. Ogle, W.B. “Binocular Vision”. Saunders Co., Philadelphia, 1950. [8] H. von Helmholtz. ”Physiological optics”. Dover, 1909. 1962 edition of the

    English translation of the 1909 German original, first published by the Optical Society of America in 1924.

    [9] B. Julesz. “Foundations of Cyclopean Perception”. The University of

    Chicago Press, London, 1971. [10]. O.D. Faugeras. “Three-dimensional computer vision: a geometric viewpoint”.

    MIT Press, 1993. [11] Ohta and T. Kanade. –“Stereo by intra-an d inter-scanline search”. EEE

    Transaction on Pattern Analysis Machine. Intelligence Vol. PAMI -7 No. 2, March1985.

    [12] Ingemar J. Cox, Sunita L. Hingorani, And Satish B. Rao.“A Maximum

    Likelihood Stereo Algorithm”. NEC Research Institute, Princeton, New Jersey 08540. And Bruce M. Maggsi, School of Computer Science, Carnegie Mellon University, Pittsburgh, Pennsylvania 15213. Computer Vision And Image Understanding, Vol. 63, No. 3, May, pp. 542–567, 1996

  • Visión Artificial: Percepción de Profundidad Referencias

    Instituto Tecnológico de Mérida 2004 54

    [13] C. Lawrence Zitnick And Takeo Kanade. “A Cooperative Algorithm For Stereo, Matching And Occlusion Detection”. Fellow, IEEE, IEEE Transactions On Pattern Analysis And Machine Intelligence, Vol. 22, No. 7, July 2000.

    [14] Roland Brockers, Marcus Hund, Barbel Mertsching. “Fast Stereo Vision for Mobile Robots by Global Minima of Cost Functions”. GET Lab, University of Paderborn, Pohlweg 47-49, 33098 Paderborn, Germany. 0-7803-8387-7/04/$20.00 © 2004 IEEE.

    [15] Kanade, T. Okutomi, M. “A stereo matching algorithm with an adaptive window: theory and experiment”. Sch. of Comput. Sci., Carnegie Mellon Univ., Pittsburgh, PA. IEEE International Conference on robotics and automation. Sacramento California – April 1991.

    [16] Etienne Vincent and Robert Lagani`ere. “Matching Feature Points in Stereo

    Pairs: A Comparative Study of Some Matching Strategies”. School of Information Technology and Engineering, University of Ottawa.

    [17] L. Di Stefano, M. Marchionni, S. Mattoccia, G. Neri. “A Fast Area-Based

    Stereo Matching Algorithm” (2002). [18] Takeo Kanade, Hiroshi Kano, Shigeru Kimura, Atsushi Yoshida, Kazuo Oda.

    “Development of a Video-Rate Stereo Machine”. Robotics Institute, Carnegie Mellon University, 5000 Forbes Ave., Pittsburgh PA 15213. Proceedings of International Robotics and, Systems Conference (IROS’95), August 5-9, 1995, Pittsburgh PA.

    [19] Richard Szeliski and Daniel “Scharstein.Symmetric Sub-Pixel Stereo

    Matching”. In Seventh European Conference on Computer Vision (ECCV 2002), volume 2, pages 525–540, Copenhagen, Denmark, May 2002.

    [20] Maarten Vergauwen, Marc Pollefeys, and Luc Van Gool. “A Stereo Vision System for Support of Planetary Surface Exploration”.

    [21] Richard L.Burden, J. Douglas Faires. “Análisis Numérico”. Grupo Editorial

    Iberoamericana. ISBN 970-625-063-8. [22] Karsten Muhlmann, Dennis Maier, Jurgen Hesser, Reinhard Manner.

    “Calculating Dense Disparity Maps from Color Stereo Images, an Efcient Implementation”. Lehrstuhl fur Informatik V, Universitat Mannheim, B6, 23-29, C, D-68131 Mannheim, Germany

    [23] Ádám Moravánszky “Dense Matrix Algebra on the GPU”. NovodeX AG.

    [email protected]. 2004

  • Visión Artificial: Percepción de Profundidad Referencias

    Instituto Tecnológico de Mérida 2004 55

    [24] K. Fatahalian, J. Sugerman, and P. Hanrahan. “Understanding the Efficiency of GPU Algorithms for Matrix-Matrix Multiplication”. Stanford University. Graphics Hardware (2004) T. Akenine-Möller, M. McCool (Editors).

  • Visión Artificial: Percepción de Profundidad Apéndice A

    Instituto Tecnológico de Mérida 2004 56

    Algoritmos en C++

    //------------------------------------------------------Asignar dimensiones de la Imagen--------------------------------------------------------------- DynamicArray < DynamicArray > SetTableDim(int Width, int Height) { DynamicArray < DynamicArray > Buffer; Buffer.Length = 0; Buffer.Length = Height; for (int i=0; i < Height; i++) { Buffer[i].Length = Width; for (int j=0; j LoadImage(Graphics::TBitmap *Imagen) { DynamicArray < DynamicArray > Buffer; Int Height= Imagen->Height; Int Width= Imagen->Width; Buffer = SetTableDim(Width, Height); RGBTRIPLE * ptr; for(int y = 0; y < Height; y++) { ptr = (RGBTRIPLE*) Imagen->ScanLine[y]; for(int x = 0; x < Width; x++) { Buffer[y][x].rgbtRed = ptr[x].rgbtRed; Buffer[y][x].rgbtGreen = ptr[x].rgbtGreen; Buffer[y][x].rgbtBlue = ptr[x].rgbtBlue; } } return Buffer; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------Escala de Grises ------------------------------------------------------------------------------ void RGBtoGray(DynamicArray < DynamicArray > &Imagen) { int Height = Imagen.Length; int Width = Imagen [0].Length; for(int y = 0; y < Height; y++) { for(int x = 0; x < Width; x++) { byte promedio = (Imagen [y][x].rgbtRed+ Imagen [y][x].rgbtGreen + Imagen [y][x].rgbtBlue) / 3; Imagen [y][x].rgbtRed = promedio; Imagen [y][x].rgbtGreen = promedio; Imagen [y][x].rgbtBlue = promedio; } } } //-------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Visión Artificial: Percepción de Profundidad Apéndice A

    Instituto Tecnológico de Mérida 2004 57

    //------------------------------------------------------------Brillo y Contraste -------------------------------------------------------------------------------void BrightContast(RandomAccessIterator &Imagen, RandomAccessIterator &Destino, int C, int Brillo, int Balance) { int Height = Imagen.Length; int Width = Imagen [0].Length; float Contraste = C/100; for(int y = 0; y < Height; y++) { for(int x = 0; x < Width; x++) { short valR =((Contraste * (Imagen [y][x].rgbtRed - Balance)) + Balance + Brillo); short valG =((Contraste * (Imagen [y][x].rgbtGreen - Balance))+ Balance + Brillo); short valB =((Contraste * (Imagen [y][x].rgbtBlue - Balance))+ Balance + Brillo); Destino[y][x].rgbtRed = (Byte)(valR > 255 ? 255 : (valR < 0 ? 0 : valR)); Destino[y][x].rgbtGreen = (Byte)(valG > 255 ? 255 : (valG < 0 ? 0 : valG)); Destino[y][x].rgbtBlue = (Byte)(valB > 255 ? 255 : (valB < 0 ? 0 : valB)); } } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------- //------------------------------------------------------------------Tolerancia Binaria-------------------------------------------------------------------------- void BinImage(RandomAccessIterator &Imagen, RandomAccessIterator &Destino, int Balance) { Height = Imagen.Length; Width = Imagen [0].Length; for(int y = 0; y < Height; y++) { for(int x = 0; x < Width; x++) { Destino[y][x].rgbtRed = (Byte)( Imagen [y][x].rgbtRed > Balance ? 255 : (Buffer[y][x].rgbtRed < Balance ? 0 : 0)); Destino[y][x].rgbtGreen = (Byte)( Imagen [y][x].rgbtGreen > Balance ? 255 : (Buffer[y][x].rgbtGreen < Balance ? 0 : 0)); Destino[y][x].rgbtBlue = (Byte)( Imagen [y][x].rgbtBlue > Balance ? 255 : (Buffer[y][x].rgbtBlue < Balance ? 0 : 0)); } } } //------------------------------------------------------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------- Difuminado ------------------------------------------------