Compartir a través de


Uso de las funciones de calibración de Azure Kinect

Las funciones de calibración permiten transformar los puntos entre los sistemas de coordenadas de cada sensor del dispositivo Azure Kinect. Las aplicaciones que requieren la conversión de imágenes completas pueden aprovechar las operaciones aceleradas disponibles en las funciones de transformación.

Recuperación de los datos de calibración

Es necesario recuperar la calibración del dispositivo para realizar las transformaciones del sistema de coordenadas. Los datos de calibración se almacenan en el tipo de datos k4a_calibration_t. Se obtienen del dispositivo a través de la función k4a_device_get_calibration (). Los datos de calibración no solo son específicos de cada dispositivo, sino también del modo de funcionamiento de las cámaras. Por lo tanto k4a_device_get_calibration () requiere los parámetros depth_mode y color_resolution como entrada.

Compatibilidad con OpenCV

Los parámetros de calibración son compatibles con OpenCV. Para más información sobre cada parámetro de calibración de la cámara, consulte también la documentación de OpenCV. Consulte también el ejemplo de compatibilidad de OpenCV del SDK que muestra la conversión entre el tipo k4a_calibration_t y las estructuras de datos OpenCV correspondientes.

Funciones de transformación de coordenadas

En la figura siguiente se muestran los diferentes sistemas de coordenadas de Azure Kinect, así como las funciones para realizar las conversiones entre ellos. Para que la figura sea sencilla, se omiten los sistemas de coordenadas 3D del giroscopio y del acelerómetro.

Transformación de las coordenadas

Comentario sobre la distorsión de la lente: las coordenadas 2D siempre hacen referencia a la imagen distorsionada en el SDK. En el ejemplo de eliminación de distorsión del SDK se muestra la eliminación de distorsión de la imagen. En general, los puntos 3D nunca se verán afectados por la distorsión de la lente.

Conversión entre sistemas de coordenadas 3D

La función k4a_calibration_3d_to_3d() convierte un punto 3D del sistema de coordenadas de origen en un punto 3D del sistema de coordenadas de destino mediante la calibración extrínseca de la cámara. El origen y el destino se pueden establecer en cualquiera de los cuatro sistemas de coordenadas 3D, es decir, cámara de color, cámara de profundidad, giroscopio o acelerómetro. Si el origen y el destino son idénticos, el punto 3D de entrada sin modificar se devuelve como salida.

Conversión entre sistemas de coordenadas 2D y 3D

La función k4a_calibration_3d_to_2d() convierte un punto 3D del sistema de coordenadas de origen en una coordenada de píxeles 2D de la cámara de destino. Esta función se conoce a menudo como función Project. Aunque el origen se puede establecer en cualquiera de los cuatro sistemas de coordenadas 3D, el destino debe ser la cámara de profundidad o la de color. Si el origen y el destino son diferentes, el punto 3D de entrada se pasa al sistema de coordenadas 3D de la cámara de destino mediante k4a_calibration_3d_to_3d(). Una vez que el punto 3D se representa en el sistema de coordenadas de la cámara de destino, las coordenadas de píxeles 2D correspondientes se calculan mediante la calibración intrínseca de la cámara de destino. Si un punto 3D no se encuentra dentro del área visible de la cámara de destino, el valor válido se establece en 0.

La función k4a_calibration_2d_to_3d() convierte una coordenada de píxeles 2D de la cámara de origen en un punto 3D del sistema de coordenadas de la cámara de destino. El origen debe ser una cámara de color o de profundidad. El destino se puede establecer en cualquiera de los cuatro sistemas de coordenadas 3D. Además de la coordenada de píxeles 2D, se requiere el valor de profundidad del píxel (en milímetros) de la imagen de la cámara de origen como entrada a la función; una manera de obtener el valor de profundidad de la geometría de la cámara de color es usar la función k4a_transformation_depth_image_to_color_camera(). La función calcula el rayo 3D que lleva del punto focal de la cámara de origen a la coordenada de píxeles especificada mediante la calibración intrínseca de la cámara de origen. El valor de profundidad se usa entonces para buscar la ubicación exacta del punto 3D en este rayo. Esta operación a menudo se conoce como función Unproject. Si las cámaras de origen y destino son diferentes, la función pasa el punto 3D al sistema de coordenadas del destino a través de k4a_calibration_3d_to_3d(). Si una coordenada de píxeles 2D no se encuentra dentro del área visible de la cámara de origen, el valor válido se establece en 0.

Conversión entre sistemas de coordenadas 2D

La función k4a_calibration_2d_to_2d() convierte una coordenada de píxeles 2D de la cámara de origen en una coordenada de píxeles 2D de la cámara de destino. El origen y el destino deben estar establecidos en la cámara de color o de profundidad. La función requiere el valor de profundidad del píxel (en milímetros) de la imagen de la cámara de origen como entrada; una manera de obtener el valor de profundidad de la geometría de la cámara de color es usar la función k4a_transformation_depth_image_to_color_camera(). Esta función llama a k4a_calibration_2d_to_3d() para realizar la conversión a un punto 3D del sistema de la cámara de origen. Luego, llama a k4a_calibration_3d_to_2d() para realizar la conversión a una coordenada de píxeles 2D de la imagen de la cámara de destino. El valor válido se establece en 0, si k4a_calibration_2d_to_3d() o k4a_calibration_3d_to_2d() devuelven un resultado no válido.

Pasos siguientes

Ahora que ya sabe cómo calibrar la cámara, también puede aprender a:

También puede revisar:

Sistemas de coordenadas