Estimation of multiple motions from two views, understanding an example.

48 Views Asked by At

From my reference on the subject there's this simple example of which I can't understand the notation. In summary it is my understanding the goal here would be given two views of a scene where we have many objects moving can we estimate the motion?

With this in mind the equation reporting the epipolar constraint is

$$ \left(x_2^T F_1 x_1 \right) \left( x_2^T F_2 x_1 \right) = 0 $$

and I have two questions about it:

1) Are $F_1$ and $F_2$ in theory built up by using the rigid transformation of body $1$ and $2$ from image 1 and image 2? (I.e. does each fundamental matrix involve the transformation parameters of the single objects?)

2) Shouldn't actually the constraint be

$$ \left({x_2^1}^T F_1 {x_1^1} \right) \left( {x_2^2}^T F_2 {x_1^2} \right) = 0 $$

?

Because in given the two images, taken from the same point, but at different time, I assume we could use a motion flow to estimate the corrispondence for example (although I haven't dug to much into details yet).

enter image description here

Update : I think the correct interpretation is the following. Suppose we have the image in the example with correspondence $(x_1^1,x_2^1)$ and $(x_1^2,x_2^2)$, each $x_i^j$ , $i, j = 1, 2$ is a pixel in homogeneous coordinates (i.e. a three component vector), suppose we have two fundamental matrices derived somehow $F_1,F_2$ and defining the function

$$ f(x_1,x_2) = \left( x_2^T F_1 x_1 \right) \left(x_2^T F_2 x_1\right) $$

where $f : \mathbb{R}^3 \times \mathbb{R}^3 \rightarrow \mathbb{R}$, I believe that what my reference means is that

$$ f(x_1^1,x_2^1) = f(x_1^2,x_2^2) = 0 $$

Having $N$ correspondence the function $f$ is generalized as

$$ f(x_1,x_2) = \prod_{j=1}^{N} x_2^T F_j x_1 $$

and what is said is that for each pair $(x_1^j,x_2^j)$ ($1 \leq j \leq N$) there's a fundamental matrix $F_i$ such that the epipolar constraint is fulfilled, therefore for each $j$ we have $f(x_1^j,x_2^j) = 0$

1

There are 1 best solutions below

6
On

The matrices $F_1, F_2$ are composition of translations and rotations basically (a rigid motion). Once you have a fixed matrix $F_1$, it will make the same translation and the same rotation to all points in space.

About the images give, the left side shows the points before the action of the matrix, and the right side shows the points after the action. I agree the notation is strange, the points are $x_1 = (x_1^1, x_2^1)$ and $x_2 = (x_1^2, x_2^2)$, so $x_1^1$ is a coordinate (a real number) of $x_1$, not the vector. That being said, the correct thing to write is $\left( x_2^T F_1 x_ 1 \right) \left( x_1^T F_2 x_2 \right) = 0$, since that makes no sense the other choice of notation.

The images are giving wrong notations. Looks like $x_1^1$ is a point in space, not a coordinate. Should be written $x_1$ instead of $x_1^1$ there. Of course it can be the case the images are in fact two-dimensional, a two-dimensional representation of three-dimensional cubes. In this case the notation $x_1^1$ would make sense. But this would be a very whicked choice of figures to put in there.

Just to clarify: $F_1$ is a matrix $2 \times 2$. We can make it explicit writing $$F_1 = \left[ \begin{array}{cc} a & b\\ c & d\\ \end{array}\right].$$

Then we have that

$$x_2^T F_1x_1 = [x_1^2 \ x_2^2] \left[ \begin{array}{cc} a & b\\ c & d\\ \end{array}\right] \left[ \begin{array}{c} x_1^1 \\ x_2^1 \\ \end{array}\right],$$ which is a scalar. Then you multiply it by the another scalar $x_1^T F_2 x_1$ and verify if it is zero.