Ask Your Question

Revision history [back]

Hi,I also have the same question and I have my opinion: the [code] is right !. See the link reference of fisheye model in OpenCV. You will see the Camera Calibration Toolbox for Matlab of Jean-Yves Bouguet in "project_points_fisheye.m" :

%Let P be a point in 3D of coordinates X in the world reference frame    (stored in the matrix X)
%The coordinate vector of P in the camera reference frame is: Xc = R*X + T
%where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om);
%call x, y and z the 3 coordinates of Xc: x = Xc(1); y = Xc(2); z = Xc(3);
%The pinehole projection coordinates of P is [a;b] where a=x/z and b=y/z.
%call r^2 = a^2 + b^2,
%call theta = atan(r),
%Fisheye distortion -> theta_d = theta * (1 + k(1)*theta^2 + k(2)*theta^4 + k(3)*theta^6 + k(4)*theta^8)
%The distorted point coordinates are: xd = [xx;yy] where:
%xx = (theta_d / r) * x
%yy = (theta_d / r) * y
%Finally, convertion into pixel coordinates: The final pixel coordinates    vector xp=[xxp;yyp] where:
%xxp = f(1)*(xx + alpha*yy) + c(1)
%yyp = f(2)*yy + c(2)

The answer is from L.Robin, thanks him.