Epipolar Geometry

This session revisits the session on Relative Pose, and extends it into planar homography.


  • Status report.
  • Questions and Answers.
  • Continue with 3D reconstruction
  • Thought experiment
    • What applications can we imagine? Examples?
    • How would we go about building a complete system?


These problems were first given in the session on Study Technique but we did not have time to work on them at that point.

Skew-symmetric Matrix (Ma 2004:Ex 5.3)

Given a vector \(T\in \mathbb{R}^3\) with unit length, i.e. \(||T|| = 1\), show that:

  1. The identity holds: \(\hat T^T\hat T = \hat T\hat T^T = I - TT^T\) (note that the superscript \(^T\) stands for matrix transpose).
  2. Explain the effect of multiplying a vector \(u\in \mathbb{R}^3\) by the matrix \(P = I - TT^T\). Show that \(P^n = P\) for any integer \(n\).
  3. Show that \(\hat T^T\hat T\hat T = \hat T\hat T^T\hat T = \hat T\) Explain geometrically why this is true.
  4. How do the above statements need to be changed if the vector \(T\) is not of unit length?

Part 1.

Consider the vector \(T=[a,b,c]^T\).

  1. Write down the matrix \(\hat T\) in terms of \(a,b,c\).
  2. Calculate \(\hat T^T\hat T\).
  3. Calculate \(\hat T\hat T^T\) and compare to the above (2).
  4. Calculate \(TT^T\) and compare to the above (3).
  5. Does the identity hold?

Part 2.

  1. Use Part 1 to rewrite \(P\) in terms of \(\hat T\) and \(\hat T^T\).
  2. Rewrite \(Pu\) in terms of cross products.
    • You may have to think separately about what \(\hat T^Tu\) means in terms of cross products. We know that \(\hat Tu=T\times u\).
  3. Draw the vectors \(T\), \(u\), and \(Pu\) in a diagram. Which angles are straight and which need not be?
  4. Consider the vectors \(PPu\), \(PPPu\), and so on, in your diagram. What happens when you keep multiplying by \(P\).
  5. You can also spell out all the elements of \(P\), and calculate \(P^2\).

Reflect (this is not part of the textbook problem, but a very instructive question to reflect upon) Why can we say that \(P=P^n\) for any \(n\) but not that \(P^{n-1}=I\)? What does the first multiplication by \(P\) do in the figure that is different from the next one?

Part 3.

You can solve this in the same way as Part 2. The only difference is that the first matrix you multiply with is \(\hat T\), rather than \(P\). Review you figure and see if Part 3 makes sense.

Part 4

If \(T\) has non-unit length and write \(T=cT'\) where \(c\in\mathbb{R}^3\) and \(T'\) has unit length. What happens with the constant \(c\) if you insert \(cT'\) for \(T\) in the arguments from Part 1-3?

Exercise 5.7 (Ma 2004:160)

(see the textbook for the problem text)

If you spot a solution straight away, you can try that straight away. If you do, you are clearly more confident in linear algebra than expected at this level.

The rest of us should start to play around with the matrix \(E\). What can we do with the matrix \(E\) using core techniques in the syllabus?

  1. You can do a Singular Value Decomposition at least.
    • You can use numpy.linalg.svd in python.
    • You just have to choose a value for \(a\) to do the decomposition numerically.
    • Try a few values, e.g. \(a=1,2,10\).
  2. Knowing the decomposition, you can calculate \((T,R)\) using textbook techniques. Do this for a few values of \(a\). You can still use python for this.
  3. What do \(T\) and \(R\) look like geometrically?
  4. Compare the decompositions for the different values of \(a\).
    • can you guess on a decomposition for general \(a\)?
    • test that your guess is correct by multiplying the components \(U\Sigma V^T\) and compare the result to \(E\).

(It is possible to do the test multiplication (3) using software like Maple (commercial) or sage (open source), but this is out of our scope, and matrix multiplication can be done by hand.)

More challenges

  • Exercise 5.14