2012-07-02 12 views
5

Estoy tratando de escribir una implementación de SIFT, solo como un ejercicio. Sin embargo, estoy teniendo problemas que aún no he podido descifrar. Por lo que puedo ver, lo que obtengo es lo opuesto a SIFT: encuentra áreas planas poco interesantes de la imagen. Estoy usando el VXL.¿Por qué mi implementación de SIFT solo encuentra regiones planas?

De todos modos, mi comprensión de las primeras etapas de cribar son los siguientes:

  1. construir una pirámide Guassian

  2. El uso de esta pirámide, obtener una pirámide diferencia de gaussianas

  3. Encuentre todos los extremos locales para obtener posibles puntos clave

  4. No importa, ya que no entiendo esto lejos.

Tengo un pastebin de mi código, si alguien estaría dispuesto a ayudar, estaría eternamente agradecido. Hasta ahora, this es lo que mi algoritmo escupe, con un píxel magenta en la ubicación de cada "punto clave" detectado.

Finalmente, descargo de responsabilidad estándar, mis disculpas si hice algo mal o violé algunas reglas de conducta.

+0

Lo que es TOL? Parece que sus pruebas en la línea 418, 419 podrían ser incorrectas. –

+0

su pastebin ya no es válido. ¡Pero probablemente necesites tomar el valor absoluto del DoG antes de encontrar los extremos locales! Buena suerte – bendervader

Respuesta

0

Para cualquier persona que tiene este problema: Creo que es porque tienes el mal constante desenfoque. Cometí el error también

BLUR_i+1_oct(j) = BLUR_i_oct(j)*BLUR_STEP_CONSTANT; 
BLUR_0_oct(j+1) = 2*BLUR_0_oct(j); 

por ejemplo sigma = 1,5, falta de definición debe ser:

1 -> 1.5 -> 1.5^2 -> 1.5^3 -> 1.5^4 
2 -> 2*1.5 -> ... 
Cuestiones relacionadas