CHAPTER 5: IDENTIFY VARIABLES THAT INFLUENCE PERSONAL
5.2. Data Acquisition
Para la calibración de esta cámara se utilizó el conjunto de imágenes patrón de calibración de la Tabla 2.1. Para la realización de la misma se deben seguir los siguientes pasos:
1. Cargar en la ventana de comandos el archivo RadialCorrectionToMosaicking.m, con lo que se muestra la interfaz diseñada (Figura 2.8).
2. Presionar botón Bouguet, mostrándose la ventana de selección de modo de trabajo (Figura 2.3) del toolbox de calibración.
3. Al seleccionar el modo se muestra la ventana con las distintas funciones (Figura 2.4) que permiten realizar la calibración y la obtención de las diferentes gráficas e imágenes con que cuenta el toolbox. Presionar el botón Images Name o Read
4. Images para cargar las imágenes del patrón, estas imágenes deben estar contenidas en el mismo directorio que los archivos del toolbox.
5. Presionar el botón Extract grid corners, para realizar el marcado manual de las cuatro esquinas de los cuadros exteriores del patrón.
6. Por último, se acciona el botón Calibration para realizar la calibración y obtener los parámetros intrínsecos y extrínsecos.
Para realizar la calibración de la cámara Parrot Sequoia se seleccionaron 10 imágenes patrón de calibración tomadas desde diferentes puntos de vista y distancia (Ver Anexo II). Al cargar dichas imágenes cada una de estas son almacenadas en las variables I_1, I_2, I_3, …, I_10, el número total se guarda en la variable n_ima, en este caso será n_ima=10 y se muestran mediante la función mosaic (Figura 2.5). en la ventana de comandos se muestran las siguientes líneas:
Basename camera calibration images (without number nor suffix): Image Image format: ([]='r'='ras', 'b'='bmp', 't'='tif', 'p'='pgm', 'j'='jpg', 'm'='ppm') j Loading image 1...2...3...4...5...6...7...8...9...10...
Done
Como se puede observar se introduce por teclado el nombre y la inicial del formato de las imágenes a procesar.
Vale destacar que, si el mensaje de error Out of Memory ocurriera durante la lectura de la imagen, es decir que la computadora con que se trabaje no tiene suficiente memoria RAM para sujetar el conjunto entero de imágenes en memoria local. En este caso, se puede intercambiar directamente para el modo Memory Eficient de la caja de herramientas ejecutando calib_gui.m y seleccionando esta modalidad de operación.
Luego, pulsar el botón Extract grid corners, para seleccionar el número de imágenes a procesar y el tamaño de la ventana en pixeles como se muestra a continuación:
Extraction of the grid corners on the images
Number(s) of image(s) to process ([] = all images) = [] Window size for corner finder (wintx and winty):
wintx ([] = 36) = winty ([] = 36) = Window size = 73x73
Do you want to use the automatic square counting mechanism (0=[]=default) or do you always want to enter the number of squares manually (1,other)? [] Processing image 1...
Using (wintx,winty)=(36,36) - Window size = 73x73 (Note: To reset the window size, run script clearwin)
Click on the four extreme corners of the rectangular complete pattern (the first clicked corner is the origin)...
A continuación, se procede al marcado de las cuatro esquinas del patrón, este marcado debe realizarse como muestra la figura 3.1 puesto que el primer punto se toma como origen de coordenadas.
Figura 3.1 Marcado de las esquinas del patrón.
Luego de marcado se determina el tamaño de los cuadros, en este caso con solo dar Enter el programa automáticamente supone el tamaño de los cuadros, si la suposición esta errónea, las esquinas se marcan incorrectamente.
Size dX of each square along the X direction ([]=100mm) = Size dY of each square along the Y direction ([]=100mm) =
If the guessed grid corners (red crosses on the image) are not close to the actual corners, it is necessary to enter an initial guess for the radial distortion factor kc (useful for subpixel detection)
Need of an initial guess for distortion? ([]=no, other=yes) [] Corner extraction...
Este proceso se repite para todas las imágenes seleccionadas para la calibración. El toolbox
cuenta con un mecanismo automático para la detección de las esquinas, el cual funciona perfectamente para lentes con poca distorsión radial; en objetivos con gran distorsión es recomendable el marcado de forma manual. Para el caso en cuestión funciona perfectamente el modo automático, y se muestra la imagen del patrón con todas las esquinas señaladas (Anexo III). Toda la información de la etapa de extracción de las esquinas se almacena en el fichero calib_data.mat, que es generado de forma automática; lo cual posibilita que debido a un cierre inesperado del software (Matlab), al accionarlo se recuperen los datos guardados como las coordenadas de las imágenes, coordenadas 3D, etc. Para la obtención de todos los parámetros de la cámara se ejecuta el botón Calibration, lo que constituye el principal paso de la calibración. En la que se obtienen los parámetros de calibración según los dos pasos mencionados en la sección 2.2.2. mostrándose como sigue en la ventana de comandos:
Aspect ratio optimized (est_aspect_ratio = 1) -> both components of fc are estimated (DEFAULT).
Principal point optimized (center_optim=1) - (DEFAULT). To reject principal point, set center_optim=0
Skew not optimized (est_alpha=0) - (DEFAULT)
Distortion not fully estimated (defined by the variable est_dist): Sixth order distortion not estimated (est_dist(5)=0) - (DEFAULT) .
Initialization of the principal point at the center of the image.
Initialization of the intrinsic parameters using the vanishing points of planar patterns. Initialization of the intrinsic parameters - Number of images: 10
Calibration parameters after initialization:
Focal Length: fc = [ 3662.45197 3662.45197 ] Principal point: cc = [ 2303.50000 1727.50000 ]
Skew: alpha_c = [ 0.00000 ] => angle of pixel = 90.00000 degrees Distortion: kc = [ 0.00000 0.00000 0.00000 0.00000 0.00000 ] Main calibration optimization procedure - Number of images: 10
Gradient descent iterations:
1...2...3...4...5...6...7...8...9...10...11...12...13...14...15...16...17...18...19...20...21...22...done Estimation of uncertainties...done
Calibration results after optimization (with uncertainties):
Focal Length: fc = [ 3873.09961 3896.50973 ] +/- [ 118.53334 141.29640 ] Principal point: cc = [ 2337.86641 1805.51388 ] +/- [ 132.60959 84.75136 ]
Skew: alpha_c = [ 0.00000 ] +/- [ 0.00000 ] => angle of pixel axes = 90.00000 +/- 0.00000 degrees
Distortion: kc = [ 0.13424 -0.21377 -0.00242 0.01109 0.00000 ] +/- [ 0.05921 0.15526 0.01000 0.01345 0.00000 ]
Pixel error: err = [ 8.26095 5.82307 ]
Note: The numerical errors are approximately three times the standard deviations (for reference).
En la tabla 3.1 se relacionan los principales parámetros intrínsecos obtenidos en el primer paso de calibración:
Tabla 3.1: Parámetros intrínsecos del paso de inicialización de la cámara Parrot Sequoia.
Parámetro Vector
Distancia focal (fc) [ 3662.45197 3662.45197 ] Punto principal (cc) [ 2303.50000 1727.50000 ] Coeficiente de desviación (alpha_c) [ 0.00000 ] *
Coeficientes distorsión (kc) [ 0.00000 0.00000 0.00000 0.00000 0.00000 ]
*Ángulo de píxel = 90º
La tabla 3.2 muestra los parámetros intrínsecos en el segundo paso de calibración que efectúa la herramienta:
Tabla 3.2: Parámetros intrínsecos del paso de optimización no lineal de la cámara Parrot Sequoia.
Parámetro Vector Incertidumbre
Distancia focal (fc) [3873.09961 3896.50973] [ 118.53334 141.29640 ] Punto principal (cc) [ 2337.86641 1805.51388 ] [ 132.60959 84.75136 ] Coeficiente de desviación (alpha_c) [ 0.00000 ] [ 0.00000 ] ** Coeficientes distorsión (kc) [ 0.13424 -0.21377 -0.00242 0.01109 0.00000 ] [ 0.05921 0.15526 0.01000 0.01345 0.00000 ]
Error de pixel (err) [ 8.26095 5.82307 ]
** Ángulo de los ejes de píxeles = 90º +/- 0º
Como se puede apreciar, luego de la optimización muchos parámetros cambiaron sus valores, contando incluso con una estimación del error de píxel, el cual como se puede apreciar, es grande, debido a la falta de iluminacón.
Luego de la calibración, si se oprime el botón Show Extrinsic, se puede tener una vista 3D de la posición de la cámara (Figura 3.2) a la hora de tomar las imágenes, primeramente, tomando como referencia la cámara (Figura 3.2a) y luego cambiando a otra vista donde la referencia es el patrón de calibración (Figura 3.2b).
(a) (b)
Figura 3.2: Reconstrucción de la escena, (a) centrado en la cámara, (b) centrado en el patrón.
Cámara Nikon COOLPIX S3100
Para la calibración de esta cámara se utilizó el conjunto de imágenes patrón de calibración de la Tabla 2.2 (Ver Anexo IV). Los resultados del primer paso de calibración se muestran en la Tabla 3.3.
Tabla 3.3: Parámetros intrínsecos paso de inicialización de la cámara Nikon COOLPIX S3100.
Parámetro Vector
Distancia focal (fc) [ 3306.38803 3306.38803 ] Punto principal (cc) [ 2159.50000 1619.50000 ] Coeficiente de desviación (alpha_c) [ 0.00000 ] *
Coeficientes distorsión (kc) [ 0.00000 0.00000 0.00000 0.00000 0.00000 ]
*Ángulo de píxel = 90º
Tabla 3.4: Parámetros intrínsecos paso optimización no lineal de la cámara Nikon COOLPIX S3100.
Parámetro Vector Incertidumbre
Distancia focal (fc) [ 3497.35982 3500.32937 ] [ 59.25983 53.93530 ] Punto principal (cc) [ 2082.46487 1577.74834 ] [ 27.17547 52.03455 ] Coeficiente de desviación (alpha_c) [ 0.00000 ] [ 0.00000 ] ** Coeficientes distorsión (kc) [ -0.04013 0.10174 0.00819 - 0.00891 0.00000 ] [ 0.02450 0.10055 0.00212 0.00295 0.00000 ]
Error de pixel (err) [ 1.76133 2.63472 ]
** Ángulo de los ejes de píxeles = 90º +/- 0º
La reconstrucción en tercera dimensión de la escena se muestra en la Figura 3.3.
(a) (b)
Figura 3.3: Reconstrucción de la escena, (a) centrado en la cámara, (b) centrado en el patrón.