Public Member Functions | Static Public Member Functions
msm_similarity_aligner Class Reference

Calculate and apply 2D similarity transformations. More...

#include <msm_similarity_aligner.h>

Inheritance diagram for msm_similarity_aligner:
Inheritance graph
[legend]

List of all members.

Public Member Functions

virtual ~msm_similarity_aligner ()
virtual unsigned size () const
 Return number of parameters defining the transformation.
virtual vnl_vector< double > inverse (const vnl_vector< double > &) const
 Compute parameters for inverse transformation.
virtual void apply_transform (const msm_points &points, const vnl_vector< double > &trans, msm_points &new_points) const
 Apply the transformation to the given points.
virtual double scale (const vnl_vector< double > &trans) const
 Return scaling applied by the transform with given parameters.
virtual void calc_transform_from_ref (const msm_points &ref_points, const msm_points &points2, vnl_vector< double > &trans) const
 Estimate parameter which best map ref_points to points2.
virtual void calc_transform (const msm_points &points1, const msm_points &points2, vnl_vector< double > &trans) const
 Estimate parameter which best map points1 to points2.
virtual void calc_transform_wt (const msm_points &points1, const msm_points &points2, const vnl_vector< double > &wts, vnl_vector< double > &trans) const
 Estimate parameters which map points1 to points2 allowing for weights.
virtual void calc_transform_wt_mat (const msm_points &points1, const msm_points &points2, const vcl_vector< msm_wt_mat_2d > &wt_mat, vnl_vector< double > &trans) const
 Estimate parameters which map points allowing for anisotropic wts.
virtual void transform_wt_mat (const vcl_vector< msm_wt_mat_2d > &wt_mat, const vnl_vector< double > &trans, vcl_vector< msm_wt_mat_2d > &new_wt_mat) const
 Apply transform to weight matrices (ie ignore translation component).
virtual vnl_vector< double > compose (const vnl_vector< double > &pose1, const vnl_vector< double > &pose2) const
 Returns params of pose such that pose(x) = pose1(pose2(x)).
virtual void normalise_shape (msm_points &points) const
 Apply transform to generate points in reference frame.
virtual void align_set (const vcl_vector< msm_points > &points, msm_points &ref_mean_shape, vcl_vector< vnl_vector< double > > &pose_to_ref, vnl_vector< double > &average_pose) const
 Find poses which align a set of points.
virtual vcl_string is_a () const
 Name of the class.
virtual msm_alignerclone () const
 Create a copy on the heap and return base class pointer.
void mean_of_transformed (const vcl_vector< msm_points > &points, const vcl_vector< vnl_vector< double > > &pose, msm_points &mean) const
 Compute mean of points[i] after transforming with pose[i].
virtual void print_summary (vcl_ostream &os) const
 Print class to os.
virtual void b_write (vsl_b_ostream &bfs) const
 Save class to binary file stream.
virtual void b_read (vsl_b_istream &bfs)
 Load class from binary file stream.
virtual void config_from_stream (vcl_istream &is)
 Initialise from a text stream.

Static Public Member Functions

static vcl_auto_ptr< msm_alignercreate_from_stream (vcl_istream &is)
 Create a concrete msm_aligner-derived object, from a text specification.

Detailed Description

Calculate and apply 2D similarity transformations.

Similarity transformation encoded as (a-1,b,tx,ty). Transformation is then x'=ax-by+tx, y' = bx+ay+ty.

Definition at line 15 of file msm_similarity_aligner.h.


Constructor & Destructor Documentation

virtual msm_similarity_aligner::~msm_similarity_aligner ( ) [inline, virtual]

Definition at line 19 of file msm_similarity_aligner.h.


Member Function Documentation

void msm_similarity_aligner::align_set ( const vcl_vector< msm_points > &  points,
msm_points ref_mean_shape,
vcl_vector< vnl_vector< double > > &  pose_to_ref,
vnl_vector< double > &  average_pose 
) const [virtual]

Find poses which align a set of points.

On exit ref_mean_shape is the mean shape in the reference frame, pose_to_ref[i] maps points[i] into the reference frame (ie pose is the mapping from the reference frame to the target frames).

Parameters:
average_poseSome estimate of the average mapping

On exit ref_mean_shape is the mean shape in the reference frame, pose_to_ref[i] maps points[i] into the reference frame (ie pose is the mapping from the reference frame to the target frames).

Parameters:
average_poseAverage mapping from ref to target frame

Implements msm_aligner.

Definition at line 418 of file msm_similarity_aligner.cxx.

void msm_similarity_aligner::apply_transform ( const msm_points points,
const vnl_vector< double > &  trans,
msm_points new_points 
) const [virtual]

Apply the transformation to the given points.

Implements msm_aligner.

Definition at line 31 of file msm_similarity_aligner.cxx.

void msm_aligner::b_read ( vsl_b_istream bfs) [virtual, inherited]

Load class from binary file stream.

Definition at line 46 of file msm_aligner.cxx.

void msm_aligner::b_write ( vsl_b_ostream bfs) const [virtual, inherited]

Save class to binary file stream.

Definition at line 39 of file msm_aligner.cxx.

void msm_similarity_aligner::calc_transform ( const msm_points pts1,
const msm_points pts2,
vnl_vector< double > &  trans 
) const [virtual]

Estimate parameter which best map points1 to points2.

Minimises ||points2-T(points1)||^2

Implements msm_aligner.

Definition at line 102 of file msm_similarity_aligner.cxx.

void msm_similarity_aligner::calc_transform_from_ref ( const msm_points ref_pts,
const msm_points pts2,
vnl_vector< double > &  trans 
) const [virtual]

Estimate parameter which best map ref_points to points2.

Minimises ||points2-T(ref_points)||^2. Takes advantage of assumed properties of ref_points (eg CoG=origin, unit size etc) to perform efficiently.

When used with a shape model of form ref_points+Pb, where the modes P have certain orthogonality properties with respect to the ref shape, this can give the optimal transformation into a tangent plane, independent of the current parameters. In this case a one-shot method can be used to compute the optimal shape and pose parameters, rather than an iterative method which is required where the orthogonality properties do not hold, or where weights are considered.

Implements msm_aligner.

Definition at line 70 of file msm_similarity_aligner.cxx.

void msm_similarity_aligner::calc_transform_wt ( const msm_points pts1,
const msm_points pts2,
const vnl_vector< double > &  wts,
vnl_vector< double > &  trans 
) const [virtual]

Estimate parameters which map points1 to points2 allowing for weights.

Minimises sum of weighted squares error in frame of pts2, ie sum w_i * ||p2_i - T(p1_i)||

Implements msm_aligner.

Definition at line 156 of file msm_similarity_aligner.cxx.

void msm_similarity_aligner::calc_transform_wt_mat ( const msm_points pts1,
const msm_points pts2,
const vcl_vector< msm_wt_mat_2d > &  wt_mat,
vnl_vector< double > &  trans 
) const [virtual]

Estimate parameters which map points allowing for anisotropic wts.

Errors on point i are weighted by wt_mat[i] in pts2 frame. i.e. error is sum (p2_i-T(p1_i)'*wt_mat[i]*(p2_i-T(p1_i)

Errors on point i are weighted by wt_mat[i] in pts2 frame. ie error is sum (p2_i-T(p1_i)'*wt_mat[i]*(p2_i-T(p1_i)

Implements msm_aligner.

Definition at line 281 of file msm_similarity_aligner.cxx.

msm_aligner * msm_similarity_aligner::clone ( ) const [virtual]

Create a copy on the heap and return base class pointer.

Implements msm_aligner.

Definition at line 478 of file msm_similarity_aligner.cxx.

vnl_vector< double > msm_similarity_aligner::compose ( const vnl_vector< double > &  pose1,
const vnl_vector< double > &  pose2 
) const [virtual]

Returns params of pose such that pose(x) = pose1(pose2(x)).

Implements msm_aligner.

Definition at line 383 of file msm_similarity_aligner.cxx.

void msm_aligner::config_from_stream ( vcl_istream &  is) [virtual, inherited]

Initialise from a text stream.

The default implementation is for attribute-less normalisers, and throws if it finds any data in the stream.

Definition at line 70 of file msm_aligner.cxx.

vcl_auto_ptr< msm_aligner > msm_aligner::create_from_stream ( vcl_istream &  is) [static, inherited]

Create a concrete msm_aligner-derived object, from a text specification.

Definition at line 84 of file msm_aligner.cxx.

vnl_vector< double > msm_similarity_aligner::inverse ( const vnl_vector< double > &  t) const [virtual]

Compute parameters for inverse transformation.

Implements msm_aligner.

Definition at line 17 of file msm_similarity_aligner.cxx.

vcl_string msm_similarity_aligner::is_a ( ) const [virtual]

Name of the class.

Implements msm_aligner.

Definition at line 472 of file msm_similarity_aligner.cxx.

void msm_aligner::mean_of_transformed ( const vcl_vector< msm_points > &  points,
const vcl_vector< vnl_vector< double > > &  pose,
msm_points mean 
) const [inherited]

Compute mean of points[i] after transforming with pose[i].

Compute mean of points after transforming with pose.

Definition at line 14 of file msm_aligner.cxx.

void msm_similarity_aligner::normalise_shape ( msm_points points) const [virtual]

Apply transform to generate points in reference frame.

Apply transform to generate points in some reference frame.

Translate so that the centre of gravity is at the origin and scale to a unit size (points.vector().magnitude()==1)

For instance, depending on transform, may translate so the centre of gravity is at the origin and scale to a unit size.

Implements msm_aligner.

Definition at line 403 of file msm_similarity_aligner.cxx.

void msm_aligner::print_summary ( vcl_ostream &  os) const [virtual, inherited]

Print class to os.

Definition at line 31 of file msm_aligner.cxx.

double msm_similarity_aligner::scale ( const vnl_vector< double > &  trans) const [virtual]

Return scaling applied by the transform with given parameters.

Implements msm_aligner.

Definition at line 50 of file msm_similarity_aligner.cxx.

virtual unsigned msm_similarity_aligner::size ( ) const [inline, virtual]

Return number of parameters defining the transformation.

Implements msm_aligner.

Definition at line 22 of file msm_similarity_aligner.h.

void msm_similarity_aligner::transform_wt_mat ( const vcl_vector< msm_wt_mat_2d > &  wt_mat,
const vnl_vector< double > &  trans,
vcl_vector< msm_wt_mat_2d > &  new_wt_mat 
) const [virtual]

Apply transform to weight matrices (ie ignore translation component).

Implements msm_aligner.

Definition at line 371 of file msm_similarity_aligner.cxx.


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