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