Dela via


Använda Azure Kinect-kalibreringsfunktioner

Kalibreringsfunktionerna möjliggör transformering av punkter mellan koordinatsystemen för varje sensor på Azure Kinect-enheten. Program som kräver konvertering av hela bilder kan dra nytta av de accelererade åtgärder som är tillgängliga i transformeringsfunktioner.

Hämta kalibreringsdata

Det är nödvändigt att hämta enhetskalibreringen för att utföra koordinatsystemtransformeringar. Kalibreringsdata lagras i datatypen k4a_calibration_t . Den hämtas från enheten via funktionen k4a_device_get_calibration(). Kalibreringsdata är inte bara specifika för varje enhet, utan även för kamerornas driftsläge. Därför kräver k4a_device_get_calibration() parametrarna depth_mode och color_resolution som indata.

OpenCV-kompatibilitet

Kalibreringsparametrarna är kompatibla med OpenCV. Mer information om de enskilda parametrarna för kamerakalibrering finns även i OpenCV-dokumentationen. Se även OpenCV-kompatibilitetsexemplet för SDK:t som visar konvertering mellan k4a_calibration_t-typen och motsvarande OpenCV-datastrukturer.

Koordinattransformeringsfunktioner

Bilden nedan visar de olika koordinatsystemen i Azure Kinect samt de funktioner som ska konverteras mellan dem. Vi utelämnar 3D-koordinatsystemen gyroskop och accelerometer för att hålla figuren enkel.

Koordinattransformeringen

Anmärkning om linsförvrängning: 2D-koordinater refererar alltid till den förvrängda bilden i SDK:et. Exempel på icke-dirigering av SDK visar bildexttortion. I allmänhet kommer 3D-punkter aldrig att påverkas av linsförvrängning.

Konvertera mellan 3D-koordinatsystem

Funktionen k4a_calibration_3d_to_3d() konverterar en 3D-punkt i källkoordinatsystemet till en 3D-punkt i målkoordinatsystemet med hjälp av kamerans extrinsiska kalibrering. Källa och mål kan ställas in på något av de fyra 3D-koordinatsystemen, dvs. färgkamera, djupkamera, gyroskop eller accelerometer. Om källan och målet är identiska returneras den oförändrade indata-3D-punkten som utdata.

Konvertera mellan 2D- och 3D-koordinatsystem

Funktionen k4a_calibration_3d_to_2d() konverterar en 3D-punkt i källkoordinatsystemet till en 2D-pixelkoordinat för målkameran. Den här funktionen kallas ofta för projektfunktion. Källan kan ställas in på något av de fyra 3D-koordinatsystemen, men målet måste vara djup- eller färgkameran. Om källan och målet skiljer sig konverteras indata-3D-punkten till målkamerans 3D-koordinatsystem med hjälp av k4a_calibration_3d_to_3d(). När 3D-punkten representeras i målkamerans koordinatsystem beräknas motsvarande 2D-pixelkoordinater med hjälp av målkamerans inbyggda kalibrering. Om en 3D-punkt faller ut från målkamerans synliga område är det giltiga värdet inställt på 0.

Funktionen k4a_calibration_2d_to_3d() konverterar en 2D-pixelkoordinat för källkameran till en 3D-punkt i målkamerans koordinatsystem. Källan måste vara färg eller djupkamera. Målet kan anges till något av de fyra 3D-koordinatsystemen. Förutom 2D-pixelkoordinaten krävs pixelns djupvärde (i millimeter) i källkamerans bild som indata till funktionen, ett sätt att härleda djupvärdet i färgkamerans geometri är att använda funktionen k4a_transformation_depth_image_to_color_camera(). Funktionen beräknar 3D-strålen som leder från källkamerans brännpunkt genom den angivna pixelkoordinaten med hjälp av källkamerans inbyggda kalibrering. Djupvärdet används sedan för att hitta den exakta platsen för 3D-punkten på den här strålen. Den här åtgärden kallas ofta för oprojektfunktion. Om käll- och målkamerorna är olika omvandlar funktionen 3D-punkten till målets koordinatsystem via k4a_calibration_3d_to_3d(). Om en 2D-pixelkoordinat faller ut från källkamerans synliga område anges det giltiga värdet till 0.

Konvertera mellan 2D-koordinatsystem

Funktionen k4a_calibration_2d_to_2d() konverterar en 2D-pixelkoordinat för källkameran till en 2D-pixelkoordinat för målkameran. Källa och mål måste vara inställda på färg- eller djupkamera. Funktionen kräver pixelns djupvärde (i millimeter) i källkamerabilden som indata. Ett sätt att härleda djupvärdet i färgkamerans geometri är att använda funktionen k4a_transformation_depth_image_to_color_camera(). Den anropar k4a_calibration_2d_to_3d() för att konvertera till en 3D-punkt i källkamerasystemet. Sedan anropas k4a_calibration_3d_to_2d() för att konvertera till en 2D-pixelkoordinat för målkamerabilden. Det giltiga värdet är inställt på 0 om k4a_calibration_2d_to_3d() eller k4a_calibration_3d_to_2d() returnerar ett ogiltigt resultat.

Nästa steg

Nu när du vet om kamerakalibreringar kan du också lära dig hur du

Du kan också granska

Koordinatsystem