jueves, 19 de julio de 2007

Selección de puntos (filtrado)

Después de encontrar los puntos coincidentes, debemos descartar algunos de ellos, que no concuerdan con la orientación, traslación y escala del resto.

Para ello se hace una tabla de 3D en cuyas celdas se meten los puntos coincidentes. Tendrá 3 columnas cuyas variables y subdivisiones correspondientes serán:
  • Orientación: Cada 30º
  • Escala: separaciones de factor 2
  • Posición: Cada 0.25 veces la dimensión máxima del modelo.
Cuando en una de las celdas haya más de 3 puntos, habrá fuertes evidencias de que el objeto (o sus características) se encuentra en ella.
Así se pueden eliminar los puntos que se alejen de esa celda.

Reconstrucción del objeto. Rotación

Objetivo: A partir de las coincidencias encontradas y sus orientaciones, se intentarán reconstruir los márgenes del objeto. Para ello se aplica esta ecuación matricial:
x = [A^TA]^-1b ; x = [ m1 m2 m3 m4 tx ty ]^T

Las matrices de rotación y translación se obtienen a partir de x:
R = [ m1 m2 ; m3 m4 ]

T = [ tx ; ty ]

Y así podemos reconstruir el objeto completo, recurriendo a la ecuación siguiente:
[u ; v ] = R·[x ; y ] + T


Existen problemas en la rotación: No se realiza correctamente!!

jueves, 12 de julio de 2007

Primeros ensayos. Problemas de resolución

Al intentar utilizar el método SIFT con imágenes reales tomadas por una cámara Web, nos encontramos con el problema de la baja resolución de estas cámaras, lo que nos obliga a capturar imágenes desde muy cerca.

Véase este ejemplo en el que intentamos capturar la imagen de un bolso en una escena.

Experimento fallido:


Experimento resultón:

miércoles, 11 de julio de 2007

Problema al ejecutar código C desde matlab (Mediante consola)

Al intentar ejecutar desde matlab, un programa en la consola:

>> ! ../sift box.pgm

Me daba este error:

!../sift box.pgm../sift: /usr/local/matlab7/sys/os/glnx86/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libstdc++.so.6)
../sift: /usr/local/matlab7/sys/os/glnx86/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)

Lo curioso es, que ejecutando este mismo comando directamente en la consola de linux, funcionaba perfectamente.

Parece ser que Matlab trae librerias libstdgcc por si no las tienes en tu máquina, pero si las tienes más actuales hay que hacer que apunten a las tuyas.

perseo:/usr/local/matlab7/sys/os/glnx86# mv libgcc_s.so.1 libgcc_s.so.1_back
perseo:/usr/local/matlab7/sys/os/glnx86# ln -s /lib/libgcc_s.so.1 libgcc_s.so.1



Post Data:

Esta información me puede servir en un futuro.
Origen: http://clunixchit.blogspot.com/2006/12/migration-to-fedora-core-in-progress.html

Warning: Could not access OpenGL library

solution: yum install libXpm-devel mesa-libGL-devel mesa-libGLU-devel

Utilización de SIFT

La primera tarea es la de comparar el algoritmo SIFT de dos fuentes distintas.
  1. Por un lado está el código patentado por su creador.
  2. Por otro un código libre basado en las especificaciones de SIFT, pero que al ser completamente retocable, irá mucho mejor a nuestros intereses. Creado por Andrea Vedaldi de la Universidad de California.

Resultado de la comparación

Código protegido:


1021 keypoints found.
638 keypoints found.
Found 80 matches.

Código libre:


Found 99 matches

Objetivo del proyecto