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.