Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends
SimilarityMetric Class Reference

#include <SimilarityMetric.h>

Inheritance diagram for SimilarityMetric:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 SimilarityMetric ()
 Default constructor sets parameters for an identity transformation.
 SimilarityMetric (int xsize, int ysize)
 Create a SimilarityMetric that transforms coordinates in the range (0..xsize, 0..ysize) to the square (-1..1, -1..1).
 SimilarityMetric (double cx, double cy, double scale)
 Create a SimilarityMetric that transforms according to (x,y) -> (x - cx, y - cy) * scale.
 ~SimilarityMetric ()
 Destructor.
void set_from_rectangle (int xsize, int ysize)
 Set transform to "(x,y) -> (x - xsize/2, y - ysize/2) / ((xsize+ysize)/2)".
void set_center_and_scale (double cx, double cy, double scale)
 Set transform to "(x,y) -> (x - cx, y - cy) * scale".
void scale_matrices (double s)
 Multiply all components of the transform matrix by "s".
virtual vgl_homg_point_2d< double > image_to_homg (vgl_point_2d< double > const &) const
 Convert 2D image point $(x,y)$ to homogeneous coordinates.
virtual HomgPoint2D image_to_homg (const vnl_double_2 &) const
 Condition the 2D point p.
virtual HomgPoint2D image_to_homg (double x, double y) const
 Convert 2D point $(x,y)$ to homogeneous coordinates.
virtual vgl_point_2d< double > homg_to_image (vgl_homg_point_2d< double > const &) const
 Convert conditioned point p to image coordinates.
virtual vnl_double_2 homg_to_image (const HomgPoint2D &) const
 Decondition homogeneous point.
virtual HomgPoint2D imagehomg_to_homg (const HomgPoint2D &) const
virtual HomgPoint2D homg_to_imagehomg (const HomgPoint2D &) const
 Transform homogeneous point to image coordinates, leaving it in homogeneous form.
virtual vgl_homg_point_2d< double > imagehomg_to_homg (vgl_homg_point_2d< double > const &) const
 Transform homogeneous point in image coordinates to conditioned coordinates.
virtual vgl_homg_point_2d< double > homg_to_imagehomg (vgl_homg_point_2d< double > const &) const
 Transform homogeneous point to image coordinates, leaving it in homogeneous form.
virtual double perp_dist_squared (HomgPoint2D const &p, HomgLine2D const &l) const
virtual double perp_dist_squared (vgl_homg_point_2d< double > const &, vgl_homg_line_2d< double > const &) const
 Compute perpendicular distance (in image coordinates) from point to line (supplied in conditioned coordinates).
virtual double distance_squared (const vgl_homg_point_2d< double > &, const vgl_homg_point_2d< double > &) const
 Compute distance (in image coordinates) between points supplied in conditioned coordinates.
virtual double distance_squared (vgl_line_segment_2d< double > const &segment, vgl_homg_line_2d< double > const &line) const
 Get distance between a line segment and an infinite line.
virtual double distance_squared (HomgPoint2D const &, HomgPoint2D const &) const
 Compute distance (in image coordinates) between points supplied in conditioned coordinates.
virtual double distance_squared (HomgLineSeg2D const &segment, HomgLine2D const &line) const
 Get distance between a line segment and an infinite line.
virtual bool is_linear () const
 Return true if the action of the conditioner can be represented as a planar homography.
virtual vnl_double_3x3 get_C () const
 Return conditioning matrix C that converts homogeneous image points to homogeneous conditioned points.
virtual vnl_double_3x3 get_C_inverse () const
 Return conditioning matrix C that converts homogeneous conditioned points to image coordinates.
virtual bool can_invert_distance () const
 Return true if the invert_distance function makes sense.
virtual double image_to_homg_distance (double image_distance) const
 Convert a distance in image coordinates to one in conditioned coordinates.
virtual double homg_to_image_distance (double image_distance) const
 Convert a distance in image coordinates to one in conditioned coordinates.
vcl_ostream & print (vcl_ostream &) const
 One line printout.
void print () const
void print (char *msg) const
 One line printout.
virtual vgl_homg_line_2d< double > homg_to_image_line (vgl_homg_line_2d< double > const &) const
 Convert homogeneous line in conditioned coordinates to one in image coordinates.
virtual HomgLine2D homg_to_image_line (const HomgLine2D &) const
virtual vgl_homg_line_2d< double > image_to_homg_line (vgl_homg_line_2d< double > const &) const
virtual HomgLine2D image_to_homg_line (const HomgLine2D &) const
virtual HomgLineSeg2D image_to_homg_line (const HomgLineSeg2D &) const
virtual vgl_line_segment_2d
< double > 
image_to_homg_line (vgl_line_segment_2d< double > const &l) const
virtual HomgLineSeg2D homg_line_to_image (const HomgLineSeg2D &) const
virtual vgl_line_segment_2d
< double > 
homg_line_to_image (vgl_line_segment_2d< double > const &l) const
 Convert homogeneous line segment in conditioned coordinates to one in image coordinates.
virtual HomgPoint2D perp_projection (const HomgLine2D &l, const HomgPoint2D &p) const
virtual vgl_homg_point_2d< double > perp_projection (vgl_homg_line_2d< double > const &l, vgl_homg_point_2d< double > const &p) const
 Project point onto line.
virtual bool is_within_distance (const HomgPoint2D &, const HomgPoint2D &, double distance) const
virtual bool is_within_distance (vgl_homg_point_2d< double > const &, vgl_homg_point_2d< double > const &, double distance) const

Static Public Member Functions

static FMatrix decondition (const FMatrix &F, const ImageMetric *c1, const ImageMetric *c2)

Private Member Functions

void make_matrices ()

Private Attributes

double centre_x_
double centre_y_
double inv_scale_
double scale_
vnl_double_3x3 cond_matrix
vnl_double_3x3 inv_cond_matrix

Friends

vcl_ostream & operator<< (vcl_ostream &o, const ImageMetric &m)

Detailed Description

Definition at line 30 of file SimilarityMetric.h.


Constructor & Destructor Documentation

SimilarityMetric::SimilarityMetric ( )

Default constructor sets parameters for an identity transformation.

Definition at line 26 of file SimilarityMetric.cxx.

SimilarityMetric::SimilarityMetric ( int  xsize,
int  ysize 
)

Create a SimilarityMetric that transforms coordinates in the range (0..xsize, 0..ysize) to the square (-1..1, -1..1).

Definition at line 48 of file SimilarityMetric.cxx.

SimilarityMetric::SimilarityMetric ( double  cx,
double  cy,
double  scale 
)

Create a SimilarityMetric that transforms according to (x,y) -> (x - cx, y - cy) * scale.

Definition at line 37 of file SimilarityMetric.cxx.

SimilarityMetric::~SimilarityMetric ( )

Destructor.

Definition at line 104 of file SimilarityMetric.cxx.


Member Function Documentation

bool SimilarityMetric::can_invert_distance ( ) const [virtual]

Return true if the invert_distance function makes sense.

Reimplemented from ImageMetric.

Definition at line 284 of file SimilarityMetric.cxx.

FMatrix ImageMetric::decondition ( const FMatrix F,
const ImageMetric c1,
const ImageMetric c2 
) [static, inherited]

Definition at line 308 of file ImageMetric.cxx.

double SimilarityMetric::distance_squared ( const vgl_homg_point_2d< double > &  p1,
const vgl_homg_point_2d< double > &  p2 
) const [virtual]

Compute distance (in image coordinates) between points supplied in conditioned coordinates.

Reimplemented from ImageMetric.

Definition at line 194 of file SimilarityMetric.cxx.

double SimilarityMetric::distance_squared ( vgl_line_segment_2d< double > const &  segment,
vgl_homg_line_2d< double > const &  line 
) const [virtual]

Get distance between a line segment and an infinite line.

The metric used is the maximum of the two endpoint perp distances.

Reimplemented from ImageMetric.

Definition at line 220 of file SimilarityMetric.cxx.

double SimilarityMetric::distance_squared ( HomgPoint2D const &  p1,
HomgPoint2D const &  p2 
) const [virtual]

Compute distance (in image coordinates) between points supplied in conditioned coordinates.

Reimplemented from ImageMetric.

Definition at line 206 of file SimilarityMetric.cxx.

double SimilarityMetric::distance_squared ( HomgLineSeg2D const &  segment,
HomgLine2D const &  line 
) const [virtual]

Get distance between a line segment and an infinite line.

The metric used is the maximum of the two endpoint perp distances.

Reimplemented from ImageMetric.

Definition at line 228 of file SimilarityMetric.cxx.

virtual vnl_double_3x3 SimilarityMetric::get_C ( ) const [inline, virtual]

Return conditioning matrix C that converts homogeneous image points to homogeneous conditioned points.

If the ImageMetric used is nonlinear, then we'll have to make other arrangements...

Reimplemented from ImageMetric.

Definition at line 80 of file SimilarityMetric.h.

virtual vnl_double_3x3 SimilarityMetric::get_C_inverse ( ) const [inline, virtual]

Return conditioning matrix C that converts homogeneous conditioned points to image coordinates.

Reimplemented from ImageMetric.

Definition at line 81 of file SimilarityMetric.h.

HomgLineSeg2D ImageMetric::homg_line_to_image ( const HomgLineSeg2D l) const [virtual, inherited]

Definition at line 155 of file ImageMetric.cxx.

vgl_line_segment_2d< double > ImageMetric::homg_line_to_image ( vgl_line_segment_2d< double > const &  l) const [virtual, inherited]

Convert homogeneous line segment in conditioned coordinates to one in image coordinates.

Definition at line 147 of file ImageMetric.cxx.

vgl_point_2d< double > SimilarityMetric::homg_to_image ( vgl_homg_point_2d< double > const &  p) const [virtual]

Convert conditioned point p to image coordinates.

Reimplemented from ImageMetric.

Definition at line 146 of file SimilarityMetric.cxx.

vnl_double_2 SimilarityMetric::homg_to_image ( const HomgPoint2D p) const [virtual]

Decondition homogeneous point.

Reimplemented from ImageMetric.

Definition at line 152 of file SimilarityMetric.cxx.

double SimilarityMetric::homg_to_image_distance ( double  image_distance) const [virtual]

Convert a distance in image coordinates to one in conditioned coordinates.

This is only possible for similarity transformations, but where it does make sense it can mean significant increases in speed.

Reimplemented from ImageMetric.

Definition at line 294 of file SimilarityMetric.cxx.

vgl_homg_line_2d< double > ImageMetric::homg_to_image_line ( vgl_homg_line_2d< double > const &  l) const [virtual, inherited]

Convert homogeneous line in conditioned coordinates to one in image coordinates.

Definition at line 93 of file ImageMetric.cxx.

HomgLine2D ImageMetric::homg_to_image_line ( const HomgLine2D l) const [virtual, inherited]

Definition at line 106 of file ImageMetric.cxx.

HomgPoint2D SimilarityMetric::homg_to_imagehomg ( const HomgPoint2D x) const [virtual]

Transform homogeneous point to image coordinates, leaving it in homogeneous form.

Reimplemented from ImageMetric.

Definition at line 175 of file SimilarityMetric.cxx.

vgl_homg_point_2d< double > SimilarityMetric::homg_to_imagehomg ( vgl_homg_point_2d< double > const &  x) const [virtual]

Transform homogeneous point to image coordinates, leaving it in homogeneous form.

Reimplemented from ImageMetric.

Definition at line 169 of file SimilarityMetric.cxx.

vgl_homg_point_2d< double > SimilarityMetric::image_to_homg ( vgl_point_2d< double > const &  p) const [virtual]

Convert 2D image point $(x,y)$ to homogeneous coordinates.

The precise transformation is $(x,y) \rightarrow (x - cx, y - cy, f)$

Reimplemented from ImageMetric.

Definition at line 124 of file SimilarityMetric.cxx.

HomgPoint2D SimilarityMetric::image_to_homg ( const vnl_double_2 &  p) const [virtual]

Condition the 2D point p.

Reimplemented from ImageMetric.

Definition at line 163 of file SimilarityMetric.cxx.

HomgPoint2D SimilarityMetric::image_to_homg ( double  x,
double  y 
) const [virtual]

Convert 2D point $(x,y)$ to homogeneous coordinates.

The precise transformation is $(x,y) \rightarrow (x - cx, y - cy, f)$

Reimplemented from ImageMetric.

Definition at line 136 of file SimilarityMetric.cxx.

double SimilarityMetric::image_to_homg_distance ( double  image_distance) const [virtual]

Convert a distance in image coordinates to one in conditioned coordinates.

This is only possible for similarity transformations, but where it does make sense it can mean significant increases in speed.

Reimplemented from ImageMetric.

Definition at line 289 of file SimilarityMetric.cxx.

vgl_homg_line_2d< double > ImageMetric::image_to_homg_line ( vgl_homg_line_2d< double > const &  l) const [virtual, inherited]

Definition at line 119 of file ImageMetric.cxx.

HomgLine2D ImageMetric::image_to_homg_line ( const HomgLine2D l) const [virtual, inherited]

Definition at line 132 of file ImageMetric.cxx.

HomgLineSeg2D ImageMetric::image_to_homg_line ( const HomgLineSeg2D l) const [virtual, inherited]

Definition at line 170 of file ImageMetric.cxx.

vgl_line_segment_2d< double > ImageMetric::image_to_homg_line ( vgl_line_segment_2d< double > const &  l) const [virtual, inherited]

Definition at line 163 of file ImageMetric.cxx.

HomgPoint2D SimilarityMetric::imagehomg_to_homg ( const HomgPoint2D x) const [virtual]

Reimplemented from ImageMetric.

Definition at line 187 of file SimilarityMetric.cxx.

vgl_homg_point_2d< double > SimilarityMetric::imagehomg_to_homg ( vgl_homg_point_2d< double > const &  x) const [virtual]

Transform homogeneous point in image coordinates to conditioned coordinates.

Reimplemented from ImageMetric.

Definition at line 182 of file SimilarityMetric.cxx.

virtual bool SimilarityMetric::is_linear ( ) const [inline, virtual]

Return true if the action of the conditioner can be represented as a planar homography.

Reimplemented from ImageMetric.

Definition at line 79 of file SimilarityMetric.h.

bool ImageMetric::is_within_distance ( const HomgPoint2D p1,
const HomgPoint2D p2,
double  distance 
) const [virtual, inherited]

Definition at line 250 of file ImageMetric.cxx.

bool ImageMetric::is_within_distance ( vgl_homg_point_2d< double > const &  p1,
vgl_homg_point_2d< double > const &  p2,
double  distance 
) const [virtual, inherited]

Definition at line 243 of file ImageMetric.cxx.

void SimilarityMetric::make_matrices ( ) [private]

Definition at line 76 of file SimilarityMetric.cxx.

double SimilarityMetric::perp_dist_squared ( HomgPoint2D const &  p,
HomgLine2D const &  l 
) const [virtual]

Reimplemented from ImageMetric.

Definition at line 253 of file SimilarityMetric.cxx.

double SimilarityMetric::perp_dist_squared ( vgl_homg_point_2d< double > const &  p,
vgl_homg_line_2d< double > const &  l 
) const [virtual]

Compute perpendicular distance (in image coordinates) from point to line (supplied in conditioned coordinates).

Reimplemented from ImageMetric.

Definition at line 235 of file SimilarityMetric.cxx.

HomgPoint2D ImageMetric::perp_projection ( const HomgLine2D l,
const HomgPoint2D p 
) const [virtual, inherited]

Definition at line 201 of file ImageMetric.cxx.

vgl_homg_point_2d< double > ImageMetric::perp_projection ( vgl_homg_line_2d< double > const &  l,
vgl_homg_point_2d< double > const &  p 
) const [virtual, inherited]

Project point onto line.

Definition at line 192 of file ImageMetric.cxx.

vcl_ostream & SimilarityMetric::print ( vcl_ostream &  s) const [virtual]

One line printout.

Reimplemented from ImageMetric.

Definition at line 115 of file SimilarityMetric.cxx.

void SimilarityMetric::print ( ) const
void SimilarityMetric::print ( char *  msg) const

One line printout.

Definition at line 109 of file SimilarityMetric.cxx.

void SimilarityMetric::scale_matrices ( double  s)

Multiply all components of the transform matrix by "s".

This routine is likely to be used only by programs which need special control over the exact form of their output.

Definition at line 278 of file SimilarityMetric.cxx.

void SimilarityMetric::set_center_and_scale ( double  cx,
double  cy,
double  scale 
)

Set transform to "(x,y) -> (x - cx, y - cy) * scale".

For example, (640 / 2, 480 / 2, 2.0 / (640 + 480))

Definition at line 66 of file SimilarityMetric.cxx.

void SimilarityMetric::set_from_rectangle ( int  xsize,
int  ysize 
)

Set transform to "(x,y) -> (x - xsize/2, y - ysize/2) / ((xsize+ysize)/2)".

Definition at line 54 of file SimilarityMetric.cxx.


Friends And Related Function Documentation

vcl_ostream& operator<< ( vcl_ostream &  o,
const ImageMetric m 
) [friend, inherited]

Definition at line 109 of file ImageMetric.h.


Member Data Documentation

double SimilarityMetric::centre_x_ [private]

Definition at line 33 of file SimilarityMetric.h.

double SimilarityMetric::centre_y_ [private]

Definition at line 34 of file SimilarityMetric.h.

Definition at line 38 of file SimilarityMetric.h.

Definition at line 39 of file SimilarityMetric.h.

double SimilarityMetric::inv_scale_ [private]

Definition at line 35 of file SimilarityMetric.h.

double SimilarityMetric::scale_ [private]

Definition at line 36 of file SimilarityMetric.h.


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