Korzystanie z funkcji kalibracji zestawu Azure Kinect
Funkcje kalibracji umożliwiają przekształcanie punktów między układami współrzędnymi 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 typie danych k4a_calibration_t . 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 programem OpenCV
Parametry kalibracji są zgodne z openCV. Aby uzyskać więcej informacji na temat poszczególnych parametrów kalibracji aparatu, 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ć.
Uwaga na temat zniekształceń obiektywu: współrzędne 2D zawsze odnoszą się do zniekształconego obrazu w zestawie SDK. Przykład niezakłócania zestawu SDK demonstruje niezakłócanie obrazu. Ogólnie rzecz biorąc, punkty 3D nigdy nie będą miały wpływu na zniekształcenie 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 układu współrzędnych docelowych przy użyciu kalibracji zewnętrznej kamery. Źródło i cel można ustawić na dowolny z czterech układów współrzędnych 3D, czyli kamery kolorów, kamery głębi, żyroskopu lub akcelerometru. Jeśli źródło i element docelowy 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 nazywana funkcją projektu. Chociaż źródło można ustawić na dowolny z czterech układów współrzędnych 3D, element docelowy musi być głębokością lub kolorem kamery. Jeśli źródło i cel są inne, punkt wejściowy 3D jest konwertowany na układ współrzędnych 3D kamery docelowej 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 pikseli 2D są obliczane przy użyciu wewnętrznej kalibracji kamery docelowej. 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 aparatu źródłowego 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 przez określoną współrzędną pikseli przy użyciu wewnętrznej kalibracji aparatu źródłowego. Następnie wartość głębokości jest 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ą różne, funkcja przekształca punkt 3D na układ współrzędnych obiektu docelowego 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 aparatu źródłowego na współrzędną 2D piksela aparatu docelowego. Źródło i element docelowy 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 aparatu źródłowego. Następnie wywołuje k4a_calibration_3d_to_2d(), aby przekonwertować na współrzędną 2D 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.
Powiązane przykłady
Następne kroki
Teraz wiesz już o kalibracji kamer, możesz również dowiedzieć się, jak
Możesz również przejrzeć