#include <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. | |
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. |
Definition at line 39 of file vpgl_fundamental_matrix.h.
vpgl_fundamental_matrix< T >::vpgl_fundamental_matrix | ( | ) |
Default constructor creates dummy rank 2 matrix.
Definition at line 30 of file vpgl_fundamental_matrix.txx.
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.
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.
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.
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 ,
Definition at line 52 of file vpgl_fundamental_matrix.txx.
vpgl_fundamental_matrix< T >::~vpgl_fundamental_matrix | ( | ) | [virtual] |
Destructor.
Definition at line 77 of file vpgl_fundamental_matrix.txx.
vpgl_proj_camera< T > vpgl_fundamental_matrix< T >::extract_left_camera | ( | const vnl_vector_fixed< T, 3 > & | v, |
T | 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.