Springen naar inhoud

2*2D naar 3D


  • Log in om te kunnen reageren

#1

RockboyTheSunriser

    RockboyTheSunriser


  • >25 berichten
  • 26 berichten
  • Gebruiker

Geplaatst op 16 april 2013 - 08:56

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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 16 april 2013 - 10:18

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

#3

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 16 april 2013 - 11:21

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-





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures