Object detector using the LINE template matching algorithm with any set of modalities. More...
#include <objdetect.hpp>
Public Member Functions | |
| Detector () | |
| Empty constructor, initialize with read(). More... | |
| Detector (const std::vector< Ptr< Modality > > &modalities, const std::vector< int > &T_pyramid) | |
| Constructor. More... | |
| void | match (const std::vector< Mat > &sources, float threshold, std::vector< Match > &matches, const std::vector< std::string > &class_ids=std::vector< std::string >(), OutputArrayOfArrays quantized_images=noArray(), const std::vector< Mat > &masks=std::vector< Mat >()) const |
| Detect objects by template matching. More... | |
| int | addTemplate (const std::vector< Mat > &sources, const std::string &class_id, const Mat &object_mask, Rect *bounding_box=NULL) |
| Add new object template. More... | |
| int | addSyntheticTemplate (const std::vector< Template > &templates, const std::string &class_id) |
| Add a new object template computed by external means. More... | |
| const std::vector< Ptr< Modality > > & | getModalities () const |
| Get the modalities used by this detector. More... | |
| int | getT (int pyramid_level) const |
| Get sampling step T at pyramid_level. More... | |
| int | pyramidLevels () const |
| Get number of pyramid levels used by this detector. More... | |
| const std::vector< Template > & | getTemplates (const std::string &class_id, int template_id) const |
| Get the template pyramid identified by template_id. More... | |
| int | numTemplates () const |
| int | numTemplates (const std::string &class_id) const |
| int | numClasses () const |
| std::vector< std::string > | classIds () const |
| void | read (const FileNode &fn) |
| void | write (FileStorage &fs) const |
| std::string | readClass (const FileNode &fn, const std::string &class_id_override="") |
| void | writeClass (const std::string &class_id, FileStorage &fs) const |
| void | readClasses (const std::vector< std::string > &class_ids, const std::string &format="templates_%s.yml.gz") |
| void | writeClasses (const std::string &format="templates_%s.yml.gz") const |
Protected Types | |
| typedef std::vector< Template > | TemplatePyramid |
| typedef std::map< std::string, std::vector< TemplatePyramid > > | TemplatesMap |
| typedef std::vector< Mat > | LinearMemories |
| typedef std::vector< std::vector< LinearMemories > > | LinearMemoryPyramid |
Protected Member Functions | |
| void | matchClass (const LinearMemoryPyramid &lm_pyramid, const std::vector< Size > &sizes, float threshold, std::vector< Match > &matches, const std::string &class_id, const std::vector< TemplatePyramid > &template_pyramids) const |
Protected Attributes | |
| std::vector< Ptr< Modality > > | modalities |
| int | pyramid_levels |
| std::vector< int > | T_at_level |
| TemplatesMap | class_templates |
Object detector using the LINE template matching algorithm with any set of modalities.
|
protected |
|
protected |
|
protected |
|
protected |
| cv::linemod::Detector::Detector | ( | ) |
Empty constructor, initialize with read().
| cv::linemod::Detector::Detector | ( | const std::vector< Ptr< Modality > > & | modalities, |
| const std::vector< int > & | T_pyramid | ||
| ) |
Constructor.
| modalities | Modalities to use (color gradients, depth normals, ...). |
| T_pyramid | Value of the sampling step T at each pyramid level. The number of pyramid levels is T_pyramid.size(). |
| int cv::linemod::Detector::addSyntheticTemplate | ( | const std::vector< Template > & | templates, |
| const std::string & | class_id | ||
| ) |
Add a new object template computed by external means.
| int cv::linemod::Detector::addTemplate | ( | const std::vector< Mat > & | sources, |
| const std::string & | class_id, | ||
| const Mat & | object_mask, | ||
| Rect * | bounding_box = NULL |
||
| ) |
Add new object template.
| sources | Source images, one for each modality. | |
| class_id | Object class ID. | |
| object_mask | Mask separating object from background. | |
| [out] | bounding_box | Optionally return bounding box of the extracted features. |
| std::vector<std::string> cv::linemod::Detector::classIds | ( | ) | const |
Get the modalities used by this detector.
You are not permitted to add/remove modalities, but you may dynamic_cast them to tweak parameters.
Get sampling step T at pyramid_level.
| const std::vector<Template>& cv::linemod::Detector::getTemplates | ( | const std::string & | class_id, |
| int | template_id | ||
| ) | const |
Get the template pyramid identified by template_id.
For example, with 2 modalities (Gradient, Normal) and two pyramid levels (L0, L1), the order is (GradientL0, NormalL0, GradientL1, NormalL1).
| void cv::linemod::Detector::match | ( | const std::vector< Mat > & | sources, |
| float | threshold, | ||
| std::vector< Match > & | matches, | ||
| const std::vector< std::string > & | class_ids = std::vector< std::string >(), |
||
| OutputArrayOfArrays | quantized_images = noArray(), |
||
| const std::vector< Mat > & | masks = std::vector< Mat >() |
||
| ) | const |
Detect objects by template matching.
Matches globally at the lowest pyramid level, then refines locally stepping up the pyramid.
| sources | Source images, one for each modality. | |
| threshold | Similarity threshold, a percentage between 0 and 100. | |
| [out] | matches | Template matches, sorted by similarity score. |
| class_ids | If non-empty, only search for the desired object classes. | |
| [out] | quantized_images | Optionally return vector<Mat> of quantized images. |
| masks | The masks for consideration during matching. The masks should be CV_8UC1 where 255 represents a valid pixel. If non-empty, the vector must be the same size as sources. Each element must be empty or the same size as its corresponding source. |
|
protected |
|
inline |
| int cv::linemod::Detector::numTemplates | ( | ) | const |
| int cv::linemod::Detector::numTemplates | ( | const std::string & | class_id | ) | const |
|
inline |
Get number of pyramid levels used by this detector.
| std::string cv::linemod::Detector::readClass | ( | const FileNode & | fn, |
| const std::string & | class_id_override = "" |
||
| ) |
| void cv::linemod::Detector::readClasses | ( | const std::vector< std::string > & | class_ids, |
| const std::string & | format = "templates_%s.yml.gz" |
||
| ) |
| void cv::linemod::Detector::write | ( | FileStorage & | fs | ) | const |
| void cv::linemod::Detector::writeClass | ( | const std::string & | class_id, |
| FileStorage & | fs | ||
| ) | const |
| void cv::linemod::Detector::writeClasses | ( | const std::string & | format = "templates_%s.yml.gz" | ) | const |
|
protected |
|
protected |
|
protected |