Go to the documentation of this file.00001 #ifndef mfpf_region_pdf_h_
00002 #define mfpf_region_pdf_h_
00003
00004
00005
00006
00007
00008 #include <mfpf/mfpf_point_finder.h>
00009 #include <vpdfl/vpdfl_pdf_base.h>
00010 #include <mbl/mbl_cloneable_ptr.h>
00011 #include <mbl/mbl_chord.h>
00012 #include <vgl/vgl_fwd.h>
00013 #include <vcl_iosfwd.h>
00014
00015
00016
00017
00018
00019 class mfpf_region_pdf : public mfpf_point_finder
00020 {
00021 private:
00022
00023 double ref_x_;
00024
00025 double ref_y_;
00026
00027
00028 vcl_vector<mbl_chord> roi_;
00029
00030
00031 unsigned roi_ni_;
00032
00033 unsigned roi_nj_;
00034
00035
00036 unsigned n_pixels_;
00037
00038
00039 mbl_cloneable_ptr<vpdfl_pdf_base> pdf_;
00040
00041
00042 short norm_method_;
00043
00044
00045
00046 double overlap_f_;
00047
00048
00049 void set_defaults();
00050
00051 public:
00052
00053
00054 mfpf_region_pdf();
00055
00056
00057 virtual ~mfpf_region_pdf();
00058
00059
00060 void set(const vcl_vector<mbl_chord>& roi,
00061 double ref_x, double ref_y,
00062 const vpdfl_pdf_base& pdf,
00063 short norm_method=1);
00064
00065
00066
00067 void set_overlap_f(double);
00068
00069
00070 virtual double radius() const;
00071
00072
00073 const vpdfl_pdf_base& pdf() const { return pdf_; }
00074
00075
00076
00077 virtual double evaluate(const vimt_image_2d_of<float>& image,
00078 const vgl_point_2d<double>& p,
00079 const vgl_vector_2d<double>& u);
00080
00081
00082
00083
00084
00085
00086
00087
00088 virtual void evaluate_region(const vimt_image_2d_of<float>& image,
00089 const vgl_point_2d<double>& p,
00090 const vgl_vector_2d<double>& u,
00091 vimt_image_2d_of<double>& response);
00092
00093
00094
00095
00096
00097 virtual double search_one_pose(const vimt_image_2d_of<float>& image,
00098 const vgl_point_2d<double>& p,
00099 const vgl_vector_2d<double>& u,
00100 vgl_point_2d<double>& new_p);
00101
00102
00103
00104
00105 bool is_inside(const mfpf_pose& pose,
00106 const vgl_point_2d<double>& p,
00107 double f=1.0) const;
00108
00109
00110
00111 virtual bool overlap(const mfpf_pose& pose1,
00112 const mfpf_pose& pose2) const;
00113
00114
00115
00116
00117 virtual void get_outline(vcl_vector<vgl_point_2d<double> >& pts) const;
00118
00119
00120
00121
00122
00123 virtual void get_image_of_model(vimt_image_2d_of<vxl_byte>& image) const;
00124
00125
00126 short version_no() const;
00127
00128
00129 virtual vcl_string is_a() const;
00130
00131
00132 virtual mfpf_point_finder* clone() const;
00133
00134
00135 virtual void print_summary(vcl_ostream& os) const;
00136
00137
00138 void print_shape(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_region_pdf& nc) const;
00148 };
00149
00150 #endif