Calibration Procedure


Calibration is to estimate the intrinsic parameters of camera and projector which we need to reconstruct depth from the camera image and projector stripe structure. Using the standard calibration board, we can obtain such information since the object coordinates and its corresponding image pixel position are exactly known. In our project, the calibration is seperated into 2 stages: Camera and Projector calibration:

Camera Calibration:

Take a picture of the standard calibration pattern. Mark its corners as feature points. Based on these points' coordinates in the object frame and camera image, we use least square to approxiamate the camera parameters: fx,fy,cx,cy,k as well as the transformations R, T from object frame to camera frame.

This is the camera image of our calibration pattern.

Our estimated parameters are:

Rc= [ 0.8825 -0.0164 -0.4700; -0.4018 0.4930 -0.7717; 0.2443 0.8699 0.4285]
Tc=[-3.4950 8.9413 107.3074]'
fxc=2402.62
fyc=2399.58
k=0.128
cxc=320.1701
cyc=240.1130

In the image, the yellow circles are the points projected in camera image using these parameters. We can see they are quite closed to the red cross points which are their real pixel position.


Projector Calibration:

We creat a calibration checker pattern in projector and project it on the white plane. Take the plane's picture, then we use the known camera parameters to calculate pattern's position in the object frame. Once we get this information and we already know its image position, similarly the projector's parameters can be estimated.

Our checker pattern's picture is right here:

For projector, we estimate the same parameters as camera except the distortion k. Our results are:

Rp= [ 0.9999 0.0023 -0.0115; -0.0111 0.4875 -0.8731; 0.0036 0.8731 0.4875]
Tp=[5.8529 19.2327 109.8049]
fxp=1035.01
fyp=1001.98
cxp=319.9998
cyp=239.9998


Final Results:

What we need in the depth reconstruction is the motion transformation from camera frame to projector frame R and T. We calculate them by:

R=Rp*inv(Rc)= [0.8878 0.0195 0.4598; -0.0187 0.9998 -0.0062; -0.4598 -0.0031 0.8880]
T=-Rp*inv(Rc)*Tc+Tp=[58.4648;10.6971;16.1770]


The least square is very sensitive to the initial guess. It doesn't converge quite well either.