Bueno Empezamos
Lo primero que tenemos que hacer, es obtener las imágenes que usaremos, en este caso nos apoyamos de opencv para obtener las imágenes que tomamos desde cámara web. Para esto se toman dos frames de la cámara estilo "stop motion", esto significa que tomamos una foto y para la siguiente foto movemos un poco el objeto (carrito en este caso) en una dirección diferente.
Antes
Después
Como apreciamos, en cada imagen el "carrito" se esta moviendo mas hacia a la derecha, esto lo podemos notar ya que la llanta trasera se aprecia y en la anterior no.
Ya teniendo las imágenes, cada una de estas se procesan de la siguiente manera:
Escala de grises
Filtro
Bordes
Binarización
Código del todo el proceso
Ya teniendo la binarización de ambas se saca la diferencia entre estas. Esto significa que si los pixeles son iguales en la nueva imagen nos pintara color negro y en caso de que difiera serán puntos blanco s o lineas blancas quedando de la siguiente manera:
Antes
Después
Diferencia:
Código de esto
Ya teniendo esto, el siguiente proceso a realizar es el calcular la movilidad y mostrarla, lo que se realizo fue una comparación entre la anterior y la imagen diferenciada para quitar pequeños ruido y al final comparar la anterior con esta nueva imagen diferenciada y obtener la dirección en que se moviera los pixeles.
El desplazamiento solo se tomo de izquierda o derecha. Para eso solo se fue aumentando o disminuyendo el valor de la posición del eje horizontal y buscando el pixel mas cercano ya sea a la izquierda o la derecha.
Resultado Final:
Código de esto
Esto es todo
Detección de movimiento desde imágenes, sin clasificar dirección. 6 pts.
ResponderEliminar