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