KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | List of all members
kjb::Correspondence Class Reference

#include <edge_points_likelihood.h>

Classes

class  Matched_point
 
class  Point
 

Public Member Functions

 Correspondence (const kjb::Edge_set *data_edges, unsigned int num_rows, unsigned int num_cols, unsigned int num_angles, double angle_sigma, double dist_sigma, double max_dist)
 Creates a new correspondence between edge points and model points. For efficiency reasons, given a set of detected edge points in an image, we pre compute the penalties for each possible assignment of each edge point to any possible model point. We do it in the following way: For each edge point, follow the direction of the edge gradient computed at that point (do it until you don't get too far from the edge point). Each of the points in this direction is a potential match if a model point happens to be projected in that position. For each potential match we compute the distance penalty and the orientation penalty. We do it for all possible orientation of the model edge (the angle space is discretized into n bins). The distance penalty is also a function of the difference in orientation: we compute the distance between the model point and the generative approximation of the edge point, such that this latter lies both in the direction perpendicular to the edge gradient and in the direction of the model gradient). For more details please see Figure 5 and 6 in: http://vision.cs.arizona.edu/~schlecht/research/furniture/papers/schlecht-2009b.pdf All of the above is done by the constructor. More...
 
 Correspondence (const Correspondence &c)
 Copy constructor. More...
 
Correspondenceoperator= (const Correspondence &c)
 Assignment operator. More...
 
const std::vector< std::vector
< const Correspondence::Point * > > & 
generate_for_model_from_map_and_edges (const Int_matrix &model_map, const std::vector< Model_edge > &model_edges, const std::vector< kjb::Int_vector > &edge_indexes, int edge_counter, int &num_sil_miss, int &num_inn_miss)
 Generates a correspondence set between the detected edge point and the given model points. model_map contains the model rendered onto the image plane. Each model edge is expected to be rendered with a color value equal to its id (that is the position of the edge in the input line_segment_set) More...
 
void generate_for_model_from_map_and_edges (const Int_matrix &model_map, const std::vector< Model_edge > &model_edges, const std::vector< kjb::Int_vector > &edge_indexes, std::vector< Correspondence::Matched_point > &matched_points, std::vector< std::vector< const Correspondence::Matched_point * > > &edge_pts_matched_corr, int edge_counter, int &num_sil_miss, int &num_inn_miss, int &num_flagged_miss, int &matched_counter, double inn_prob, double sil_prob)
 
const std::vector< std::vector
< const Correspondence::Point * > > & 
generate_for_model (const kjb::Edge_set &model_edge_set)
 
double get_max_dist () const
 Returns the max distance allowed between a model point and edge point for them to be considered matched. More...
 
const std::vector< std::vector
< std::list< Point > > > & 
get_model_corr () const
 Gets the correspondences associated to model points. More...
 

Detailed Description

Contains pointers to data edge point per cell.

Constructor & Destructor Documentation

Correspondence::Correspondence ( const kjb::Edge_set data_edges,
unsigned int  num_rows,
unsigned int  num_cols,
unsigned int  num_angles,
double  angle_sigma,
double  dist_sigma,
double  max_dist 
)

Creates a new correspondence between edge points and model points. For efficiency reasons, given a set of detected edge points in an image, we pre compute the penalties for each possible assignment of each edge point to any possible model point. We do it in the following way: For each edge point, follow the direction of the edge gradient computed at that point (do it until you don't get too far from the edge point). Each of the points in this direction is a potential match if a model point happens to be projected in that position. For each potential match we compute the distance penalty and the orientation penalty. We do it for all possible orientation of the model edge (the angle space is discretized into n bins). The distance penalty is also a function of the difference in orientation: we compute the distance between the model point and the generative approximation of the edge point, such that this latter lies both in the direction perpendicular to the edge gradient and in the direction of the model gradient). For more details please see Figure 5 and 6 in: http://vision.cs.arizona.edu/~schlecht/research/furniture/papers/schlecht-2009b.pdf All of the above is done by the constructor.

Once this is done, given a set of model points we can compute the correspondence easily. This is done by function generate_for_model_from_map_and_edges

Correspondence::Correspondence ( const Correspondence c)

Copy constructor.

Copy constructor

Parameters
cthe correspondence to copy into this one

Member Function Documentation

const std::vector< std::vector< const Correspondence::Point * > > & Correspondence::generate_for_model ( const kjb::Edge_set model_edge_set)

The returned structure is indexed by edge point, then correspondence point containing the model point info.

const std::vector< std::vector< const Correspondence::Point * > > & Correspondence::generate_for_model_from_map_and_edges ( const Int_matrix model_map,
const std::vector< Model_edge > &  model_edges,
const std::vector< kjb::Int_vector > &  edge_indexes,
int  edge_counter,
int &  num_sil_miss,
int &  num_inn_miss 
)

Generates a correspondence set between the detected edge point and the given model points. model_map contains the model rendered onto the image plane. Each model edge is expected to be rendered with a color value equal to its id (that is the position of the edge in the input line_segment_set)

This finds the correspondence between a set of model edges and a set of image edges. The returned vector is indexed by edge point. For each edge point we have a list of all the model points that could be matched to it, sorted according to the distance between edge point and model point.

Parameters
model_mapthe model rendered onto the image plane. It is assumed that each edge was rendered with a color equal to its id
void Correspondence::generate_for_model_from_map_and_edges ( const Int_matrix model_map,
const std::vector< Model_edge > &  model_edges,
const std::vector< kjb::Int_vector > &  edge_indexes,
std::vector< Correspondence::Matched_point > &  matched_points,
std::vector< std::vector< const Correspondence::Matched_point * > > &  edge_pts_matched_corr,
int  edge_counter,
int &  num_sil_miss,
int &  num_inn_miss,
int &  num_sil_flagged,
int &  matched_counter,
double  inn_prob,
double  sil_prob 
)

This finds the correspondence between a set of model edges and a set of image edges. The returned vector is indexed by edge point. For each edge point we have a list of all the model points that could be matched to it, sorted according to the distance between edge point and model point.

Parameters
model_mapthe model rendered onto the image plane. It is assumed that each edge was rendered with a color equal to its id
double kjb::Correspondence::get_max_dist ( ) const
inline

Returns the max distance allowed between a model point and edge point for them to be considered matched.

const std::vector< std::vector< std::list<Point> > >& kjb::Correspondence::get_model_corr ( ) const
inline

Gets the correspondences associated to model points.

Correspondence & Correspondence::operator= ( const Correspondence c)

Assignment operator.

Assignment operator

Parameters
cthe correspondence to assign to this one

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