CAHV Camera Model

Parameters of the CAHV camera model:

(Cx, Cy, Cz)    : CameraPosition [mm]
(Ax, Ay, Az)    : RotationAxis2  [unit vector]
(Hx, Hy, Hz)    : RotationAxis0 [pel] (including FocalLength, PixelSizeX, and Principal Point offset) 
(Vx, Vy, Vz)    : RotationAxis1 [pel] (including FocalLength, PixelSizeY, and Principal Point offset) 
(K3, K5)        : Radialdistortion  K3 [1/(mm)^2]  K5 [1/(mm)^4]
(sx, sy)        : PixelSize    [mm/pel]
(Width, Height) : ImageSize	[pel]

Internally used parameters:

(ppx, ppy)      : Principal Point offset [pel]
f               : Focal Length [mm]
fov             : Horizontal Field of View [degree] = (2*atan(0.5*Width*sx/f)*180/PI;
(H0x, H0y, H0z) : RotationAxis0 [unit vector]
(V0x, V0y, V0z) : RotationAxis1 [unit vector]

Image coordinates and 3D coordinates:

(x, y)          : image coordinates [pel]
(X, Y, Z)       : 3D coordinates [mm]

The projection of 3D coordinates in the camera image can be done by

[ x' ] =  [ Hx Hy Hz ] [ 1 0 0 -Cx] [ X ]
[ y' ] =  [ Vx Vy Vz ] [ 0 1 0 -Cy] [ Y ]
[ z' ] =  [ Ax Ay Az ] [ 0 0 1 -Cz] [ Z ]
                                    [ 1 ]

or

[ x' ] =  [f/sx 0    ppx] [ H0x H0y H0z ] [ 1 0 0 -Cx] [ X ]
[ y' ] =  [0    f/sy ppy] [ V0x V0y V0z ] [ 0 1 0 -Cy] [ Y ]
[ z' ] =  [0    0    1  ] [ Ax  Ay  Az  ] [ 0 0 1 -Cz] [ Z ]
                                                       [ 1 ]

then x = x'/z' and y = y'/z' , if the origin of the image coordinates is in the center of the image,
or x = x'/z' + 0.5*(Width-1) and y = y'/z' + 0.5*(Height-1), if the origin of the image coordinates is in the upper left corner.