1 #ifndef MTF_SUM_OF_AMS_H 2 #define MTF_SUM_OF_AMS_H 4 #include "AppearanceModel.h" 10 const AMDist *_am2,
double _am1_norm_factor,
double _am2_norm_factor,
11 unsigned int _am1_dist_feat_size,
unsigned int _am2_dist_feat_size);
12 double operator()(
const double* a,
const double* b,
13 size_t size,
double worst_dist = -1)
const override;
16 double am1_norm_factor, am2_norm_factor;
17 unsigned int am1_dist_feat_size, am2_dist_feat_size;
27 const ParamType *_params =
nullptr,
const int _n_channels = 1);
29 return am1->inputType() == am2->inputType() ? am1->inputType() : HETEROGENEOUS_INPUT;
31 void setCurrImg(
const cv::Mat &cv_img)
override;
34 return am1->getLikelihood()*am1_norm_factor +
35 am2->getLikelihood()*am2_norm_factor;
40 void initializePixVals(
const PtsT& init_pts)
override;
41 void initializePixGrad(
const GradPtsT &warped_offset_pts)
override;
42 void initializePixGrad(
const PtsT &init_pts)
override;
43 void initializePixHess(
const PtsT& init_pts,
const HessPtsT &warped_offset_pts)
override;
44 void initializePixHess(
const PtsT &init_pts)
override;
46 void initializeSimilarity()
override;
47 void initializeGrad()
override;
48 void initializeHess()
override;
54 void updatePixVals(
const PtsT& curr_pts)
override;
56 void updatePixGrad(
const GradPtsT &warped_offset_pts)
override;
57 void updatePixGrad(
const PtsT &curr_pts)
override;
59 void updatePixHess(
const PtsT &curr_pts)
override;
60 void updatePixHess(
const PtsT& curr_pts,
const HessPtsT &warped_offset_pts)
override;
62 void updateSimilarity(
bool prereq_only =
true)
override;
63 void updateInitGrad()
override;
65 void updateCurrGrad()
override;
67 void cmptInitHessian(MatrixXd &init_hessian,
const MatrixXd &init_pix_jacobian)
override;
68 void cmptCurrHessian(MatrixXd &curr_hessian,
const MatrixXd &curr_pix_jacobian)
override;
70 void cmptInitHessian(MatrixXd &init_hessian,
const MatrixXd &init_pix_jacobian,
71 const MatrixXd &init_pix_hessian)
override;
72 void cmptCurrHessian(MatrixXd &curr_hessian,
const MatrixXd &curr_pix_jacobian,
73 const MatrixXd &curr_pix_hessian)
override;
75 void cmptSelfHessian(MatrixXd &self_hessian,
const MatrixXd &curr_pix_jacobian)
override;
76 void cmptSelfHessian(MatrixXd &self_hessian,
const MatrixXd &curr_pix_jacobian,
77 const MatrixXd &curr_pix_hessian)
override;
80 VectorXd curr_feat_vec;
81 const DistType* getDistFunc()
override{
82 return new DistType(name, am1->getDistFunc(),
83 am2->getDistFunc(), am1_norm_factor, am2_norm_factor,
84 am1_dist_feat_size, am2_dist_feat_size);
86 void updateDistFeat(
double* feat_addr)
override;
87 void initializeDistFeat()
override;
88 void updateDistFeat()
override;
89 const double* getDistFeat()
override{
return curr_feat_vec.data(); }
90 unsigned int getDistFeatSize()
override;
94 double am1_norm_factor, am2_norm_factor;
95 unsigned int am1_dist_feat_size, am2_dist_feat_size;
Definition: AMParams.h:12
double operator()(const double *a, const double *b, size_t size, double worst_dist=-1) const override
computes the distance / dissimilarity between two patches where each is codified or represented by a ...
Distance functor for FLANN.
Definition: AppearanceModel.h:40
Definition: SumOfAMs.h:21
double getLikelihood() const override
returns a normalized version of the similarity that lies between 0 and 1 and can be interpreted as th...
Definition: SumOfAMs.h:33
Similarity function that indicates how well a candidate warped patch matches the template.
Definition: AppearanceModel.h:63
int inputType() const override
return the type of OpenCV Mat image the AM requires as input; typically either CV_32FC3 or CV_32FC1 ...
Definition: SumOfAMs.h:28