You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
Installation
Download the application zip-file
Go to File>Install in Mathematica and select the zip.
Documentation
The application documentation will be integrated in the native Mathematica docs.
Available functions
Utilities
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.
Homographies
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.
Camera Matrix
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.
Camera Calibration
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.
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.
Fundamental Matrix
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.
Scene Reconstruction
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.
Image Manipulation
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.
Least squares fitting
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.