PDS_VERSION_ID = PDS3 RECORD_TYPE = STREAM OBJECT = TEXT PUBLICATION_DATE = 2004-07-21 INTERCHANGE_FORMAT = ASCII NOTE = "GEOMETRIC_CM.TXT file for the Mars Science Laboratory Mastcam, MAHLI, and MARDI EDRs and RDRs." END_OBJECT = TEXT END Camera Model Parameters The model names CAHV, CAHVOR, and CAHVORE (as provided by the label keyword element, MODEL_TYPE), are based on the one-letter terms that comprise the list of parameters for each model. Each of the parameters (C, A, H, V, O, R, E) denoted by the label keyword element, MODEL_COMPONENT_ID (and further expanded by the label keyword element MODEL_COMPONENT_NAME), is a triplet of numbers specified by the multiple MODEL_COMPONENT_# keyword element entries within the label. One of these numbers is a cartesian point. Four are 3-vectors. The other two are sets of coefficients without a direct spatial interpretation. Two additional parameters (T, P) have been appended to the MODEL_COMPONENT_ID keyword element in cases when the CAHVORE model is used. Their values are provided by the MODEL_COMPONENT_8 and MODEL_COMPONENT_9 keyword elements. The interpretations of the (C, A, H, V, O, R, E, T, P) parameters are described below . When reading these descriptions it would be good to keep in mind that these interpretations are merely approximations. They are based on the geometrical models that were used when the camera models were designed. In so far as these models do not accurately reflect the physical reality, the interpretations will be wrong. In the final analysis the parameters are simply the best least-squares fit to the input calibration data. CAHV The parameters of the CAHV model (also known as the Yakimovsky & Cunningham model) describe a linear, perspective-projection camera model. They provide a mapping between an external 3D ("world") coordinate system and a 2D image coordinate system. The 3D coordinate system is arbitrary, and is chosen at calibration time. By convention the 2D coordinate system has (0,0) in the middle of the upper-left image pixel, with X increasing to the right and Y increasing down. Given a 3D point P, the image coordinates may be computed as (P-C)*H (P-C)*V X = ------- Y = ------- (P-C)*A (P-C)*A (Note: * = vector dot product) * C: Center vector: MODEL_COMPONENT_1 The 3D position of the center of the entrance pupil, the image of the aperture stop when viewed from the front of the camera. It is the point toward which all image rays from the world appear to converge on entering the lens. * A: Axis vector: MODEL_COMPONENT_2 A unit vector normal to the image plane and pointing outward. It is not, however, what most people mean by the pointing direction of the camera. Most people would define the pointing direction as the ray that points out from the center (middle pixel) of the image. If the plane of the image sensor (e.g. CCD array) is not mounted such that it is orthogonal to and centered on the axis of optical symmetry, then the A vector will stay normal to the image plane and deviate from the pointing direction. For all real-world cameras this is the norm. * H: Horizontal vector: MODEL_COMPONENT_3 A vector pointing roughly rightward in the image, but actually a composite of several characteristics related to the horizontal dimension. A projection of this vector into the image plane, called H', shows how the horizontal image dimension (the rows) are oriented in 3D. The magnitude of this projection is, for an ideal thin lens, the distance between the lens center and the image plane, as measured in horizontal pixels; this value is called the Horizontal Scale, and is often written as Hs. (Contrary to what has been suggested elsewhere, Hs is not the focal length.) A projection of the H vector perpendicular to the image plane (parallel to the A vector) has a magnitude called the Horizontal Center, often written as Hc; this is the horizontal image coordinate directly under the lens center when moving parallel to the A vector. Since real image sensors can be mounted off center, this center value might be anywhere, including outside the bounds of the image, although it is usually within the central region of the image. H' = H-(A*H)A Hs = |AxH| Hc = A*H (Note: x = vector cross product) * V: Vertical vector: MODEL_COMPONENT_4 A vector pointing roughly downward in the image, but actually a composite of several characteristics related to the vertical dimension. A projection of this vector into the image plane, called V', shows how the vertical image dimension (the columns) are oriented in 3D. The magnitude of this projection is, for an ideal thin lens, the distance between the lens center and the image plane, as measured in vertical pixels; this value is called the Vertical Scale, and is often written as Vs. (Contrary to what has been suggested elsewhere, Vs is not the focal length.) A projection of the V vector perpendicular to the image plane (parallel to the A vector) has a magnitude called the Vertical Center, often written as Vc; this is the vertical image coordinate directly under the lens center when moving parallel to the A vector. Since real image sensors can be mounted off center, this center value might be anywhere, including outside the bounds of the image, although it is usually within the central region of the image. V' = V-(A*V)A Vs = |AxV| Vc = A*V Note that H' and V' are not necessarily exactly perpendicular to each other. The angle between them, theta, is a measure of the spatial relationship of the rows and columns. They are usually very close to perpendicular, but have sometimes been observed to fall more than a standard deviation away from that ideal. ( VxH*A ) Theta = arctan(-----------) ((AxV)*(AxH)) CAHVOR The new parameters of the CAHVOR model add radial (barrel or pin-cushion) distortion on top of the previous linear model. This is a characteristic of lenses that tends to become more important as the field of view increases. * O: Optical vector: MODEL_COMPONENT_5 A unit vector, pointing outward, that is the symmetry axis for the radial distortion. It should also be the symmetry axis for the lens system. It is not, however, what most people mean by the pointing direction of the camera. Most people would define the pointing direction as the ray that points out from the center (middle pixel) of the image. If the lens system is not mounted such that its symmetry axis is orthogonal to and centered on the image sensor, then these two directions will deviate from each. For all real-world cameras the O vector, the A vector, and the camera's pointing direction will all differ, although they will usually be close to one other. * R: Radial-distortion terms: MODEL_COMPONENT_6 The coefficients of the polynomial function used to model radial distortion. For more details, the following reference can be found at http://eis.jpl.nasa.gov/~telitwin/public-jpl/src/ccal/ccal-references.html. Least-Squares Camera Calibration Including Lens Distortion and Automatic Editing of Calibration Points, Donald Gennery. 2001. Appears as chapter 5 in Calibration and Orientation of Cameras in Computer Vision, A. Grun and T. Huang, editors, Springer-Verlag, ISBN 3-540-65283-3, 2001, pp. 123-136. CAHVORE The CAHVORE model departs from the previous models in two ways. The first is that it adds to the model a representation of an entrance pupil (see above) that moves as a function of the off-axis angle of the incident light. But it also splits out into fundamentally different types of lenses. The model types use all the same parameters, but they differ in how some of those parameters are interpreted. The types are 1. Perspective-projection 2. Fish-eye 3. General The type-1 model is the most similar to CAHV and CAHVOR, merely adding the entrance pupil. The type-2 model reflects fundamentally different geometry. Fish-eye lenses are often used for very wide fields of view since perspective lenses are unable to reach 180 degrees, and in practice are much more narrow than that. Modeling the moving entrance pupil is usually important for fish-eye models. It is rarely needed for perspective-projection lenses, but is included for completeness. The type-3 model is a generalization that includes the first two. It requires a scalar floating-point parameter to specify it. If that parameter is 1, then the resulting model is identical to type-1. If it is 0, then it is identical to type-2. * E: Entrance-pupil terms: MODEL_COMPONENT_7 The coefficients of the polynomial function used to model movement of the entrance pupil. For more details, the following references can be found at http://eis.jpl.nasa.gov/~telitwin/public-jpl/src/ccal/ccal-references.html. Computations for Generalized Camera Model Including Entrance Pupil Movement, Donald Gennery. May 23, 2001. Generalized Camera Calibration Including Fish-Eye Lenses Donald B. Gennery. 2002. JPL document clearance number 03-0869. * T: CAHVORE Type (MTYPE): MODEL_COMPONENT_8 To distinguish the various CAHVORE model types (e.g., CAHVORE-1, CAHVORE-2, CAHVORE-3), a parameter "T" is specified. It's value may be integers 1, 2, or 3 to coincide with CAHVORE-1, CAHVORE-2, or CAHVORE-3, repectively. * P: CAHVORE Parameter (MPARM): MODEL_COMPONENT_9 "P" is an additional parameter to CAHVORE that specifies the Linearity of the camera model for the CAHVORE-3 case. It is an arbitrary floating-point number. A value of 0.0 results in a model equivalent to CAHVORE-2, while a value of 1.0 results in a model equivalent to CAHVORE-1.