Práctica

Práctica

En este apartado se presenta al alumno un programa que le permitirá comprobar de forma práctica la importancia de los parámetros indicados durante el tema a la hora de trabajar con una cámara web.

Sin embargo, antes de poder ejecutar el programa, será necesario instalar una serie de librerías. El programa se ha realizado con la librería OpenCV, que es multiplataforma, por lo que el programa debe funcionar sin problemas tanto en linux como en windows. Sin embargo, en el presente texto se comentará sólo como instalar la librería en linux, concretamente en Ubuntu 12.04. Para instalar la librería en windows se recomienda mirar el siguiente enlace.

Práctica: Instalar OpenCV y compilar programa

Para empezar con la práctica, y suponiendo que el alumno tiene instalado el sistema operativo Ubuntu 12.04 en su ordenador, el alumno tendrá que descargar e instalar los siguientes paquetes para poder compilar programas así como para obtener la librería OpenCV:

  • build-essential
  • libcv
  • libcv-dev
  • libcvaux
  • libcvaux-dev
  • libhighgui
  • libhighgui-dev
  • opencv-doc

Para instalarlos, podrá utilizar cualquier programa para instalación de paquetes (synaptic, aptitude) o bien, en consola, escribir el siguiente comando:

sudo apt-get install build-essential libcv libcv-dev libcvaux libcvaux-dev libhighgui libhighgui-dev opencv-doc

Tras esto, y si no se ha obtenido ningún problema durante la instalación, OpenCV estará instalado en el ordenador y listo para usarse. A continuación, el alumno debe descargarse el programa, descomprimirlo y, desde consola (en el directorio de descompresión) compilar el programa tecleando make. Con esto el programa debe estar compilado y listo para su ejecución. Para lanzarlo, teclea en consola camMenu.Test y aparecerá la siguiente ventana:

Como indica el programa, usa los cursores arriba y abajo para moverte por el menu, y pulsa intro para entrar en algún menu o para activar una opción. Como se puede apreciar, los menus coinciden prácticamente con los apartados explicados, que son:

  • Resolución de la imagen. Permite ver la imagen de la cámara en distintas resoluciones.
  • Espacio de color. Permite mostrar la imagen de la cámara en RGB y HSV, mostrando cada uno de sus canales por separado tambien.
  • Distorsión de la lente. Muestra el efecto de la distorsión de la lente de la cámara web.
  • Ajuste de luz. Permite hacer un pequeño ajuste manual de la luminosidad de la imagen.

Práctica: Resolución de la imagen

En esta parte nos centraremos en la opción del menú de resolución. Al seleccionar esa opción en el programa, se obtendrá una pantalla similar a ésta:

 

 

Concretamente, esta pantalla es la que se obtiene cuando se selecciona la operación de 320x240. En este menu se puede modificar la resolución de la imagen capturada por la cámara, además de haber un menú (medir objetos) que permite medir (en el eje “horizontal” de la cámara) la distancia en píxeles de un objeto determinado.

En este apartado se propone al alumno, que se haga la medición de un objeto que esté a una determinada distancia en resolución 160x120. El objeto debe ser pequeño (pocos píxeles) pero no en exceso. Luego se pasará a la resolución de 640x480 y se tratará de medir nuevamente. Lo normal es que en la segunda medición el objeto mida 4 veces más que la primera medición. Sin embargo, debido a la baja resolución de la primera medición, es probable que haya errores (especialmente al determinar el borde del objeto) por lo que la medición a mayor resolución no coincida exactamente con 4 veces la medición a baja resolución.

El objetivo de esta prueba no es otro que mostrar al alumno la dificultad de trabajar a baja resolución y lo fácil que es cometer pequeños errores en la detección de pequeños objetos a resoluciones incorrectas (baja resolución), que podrían trasladarse luego a la aplicación de realidad aumentda produciendo resultados indeseados.

Práctica: Transformaciones del espacio de color

En esta parte nos centraremos en la opción del menú espacio de color. Al seleccionar esta opción en el programa, se obtendrá una pantalla como la siguiente:

Concretamente, esta es la pantalla que se obtiene cuando se selecciona la opción de HSV dentro de Espacio de color. En este apartado tan solo se pretende concienciar al alumno de la existencia de otros espacios de color, aparte del conocido RGB, como el HSV, que normalmente es usado para detección de objetos por color. Concretamente, los sensores de las cámaras suelen capturar las imágenes en formato Bayer (ver imagen) que luego es transformado a formato RGB u otros formatos para su transmisión al ordenador.

Imagen extraida de: http://commons.wikimedia.org/wiki/File:Bayer_pattern_on_sensor.svg?uselang=es subda por: en:User:Cburnett

 

En este menu se permite al alumno poder ver el espacio de color HSV, que a diferencia del RGB que utiliza las componentes rojo (R), verde (G) y azul (B), usa las componentes matiz (Hue), saturación (Saturation) y Value (valor), que se corresponden con:

  • Matiz. Se representa como un grado de ángulo cuyos valores posibles van de 0 a 360° (aunque tambien se puede representar de 0 a 255 en OpenCV). Cada valor corresponde a un color (por ejemplo, el 0 es rojo, el 60 es amarillo y el 120 es verde).
  • Saturacion. La saturación o pureza se representa como la distancia al eje de brillo negro-blanco. Los valores posibles van del 0 al 100% (o del 0 al 255 en OpenCV). Este parámetro indica lo puro que es el color (a mayor valor, más puro, y a menor valor, más decolorado estará).
  • Valor. El valor o luminosidad representa la altura en el eje blanco-negro. Los valores posibles van del 0 al 100% (0 a 255 en OpenCV), siendo 0 el negro y 100 blanco o un color más o menos saturado dependiendo del valor de saturación.

Imagen extraida de: http://commons.wikimedia.org/wiki/File:Triangulo_HSV.png subida por: Samus_

Práctica: Distorsión de la lente

En esta parte nos centraremos en las opciones del menú distorsión. Al seleccionar esta opción en el programa, se obtendrá una pantalla como la siguiente:

Como se puede observar, al ejecutar esta opción se muestra un cuadrado rojo en el borde de la imagen. La tarea del alumno en este apartado será apuntar con la cámara al marco de una puerta, al borde de un armario, a cualquier objeto que sea recto, y comprobar que justo en el borde del cuadro rojo, la línea que debería ser recta, aparece ligeramente distorsionada. En la imagen se puede observar como el armario, que debería ser recto, en el centro de la imagen está casi tocando la línea roja, mientras que en los extremos superior e inferior de la imagen, está más separado de la línea roja que en el centro, observándose la distorsión causada por la lente. Se puede observar que la distorsión no es muy grande, pero no por ello deja de ser importante para ciertas aplicaciones, como se verá posteriormente.

Práctica: Ajuste de la luminosidad

En esta parte nos centraremos en la opción del menú Ajuste de luz. Al seleccionar esta opción en el programa, se obtendrá la captura de la cámara, dando la opción al alumno de realizar un ajuste manual de la luminosidad, aumentándola o disminuyéndola.

La tarea del alumno, en este apartado, consiste en que con la cámara web apunte a una zona muy oscura, y luego a una muy clara, viendo el ajuste de blancos que realiza la cámara al ajustarse de un entorno a otro. Incluso, dependiendo de la calidad de la cámara web, a veces es necesario forzar un cambio de imagen (colocando un objeto muy cerca de forma que se tape la visión de la cámara y luego abriendo la visión de ésta) para que se realice un ajuste de blancos satisfactorio. 

Obra publicada con Licencia Creative Commons Reconocimiento 2.5