1 // This is gel/vifa/vifa_int_face_attr_common_params.h 2 #ifndef VIFA_INT_FACE_ATTR_COMMON_PARAMS_H 3 #define VIFA_INT_FACE_ATTR_COMMON_PARAMS_H 4 5 //----------------------------------------------------------------------------- 6 //: 7 // \file 8 // \brief Parameter mixin for intensity face attribute computation. 9 // 10 // \author Anthony Hoogs, from DDB in TargetJr 11 // 12 // \date January 2001 13 // 14 // The parameter mixin for intensity face attribute computation, for 15 // attributes common to single faces and groups of faces. 16 // 17 // \verbatim 18 // Modifications: 19 // MPP Mar/Apr 2003, Ported to VXL 20 // \endverbatim 21 //----------------------------------------------------------------------------- 22 23 #include <gevd/gevd_param_mixin.h> 24 #include <vul/vul_timestamp.h> 25 #include <vbl/vbl_ref_count.h> 26 #include <vdgl/vdgl_fit_lines_params.h> 27 #include <vifa/vifa_coll_lines_params.h> 28 #include <vifa/vifa_group_pgram_params.h> 29 #include <vifa/vifa_norm_params.h> 30 #include <vifa/vifa_typedefs.h> 31 32 33 //: Container holding parameters for common intensity face attribute computations. 34 class vifa_int_face_attr_common_params : public gevd_param_mixin, 35 public vul_timestamp, 36 public vbl_ref_count 37 { 38 protected: 39 vdgl_fit_lines_params_sptr fitter_params_; 40 vifa_group_pgram_params_sptr gpp_s_; 41 vifa_group_pgram_params_sptr gpp_w_; 42 vifa_coll_lines_params_sptr cpp_; 43 vifa_norm_params_sptr np_; 44 45 public: 46 //: Line fitting parameters (incl. fit_length). fitter_params()47 vdgl_fit_lines_params_sptr fitter_params() { return fitter_params_; } 48 49 //: Strong projected parallelism parameters. gpp_s()50 vifa_group_pgram_params_sptr gpp_s() { return gpp_s_; } 51 52 //: Weak projected parallelism parameters. gpp_w()53 vifa_group_pgram_params_sptr gpp_w() { return gpp_w_; } 54 55 //: Collinearization parameters. cpp()56 vifa_coll_lines_params_sptr cpp() { return cpp_; } 57 58 //: Pixel normalization parameters. np()59 vifa_norm_params_sptr np() { return np_; } 60 61 public: 62 //: Default constructor. 63 vifa_int_face_attr_common_params(vdgl_fit_lines_params* fitter_params = nullptr, 64 vifa_group_pgram_params* gpp_s = nullptr, 65 vifa_group_pgram_params* gpp_w = nullptr, 66 vifa_coll_lines_params* cpp = nullptr, 67 vifa_norm_params* np = nullptr 68 ); 69 70 //: Copy constructor. 71 vifa_int_face_attr_common_params(const vifa_int_face_attr_common_params& old_params); 72 73 //: Destructor. 74 ~vifa_int_face_attr_common_params() override; 75 76 //: Publicly available setting of parameters. 77 void set_params(const vifa_int_face_attr_common_params& ifap); 78 79 //: Check that parameters are within acceptable bounds. 80 bool SanityCheck() override; 81 82 //: Output contents 83 void print_info(); 84 85 protected: 86 //: Assign internal parameter blocks. 87 void init_params(vdgl_fit_lines_params* fitter_params, 88 vifa_group_pgram_params* gpp_s, 89 vifa_group_pgram_params* gpp_w, 90 vifa_coll_lines_params* cpp, 91 vifa_norm_params* np 92 ); 93 void init_params(const vdgl_fit_lines_params& fitter_params, 94 const vifa_group_pgram_params& gpp_s, 95 const vifa_group_pgram_params& gpp_w, 96 const vifa_coll_lines_params& cpp, 97 const vifa_norm_params& np 98 ); 99 }; 100 101 #endif // VIFA_INT_FACE_ATTR_COMMON_PARAMS_H 102