a. Use una ventana de suavizado simetrica de 3x3, 5x5, 9x9 y 11x11 y muestre los resultados
Resultado:
Codigo:
b. ¿Son parecidos los resultados de suavizar la imagen dos veces con un filtro de 5x5 que suavizandola 1 vez con un filtro de 11x11?.
Ejercicio 2 - Cree una imagen de un solo canal de 200x200. Limpiela y el pixel del medio pongalo en 255 (blanco).
a. Suavize la imagen con un filtro gaussiano de 5x5 y muestre los resultados.
Resultado:
Codigo:
Se puede ver claramente que el pixel blanco comienza a parecerce a sus vecinos. La utilidad principal de un suavizado es eliminar el ruido en la imagenes. Y ese pixel blanco en la mitad de un fondo negro es ruido, ya que es un cambio abrupto en los valores de la imagen.
b. Vuelva a hacerlo con un filtro gaussiano de 9x9.
Resultado:
No creo que sea necesario volver a colocar el mismo codigo y cambiar dos cincos por dos nueves. : )
Como podemos ver entre mas grande sea el nucleo del filtro gaussiano, el ruido es menos perceptible.
Los ejercicios 2.c y el 3 me parecieron que ya no ameritaban hacerlos entonces voy a continuar.
Ejercicio 4 - Use una camara para tomar dos fotos de la misma escena tratando de mover la camara lo menos posible. Cargue esas imagenes y llamela scr1 y src2.
Imagen 1 |
Imagen 2 |
a. Tome el valor absoluto de src1 menos src2 (restar las imagenes); Llame a la diferencia diff12 y muestrela. Si fue hecho perfectamente diff12 sera una imagen negra. ¿Por qué no lo es?
Resultado:
Codigo:
Este codigo no necesita mucho explicación. La diferencia entre las dos imagenes se debe principalmente a los cambios de iluminación y fluctuasiones de la camara al momento de tomar las fotos.
b. Cree cleandiff aplicando cv.Erode y luego cv.Dilate sobre diff12. Muestre el resultado.
Resultado:
Codigo:
Podemos ver como las variaciones fueron casi eliminadas por medio de la erosión y dilatacion de la diferencia
c. Cree dirtydiff aplicando cv.dilate y cv.erode sobre diff12
Resultado:
Codigo:
d. Explique las diferencias entre cleandiff y dirtydiff
Las diferencias son evidentes. Si erosiono primero y despues dilato el ruido tiende a desaparecer. Pero por el contrario si dilato y luego erosiono el ruido se puede ver con mas claridad.
Ejercicio 5 - Tome la foto de una escena. Luego, sin mover la camara, ponga una taza de cafe en la escena y tome otra foto. Cargue esta imagenes y conviertalas en imagenes en escala de grises de 8 bits.
a. Tome el valor absoluto de sus diferencias. Muestre los resultados, el cual deberia parecer como una mascara ruidosa de la taza de cafe.
Imagenes:
Imagen 1 |
Imagen agregando la taza |
Codigo:
Parece que era justo lo que esperaba. El unico problema es que tambien aparece el reflejo de la tasa en la mesa.
b. Haga un umbral binario (binary threshold) a la imagen resultante, usando un nivel que preserve la taza y que elimine el ruido. Muestre el resultado.
Resultado:
Codigo:
El valor de 40 lo obtuve de probar valores y este es el que daba el mejor resultado.
c. Haga un CV_MOP_OPEN sobre la imagen para eliminar aun mas el ruido.
Como se puede ver, la funcion MorphologyEx elimina correctamente el ruido de la imagen. Espero mas adelante encontrar alguna manera de poder distinguir entre la taza real y el reflejo.
Voy a postear solamente estos ejercicios, pero es conveniente realizarlos todos para poder afianzar lo que se halla visto en el capitulo.
Muy bueno viejo!
ResponderEliminar