Springen naar inhoud

2 camera's, perspectief en coordinaten


  • Log in om te kunnen reageren

#1

arretjenof

    arretjenof


  • 0 - 25 berichten
  • 15 berichten
  • Gebruiker

Geplaatst op 04 oktober 2007 - 21:30

beste forumleden,

ik zit met een kwestie die volgens mij (eigenlijk) erg eenvoudig moet zijn, maar ik kom er echt even niet uit.
om het probleem uit te leggen gebruik ik twee plaatjes. (zie onder)

2 camera's bevinden zich in een vlak onder een hoek van 90º graden t.o.v. elkaar.
nu wil ik adhv. de metingen van de camera's de x- en y-coordinaten bepalen van een object (hand) in dat vlak.
vergeet voor nu even HOE die camera's dat meten, en voor het gemak gaan we ervan uit dat de camera's slechts een punt op een lijn waarnemen.

nu is mijn vraag:
hoe reken ik de twee gemeten waarden om naar de (werkelijke) x- en y coordinaten in het rechthoekige vlak?
er dient dus rekening gehouden te worden met perspectief e.d.

ik zou hulp hierbij erg op prijs stellen!
dank.


gr
arri


A) schematisch (vooraanzicht)
Geplaatste afbeelding

B) 3D model
Geplaatste afbeelding

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

#2

arretjenof

    arretjenof


  • 0 - 25 berichten
  • 15 berichten
  • Gebruiker

Geplaatst op 07 oktober 2007 - 12:32

hmm, ik hoop niet dat dit te moeilijk is (?)

ik hoor het ook graag als het juist te simpel is,
en sta open voor evt. verwijzingen naar andere plekken
waar deze vraag misschien meer op zn plek is..

maar ik ben uiteraard helemaal blij met aanwijzingen in de richting van een oplossing :D

dank
arri

#3

Fred F.

    Fred F.


  • >1k berichten
  • 4168 berichten
  • Pluimdrager

Geplaatst op 10 oktober 2007 - 11:47

vergeet voor nu even HOE die camera's dat meten, en voor het gemak gaan we ervan uit dat de camera's slechts een punt op een lijn waarnemen.

Als wij niet weten hoe of wat de cameras "meten" dan houdt het hier al op want:

hoe reken ik de twee gemeten waarden om naar de (werkelijke) x- en y coordinaten in het rechthoekige vlak?
er dient dus rekening gehouden te worden met perspectief e.d.

is dan natuurlijk onmogelijk te beantwoorden, netzomin wat de invloed van perspectief zou kunnen zijn.
Hydrogen economy is a Hype.

#4

Jan van de Velde

    Jan van de Velde


  • >5k berichten
  • 44820 berichten
  • Moderator

Geplaatst op 10 oktober 2007 - 17:07

is dat niet simpelweg een kwestie van hoeken?
camera__s.gif
ALS WIJ JE GEHOLPEN HEBBEN....
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

#5

Miels

    Miels


  • >5k berichten
  • 14506 berichten
  • Beheer

Geplaatst op 11 oktober 2007 - 09:21

vergeet voor nu even HOE die camera's dat meten, en voor het gemak gaan we ervan uit dat de camera's slechts een punt op een lijn waarnemen.

Als wij niet weten hoe of wat de cameras "meten" dan houdt het hier al op

Daar sluit ik me bij aan. Wat is de output van de camera's?
Wellicht mogen we aannemen dat slechts 1 lijn pixels wordt uitgestuurd, waarbij 1 pixel het (centum van het) te lokaliseren object is. Een eventuele vertekening door perspectief is te compenseren door te eiken (je zou de camera op een meetlint kunnen richten en een formule kunnen afleiden die corrigeert)

is dat niet simpelweg een kwestie van hoeken?

Daar zat ik ook aan te denken. Wanneer je de hoeken vanuit beide camera's weet en de locatie van de camera's kan je aan de slag.

Never be afraid to try something new. Remember, amateurs built the ark. Professionals built the Titanic


#6

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 11 oktober 2007 - 16:13

In de praktijk meet een camera natuurlijk een vlak, en kun je dit met 3 camera's in 3 dimensies doen, maar zoals arretjenof aangeeft kunnen we ervan uitgaan dat de camera's een punt op een lijn registreren.

De vraag is nu hoe je uit de twee geprojecteerde (d.w.z. door de camera gemeten) coordinaten weer het oorspronkelijke punt kunt reconstrueren. Daarvoor hoeven de camera's niet eens 90o ten opzichte van elkaar te staan.

We bekijken even één camera afzonderlijk:
Geplaatste afbeelding
C is hier het punt (de coordinaten) waar de camera staat, D is de richting waarin de camera kijkt, en het gearceerde deel is het gebied dat de camera kan zien (dit hangt af van de kijkhoek van de camera, ook wel "field of view" (FOV) angle).

Let op dat D een richting is, relatief ten opzichte van C, en geen absoluut punt.

Nu construeren we twee vectoren links en rechts van het kijkveld van de camera:
Geplaatste afbeelding
DL is de richting vanuit C van wat er nog net links in beeld valt, en idem DR rechts. De hoeken LaTeX tussen de lijnen C-D en C-DL en tussen de lijnen C-D en C-DR zijn tezamen de kijkhoek van de camera (dus LaTeX =FOV/2).

De vectoren DL en DR bereken je door D over een hoek LaTeX respectievelijk LaTeX te roteren. Dus:
LaTeX
En voor DR idem met LaTeX (of andersom, afhankelijk van of je een rechtshandig of linkshandig georiënteerd coördinatenstelsel gebruikt).

Nou is het punt dat de camera heeft gemeten, een coördinaat op de projectielijn (of in de praktijk waarschijnlijk projectievlak). Laten we even uitgaan dat de gemeten coördinaten van 0 tot 1 lopen, waarbij 0 uiterst links op de lijn is, en 1 uiterst rechts:
Geplaatste afbeelding
Ik heb het zo getekend voor de duidelijkheid, die denkbeeldige projectielijn staat in de praktijk oneindig dichtbij de camera.

Het gemeten punt heeft dus een coördinaat t op de projectielijn.

Aan de hand hiervan kun je een richtingsvector P bepalen, die vanuit de camera in de richting van het waargenomen punt wijst:
Geplaatste afbeelding
P reken je simpelweg uit met: LaTeX
(Even terzijde: merk op dat D, DL en DR niet genormaliseerd hoeven te zijn, als DL en DR maar even lang zijn. En al waren DL en DR wel genormaliseerd, dan is P dat niet, maar dat is ook niet nodig)

Je weet nu dat het oorspronkelijke punt LaTeX gelijk is aan LaTeX voor een onbekend getal u (hoe verder het oorspronkelijke punt van de camera ligt, hoe groter u, maar dat kun je aan het gemeten beeld van één camera nooit zien).


Je kunt nu hetzelfde doen voor de andere camera. Je krijgt dan uiteindelijk:
LaTeX (en die zijn beide gelijk aan LaTeX )

Als je de vectoren uitschrijft zijn dit twee simpele lineaire vergelijkingen met 2 onbekenden (u en v), en dat is makkelijk op te lossen, waarmee je ook x en y hebt.

Succes!
In theory, there's no difference between theory and practice. In practice, there is.

#7

arretjenof

    arretjenof


  • 0 - 25 berichten
  • 15 berichten
  • Gebruiker

Geplaatst op 12 oktober 2007 - 10:16

twee simpele lineaire vergelijkingen met 2 onbekenden (u en v), en dat is makkelijk op te lossen

Succes!


He Rogier,

ontzettend bedankt voor je heldere uitleg!
ik had die 90º voor het gemak gesteld. uiteindelijk moet er een systeem worden ontwikkelen waarmee derden de camera's met eenvoudige instructies (niet al te nauwkeurig) kunnen plaatsen en calibreren. ik ben daarmee nu direct een stuk verder.
dank!

Als wij niet weten hoe of wat de cameras "meten" dan houdt het hier..

Daar sluit ik me bij aan. Wat is de output van de camera's?


een kleine toelichting;
de camera's 'registreren' natuurlijk beiden een groot 2D vlak, maar ik gebruik van beide beelden slechts smalle strook.
deze twee stroken liggen in het zelfde 'platte vlak'. voor de vraagstelling leek het me handig het probleem zo te reduceren. de meting zelf word softmatig gedaan met een eenvoudig blob-detection algoritme.

ik zal jullie op de hoogte houden van evt. interessante ontwikkelingen :D

nogmaals dank,
gr
arri





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures