PARP Research Group University of Murcia, Spain


examples/OpenCV/siftDetector/hess/xform.h File Reference

#include <cxcore.h>

Go to the source code of this file.

Classes

struct  ransac_data

Defines

#define RANSAC_ERR_TOL   3
#define RANSAC_INLIER_FRAC_EST   0.25
#define RANSAC_PROB_BAD_SUPP   0.10
#define feat_ransac_data(feat)   ( (struct ransac_data*) (feat)->feature_data )

Typedefs

typedef CvMat *(* ransac_xform_fn )(CvPoint2D64f *pts, CvPoint2D64f *mpts, int n)
typedef double(* ransac_err_fn )(CvPoint2D64f pt, CvPoint2D64f mpt, CvMat *T)

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)
CvMat * lsq_homog (CvPoint2D64f *pts, CvPoint2D64f *mpts, int n)
double homog_xfer_err (CvPoint2D64f pt, CvPoint2D64f mpt, CvMat *H)
CvPoint2D64f persp_xform_pt (CvPoint2D64f pt, CvMat *T)


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

Definition in file xform.h.


Define Documentation

#define RANSAC_INLIER_FRAC_EST   0.25

pessimistic estimate of fraction of inlers for RANSAC

Definition at line 32 of file xform.h.

Referenced by ransac_xform().

#define RANSAC_PROB_BAD_SUPP   0.10

estimate of the probability that a correspondence supports a bad model

Definition at line 35 of file xform.h.

Referenced by ransac_xform().


Typedef Documentation

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.

Definition at line 71 of file xform.h.

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.

Definition at line 54 of file xform.h.


Function Documentation

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 $x$, it's correspondence $x'$, and homography $H$, computes $d(x', Hx)^2$. 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

Definition at line 239 of file xform.cpp.

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 $3 \times 3$ 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

Definition at line 182 of file xform.cpp.

CvPoint2D64f persp_xform_pt ( CvPoint2D64f  pt,
CvMat *  T 
)

Performs a perspective transformation on a single point. That is, for a point $(x, y)$ and a $3 \times 3$ matrix $T$ this function returns the point $(u, v)$, where

$[x' \ y' \ w']^T = T \times [x \ y \ 1]^T$,

and

$(u, v) = (x'/w', y'/w')$.

Note that affine transforms are a subset of perspective transforms.

Parameters:
pt a 2D point
T a perspective transformation matrix
Returns:
Returns the point $(u, v)$ as above.

Definition at line 266 of file xform.cpp.

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.

Definition at line 76 of file xform.cpp.




QVision framework. PARP research group, copyright 2007, 2008.