MTF
GB.h
1 #ifndef MTF_GB_H
2 #define MTF_GB_H
3 
4 #define GB_ADDITIVE_UPDATE 0
5 
6 #include "IlluminationModel.h"
7 
8 _MTF_BEGIN_NAMESPACE
9 struct GBParams : ILMParams{
10  bool additive_update;
12  GBParams(ILMParams *ilm_params, bool _additive_update);
14  GBParams(const GBParams *params = nullptr);
15 };
16 // global Gain and Bias illumination model
17 class GB : public IlluminationModel{
18 public:
19  typedef GBParams ParamType;
20  GB(const ParamType *_gb_params = nullptr);
21  virtual ~GB(){}
22  void initialize(double *p) override{
23  p[0] = p[1] = 0;
24  }
25  int getStateSize() const override{ return 2; };
26  void apply(double *g, const double *I, const double *p) override;
27  void invert(double *inv_p, const double *p) override;
28  void update(double *new_p, const double *old_p, const double *dp) override;
29 
30  void cmptParamJacobian(double *df_dp, const double *df_dg,
31  const double *I, const double *p) override;
32  void cmptPixJacobian(double *df_dI, const double *df_dg,
33  const double *I, const double *p) override;
34 
35  void cmptParamHessian(double *d2f_dp2, const double *d2f_dg2,
36  const double *I, const double *p) override;
37  void cmptPixHessian(double *d2f_dI2, const double *d2f_dg2,
38  const double *I, const double *p) override;
39  void cmptCrossHessian(double *d2f_dp_dI, const double *d2f_dg2,
40  const double *I, const double *p) override;
41 
42  void cmptParamHessian(double *d2f_dp2, const double *d2f_dg2,
43  const double *df_dg, const double *I, const double *p) override{
44  cmptParamHessian(d2f_dp2, d2f_dg2, I, p);
45  }
46  void cmptPixHessian(double *d2f_dI2, const double *d2f_dg2,
47  const double *df_dg, const double *I, const double *p) override{
48  cmptPixHessian(d2f_dI2, d2f_dg2, I, p);
49  }
50  void cmptCrossHessian(double *d2f_dp_dI, const double *d2f_dg2,
51  const double *df_dg, const double *I, const double *p) override;
52 
53  PixHessType getPixHessType() override { return d2f_dg2_type; }
54  void parseSamplerSigma(VectorXd &out_sigma, const VectorXd &in_sigma) override;
55  void parseSamplerMean(VectorXd &out_mean, const VectorXd &in_mean) override;
56 
57 protected:
58  ParamType params;
59 
60 };
61 
62 _MTF_END_NAMESPACE
63 
64 #endif
65 
66 
67 
Definition: GB.h:9
Definition: IlluminationModel.h:12
Illumination Model is a parametric function that transforms pixel values extracted from a patch to ac...
Definition: IlluminationModel.h:30
void cmptParamHessian(double *d2f_dp2, const double *d2f_dg2, const double *df_dg, const double *I, const double *p) override
NULL/nullptr for d2f_dg2 implies that the corresponding matrix is identity; conversely a non negative...
Definition: GB.h:42
Definition: GB.h:17
void cmptPixHessian(double *d2f_dI2, const double *d2f_dg2, const double *df_dg, const double *I, const double *p) override
d2f_dI2 = dg_dI^T*d2f_dg2*dg_dI + df_dg*d2g_dI2
Definition: GB.h:46
GBParams(ILMParams *ilm_params, bool _additive_update)
value constructor