Calibración del sensor (1. Calibración de la cámara monocular)

En multisensores necesitamos calibrar el equipo antes de su uso, primero calibramos un único dispositivo (el uso posterior requiere calibración conjunta) 

Las herramientas de calibración conjunta como Apollo, Autoware y otras herramientas de etiquetado automático, así como algunos métodos de código abierto, etc., pueden hacer referencia a algunos documentos clásicos (consulte el enlace a continuación para ver el catálogo).

Calibración de la cámara imu_Resumen del método de calibración de fusión multisensor_Blog de Gamer42-CSDN Blog知道Casi fuente丨https://zhuanlan.zhihu.com/p/268908000Editado丨 Taller de visión 3D Este artículo resume algunos documentos comunes de fusión de calibración de sensor único y sensor múltiple y códigos de ingeniería, que se aplican a la conducción automática, visión 3D, y SLAM Y otros campos, para su referencia ~ 1. Calibración de la cámara Calibración en línea de ext... https://blog.csdn.net/weixin_31831459/article/details/112066574 En primer lugar, calibramos la cámara. Los métodos de calibración de la cámara se basan en el método de calibración "Zhang", adopta el método del tablero de ajedrez. El método de calibración principal es usar la herramienta de calibración ros, puede consultar lo siguiente (vea el segundo enlace para el método de operación y la descarga de la placa de calibración):

camera_calibration - ROS Wiki https://wiki.ros.org/camera_calibration camera_calibration/Tutorials/MonocularCalibration - ROS Wiki https://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration La placa de calibración está impresa con A0 (el oficial de ROS no puede ponerlo en papel A0 y necesita cortar), aquí hay una tabla de calibración de corte para imprimir, enlace:

 Código de extracción  de la placa de calibración recortada (108) : g14u

Por supuesto, cada uno diseña la placa de calibración de acuerdo con las necesidades de sus propias cámaras (el tamaño de la distancia focal) (el pdf de la placa de calibración con las especificaciones requeridas se puede generar a continuación):

Generador de patrones de calibración de cámara: calib.io https://calib.io/pages/camera-calibration-pattern-generator aquí presenta un método de uso de MATLAB para calibrar la cámara (versión R2021b)

 Abra la APLICACIÓN MATLAB->Procesamiento de imágenes y visión artificial->Calibración de cámara

Solo necesitamos arrojar las imágenes recopiladas en esta herramienta. Las imágenes se pueden recopilar utilizando el método de mover la placa de calibración con una cámara fija (recomendado) o moviendo la cámara sin mover la placa de calibración ( 20~30 imágenes son suficientes ).

 Agregue la imagen que recopiló (la imagen es una prueba, no la placa de calibración de la especificación mencionada anteriormente)

MATLAB eliminará automáticamente las imágenes que no cumplan con los requisitos y el siguiente paso es seleccionar el tipo de cámara y la salida.

 La cámara ordinaria está en 1 lugar, mantenga la configuración básica, manténgala como estándar, elija ojo de pez para la cámara de ojo de pez; haga clic en la opción para elegir la distorsión radial, generalmente elija dos parámetros, dos o tres representan el número de parámetros de distorsión (k1, k2, si hay k3), no elegimos sesgo en circunstancias normales. Después de configurar, haga clic en calibración para generar, y se generará la imagen azul en el lado derecho de la imagen de arriba. Arrastremos la línea recta del valor atípico dentro 0,8 (o según la demanda, si la cantidad de fotos es grande y la cantidad de cambios se puede ajustar según las necesidades), la imagen atípica se seleccionará automáticamente a la izquierda, haga clic con el botón derecho para eliminar y se ejecutará automáticamente En este momento, haga clic en Exportar calibración de cámara verde arriba para completar la calibración, haga clic en la esquina superior izquierda La sesión de guardado generará un archivo .mat para guardar su salida.

Nuestros resultados de calibración se mostrarán (salida) en la ventana de la línea de comandos. Vale la pena señalar que los intrínsecos de la cámara son los parámetros internos de la cámara. En esta versión, no se muestra como una matriz de 3*3, sino como una matriz de 1 *1 cameraIntrinsics Y el contenido de este parámetro es más abundante.

 Podemos usar pylon_01.xx (el nombre del parámetro que generaste. Proyecto) para llamar a la ventana de comandos, o hacer doble clic en el parámetro directamente a la derecha para ver el resultado:

 Su contenido de arriba a abajo es: tamaño de la imagen, parámetro de distorsión radial (correspondiente a dos o tres parámetros), parámetro tangencial o de distorsión (dos parámetros), punto de coordenadas mundiales, unidad mundial, sesgo, parámetro de distorsión radial El número, ya sea calcular distorsión tangencial (bool), ..., parámetros internos, distancia focal, cx, cy (Principepoint), etc.

Para otros métodos de llamada y comprensión, consulte el sitio web oficial de mathworks:

Matriz de proyección de cámara - MATLAB cameraMatrix- MathWorks España

Donde cameraIntrinsics incluye: 

 Después de obtener este resultado, necesitamos escribir el archivo de configuración:

de acuerdo a:

camera_info_manager: camera_info_manager::CameraInfoManager Referencia de clase http://docs.ros.org/en/api/camera_info_manager/html/classcamera__info__manager_1_1CameraInfoManager.html#details以及:

camera_calibration_parsers - ROS Wiki https://wiki.ros.org/camera_calibration_parsers#File_formats Necesita escribir un archivo .ini o un formato de archivo .yaml:

Este es el formato INI utilizado por las cámaras Videre para almacenar internamente los parámetros de calibración. Lo estamos utilizando como nuestro formato preferido para almacenar la calibración en la memoria flash de la cámara (no solo en las cámaras Videre). 下面是INI格式

ejemplo:

# Basler camera intrinsics

[image]

width
1920

height
1200

[Basler_01]

camera matrix
2780.34662 0.00000 941.549872
0.00000 2776.46900 651.074403
0.00000 0.00000 1.00000

distortion
-0.15400 1.70770 -11.77580 0.00620 -0.00010

rectification
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000

projection
2780.34662 0.00000 941.549872 0.00000
0.00000 2776.46900 651.074403 0.00000
0.00000 0.00000 1.00000 0.00000

La salida YAML se basa en la utilizada por el programa de calibración OpenCV.

ejemplo:

image_width: 1920
image_height: 1200
camera_name: Basler
camera_matrix:
  rows: 3
  cols: 3
  data: [2780.34662, 0.00000, 941.549872,0.00000, 2776.46900, 651.074403, 0.00000, 0.00000 ,1.00000]
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [-0.15400, 1.70770, -11.77580, 0.00620, -0.00010]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
  rows: 3
  cols: 4
  data: [2780.34662, 0.00000, 941.549872, 0.00000, 0.00000, 2776.46900, 651.074403, 0.00000, 0.00000, 0.00000, 1.00000, 0.00000]

Los dos formatos "Basler" son el nombre de la cámara y se pueden ajustar de acuerdo a su nombre, cabe mencionar que al último ítem de la matriz de proyección se le puede agregar directamente una columna de 0 de acuerdo a la matriz de parámetros interna de la cámara .

Guarde el texto anterior como un archivo .ini o .yaml. Importemos parámetros para la cámara (generalmente en el archivo de configuración de la cámara) o importémoslos manualmente en el código, como se indica directamente. (El texto será dado automáticamente por la calibración de la herramienta ros)

Para cámaras Basler, en la configuración, agregue parámetros internos de la siguiente manera:

Preste atención al formato, la URL aquí es     la "ruta global del archivo ini",       consulte:

 Como se muestra en la figura, está calibrado:

 Imagen de salida en Rviz o image_view (abajo a la izquierda):

Finalizar. ¡En el futuro, continuaremos escribiendo la calibración real de otros sensores!

Supongo que te gusta

Origin blog.csdn.net/m0_46611008/article/details/123996058
Recomendado
Clasificación