Go to the documentation of this file.00001 #ifndef mfpf_hog_box_finder_h_
00002 #define mfpf_hog_box_finder_h_
00003
00004
00005
00006
00007
00008 #include <mfpf/mfpf_point_finder.h>
00009 #include <mipa/mipa_vector_normaliser.h>
00010 #include <mfpf/mfpf_vec_cost.h>
00011 #include <mbl/mbl_cloneable_ptr.h>
00012 #include <vcl_iosfwd.h>
00013
00014
00015
00016
00017 class mfpf_hog_box_finder : public mfpf_point_finder
00018 {
00019 private:
00020
00021 double ref_x_;
00022
00023 double ref_y_;
00024
00025
00026 unsigned nA_bins_;
00027
00028
00029 bool full360_;
00030
00031
00032 unsigned nc_;
00033
00034
00035 unsigned ni_;
00036
00037 unsigned nj_;
00038
00039
00040 mbl_cloneable_ptr<mfpf_vec_cost> cost_;
00041
00042
00043
00044
00045
00046 mbl_cloneable_nzptr<mipa_vector_normaliser> normaliser_;
00047
00048
00049
00050 double overlap_f_;
00051
00052
00053 void set_defaults();
00054
00055 public:
00056
00057
00058 mfpf_hog_box_finder();
00059
00060
00061 virtual ~mfpf_hog_box_finder();
00062
00063
00064 void set(unsigned nA_bins, bool full360,
00065 unsigned ni, unsigned nj, unsigned nc,
00066 double ref_x, double ref_y,
00067 const mfpf_vec_cost& cost,
00068 const mbl_cloneable_nzptr<mipa_vector_normaliser>& normaliser);
00069
00070
00071
00072 void set_overlap_f(double);
00073
00074
00075
00076 virtual double radius() const;
00077
00078
00079 const mfpf_vec_cost& cost() const { return cost_; }
00080
00081
00082 mfpf_vec_cost& cost() { return cost_; }
00083
00084
00085
00086 virtual double evaluate(const vimt_image_2d_of<float>& image,
00087 const vgl_point_2d<double>& p,
00088 const vgl_vector_2d<double>& u);
00089
00090
00091
00092
00093
00094
00095
00096
00097 virtual void evaluate_region(const vimt_image_2d_of<float>& image,
00098 const vgl_point_2d<double>& p,
00099 const vgl_vector_2d<double>& u,
00100 vimt_image_2d_of<double>& response);
00101
00102
00103
00104
00105
00106 virtual double search_one_pose(const vimt_image_2d_of<float>& image,
00107 const vgl_point_2d<double>& p,
00108 const vgl_vector_2d<double>& u,
00109 vgl_point_2d<double>& new_p);
00110
00111
00112
00113
00114 bool is_inside(const mfpf_pose& pose,
00115 const vgl_point_2d<double>& p,
00116 double f=1.0) const;
00117
00118
00119
00120 virtual bool overlap(const mfpf_pose& pose1,
00121 const mfpf_pose& pose2) const;
00122
00123
00124
00125
00126 virtual void get_outline(vcl_vector<vgl_point_2d<double> >& pts) const;
00127
00128
00129 short version_no() const;
00130
00131
00132 virtual vcl_string is_a() const;
00133
00134
00135 virtual mfpf_point_finder* clone() const;
00136
00137
00138 virtual void print_summary(vcl_ostream& os) const;
00139
00140
00141 virtual void b_write(vsl_b_ostream& bfs) const;
00142
00143
00144 virtual void b_read(vsl_b_istream& bfs);
00145
00146
00147 bool operator==(const mfpf_hog_box_finder& nc) const;
00148 };
00149
00150 #endif