2*2D naar 3D

Moderators: dirkwb, Xilvo

Reageer
Berichten: 26

2*2D naar 3D

Hallo

Ik heb een problem. Wat ik wil doen is 2*2D(X1, Y1, X2, Y2) naar een 3D punt kunnen omzetten.

Visiueel gezien heb ik een kubus van 800x800x200mm (l*b*h). Ik heb 2 IR sensoren die beide 90 graden ten opzichte van elkaar een vlak waarnemen. Hieruit verkrijg ik voor het VA de X1 en Y1, en voor het zij aanzicht de X2 en Y2. De sensor neemt geen diepte waar, dus vandaar het gebruik van 2 IR sensoren die beide het zelfde punt waarnemen.

De in valshoek van de sensor bedraagt 45 graden met een pixelafstand van x:1024 en y:768. De afstand vanaf de sensor tot aan het midden van de kubus is: 1469,8 mm.

Vergelijkbaar met 2 wiimotes waarmee je een 3D punt kan berekenen uit simpelweg de X en Y coordinaat van de wiimotes.

Heeft iemand een tip om mij op de weg te helpen? Ik heb al een aantal pogingen gewaagd om het met de sin cos tan te berekenen, maar ik denk dat het hiermee te onoverzichtelijk wordt en misschien heeft iemand al een methode om dit te berekenen?

Ik heb een aantal dingen in gedachten, zoals als men weet hoeveel pixels, in een hoek van 1 graden bevat. Dit zou dan 1024/45= 22.8 pixels per graden moet zijn. Wat ik dan niet weet is, hoe kom ik erachter wat de hoek is van een punt wat je alleen kan achterhalen met X1 en Y1, X2 en Y2? Moet ik eerst een aantal punten vaststellen ofzo? Kan iemand mij meer vertellen over deze manier van meetkunde (heb het nooit gehad op school).

PS: Dit is geen school opdracht.

Alvast bedankt

Groeten

Pascal

Gebruikersavatar
Berichten: 2.609

Re: 2*2D naar 3D

Ik vind zo direct geen goeie bron en het is voor mezelf ook al even geleden, maar je zou eens moeten zoeken naar "epipolar geometry" en "stereo computer vision".

edit: hier staat op het eerste zicht vrij veel uitleg, maar zoals je ziet is dat allemaal niet zo simpel

Gebruikersavatar
Berichten: 5.609

Re: 2*2D naar 3D

Stap 1: bepaal je camera matrix van beide camera's in homogene coördinaten. http://en.wikipedia....i/Camera_matrix http://en.wikipedia....ous_coordinates

Stap 2: Bepaal de transformatie van het wereldcoördinatenstelsel naar het cameracoördinatenstelsel (combinatie van rotatie en translatie/verplaatsing)

Stap 3: gebruik die transformatie om je camera matrix om te zetten in wereldcoördinaten.

Stap 4: Projecteer de coördinaat die je uitkomt met je cameramatrix. Je bekomt de homogene representatie van een lijn per pixel in wereldcoördinaten.

Stap 5: bereken het snijpunt, of het punt dat het dichtst bij beide lijnen ligt (erg eenvoudig in homogene coördinaten)

Ik heb er nog een vak over gevolgd en dit is de beste manier om het te doen zonder te veel voorkennis. Het vereist wel kennis over matrices en hun relatie met meetkunde. Het komt overeen met methode op pagina 32 van Xenion's link. Als je exact weet welk punt matcht met welk punt op de andere afbeelding, werkt dat beter dan als je gebruik maakt van epipolaire methodes.

Indien niet kun je het ook zonder matrices proberen te doen. Wat je dan zou moeten doen, is de vergelijking van de lijn bepalen in wereldcoördinaten die je 2 pixels elk definiëren. Uit die vergelijkingen kun je dan het punt vinden dat het dichtst bij je 2 lijnen ligt (want ze gaan elkaar waarschijnlijk niet snijden).

Met zuivere driehoeksmeetkunde zou ik er niet aan beginnen.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Reageer