Warning

## Toolbox of Elementary and Helper Functions

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).

#### e2p — Transformation of euclidean to projective coordinates

 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

#### p2e — Transformation of projective to euclidean coordinates

 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).