bazar
1.3.1
|
Planar object detector. More...
#include <planar_object_recognizer.h>
Public Member Functions | |
planar_object_recognizer () | |
empty constructor. call build, load or buildWithCache before use | |
planar_object_recognizer (string directory_name) | |
Create from the data stored in the directory directory_name . | |
~planar_object_recognizer (void) | |
bool | build_with_cache (string filename, int max_point_number_on_model, int patch_size, int yape_radius, int tree_number, int nbLev, LEARNPROGRESSION LearnProgress=0) |
Build the model and save it on disk. | |
bool | build (IplImage *model_image, int max_point_number_on_model, int patch_size, int yape_radius, int tree_number, int nbLev, LEARNPROGRESSION LearnProgress=0, int *roi=0) |
void | learn (int max_point_number_on_model, int patch_size, int yape_radius, int tree_number, int nbLev=5, LEARNPROGRESSION LearnProgress=0) |
Create the point recognizer (see forest field) | |
void | save (string directory_name) |
Save data in the given directory. The directory must exist. | |
bool | load (string directory_name) |
load data from a given directory. | |
bool | detect (IplImage *input_image) |
Detect the object in the given input image. | |
void | set_max_detected_pts (int max) |
set the maximum number of points we want to detect | |
IplImage * | create_result_image (IplImage *input_image, bool p_draw_points, bool p_draw_matches, bool p_draw_object, bool p_draw_model_image, int line_width=2) |
For visualization. | |
void | debug_model_point (int p_index_of_model_point_to_debug) |
For debugging: save generated patches for a particular point in dir patches, before and after orientation correction. | |
void | save_one_image_per_match (IplImage *input_image, const char *matches_dir) |
For debugging: save one image per match in dir matches. | |
void | save_one_image_per_match_model_to_input (IplImage *input_image, const char *matches_dir) |
void | save_one_image_per_match_input_to_model (IplImage *input_image, const char *matches_dir) |
void | initialize (void) |
Function called by the 2 constructors. | |
pair< object_keypoint, int > * | search_for_existing_model_point (vector< pair< object_keypoint, int > > *tmp_model_points, float cu, float cv, int scale) |
void | detect_most_stable_model_points (int max_point_number_on_model, int patch_size, int view_number, double min_view_rate, LEARNPROGRESSION LearnProgress=0) |
void | save_image_of_model_points (int patch_size, char *filename=0) |
int | compute_support_for_affine_transformation (affinity *A) |
bool | three_random_correspondences (int *n1, int *n2, int *n3) |
bool | valid (affinity *A) |
void | default_settings (void) |
Some parameters for fine tuning: Called by the 2 constructors. | |
void | check_target_size (IplImage *image) |
Functions called by the detect() function | |
void | detect_points (IplImage *input_image) |
void | preprocess_points (void) |
void | match_points (bool fill_match_struct=true) |
bool | estimate_affine_transformation (void) |
bool | estimate_homographic_transformation_linear_method (void) |
bool | estimate_homographic_transformation_nonlinear_method (void) |
Functions for fine tuning: | |
int | sample_number_for_refining |
void | use_bins_when_creating_model_points (void) |
Activate bins when detecting model points (Default) | |
void | dont_use_bins_when_creating_model_points (void) |
Disactivate bins when detecting model points. | |
void | use_bins_when_detecting_input_image_points (void) |
Activate bins when detecting input image points (Default) | |
void | dont_use_bins_when_detecting_input_image_points (void) |
Disactivate bins when detecting model points. | |
void | set_noise_level (int noise_level) |
Default = 20. | |
void | set_use_random_background (bool use_random_background) |
Default = false;. | |
void | set_range_variation_for_theta (float min_theta, float max_theta) |
Global rotation. Default = [0 : 2Pi]. | |
void | set_range_variation_for_phi (float min_phi, float max_phi) |
Skew. Default = [0 : Pi]. | |
void | independent_scaling (float min_lambda1, float max_lambda1, float min_lambda2, float max_lambda2) |
Default method. Between 0.5 : 1.5 for both. | |
void | constrained_scaling (float min_lambda1, float max_lambda1, float min_lambda2, float max_lambda2, float min_l1_l2, float max_l1_l2) |
Constrained scaling. Adds a constraint on the range of the product of l1 and l2. | |
void | use_orientation_correction (void) |
Default method. | |
void | dont_use_orientation_correction (void) |
void | set_max_depth (int p_max_depth) |
Default = 10. | |
void | set_sample_number_for_refining (int sample_number) |
Sample number for the refine step (default = 1000): | |
IplImage * | model_and_input_images |
int | x0 |
int | y0 |
int | u_input_image |
int | v_input_image |
void | save_patch_before_and_after_correction (IplImage *image, int u, int v, int patch_size, image_class_example *pv, int point_index, int call_number) |
The following functions are useful for visualization only: | |
void | concat_model_and_input_images (IplImage *input_image, bool p_draw_model_image=true) |
void | draw_points (int line_width=1) |
void | draw_model_points (int line_width=1) |
void | draw_input_image_points (int line_width=1) |
void | draw_matches (int line_width=2) |
void | draw_inlier_matches (int line_width=1) |
void | draw_model (void) |
Planar object detector.
This class can learn a planar surface and recognize its feature points on a new image.
Definition at line 49 of file planar_object_recognizer.h.
planar_object_recognizer::planar_object_recognizer | ( | ) |
empty constructor. call build, load or buildWithCache before use
Definition at line 35 of file planar_object_recognizer.cpp.
References hard_max_detected_pts.
planar_object_recognizer::planar_object_recognizer | ( | string | directory_name | ) |
Create from the data stored in the directory directory_name
.
Definition at line 204 of file planar_object_recognizer.cpp.
planar_object_recognizer::~planar_object_recognizer | ( | void | ) |
Definition at line 312 of file planar_object_recognizer.cpp.
References hard_max_detected_pts.
bool planar_object_recognizer::build | ( | IplImage * | model_image, |
int | max_point_number_on_model, | ||
int | patch_size, | ||
int | yape_radius, | ||
int | tree_number, | ||
int | nbLev, | ||
LEARNPROGRESSION | LearnProgress = 0 , |
||
int * | roi = 0 |
||
) |
Build a classifier from the given model image. The result is not saved.
Definition at line 128 of file planar_object_recognizer.cpp.
Referenced by acquire_model(), CalibModel::buildCached(), and main().
bool planar_object_recognizer::build_with_cache | ( | string | filename, |
int | max_point_number_on_model, | ||
int | patch_size, | ||
int | yape_radius, | ||
int | tree_number, | ||
int | nbLev, | ||
LEARNPROGRESSION | LearnProgress = 0 |
||
) |
Build the model and save it on disk.
Definition at line 165 of file planar_object_recognizer.cpp.
References mcvLoadImage().
Referenced by CalibModel::buildCached(), and main().
void planar_object_recognizer::check_target_size | ( | IplImage * | image | ) |
Ensures that allocated resources are ready to handle an image of the given size.
Definition at line 1367 of file planar_object_recognizer.cpp.
int planar_object_recognizer::compute_support_for_affine_transformation | ( | affinity * | A | ) |
Definition at line 568 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), image_object_point_match::image_point, image_object_point_match::inlier, object_keypoint::M, image_object_point_match::object_point, RANSAC_DIST_THRESHOLD, object_keypoint::scale, keypoint::scale, affinity::transform_point(), keypoint::u, and keypoint::v.
void planar_object_recognizer::concat_model_and_input_images | ( | IplImage * | input_image, |
bool | p_draw_model_image = true |
||
) |
Definition at line 1266 of file planar_object_recognizer.cpp.
References mcvPut().
void planar_object_recognizer::constrained_scaling | ( | float | min_lambda1, |
float | max_lambda1, | ||
float | min_lambda2, | ||
float | max_lambda2, | ||
float | min_l1_l2, | ||
float | max_l1_l2 | ||
) |
Constrained scaling. Adds a constraint on the range of the product of l1 and l2.
Definition at line 106 of file planar_object_recognizer.cpp.
IplImage * planar_object_recognizer::create_result_image | ( | IplImage * | input_image, |
bool | p_draw_points, | ||
bool | p_draw_matches, | ||
bool | p_draw_object, | ||
bool | p_draw_model_image, | ||
int | line_width = 2 |
||
) |
For visualization.
Definition at line 1058 of file planar_object_recognizer.cpp.
Referenced by main().
|
inline |
For debugging: save generated patches for a particular point in dir patches, before and after orientation correction.
Definition at line 192 of file planar_object_recognizer.h.
References index_of_model_point_to_debug.
void planar_object_recognizer::default_settings | ( | void | ) |
Some parameters for fine tuning: Called by the 2 constructors.
Definition at line 57 of file planar_object_recognizer.cpp.
bool planar_object_recognizer::detect | ( | IplImage * | input_image | ) |
Detect the object in the given input image.
Returns true if the object is detected. If the object is detected, put the detected corners in the fieds detected_u_corner1
, detected_v_corner1
...
Calls successively the functions:
detect_points
preprocess_points
match_points
estimate_affine_transformation
estimate_homographic_transformation_nonlinear_method
Definition at line 478 of file planar_object_recognizer.cpp.
Referenced by geometric_calibration(), main(), and photometric_calibration().
void planar_object_recognizer::detect_most_stable_model_points | ( | int | max_point_number_on_model, |
int | patch_size, | ||
int | view_number, | ||
double | min_view_rate, | ||
LEARNPROGRESSION | LearnProgress = 0 |
||
) |
Definition at line 871 of file planar_object_recognizer.cpp.
References cmp_tmp_model_points(), PyrImage::convCoordf(), DETECT_MODEL_POINTS, object_keypoint::M, object_keypoint::scale, keypoint::scale, keypoint::u, and keypoint::v.
void planar_object_recognizer::detect_points | ( | IplImage * | input_image | ) |
Definition at line 405 of file planar_object_recognizer.cpp.
|
inline |
Disactivate bins when detecting model points.
Definition at line 77 of file planar_object_recognizer.h.
References use_bins_for_model_points.
|
inline |
Disactivate bins when detecting model points.
Definition at line 82 of file planar_object_recognizer.h.
References use_bins_for_input_image.
void planar_object_recognizer::dont_use_orientation_correction | ( | void | ) |
Definition at line 85 of file planar_object_recognizer.cpp.
void planar_object_recognizer::draw_inlier_matches | ( | int | line_width = 1 | ) |
Definition at line 1348 of file planar_object_recognizer.cpp.
References cvPoint(), image_object_point_match::image_point, image_object_point_match::inlier, object_keypoint::M, image_object_point_match::object_point, keypoint::u, and keypoint::v.
void planar_object_recognizer::draw_input_image_points | ( | int | line_width = 1 | ) |
Definition at line 1316 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), cvPoint(), and mcvRainbowColor().
void planar_object_recognizer::draw_matches | ( | int | line_width = 2 | ) |
Definition at line 1328 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), cvPoint(), image_object_point_match::image_point, image_object_point_match::inlier, object_keypoint::M, image_object_point_match::object_point, object_keypoint::scale, keypoint::scale, keypoint::u, and keypoint::v.
void planar_object_recognizer::draw_model | ( | void | ) |
Definition at line 1081 of file planar_object_recognizer.cpp.
References cvPoint().
void planar_object_recognizer::draw_model_points | ( | int | line_width = 1 | ) |
Definition at line 1305 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), and cvPoint().
void planar_object_recognizer::draw_points | ( | int | line_width = 1 | ) |
Definition at line 1299 of file planar_object_recognizer.cpp.
bool planar_object_recognizer::estimate_affine_transformation | ( | void | ) |
Definition at line 615 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), affinity::estimate(), image_object_point_match::image_point, object_keypoint::M, image_object_point_match::object_point, object_keypoint::scale, keypoint::scale, keypoint::u, and keypoint::v.
bool planar_object_recognizer::estimate_homographic_transformation_linear_method | ( | void | ) |
Definition at line 680 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf().
bool planar_object_recognizer::estimate_homographic_transformation_nonlinear_method | ( | void | ) |
Definition at line 743 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), and homography_error().
void planar_object_recognizer::independent_scaling | ( | float | min_lambda1, |
float | max_lambda1, | ||
float | min_lambda2, | ||
float | max_lambda2 | ||
) |
Default method. Between 0.5 : 1.5 for both.
Definition at line 100 of file planar_object_recognizer.cpp.
void planar_object_recognizer::initialize | ( | void | ) |
Function called by the 2 constructors.
Definition at line 296 of file planar_object_recognizer.cpp.
void planar_object_recognizer::learn | ( | int | max_point_number_on_model, |
int | patch_size, | ||
int | yape_radius, | ||
int | tree_number, | ||
int | nbLev = 5 , |
||
LEARNPROGRESSION | LearnProgress = 0 |
||
) |
Create the point recognizer (see forest field)
Definition at line 335 of file planar_object_recognizer.cpp.
References hard_max_detected_pts.
bool planar_object_recognizer::load | ( | string | directory_name | ) |
load data from a given directory.
Definition at line 212 of file planar_object_recognizer.cpp.
References hard_max_detected_pts, object_keypoint::M, and mcvLoadImage().
void planar_object_recognizer::match_points | ( | bool | fill_match_struct = true | ) |
Definition at line 439 of file planar_object_recognizer.cpp.
References image_object_point_match::image_point, image_object_point_match::object_point, image_class_example::point2d, keypoint::scale, image_object_point_match::score, keypoint::u, and keypoint::v.
void planar_object_recognizer::preprocess_points | ( | void | ) |
Definition at line 416 of file planar_object_recognizer.cpp.
References mcvSaveImage(), image_class_example::point2d, image_class_example::preprocessed, keypoint::scale, keypoint::u, and keypoint::v.
void planar_object_recognizer::save | ( | string | directory_name | ) |
Save data in the given directory. The directory must exist.
Definition at line 364 of file planar_object_recognizer.cpp.
References mcvSaveImage().
Referenced by acquire_model(), CalibModel::buildCached(), and main().
void planar_object_recognizer::save_image_of_model_points | ( | int | patch_size, |
char * | filename = 0 |
||
) |
Definition at line 1039 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), cvPoint(), mcvGrayToColor(), mcvRainbowColor(), and mcvSaveImage().
void planar_object_recognizer::save_one_image_per_match | ( | IplImage * | input_image, |
const char * | matches_dir | ||
) |
For debugging: save one image per match in dir matches.
Definition at line 1230 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), cvPoint(), image_object_point_match::image_point, image_object_point_match::inlier, object_keypoint::M, mcvSaveImage(), image_object_point_match::object_point, object_keypoint::scale, keypoint::u, and keypoint::v.
void planar_object_recognizer::save_one_image_per_match_input_to_model | ( | IplImage * | input_image, |
const char * | matches_dir | ||
) |
Definition at line 1102 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), cvPoint(), object_keypoint::M, mcvSaveImage(), image_class_example::point2d, object_keypoint::scale, keypoint::scale, keypoint::u, and keypoint::v.
void planar_object_recognizer::save_one_image_per_match_model_to_input | ( | IplImage * | input_image, |
const char * | matches_dir | ||
) |
Definition at line 1168 of file planar_object_recognizer.cpp.
References PyrImage::convCoordf(), cvPoint(), object_keypoint::M, mcvSaveImage(), image_class_example::point2d, object_keypoint::scale, keypoint::scale, keypoint::u, and keypoint::v.
void planar_object_recognizer::save_patch_before_and_after_correction | ( | IplImage * | image, |
int | u, | ||
int | v, | ||
int | patch_size, | ||
image_class_example * | pv, | ||
int | point_index, | ||
int | call_number | ||
) |
The following functions are useful for visualization only:
Definition at line 826 of file planar_object_recognizer.cpp.
References mcvGetPatch(), mcvSaveImage(), and image_class_example::preprocessed.
pair< object_keypoint, int > * planar_object_recognizer::search_for_existing_model_point | ( | vector< pair< object_keypoint, int > > * | tmp_model_points, |
float | cu, | ||
float | cv, | ||
int | scale | ||
) |
Definition at line 846 of file planar_object_recognizer.cpp.
|
inline |
void planar_object_recognizer::set_max_detected_pts | ( | int | max | ) |
set the maximum number of points we want to detect
Definition at line 74 of file planar_object_recognizer.cpp.
References hard_max_detected_pts.
void planar_object_recognizer::set_noise_level | ( | int | noise_level | ) |
Default = 20.
Definition at line 120 of file planar_object_recognizer.cpp.
void planar_object_recognizer::set_range_variation_for_phi | ( | float | min_phi, |
float | max_phi | ||
) |
Skew. Default = [0 : Pi].
Definition at line 95 of file planar_object_recognizer.cpp.
void planar_object_recognizer::set_range_variation_for_theta | ( | float | min_theta, |
float | max_theta | ||
) |
Global rotation. Default = [0 : 2Pi].
Definition at line 90 of file planar_object_recognizer.cpp.
|
inline |
Sample number for the refine step (default = 1000):
Definition at line 110 of file planar_object_recognizer.h.
References sample_number_for_refining.
void planar_object_recognizer::set_use_random_background | ( | bool | use_random_background | ) |
Default = false;.
Definition at line 115 of file planar_object_recognizer.cpp.
bool planar_object_recognizer::three_random_correspondences | ( | int * | n1, |
int * | n2, | ||
int * | n3 | ||
) |
Definition at line 534 of file planar_object_recognizer.cpp.
References rand().
|
inline |
Activate bins when detecting model points (Default)
Definition at line 75 of file planar_object_recognizer.h.
References use_bins_for_model_points.
|
inline |
Activate bins when detecting input image points (Default)
Definition at line 80 of file planar_object_recognizer.h.
References use_bins_for_input_image.
void planar_object_recognizer::use_orientation_correction | ( | void | ) |
Default method.
Definition at line 80 of file planar_object_recognizer.cpp.
bool planar_object_recognizer::valid | ( | affinity * | A | ) |
Definition at line 605 of file planar_object_recognizer.cpp.
References cvmGet().
affinity* planar_object_recognizer::affine_motion |
Definition at line 174 of file planar_object_recognizer.h.
int planar_object_recognizer::detected_point_number |
Definition at line 164 of file planar_object_recognizer.h.
image_class_example* planar_object_recognizer::detected_point_views |
Definition at line 165 of file planar_object_recognizer.h.
keypoint* planar_object_recognizer::detected_points |
Detected keypoints in the input image.
Definition at line 163 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_u_corner1 |
Definition at line 177 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_u_corner2 |
Definition at line 178 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_u_corner3 |
Definition at line 179 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_u_corner4 |
Definition at line 180 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_v_corner1 |
Definition at line 177 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_v_corner2 |
Definition at line 178 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_v_corner3 |
Definition at line 179 of file planar_object_recognizer.h.
float planar_object_recognizer::detected_v_corner4 |
Definition at line 180 of file planar_object_recognizer.h.
image_classification_forest* planar_object_recognizer::forest |
Image classifier.
Definition at line 218 of file planar_object_recognizer.h.
homography* planar_object_recognizer::H |
Definition at line 175 of file planar_object_recognizer.h.
Referenced by add_detected_homography(), and photometric_calibration().
ls_minimizer2* planar_object_recognizer::homography_estimator |
Definition at line 176 of file planar_object_recognizer.h.
int planar_object_recognizer::index_of_model_point_to_debug |
Definition at line 233 of file planar_object_recognizer.h.
Referenced by debug_model_point().
double planar_object_recognizer::keypoint_distance_threshold |
interest points that are closer than this distance are merged by by search_for_existing_model_point().
Definition at line 244 of file planar_object_recognizer.h.
int planar_object_recognizer::match_number |
Definition at line 171 of file planar_object_recognizer.h.
Referenced by add_detected_homography(), geom_calib_draw(), and show_result().
float* planar_object_recognizer::match_probabilities[hard_max_detected_pts] |
Match probabilities for each detected keypoint.
Definition at line 168 of file planar_object_recognizer.h.
float planar_object_recognizer::match_score_threshold |
The RANSAC estimation will not take into account a match whose score is under that threshold.
Definition at line 249 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached(), and main().
image_object_point_match planar_object_recognizer::matches[hard_max_detected_pts] |
Matches between the detected keypoints, and the model keypoints.
Definition at line 170 of file planar_object_recognizer.h.
Referenced by add_detected_homography(), geom_calib_draw(), and show_result().
int planar_object_recognizer::max_depth |
Definition at line 226 of file planar_object_recognizer.h.
Referenced by set_max_depth().
int planar_object_recognizer::max_detected_pts |
Definition at line 225 of file planar_object_recognizer.h.
int planar_object_recognizer::max_ransac_iterations |
maximum iteration number for RANSAC
Definition at line 259 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached(), and main().
double planar_object_recognizer::min_view_rate |
minimum visible rate for determining stable keypoints
Definition at line 239 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached(), and main().
IplImage* planar_object_recognizer::model_and_input_images |
Definition at line 280 of file planar_object_recognizer.h.
int planar_object_recognizer::model_point_number |
Definition at line 160 of file planar_object_recognizer.h.
object_keypoint* planar_object_recognizer::model_points |
keypoints on the object.
(X, Y) = coordinates in the original image, Z = 0. usage: model_points[target][model], with 0 <= target < detected_point_number and 0 <= model < model_point_number
Definition at line 159 of file planar_object_recognizer.h.
affine_image_generator planar_object_recognizer::new_images_generator |
Definition at line 205 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached().
float planar_object_recognizer::non_linear_refine_threshold |
Distance threshold, in pixels, for non-linear refinement.
Definition at line 256 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached(), and main().
object_view* planar_object_recognizer::object_input_view |
Definition at line 207 of file planar_object_recognizer.h.
bool planar_object_recognizer::object_is_detected |
Definition at line 173 of file planar_object_recognizer.h.
Referenced by augment_scene(), geom_calib_draw(), photometric_calibration(), and show_result().
pyr_yape* planar_object_recognizer::point_detector |
Definition at line 182 of file planar_object_recognizer.h.
float planar_object_recognizer::ransac_dist_threshold |
The minimum reprojection distance that RANSAC will consider compatible.
Definition at line 253 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached(), and main().
int planar_object_recognizer::ransac_stop_support |
RANSAC will stop if it finds a transformation that satisfies at least ransac_stop_support matches.
Definition at line 264 of file planar_object_recognizer.h.
int planar_object_recognizer::sample_number_for_refining |
Definition at line 111 of file planar_object_recognizer.h.
Referenced by set_sample_number_for_refining().
int planar_object_recognizer::u_input_image |
Definition at line 282 of file planar_object_recognizer.h.
bool planar_object_recognizer::use_bins_for_input_image |
Definition at line 232 of file planar_object_recognizer.h.
Referenced by dont_use_bins_when_detecting_input_image_points(), and use_bins_when_detecting_input_image_points().
bool planar_object_recognizer::use_bins_for_model_points |
Definition at line 231 of file planar_object_recognizer.h.
Referenced by dont_use_bins_when_creating_model_points(), and use_bins_when_creating_model_points().
int planar_object_recognizer::v_input_image |
Definition at line 282 of file planar_object_recognizer.h.
int planar_object_recognizer::views_number |
number of generated views for finding stable points
Definition at line 236 of file planar_object_recognizer.h.
Referenced by CalibModel::buildCached(), and main().
int planar_object_recognizer::x0 |
Definition at line 281 of file planar_object_recognizer.h.
int planar_object_recognizer::y0 |
Definition at line 281 of file planar_object_recognizer.h.