USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::TaylorCameraDistortionMap Class Reference

#include <TaylorCameraDistortionMap.h>

Inheritance diagram for Isis::TaylorCameraDistortionMap:

Inheritance graph
[legend]
Collaboration diagram for Isis::TaylorCameraDistortionMap:

Collaboration graph
[legend]
List of all members.

Detailed Description

Distort/undistort focal plane coordinates.

Creates a map for adding/removing optical distortions from the focal plane of a camera.

See also:
Camera
Author:

For internal use only.

Definition at line 31 of file TaylorCameraDistortionMap.h.

Public Member Functions

 TaylorCameraDistortionMap (Camera *parent, double zDirection=1.0)
 Camera distortion map constructor.
void SetDistortion (const int naifIkCode)
 Load distortion coefficients.
 ~TaylorCameraDistortionMap ()
 Destructor.
bool SetFocalPlane (const double dx, const double dy)
 Compute undistorted focal plane x/y.
bool SetUndistortedFocalPlane (const double ux, const double uy)
 Compute distorted focal plane x/y.
double FocalPlaneX () const
 Return distorted focal plane x.
double FocalPlaneY () const
 Return distorted focal plane y.
double UndistortedFocalPlaneX () const
 Return undistorted focal plane x.
double UndistortedFocalPlaneY () const
 Return undistorted focal plane y.
double UndistortedFocalPlaneZ () const
 Return undistorted focal plane z.

Protected Member Functions

void DistortionFunction (double ux, double uy, double *dx, double *dy)
 Compute distorted focal plane dx,dy given an undistorted focal plane ux,uy.
void DistortionFunctionJacobian (double x, double y, double *Jxx, double *Jxy, double *Jyx, double *Jyy)
 Jacobian of the distortion function.

Protected Attributes

std::vector< double > p_odtx
 distortion x coefficients
std::vector< double > p_odty
 distortion y coefficients
Camerap_camera
double p_focalPlaneX
double p_focalPlaneY
double p_undistortedFocalPlaneX
double p_undistortedFocalPlaneY
double p_zDirection
std::vector< double > p_odk


Constructor & Destructor Documentation

Isis::TaylorCameraDistortionMap::TaylorCameraDistortionMap ( Camera parent,
double  zDirection = 1.0 
)

Camera distortion map constructor.

Create a camera distortion map. This class maps between distorted and undistorted focal plane x/y's. The default mapping is the identity, that is, the focal plane x/y and undistorted focal plane x/y will be identical.

Parameters:
parent the parent camera that will use this distortion map
zDirection the direction of the focal plane Z-axis (either 1 or -1)

Definition at line 27 of file TaylorCameraDistortionMap.cpp.

Isis::TaylorCameraDistortionMap::~TaylorCameraDistortionMap (  )  [inline]

Destructor.

Definition at line 38 of file TaylorCameraDistortionMap.h.


Member Function Documentation

void Isis::TaylorCameraDistortionMap::DistortionFunction ( double  ux,
double  uy,
double *  dx,
double *  dy 
) [protected]

Compute distorted focal plane dx,dy given an undistorted focal plane ux,uy.

This describes the third order Taylor approximation to the distortion model.

Parameters:
ux Undistored x
uy Undistored y
dx Result distorted x
dy Result distorted y

Definition at line 202 of file TaylorCameraDistortionMap.cpp.

References p_odtx, and p_odty.

Referenced by SetFocalPlane(), and SetUndistortedFocalPlane().

void Isis::TaylorCameraDistortionMap::DistortionFunctionJacobian ( double  x,
double  y,
double *  Jxx,
double *  Jxy,
double *  Jyx,
double *  Jyy 
) [protected]

Jacobian of the distortion function.

The Jacobian was computed algebraically from the function described in the DistortionFunction method.

Parameters:
x 
y 
Jxx 
Jxy 
Jyx 
Jyy 

Definition at line 238 of file TaylorCameraDistortionMap.cpp.

References p_odtx, and p_odty.

Referenced by SetFocalPlane().

double Isis::CameraDistortionMap::FocalPlaneX (  )  const [inline, inherited]

Return distorted focal plane x.

Definition at line 62 of file CameraDistortionMap.h.

References Isis::CameraDistortionMap::p_focalPlaneX.

Referenced by Isis::PushFrameCameraGroundMap::FindDistance(), Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::Camera::RawFocalPlanetoImage(), Isis::Camera::SetRightAscensionDeclination(), and Isis::LineScanCameraSkyMap::SetSky().

double Isis::CameraDistortionMap::FocalPlaneY (  )  const [inline, inherited]

Return distorted focal plane y.

Definition at line 65 of file CameraDistortionMap.h.

References Isis::CameraDistortionMap::p_focalPlaneY.

Referenced by Isis::PushFrameCameraGroundMap::FindDistance(), Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::Camera::RawFocalPlanetoImage(), Isis::Camera::SetRightAscensionDeclination(), and Isis::LineScanCameraSkyMap::SetSky().

void Isis::TaylorCameraDistortionMap::SetDistortion ( const int  naifIkCode  ) 

Load distortion coefficients.

This method loads the distortion coefficients from the instrument kernel. The coefficients in the NAIF instrument kernel are expected to be in the form of:

 INSxxxxx_OD_T_X = ( xa, xb, xc, xd, xe, xf, xg, xh, xi, xj )
 INSxxxxx_OD_T_Y = ( ya, yb, yc, yd, ye, yf, yg, yh, yi, yj )

 where xxxxx is the instrument code (always a negative number)

These coefficient will be used to convert between focal plane xp,yp to undistorted x,y as follows

[ xp ] = [ xa xb xc xd xe xf xg xh xi xj ] * [ 1 ] [ yp ] [ ya yb yc yd ye yf yg yh yi yj ] [ x ] [ y ] [ x*x ] [ x*y ] [ y*y ] [ x*x*x ] [ x*x*y ] [ x*y*y ] [ y*y*y ]

Parameters:
naifIkCode Code to search for in instrument kernel

Reimplemented from Isis::CameraDistortionMap.

Definition at line 61 of file TaylorCameraDistortionMap.cpp.

References Isis::Spice::GetDouble(), p_odtx, and p_odty.

Referenced by Isis::Messenger::MdisCamera::MdisCamera().

bool Isis::TaylorCameraDistortionMap::SetFocalPlane ( const double  dx,
const double  dy 
) [virtual]

Compute undistorted focal plane x/y.

Compute undistorted focal plane x/y given a distorted focal plane x/y. The undistorted coordinates are solved for using the Newton-Raphson method for root-finding if the SetDistortion method is invoked. After calling this method, you can obtain the undistorted x/y via the UndistortedFocalPlaneX and UndistortedFocalPlaneY methods.

Parameters:
dx distorted focal plane x in millimeters
dy distorted focal plane y in millimeters
Returns:
if the conversion was successful
See also:
SetDistortion
Todo:
Review the tolerance and maximum iterations of the root- finding algorithm.

Review the handling of non-convergence of the root-finding algorithm.

Add error handling for near-zero determinant.

Reimplemented from Isis::CameraDistortionMap.

Definition at line 89 of file TaylorCameraDistortionMap.cpp.

References DistortionFunction(), DistortionFunctionJacobian(), Isis::E(), Isis::CameraDistortionMap::p_focalPlaneX, Isis::CameraDistortionMap::p_focalPlaneY, p_odtx, p_odty, Isis::CameraDistortionMap::p_undistortedFocalPlaneX, Isis::CameraDistortionMap::p_undistortedFocalPlaneY, x, and y.

bool Isis::TaylorCameraDistortionMap::SetUndistortedFocalPlane ( const double  ux,
const double  uy 
) [virtual]

Compute distorted focal plane x/y.

Compute distorted focal plane x/y given an undistorted focal plane x/y. The distortion model is approximated by a third order Taylor series expansion of a generic function if the SetDistortion method was invoked. After calling this method, you can obtain the distorted x/y via the FocalPlaneX and FocalPlaneY methods

Parameters:
ux undistorted focal plane x in millimeters
uy undistorted focal plane y in millimeters
Returns:
if the conversion was successful
See also:
SetDistortion

Reimplemented from Isis::CameraDistortionMap.

Definition at line 176 of file TaylorCameraDistortionMap.cpp.

References DistortionFunction(), Isis::CameraDistortionMap::p_focalPlaneX, Isis::CameraDistortionMap::p_focalPlaneY, p_odtx, p_odty, Isis::CameraDistortionMap::p_undistortedFocalPlaneX, and Isis::CameraDistortionMap::p_undistortedFocalPlaneY.

double Isis::CameraDistortionMap::UndistortedFocalPlaneX (  )  const [inline, inherited]

Return undistorted focal plane x.

Definition at line 68 of file CameraDistortionMap.h.

References Isis::CameraDistortionMap::p_undistortedFocalPlaneX.

Referenced by Isis::ControlPoint::ComputeApriori(), and Isis::Camera::SetImage().

double Isis::CameraDistortionMap::UndistortedFocalPlaneY (  )  const [inline, inherited]

Return undistorted focal plane y.

Definition at line 71 of file CameraDistortionMap.h.

References Isis::CameraDistortionMap::p_undistortedFocalPlaneY.

Referenced by Isis::ControlPoint::ComputeApriori(), and Isis::Camera::SetImage().

double Isis::CameraDistortionMap::UndistortedFocalPlaneZ (  )  const [inline, inherited]

Return undistorted focal plane z.

Definition at line 74 of file CameraDistortionMap.h.

Referenced by Isis::BundleAdjust::AddPartials(), and Isis::Camera::SetImage().


Member Data Documentation

std::vector<double> Isis::TaylorCameraDistortionMap::p_odtx [protected]

distortion x coefficients

Definition at line 45 of file TaylorCameraDistortionMap.h.

Referenced by DistortionFunction(), DistortionFunctionJacobian(), SetDistortion(), SetFocalPlane(), and SetUndistortedFocalPlane().

std::vector<double> Isis::TaylorCameraDistortionMap::p_odty [protected]

distortion y coefficients

Definition at line 46 of file TaylorCameraDistortionMap.h.

Referenced by DistortionFunction(), DistortionFunctionJacobian(), SetDistortion(), SetFocalPlane(), and SetUndistortedFocalPlane().


The documentation for this class was generated from the following files: