jueves, 8 de marzo de 2012

Primera aproximación con MATLAB

Antes de iniciar la programación en PIC32, realizamos una primera aproximación a la práctica en MATLAB. El objetivo consiste en determinar los procesos de tratamiento de imagen que será necesario implementar para el reconocimiento de gestos estáticos.

Capturamos una imagen de una mano sobre fondo monocromático negro y otra sobre fondo monocromático blanco. En primer lugar trabajamos sobre fondo negro; cargamos la imagen en una matriz y la pasamos de RGB a escala de grises; lo mismo con el fondo.

Como trabajaremos solamente con dos niveles de color (blanco o negro), debemos fijar un umbral de comparación para distinguirlos. Esto lo hacemos tomando como referencia la imagen de fondo monocromático: calculamos su media y su varianza con funciones de MATLAB, y fijamos el umbral en una combinación lineal de las mismas de la forma umbral=media+A*varianza. En concreto, tras varios ensayos verificamos que se obtenía un resultado bastante bueno para A=8, aunque resulta mucho mejor en A=9.
Todo esto viene implementado en la función de Matlab Extractor.

Apreciamos la aparición de cierto ruido, con lo que implementamos y aplicamos un filtro de mediana que pudiera reducirlo. Para cada valor de la matriz, realizamos un cálculo de la mediana de los valores que le rodean en un cierto área, y le asociamos el mismo. La función de MATLAB que realiza el filtrado tiene como parámetro de entrada el radio a considerar para realizar el filtrado.
El código correspondiente se encuentra en imgproc.


Surgen varios problemas a resolver:
  • el fondo deberá ser monocromático.
  • de momento hemos recortado la imagen manualmente, pero en el futuro será necesario encontrar la mano en la fotografía, centrarla, recortar alrededor de ella.
  • tendremos que escalar la imagen para reducir el número de entradas a la red neuronal.


Enlaces:

Código para la función Extractor.
Código para la función imgproc.
Imágenes usadas como entrada: mano , fondo.

    1 comentario:

    1. el código de Matlab debe estar tambi'en comentado.

      multiplicar por 9 la desviación estándar parece excesivo. quiz'a se deba a usar un fondo artificial en vez de fotografiado? ser'ia m'as robusto usar técnicas no supervisadas basadas en histogramas de grises?

      ResponderEliminar