Partager via


Utiliser les fonctions d’étalonnage d’Azure Kinect

Les fonctions d’étalonnage permettent de transformer des points entre les systèmes de coordonnées de chaque capteur sur l’appareil Azure Kinect. Les applications nécessitant une conversion d’images entières peuvent tirer parti des opérations accélérées disponibles dans les fonctions de transformation.

Récupérer les données d’étalonnage

Il est nécessaire de récupérer l’étalonnage de l’appareil pour effectuer des transformations du système de coordonnées. Les données d’étalonnage sont stockées dans le type de données k4a_calibration_t. Elles sont obtenue de l’appareil via la fonction k4a_device_get_calibration(). Les données d’étalonnage sont spécifiques non seulement de chaque appareil, mais aussi du mode de fonctionnement des caméras. Par conséquent, la fonction k4a_device_get_calibration() requiert les paramètres depth_mode et color_resolution en entrée.

Compatibilité OpenCV

Les paramètres d’étalonnage sont compatibles avec la bibliothèque graphique OpenCV. Pour plus d’informations sur les paramètres d’étalonnage de la caméra, consultez aussi la documentation sur la bibliothèque graphique OpenCV. Consultez également l’exemple de compatibilité OpenCV du Kit de développement logiciel (SDK) qui illustre la conversion entre le type k4a_calibration_t et les structures de données OpenCV correspondantes.

Fonctions de transformation de coordonnées

La figure ci-dessous présente les différents systèmes de coordonnées d’Azure Kinect, ainsi que les fonctions permettant de les convertir entre eux. Pour que la figure reste simple, nous n’indiquons pas les systèmes de coordonnées 3D de gyroscope et d’accéléromètre.

Transformation de coordonnées

Remarque concernant la distorsion de l’objectif : les coordonnées 2D font toujours référence à l’image distordue dans le Kit de développement logiciel (SDK). L’exemple de correction de distorsion du Kit de développement logiciel (SDK) montre la correction de distorsion d’image. En général, les points 3D ne sont jamais affectés par la distorsion de l’objectif.

Opérer une conversion entre systèmes de coordonnées 3D

La fonction k4a_calibration_3d_to_3d() convertit un point 3D du système de coordonnées source en point 3D du système de coordonnées cible en utilisant l’étalonnage extrinsèque de la caméra. La source et la cible peuvent être définies sur l’un des quatre systèmes de coordonnées 3D, à savoir, caméra couleur, caméra de profondeur, gyroscope ou accéléromètre. Si la source et la cible sont identiques, le point 3D d’entrée non modifié est retourné en tant que sortie.

Conversion entre systèmes de coordonnées 2D et 3D

La fonction k4a_calibration_3d_to_2d() convertit un point 3D du système de coordonnées source en coordonnée de pixel 2D de la caméra cible. Cette fonction est souvent appelée fonction de projection. Si la source peut être définie sur l’un des quatre systèmes de coordonnées 3D, la cible doit être la caméra de profondeur ou couleur. Si la source et la cible sont différentes, le point d’entrée 3D est converti dans le système de coordonnées 3D de la caméra cible à l’aide de la fonction k4a_calibration_3d_to_3d(). Une fois le point 3D représenté dans le système de coordonnées de la caméra cible, les coordonnées de pixel 2D correspondantes sont calculées en utilisant l’étalonnage intrinsèque de la caméra cible. Si un point 3D se trouve en dehors de la zone visible de la caméra cible, la valeur valide est définie sur 0.

La fonction k4a_calibration_2d_to_3d() convertit une coordonnée de pixel 2D de la caméra source en un point 3D du système de coordonnées de la caméra cible. La source doit être une caméra couleur ou de profondeur. La cible peut être définie sur l’un des quatre systèmes de coordonnées 3D. En plus de la coordonnée de pixel 2D, la valeur de profondeur du pixel (en millimètres) dans l’image de la caméra source est requise comme entrée pour la fonction. Une façon de dériver la valeur de profondeur dans la géométrie de la caméra couleur consiste à utiliser la fonction k4a_transformation_depth_image_to_color_camera(). La fonction calcule le rayon 3D qui mène du point focal de la caméra source à la coordonnée de pixel spécifiée en utilisant l’étalonnage intrinsèque de la caméra source. La valeur de profondeur est ensuite utilisée pour rechercher l’emplacement exact du point 3D sur ce rayon. Cette opération est souvent appelée fonction de déprojection. Si les caméras source et cible sont différentes, la fonction transforme le point 3D au système de coordonnées de la cible via la fonction k4a_calibration_3d_to_3d(). Si une coordonnée de pixel 2D se trouve en dehors de la zone visible de la caméra source, la valeur valide est définie sur 0.

Conversion entre systèmes de coordonnées 2D

La fonction k4a_calibration_2d_to_2d() convertit une coordonnée de pixel 2D de la caméra source en coordonnée de pixel 2D de la caméra cible. La source et la cible définies doivent être une caméra couleur ou de profondeur. La fonction requiert la valeur de profondeur du pixel (en millimètres) dans l’image de la caméra source en entrée. Une façon de dériver la valeur de profondeur dans la géométrie de la caméra de couleur consiste à utiliser la fonction k4a_transformation_depth_image_to_color_camera(). Elle appelle la fonction k4a_calibration_2d_to_3d() pour effectuer la conversion en un point 3D du système de la caméra source. Elle appelle ensuite la fonction k4a_calibration_3d_to_2d() pour convertir en coordonnée de pixel 2D de l’image de la caméra cible. La valeur valide est définie sur 0, si la fonction k4a_calibration_2d_to_3d() ou k4a_calibration_3d_to_2d() retourne un résultat non valide.

Étapes suivantes

Maintenant que vous savez ce que sont les étalonnages de caméra, vous pouvez également apprendre à

Vous pouvez également consulter

Systèmes de coordonnées