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