A library for functions related to multiple view geometry in Mathematica.
- Author: Thijs Vogels
- Supervisor: Dr. Richard van den Doel
- Roosevelt University College, Middelburg, Netherlands
- Download the application zip-file
- Go to File>Install in Mathematica and select the zip.
The application documentation will be integrated in the native Mathematica docs.
Hgc[x] |
converts a list x representing a point in n-dimensional space to homogeneous coordinates by appending a 1. |
Nc[x] |
converts a list x representing a point in homogeneous coordinates to non-homogeneous coordinates by stripping the last element and dividing by it. If the point lies on infintiy, a warning is thrown. |
Intersect[l,m] |
returns the intersection the homogeneous 2d lines l and m. |
LineThrough[p,q] |
returns the line joining the homogeneous 2d points p and q. |
LineDirection[l] |
returns the direction of the line l. |
RQ[M] |
is a variant of the QR Decomposition such that A=R.Q, and R is upper triangular and Q orthogonal. |
Rxyz[α,β,γ] |
gives a 3x3 rotation matrix that first translates a in the x-direction, then b in the y direction and c in the z-direction. |
NormalizePoints[pts] |
normalizes a set of non-homogeneous or non-infinite homogeneous 2d points such that: * their centroid is in the origin * their mean distance from the origin is sqrt(2) Returns the normalized set of points and the transformation that transforms a set of homogeneous points to the normalized ones (for denormalization purposes) |
NormalizePoints3D[pts] |
normalizes a set of non-homogeneous or non-infinite homogeneous 3d points such that: * their centroid is in the origin * their mean distance from the origin is sqrt(3) Returns the normalized set of points and the transformation that transforms a set of homogeneous points to the normalized ones (for denormalization purposes) |
Homography2D[x,y] |
calculates a homography between two sets of homogeneous 2D points x and y using the Direct Linear Transformation algorithm (Hartley&Zisserman, p.89). For optimal results the Gold Standard algorithm should be used. |
CameraMatrixFromCorrespondences[corr] |
gives the camera matrix for >=6 {world,pixel} correspondences (homogeneous coordinates) using a DLT method. |
DecomposeCamera[P] |
decomposes the camera into {K,R,t} such that P = K.R.[I | -t]. |
DrawCamera[P] |
gives a 3D object showing the camera orientation. To be used inside a Graphics3D environment. It uses the img for its dimensions.
DrawCamera[P,size] does the same with a given size.
DrawCamera[P,size,img] let's you specify an image used to find correct the width and height of the screen. |
Based on images of three black squares on a contrasting background.
SeparateSquares[img,nsquares] |
takes an image of n black squares (on a constrasting background) and returns n white images of those squares on a black background. It defaults to 3 squares. |
CornerInQuadrangleImage[square] |
calculates the four corner points in an image of a quadrangle by first finding the edges and intersecting those. Returns the points in non-homogeneous coordinates. |
CameraCalibrationFromImagedSquares[squares] |
returns the internal camera parameters K from the (non-homogeneous) corner points of (at least) three imaged squares. It identifies the image of the absolute conic, and uses a Cholesky decomposition to derive K from omega. |
CameraCalibrationFromImagedSquaresAssertingZeroSkew[squares] |
returns the internal camera parameters K from the (non-homogeneous) corner points of (at least) three imaged squares. It identifies the image of the absolute conic, and uses a Cholesky decomposition to derive K from omega. It asserts zero skew. |
FFromCorrespondences[corr] |
gives a fundamental from a list of point correspondences using a DLT algorithm. |
EFromFK[F,K] |
gives the essential matrix corresponding to a fundamental matrix F and a calibration matrix K. |
DecomposeE[E] |
returns four possible second camera matrices that form a couple with [I|0] based on an essential matrix E. |
Triangulate[corr,P1,P2] |
gives a DLT-estimate of the 3D-location of corresponding image point correlations in two images and the two camera matrices. |
ImageCoordinateToDataPoint[p,img] |
converts image coordinates (origin left-bottom) to a corresponding data point (origin left-top) |
ImageColorAtCoordinate[p,img] |
returns the color at coordinate p (origin left-bottom) |
LinePointsInImage[l,img] |
gives the two extreme points on an image of a homogeneous line (snapped to pixel-positions) NOT TESTED for lines that lie completely outside the image |
LineInImage[l,img] |
takes the points from LinePointsInImage and makes it a Graphics primitive. |
FitConic[points] |
fits a conic through at least 5 homogeneous points using linear minimization. |
FitLine[points] |
gives a least squares fit of a line to a set of points. |
RANSAC[x, fittingfn, distfn, degenfn, s, t, feedback, maxDataTrials, maxTrials] |
is a general RANSAC implementation. The last three arguments are optional. |
LoadImagesInDirectory[dir] |
returns all images in a directory. |
BressenhamPoints[A,B] |
gives a list of the pixel-points on the line segment between A and B. |