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

#include <ossimTangentialRadialLensDistortion.h>

Inheritance diagram for ossimTangentialRadialLensDistortion:
ossimLensDistortion ossim2dTo2dTransform ossimObject ossimReferenced

Public Member Functions

 ossimTangentialRadialLensDistortion ()
 
 ossimTangentialRadialLensDistortion (const ossimDpt &calibratedCenter, double k1=0.0, double k2=0.0, double k3=0.0, double p1=0.0, double p2=0.0)
 
 ossimTangentialRadialLensDistortion (const ossimDpt &calibratedCenter, std::vector< double > k, std::vector< double > p)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual void undistort (const ossimDpt &input, ossimDpt &output) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
- Public Member Functions inherited from ossimLensDistortion
 ossimLensDistortion (const ossimDpt &callibratedCenter=ossimDpt(0, 0))
 
void setCenter (const ossimDpt &center)
 
const ossimDptgetCenter () const
 
virtual void forward (const ossimDpt &input, ossimDpt &output) const
 
virtual void inverse (const ossimDpt &input, ossimDpt &output)
 
virtual void distort (const ossimDpt &input, ossimDpt &output) const
 
- Public Member Functions inherited from ossim2dTo2dTransform
virtual void forward (ossimDpt &modify_this) const
 
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
 

Protected Attributes

std::vector< ossim_float64m_k
 
std::vector< ossim_float64m_p
 
- Protected Attributes inherited from ossimLensDistortion
ossimDpt theCenter
 
- Protected Attributes inherited from ossim2dTo2dTransform
double theConvergenceThreshold
 
int theMaxIterations
 
ossimDpt theDxDy
 

Additional Inherited Members

- Protected Member Functions inherited from ossim2dTo2dTransform
 ossim2dTo2dTransform ()
 
virtual ~ossim2dTo2dTransform ()
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Detailed Description

Definition at line 33 of file ossimTangentialRadialLensDistortion.h.

Constructor & Destructor Documentation

◆ ossimTangentialRadialLensDistortion() [1/3]

ossimTangentialRadialLensDistortion::ossimTangentialRadialLensDistortion ( )

Definition at line 7 of file ossimTangentialRadialLensDistortion.cpp.

References m_k, and m_p.

9 {
10  m_k.resize(3);
11  m_p.resize(2);
12  m_k[0] = m_k[1] = m_k[2] = 0.0;
13  m_p[0] = m_p[1];
14 }
ossimLensDistortion(const ossimDpt &callibratedCenter=ossimDpt(0, 0))

◆ ossimTangentialRadialLensDistortion() [2/3]

ossimTangentialRadialLensDistortion::ossimTangentialRadialLensDistortion ( const ossimDpt calibratedCenter,
double  k1 = 0.0,
double  k2 = 0.0,
double  k3 = 0.0,
double  p1 = 0.0,
double  p2 = 0.0 
)

Definition at line 15 of file ossimTangentialRadialLensDistortion.cpp.

References m_k, and m_p.

18  :ossimLensDistortion(calibratedCenter)
19  {
20 
21  m_k.resize(3);
22  m_p.resize(2);
23 
24  m_k[0] = k1;
25  m_k[1] = k2;
26  m_k[2] = k3;
27 
28  m_p[0] = p1;
29  m_p[1] = p2;
30 
31 
32 }
ossimLensDistortion(const ossimDpt &callibratedCenter=ossimDpt(0, 0))

◆ ossimTangentialRadialLensDistortion() [3/3]

ossimTangentialRadialLensDistortion::ossimTangentialRadialLensDistortion ( const ossimDpt calibratedCenter,
std::vector< double >  k,
std::vector< double >  p 
)

Definition at line 33 of file ossimTangentialRadialLensDistortion.cpp.

36  :ossimLensDistortion(calibratedCenter),
37  m_k(k),
38  m_p(p)
39 {
40 }
ossimLensDistortion(const ossimDpt &callibratedCenter=ossimDpt(0, 0))

Member Function Documentation

◆ loadState()

bool ossimTangentialRadialLensDistortion::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 ossimLensDistortion.

Definition at line 90 of file ossimTangentialRadialLensDistortion.cpp.

References ossimKeywordlist::find(), ossimLensDistortion::loadState(), m_k, m_p, and ossim::toSimpleVector().

92 {
93  bool result = ossimLensDistortion::loadState(kwl, prefix);
94  ossimString k = kwl.find(prefix, "k");
95  ossimString p = kwl.find(prefix, "p");
96 
97  m_k.clear();
98  m_p.clear();
101 
102  return result;
103 }
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
const char * find(const char *key) const
bool toSimpleVector(std::vector< T > &result, const ossimString &stringOfPoints)
Definition: ossimCommon.h:537

◆ print()

virtual std::ostream& ossimTangentialRadialLensDistortion::print ( std::ostream &  out) const
inlinevirtual

Generic print method.

Derived classes should re-implement as they see fit.

Returns
std::ostream&

Reimplemented from ossim2dTo2dTransform.

Definition at line 46 of file ossimTangentialRadialLensDistortion.h.

47  {return out;}

◆ saveState()

bool ossimTangentialRadialLensDistortion::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 ossimLensDistortion.

Definition at line 75 of file ossimTangentialRadialLensDistortion.cpp.

References ossimKeywordlist::add(), m_k, m_p, ossimLensDistortion::saveState(), and ossim::toSimpleStringList().

Referenced by ossimSpectraboticsRedEdgeModel::saveState().

77 {
78  bool result = ossimLensDistortion::saveState(kwl, prefix);
79  ossimString kValues;
80  ossimString pValues;
83 
84  kwl.add(prefix, "k", kValues);
85  kwl.add(prefix, "p", pValues);
86 
87  return result;
88 }
void toSimpleStringList(ossimString &result, const std::vector< T > &valuesList)
This will output a vector of values inst a string.
Definition: ossimCommon.h:484
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const

◆ undistort()

void ossimTangentialRadialLensDistortion::undistort ( const ossimDpt input,
ossimDpt output 
) const
virtual

Implements ossimLensDistortion.

Definition at line 42 of file ossimTangentialRadialLensDistortion.cpp.

References m_k, m_p, ossimDpt::x, and ossimDpt::y.

44 {
45  // make relative to calibrated center
46  //ossimDpt deltaPosition(input.x - theCenter.x,
47  // input.y - theCenter.y);
48 
49  double r = sqrt(input.x*input.x +
50  input.y*input.y);
51  double r2 = r*r;
52  double rMultiplier = r2;
53  ossim_uint32 idx = 0;
54  // comnpute the radial portion of the equation of the form
55  // 1 + k0*r^2 + k1*r^4 + .......
56  double tempRadial = 1.0;
57  for(idx = 0; idx < m_k.size();++idx)
58  {
59  tempRadial += m_k[idx]*rMultiplier;
60  rMultiplier*=r2;
61  }
62  // now apply the radial to the input point and then
63  // shift and apply the tangential coefficients along x and y.
64  output.x = (input.x*tempRadial) +
65  (2.0*m_p[0]*input.x*input.y) +
66  (m_p[1]*(r2 + 2*input.x*input.x));
67 
68  output.y = (input.y*tempRadial) +
69  (2.0*m_p[1]*input.x*input.y) +
70  (m_p[0]*(r2 + 2*input.y*input.y));
71 
72 // output.x += theCenter.x;
73 // output.y += theCenter.y;
74 }
double y
Definition: ossimDpt.h:165
unsigned int ossim_uint32
double x
Definition: ossimDpt.h:164

Member Data Documentation

◆ m_k

std::vector<ossim_float64> ossimTangentialRadialLensDistortion::m_k
protected

◆ m_p

std::vector<ossim_float64> ossimTangentialRadialLensDistortion::m_p
protected

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