OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
ossimRadialDecentLensDistortion Class Reference

#include <ossimRadialDecentLensDistortion.h>

Inheritance diagram for ossimRadialDecentLensDistortion:
ossim2dTo2dTransform ossimObject ossimReferenced

Public Member Functions

 ossimRadialDecentLensDistortion ()
 
 ossimRadialDecentLensDistortion (const ossimDpt &calibratedPrincipalPoint, const NEWMAT::ColumnVector &radialDistortionParameters, const NEWMAT::ColumnVector &decentDistortionParameters)
 
 ossimRadialDecentLensDistortion (const ossimRadialDecentLensDistortion &copy)
 
 ossimRadialDecentLensDistortion (const ossimKeywordlist &kwl, const char *prefix)
 
virtual ~ossimRadialDecentLensDistortion ()
 
virtual void forward (const ossimDpt &undistorted_point_in, ossimDpt &distorted_point_out) const
 
virtual void forward (ossimDpt &modify_this) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
void setPrincipalPoint (const ossimDpt pp)
 
void setRadialDistortionParams (const NEWMAT::ColumnVector &params)
 
void setDecentDistortionParams (const NEWMAT::ColumnVector &params)
 
virtual std::ostream & print (std::ostream &out) const
 
- Public Member Functions inherited from ossim2dTo2dTransform
virtual void inverse (const ossimDpt &input, ossimDpt &output) const
 
virtual void inverse (ossimDpt &modify_this) const
 
virtual const ossim2dTo2dTransformoperator= (const ossim2dTo2dTransform &rhs)
 
virtual ossimDpt getOrigin () const
 
void setConvergenceThreshold (const double &new_threshold)
 
void setMaxIterations (int new_max_iters)
 
void setDxDy (const ossimDpt &dxdy)
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Static Public Attributes

static const char * PRINCIPAL_POINT_X_KW = "principal_point_x"
 
static const char * PRINCIPAL_POINT_Y_KW = "principal_point_y"
 
static const char * RADIAL_DISTORTION_COEFF_KW = "radial_distortion_coeff_K"
 
static const char * DECENT_DISTORTION_COEFF_KW = "decent_distortion_coeff_P"
 

Protected Member Functions

virtual double deltaR (double radius) const
 
- Protected Member Functions inherited from ossim2dTo2dTransform
 ossim2dTo2dTransform ()
 
virtual ~ossim2dTo2dTransform ()
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Protected Attributes

ossimDpt theCalibratedPrincipalPoint
 
NEWMAT::ColumnVector theRadialDistortionParameters
 
NEWMAT::ColumnVector theDecentDistortionParameters
 
- Protected Attributes inherited from ossim2dTo2dTransform
double theConvergenceThreshold
 
int theMaxIterations
 
ossimDpt theDxDy
 

Detailed Description

Definition at line 48 of file ossimRadialDecentLensDistortion.h.

Constructor & Destructor Documentation

◆ ossimRadialDecentLensDistortion() [1/4]

ossimRadialDecentLensDistortion::ossimRadialDecentLensDistortion ( )
inline

Definition at line 52 of file ossimRadialDecentLensDistortion.h.

52 {}

◆ ossimRadialDecentLensDistortion() [2/4]

ossimRadialDecentLensDistortion::ossimRadialDecentLensDistortion ( const ossimDpt calibratedPrincipalPoint,
const NEWMAT::ColumnVector &  radialDistortionParameters,
const NEWMAT::ColumnVector &  decentDistortionParameters 
)
inline

Definition at line 54 of file ossimRadialDecentLensDistortion.h.

57  : theCalibratedPrincipalPoint(calibratedPrincipalPoint),
58  theRadialDistortionParameters(radialDistortionParameters),
59  theDecentDistortionParameters(decentDistortionParameters)
60  { }

◆ ossimRadialDecentLensDistortion() [3/4]

ossimRadialDecentLensDistortion::ossimRadialDecentLensDistortion ( const ossimRadialDecentLensDistortion copy)
inline

◆ ossimRadialDecentLensDistortion() [4/4]

ossimRadialDecentLensDistortion::ossimRadialDecentLensDistortion ( const ossimKeywordlist kwl,
const char *  prefix 
)

Definition at line 34 of file ossimRadialDecentLensDistortion.cpp.

35  :
39 {
40  loadState(kwl, prefix);
41 }
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)

◆ ~ossimRadialDecentLensDistortion()

virtual ossimRadialDecentLensDistortion::~ossimRadialDecentLensDistortion ( )
inlinevirtual

Definition at line 70 of file ossimRadialDecentLensDistortion.h.

70 {}

Member Function Documentation

◆ deltaR()

double ossimRadialDecentLensDistortion::deltaR ( double  radius) const
protectedvirtual

default implementation Will solve the polynomial:

k0 + k1*r^2 + k2*r^4 + k3*r^6 + k4*r^8

Definition at line 142 of file ossimRadialDecentLensDistortion.cpp.

References theRadialDistortionParameters.

Referenced by forward().

143 {
144  double rSquare = radius*radius;
145 
147  rSquare*(theRadialDistortionParameters[1] +
148  rSquare*(theRadialDistortionParameters[2] +
149  rSquare*(theRadialDistortionParameters[3] +
150  rSquare*theRadialDistortionParameters[4])));
151 }

◆ forward() [1/2]

void ossimRadialDecentLensDistortion::forward ( const ossimDpt undistorted_point_in,
ossimDpt distorted_point_out 
) const
virtual

Implementation of base class 2D-to-2D transformation. The "forward" transformation is defined here as going from an undistorted ideal point to a distorted real point, i.e., adding distortion.

Also available (implemented in the base class) are: inverse(distorted_point_in, undistorted_pt_out) inverse(undistort_this_pt)

Implements ossim2dTo2dTransform.

Definition at line 156 of file ossimRadialDecentLensDistortion.cpp.

References deltaR(), ossim::square(), theCalibratedPrincipalPoint, theDecentDistortionParameters, ossimDpt::x, and ossimDpt::y.

159 {
160  ossimDpt deltaPosition(input_pt.x - theCalibratedPrincipalPoint.x,
161  input_pt.y - theCalibratedPrincipalPoint.y);
162  double r = sqrt(ossim::square(deltaPosition.x) +
163  ossim::square(deltaPosition.y));
164  double dr = deltaR(r);
165  double deltaX1 = deltaPosition.x*dr;
166  double deltaY1 = deltaPosition.y*dr;
167 
168  double rSquare = r*r;
169  double deltaX2 = (1 + theDecentDistortionParameters[3]*rSquare +
170  theDecentDistortionParameters[4]*rSquare*rSquare)*
171  (theDecentDistortionParameters[1]*(rSquare + 2*deltaPosition.x*deltaPosition.x) +
172  2*theDecentDistortionParameters[2]*deltaPosition.x*deltaPosition.y);
173 
174  double deltaY2 = (1 + theDecentDistortionParameters[3]*rSquare + theDecentDistortionParameters[4]*rSquare*rSquare)*
175  (theDecentDistortionParameters[2]*(rSquare + 2*deltaPosition.y*deltaPosition.y) +
176  2*theDecentDistortionParameters[1]*deltaPosition.x*deltaPosition.y);
177 
178  output_pt.x = deltaPosition.x + deltaX1 + deltaX2;
179  output_pt.y = deltaPosition.y + deltaY1 + deltaY2;
180 }
double y
Definition: ossimDpt.h:165
T square(T x)
Definition: ossimCommon.h:334
virtual double deltaR(double radius) const
double x
Definition: ossimDpt.h:164

◆ forward() [2/2]

virtual void ossimRadialDecentLensDistortion::forward ( ossimDpt modify_this) const
inlinevirtual

Reimplemented from ossim2dTo2dTransform.

Definition at line 84 of file ossimRadialDecentLensDistortion.h.

85  {
86  ossimDpt output;
87  forward(modify_this, output);
88  modify_this = output;
89  }
virtual void forward(const ossimDpt &undistorted_point_in, ossimDpt &distorted_point_out) const

◆ loadState()

bool ossimRadialDecentLensDistortion::loadState ( const ossimKeywordlist kwl,
const char *  prefix = 0 
)
virtual

Method to the load (recreate) the state of the object from a keyword list. Return true if ok or false on error.

Reimplemented from ossim2dTo2dTransform.

Definition at line 43 of file ossimRadialDecentLensDistortion.cpp.

References ossimString::c_str(), DECENT_DISTORTION_COEFF_KW, ossimKeywordlist::find(), ossim2dTo2dTransform::loadState(), PRINCIPAL_POINT_X_KW, PRINCIPAL_POINT_Y_KW, RADIAL_DISTORTION_COEFF_KW, theCalibratedPrincipalPoint, theDecentDistortionParameters, theRadialDistortionParameters, ossimString::toDouble(), ossimString::toString(), ossimDpt::x, and ossimDpt::y.

45 {
46  const char* value;
47 
49 
50  value = kwl.find(prefix, PRINCIPAL_POINT_X_KW);
51  if (value)
52  {
53  theCalibratedPrincipalPoint.x = atof(value);
54  }
55 
56  value = kwl.find(prefix, PRINCIPAL_POINT_Y_KW);
57  if (value)
58  {
59  theCalibratedPrincipalPoint.y = atof(value);
60  }
61 
62  for (int i=0; i<5; ++i)
63  {
65  key += ossimString::toString(i);
66  value = kwl.find(prefix, key.c_str());
67  if (!value)
68  {
70  }
71  else
72  {
74  }
75 
77  key += ossimString::toString(i);
78  value = kwl.find(prefix, key.c_str());
79  if (!value)
80  {
82  }
83  else
84  {
86  }
87  }
88 
89  //***
90  // Pass on to base class:
91  //***
92  bool rtn_val = ossim2dTo2dTransform::loadState(kwl, prefix);
93 
94  return rtn_val;
95 }
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
const char * find(const char *key) const
double y
Definition: ossimDpt.h:165
static ossimString toString(bool aValue)
Numeric to string methods.
double toDouble() const
double x
Definition: ossimDpt.h:164
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396

◆ print()

std::ostream & ossimRadialDecentLensDistortion::print ( std::ostream &  out) const
virtual

Dumps contents of object to ostream.

Reimplemented from ossim2dTo2dTransform.

Definition at line 186 of file ossimRadialDecentLensDistortion.cpp.

References theCalibratedPrincipalPoint, theDecentDistortionParameters, and theRadialDistortionParameters.

187 {
188  os << "\nDump of ossimRadialDecentLensDistortion object" << endl;
189 
190  os << " theCalibratedPrincipalPoint: " << theCalibratedPrincipalPoint;
191 
192  for (unsigned int i=0; i<5; i++)
193  os << "\n K["<<i<<"]: " << theRadialDistortionParameters[i];
194 
195  for (unsigned int i=0; i<5; i++)
196  os << "\n P["<<i<<"]: " << theDecentDistortionParameters[i];
197 
198  os << endl;
199 
200  // call base class print???
201 
202  return os;
203 }

◆ saveState()

bool ossimRadialDecentLensDistortion::saveState ( ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Method to save the state of the object to a keyword list. Return true if ok or false on error.

Reimplemented from ossim2dTo2dTransform.

Definition at line 97 of file ossimRadialDecentLensDistortion.cpp.

References ossimKeywordlist::add(), ossimString::c_str(), DECENT_DISTORTION_COEFF_KW, PRINCIPAL_POINT_X_KW, PRINCIPAL_POINT_Y_KW, RADIAL_DISTORTION_COEFF_KW, ossim2dTo2dTransform::saveState(), theCalibratedPrincipalPoint, theDecentDistortionParameters, theRadialDistortionParameters, ossimString::toString(), ossimDpt::x, and ossimDpt::y.

99 {
100  //***
101  // Principal Point:
102  //***
105 
106  for(int i=0; i<5; ++i)
107  {
108  //---
109  // Radial distortion coefficients:
110  //---
112  key += ossimString::toString(i);
113  kwl.add(prefix,
114  key.c_str(),
116  true, // overwrite
117  15); // scientific
118 
119  //---
120  // Decentering distortion coefficients:
121  //---
123  key += ossimString::toString(i);
124  kwl.add(prefix,
125  key.c_str(),
127  true, // overwrite
128  15); // scientific
129  }
130 
131  //***
132  // Pass on to base class:
133  //***
134  bool rtn_val = ossim2dTo2dTransform::saveState(kwl, prefix);
135 
136  return rtn_val;
137 }
double y
Definition: ossimDpt.h:165
static ossimString toString(bool aValue)
Numeric to string methods.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
double x
Definition: ossimDpt.h:164
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396

◆ setDecentDistortionParams()

void ossimRadialDecentLensDistortion::setDecentDistortionParams ( const NEWMAT::ColumnVector &  params)
inline

Definition at line 153 of file ossimRadialDecentLensDistortion.h.

154 {
156 }

◆ setPrincipalPoint()

void ossimRadialDecentLensDistortion::setPrincipalPoint ( const ossimDpt  pp)
inline

Set methods provide alternative initialization scheme to loadState:

Definition at line 141 of file ossimRadialDecentLensDistortion.h.

◆ setRadialDistortionParams()

void ossimRadialDecentLensDistortion::setRadialDistortionParams ( const NEWMAT::ColumnVector &  params)
inline

Definition at line 147 of file ossimRadialDecentLensDistortion.h.

148 {
150 }

Member Data Documentation

◆ DECENT_DISTORTION_COEFF_KW

const char * ossimRadialDecentLensDistortion::DECENT_DISTORTION_COEFF_KW = "decent_distortion_coeff_P"
static

Definition at line 120 of file ossimRadialDecentLensDistortion.h.

Referenced by loadState(), and saveState().

◆ PRINCIPAL_POINT_X_KW

const char * ossimRadialDecentLensDistortion::PRINCIPAL_POINT_X_KW = "principal_point_x"
static

Definition at line 117 of file ossimRadialDecentLensDistortion.h.

Referenced by loadState(), and saveState().

◆ PRINCIPAL_POINT_Y_KW

const char * ossimRadialDecentLensDistortion::PRINCIPAL_POINT_Y_KW = "principal_point_y"
static

Definition at line 118 of file ossimRadialDecentLensDistortion.h.

Referenced by loadState(), and saveState().

◆ RADIAL_DISTORTION_COEFF_KW

const char * ossimRadialDecentLensDistortion::RADIAL_DISTORTION_COEFF_KW = "radial_distortion_coeff_K"
static

Definition at line 119 of file ossimRadialDecentLensDistortion.h.

Referenced by loadState(), and saveState().

◆ theCalibratedPrincipalPoint

ossimDpt ossimRadialDecentLensDistortion::theCalibratedPrincipalPoint
protected

Definition at line 130 of file ossimRadialDecentLensDistortion.h.

Referenced by forward(), loadState(), print(), and saveState().

◆ theDecentDistortionParameters

NEWMAT::ColumnVector ossimRadialDecentLensDistortion::theDecentDistortionParameters
protected

Definition at line 132 of file ossimRadialDecentLensDistortion.h.

Referenced by forward(), loadState(), print(), and saveState().

◆ theRadialDistortionParameters

NEWMAT::ColumnVector ossimRadialDecentLensDistortion::theRadialDistortionParameters
protected

Definition at line 131 of file ossimRadialDecentLensDistortion.h.

Referenced by deltaR(), loadState(), print(), and saveState().


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