USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::Lo::LoMediumDistortionMap Class Reference

#include <LoMediumDistortionMap.h>

Inheritance diagram for Isis::Lo::LoMediumDistortionMap:

Inheritance graph
[legend]
Collaboration diagram for Isis::Lo::LoMediumDistortionMap:

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 the Lunar Orbiter medium resolution camera.

See also:
Camera

For internal use only.

History:
2007-07-31 Debbie A. Cook - Original version
History:
2008-02-04 Jeff Anderson - Made change to support variable focal length in THEMIS IR camera
History:
2008-07-25 Steven Lambright - Fixed constructor; CameraDistortionMap is responsible both for setting the p_camera protected member and calling Camera::SetDistortionMap. When the parent called Camera::SetDistortionMap the Camera took ownership of the instance of this object. By calling this twice, and with Camera only supporting having one distortion map, this object was deleted before the constructor was finished.
History:
2009-05-22 Debbie A. Cook - Cleaned up code and added iteration loop. Previous version only iterated twice, but results indicated more iterations were needed for better accuracy.
History:
2009-08-21 Debbie A. Cook - Added test for data outside focal plane limits plus 10% to avoid getting erroneous data projected on oblique images

Definition at line 37 of file LoMediumDistortionMap.h.

Public Member Functions

 LoMediumDistortionMap (Camera *parent)
 Constructor for LunarOrbiterMediumDistortionMap class.
void SetDistortion (const int naifIkCode)
 Load LO Medium Resolution Camera perspective & distortion coefficients.
virtual bool SetFocalPlane (const double dx, const double dy)
 Compute undistorted focal plane x/y for Lo Medium Resolution Camera.
virtual bool SetUndistortedFocalPlane (const double ux, const double uy)
 Compute distorted focal plane x/y for Lo Medium Resolution Camera.
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 Attributes

Camerap_camera
double p_focalPlaneX
double p_focalPlaneY
double p_undistortedFocalPlaneX
double p_undistortedFocalPlaneY
double p_zDirection
std::vector< double > p_odk

Private Attributes

double p_sample0
double p_line0
std::vector< double > p_coefs
std::vector< double > p_icoefs


Constructor & Destructor Documentation

Isis::Lo::LoMediumDistortionMap::LoMediumDistortionMap ( Camera parent  ) 

Constructor for LunarOrbiterMediumDistortionMap class.

Define the distortion model coefficients for a Lunar Orbiter Medium Resolution camera.

Parameters:
parent A pointer to the parent camera object

For internal use only.

History:
2007-07-31 Debbie A. Cook Original version

Definition at line 23 of file LoMediumDistortionMap.cpp.


Member Function Documentation

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::Lo::LoMediumDistortionMap::SetDistortion ( const int  naifIkCode  ) 

Load LO Medium Resolution Camera perspective & distortion coefficients.

This method loads the distortion centers, and coefficients from the instrument kernel. * The distortion center coordinates (in mm) are expected to be in the form of:

 INSxxxxxxx_DISTORTION_CENTER = ( xcenter, ycenter)
 
 where xxxxxxx is the instrument code (always a negative number).

The center, (x0,y0), will be used to calculate the radius of distortion, r, in the equations below.

distX = x - x0 distY = y - y0, where (x,y) are the distorted focal plane coordinates. r^2 = (DistX^2 + DistY^2)/sref^2

The distortion coefficients in the NAIF instrument kernel are expected to be in the form of:

 INSxxxxxxx_OD_K = ( coef1, coef2, ..., coefN)
 
 where xxxxxxx is as is described above for the distortion center.

These coefficient will be used to convert from focal plane x,y to to undistorted x,y as follows:

dr/r = (k0 + k1*r^2 + k2*r^4)/sref ux = x - DistX*dr/r, similarly for uy

Parameters:
naifIkCode Code to search for in instrument kernel

Reimplemented from Isis::CameraDistortionMap.

Definition at line 65 of file LoMediumDistortionMap.cpp.

References Isis::CameraFocalPlaneMap::DetectorLine(), Isis::CameraFocalPlaneMap::DetectorSample(), Isis::Camera::FocalPlaneMap(), Isis::CameraDistortionMap::p_camera, p_line0, p_sample0, Isis::CameraDistortionMap::SetDistortion(), and Isis::CameraFocalPlaneMap::SetFocalPlane().

Referenced by Isis::Lo::LoMediumCamera::LoMediumCamera().

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

Compute undistorted focal plane x/y for Lo Medium Resolution Camera.

Compute undistorted focal plane x/y given a distorted focal plane x/y for the Lunar Orbiter Medium Resolution Camera. The polynomial used is described in the SetDistortion documentation. After calling this method, the undistorted x/y can be obtained via the UndistortedFocalPlaneX and UndistortedFocalPlaneY methods of the parent class.

Parameters:
dx distorted focal plane x in millimeters
dy distorted focal plane y in millimeters
Returns:
if the conversion was successful
See also:
SetDistortion

Reimplemented from Isis::CameraDistortionMap.

Definition at line 93 of file LoMediumDistortionMap.cpp.

References Isis::CameraFocalPlaneMap::DetectorLine(), Isis::CameraFocalPlaneMap::DetectorSample(), Isis::Camera::FocalPlaneMap(), Isis::CameraFocalPlaneMap::FocalPlaneX(), Isis::CameraFocalPlaneMap::FocalPlaneY(), Isis::CameraDistortionMap::p_camera, Isis::CameraDistortionMap::p_focalPlaneX, Isis::CameraDistortionMap::p_focalPlaneY, p_line0, Isis::CameraDistortionMap::p_odk, p_sample0, Isis::CameraDistortionMap::p_undistortedFocalPlaneX, Isis::CameraDistortionMap::p_undistortedFocalPlaneY, ratio(), Isis::CameraFocalPlaneMap::SetDetector(), and Isis::CameraFocalPlaneMap::SetFocalPlane().

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

Compute distorted focal plane x/y for Lo Medium Resolution Camera.

Compute distorted focal plane x/y given an undistorted focal plane x/y for the Lunar Orbiter Medium Resolution Camera. This method applies a distortion error based on a polynomial defined in the SetDistortion method. After calling this method the distorted x/y can be obtained 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 LoMediumDistortionMap.cpp.

References Isis::CameraFocalPlaneMap::DetectorLine(), Isis::CameraFocalPlaneMap::DetectorSample(), Isis::E(), Isis::Camera::FocalPlaneMap(), Isis::CameraFocalPlaneMap::FocalPlaneX(), Isis::CameraFocalPlaneMap::FocalPlaneY(), Isis::CameraDistortionMap::p_camera, Isis::CameraDistortionMap::p_focalPlaneX, Isis::CameraDistortionMap::p_focalPlaneY, p_line0, Isis::CameraDistortionMap::p_odk, p_sample0, Isis::CameraDistortionMap::p_undistortedFocalPlaneX, Isis::CameraDistortionMap::p_undistortedFocalPlaneY, Isis::CameraDistortionMap::p_zDirection, Isis::CameraFocalPlaneMap::SetDetector(), and Isis::CameraFocalPlaneMap::SetFocalPlane().

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().


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