Following functions should be implemented. It is important to keep the specified calling convention (order of arguments, shape of matrices, etc).
Note: vectors of coordinates (e.g., points) should be always columns . Thus a set of 5 euclidean points in a plane is written as a matrix with 2 rows and 5 columns (i.e., 2 x 5).
Synopsis | u_p = e2p( u_e ) |
Inputs | u_e | d by n matrix; n euclidean vectors of dimension d |
Outputs | u_p | d+1 by n matrix; n homogeneous vectors of dimension d+1 |
Synopsis | u_e = p2e( u_p ) |
Inputs | u_p | d+1 by n matrix; n homogeneous vectors of dimension d+1 |
Outputs | u_e | d by n matrix; n euclidean vectors of dimension d |
>> u = e2p( [[1;2] [3;4] [5;6]] )
u =
1 3 5
2 4 6
1 1 1
>> p2e( u )
ans =
1 3 5
2 4 6
vlen — Column vectors length
Synopsis | l = vlen( x ) |
Inputs | x | d by n matrix; n vectors of dimension d |
Outputs | l | 1 by n row vector; euclidean lengths of the vectors |
>> vlen( [ [0.5;0.5;1] [3;4;0]])
ans =
1.2247 5.0000
sqc — Skew-symmetric matrix for cross-product
Synopsis | S = sqc(x) |
Inputs | x | vector 3×1 |
Outputs | S | skew symmetric matrix (3×3) for cross product with x |
Notes: The vector x
characterises the left as well as the right null space of the matrix S
. For any vector y
, cross product x
×y
equals to S
y
.
>> sqc( [1;2;3] )
ans =
0 -3 2
3 0 -1
-2 1 0
EutoRb — Essential matrix decomposition with cheirality
This is obsolete, create EutoRt instead.
Synopsis | [R, b] = EutoRb( E, u1, u2 ) |
Inputs | E | essential matrix (3×3) |
| u1 , u2 | corresponding image points in homogeneous coordinates (3×n), used for cheirality test |
Outputs | R | relative rotation (3×3) or [] if cheirality fails |
| b | relative translation, euclidean (3×1), unit length |
Notes: The sessential matrix E
is decomposed such that E = R * sqc( b )
.
EutoRt — Essential matrix decomposition with cheirality
Synopsis | [R, t] = EutoRt( E, u1, u2 ) |
Inputs | E | essential matrix (3×3) |
| u1 , u2 | corresponding image points in homogeneous coordinates (3×n), used for cheirality test |
Outputs | R | relative rotation (3×3) or [] if cheirality fails |
| t | relative translation, euclidean (3×1), unit length |
Notes: The sessential matrix E
is decomposed such that E ~ sqc(t) * R
. Note that t = -R*b
.
Pu2X — Binocular reconstruction by DLT triangulation
Synopsis | X = Pu2X( P1, P2, u1, u2 ) |
Inputs | P1, P2 | projective camera matrices (3×4) |
| u1 , u2 | corresponding image points in homogeneous coordinates (3×n) |
Outputs | X | reconstructed 3D points, homogeneous (4×n) |
err_F_sampson — Sampson error on epipolar geometry
Synopsis | err = err_F_sampson( F, u1, u2 ) |
Inputs | F | fundamental matrix (3×3) |
| u1 , u2 | corresponding image points in homogeneous coordinates (3×n) |
Outputs | e | Squared Sampson error for each correspondence (1×n). |
u_correct_sampson — Sampson correction of correspondences
Synopsis | [nu1, nu2] = u_correct_sampson( F, u1, u2 ) |
Inputs | F | fundamental matrix (3×3) |
| u1 , u2 | corresponding image points in homogeneous coordinates (3×n) |
Outputs | nu1,nu2 | corrected corresponding points, homog. (3×n). |