27 #include "../common/MatrixUtils.h" 
   43   static std::string name( 
"RST" );
 
   54                                const double& pt1Y, 
double& pt2X, 
double& pt2Y )
 const 
   56   assert( isValid( params ) );
 
   67                                 const double& pt2Y, 
double& pt1X, 
double& pt1Y )
 const 
   69   assert( isValid( params ) );
 
   93   m_computeParameters_tiepointsSize = params.
m_tiePoints.size();
 
   94   if( m_computeParameters_tiepointsSize < 2 ) 
return false;
 
   96   m_computeParameters_A.resize( 2 * m_computeParameters_tiepointsSize, 4 );
 
   97   m_computeParameters_L.resize( 2 * m_computeParameters_tiepointsSize, 1 );
 
   99   for ( m_computeParameters_tpIdx = 0 ; m_computeParameters_tpIdx < m_computeParameters_tiepointsSize ; ++m_computeParameters_tpIdx ) 
 
  101     m_computeParameters_index1 = m_computeParameters_tpIdx*2;
 
  102     m_computeParameters_index2 = m_computeParameters_index1 + 1;
 
  107     m_computeParameters_A( m_computeParameters_index1, 0 ) = x_y.
x;
 
  108     m_computeParameters_A( m_computeParameters_index1, 1 ) = -1.0 * x_y.
y;
 
  109     m_computeParameters_A( m_computeParameters_index1, 2 ) = 1.0;
 
  110     m_computeParameters_A( m_computeParameters_index1, 3 ) = 0.0;
 
  112     m_computeParameters_A( m_computeParameters_index2, 0 ) = x_y.
y;
 
  113     m_computeParameters_A( m_computeParameters_index2, 1 ) = x_y.
x;
 
  114     m_computeParameters_A( m_computeParameters_index2, 2 ) = 0.0;
 
  115     m_computeParameters_A( m_computeParameters_index2, 3 ) = 1.0;    
 
  117     m_computeParameters_L( m_computeParameters_index1, 0 ) = u_v.
x;
 
  118     m_computeParameters_L( m_computeParameters_index2, 0 ) = u_v.
y;
 
  125   m_computeParameters_At =  boost::numeric::ublas::trans( m_computeParameters_A );
 
  128   m_computeParameters_N = boost::numeric::ublas::prod( m_computeParameters_At, m_computeParameters_A );
 
  131   m_computeParameters_U = boost::numeric::ublas::prod( m_computeParameters_At, m_computeParameters_L );
 
  139     m_computeParameters_X = boost::numeric::ublas::prod( m_computeParameters_N_inv, m_computeParameters_U );
 
  151     m_computeParameters_XExpanded.resize( 3, 3 );
 
  152     m_computeParameters_XExpanded( 0, 0 ) = m_computeParameters_X(0,0);
 
  153     m_computeParameters_XExpanded( 0, 1 ) = -1.0 * m_computeParameters_X(1,0);
 
  154     m_computeParameters_XExpanded( 0, 2 ) = m_computeParameters_X(2,0);
 
  155     m_computeParameters_XExpanded( 1, 0 ) = m_computeParameters_X(1,0);
 
  156     m_computeParameters_XExpanded( 1, 1 ) = m_computeParameters_X(0,0);
 
  157     m_computeParameters_XExpanded( 1, 2 ) = m_computeParameters_X(3,0);
 
  158     m_computeParameters_XExpanded( 2, 0 ) = 0;
 
  159     m_computeParameters_XExpanded( 2, 1 ) = 0;
 
  160     m_computeParameters_XExpanded( 2, 2 ) = 1;
 
2D Rotation/scale/translation (rigid body) Geometric transformation. 
 
std::vector< TiePoint > m_tiePoints
Tie points. 
 
void inverseMap(const GTParameters ¶ms, const double &pt2X, const double &pt2Y, double &pt1X, double &pt1Y) const 
Inverse mapping (from pt2 space into pt1 space). 
 
std::vector< double > m_directParameters
Transformation numeric direct parameters. 
 
RSTGT()
Default constructor. 
 
const std::string & getName() const 
Returns the current transformation name. 
 
An utility struct for representing 2D coordinates. 
 
void directMap(const GTParameters ¶ms, const double &pt1X, const double &pt1Y, double &pt2X, double &pt2Y) const 
Direct mapping (from pt1 space into pt2 space). 
 
2D Rotation/scale/translation(rigid body) Geometric transformation. 
 
bool GetInverseMatrix(const boost::numeric::ublas::matrix< T > &inputMatrix, boost::numeric::ublas::matrix< T > &outputMatrix)
Matrix inversion. 
 
std::vector< double > m_inverseParameters
Transformation numeric inverse parameters. 
 
unsigned int getMinRequiredTiePoints() const 
Returns the minimum number of required tie-points for the current transformation. ...
 
GeometricTransformation * clone() const 
Creat a clone copy of this instance. 
 
2D Geometric transformation parameters. 
 
bool computeParameters(GTParameters ¶ms) const 
Calculate the transformation parameters following the new supplied tie-points.