- Main Page
- Data Structures
- Files

- File List
- Globals

# xform.h File Reference

## Detailed Description

Functions for computing transforms from image feature correspondences.

Copyright (C) 2006-2007 Rob Hess <hess@eecs.oregonstate.edu>

Version:
  1.1.1-20070913

`#include <cxcore.h>`

## Data Structures
struct | ransac_data
| holds feature data relevant to ransac More...
## Defines
#define | RANSAC_INLIER_FRAC_EST 0.25
| pessimistic estimate of fraction of inlers for RANSAC
#define | RANSAC_PROB_BAD_SUPP 0.10
| estimate of the probability that a correspondence supports a bad model
## Typedefs
typedef CvMat *(*) | ransac_xform_fn (CvPoint2D64f *pts, CvPoint2D64f *mpts, int n)
| Prototype for transformation functions passed to ransac_xform().
typedef double(*) | ransac_err_fn (CvPoint2D64f pt, CvPoint2D64f mpt, CvMat *T)
| Prototype for error functions passed to ransac_xform().
## Functions
CvMat * | ransac_xform (struct feature *features, int n, int mtype, ransac_xform_fn xform_fn, int m, double p_badxform, ransac_err_fn err_fn, double err_tol, struct feature ***inliers, int *n_in)
| Calculates a best-fit image transform from image feature correspondences using RANSAC.
CvMat * | lsq_homog (CvPoint2D64f *pts, CvPoint2D64f *mpts, int n)
| Calculates a least-squares planar homography from point correspondeces.
double | homog_xfer_err (CvPoint2D64f pt, CvPoint2D64f mpt, CvMat *H)
| Calculates the transfer error between a point and its correspondence for a given homography, i.e.
CvPoint2D64f | persp_xform_pt (CvPoint2D64f pt, CvMat *T)
| Performs a perspective transformation on a single point.

## Typedef Documentation

typedef CvMat*(*) ransac_xform_fn(CvPoint2D64f *pts, CvPoint2D64f *mpts, int n)

Prototype for transformation functions passed to ransac_xform().

Functions of this type should compute a transformation matrix given a set of point correspondences.

Parameters:

  | pts | array of points
  | mpts | array of corresponding points; each pts[i], i=0..n-1, corresponds to mpts[i]
  | n | number of points in both pts and mpts

Returns:
  Should return a transformation matrix that transforms each point in pts to the corresponding point in mpts or NULL on failure.

typedef double(*) ransac_err_fn(CvPoint2D64f pt, CvPoint2D64f mpt, CvMat *T)

Prototype for error functions passed to ransac_xform().

For a given point, its correspondence, and a transform, functions of this type should compute a measure of error between the correspondence and the point after the point has been transformed by the transform.

Parameters:

  | pt | a point
  | mpt | pt's correspondence
  | T | a transform

Returns:
  Should return a measure of error between mpt and pt after pt has been transformed by the transform T.

## Function Documentation

CvMat* ransac_xform | ( | struct feature * | features,
|  | int | n,
|  | int | mtype,
|  | ransac_xform_fn | xform_fn,
|  | int | m,
|  | double | p_badxform,
|  | ransac_err_fn | err_fn,
|  | double | err_tol,
|  | struct feature *** | inliers,
|  | int * | n_in |
| ) |  |  |

Calculates a best-fit image transform from image feature correspondences using RANSAC.

For more information refer to:

Fischler, M. A. and Bolles, R. C. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. Communications of the ACM, 24, 6 (1981), pp. 381--395.

Parameters:

  | features | an array of features; only features with a non-NULL match of type mtype are used in homography computation
  | n | number of features in feat
  | mtype | determines which of each feature's match fields to use for transform computation; should be one of FEATURE_FWD_MATCH, FEATURE_BCK_MATCH, or FEATURE_MDL_MATCH; if this is FEATURE_MDL_MATCH, correspondences are assumed to be between a feature's img_pt field and its match's mdl_pt field, otherwise correspondences are assumed to be between the the feature's img_pt field and its match's img_pt field
  | xform_fn | pointer to the function used to compute the desired transformation from feature correspondences
  | m | minimum number of correspondences necessary to instantiate the transform computed by xform_fn
  | p_badxform | desired probability that the final transformation returned by RANSAC is corrupted by outliers (i.e. the probability that no samples of all inliers were drawn)
  | err_fn | pointer to the function used to compute a measure of error between putative correspondences and for a given transform
  | err_tol | correspondences within this distance of each other are considered as inliers for a given transform
  | inliers | if not NULL, output as an array of pointers to the final set of inliers
  | n_in | if not NULL, output as the final number of inliers

Returns:
  Returns a transformation matrix computed using RANSAC or NULL on error or if an acceptable transform could not be computed.

CvMat* lsq_homog | ( | CvPoint2D64f * | pts,
|  | CvPoint2D64f * | mpts,
|  | int | n |
| ) |  |  |

Calculates a least-squares planar homography from point correspondeces.

Intended for use as a ransac_xform_fn.

Parameters:

  | pts | array of points
  | mpts | array of corresponding points; each pts[i], i=0..n-1, corresponds to mpts[i]
  | n | number of points in both pts and mpts; must be at least 4

Returns:
  Returns the least-squares planar homography matrix that transforms points in pts to their corresponding points in mpts or NULL if fewer than 4 correspondences were provided

double homog_xfer_err | ( | CvPoint2D64f | pt,
|  | CvPoint2D64f | mpt,
|  | CvMat * | H |
| ) |  |  |

Calculates the transfer error between a point and its correspondence for a given homography, i.e.

for a point , it's correspondence , and homography , computes . Intended for use as a ransac_err_fn.

Parameters:

  | pt | a point
  | mpt | pt's correspondence
  | H | a homography matrix

Returns:
  Returns the transfer error between pt and mpt given H

CvPoint2D64f persp_xform_pt | ( | CvPoint2D64f | pt,
|  | CvMat * | T |
| ) |  |  |

Performs a perspective transformation on a single point.

That is, for a point and a matrix this function returns the point , where

,

and

.

Note that affine transforms are a subset of perspective transforms.

Parameters:

  | pt | a 2D point
  | T | a perspective transformation matrix

Returns:
  Returns the point as above.