Download Adquisición de imágenes, calibración y entornos gráficos
Document related concepts
no text concepts found
Transcript
UNIVERSIDAD POLITÉCNICA DE MADRID DEPARTAMENTO DE ELECTRÓNICA, AUTOMÁTICA E INFORMÁTICA INDUSTRIAL Prácticas de Robótica y Visión Artificial Práctica 2 Adquisición de imágenes, calibración y entornos gráficos 2.2 Adquisición, calibración y entornos gráficos 2 ADQUISICIÓN DE IMÁGENES, CALIBRACIÓN Y ENTORNOS GRÁFICOS..........3 2.1 ADQUISICIÓN DE LAS IMÁGENES .......................................................................................3 2.1.1 INSTALAR Y CONFIGURAR LA CÁMARA DE VÍDEO .....................................................4 2.1.2 OBTENER LA INFORMACIÓN DEL DISPOSITIVO DE VÍDEO ..........................................4 2.1.3 CREAR UN OBJETO DE VÍDEO DE ENTRADA ...............................................................5 2.1.4 REALIZAR UN CANAL DE VÍDEO EN LÍNEA (OPTATIVO) .............................................5 2.1.5 CONFIGURAR LAS PROPIEDADES DE ADQUISICIÓN DE LA SEÑAL DE VÍDEO (OPTATIVO) ...............................................................................................................................5 2.1.6 ADQUIRIR LOS DATOS DE LA IMAGEN........................................................................6 2.1.7 LIBERAR LOS RECURSOS ............................................................................................6 2.2 CALIBRACIÓN DE CÁMARAS ..............................................................................................6 2.2.1 EL MODELO PROYECTIVO DE LA FORMACIÓN DE IMÁGENES .....................................7 2.3 CUESTIONES TEÓRICAS ......................................................................................................9 2.4 CUESTIONES PRÁCTICAS ..................................................................................................10 2.5 INTERFAZ CON EL USUARIO MEDIANTE MATLAB ..........................................................11 2.6 EJERCICIO.........................................................................................................................13 Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial Adquisición, calibración y entornos gráficos 2.3 2 Adquisición de imágenes, calibración y entornos gráficos El objetivo de esta práctica consiste en entender las etapas de adquisición de imágenes y de la calibración de las cámaras. En una primera etapa se aprenderá a tomar imágenes desde una cámara de vídeo, indicando las habilidades necesarias para la formación de las imágenes, lo cual incluye el manejo de la óptica hasta la obtención de la imagen en una matriz de datos dentro del computador. La segunda etapa consistirá en calibrar la cámara de vídeo, determinando los parámetros intrínsecos de la cámara y dando paso a poder fijar la geometría espacial referenciada en la cámara. Una vez calibrada la cámara se mostrarán los objetos y se podrá saber a qué distancia se encuentran de ésta. Por último, se presenta cómo diseñar aplicaciones gráficas con Matlab orientado al procesamiento de imágenes. 2.1 Adquisición de las imágenes La primera tarea a realizar es la adquisición de las imágenes capturadas desde una cámara de vídeo. Para este objetivo se empleará “Image Acquisition Toolbox” de Matlab. Las etapas serán: 1. Instalar y configurar la cámara de vídeo en el computador. 2. Obtener la información de identificación del dispositivo dentro del entorno de Matlab. Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial 2.4 Adquisición, calibración y entornos gráficos 3. Crear un objeto de vídeo de entrada. 4. Realizar un canal de vídeo en línea (optativo). 5. Configurar las propiedades de adquisición de la señal de vídeo (optativo). 6. Adquirir los datos de las imágenes. 7. Liberar los recursos. En las siguientes secciones se implementan cada uno de los pasos indicados. 2.1.1 Instalar y configurar la cámara de vídeo Con independencia del tipo de tarjeta de adquisición de vídeo deberá de seguirse las siguientes etapas: 1. Instalación de la tarjeta de adquisición de vídeo. 2. Instalación de los drivers de la tarjeta. 3. Conectar la cámara a la entrada de vídeo de la tarjeta. 4. Verificar que la cámara funciona correctamente mediante alguna aplicación que lo permita. Por ejemplo, NetMeeting permite ver video en línea. En la práctica se emplea la webcam Genius NB. Esta cámara tiene asociado el programa SKIN para visualizar, en línea, la señal de vídeo. Dispositivos genéricos de video, tales como WebCams y cámaras de video, generalmente no requieren grandes esfuerzos de instalación. Básicamente, la conexión al puerto USB o FireWire son suficientes. Después de la configuración de la cámara y el sistema, se inicializará Matlab. No se necesitará ninguna configuración especial en Matlab para soportar las cámaras, siempre y cuando los drivers de las tarjetas de adquisición sean compatibles con esta herramienta de adquisición. Este toolbox es sólo válido para equipos de MATROX, DATA TRANSLATION y video de Windows genérico. 2.1.2 Obtener la información del dispositivo de vídeo Antes de empezar a adquirir las imágenes hay que saber cómo identificar al dispositivo de vídeo. Esta etapa es necesaria para crear el objeto de vídeo. Utilice el comando: >> info = imaqhwinfo Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial Adquisición, calibración y entornos gráficos 2.5 Esta sentencia retornará varios parámetros, pero el más importante es el que indica los tipos de drivers con los que se puede trabajar: InstalledAdaptors. Para mayor información sobre cada uno de ellos indicar su identificador dentro del anterior comando. Por ejemplo, si se tratase de video de Windows genérico: >> info = imaqhwinfo(‘winvideo’) En el campo DeviceIDs y DeviceInfo se puede obtener información detallada de los estándares de vídeo que soporta. >>info.DeviceInfo >> info_dis = imaqhwinfo(‘winvideo’, 1) 2.1.3 Crear un objeto de vídeo de entrada Para trabajar con la cámara de vídeo hay que crear un objeto que controle la cámara, conectando ésta con Matlab: >>vidobj = videoinput(‘winvideo’) >> vidobj Aparecerá un sumario de las características del objeto de vídeo creado, indicando el número de imágenes adquiridas, el tipo de disparo para la adquisición (trigger), el estado del objeto, etc. 2.1.4 Realizar un canal de vídeo en línea (optativo) Antes de empezar a tomar imágenes es necesario ajustar la óptica, el diafragma, el sistema de iluminación, ... Para realizar estas tareas se requiere crear un canal de vídeo en línea, esto es, una ventana que muestre de forma continua la señal de vídeo: >> preview(vidobj); 2.1.5 Configurar las propiedades de adquisición de la señal de vídeo (optativo) Después de haber creado el objeto de vídeo y tener una ventana de vídeo en línea, se puede cambiar algunas características de la adquisición. Una lista de las propiedades de este proceso se puede ver con: >> get(vidobj) Especial atención habría que poner en el tipo de disparo para adquirir las imágenes. Por defecto está definido como inmediato. Sin embargo, se puede hacer manual que Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial 2.6 Adquisición, calibración y entornos gráficos empiece a tomar imágenes después de un retardo, ... Un sin fin de posibilidades que se escapan del ámbito de esta práctica. 2.1.6 Adquirir los datos de la imagen Con la creación y configuración del objeto de video se puede empezar a tomar imágenes. Tres pasos hay que seguir: 1. Inicializar el objeto de vídeo, 2. Configurar el disparo y 3. Convertir los datos en variables de imágenes: >>start(vidobj); >> datos=getdata(vidobj,4); >> imaqmontage (datos); >>stop(vidobj); La variables ‘datos’ contiene las cuatro imágenes adquiridas. Sin embargo, para tomar una sola imagen, el proceso se puede simplificar a: >> imgAdq = getsnapshot(vidobj); >> imshow(imgAdq) En este caso la variable ‘imgAdq’ es una matriz que contiene la información de cada píxel de la imagen adquirida. 2.1.7 Liberar los recursos Una vez acabado de adquirir las imágenes, habrá de liberar los recursos de la memoria asociado a los objetos: >> closepreview(vidobj) >> delete(vidobj) 2.2 Calibración de cámaras El proceso de calibración de imágenes trata de determinar los parámetros intrínsecos de las cámaras, tales como la distancia focal, el centro del plano sensor y la distorsión de la lente para poder posteriormente determinar la geometría de los objetos observados por la cámara. Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial Adquisición, calibración y entornos gráficos 2.7 La forma de actuar consiste en tomar un conjunto de imágenes con la cámara permaneciendo invariante los parámetros intrínsecos de ésta, esto es, no se puede mover el enfoque de la óptica de la cámara ya que afectaría a la distancia focal. Tampoco se puede variar el diagrama, pues el modelo de distorsión se modificaría. A parámetros intrínsecos constantes se adquieren varias imágenes tomando fotos de un objeto patrón. El objeto patrón suele ser un tablero de ajedrez para facilitar la búsqueda de puntos significativos. Estos puntos del espacio son las esquinas de los cuadrados de ajedrez. La idea consiste en localizar los parámetros intrínsecos a través de n-conjunto de ecuaciones que se establece entre los puntos del espacio, la geometría conocida (en este caso, el tamaño de la cuadrícula del ajedrez) y la proyección de estos puntos sobre el elemento sensor que son determinados con precisión subpixel. Una vez fijado los parámetros intrínsecos de la cámara es posible determinar a qué distancia se encuentran los objetos respecto a la cámara. Al vector de traslación junto a la matriz de rotación que relaciona los puntos del espacio con sus proyecciones en el elemento sensor se les llama los parámetros extrínsecos. A continuación se explica el modelo de la cámara, definiendo, de esta manera, los parámetros intrínsecos y extrínsecos de la cámara 2.2.1 El modelo proyectivo de la formación de imágenes El proceso de adquisición de una imagen por el sistema de Visión Artificial se modela en dos pasos: la formación de la imagen en el elemento sensor a través de los elementos ópticos y la digitalización de la señal proveniente de la cámara. Cada uno de estos procesos se puede modelar de distintas formas, más o menos complejas. El modelo pin-hole es el más simple para representar la formación de la imagen. Está basado en la Proyección Perspectiva y reduce el sistema óptico a un punto llamado centro óptico, C. Cada punto del espacio se proyecta por un único rayo luminoso que pasa por el centro óptico, situado a una distancia f (distancia focal), hasta el plano de la imagen. El eje óptico es la línea perpendicular al plano de la imagen que pasa por el centro óptico. Con este modelo y con una secuencia de imágenes adquiridas consecutivamente en el tiempo se trata de obtener la percepción visual de los objetos proyectados en el plano sensor. Para diferenciar las imágenes unas de otras se indexarán los parámetros. Así la proyección de un punto en el espacio Mwi(xwi , ywi , zwi), teniendo el eje de coordenadas sobre el punto focal de la posición indexada i (ver figura 1), se transforma en un punto sobre el plano sensor, estableciéndose la relación no lineal de: Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial 2.8 Adquisición, calibración y entornos gráficos xi x = − wi fi z wi yi y = − wi fi z wi (1) Figura 1. Modelo pin-hole de la cámara siendo xi e yi las coordenadas del punto proyectado. El signo menos refleja el carácter invertido del modelo. Obsérvese que estas proporciones están referenciadas en magnitudes de longitud, generalmente expresada en milímetros. Sin embargo, los algoritmos de extracción de las coordenadas del punto proyectado serán dados en píxeles. Habrá que proponer la conveniente conversión. Para la transformación se requiere conocer el centro del plano sensor Ci (cxi, cyi); estos valores serán dados en píxeles desde el origen de coordenadas de la imagen digitalizada, es decir, la esquina superior izquierda. También es necesario conocer la distancia interpixel de la cámara tanto en filas como en columnas (dx, dy). Hay que destacar que Ci es uno de los parámetros intrínsecos de la cámara, pues el desplazamiento del zoom o el enfoque de las ópticas hará variar este parámetro de una imagen a otra. En cambio, las distancias interpixel se mantendrán al ser un parámetro de fabricación. No obstante, la diferencia entre el número de columnas sensoras de la cámara y la frecuencia de muestreo de la línea modificará el valor interpixel de dy. Además habrá de considerar el efecto de pérdida de sincronismo en la lectura de la línea que suele evaluarse por el factor de incertidumbre, ky. Por tanto, se redefine d’y como: d'y = d y n sy n py k y (2) donde nsy es el número de elementos sensores columna que hay en una cámara y npy es el número de píxeles de la imagen digitalizada. Del planteamiento presentado se deduce que la relación existente entre el punto proyectado sobre el elemento sensor y su valor en píxeles sobre la imagen digitalizada resulta ser: Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial Adquisición, calibración y entornos gráficos 2.9 − xi = ( p xi − c xi )d x − y i = (Pyi − c yi )d ′y (3) teniendo pxi e pyi que son las coordenadas en píxeles de la imagen sobre el punto proyectado en la zona sensible. Esta disposición de los signos hará eliminar el anteriormente mencionado efecto inversor del modelo pin-hole. Insertando las expresiones de la ( 3 ) en la ec. ( 1 ) y presentándolo en coordenadas homogéneas y en notación matricial se tendrá: fi p xi d x p yi = 0 1 0 0 fi d ′y 0 x c xi wi z wi y c yi wi z wi 1 1 ( 4) En ( 4) está implícito el carácter ortogonal de los ejes de proyección. En el caso de que no fuese así, el mapa de píxeles podría generalizarse a: fi p xi d x p yi = 0 1 0 −ρ fi fi dy d ′y 0 c xi x wi z wi y c yi wi z wi 1 1 ( 5) donde ρ es un escalar que mide el desplazamiento rotacional entre los dos ejes principales; si ρ es cero es que éstos son perpendiculares. 2.3 Cuestiones teóricas Para la calibración de la cámara del laboratorio se va a emplear la herramienta “Camera Calibration Toolbox” de Jean-Yves Bouguet (http://www.vision.caltech.edu/bouguetj/calib_doc/index.html). Se pide: 1. Explicar el procedimiento de calibración de la cámara de Bouguet. 2. Describir los parámetros de calibración de la cámara y relacionar los parámetros del modelo de Jean-Yves Bouguet con los dados en el marco teórico. Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial 2.10 Adquisición, calibración y entornos gráficos 3. Comentar las características más importante de la cámara empleada en la práctica, sabiendo que es el modelo GENIUS VideoCAM NB y que el sensor es el TAS5110C1B 100K. 4. Calcular los parámetros intrínsecos iniciales del modelo de Jean-Yves Bouguet, sabiendo que la distancia focal de la óptica es de 3 mm. Considérese que no hay distorsión en la lente y que los ejes de proyección son ortonormales. 2.4 Cuestiones prácticas La primera parte se dedicará a la adquisición de las imágenes: 1. Abrir la aplicación SKIN y modificar los parámetros de adquisición, tales como contraste, brillo, etc. 2. Iniciar una sesión de Matlab y adquirir varias imágenes, tal cual se ha comentado en el apartado 2.1. En la segunda parte se realizará la calibración de la cámara. Siga el siguiente procedimiento: 1. Adquirir cuatro imágenes del objeto patrón en diferentes posiciones respecto a la cámara. Se tomarán a una distancia de 500, 700, 900 y 1100 milímetros respecto a la cámara, intentando que sea lo más perpendicular posible entre el eje óptico y el plano del patrón. Guardar la información de luminancia en formato JPG. Depositar las imágenes en una carpeta vacía. Utilícese “Image Acquisition Toolbox” para la captura de las imágenes y empleé las funciones rgb2gray y imwrite de “Image Processing Toolbox” 2. Añadir la herramienta de calibración al entorno de Matlab mediante el comando: >>addpath(‘<<camino del directorio>>\TOOLBOX_calib’); 3. Proceder con el protocolo de Jean-Yves Bouguet para obtener los parámetros intrínsecos de la cámara. 4. Determinar el modelo de distorsión de la óptica de la cámara. 5. Colocar el objeto patrón a una distancia de un metro de la cámara. Determinar los parámetros extrínsecos de la rejilla de ajedrez. ¿Son acertado los valores dados por la calibración?. Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial Adquisición, calibración y entornos gráficos 2.11 2.5 Interfaz con el usuario mediante Matlab Matlab tiene una aplicación para la creación de interfases gráficos con el usuario (Graphical User Interface, GUI): >>guide Eligiendo una plantilla en blanco aparecerá el editor gráfico: Se colocará en primer lugar dos textos estáticos (Imagen de Entrada / Imagen de Salida) y se grabará el proyecto GUI en dos ficheros, uno con extensión *.m y otro *.fig (por ejemplo: ejemploGUI) . El icono de “Run Figure” ejecutará el resultado: Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial 2.12 Adquisición, calibración y entornos gráficos Se añadirá dos zonas de dibujos (axes), uno para visualizar la imagen de entrada y otro para ver el la imagen de resultado. Se añadirá un botón para ejecutar el algoritmo de Visión Artificial. Este procedimiento se basará en leer la imagen de entrada (‘cameraman.tif’) y posteriormente se aplicará una umbralización. El valor de la umbralización quedará reflejado en el interfaz. Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial Adquisición, calibración y entornos gráficos 2.13 El código de la función callback del botón será: data = guihandles(gcbf); imgEnt = imread('cameraman.tif'); umbral=graythresh(imgEnt); axes(handles.axes1); imshow(imgEnt); set(data.edit1,'Enable','on'); set(data.edit1,'String',num2str(umbral*255)); set(data.edit1,'Enable','inactive'); axes(handles.axes2); imshow(im2bw(imgEnt,umbral)); 2.6 Ejercicio Solicitar al usuario el nivel de umbral para realizar la umbralización. Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial 2.14 Adquisición, calibración y entornos gráficos Departamento de Electrónica, Automática e Informática Industrial Escuela Universitaria de Ingeniería Técnica Industrial