I'm having a problem interpreting the camera calibration data found at http://www.cvg.reading.ac.uk/PETS2001/pets2001-cameracalib.html#dataset2 and was wondering whether anyone can help. Basically I understood the example and I it works correctly when I try to compute the 2D image coordinates of 3D objects. The 2D coordinates I get are within the image boundaries, which is good.
The problem is when I try to apply the working to the other matrices. To get you into perspective, these calibration matrices apply to the videos found at
For example consider the transformation matrix of Dataset 2 Camera 2:
FocalLength f=792
ImageCentre (u,v) = (384, 288)
Homogeneous Transform T =
-0.94194 0.33537 -0.01657 0.00000;
-0.33152 -0.93668 -0.11278 0.00000;
-0.05334 -0.10073 0.99348 0.00000;
11791.10000 22920.20000 6642.89000 1.00000;
According to the instructions at the top of the dataset, the first step is to invert the matrix to get:
-0.94194 -0.33152 -0.05334 0;
0.33538 -0.93669 -0.10074 0;
-0.01657 -0.11277 0.99348 0;
3529.67074 26127.15587 -3661.65672 1;
Then take for example the point x = (0,0,0) in world coordinates.
xT = (3529.67074,26127.15587,-3661.65672) and the point in 2D coordinates is given by
(792 x 3529.67074 / -3661.65672 + 384, 792 x 26127.15587 / -3661.65672 + 288)
= (-763.45 + 384 , -5651.187 + 288)
= (-379.45, -5363.187)
Now this answer is clearly incorrect since the answer should be within the image boundaries. In fact when I tried to use this information in my program, points on the ground plane in the 3D world are transformed incorrectly into 2D image coordinates.
I would really appreciate if someone could give any idea on how to apply the working correctly.
Thanks,