Epipolar geometry computations ...
hello hello :)
I got a litle math pb .
Im working on some image algorithm .
I got 2 view of the same scene and i wanna be able to render it in 3D .
Im learing the basics atm .
I use the epipolar geometire, i have computed the Fundamental matrix .
I just wana be able to draw epipolar lines now .
First, i wanna know how to i compute epipoles .
I read that :
E(t) * F = 0
F * E' = 0
That's cool , but when i solve those system i always get
E' = 0
0
0
I suposed E and E' are ( 3,1) matrix ) and 0 is the null (3,1) matrix ... i may be wrong somewhere ...
can you help me ?
thx :)
i just loooked again over many and many pdf dealing with that ... i cant find what i missing :/
any idea?
any idea?
Suppose that e2'Fe1=0, where e2 is the epipole in the second image and e1 in first one (a' is vector a transposed).
If e2 and e1 are the epipoles it follows that e2'*F=0 and F*e1=0 so e1 and e2 are, respectively, the right and the left null space of F. You can find them with the SVD decomposition of matrix F -> F=UDV' then e1 is the last column of V (the righ null space). Don't forget that e1 and e2 are expressed in homogeneous coordinates.
Anyway...finding F is only a step of a 3d reconstruction, a lot of problem still remain, such camera calibration and so on...
Search for Zisserman on Google...he's the guru of 3d reconstruction
If e2 and e1 are the epipoles it follows that e2'*F=0 and F*e1=0 so e1 and e2 are, respectively, the right and the left null space of F. You can find them with the SVD decomposition of matrix F -> F=UDV' then e1 is the last column of V (the righ null space). Don't forget that e1 and e2 are expressed in homogeneous coordinates.
Anyway...finding F is only a step of a 3d reconstruction, a lot of problem still remain, such camera calibration and so on...
Search for Zisserman on Google...he's the guru of 3d reconstruction
thx , ill check that :
i've been given another slution ; just fix E = ( x , y , 1 ) ; then i can solve my system .
Anyway , ive got another pb : to trace an epipolar line i need the epipole ( lets assume i got it ... i think the method is use is working ... ) ana nother point .
This pt is given by
l' = F*x
x is the pt we are checking ( x,y,1)
F the matrix fundamental
l' is suposed to be the equation of the epipolar line on image 2 .
However , i got everytime some really LOW value for l' .
I know taht in homogenous coordinate x = kx . But im interested in carthésian ( to plot it on the screen ) and this isnt helping me ! Im always getting my pt near ( 0,0) in carthésian ... i dunno what to do .
im gonna check this SVD thing ( i hope it isnt too hard to code :D ) .
thx !
i've been given another slution ; just fix E = ( x , y , 1 ) ; then i can solve my system .
Anyway , ive got another pb : to trace an epipolar line i need the epipole ( lets assume i got it ... i think the method is use is working ... ) ana nother point .
This pt is given by
l' = F*x
x is the pt we are checking ( x,y,1)
F the matrix fundamental
l' is suposed to be the equation of the epipolar line on image 2 .
However , i got everytime some really LOW value for l' .
I know taht in homogenous coordinate x = kx . But im interested in carthésian ( to plot it on the screen ) and this isnt helping me ! Im always getting my pt near ( 0,0) in carthésian ... i dunno what to do .
im gonna check this SVD thing ( i hope it isnt too hard to code :D ) .
thx !
(it's still me...I posted as anonymous cause I wasn't registered yet)
There are a lot of ways you can draw a line expressed in homogeneous coordinates.
For example you can intersect that line with the borders of your window and find two points (if they exist). Suppose that l2=F*x1=[a b c]' (with x1!=e1)then the equation of line l2 is a*x + b*y + c = 0 -> now you have to find two points that lay on that line (try with the border of your window).
Be aware that assuming your epipole a 'finite' point (like [ex ey 1]) is dangerous, because it could be a point that stay at infinity (like [ex' ey' 0]), and It's not so uncommon. For example you can obtain that situation assuming that your two images are taken by a camera that translate along x or y axis, in that case the images of the centers of those two cameras (the epipoles) are infinite points. A good way to find the epipoles given the fundamental matrix is to use the Singular Value Decomposition (SVD) as I told you before, in this way you obtain a normalized vector and you don't have to care about infinity because it's expressed in homogeneous coordinates.
If you use Matlab look at this:
http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/
There are a lot of ways you can draw a line expressed in homogeneous coordinates.
For example you can intersect that line with the borders of your window and find two points (if they exist). Suppose that l2=F*x1=[a b c]' (with x1!=e1)then the equation of line l2 is a*x + b*y + c = 0 -> now you have to find two points that lay on that line (try with the border of your window).
Be aware that assuming your epipole a 'finite' point (like [ex ey 1]) is dangerous, because it could be a point that stay at infinity (like [ex' ey' 0]), and It's not so uncommon. For example you can obtain that situation assuming that your two images are taken by a camera that translate along x or y axis, in that case the images of the centers of those two cameras (the epipoles) are infinite points. A good way to find the epipoles given the fundamental matrix is to use the Singular Value Decomposition (SVD) as I told you before, in this way you obtain a normalized vector and you don't have to care about infinity because it's expressed in homogeneous coordinates.
If you use Matlab look at this:
http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement