1 #ifndef MTF_ILLUMINATION_MODEL_H 2 #define MTF_ILLUMINATION_MODEL_H 4 #include "mtf/Macros/common.h" 5 #include "mtf/Utilities/excpUtils.h" 7 #define ilm_not_implemeted(func_name) \ 8 throw mtf::utils::FunctonNotImplemented(cv::format("%s :: %s :: Not implemented Yet", name.c_str(), #func_name)) 15 ILMParams(
int _resx,
int _resy) :resx(_resx), resy(_resy){}
17 resx(MTF_RES), resy(MTF_RES){
19 resx = ilm_params->resx;
20 resy = ilm_params->resy;
33 enum class PixHessType{ Constant, Diagonal, General };
37 resx(MTF_RES), resy(MTF_RES), d2f_dg2_type(PixHessType::General){
39 if(ilm_params->
resx <= 0 || ilm_params->resy <= 0) {
40 throw utils::InvalidArgument(
"IlluminationModel::Invalid sampling resolution provided");
43 resy = ilm_params->resy;
48 virtual int getStateSize()
const = 0;
49 virtual void initialize(
double *p){}
50 virtual void apply(
double *g,
const double *I,
const double *p) = 0;
51 virtual void invert(
double *inv_p,
const double *p) = 0;
52 virtual void update(
double *new_p,
const double *old_p,
const double *dp) = 0;
56 virtual void cmptParamJacobian(
double *df_dp,
const double *df_dg,
57 const double *I,
const double *p) = 0;
58 virtual void cmptPixJacobian(
double *df_dI,
const double *df_dg,
59 const double *I,
const double *p) = 0;
68 virtual void cmptParamHessian(
double *d2f_dp2,
const double *d2f_dg2,
70 const double *df_dg,
const double *I,
const double *p) = 0;
72 virtual void cmptPixHessian(
double *d2f_dI2,
const double *d2f_dg2,
73 const double *df_dg,
const double *I,
const double *p) = 0;
75 virtual void cmptCrossHessian(
double *d2f_dp_dI,
const double *d2f_dg2,
76 const double *df_dg,
const double *I,
const double *p) = 0;
80 virtual void cmptParamHessian(
double *d2f_dp2,
const double *d2f_dg2,
82 const double *I,
const double *p) = 0;
84 virtual void cmptPixHessian(
double *d2f_dI2,
const double *d2f_dg2,
85 const double *I,
const double *p) = 0;
87 virtual void cmptCrossHessian(
double *d2f_dp_dI,
const double *d2f_dg2,
88 const double *I,
const double *p) = 0;
90 virtual void setPixHessType(PixHessType _d2f_dg2_type){
91 d2f_dg2_type = _d2f_dg2_type;
93 virtual PixHessType getPixHessType() = 0;
94 virtual void parseSamplerSigma(VectorXd &out_sigma,
const VectorXd &in_sigma) = 0;
95 virtual void parseSamplerMean(VectorXd &out_mean,
const VectorXd &in_mean) = 0;
99 int resx, resy, n_pix;
100 PixHessType d2f_dg2_type;
int resx
horizontal and vertical sampling resolutions
Definition: IlluminationModel.h:14
Definition: IlluminationModel.h:12
Illumination Model is a parametric function that transforms pixel values extracted from a patch to ac...
Definition: IlluminationModel.h:30