2.4 Experiment 4: 3D object tracking
3D informatie van ruimtes en objecten kan op verschillende manieren gemeten worden.
Hier beschrijven we systemen gebaseerd op camera beelden. Beelden van een camera kunnen geprojecteerd worden op een vlak om XY informatie te bepalen. Om tevens ook de Z-informatie uit de beelden te halen moet de afstand van het object tot de camera nauwkeurig bepaald kunnen worden. Het eenvoudigste, maar tevens minst nauwkeurige is de grootte van het object gebruiken om de afstand tot de camera te berekenen. Dit is onnauwkeurig omdat rotatie en partiele occlusie van het object veelal een invloed hebben op de gemeten grootte.
Diepte informatie kan alternatief bepaald worden door beelden van meerdere camera’s te combineren zoals Stereo-vision en de afstand tot de camera te trianguleren.
Stereo Vision Camera Calibration in Python with OpenCV - Python Script with Images
Deze Bottom up approach omvat ook het kalibreren van de camera’s, transformaties en triangulaties om 3D coördinaten op te nemen.
In theorie kan voor een opslagruimte waarin meerdere camera’s reeds opgesteld werden en waar er een overlap is van de Field of view van de camera’s de te monitoren ruimte de beelden van de camera’s zo gekalibreerd worden dat 3D informatie van objecten in de ruimte kan bepaald worden. Hiervoor moet de resolutie van de beelden van de camera’s gelijk zijn en bij elke wijziging in afstand tussen camera’s of veranderen van camera moet het systeem opnieuw gekalibreerd worden.
Een alternatief is gebruik maken van een stereo camera die alle kalibraties intern reeds uitvoert. De software van de realsense camera’s laat zelfs toe om op de beelden 3D metingen direct uit te voeren, wat real life opmeten van de ruimte en camera positie kan vermijden.
Voor de test set-up bij Howest werd een vierkant grondoppervlak van 50cm bij 50 cm afgezet om de XY coördinaten in cm ten opzichte van een hoekpunt te meten en zo tot real-life posities te komen.
2D beeld van de 50 cm bij 50 cm grondvlak
3D beeld van de 50 cm op 50 cm grondvlak.
Illustratie van de 4 hoekpunten in de 2D en 3D beelden.
Punt 2: 0.738 meter afstand tot de camera
Door middel van deze camera kunnen ook afstanden tussen punten in 3D gemeten worden. Hieronder staat een bekertje op een verhoogje.
et verhoogje hier is 14.2 cm hoog.
De software is handig om de ruimte op te meten en handmatig XYZ locaties op te meten. Om automatisch posities op te meten moet de software geprogrammeerd worden in Python. Python neemt van de RGB beelden en dieptemap als input. Het RGPB beeld wordt geprojecteerd op het XY vlak waarbij het geprojecteerde XY coördinaten worden bepaald. De dieptemap wordt gebruikt om de afstand tot de camera te berekenen.
Met behulp van deze gegevens kan de XYZ positie van een object berekend worden.
De gegevens die uit de camera beelden komen zijn de geprojecteerde XY positie “XY proj” op het grondoppervlak en de aftand tot de camera “Dist calc” tot het gele object. Om tot de XYZ coordinaten te komen is de XY positie van de camera en de hoogte van de camera nodig.