2 camera's, perspectief en coordinaten

Moderators: dirkwb, Xilvo

Reageer
Berichten: 18

2 camera's, perspectief en coordinaten

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)

Afbeelding

B) 3D model

Afbeelding

Berichten: 18

Re: 2 camera's, perspectief en coordinaten

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

Gebruikersavatar
Pluimdrager
Berichten: 4.168

Re: 2 camera's, perspectief en coordinaten

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.

Gebruikersavatar
Moderator
Berichten: 51.264

Re: 2 camera's, perspectief en coordinaten

is dat niet simpelweg een kwestie van hoeken?
camera__s.gif
camera__s.gif (7.56 KiB) 672 keer bekeken
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

Gebruikersavatar
Beheer
Berichten: 15.202

Re: 2 camera's, perspectief en coordinaten

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

Gebruikersavatar
Berichten: 5.679

Re: 2 camera's, perspectief en coordinaten

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:

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:

Afbeelding

DL is de richting vanuit C van wat er nog net links in beeld valt, en idem DR rechts. De hoeken
\(\alpha\)
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
\(\alpha\)
=FOV/2).

De vectoren DL en DR bereken je door D over een hoek
\(\alpha\)
respectievelijk
\(-\alpha\)
te roteren. Dus:
\(\vec{DL} = \left( \startmatrix { \cos(\alpha) & \sin(\alpha) \\ -\sin(\alpha) & \cos(\alpha) } \endmatrix \right)\cdot \vec{D} \)
En voor DR idem met
\(-\alpha\)
(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:

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:

Afbeelding

P reken je simpelweg uit met:
\(\vec{P} = \vec{DL} + t\cdot(\vec{DR}-\vec{DL})\)
(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
\({x \choose y}\)
gelijk is aan
\(\vec{C}+u\cdot\vec{P}\)
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:
\(\vec{C_1}+u\cdot\vec{P_1} = \vec{C_2}+v\cdot\vec{P_2}\)
(en die zijn beide gelijk aan
\({x \choose y}\)
)

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.

Berichten: 18

Re: 2 camera's, perspectief en coordinaten

Rogier schreef: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

Reageer