Projective geometry for computer vision in Julia



Build Status

banner image


Install via the package manager. At the moment you should checkout the current master rather than using Pkg.add(). After some work the package now runs under Julia 0.5 and 0.6, however it is not yet in a state that I consider worth tagging. (24 August 2017)

julia> Pkg.checkout("ImageProjectiveGeometry")

If you have not previously installed the package you will need to add it first and then checkout the current master

julia> Pkg.add("ImageProjectiveGeometry")
julia> Pkg.checkout("ImageProjectiveGeometry")
help?> ImageProjectiveGeometry  # Lists a summary of the package functions


This Image Projective Geometry package is intended as a starting point for the development of a library of projective geometry functions for computer vision in Julia.

Currently the package consists of a number of components which ultimately could/should be separated off into individual packages or contributed to other existing packages. Also, some of these functions, no doubt, duplicate existing functions in other packages and these should be eventually rationalised. However at this stage, given that Julia and its packages are still subject to some change, I have chosen to keep all these components in this package to minimise external dependencies and make it as self contained as possible.

Function Reference

  • projective Defines a camera structure, implements image projection functions, functions for computing homographies and fundamental matrices, stereo solution, etc.
  • cornerfeatures Implementations of a number of corner detectors. Ultimately could be contributed to the Images package.
  • ransac A generic implementation of RANSAC along with a collection of specific functions that use RANAC for robust estimation of homographies and fundamental matrices, and for fitting lines and planes etc.
  • transforms Functions for constructing, applying, and decomposing homogeneous transforms, angle-axis descriptors, and quaternions.
  • utilities Miscellaneous image processing functions including nonmaximal suppression, image derivative computation and efficient morphological dilation and erosion using rectangular and octagonal structuring elements. There is also a basic correlation matcher. Ultimately could be contributed to the Images package.
  • geometry Functions for some basic geometric operations: minimum distance between 3D rays, intersection of circles, convex polygons etc.
  • ransacdemo Functions demonstrating the use of ransac() to fit lines, planes, fundamental matrices and homographies.

Also, within src, there are demo scripts for the different corner detectors and the morphological functions.


  • There is much that is missing. For example there is no code for camera calibration, computation of trifocal tensors, or bundle adjustment. While there is code for detecting corners there is nothing for matching them other than a basic correlation matcher, though feature matching probably belongs in its own package(s)

  • These functions are mostly ported from MATLAB code at http://www.peterkovesi.com/matlabfns Accordingly some of the code is still MATLABesque in nature. There are, no doubt, many optimisations that could be made and type instabilities to be eliminated. Pull requests to make the code more Julian are welcome.

Supplementary Material

First Commit


Last Touched

25 days ago


14 commits

Used By: