Seguimiento de Objetos Usando oCam y ODROID-XU4: Una Sencilla Guía Paso a Paso sobre el Seguimiento de Objetos

He pensado que muchas personas estarían interesadas en una guía que fuera fácil de seguir sobre cómo usar una oCam y el ODROID-XU4 para seguir objetos usando OpenCV. Esta guía te guiará por los diferentes pasos para crear y ejecutar una aplicación de seguimiento de objetos. La capacidad de rastrear un objeto específico sobre múltiples fotogramas es una tecnología clave en aplicaciones tales como la vigilancia automática o la robótica. El siguiente código de ejemplo rastreará un objeto utilizando las propiedades del color de la imagen.

Figure 1 - Example screen of object tracking
Figura 1 – Ejemplo de Pantalla con seguimiento de objetos

Configuración

Para empezar, necesitarás los siguientes elementos, todos disponibles en la tienda Hardkernel:

  • ODROID-XU4
  • Módulo de memoria, ya sea eMMC o tarjeta micro SD, con Ubuntu instalado.
  • oCam

Además, necesitaras instalar los siguientes paquetes de software, los cuales de pueden instalar utilizando la aplicación Synaptic Package Manager:

  • gcc
  • wget
  • OpenCV

Figure 2 - Typical configuration of object tracking test set
Figura 2 – Típica configuración del set de prueba de seguimiento de objetos

Para preparar tu sistema, abre una ventana de terminal e introduce los siguientes comandos:

$ sudo apt-get update && apt-get dist-upgrade
$ sudo reboot
Figure 3 - Command input screen on ODROID
Figura 3 - Pantalla de entrada de comandos en ODROID

El primer comando actualizará la lista de paquetes e instalará la actualización más reciente de la distribución, si está disponible. El segundo comando reiniciará el ODROID. Tras actualizar la lista de paquetes y la distribución, instala OpenCV introduciendo el siguiente comando:

$ sudo apt-get install libopencv-dev
Desde el 2 de marzo de 2016, la última versión de OpenCV es la 2.4.9.

Compilación

Nuestro ejemplo está basado en el algoritmo Camshift (Continuous Adaptive Mean Shift), que es un tipo de algoritmo Meanshift y que se utiliza para rastrear objetos. Puedes encontrar más información sobre estos algoritmos en http://bit.ly/1pPduzS. Nuestro ejemplo está basado en el algoritmo Camshift (Continuous Adaptive Mean Shift), que es un tipo de algoritmo Meanshift y que se utiliza para rastrear objetos. Puedes encontrar más información sobre estos algoritmos en http://bit.ly/1pPduzS. En nuestro código, usaremos la función cvCamShift () de la librería OpenCV para habilitar el algoritmo camshift. El siguiente texto proporciona más información sobre la función cvCamShift ():

RotatedRect CamShift(InputArray probImage, Rect& window, TermCriteria criteria)

Parameters:
probImage – Back projection of the object histogram. See calcBackProject().
window – Initial search window.
criteria – Stop criteria for the underlying meanShift().

Returns:
Result rectangle
Para descargar el archivo fuente camshiftdemo, usa el siguiente comando o descarga el archivo desde tu navegador web visitando http://bit.ly/21ykrRF:
$ wget
https://raw.githubusercontent.com/\
Itseez/opencv/2.4/samples/\
cpp/camshiftdemo.cpp
Ahora estamos listos para compilar camshiftdemo.cpp usando el siguiente comando:
$ g++ camshiftdemo.cpp -o demo \
-O2 -lopencv_core -lopencv_imgproc \
-lopencv_highgui -lopencv_video
Aquí tienes los significados de las opciones del compilador:

- o demo crea un archivo binario ejecutable llamado "demo" - O2 especifica un nivel de optimización de 2. Para obtener más información sobre la configuración de la optimización de g++, consulta http://bit.ly/1OOnopO. - l vincula una librería externa, usamos esto para vincular cuatro librerías: openvc_core, open_cv_imgproc, opencv_highgui, and opencv_video.

Ejecutando la aplicación

Una vez que la oCam esté conectada al ODROID-XU4, estamos listos para poner en marcha la demo del seguimiento de objetos usando el siguiente comando:

$ ./demo
La ventana de la Demo de CamShift tiene tres secciones: un panel de barra de control, un panel con la imagen de la cámara y un panel histograma. Usando los 2 controles deslizantes superiores, Vmax y Vmin, puede controlar el rango de valores del color. El control deslizante inferior, Smin, controla el nivel de saturación. Estos controles deslizantes ayudan a limitar el área de la imagen dentro de la cual vas a rastrear un objeto específico. Consulta información detallada sobre el tono, la saturación y el modelo de la gama de colores en http://bit.ly/1L6R7zM. Puede iniciar el seguimiento de objetos cliqueando y arrastrando la parte de la imagen de la cámara que deseas rastrear con el ratón. La Figura 4 muestra la aplicación ejecutándose mientras se ve un área seleccionada de una botella de zumo.

Figure 4 - Drag a part in the image window to start the tracking
Figura 4 - Arrastra una parte de la imagen para iniciar el seguimiento

La ventana del histograma muestra los componentes de color dentro del área de la imagen seleccionada sobre el objeto que se está rastreando. Puede activar y desactivar la ventana del histograma presionando la tecla "h". También puedes cambiar el modo de vista normal para volver a la vista de proyección presionando la tecla "b". Las Figuras 6 y 7 muestran los diferentes modos de vista. Puedes encontrar más detalles sobre la proyección inversa en la página de OpenCV en http://bit.ly/1Rqc1MH.

Figure 5 - The target area being tracked and the histogram of color components
Figura 5 - El área objetivo que se está rastreando y el histograma con los componentes de color

Figure 6 - Back projection view mode
Figura 6 - Modo de vista de proyección inversa

Figure 7 - Control of interested region in which the target object to be tracked
Figura 7 - Control de la región interesada en la que se rastrea el objeto

Para borrar la selección, presione la tecla "c". Puede empezar a seguir un nuevo objeto seleccionando otra área del mismo modo que antes. Echa un vistazo al video disponible en http://bit.ly/21zZllS. Muestra una vista en vivo de la demo de seguimiento de objetos tratada en esta guía usando oCam y ODROID-XU4.

Be the first to comment

Leave a Reply