Functions for computing transforms from image feature correspondences. More...
#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 * | dlt_homog (CvPoint2D64f *pts, CvPoint2D64f *mpts, int n) |
| Calculates a planar homography from point correspondeces using the direct linear transform. | |
| 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. | |
Functions for computing transforms from image feature correspondences.
Copyright (C) 2006-2010 Rob Hess <hess@eecs.oregonstate.edu>
| 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.
| 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 |
| 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.
| pt | a point | |
| mpt | pt's correspondence | |
| T | a transform |
| 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.
| 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; memory for this array is allocated by this function and must be freed by the caller using free(*inliers) | |
| n_in | if not NULL, output as the final number of inliers |
| CvMat* dlt_homog | ( | CvPoint2D64f * | pts, | |
| CvPoint2D64f * | mpts, | |||
| int | n | |||
| ) |
Calculates a planar homography from point correspondeces using the direct linear transform.
Intended for use as a ransac_xform_fn.
| 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 |
planar homography matrix that transforms points in pts to their corresponding points in mpts or NULL if fewer than 4 correspondences were provided | 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.
| 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 |
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.
| pt | a point | |
| mpt | pt's correspondence | |
| H | a homography matrix |
| 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.
| pt | a 2D point | |
| T | a perspective transformation matrix |
as above.
1.6.1