Public Member Functions | Protected Attributes
vpgl_fundamental_matrix< T > Class Template Reference

#include <vpgl_fundamental_matrix.h>

Inheritance diagram for vpgl_fundamental_matrix< T >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 vpgl_fundamental_matrix ()
 Default constructor creates dummy rank 2 matrix.
 vpgl_fundamental_matrix (const vpgl_proj_camera< T > &cr, const vpgl_proj_camera< T > &cl)
 Main constructor takes two projective cameras.
 vpgl_fundamental_matrix (const vnl_matrix_fixed< T, 3, 3 > &F)
 Construct from a fundamental matrix in vnl form.
 vpgl_fundamental_matrix (const vpgl_fundamental_matrix< T > &other)
 Copy Constructor.
 vpgl_fundamental_matrix (const vpgl_calibration_matrix< T > &kr, const vpgl_calibration_matrix< T > &kl, const vpgl_essential_matrix< T > &em)
 Construct from an essential matrix and two calibration matrices.
const vpgl_fundamental_matrix
< T > & 
operator= (const vpgl_fundamental_matrix< T > &fm)
 Assignment.
virtual ~vpgl_fundamental_matrix ()
 Destructor.
void get_epipoles (vgl_homg_point_2d< T > &er, vgl_homg_point_2d< T > &el) const
 Put the coordinates of the epipoles in er, el.
vgl_homg_line_2d< T > r_epipolar_line (const vgl_homg_point_2d< T > &pl) const
 Given a point in one image, find the corresponding epipolar line in the other image.
vgl_homg_line_2d< T > l_epipolar_line (const vgl_homg_point_2d< T > &pr) const
vgl_homg_line_2d< T > r_epipolar_line (const vgl_homg_line_2d< T > &epiline_l) const
 Given an epipolar line in one image, find the corresponding epipolar line in the other image.
vgl_homg_line_2d< T > l_epipolar_line (const vgl_homg_line_2d< T > &epiline_r) const
vpgl_proj_camera< T > extract_left_camera (const vnl_vector_fixed< T, 3 > &v, T lambda) const
 Gives the left camera matrix corresponding to the fundamental matrix.
vpgl_proj_camera< T > extract_left_camera (const vcl_vector< vgl_point_3d< T > > &world_points, const vcl_vector< vgl_point_2d< T > > &image_points) const
 Alternative left camera extractor.
const vnl_matrix_fixed< T, 3, 3 > & get_matrix () const
 Get a copy of the FM in vnl form.
const vnl_svd< T > & svd () const
 Get a copy of the svd of the fundamental matrix.
void set_matrix (const vpgl_proj_camera< T > &cr, const vpgl_proj_camera< T > &cl)
void set_matrix (const vnl_matrix_fixed< T, 3, 3 > &F)

Protected Attributes

vnl_matrix_fixed< T, 3, 3 > F_
 Internal representation of the fundamental matrix.
vnl_svd< T > * cached_svd_
 Cached copy of the svd.

Detailed Description

template<class T>
class vpgl_fundamental_matrix< T >

Definition at line 39 of file vpgl_fundamental_matrix.h.


Constructor & Destructor Documentation

template<class T >
vpgl_fundamental_matrix< T >::vpgl_fundamental_matrix ( )

Default constructor creates dummy rank 2 matrix.

Definition at line 30 of file vpgl_fundamental_matrix.txx.

template<class T>
vpgl_fundamental_matrix< T >::vpgl_fundamental_matrix ( const vpgl_proj_camera< T > &  cr,
const vpgl_proj_camera< T > &  cl 
) [inline]

Main constructor takes two projective cameras.

The RHS of the fundamental matrix will correspond to cr and the LHS to cl.

Definition at line 49 of file vpgl_fundamental_matrix.h.

template<class T>
vpgl_fundamental_matrix< T >::vpgl_fundamental_matrix ( const vnl_matrix_fixed< T, 3, 3 > &  F) [inline]

Construct from a fundamental matrix in vnl form.

Definition at line 54 of file vpgl_fundamental_matrix.h.

template<class T >
vpgl_fundamental_matrix< T >::vpgl_fundamental_matrix ( const vpgl_fundamental_matrix< T > &  other)

Copy Constructor.

Definition at line 41 of file vpgl_fundamental_matrix.txx.

template<class T >
vpgl_fundamental_matrix< T >::vpgl_fundamental_matrix ( const vpgl_calibration_matrix< T > &  kr,
const vpgl_calibration_matrix< T > &  kl,
const vpgl_essential_matrix< T > &  em 
)

Construct from an essential matrix and two calibration matrices.

From Essential Matrix.

Since E = Kl^T * F * Kr, then F = Kl^-T * E * Kr^-1. WARNING! This constructor uses two 3x3 inverse calculations, so it is expensive.

Since $E = Kl^T \times F \times Kr$, $F = Kl^{-T} \times E \times Kr^{-1}$

Definition at line 52 of file vpgl_fundamental_matrix.txx.

template<class T >
vpgl_fundamental_matrix< T >::~vpgl_fundamental_matrix ( ) [virtual]

Destructor.

Definition at line 77 of file vpgl_fundamental_matrix.txx.


Member Function Documentation

template<class T >
vpgl_proj_camera< T > vpgl_fundamental_matrix< T >::extract_left_camera ( const vnl_vector_fixed< T, 3 > &  v,
lambda 
) const

Gives the left camera matrix corresponding to the fundamental matrix.

The right camera matrix is assumed to be identity. The variables v, lambda are free parameters as described in H&Z 2nd ed p. 256.

Definition at line 159 of file vpgl_fundamental_matrix.txx.

template<class T >
vpgl_proj_camera< T > vpgl_fundamental_matrix< T >::extract_left_camera ( const vcl_vector< vgl_point_3d< T > > &  world_points,
const vcl_vector< vgl_point_2d< T > > &  image_points 
) const

Alternative left camera extractor.

Takes corresponding lists of image points with their world locations to determine the correct camera. Must give at least 2 pairs of correspondences. This is not a robust algorithm but this shouldn't be a problem as these correspondences will usually be picked by hand.

Definition at line 184 of file vpgl_fundamental_matrix.txx.

template<class T >
void vpgl_fundamental_matrix< T >::get_epipoles ( vgl_homg_point_2d< T > &  er,
vgl_homg_point_2d< T > &  el 
) const

Put the coordinates of the epipoles in er, el.

Definition at line 85 of file vpgl_fundamental_matrix.txx.

template<class T>
const vnl_matrix_fixed<T,3,3>& vpgl_fundamental_matrix< T >::get_matrix ( ) const [inline]

Get a copy of the FM in vnl form.

Definition at line 104 of file vpgl_fundamental_matrix.h.

template<class T >
vgl_homg_line_2d< T > vpgl_fundamental_matrix< T >::l_epipolar_line ( const vgl_homg_point_2d< T > &  pr) const

Definition at line 108 of file vpgl_fundamental_matrix.txx.

template<class T >
vgl_homg_line_2d< T > vpgl_fundamental_matrix< T >::l_epipolar_line ( const vgl_homg_line_2d< T > &  epiline_r) const

Definition at line 139 of file vpgl_fundamental_matrix.txx.

template<class T >
const vpgl_fundamental_matrix< T > & vpgl_fundamental_matrix< T >::operator= ( const vpgl_fundamental_matrix< T > &  fm)

Assignment.

Definition at line 67 of file vpgl_fundamental_matrix.txx.

template<class T >
vgl_homg_line_2d< T > vpgl_fundamental_matrix< T >::r_epipolar_line ( const vgl_homg_point_2d< T > &  pl) const

Given a point in one image, find the corresponding epipolar line in the other image.

Definition at line 97 of file vpgl_fundamental_matrix.txx.

template<class T >
vgl_homg_line_2d< T > vpgl_fundamental_matrix< T >::r_epipolar_line ( const vgl_homg_line_2d< T > &  epiline_l) const

Given an epipolar line in one image, find the corresponding epipolar line in the other image.

H&Z 2nd ed p. 247

Definition at line 119 of file vpgl_fundamental_matrix.txx.

template<class T >
void vpgl_fundamental_matrix< T >::set_matrix ( const vpgl_proj_camera< T > &  cr,
const vpgl_proj_camera< T > &  cl 
)

Definition at line 225 of file vpgl_fundamental_matrix.txx.

template<class T >
void vpgl_fundamental_matrix< T >::set_matrix ( const vnl_matrix_fixed< T, 3, 3 > &  F)

Definition at line 247 of file vpgl_fundamental_matrix.txx.

template<class T>
const vnl_svd<T>& vpgl_fundamental_matrix< T >::svd ( ) const [inline]

Get a copy of the svd of the fundamental matrix.

The svd is computed when the matrix is first set, so this just accesses a cached version.

Definition at line 108 of file vpgl_fundamental_matrix.h.


Member Data Documentation

template<class T>
vnl_svd<T>* vpgl_fundamental_matrix< T >::cached_svd_ [mutable, protected]

Cached copy of the svd.

Definition at line 120 of file vpgl_fundamental_matrix.h.

template<class T>
vnl_matrix_fixed<T,3,3> vpgl_fundamental_matrix< T >::F_ [protected]

Internal representation of the fundamental matrix.

Definition at line 117 of file vpgl_fundamental_matrix.h.


The documentation for this class was generated from the following files: