Buscar en este blog

martes, 2 de marzo de 2010

Detectando cambios en Imágenes

Detectar cambios en un conjunto de imágenes que corresponden a la misma escena, es a menudo una tarea importante para muchas aplicaciones de robótica móvil donde la detección de obstáculos es llevada a cabo a través de diferentes sensores, entre ellos la cámara digital.

Dentro del Procesamiento de Imágenes, la Aritmética es una forma sencilla de detectar cambios sobre un conjunto de vistas a través de operaciones como la división o la diferencia absoluta entre sus pixeles.

Para ilustrar lo anterior, considérense las siguientes dos imágenes etiquetadas cada una como: Environment Image y Memory Image.





Utilizando OpenCV como herramienta para el procesamiento de imágenes, la división de dos imágenes pixel a pixel puede ser implementada mediante la función:

cvDiv(CvArr* Memory, CvArr* Environment, CvArr* Result);
Donde: Result = Memory / Environment



Después de efectuar la división pixel a pixel, la detección de los cambios en las imágenes es evidente a nivel de datos, sin embargo, visualmente no se aprecia con claridad el resultado (Result cvDiv). Por esta razón, si se multiplica la imagen Result cvDiv por un escalar, en este caso 50, el resultado mejora considerablemente (ver Result cvScale).



La multiplicación de una imagen por un escalar es realizada con la función cvScale() de OpenCV.

En la imagen Result cvScalar se observa que los pixeles cuyo nivel de intensidad es mas alto, es decir, se acerca a 255, corresponden a los objetos que son ajenos a la imagen de Memoria.

Adicionalmente, mediante la Diferencia Absoluta entre dos imágenes también es posible determinar que pixeles cambian de una vista a otra. Para este caso, al calcular la Diferencia Absoluta entre Environment Image y Memory Image, el resultado es el siguiente:



La Diferencia Absoluta entre dos imágenes muestra no solo aquellos objetos que son ajenos a la imagen de Memoria, sino también aquellos que no se encuentran en la imagen de Ambiente.

De esta manera, si se requiere detectar obstáculos a través de imágenes, la división de estas proporciona una primera aproximación al resaltar solo aquellos objetos que son ajenos a la imágen de Memoria.

No hay comentarios: