A fin de limitar el número de neuronas necesarias en la red neuronal, y por lo tanto el número de parámetros que la describen y el espacio necesario para almacenarlos, buscamos obtener una imagen de entrada a la red neuronal de 24x24; es por tanto necesario realizar un escalado de la imagen obtenida de la cámara.
Con imágenes de 24x24, serán necesarias 576 neuronas de entrada; la capa oculta tendrá 50 neuronas y la de salida unas 37. Con esto sería necesario guardar 576x50+50x37=30650 valores de pesos aproximadamente. Si además añadimos sesgos, estos serían 50+37=87.
Para escalar las imágenes nos basamos en algoritmos de box filter. Partimos de imágenes de 96x96 y tenemos que escalarlas dividiendo su dimensión por 4.
Con imágenes de 24x24, serán necesarias 576 neuronas de entrada; la capa oculta tendrá 50 neuronas y la de salida unas 37. Con esto sería necesario guardar 576x50+50x37=30650 valores de pesos aproximadamente. Si además añadimos sesgos, estos serían 50+37=87.
Para escalar las imágenes nos basamos en algoritmos de box filter. Partimos de imágenes de 96x96 y tenemos que escalarlas dividiendo su dimensión por 4.
Realizamos el escalado mediante un proceso similar al filtrado de mediana descrito en la entrada de "Primera aproximación con Matlab". Tomamos parches cuadrados de la imagen de 4x4 y calculamos el valor medio de los mismos; este valor medio lo compararemos con un umbral, el cual inicialmente queda a 0.5, y según sea mayor o menor asignamos al píxel de la imagen escalada el valor 0 o 1.
La función boxfilter de MATLAB puede consultarse a pie de pie de página.
En la función Extractor ya citada en la anterior entrada "Primera aproximación a MATLAB" añadimos por tanto una llamada a la función de escalado modificada, a la que ahora pasaremos un umbral variable. Usaremos como umbral el mismo que valor empleamos para determinar si un píxel es blanco o negro en la función Extractor: umbral=media+A*varianza, con A=9.
Realizamos pruebas con la imagen Lena que resultaron bastante satisfactorias. Este escalado reemplaza hasta un punto el filtrado de mediana anteriormente descrito, pero siguen obteniéndose mejores resultados si se aplica el filtro de mediana y a continuación el escalado. Lo comprobamos empíricamente editando la función de MATLAB Extractor para que dibuje en cuatro ventanas diferentes:
- la imagen obtenida en blanco y negro
- la imagen en blanco y negro, una vez se le pasa el filtro de mediana
- la imagen en blanco y negro, tras pasarle el filtro de mediana y escalarla
- la misma imagen, escalada sin procesamiento previo de filtro de mediana
Las imágenes obtenidas, usando la imagen de prueba Mano ya empleada en la entrada de "Primera aproximación con MATLAB" son:
(clic en las imágenes para ampliarlas)
Función boxfilter.
Función Extractor. Modificada con respecto a la función Extractor de "Primera aproximación en MATLAB".




No hay comentarios:
Publicar un comentario