latest version v1.9 - last update 10 Apr 2010 |
This functor is based on concepts described in Lowe, D.G. More...
#include <ltiAxLocalRegions.h>
Classes | |
class | parameters |
the parameters for the class axLocalRegions More... | |
Public Member Functions | |
axLocalRegions () | |
axLocalRegions (const axLocalRegions &other) | |
virtual | ~axLocalRegions () |
virtual const char * | getTypeName () const |
bool | apply (const channel &src, std::list< location > &locs) const |
bool | apply (const channel &src, std::map< float, std::list< location > > &locs) const |
axLocalRegions & | copy (const axLocalRegions &other) |
axLocalRegions & | operator= (const axLocalRegions &other) |
virtual functor * | clone () const |
const parameters & | getParameters () const |
Protected Member Functions | |
bool | pyramidToLocs (const channel &src, const pyramid< channel > &pyr, std::list< location > &locs) const |
This functor is based on concepts described in Lowe, D.G.
"Object Recognition from Local Scale-Invariant Features", Proc. of the International Conference on Computer Vision, Corfu, Greece Sept. 1999. pp. 1150-1157. This paper can be found at
http://www.cs.ubc.ca/spider/lowe/papers/iccv99.pdf
It uses the DoG to detect relevant locations, and depending on the scale at which the location was found, a corresponding radius will be assigned. The orientation of the location will be computed using a small orientation histogram on the gradient of the image.
The location detection is done somehow different as in Lowe's paper, in order to get a result much faster (but maybe with more locations as necessary):
lti::axLocalRegions::axLocalRegions | ( | ) |
default constructor
lti::axLocalRegions::axLocalRegions | ( | const axLocalRegions & | other | ) |
copy constructor
other | the object to be copied |
virtual lti::axLocalRegions::~axLocalRegions | ( | ) | [virtual] |
destructor
bool lti::axLocalRegions::apply | ( | const channel & | src, | |
std::map< float, std::list< location > > & | locs | |||
) | const |
extracts the most relevant locations from the given channel, and return them in a map of lists of lti::location objects, the map first key is the radius of the locations.
You can iterate in the lists of locations with the same radius as follows:
std::map<float,std::list<location> > locs; // map of lists of locations channel chnl; // channel to be analyzed draw<float> drawer; // draw on channel drawer.use(chnl); // using chnl as canvas // ... load or create the channel to be analyzed axLocalRegions localizer; // our local regions functor localizer.apply(chnl,locs); // get the local regions std::map<float,std::list<location> >::const_iterator locsIt; std::list<location>::const_iterator it; for (locsIt=locs.begin();locsIt!=locs.end();++locsIt) { cout << "Locations for radius " << (*locsIt).first << endl; // do something with each location at this level: for (it=(*locsIt).second.begin(); it!=(*locsIt).second.end(); ++it) { // for example, draw the location: drawer.set(*it); } }
src | channel with the source data. | |
locs | map of relevant locations |
extracts the most relevant locations from the given channel, and return them as list of lti::location objects
src | channel with the source data. | |
locs | list of relevant locations |
virtual functor* lti::axLocalRegions::clone | ( | ) | const [virtual] |
returns a pointer to a clone of this functor.
Implements lti::functor.
axLocalRegions& lti::axLocalRegions::copy | ( | const axLocalRegions & | other | ) |
copy data of "other" functor.
other | the functor to be copied |
Reimplemented from lti::functor.
const parameters& lti::axLocalRegions::getParameters | ( | ) | const |
returns used parameters
Reimplemented from lti::transform.
virtual const char* lti::axLocalRegions::getTypeName | ( | ) | const [virtual] |
returns the name of this type ("axLocalRegions")
Reimplemented from lti::transform.
axLocalRegions& lti::axLocalRegions::operator= | ( | const axLocalRegions & | other | ) |