Homography is a concept in the mathematical science of geometry. A homography is an invertible transformation from a projective space (for example, the real projective plane) to itself that maps straight lines to straight lines. Synonyms are collineation, projective transformation (sometimes linear projective transformation), and projectivity, though "collineation" is also used more generally.
Formally, the projective transformations are transformations of a projective space. They form a group, the projective linear group. In the case of Euclidean plane, it describes the changes in a perspective projection when the point of view of the observer (center of the projection) changes. Projective transformations do not preserve sizes or angles but do preserve incidence and cross-ratio: two properties which are important in projective geometry.
In the case of the complex projective line, also called Riemann sphere, the homographies are called Möbius transformations. For more general projective spaces – of different dimensions or over different fields – "collineation" (meaning "maps lines to lines") is a more general notion, which includes both homographies and automorphic collineations (collineations induced by a field automorphism), as well as combinations of these.
Computer vision applications 
In the field of computer vision, any two images of the same planar surface in space are related by a homography (assuming a pinhole camera model). This has many practical applications, such as image rectification, image registration, or computation of camera motion—rotation and translation—between two images. Once camera rotation and translation have been extracted from an estimated homography matrix, this information may be used for navigation, or to insert models of 3D objects into an image or video, so that they are rendered with the correct perspective and appear to have been part of the original scene (see Augmented Reality).
3D plane to plane equation 
We have two cameras a and b, looking at points in a plane.
Passing the projections of from in b to a point in a:
where the homography matrix is
Ka and Kb are the cameras' intrinsic parameter matrices.
The figure shows camera b looking at the plane at distance d.
Note: From above figure, is the projection of vector into , and equal to d. So . And we have .
Mathematical definition 
In the complex plane, a Möbius transformation is frequently called a homography. These linear-fractional transformations are expressions of projective transformations on the complex projective line, an extension of the complex plane.
In higher dimensions Homogeneous coordinates are used to represent projective transformations by means of matrix multiplications. With Cartesian coordinates matrix multiplication cannot perform the division required for perspective projection. In other words, with Cartesian coordinates a perspective projection is a non-linear transformation.
Affine homography 
When the image region in which the homography is computed is small or the image has been acquired with a large focal length, an affine homography is a more appropriate model of image displacements. An affine homography is a special type of a general homography whose last row is fixed to
See also 
- O. Chum and T. Pajdla and P. Sturm (2005). "The Geometric Error for Homographies". Computer Vision and Image Understanding 97 (1): 86–102. doi:10.1016/j.cviu.2004.03.004.
- Gunter Ewald (1971) Geometry: An Introduction, page 263, Belmont:Wadsworth Publishing ISBN 0-534-00034-7 .
- Bill Goldman (2005) Transformations in Circle Geometry, course notes from University of Maryland.
- Frank Morley and F.V. Morley (1933) Inversive Geometry, page 38, London: G. Bell and Sons.
- M. Lourakis' homest is a GPL C/C++ library for robust, non-linear (based on the Levenberg-Marquardt algorithm) homography estimation from matched point pairs. homest can estimate fully projective and affine homographies with a variety of objective functions.
- OpenCV is a complete (open and free) computer vision software library that has many routines related to homography estimation (cvFindHomography) and re-projection (cvPerspectiveTransform). Download and documentation information is on the OpenCV Wiki.
- Computing the plane to plane homography
- How to compute a homography
- MATLAB Functions for Multiple View Geometry Matlab functions for calculating a homography and the fundamental matrix
- Explanation of Homography Estimation by David Kriegman