Code Monkey home page Code Monkey logo

mathematicacomputervision's Introduction

MathematicaComputerVision

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

  1. Download the application zip-file
  2. 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.
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.

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.

RANSAC

RANSAC[x, fittingfn, distfn, degenfn, s, t, feedback, maxDataTrials, maxTrials] is a general RANSAC implementation. The last three arguments are optional.

File System

LoadImagesInDirectory[dir] returns all images in a directory.

Miscelaneous

BressenhamPoints[A,B] gives a list of the pixel-points on the line segment between A and B.

mathematicacomputervision's People

Contributors

tvogels avatar

Stargazers

 avatar Payton avatar SubChange avatar  avatar  avatar  avatar Little Raccoon avatar Piyush Khushlani avatar  avatar Lee avatar Zdeněk Buk avatar  avatar Haipeng Wang avatar

Watchers

Zdeněk Buk avatar  avatar James Cloos avatar  avatar  avatar Max.Yao avatar

mathematicacomputervision's Issues

README looks bad

Code doesn't look like code but still has the back-ticks around it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.