Sdílet prostřednictvím


Použití funkcí kalibrace Azure Kinect

Funkce kalibrace umožňují transformaci bodů mezi souřadnicovými systémy jednotlivých senzorů na zařízení Azure Kinect. Aplikace vyžadující převod celých imagí můžou využívat akcelerované operace, které jsou k dispozici v transformačních funkcích.

Načtení dat kalibrace

Aby bylo možné provést transformace souřadnicového systému, je nutné načíst kalibraci zařízení. Data kalibrace jsou uložena v datovém typu k4a_calibration_t . Získá se ze zařízení prostřednictvím funkce k4a_device_get_calibration(). Údaje o kalibraci jsou specifické nejen pro každé zařízení, ale také pro provozní režim fotoaparátů. Proto k4a_device_get_calibration() vyžaduje depth_mode jako vstup parametry a color_resolution .

Kompatibilita OpenCV

Parametry kalibrace jsou kompatibilní s OpenCV. Další informace o jednotlivých parametrech kalibrace kamery najdete také v dokumentaci k OpenCV. Podívejte se také na příklad kompatibility sady SDK s OpenCV , který demonstruje převod mezi typem k4a_calibration_t a odpovídajícími datovými strukturami OpenCV.

Funkce transformace souřadnic

Následující obrázek znázorňuje různé souřadnicové systémy Azure Kinectu a také funkce, které se mezi nimi mají převést. Vynecháme 3D souřadnicové systémy gyroskopu a akcelerometru, aby byl obrázek jednoduchý.

Transformace souřadnic

Poznámka ke zkreslení čočky: 2D souřadnice vždy odkazují na zkreslený obrázek v sadě SDK. Příklad nedistortion sady SDK ukazuje zrušení rozdělení image. Obecně platí, že 3D body nebudou nikdy ovlivněny zkreslením čočky.

Převod mezi 3D souřadnicovými systémy

Funkce k4a_calibration_3d_to_3d() převede 3D bod zdrojového souřadnicového systému na 3D bod cílového souřadnicového systému pomocí vnější kalibrace kamery. Zdroj a cíl lze nastavit na libovolný ze čtyř 3D souřadnicových systémů, to znamená barevnou kameru, hloubkovou kameru, gyroskop nebo akcelerometr. Pokud jsou zdroj a cíl identické, vrátí se jako výstup neupravený vstupní 3D bod.

Převod mezi 2D a 3D souřadnicovými systémy

Funkce k4a_calibration_3d_to_2d() převede 3D bod zdrojového souřadnicového systému na souřadnici 2D pixelů cílové kamery. Tato funkce se často označuje jako projektová funkce. I když zdroj lze nastavit na kterýkoli ze čtyř 3D souřadnicových systémů, cílem musí být hloubková nebo barevná kamera. Pokud se zdroj a cíl liší, vstupní 3D bod se převede na 3D souřadnicový systém cílové kamery pomocí k4a_calibration_3d_to_3d(). Jakmile je 3D bod reprezentován v souřadnicovém systému cílové kamery, jsou odpovídající souřadnice 2D pixelů vypočítány pomocí vnitřní kalibrace cílové kamery. Pokud 3D bod vypadne z viditelné oblasti cílové kamery, je platná hodnota nastavena na 0.

Funkce k4a_calibration_2d_to_3d() převede souřadnici 2D pixelů zdrojové kamery na 3D bod souřadnic cílové kamery. Zdrojem musí být barevná nebo hloubková kamera. Cíl lze nastavit na kterýkoli ze čtyř 3D souřadnicových systémů. Kromě souřadnice 2D pixelů se jako vstup do funkce vyžaduje hodnota hloubky pixelu (v milimetrech) na obrázku zdrojové kamery. Jedním ze způsobů, jak odvodit hodnotu hloubky v geometrii barevné kamery, je použít funkci k4a_transformation_depth_image_to_color_camera(). Funkce vypočítá 3D paprsek vedoucí od fokusu zdrojového fotoaparátu přes zadanou souřadnici pixelů pomocí vnitřní kalibrace zdrojové kamery. Hodnota hloubky se pak použije k nalezení přesného umístění 3D bodu na tomto paprsku. Tato operace se často označuje jako neprojektová funkce. Pokud se zdrojová a cílová kamera liší, funkce transformuje 3D bod na souřadnicový systém cíle prostřednictvím k4a_calibration_3d_to_3d(). Pokud souřadnice 2D pixelů spadá mimo viditelnou oblast zdrojové kamery, je platná hodnota nastavena na 0.

Převod mezi 2D souřadnicovými systémy

Funkce k4a_calibration_2d_to_2d() převede souřadnici 2D pixelů zdrojové kamery na souřadnici 2D pixelů cílové kamery. Zdroj a cíl musí být nastaveny na barvu nebo hloubkovou kameru. Funkce vyžaduje jako vstup hodnotu hloubky pixelu (v milimetrech) ve zdrojovém obrázku fotoaparátu. Jedním ze způsobů, jak odvodit hodnotu hloubky v geometrii barevné kamery, je použít funkci k4a_transformation_depth_image_to_color_camera(). Volá k4a_calibration_2d_to_3d() pro převod na 3D bod zdrojového kamerového systému. Potom zavolá k4a_calibration_3d_to_2d() a převede ho na souřadnici 2D pixelů obrázku cílové kamery. Platná hodnota je nastavena na 0, pokud k4a_calibration_2d_to_3d() nebo k4a_calibration_3d_to_2d() vrátí neplatný výsledek.

Další kroky

Nyní víte o kalibraci fotoaparátů, můžete se také naučit, jak

Můžete také zkontrolovat

Systémy souřadnic