USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::NewHorizonsMvicTdiCameraDistortionMap Class Reference

Distort/undistort focal plane coordinates for New Horizons/MVIC. More...

#include <NewHorizonsMvicTdiCameraDistortionMap.h>

Inheritance diagram for Isis::NewHorizonsMvicTdiCameraDistortionMap:
Inheritance graph
Collaboration diagram for Isis::NewHorizonsMvicTdiCameraDistortionMap:
Collaboration graph

Public Member Functions

 NewHorizonsMvicTdiCameraDistortionMap (Camera *parent, vector< double > xDistortionCoeffs, vector< double > yDistortionCoeffs, vector< double > residualColDistCoeffs, vector< double > residualRowDistCoeffs)
 Camera distortion map constructor.
 
 ~NewHorizonsMvicTdiCameraDistortionMap ()
 Destructor.
 
virtual bool SetFocalPlane (const double dx, const double dy)
 Compute undistorted focal plane x/y.
 
virtual bool SetUndistortedFocalPlane (const double ux, const double uy)
 Compute distorted focal plane x/y.
 
void SetDistortion (int naifIkCode)
 Load distortion coefficients.
 
std::vector< double > OpticalDistortionCoefficients () const
 Return optical distortion polynomial coefficients.
 
double ZDirection () const
 Return the direction of the focal plane Z-axis.
 
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 Member Functions

bool computeDistortionCorrections (const double xscaled, const double yscaled, double &deltax)
 Compute distortion corrections in x and y direction.
 
void computeResidualDistortionCorrections (const double dx, double &residualDeltax, double &residualDeltay)
 Compute residual distortion corrections in row and column direction TODO: Implementati plete.
 

Private Attributes

std::vector< double > m_xDistortionCoeffs
 distortion coefficients in x and y as determined
 
std::vector< double > m_yDistortionCoeffs
 by Keith Harrison (Interface Control Document < section 10.3.1.2)
 
vector< double > m_residualColDistCoeffs
 residual distortion coefficients as determined
 
vector< double > m_residualRowDistCoeffs
 by Jason Cook, SWRI (MVIC Distortion)
 
double m_focalPlaneHalf_x
 half of focal plane x and y dimensions in mm
 

Detailed Description

Distort/undistort focal plane coordinates for New Horizons/MVIC.

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

See Also
MvicCamera
Author
2014-05-02 Ken Edmundson
History:
2014-05-02 Ken Edmundson - Original Version

Definition at line 45 of file NewHorizonsMvicTdiCameraDistortionMap.h.

Constructor & Destructor Documentation

Isis::NewHorizonsMvicTdiCameraDistortionMap::NewHorizonsMvicTdiCameraDistortionMap ( Camera parent,
vector< double >  xDistortionCoeffs,
vector< double >  yDistortionCoeffs,
vector< double >  residualColDistCoeffs,
vector< double >  residualRowDistCoeffs 
)

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
parentthe parent camera that will use this distortion map
zDirectionthe direction of the focal plane Z-axis (either 1 or -1)
xDistortionCoeffsdistortion coefficients in x
yDistortionCoeffsdistortion coefficients in y
residualColDistCoeffs
residualRowDistCoeffs

Definition at line 58 of file NewHorizonsMvicTdiCameraDistortionMap.cpp.

References m_focalPlaneHalf_x, m_residualColDistCoeffs, m_residualRowDistCoeffs, m_xDistortionCoeffs, m_yDistortionCoeffs, Isis::Camera::PixelPitch(), and Isis::Camera::Samples().

Isis::NewHorizonsMvicTdiCameraDistortionMap::~NewHorizonsMvicTdiCameraDistortionMap ( )

Destructor.

Definition at line 79 of file NewHorizonsMvicTdiCameraDistortionMap.cpp.

Member Function Documentation

bool Isis::NewHorizonsMvicTdiCameraDistortionMap::computeDistortionCorrections ( const double  xscaled,
const double  yscaled,
double &  deltax 
)
private

Compute distortion corrections in x and y direction.

For Legendre Polynomials, see ...

http://mathworld.wolfram.com/LegendrePolynomial.html http://www.boost.org/doc/libs/1_36_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html

Parameters
xscaledfocal plane x scaled to range of 1- to 1 for Legendre Polynomials
yscaledfocal plane y scaled to range of 1- to 1 for Legendre Polynomials
deltaxfocal plane distortion correction to x in millimeters
deltayfocal plane distortion correction to y in millimeters
Returns
success/failure

Definition at line 246 of file NewHorizonsMvicTdiCameraDistortionMap.cpp.

References m_xDistortionCoeffs.

Referenced by SetFocalPlane(), and SetUndistortedFocalPlane().

void Isis::NewHorizonsMvicTdiCameraDistortionMap::computeResidualDistortionCorrections ( const double  dx,
double &  residualDeltax,
double &  residualDeltay 
)
private

Compute residual distortion corrections in row and column direction TODO: Implementati plete.

Parameters
dx
dy
residualDeltax
residualDeltay
Returns
success/failure

Definition at line 309 of file NewHorizonsMvicTdiCameraDistortionMap.cpp.

References m_residualColDistCoeffs, m_residualRowDistCoeffs, and Isis::Camera::PixelPitch().

Referenced by SetFocalPlane(), and SetUndistortedFocalPlane().

double Isis::CameraDistortionMap::FocalPlaneX ( ) const
inlineinherited
double Isis::CameraDistortionMap::FocalPlaneY ( ) const
inlineinherited
std::vector< double > Isis::CameraDistortionMap::OpticalDistortionCoefficients ( ) const
inherited

Return optical distortion polynomial coefficients.

Definition at line 195 of file CameraDistortionMap.cpp.

void Isis::CameraDistortionMap::SetDistortion ( int  naifIkCode)
inherited

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_K = ( coef1, coef2, ..., coefN)
where xxxxx is the instrument code (always a negative number)

These coefficient will be used to convert from focal plane x,y to undistorted x,y as follows (add equation here)

Parameters
naifIkCodeCode to search for in instrument kernel
Todo:

Generalize to read variable number of coefficients

Add latex equation to the documentation

Definition at line 65 of file CameraDistortionMap.cpp.

References Isis::toString().

Referenced by Isis::AmicaCamera::AmicaCamera(), Isis::CTXCamera::CTXCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::LroWideAngleCameraDistortionMap::LroWideAngleCameraDistortionMap(), Isis::LoHighDistortionMap::SetDistortion(), and Isis::LoMediumDistortionMap::SetDistortion().

bool Isis::NewHorizonsMvicTdiCameraDistortionMap::SetFocalPlane ( const double  dx,
const double  dy 
)
virtual

Compute undistorted focal plane x/y.

Compute undistorted focal plane x given a distorted focal plane x

TODO: Modify this - Distortion in line direction currently not considered (MVIC TDI is treated as line scan sensor)

In the event of any failure, undistorted focal plane values are set equal to the raw (distorted) values

Parameters
dxdistorted focal plane x in millimeters
dydistorted focal plane y in millimeters
Returns
success/failure
See Also
SetDistortion

Reimplemented from Isis::CameraDistortionMap.

Definition at line 100 of file NewHorizonsMvicTdiCameraDistortionMap.cpp.

References computeDistortionCorrections(), computeResidualDistortionCorrections(), and m_focalPlaneHalf_x.

bool Isis::NewHorizonsMvicTdiCameraDistortionMap::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.

This is an iterative procedure as computing the inverse of the distortion equations used by New Horizons MVIC is difficult.

Parameters
uxundistorted focal plane x in millimeters
uyundistorted focal plane y in millimeters
Returns
if the conversion was successful
See Also
SetDistortion

Reimplemented from Isis::CameraDistortionMap.

Definition at line 159 of file NewHorizonsMvicTdiCameraDistortionMap.cpp.

References _FILEINFO_, computeDistortionCorrections(), computeResidualDistortionCorrections(), m_focalPlaneHalf_x, and Isis::IException::Programmer.

double Isis::CameraDistortionMap::UndistortedFocalPlaneX ( ) const
inlineinherited
double Isis::CameraDistortionMap::UndistortedFocalPlaneY ( ) const
inlineinherited
double Isis::CameraDistortionMap::UndistortedFocalPlaneZ ( ) const
inlineinherited

Return undistorted focal plane z.

Definition at line 92 of file CameraDistortionMap.h.

References Isis::Camera::FocalLength().

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

double Isis::CameraDistortionMap::ZDirection ( ) const
inherited

Return the direction of the focal plane Z-axis.

Definition at line 201 of file CameraDistortionMap.cpp.

Member Data Documentation

double Isis::NewHorizonsMvicTdiCameraDistortionMap::m_focalPlaneHalf_x
private

half of focal plane x and y dimensions in mm

Definition at line 74 of file NewHorizonsMvicTdiCameraDistortionMap.h.

Referenced by NewHorizonsMvicTdiCameraDistortionMap(), SetFocalPlane(), and SetUndistortedFocalPlane().

vector<double> Isis::NewHorizonsMvicTdiCameraDistortionMap::m_residualColDistCoeffs
private

residual distortion coefficients as determined

Definition at line 71 of file NewHorizonsMvicTdiCameraDistortionMap.h.

Referenced by computeResidualDistortionCorrections(), and NewHorizonsMvicTdiCameraDistortionMap().

vector<double> Isis::NewHorizonsMvicTdiCameraDistortionMap::m_residualRowDistCoeffs
private

by Jason Cook, SWRI (MVIC Distortion)

Definition at line 72 of file NewHorizonsMvicTdiCameraDistortionMap.h.

Referenced by computeResidualDistortionCorrections(), and NewHorizonsMvicTdiCameraDistortionMap().

std::vector<double> Isis::NewHorizonsMvicTdiCameraDistortionMap::m_xDistortionCoeffs
private

distortion coefficients in x and y as determined

Definition at line 67 of file NewHorizonsMvicTdiCameraDistortionMap.h.

Referenced by computeDistortionCorrections(), and NewHorizonsMvicTdiCameraDistortionMap().

std::vector<double> Isis::NewHorizonsMvicTdiCameraDistortionMap::m_yDistortionCoeffs
private

by Keith Harrison (Interface Control Document < section 10.3.1.2)

Definition at line 68 of file NewHorizonsMvicTdiCameraDistortionMap.h.

Referenced by NewHorizonsMvicTdiCameraDistortionMap().


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