Calibración de la cámara Matlab: utilizando la aplicación Single Camera Calibrator

 ¿Qué es la calibración de la cámara? ​​​​​​​​

1. Colección de imágenes de tablero de ajedrez

        La aplicación Single Camera Calibrator admite patrones de tablero de ajedrez, cuadrícula circular y detectores personalizados. Consulte Patrones de calibración para obtener detalles sobre estos patrones y un archivo PDF que contiene patrones imprimibles .

Comparta un sitio web que pueda generar varias placas de calibración: https://calib.io/pages/camera-calibration-pattern-generator

(1) En este documento, seleccione el patrón de tablero de ajedrez, abra matlab e ingrese la línea de comando:

open checkerboardPattern.pdf

        Un patrón de tablero de ajedrez es el patrón de calibración más utilizado para la calibración de cámaras. Los puntos de control para este modo son las esquinas ubicadas dentro del tablero. Dado que las esquinas son tan pequeñas, generalmente son inmunes a la perspectiva y la distorsión de la lente. La aplicación de calibrador también puede detectar partes del tablero de ajedrez, lo cual es útil cuando se calibran cámaras con lentes gran angular. Usa un tablero que contenga un número par de cuadrados a lo largo de un lado y un número impar de cuadrados a lo largo del otro, con dos cuadrados de esquina negros a lo largo de un lado y dos cuadrados de esquina blancos a lo largo del otro lado. Esto permite que la aplicación determine la orientación y el origen del patrón. El calibrador designa el lado más largo como la dirección X. Un patrón de tablero de ajedrez cuadrado puede tener resultados inesperados en los elementos extrínsecos de la cámara.

(2) Pegue el tablero de ajedrez en una superficie plana. Las imperfecciones de la superficie pueden afectar la precisión de la calibración. Este artículo utiliza la visualización de la pantalla del teléfono móvil.

(3) Mida un lado del cuadrado del tablero de ajedrez. Necesita esta medida para la calibración. El tamaño de los cuadrados variará según la configuración de la impresora. En este documento, la longitud del lado del cuadrado se mide en 7 mm.

(4) Ejecute dofbot_ws/src/yolox_tiny_waste_sort/take_photos.ipynb para tomar 20 fotografías de tablero de ajedrez en diferentes poses

2. Comience la calibración

(1) Abra Matlab, ingrese la línea de comando:

cameraCalibrator

 (2) Importe las 20 imágenes de tablero de ajedrez tomadas e ingrese la longitud lateral de la cuadrícula cuando se le solicite: 7 mm

 (3) "Opciones" seleccione el número de coeficientes de distorsión radial para que sea 3, marque Distorsión tangencial

 (4) Haga clic en "Calibrar" para iniciar la calibración

 (5) Exporte el resultado de la calibración al espacio de trabajo (puede exportarlo nuevamente después de ajustarlo a su gusto)

(6) Generar script de MATLAB

En "Exportar parámetros de cámara" (para modelos de cámara estándar) o "Exportar parámetros de ojo de pez" (para modelos de cámara de ojo de pez), seleccione "Generar secuencia de comandos de MATLAB" para guardar los parámetros de la cámara en una secuencia de comandos de MATLAB, lo que le permitirá reproducir los pasos para una sesión de calibración. .

Nota: No puede generar secuencias de comandos de MATLAB para parámetros de cámara de patrones personalizados definidos mediante la clase vision.calibration.PatternDetector.

3. Evaluar los resultados de la calibración

        La precisión de la calibración se puede evaluar examinando los errores de reproyección, examinando los elementos extrínsecos de la cámara o mirando la imagen sin deformar. Para obtener los mejores resultados de calibración, utilice los tres métodos de evaluación.

3.1 Visualización de parámetros extrínsecos de la cámara

        El mapa de parámetros extrínsecos en 3D proporciona una vista centrada en la cámara del patrón y una vista de cámara centrada en el patrón. Una vista centrada en la cámara es útil si la cámara está estacionaria cuando se toma la imagen. Una vista centrada en el patrón es útil si el patrón es estacionario. Puede hacer clic y arrastrar el gráfico para girarlo. Haga clic en un tablero (o cámara) para seleccionarlo. Los datos resaltados en la visualización corresponden a la imagen seleccionada en la lista. Verifique las posiciones relativas del patrón y la cámara para ver si coinciden con lo que espera. Por ejemplo, un patrón que aparece detrás de una cámara indica un error de calibración.

Entrada de línea de comando:

figure; 
showExtrinsics(cameraParams, 'CameraCentric');

3.2 Error de reproyección

        El error de reproyección es la distancia entre el punto detectado y el correspondiente punto reproyectado, en píxeles. La aplicación de calibrador de cámara calcula el error de reproyección al proyectar puntos desde coordenadas mundiales definidas por patrones a coordenadas de imagen. Luego, la aplicación compara los puntos reproyectados con los puntos detectados correspondientes. En general, es aceptable un error de reproyección promedio de menos de un píxel.

        La aplicación Camera Calibrator muestra el error de reproyección en píxeles con un histograma. Este gráfico le ayuda a determinar qué imágenes están afectando negativamente a la calibración. Puede seleccionar una entrada de gráfico de barras para seleccionar una imagen y eliminar esa imagen de la lista de imágenes en el panel del explorador de datos.

Gráfico de barras de error de reproyección
        El gráfico de barras muestra el error de reproyección promedio por imagen, así como el error promedio general. Las etiquetas de las barras corresponden a los ID de las imágenes. Las barras resaltadas corresponden a las imágenes seleccionadas.

Seleccione una imagen utilizando uno de estos métodos.

  • Haga clic en la barra correspondiente en el gráfico.
  • Seleccione una imagen de la lista de imágenes en el panel del explorador de datos.
  • Error medio ajustado de la población. Deslice la línea roja hacia arriba o hacia abajo para seleccionar automáticamente todas las imágenes con un error promedio mayor que el valor especificado.

Entrada de línea de comando:

figure; 
showReprojectionErrors(cameraParams);

3.3 Ver imagen con distorsión corregida

Para ver el efecto de no distorsionar la lente, seleccione "Mostrar sin distorsionar" en la pestaña "Calibración". Si la calibración es precisa, las líneas distorsionadas en la vista previa de la imagen se volverán rectas.

NOTA: Incluso si el error de reproyección es bajo, es importante verificar que la imagen no esté distorsionada. Por ejemplo, si el patrón cubre solo una pequeña parte de la imagen, la estimación de la deformación puede ser incorrecta, incluso si la calibración da como resultado un pequeño error de reproyección. Esta imagen muestra un ejemplo de estimación incorrecta para este tipo de calibración de una sola máquina.

3.4 Imprimir resultados de error

Entrada de línea de comando: 

displayErrors(estimationErrors, params);

4. Mejorar la precisión de la calibración

Para mejorar los resultados de la calibración, puede eliminar imágenes con alto error, agregar más imágenes o modificar la configuración del calibrador.

Considere agregar más imágenes si:

  • Tienes menos de 10 imágenes.
  • El patrón de calibración no cubre suficiente parte de la imagen.
  • El patrón de calibración no varía lo suficiente en la orientación con respecto a la cámara.

Considere eliminar imágenes si:

  • tiene un error de reproyección promedio alto.
  • Impreciso.
  • Contiene un patrón de calibración mayor de 45 grados en relación con el plano de la cámara.

Referencias

[1] Zhang, Z. "Una nueva técnica flexible para la calibración de cámaras". Transacciones IEEE sobre análisis de patrones e inteligencia artificial . 22, núm. 11 (noviembre de 2000): 1330–34. https://doi.org/10.1109/34.888718.

[2] Heikkila, J. y O. Silven. "Un procedimiento de calibración de cámara de cuatro pasos con corrección de imagen implícita". En  las Actas de la Conferencia de la IEEE Computer Society sobre Visión por Computador y Reconocimiento de Patrones . 1106–12. San Juan, Puerto Rico: Computación IEEE. Soc., 1997. https://doi.org/10.1109/CVPR.1997.609468.

[3] Scaramuzza, Davide, Agostino Martinelli y Roland Siegwart. "Una caja de herramientas para calibrar fácilmente cámaras omnidireccionales". En  Proceedings of IEEE International Workshop on Intelligent Robots and Systems 2006 (IROS 2006) , 5695–701. Pekín, China: IEEE, 2006. https://doi.org/10.1109/IROS.2006.282372

[4] Bouguet, JY "Caja de herramientas de calibración de cámara para Matlab". Visión Computacional en el Instituto de Tecnología de California.

Supongo que te gusta

Origin blog.csdn.net/weixin_44709392/article/details/124486048
Recomendado
Clasificación