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

#include <edge_points_likelihood.h>

Classes

class  Compare_Normal_Distance
 

Public Member Functions

 Point (const kjb::Edge_point &e_pt, unsigned int iedge_pt_num, unsigned int imodel_pt_row, unsigned int imodel_pt_col, unsigned int num_angles, double angle_sigma, double dist_sigma)
 Constructor. More...
 
 Point (const Point &p)
 Copy constructor. More...
 
Pointoperator= (const Point &p)
 Assignment operator. More...
 
bool operator< (const Point &p) const
 Compares two Correspondence Points based on the normal distance between model point and the edge point along the edge gradient. More...
 

Public Attributes

unsigned int edge_pt_row
 Edge point detected in the input image. More...
 
unsigned int edge_pt_col
 
double edge_pt_drow
 
double edge_pt_dcol
 
unsigned int edge_pt_num
 Index number of the edge point detected, starting with 0. More...
 
unsigned int model_pt_row
 Row number for the model point corresponding to the edge point. More...
 
unsigned int model_pt_col
 Column number for the model point corresponding to the edge point. More...
 
unsigned int model_edge_index
 
double dtheta
 Size of a bin in the discretized angle space. More...
 
std::vector< double > angles
 Discretized angles between model point normals and an edge point's gradient. More...
 
double angle
 Angle between model point normal and an edge point's gradient, once the correspondence is known. More...
 
std::vector< double > gauss_angles
 Gaussian likelihood of the discretized angles angle. This is proportional to the difference in orienation between model edge and detected edge. We compute it for any bin of the discretized angle space. More...
 
double gauss_angle
 Gaussian likelihood of the angle, once the correspondence is known. More...
 
std::vector< double > norm_dists
 Euclidean distance from the model point to the generative approximation of the edge point along, that lies both in the direction perpendicular to the gradient of the detected edge and in the direction perpendicular to the model edge. This changes with the model edge orientation, and we need to compute it for every angle bin. More...
 
double norm_dist
 Euclidean distance from the model point to the generative approximation of the edge point along, that lies both in the direction perpendicular to the gradient of the detected edge and in the direction perpendicular to the model edge. Computed once the correspondence is known. More...
 
std::vector< double > gauss_norm_dists
 Gaussian likelihood of the Euclidean normal distance. More...
 
double gauss_norm_dist
 Gaussian likelihood of the Euclidean normal distance (once the correspondence is known) More...
 
double grad_dist
 Distance between the model point and the edge point along the direction of the edge gradient. This does not depend on the model edge orientation. More...
 

Detailed Description

Correspondence point between a model point and edge point. For efficiency reasons, we store the precomputed distance penalties for distance and difference in orientation for any possible model edge orientation (the angle space is discretized in n bins). Once the model point is known, this will also store the actual penalty for that particular model point.

Constructor & Destructor Documentation

Correspondence::Point::Point ( const kjb::Edge_point iedge_pt,
unsigned int  iedge_pt_num,
unsigned int  imodel_pt_row,
unsigned int  imodel_pt_col,
unsigned int  num_angles,
double  angle_sigma,
double  dist_sigma 
)

Constructor.

A point correspondence between a model point and a detected edge point. For efficiency, given an edge point we follow from it the direction defined by the edge gradient, and we consider all points along this direction within a certain distance. This class stores the precomputed information for a possible match between one edge point and one model point. For each point correspondence, we precompute the assignment penalty which depends on the difference in orientation between the model edge orientation and the detected edge orientation. We precompute this penalty for each possible orientation (we actually divide the angle space in n bins). The penalty also depends on the distance between the model point and the generative approximation of the edge point given the actual position of the edge point and the position of the model point. This approximation is perpendicular both to the edge gradient and to the model edge. The penalties for both distance and angle are computed using gaussian distributions with 0 mean and the input variances.

This function assumes that the model point lies along the direction perpendicular to the edge gradient at the edge point. (This is how we compute possible correspondences). For more details please see Figure 6 in http://vision.cs.arizona.edu/~schlecht/research/furniture/papers/schlecht-2009b.pdf

Parameters
iedge_ptThe detected edge point
iedge_pt_numThe number (id) of the detected edge point
imodel_pt_rowThe position in the image of the model edge point assigned to this edge point (row)
imodel_pt_colThe position in the image of the model edge point assigned to this edge point (col) This point is assumed to lie in the direction perpendicular to the detected edge gradient computed at iedge_pt
num_anglesThe number of bins used to partition the angle space (from 0 to 90 degrees, due to symmetry)
angle_sigmaThe standard deviation for the Gaussian distribution (with zero mean) used to compute the angle penalty
dist_sigmaThe standard deviation for the Gaussian distribution (with zero mean) used to compute the distance penalty
Correspondence::Point::Point ( const Point p)

Copy constructor.

Copy constructor

Parameters
pthe point to copy into this one

Member Function Documentation

bool Correspondence::Point::operator< ( const Point p) const

Compares two Correspondence Points based on the normal distance between model point and the edge point along the edge gradient.

This operator is defined in terms of the Euclidean distance between model point and edge point along the edge gradient direction. This operator is used to sort correspondence points according to this parameter

Parameters
pThe point to compare this Correspondence point to
Correspondence::Point & Correspondence::Point::operator= ( const Point p)

Assignment operator.

Assignment operator

Parameters
pThe point to assign this one to

Member Data Documentation

double kjb::Correspondence::Point::angle

Angle between model point normal and an edge point's gradient, once the correspondence is known.

Because of symmetry, ranges 0 to PI/2.

std::vector<double> kjb::Correspondence::Point::angles

Discretized angles between model point normals and an edge point's gradient.

Because of symmetry, ranges 0 to PI/2.

double kjb::Correspondence::Point::dtheta

Size of a bin in the discretized angle space.

unsigned int kjb::Correspondence::Point::edge_pt_col
double kjb::Correspondence::Point::edge_pt_dcol
double kjb::Correspondence::Point::edge_pt_drow
unsigned int kjb::Correspondence::Point::edge_pt_num

Index number of the edge point detected, starting with 0.

unsigned int kjb::Correspondence::Point::edge_pt_row

Edge point detected in the input image.

double kjb::Correspondence::Point::gauss_angle

Gaussian likelihood of the angle, once the correspondence is known.

std::vector<double> kjb::Correspondence::Point::gauss_angles

Gaussian likelihood of the discretized angles angle. This is proportional to the difference in orienation between model edge and detected edge. We compute it for any bin of the discretized angle space.

double kjb::Correspondence::Point::gauss_norm_dist

Gaussian likelihood of the Euclidean normal distance (once the correspondence is known)

std::vector<double> kjb::Correspondence::Point::gauss_norm_dists

Gaussian likelihood of the Euclidean normal distance.

double kjb::Correspondence::Point::grad_dist

Distance between the model point and the edge point along the direction of the edge gradient. This does not depend on the model edge orientation.

unsigned int kjb::Correspondence::Point::model_edge_index
unsigned int kjb::Correspondence::Point::model_pt_col

Column number for the model point corresponding to the edge point.

unsigned int kjb::Correspondence::Point::model_pt_row

Row number for the model point corresponding to the edge point.

double kjb::Correspondence::Point::norm_dist

Euclidean distance from the model point to the generative approximation of the edge point along, that lies both in the direction perpendicular to the gradient of the detected edge and in the direction perpendicular to the model edge. Computed once the correspondence is known.

std::vector<double> kjb::Correspondence::Point::norm_dists

Euclidean distance from the model point to the generative approximation of the edge point along, that lies both in the direction perpendicular to the gradient of the detected edge and in the direction perpendicular to the model edge. This changes with the model edge orientation, and we need to compute it for every angle bin.


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