Korzystanie z funkcji kalibracji zestawu Azure Kinect

Funkcje kalibracji umożliwiają przekształcanie punktów między układami współrzędnych każdego czujnika na urządzeniu Azure Kinect. Aplikacje wymagające konwersji całych obrazów mogą korzystać z przyspieszonych operacji dostępnych w funkcjach przekształcania.

Pobieranie danych kalibracji

Konieczne jest pobranie kalibracji urządzenia w celu przeprowadzenia przekształceń układu współrzędnych. Dane kalibracji są przechowywane w k4a_calibration_t typie danych. Jest on uzyskiwany z urządzenia za pośrednictwem funkcji k4a_device_get_calibration(). Dane kalibracji są nie tylko specyficzne dla każdego urządzenia, ale także dla trybu operacyjnego kamer. W związku z tym k4a_device_get_calibration() wymaga parametrów depth_mode i color_resolution jako danych wejściowych.

Zgodność z usługą OpenCV

Parametry kalibracji są zgodne z OpenCV. Aby uzyskać więcej informacji na temat parametrów kalibracji poszczególnych aparatów, zobacz również dokumentację OpenCV. Zobacz również przykład zgodności openCV zestawu SDK, który demonstruje konwersję między typem k4a_calibration_t a odpowiednimi strukturami danych OpenCV.

Funkcje przekształcania współrzędnych

Na poniższej ilustracji przedstawiono różne systemy współrzędnych zestawu Azure Kinect oraz funkcje do konwersji między nimi. Pomijamy układy współrzędnych 3D żyroskopu i akcelerometru, aby zachować prostą postać.

Przekształcanie współrzędnych

Uwaga na temat zniekształceń obiektywu: współrzędne 2D zawsze odnoszą się do zniekształconego obrazu w zestawie SDK. Przykład niezakłóconego przykładu zestawu SDK demonstruje niezakłóconą częścią obrazu. Ogólnie rzecz biorąc, punkty 3D nigdy nie będą miały wpływu na zniekształcenia obiektywu.

Konwertowanie między układami współrzędnych 3D

Funkcja k4a_calibration_3d_to_3d() konwertuje punkt 3D układu współrzędnych źródła na punkt 3D docelowego układu współrzędnych przy użyciu kalibracji zewnętrznej aparatu. Źródło i cel można ustawić na dowolny z czterech układów współrzędnych 3D, czyli kamery kolorów, aparatu głębi, żyroskopu lub akcelerometru. Jeśli źródło i cel są identyczne, niezmodyfikowany punkt wejściowy 3D jest zwracany jako dane wyjściowe.

Konwertowanie między układami współrzędnych 2D i 3D

Funkcja k4a_calibration_3d_to_2d() konwertuje punkt 3D układu współrzędnych źródła na współrzędną 2D aparatu docelowego. Ta funkcja jest często określana jako funkcja projektu. Źródło można ustawić na dowolny z czterech układów współrzędnych 3D, ale obiektem docelowym musi być głębokość lub kamera kolorów. Jeśli źródło i cel są różne, wejściowy punkt 3D jest konwertowany na układ współrzędnych 3D aparatu docelowego przy użyciu k4a_calibration_3d_to_3d(). Gdy punkt 3D jest reprezentowany w układzie współrzędnych kamery docelowej, odpowiednie współrzędne 2D pikseli są obliczane przy użyciu wewnętrznej kalibracji aparatu docelowego. Jeśli punkt 3D wypada z widocznego obszaru aparatu docelowego, prawidłowa wartość jest ustawiona na 0.

Funkcja k4a_calibration_2d_to_3d() konwertuje współrzędną 2D kamery źródłowej na punkt 3D układu współrzędnych aparatu docelowego. Źródło musi być kamerą koloru lub głębokości. Element docelowy można ustawić na dowolny z czterech układów współrzędnych 3D. Oprócz współrzędnych pikseli 2D wartość głębokości piksela (w milimetrach) na obrazie aparatu źródłowego jest wymagana jako dane wejściowe funkcji, jednym ze sposobów uzyskania wartości głębokości w geometrii aparatu kolorów jest użycie funkcji k4a_transformation_depth_image_to_color_camera(). Funkcja oblicza promienie 3D wiodące z punktu centralnego kamery źródłowej poprzez określoną współrzędną pikseli przy użyciu wewnętrznej kalibracji kamery źródłowej. Wartość głębokości jest następnie używana do znalezienia dokładnej lokalizacji punktu 3D na tym promieniu. Ta operacja jest często nazywana funkcją unproject. Jeśli kamery źródłowe i docelowe są inne, funkcja przekształca punkt 3D na układ współrzędnych celu za pośrednictwem k4a_calibration_3d_to_3d(). Jeśli współrzędna 2D pikseli wypada z widocznego obszaru aparatu źródłowego, prawidłowa wartość jest ustawiona na 0.

Konwertowanie między układami współrzędnych 2D

Funkcja k4a_calibration_2d_to_2d() konwertuje współrzędną 2D kamery źródłowej na współrzędną 2D pikseli aparatu docelowego. Źródło i cel muszą być ustawione na kamerę koloru lub głębokości. Funkcja wymaga wartości głębokości piksela (w milimetrach) w obrazie aparatu źródłowego jako danych wejściowych. Jednym ze sposobów uzyskania wartości głębokości w geometrii aparatu kolorów jest użycie funkcji k4a_transformation_depth_image_to_color_camera(). Wywołuje k4a_calibration_2d_to_3d(), aby przekonwertować na punkt 3D systemu kamer źródłowych. Następnie wywołuje k4a_calibration_3d_to_2d(), aby przekonwertować na współrzędną 2D pikseli obrazu aparatu docelowego. Prawidłowa wartość jest ustawiona na 0, jeśli k4a_calibration_2d_to_3d() lub k4a_calibration_3d_to_2d() zwraca nieprawidłowy wynik.

Następne kroki

Teraz wiesz już o kalibracji aparatów, możesz również dowiedzieć się, jak

Możesz również przejrzeć

Układy współrzędnych