8

I'm wondering whats the differences between a homography and a transformation matrix?

For me it's kinda look like the same? Or is homography just the more precise word in the area of computer vision and transformation of image plane?

flor1an
  • 211
  • What would you say is the difference between a linear transformation and a matrix? – amd Aug 09 '17 at 19:14
  • 2
    @amd thats literally what I'm asking ?! – flor1an Aug 21 '17 at 12:01
  • A transformation is a function. A matrix is an array of numbers that can represent a transformation. Do you see the difference? – amd Aug 21 '17 at 19:49
  • @amd well I wasn't asking for the difference between an transformation and a matrix. I was asking for the difference between a homopgrahy and a transformation matrix. But in the mean time I found the difference on my own – flor1an Aug 22 '17 at 20:32
  • A homography is a particular type of transformation. The difference between that and a matrix is exactly the same: the latter is one possible representation of the former. – amd Aug 22 '17 at 21:51

2 Answers2

11

The term homography is often used in the sense of homography matrix in computer vision. In maths, I guess, the term homography describes the substatial concept, not the matrix. So the question is: What is the difference between homography matrix and transformation matrix?

The mathematical name for homography concept is "projective transformation" (source) and in computer vision it refers to transforming images such as if they were taken under different perspective. This is a much narrower question than any arbitrary transformation and hence homography can be computed by using mathematical tricks (see this question for details), avoiding geometrical computations. The effect of applying the matrix should be the same, but the way to get this matrix is easier.

An example from opencv: we have two images of the same place, taken from different angle. We will compute homography H. If we now select one pixel with coordinates (x1, y1) from the first image and another pixel (x2, y2) that represents the same point on another image, we can transform the latter pixel to have the same viewing perspective as the first one by applying H:

OpenCV example of applying homography

As we see, it is identical to applying transformation matrix, hence homography is just a special case of transformation. Most examples that I have seen, consider homography only for 2D (i.e., for images). Still, homography can be extended to larger dimension (source). Thanks to homography, 3D to 2D planar projection (i.e., mapping coordinates in 3D space to points on 2D plane) reduces to 2D to 2D, i.e., to a less complex problem (source).

While transformation is very general concept and includes all kinds of conversions, including conversion between coordinate frames, homography is a subset of it, mostly only applied when rotation is needed (source). In computer vision it is a technical term that describes above-mentioned case of transformation. You can achieve the same result by using proper geometrical transformation, but it will be more complex.

Mårten W
  • 3,550
  • 4
  • 27
  • 42
MF.OX
  • 211
3

MF.OX's answer still leaves some points of wonder:

Is a homography constrained in some way, or can any matrix ($3\times3$) be a homography matrix in homogeneous 2d space?

I found out that yes, a homography matrix's elements are unconstrained - and it is synonymous to a projectivity. To answer the question of what a homography actually is, it is useful to compare the concept of a homography also to Affinity, Similarity, Euclidean Transforms, etc. Those are all constrained more strongly, so the word homography is useful to explicitly state that the matrix may not adhere to those stronger constraints.

To this purpose, I find this comparison useful:
Hierarchy of 2d Transformations
Source: https://www.cvg.ethz.ch/teaching/3dvision/2020/slides/class02eth20.pdf

So a "transformation matrix" is a general term and a "homography" is technically the same, but I believe it is used mainly to point out that there are no further constraints. That is, I would not say that an Affine Transformation is a Homography when I know that it is always affine. But I would call an Affine Transformation a Transformation - like wikipedia does here, for example.

lucidbrot
  • 262