Cinvestav
Departamento de Computación

Curso: Visión

Prof. Dr. Luis Gerardo de la Fraga
Cuatrimestre Enero-Abril 2014

Este es el contenido del curso.

Apuntes del Curso:

25/03/2014 Apunte sobre las transformaciones necesarias para situar dos cuboides en un mismo sistema de coordenadas.

20/03/2014 El script para maxima que genera la matriz de rotación con la convención R = Rz(theta3)*Ry(theta2)*Rz(theta1).

20/03/2014 Los scripts sobre el modelo de distorsión de la lente que usa Zhang.

11/03/2014 Un script en python que realiza el método de Newton para resolver la ecuación x^3 = cos(x).

25/02/2014 Los scripts para calibrar usando un patrón de círculos concéntricos.

25/02/2014 Los scripts para Perl sobre las series de Taylor visto en clase.

25/02/2014 El programa para justar linealmente una elipse a un conjunto de puntos.

18/02/2014 Un script para gnuplot que grafica una elipse a partir de los cinco parámetros (a, b, Xc, Yc, alfa ).

28/01/2014 Un programa en perl que calcula los tres eigenvalores más pequeños de una matriz simétrica, y el eigenvector correspondiente al eigenvalor más pequeño y mayor que 1e-8.
Este código incluye la descomposicón QR por el algoritmo Gram-Schmidt modificado.
También se resuelve Ax = b usando la descomposición QR.

23/01/2014 Los scripts en maxima para verificar el cálculo de la matriz K del paper de Zhang.

16/01/2014 El ejemplo en Scimagen visto en clase.

Tareas del Curso:

7. Reconstrucción 3D usando cuboides. Entrega: Jueves 10/04/2014

  • Contruir una "ciudad" con los bloques que les dí en clase. Sugiero pegar los bloques sobre papel milimétrico. Debe haber al menos cuatro "edificios".
  • Comparar las transformaciones geométricas obtenidas del modelo 3D de la "ciudad" con las obtenidas a partir de las imágenes.
  • 6. Ajuste total (bundle adjustment) con los datos de Zhang. Entrega: Martes 1/04/2014

  • Con el programa asignado en clase, que realiza el ajuste por mínimos cuadrados no lineal con el método Levenberg-Marquardt, hay que obtener los resultados del paper de Zhang.
  • Los datos de las imágenes usadas por Zhang se encuentran en su páginas personal: http://research.microsoft.com/~zhang
  • 5. Ajuste no lineal de elipses. Entrega: Martes 11/03/2014

    Programar en C el método Gauss-Newton, para realizar el ajuste no lineal de la elipse, según el artículo:
    S.J. Ahn, W. Rauh, and H.J. Warnecke,
    Least squares orthogonal distances fitting of circle, sphere, ellipse, hyperbola, and parabola,
    Pattern Recognition 34 (2001) pp. 2283-2303
    1. La solución inicial (la elipse inicial) será calculada con el método lineal
    2. Reproducir los resultados del artículos usando los datos de las tablas 7 y 12.
    3. Deben usar la descomposición QR para evitar el cálculo de invertir la matriz (J^T.J)
    4. En el código de las conicas, en el archivo "edellipse.c", la función "find_point_in_elipse()", dado un punto x, calcula el punto x' sobre la elipse más cercano a x y perpendicular a la elipse dada.

    4. Calibración usando un patrón de círculos concéntricos. Entrega: Martes 4/03/2014

    1. Generar el patrón
    2. Tomar una fotografía
    3. Extraer los bordes de las elipses (con ImageMagick)
    4. Ajustar las elipses por el método lineal (minimizando la suma de los cuadrados de la distancia algebraica)
    5. El cálculo que hace el script ICP2 realizarlo en C
    6. Visualización. Dibujar un cubo de largo 1, con esquinas de la diagonal principal entre los puntos (-0.5,-0.5,-0.5) y (0.5, 0.5, 0.5). Dibujar también los ejes del sistema de coordenadas global.

    3. Visualización de la reconstrucción. Fecha de entrega: Martes 25/02/2014

  • Tiene que realizarse un programa que use los resultados de la tarea 2 para visualizar la imagen y el modelo sobre de ella.
  • El programa se realizará en Qt y OpenGL.
  • El programa usará las matrices K, R, el vector t, el modelo y la imagen de la tarea 2. Ambos deben coincidir, tal vez se tendrá un error de 1 a 2 pixels.
  • 2. Calibración usando un patrón plano. Fecha de entrega: Martes 11/02/2014

    1. Se debe contruir un patrón con xfig (que permite saber con antelación cual es el tamaño en milimetros de cada cuadro) como el siguiente:

      Puede haber más cuadros en el patrón si así lo desean.
    2. Imprimir el patrón en una impresora láser
    3. Tomar tres fotografías distintas del patrón
    4. Calibrar la cámara usando el modelo básico de la cámara obscura (solo el foco se desconoce) y las distancias del patrón en milímetros.
    5. Calibrar de nuevo pero ahora usando coordenadas arbitrarias para el patrón.
    6. Comparar los resultados anteriores.
    7. El programa debe realizarse en C y deben compararse con los resultados del programa en Octave

    1. Rectificación de imágenes planas. Fecha de entrega: Martes 28/01/2014

    Se debe realizar
    1. Realizar un programa en Octave para estimar la homografía
    2. Rectificar una imagen con planos, puede ser una fotografía de las portadas de varios libros (puestos en diferentes posiciones sobre el escritorio).
    3. Rectificar al menos tres planos.
    4. Presentar los resultados de la rectificación con la interpolación al pixel más cercano y la interpolación bilineal.
    5. Scimagen se encuentra aquí: Scimagen

    Última actualización: 18 de febrero, 2014
    Comentarios: fraga at cs cinvestav mx