vpgl_fundamental_matrix< T > Class Template Reference

#include <vpgl_fundamental_matrix.h>

Inheritance diagram for vpgl_fundamental_matrix< T >:

vpgl_affine_fundamental_matrix< T > vpgl_essential_matrix< T > vpgl_reg_fundamental_matrix< T > List of all members.

Detailed Description

template<class T>
class vpgl_fundamental_matrix< T >

Definition at line 28 of file vpgl_fundamental_matrix.h.


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.
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
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, when the right camera matrix is assumed to be identity.
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.

Constructor & Destructor Documentation

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

Default constructor creates dummy rank 2 matrix.

Definition at line 23 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 38 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 43 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 34 of file vpgl_fundamental_matrix.txx.

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

Destructor.

Definition at line 55 of file vpgl_fundamental_matrix.txx.


Member Function Documentation

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

Assignment.

Definition at line 45 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 63 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 75 of file vpgl_fundamental_matrix.txx.

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 86 of file vpgl_fundamental_matrix.txx.

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, when the right camera matrix is assumed to be identity.

The variables v, lambda are free parameters as described in H&Z 2nd ed pg 256.

Definition at line 97 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 121 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 82 of file vpgl_fundamental_matrix.h.

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 86 of file vpgl_fundamental_matrix.h.

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 163 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 173 of file vpgl_fundamental_matrix.txx.


Member Data Documentation

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

Internal representation of the fundamental matrix.

Definition at line 95 of file vpgl_fundamental_matrix.h.

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

Cached copy of the svd.

Definition at line 98 of file vpgl_fundamental_matrix.h.


The documentation for this class was generated from the following files:
Generated on Thu Jan 8 05:18:18 2009 for contrib/gel/mrc/vpgl by  doxygen 1.5.1