Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

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).
courses/tdv/labs/toolbox.txt · Last modified: 2023/09/20 14:36 (external edit)