Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
vgl_norm_trans_2d< T > Class Template Reference

#include <vgl_algo_fwd.h>

Inheritance diagram for vgl_norm_trans_2d< T >:
Inheritance graph
[legend]

Public Member Functions

 vgl_norm_trans_2d ()
 
 vgl_norm_trans_2d (const vgl_norm_trans_2d< T > &M)
 
 vgl_norm_trans_2d (vnl_matrix_fixed< T, 3, 3 > const &M)
 
 vgl_norm_trans_2d (const T *t_matrix)
 
 vgl_norm_trans_2d (std::istream &s)
 
 vgl_norm_trans_2d (char const *filename)
 
 ~vgl_norm_trans_2d ()
 
bool compute_from_points (std::vector< vgl_homg_point_2d< T > > const &points, bool isotropic=true)
 compute the normalizing transform. More...
 
bool compute_from_lines (std::vector< vgl_homg_line_2d< T > > const &lines, bool isotropic=true)
 The normalizing transform for lines is computed from the set of points defined by the intersection of the perpendicular from the origin with the line. More...
 
bool compute_from_points_and_lines (std::vector< vgl_homg_point_2d< T > > const &pts, std::vector< vgl_homg_line_2d< T > > const &lines, bool isotropic=true)
 The normalizing transform for points and lines is computed from the set of points used by compute_from_points() & the one used by compute_from_lines(). More...
 
vgl_homg_point_2d< T > operator() (vgl_homg_point_2d< T > const &p) const
 Return the transformed point given by $q = {\tt H} p$. More...
 
vgl_conic< T > operator() (vgl_conic< T > const &C) const
 assumed to be a point conic. More...
 
vgl_homg_line_2d< T > operator() (vgl_homg_line_2d< T > const &l) const
 Return the transformed line given by $m = {\tt H}^{-1} l$. More...
 
vgl_homg_point_2d< T > operator * (vgl_homg_point_2d< T > const &p) const
 Return the transformed point given by $q = {\tt H} p$. More...
 
vgl_homg_line_2d< T > operator * (vgl_homg_line_2d< T > const &l) const
 Return the transformed line given by $m = {\tt H}^{-1} l$. More...
 
vgl_h_matrix_2d< T > operator * (vgl_h_matrix_2d< T > const &H) const
 composition (*this) * H. More...
 
bool operator== (vgl_h_matrix_2d< T > const &M) const
 
vgl_homg_line_2d< T > preimage (vgl_homg_line_2d< T > const &l) const
 Return the transformed line given by $m = {\tt H} l$. More...
 
vgl_homg_point_2d< T > preimage (vgl_homg_point_2d< T > const &q) const
 Return the transformed point given by $p = {\tt H}^{-1} q$. More...
 
vgl_conic< T > preimage (vgl_conic< T > const &C) const
 assumed to be a point conic. More...
 
vgl_homg_line_2d< T > correlation (vgl_homg_point_2d< T > const &p) const
 
vgl_homg_point_2d< T > correlation (vgl_homg_line_2d< T > const &l) const
 
vnl_matrix_fixed< T, 3, 3 > const & get_matrix () const
 Return the 3x3 homography matrix. More...
 
void get (vnl_matrix_fixed< T, 3, 3 > *M) const
 Fill M with contents of the 3x3 homography matrix. More...
 
void get (vnl_matrix< T > *M) const
 
void get (T *M) const
 Fill M with contents of the 3x3 homography matrix. More...
 
get (unsigned int row_index, unsigned int col_index) const
 Return an element from the 3x3 homography matrix. More...
 
vgl_h_matrix_2d get_inverse () const
 Return the inverse homography. More...
 
vgl_h_matrix_2dset (unsigned int row_index, unsigned int col_index, T value)
 Set an element of the 3x3 homography matrix. More...
 
vgl_h_matrix_2dset (T const *M)
 Set to 3x3 row-stored matrix. More...
 
vgl_h_matrix_2dset (vnl_matrix_fixed< T, 3, 3 > const &M)
 Set to given 3x3 matrix. More...
 
vgl_h_matrix_2dset_identity ()
 initialize the transformation to identity. More...
 
vgl_h_matrix_2dset_translation (T tx, T ty)
 set H[0][2] = tx and H[1][2] = ty, other elements unaltered. More...
 
vgl_h_matrix_2dset_rotation (T theta)
 the upper 2x2 part of the matrix is replaced by a rotation matrix. More...
 
vgl_h_matrix_2dset_scale (T scale)
 compose the current transform with a uniform scaling transformation, S. More...
 
vgl_h_matrix_2dset_similarity (T s, T theta, T tx, T ty)
 set the transform to a similarity mapping. More...
 
vgl_h_matrix_2dset_aspect_ratio (T aspect_ratio)
 compose the transform with diagonal aspect ratio transform. More...
 
vgl_h_matrix_2dset_affine (vnl_matrix_fixed< T, 2, 3 > const &M23)
 set the transform to a general affine transform matrix. More...
 
vgl_h_matrix_2dset_affine (vnl_matrix< T > const &M23)
 
bool is_rotation () const
 
bool is_euclidean () const
 
bool is_identity () const
 
bool projective_basis (std::vector< vgl_homg_point_2d< T > > const &four_points)
 transformation to projective basis (canonical frame). More...
 
bool projective_basis (std::vector< vgl_homg_line_2d< T > > const &four_lines)
 transformation to projective basis (canonical frame). More...
 
vgl_h_matrix_2d< T > get_upper_2x2 () const
 corresponds to rotation for Euclidean transformations. More...
 
vnl_matrix_fixed< T, 2, 2 > get_upper_2x2_matrix () const
 corresponds to rotation for Euclidean transformations. More...
 
vgl_homg_point_2d< T > get_translation () const
 corresponds to translation for affine transformations. More...
 
vnl_vector_fixed< T, 2 > get_translation_vector () const
 corresponds to translation for affine transformations. More...
 
bool read (std::istream &s)
 Read H from std::istream. More...
 
bool read (char const *filename)
 Read H from file. More...
 

Static Protected Member Functions

static bool scale_xyroot2 (std::vector< vgl_homg_point_2d< T > > const &in, T &radius)
 
static void center_of_mass (std::vector< vgl_homg_point_2d< T > > const &points, T &cx, T &cy)
 
static bool scale_aniostropic (std::vector< vgl_homg_point_2d< T > > const &in, T &sdx, T &sdy, T &c, T &s)
 

Protected Attributes

vnl_matrix_fixed< T, 3, 3 > t12_matrix_
 

Detailed Description

template<class T>
class vgl_norm_trans_2d< T >

Definition at line 14 of file vgl_algo_fwd.h.

Constructor & Destructor Documentation

◆ vgl_norm_trans_2d() [1/6]

template<class T >
vgl_norm_trans_2d< T >::vgl_norm_trans_2d ( )

Definition at line 20 of file vgl_norm_trans_2d.hxx.

◆ vgl_norm_trans_2d() [2/6]

template<class T >
vgl_norm_trans_2d< T >::vgl_norm_trans_2d ( const vgl_norm_trans_2d< T > &  M)

Definition at line 26 of file vgl_norm_trans_2d.hxx.

◆ vgl_norm_trans_2d() [3/6]

template<class T >
vgl_norm_trans_2d< T >::vgl_norm_trans_2d ( vnl_matrix_fixed< T, 3, 3 > const &  M)

Definition at line 49 of file vgl_norm_trans_2d.hxx.

◆ vgl_norm_trans_2d() [4/6]

template<class T >
vgl_norm_trans_2d< T >::vgl_norm_trans_2d ( const T *  t_matrix)

Definition at line 57 of file vgl_norm_trans_2d.hxx.

◆ vgl_norm_trans_2d() [5/6]

template<class T >
vgl_norm_trans_2d< T >::vgl_norm_trans_2d ( std::istream &  s)

Definition at line 34 of file vgl_norm_trans_2d.hxx.

◆ vgl_norm_trans_2d() [6/6]

template<class T >
vgl_norm_trans_2d< T >::vgl_norm_trans_2d ( char const *  filename)

Definition at line 41 of file vgl_norm_trans_2d.hxx.

◆ ~vgl_norm_trans_2d()

template<class T >
vgl_norm_trans_2d< T >::~vgl_norm_trans_2d ( )
default

Member Function Documentation

◆ center_of_mass()

template<class T >
void vgl_norm_trans_2d< T >::center_of_mass ( std::vector< vgl_homg_point_2d< T > > const &  points,
T &  cx,
T &  cy 
)
staticprotected

Definition at line 159 of file vgl_norm_trans_2d.hxx.

◆ compute_from_lines()

template<class T >
bool vgl_norm_trans_2d< T >::compute_from_lines ( std::vector< vgl_homg_line_2d< T > > const &  lines,
bool  isotropic = true 
)

The normalizing transform for lines is computed from the set of points defined by the intersection of the perpendicular from the origin with the line.

Each such point is given by: $p = [-a*c, -b*c, \sqrt(a^2+b^2)]^T$ If we assume the line is normalized then: $p = [-a*c, -b*c, 1]^T$

Definition at line 118 of file vgl_norm_trans_2d.hxx.

◆ compute_from_points()

template<class T >
bool vgl_norm_trans_2d< T >::compute_from_points ( std::vector< vgl_homg_point_2d< T > > const &  points,
bool  isotropic = true 
)

compute the normalizing transform.

Get the normalizing transform for a set of points.

  • Compute the center of gravity & form the normalizing transformation matrix
  • Transform the point set to a temporary collection
  • Compute the average point radius
  • Complete the normalizing transform

Definition at line 75 of file vgl_norm_trans_2d.hxx.

◆ compute_from_points_and_lines()

template<class T >
bool vgl_norm_trans_2d< T >::compute_from_points_and_lines ( std::vector< vgl_homg_point_2d< T > > const &  pts,
std::vector< vgl_homg_line_2d< T > > const &  lines,
bool  isotropic = true 
)

The normalizing transform for points and lines is computed from the set of points used by compute_from_points() & the one used by compute_from_lines().

Definition at line 139 of file vgl_norm_trans_2d.hxx.

◆ correlation() [1/2]

template<class T>
vgl_homg_line_2d< T > vgl_h_matrix_2d< T >::correlation ( vgl_homg_point_2d< T > const &  p) const
inherited

Definition at line 96 of file vgl_h_matrix_2d.hxx.

◆ correlation() [2/2]

template<class T>
vgl_homg_point_2d< T > vgl_h_matrix_2d< T >::correlation ( vgl_homg_line_2d< T > const &  l) const
inherited

Definition at line 112 of file vgl_h_matrix_2d.hxx.

◆ get() [1/4]

template<class T>
void vgl_h_matrix_2d< T >::get ( vnl_matrix_fixed< T, 3, 3 > *  M) const
inherited

Fill M with contents of the 3x3 homography matrix.

Definition at line 201 of file vgl_h_matrix_2d.hxx.

◆ get() [2/4]

template<class T>
void vgl_h_matrix_2d< T >::get ( vnl_matrix< T > *  M) const
inherited
Deprecated:
use the vnl_matrix_fixed variant instead

Definition at line 207 of file vgl_h_matrix_2d.hxx.

◆ get() [3/4]

template<class T>
void vgl_h_matrix_2d< T >::get ( T *  M) const
inherited

Fill M with contents of the 3x3 homography matrix.

Definition at line 194 of file vgl_h_matrix_2d.hxx.

◆ get() [4/4]

template<class T>
T vgl_h_matrix_2d< T >::get ( unsigned int  row_index,
unsigned int  col_index 
) const
inherited

Return an element from the 3x3 homography matrix.

Definition at line 188 of file vgl_h_matrix_2d.hxx.

◆ get_inverse()

template<class T >
vgl_h_matrix_2d< T > vgl_h_matrix_2d< T >::get_inverse ( ) const
inherited

Return the inverse homography.

Definition at line 377 of file vgl_h_matrix_2d.hxx.

◆ get_matrix()

template<class T>
vnl_matrix_fixed<T,3,3> const& vgl_h_matrix_2d< T >::get_matrix ( ) const
inlineinherited

Return the 3x3 homography matrix.

Definition at line 102 of file vgl_h_matrix_2d.h.

◆ get_translation()

template<class T >
vgl_homg_point_2d< T > vgl_h_matrix_2d< T >::get_translation ( ) const
inherited

corresponds to translation for affine transformations.

Definition at line 488 of file vgl_h_matrix_2d.hxx.

◆ get_translation_vector()

template<class T >
vnl_vector_fixed< T, 2 > vgl_h_matrix_2d< T >::get_translation_vector ( ) const
inherited

corresponds to translation for affine transformations.

Definition at line 500 of file vgl_h_matrix_2d.hxx.

◆ get_upper_2x2()

template<class T >
vgl_h_matrix_2d< T > vgl_h_matrix_2d< T >::get_upper_2x2 ( ) const
inherited

corresponds to rotation for Euclidean transformations.

Definition at line 461 of file vgl_h_matrix_2d.hxx.

◆ get_upper_2x2_matrix()

template<class T >
vnl_matrix_fixed< T, 2, 2 > vgl_h_matrix_2d< T >::get_upper_2x2_matrix ( ) const
inherited

corresponds to rotation for Euclidean transformations.

Definition at line 476 of file vgl_h_matrix_2d.hxx.

◆ is_euclidean()

template<class T >
bool vgl_h_matrix_2d< T >::is_euclidean ( ) const
inherited

Definition at line 302 of file vgl_h_matrix_2d.hxx.

◆ is_identity()

template<class T >
bool vgl_h_matrix_2d< T >::is_identity ( ) const
inherited

Definition at line 318 of file vgl_h_matrix_2d.hxx.

◆ is_rotation()

template<class T >
bool vgl_h_matrix_2d< T >::is_rotation ( ) const
inherited

Definition at line 294 of file vgl_h_matrix_2d.hxx.

◆ operator *() [1/3]

template<class T>
vgl_homg_point_2d<T> vgl_h_matrix_2d< T >::operator * ( vgl_homg_point_2d< T > const &  p) const
inlineinherited

Return the transformed point given by $q = {\tt H} p$.

Definition at line 72 of file vgl_h_matrix_2d.h.

◆ operator *() [2/3]

template<class T>
vgl_homg_line_2d<T> vgl_h_matrix_2d< T >::operator * ( vgl_homg_line_2d< T > const &  l) const
inlineinherited

Return the transformed line given by $m = {\tt H}^{-1} l$.

Definition at line 91 of file vgl_h_matrix_2d.h.

◆ operator *() [3/3]

template<class T>
vgl_h_matrix_2d<T> vgl_h_matrix_2d< T >::operator * ( vgl_h_matrix_2d< T > const &  H) const
inlineinherited

composition (*this) * H.

Definition at line 96 of file vgl_h_matrix_2d.h.

◆ operator()() [1/3]

template<class T>
vgl_homg_point_2d< T > vgl_h_matrix_2d< T >::operator() ( vgl_homg_point_2d< T > const &  p) const
inherited

Return the transformed point given by $q = {\tt H} p$.

Definition at line 88 of file vgl_h_matrix_2d.hxx.

◆ operator()() [2/3]

template<class T>
vgl_conic< T > vgl_h_matrix_2d< T >::operator() ( vgl_conic< T > const &  C) const
inherited

assumed to be a point conic.

Definition at line 120 of file vgl_h_matrix_2d.hxx.

◆ operator()() [3/3]

template<class T>
vgl_homg_line_2d< T > vgl_h_matrix_2d< T >::operator() ( vgl_homg_line_2d< T > const &  l) const
inherited

Return the transformed line given by $m = {\tt H}^{-1} l$.

Definition at line 157 of file vgl_h_matrix_2d.hxx.

◆ operator==()

template<class T>
bool vgl_h_matrix_2d< T >::operator== ( vgl_h_matrix_2d< T > const &  M) const
inlineinherited

Definition at line 74 of file vgl_h_matrix_2d.h.

◆ preimage() [1/3]

template<class T>
vgl_homg_line_2d< T > vgl_h_matrix_2d< T >::preimage ( vgl_homg_line_2d< T > const &  l) const
inherited

Return the transformed line given by $m = {\tt H} l$.

Definition at line 104 of file vgl_h_matrix_2d.hxx.

◆ preimage() [2/3]

template<class T>
vgl_homg_point_2d< T > vgl_h_matrix_2d< T >::preimage ( vgl_homg_point_2d< T > const &  q) const
inherited

Return the transformed point given by $p = {\tt H}^{-1} q$.

Definition at line 149 of file vgl_h_matrix_2d.hxx.

◆ preimage() [3/3]

template<class T>
vgl_conic< T > vgl_h_matrix_2d< T >::preimage ( vgl_conic< T > const &  C) const
inherited

assumed to be a point conic.

Definition at line 134 of file vgl_h_matrix_2d.hxx.

◆ projective_basis() [1/2]

template<class T>
bool vgl_h_matrix_2d< T >::projective_basis ( std::vector< vgl_homg_point_2d< T > > const &  four_points)
inherited

transformation to projective basis (canonical frame).

Compute the homography that takes the input set of points to the canonical frame. The points act as the projective basis for the canonical coordinate system. In the canonical frame the points have coordinates: $\begin{array}{cccc} p[0] & p[1] & p[2] & p[3] \% 1 & 0 & 0 & 1 \% 0 & 1 & 0 & 1 \% 0 & 0 & 1 & 1 \end{array}$

Definition at line 241 of file vgl_h_matrix_2d.hxx.

◆ projective_basis() [2/2]

template<class T>
bool vgl_h_matrix_2d< T >::projective_basis ( std::vector< vgl_homg_line_2d< T > > const &  four_lines)
inherited

transformation to projective basis (canonical frame).

Compute the homography that takes the input set of lines to the canonical frame. The lines act as the dual projective basis for the canonical coordinate system. In the canonical frame the lines have equations: x=0; y=0; w=0; x+y+w=0. (The third line is the line at infinity.)

Definition at line 325 of file vgl_h_matrix_2d.hxx.

◆ read() [1/2]

template<class T >
bool vgl_h_matrix_2d< T >::read ( std::istream &  s)
inherited

Read H from std::istream.

Definition at line 170 of file vgl_h_matrix_2d.hxx.

◆ read() [2/2]

template<class T >
bool vgl_h_matrix_2d< T >::read ( char const *  filename)
inherited

Read H from file.

Definition at line 177 of file vgl_h_matrix_2d.hxx.

◆ scale_aniostropic()

template<class T >
bool vgl_norm_trans_2d< T >::scale_aniostropic ( std::vector< vgl_homg_point_2d< T > > const &  in,
T &  sdx,
T &  sdy,
T &  c,
T &  s 
)
staticprotected

Definition at line 222 of file vgl_norm_trans_2d.hxx.

◆ scale_xyroot2()

template<class T >
bool vgl_norm_trans_2d< T >::scale_xyroot2 ( std::vector< vgl_homg_point_2d< T > > const &  in,
T &  radius 
)
staticprotected

Definition at line 192 of file vgl_norm_trans_2d.hxx.

◆ set() [1/3]

template<class T>
vgl_h_matrix_2d& vgl_h_matrix_2d< T >::set ( unsigned int  row_index,
unsigned int  col_index,
value 
)
inlineinherited

Set an element of the 3x3 homography matrix.

Definition at line 116 of file vgl_h_matrix_2d.h.

◆ set() [2/3]

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set ( T const *  M)
inherited

Set to 3x3 row-stored matrix.

Definition at line 223 of file vgl_h_matrix_2d.hxx.

◆ set() [3/3]

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set ( vnl_matrix_fixed< T, 3, 3 > const &  M)
inherited

Set to given 3x3 matrix.

Definition at line 232 of file vgl_h_matrix_2d.hxx.

◆ set_affine() [1/2]

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_affine ( vnl_matrix_fixed< T, 2, 3 > const &  M23)
inherited

set the transform to a general affine transform matrix.

$A = \left[ \begin{array}{ccc} a00 & a01 & a02 \% a10 & a11 & a12 \% 0 & 0 & 1 \end{array}\right]$

Definition at line 437 of file vgl_h_matrix_2d.hxx.

◆ set_affine() [2/2]

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_affine ( vnl_matrix< T > const &  M23)
inherited
Deprecated:
use the vnl_matrix_fixed variant instead

Definition at line 448 of file vgl_h_matrix_2d.hxx.

◆ set_aspect_ratio()

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_aspect_ratio ( aspect_ratio)
inherited

compose the transform with diagonal aspect ratio transform.

$A = \left[ \begin{array}{ccc} 1 & 0 & 0 \% 0 & a & 0 \% 0 & 0 & 1 \end{array}\right]$ , Ta = A*T.

Definition at line 427 of file vgl_h_matrix_2d.hxx.

◆ set_identity()

template<class T >
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_identity ( )
inherited

initialize the transformation to identity.

Definition at line 215 of file vgl_h_matrix_2d.hxx.

◆ set_rotation()

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_rotation ( theta)
inherited

the upper 2x2 part of the matrix is replaced by a rotation matrix.

rotation angle theta is in radians

Definition at line 393 of file vgl_h_matrix_2d.hxx.

◆ set_scale()

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_scale ( scale)
inherited

compose the current transform with a uniform scaling transformation, S.

$S = \left[ \begin{array}{ccc} s & 0 & 0 \% 0 & s & 0 \% 0 & 0 & 1 \end{array}\right]$ , Ts = S*T.

Definition at line 404 of file vgl_h_matrix_2d.hxx.

◆ set_similarity()

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_similarity ( s,
theta,
tx,
ty 
)
inherited

set the transform to a similarity mapping.

Sim $ = \left[\begin{array}{ccc} \cos(\theta) & -\sin(\theta) & tx \% \sin(\theta) & \cos(\theta) & ty \% 0 & 0 & 1 \end{array}\right]$

Definition at line 414 of file vgl_h_matrix_2d.hxx.

◆ set_translation()

template<class T>
vgl_h_matrix_2d< T > & vgl_h_matrix_2d< T >::set_translation ( tx,
ty 
)
inherited

set H[0][2] = tx and H[1][2] = ty, other elements unaltered.

Definition at line 385 of file vgl_h_matrix_2d.hxx.

Member Data Documentation

◆ t12_matrix_

template<class T>
vnl_matrix_fixed<T,3,3> vgl_h_matrix_2d< T >::t12_matrix_
protectedinherited

Definition at line 42 of file vgl_h_matrix_2d.h.


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