3D-ställningsuppskattning

Poseuppskattning i ett motion capture- system

3D-poseuppskattning är en process för att förutsäga transformationen av ett objekt från en användardefinierad referenspose, givet en bild eller en 3D-skanning . Det uppstår i datorseende eller robotik där posituren eller transformationen av ett objekt kan användas för anpassning av datorstödda designmodeller , identifiering, grepp eller manipulation av objektet.

Bilddata från vilken positionen för ett objekt bestäms kan vara antingen en enstaka bild, ett stereobildpar eller en bildsekvens där kameran vanligtvis rör sig med en känd hastighet. De föremål som övervägs kan vara ganska allmänna, inklusive en levande varelse eller kroppsdelar, t.ex. ett huvud eller händer. Metoderna som används för att bestämma ställningen för ett objekt är dock vanligtvis specifika för en klass av objekt och kan i allmänhet inte förväntas fungera bra för andra typer av objekt.

Från en okalibrerad 2D-kamera

Det är möjligt att uppskatta 3D-rotationen och translationen av ett 3D-objekt från ett enda 2D-foto, om en ungefärlig 3D-modell av objektet är känd och motsvarande punkter i 2D-bilden är kända. En vanlig teknik för att lösa detta har nyligen [ när? ] varit "POSIT", där 3D-positionen uppskattas direkt från 3D-modellpunkterna och 2D-bildpunkterna, och korrigerar felen iterativt tills en bra uppskattning hittas från en enda bild. De flesta implementeringar av POSIT fungerar bara på icke-samplanära punkter (med andra ord, det fungerar inte med platta objekt eller plan).

Ett annat tillvägagångssätt är att registrera en 3D CAD-modell över fotografiet av ett känt objekt genom att optimera ett lämpligt avståndsmått med avseende på poseparametrarna. Avståndsmåttet beräknas mellan objektet på fotografiet och 3D CAD- modellprojektionen vid en given ställning. Perspektivprojektion eller ortogonal projektion är möjlig beroende på vilken positionsrepresentation som används. Detta tillvägagångssätt är lämpligt för applikationer där en 3D CAD-modell av ett känt objekt (eller objektkategori) är tillgänglig.

Från en kalibrerad 2D-kamera

Givet en 2D-bild av ett objekt, och kameran som är kalibrerad med avseende på ett världskoordinatsystem, är det också möjligt att hitta den ställning som ger 3D-objektet i dess objektkoordinatsystem. Detta fungerar enligt följande.

Extrahera 3D från 2D

Med början i en 2D-bild extraheras bildpunkter som motsvarar hörn i en bild. Projektionsstrålarna från bildpunkterna rekonstrueras från 2D-punkterna så att 3D-punkterna, som måste infalla med de rekonstruerade strålarna, kan bestämmas.

Pseudokod

Algoritmen för att bestämma positionsuppskattning är baserad på den iterativa närmaste punktalgoritmen . Huvudidén är att bestämma överensstämmelsen mellan 2D-bildegenskaper och punkter på 3D-modellkurvan.

(a) Rekonstruera projektionsstrålar från bildpunkterna (b) Uppskatta den närmaste punkten för varje projektionsstråle till en punkt på 3D-konturen (c) Uppskatta konturens position med hjälp av denna korrespondensuppsättning (d) goto (b) )

Algoritmen ovan tar inte hänsyn till bilder som innehåller ett objekt som är delvis tilltäppt. Följande algoritm förutsätter att alla konturer är styvt kopplade, vilket betyder att posen för en kontur definierar posen för en annan kontur.

(a) Rekonstruera projektionsstrålar från bildpunkterna (b) För varje projektionsstråle R: (c) För varje 3D-kontur: (c1) Uppskatta den närmaste punkten P1 för strålen R till en punkt på konturen (c2) om (n) == 1) välj P1 som faktisk P för punktlinjeöverensstämmelsen (c3) annars jämför P1 med P: om dist(P1, R) är mindre än dist(P, R) välj sedan P1 som nytt P (d) Använd (P, R) som korrespondensuppsättning. (e) Uppskatta posering med denna korrespondensuppsättning (f) Transformera konturer, gå till (b)

Uppskattning av posering genom jämförelse

Det finns system som använder en databas av ett objekt vid olika rotationer och översättningar för att jämföra en ingångsbild mot att uppskatta posen. Dessa systemnoggrannhet är begränsad till situationer som är representerade i deras databas med bilder, men målet är att känna igen en pose, snarare än att bestämma den.

programvara

  • posest , ett GPL C / C++ -bibliotek för 6DoF-ställningsuppskattning från 3D-2D-korrespondenser.
  • diffgeom2pose , snabb Matlab-lösare för 6DoF-ställningsuppskattning från endast två 3D-2D-överensstämmelser av punkter med riktningar (vektorer), eller punkter vid kurvor (punkt-tangenter). Punkterna kan SIFT- tillskrivas med funktionsanvisningar.
  • MINUS : C++-paket för (relativ) poseuppskattning av tre vyer. Inkluderar fall av tre motsvarande punkter med linjer vid dessa punkter (som i objektpositioner och orienteringar, eller kurvpunkter med tangenter), och även för tre motsvarande punkter och en linjeöverensstämmelse.

Se även

Bibliografi

externa länkar