In a calibrated stereo-vision rig, how does one obtain the “camera matrices” needed for implementing a 3D triangulation algorithm?

六月ゝ 毕业季﹏ 提交于 2019-11-30 07:32:26

I don't have my H&Z to hand - but their old CVPR tutorial on the subject is here (for anyone else to have a look at w.r.t this question).

Just for clarity (and to use their terminology) the projection matrix P maps from Euclidean 3-space point (X) to an image point (x) as:

x = PX

where:

P = K[ R | t ]

defined by the (3x3) camera calibration matrix K and the (3x3) rotation matrix R and translation vector (3x1) t.

The crux of the matter seems to be how to then perform triangulation using your two cameras P and P'.

I believe you are proposing that the world origin is located at a the first camera P, thus:

P = K [ I | 0]

and

P' = K' [ R | t ]

What we then seek for reconstruction in the Fundamental Matrix F such that:

x' F x = 0

The matrix F can of course be computed any number of ways (sometimes more commonly from uncalibrated images!) but here I think you might want to do it on the basis of your already calibrated camera matrices above as:

F = [P' C]_x P' pinv(P)

Where C = (0 1) is the centre of first camera and pinv(P) is the pseudo-inverse of P. The _x indicates the notation used in the literature for matrix multiplication to calculate the vector product.

You can then perform a factorization of the fundamental matrix F (performed via SVD or direct method).

F = [t]_x M

And hence, as you correctly state, we can then compute triangulation directly based on:

P = [ I | 0 ] 

and

P' = [ M | t ]

Using these to perform triangulation should then be relatively straightforward (assuming good calibration, lack of noise, etc. etc.)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!