All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces
edge_points_likelihood.h File Reference
#include <list>
#include <vector>
#include <edge_cpp/line_segment.h>
#include <edge_cpp/edge.h>
#include <edge_cpp/line_segment_set.h>
#include <likelihood_cpp/model_edge.h>
#include <likelihood_cpp/edge_likelihood_util.h>

Go to the source code of this file.


class  kjb::Correspondence
class  kjb::Correspondence::Point
class  kjb::Correspondence::Point::Compare_Normal_Distance
class  kjb::Correspondence::Matched_point
class  kjb::Correspondence::Matched_point::Compare_Normal_Distance
class  kjb::Independent_edge_points_likelihood


 Classes and functions for dealing with trajectory files.

Detailed Description

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.


You are free:

to Share - to copy, distribute, display, and perform the work to Remix - to make derivative works

Under the following conditions:

Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

Noncommercial. You may not use this work for commercial purposes.

Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page.

Any of the above conditions can be waived if you get permission from the copyright holder.

Apart from the remix rights granted under this license, nothing in this license impairs or restricts the author's moral rights. This file contains functions used to compute the likelihood of a set of deteceted edges given a set of backprojected model edges (ie, the backprojection of the model gives a high likelihood if it explains the detected edges well). We treat each edge point independently here. The likelihood value is computed in the following way: 1) We first need to find a correspondence between model edge points and image edge points. We match each model point to the closest edge point along the direction of the edge gradient (there is no match is the closest match is too far away). It follows that each edge point can be explained by several model point (ie edge point e1 could be the closest edge point to model point m1 and also the closest edge point to model point m2). 2) For each edge point we compute a penalty. This is a constant value if the edge point is not explained by any model point (we explain these points as noise). Otherwise, if an edge point matches one and only one model point, the penalty is proportional (with a gaussian falloff) to their distance along the edge gradient, and to the difference in orientation between model edge and detected edge. If an edge point is matched to multiple model points, the penalty is the weighted average of the penalty for each possible match. Last, we penalize model points that are not matched to any edge point (we explain this as edge points missed by the edge detector)

For more details please see Figure 5 and 6 in: http://vision.cs.arizona.edu/~schlecht/research/furniture/papers/schlecht-2009b.pdf