0
$\begingroup$

I am working on camera motion detection.How do I decouple translation and rotation? I have obtained rotation by using sensors. I understand we can do something as simple as X'=RX+T , where R-rotation, T-translation and X,X' are the points involved. These points are 3D points(either world or camera coordinate system). How do i determine these 3D points by analyzing an image?

Is there any other way to obtain translation? (some Image Processing technique may be?)

Any links for literature would be helpful.

$\endgroup$

1 Answer 1

2
$\begingroup$

If X are known 3D points, then the translation is given simply by:

$$T=\frac{\sum_{i=1}^{n}{X'_{i}-RX_{i}}}{n}$$

In case of points being in projected coordinates, then more work have to be done. You can express the 3D points in homogenous coordinates:

$$X=(x, y, z, w)$$

where $w$ is 1 by default.

Then both the translation and rotation can be joined via matrix multiplication:

$$X'=TRX=\begin{bmatrix}1 & 0 & 0 & t_{x} \\ 0 & 1 & 0 & t_{y} \\ 0 & 0 & 1 & t_{z} \\ 0 & 0 & 0 & 1 \end{bmatrix}RX$$

Furthermore, you would be able to add camrea projection matrix in the equation:

$$X'=TRPX$$

Now each point correspondence ($X\leftrightarrow X')$ will give you 4 equations. The minimum number of point correspondences depends on the number of unknowns.

There are usually more than enough points and the problem is overdetermined. The above equation can then be solved in a least-squares fashion.

Another approach is to first perform camera calibration to determine matrix $P$. Then the problem will be simplified greatly.

The best reference I know is (what else) H&Z book. Chapter 7 is all about computing the camera matrix.

Estimation methods are described as well.

$\endgroup$
5
  • $\begingroup$ But as I have pointed out in the question, I don't have these 3D points. Is there any way I can determine them by having multiple point correspondences(basically 2D points on the image?) $\endgroup$ Mar 27, 2013 at 4:49
  • $\begingroup$ The camera projection matrix $P$ is $3\times 4$ matrix, so it converts 3D points to 2D points (both in homogenous coordinates). So the relation between two 2D points is: $X'=PTRP^{-1}X$ where $P$ is the camera projection matrix and $T,R$ are translation and rotation matrices, respectively. $\endgroup$
    – Libor
    Mar 27, 2013 at 16:40
  • $\begingroup$ It is much easier to solve for $T$ if $P$ and $R$ are known beforehand. You already know $R$ and the $P$ can be determined from at least two corresponding images (explained in detail in the H&Z book). $\endgroup$
    – Libor
    Mar 27, 2013 at 16:42
  • $\begingroup$ I obtained the matrix P and its right pseudo inverse P^-1. But I find that the operation (which is part of your equation) P^-1 * X gives me a 3D point which is an infinite 3D point(in homogeneous coordinates) of the form [a b 1 0]T. When I continue the calculation, the 0 in this 3D point will eliminate the 4th column of the matrix T. Therefore it doesn't give me translation. Am I missing something? $\endgroup$ Apr 1, 2013 at 9:59
  • $\begingroup$ Not sure. Maybe the inverse P won't work as its X describes just a ray (which has information of angle, but not depth). I forgot that it is more tricky when camera moves (used equation from panoramic imaging where the camera is restricted to rotation only). Obtaining 3D points from multiple view can be solved via Bundle Adjustment. Or you can take a look on the book which describes the mechanics in more detail. You can still inject your known rotation matrix into the bundle adjustment equations to simplify the computation. $\endgroup$
    – Libor
    Apr 1, 2013 at 14:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.