This program computes the fundamental matrix using a variety of algorithms, including 8 point linear (Hartley) and 7 point non-linear (Torr). It randomly chooses from a set of input correspondences and computes a fundamental matrix from these correspondences. It repeats this process a number of times and returns the best fundamental matrix; which is the one with the largest number of supporting correspondences. Note that the fundamental matrix is refit to the support correspondences produced by the random sampling process, but only if this decreases the average error (and it almost always does).


compfund -f matchesfile [-n numberOfRandomSamples] [-count] [-l2] [-h] [-a] [-w][-m maxscalechange] [-q maxdisparitygrad] [-o <force order constraint>][-d distance from epipolar line] [-i imagefile] [-s success probability]


-f: the correspondence match file used to compute the fundamental matrix.

This is a mandatory input.

-n: the number of random samples to perform.

-count: use count scoring (score by counting the number of supporting points).

-l2: use l2 scoring (score supporting points based on their distance from the epipolar line).

-h: compute fundamental matrix using 8 point Hartley algorithm.

-a: compute an affine fundamental matrix.

-w: compute a planar warp (not actually a fundamental matrix).

-m: maximum scale change allowed for a point set when random sampling

-q: maximum disparity gradient allowed for a point set when random

-o: enforce an order constraint on the random point sets

-d: maximum allowable distance from an epipolar line for a point to be considered an inlier

-i: the name of an image file for saving the correspondence vectors

-s: success probability, stop sampling when this probability of success has been reached

Default Values:


1000 samples

count style scoring

1.0 pixels from epipolar line

NO order constraint

max scale change: 1000

max disparity gradiant: 1000

Success probability: 99.9999 percent

Default algorithm: Non-linear with 7 samples



A file with the same name as the input file is produced with the extension FM. This holds the nine values of the fundamental matrix. E.g. X.matches.filtered X.matches.filtered.FM