4 #include "AppearanceModel.h" 25 bool symmetrical_grad;
34 int _n_bins,
bool _partition_of_unity,
35 double _pre_seed,
bool _symmetrical_grad,
43 typedef double ElementType;
44 typedef double ResultType;
45 CCREDist(
const string &_name,
const int _n_bins,
46 const unsigned int _feat_size,
const unsigned int _patch_size,
47 const double _hist_pre_seed,
const double _pre_seed,
48 const MatrixX2i *_std_bspl_ids,
const double _hist_norm_mult,
49 const double _log_hist_norm_mult);
50 double operator()(
const double* a,
const double* b,
51 size_t size,
double worst_dist = -1)
const override;
54 const unsigned int feat_size;
55 const unsigned int patch_size;
56 const double pre_seed, hist_pre_seed;
57 const MatrixX2i *std_bspl_ids;
58 const double hist_norm_mult, log_hist_norm_mult;
70 CCRE(
const ParamType *ccre_params =
nullptr,
int _n_channels = 1);
73 double d = (likelihood_numr / f) - 1;
74 return exp(-params.likelihood_alpha * d*d);
79 void initializeSimilarity()
override;
80 void initializeGrad()
override;
81 void initializeHess()
override;
83 void updateSimilarity(
bool prereq_only = 1)
override;
84 void updateInitGrad()
override;
85 void updateCurrGrad()
override;
87 void cmptInitHessian(MatrixXd &hessian,
const MatrixXd &curr_pix_jacobian)
override;
88 void cmptCurrHessian(MatrixXd &hessian,
const MatrixXd &curr_pix_jacobian)
override;
90 void cmptInitHessian(MatrixXd &init_hessian,
const MatrixXd &init_pix_jacobian,
91 const MatrixXd &init_pix_hessian)
override;
92 void cmptCurrHessian(MatrixXd &curr_hessian,
const MatrixXd &curr_pix_jacobian,
93 const MatrixXd &curr_pix_hessian)
override;
95 void cmptSelfHessian(MatrixXd &self_hessian,
const MatrixXd &curr_pix_jacobian)
override;
96 void cmptSelfHessian(MatrixXd &self_hessian,
const MatrixXd &curr_pix_jacobian,
97 const MatrixXd &curr_pix_hessian)
override;
100 const DistType* getDistFunc()
override{
101 return new DistType(name, params.n_bins, feat_size,
102 patch_size, hist_pre_seed, params.pre_seed,
103 &std_bspl_ids, hist_norm_mult, log_hist_norm_mult);
106 feat_vec.resize(feat_size);
109 updateDistFeat(feat_vec.data());
111 const double* getDistFeat()
override{
return feat_vec.data(); }
112 void updateDistFeat(
double* feat_addr)
override;
118 double max_similarity, likelihood_numr;
126 double log_hist_norm_mult;
131 VectorXd init_cum_hist, curr_cum_hist;
132 MatrixXd init_hist_mat, curr_hist_mat;
133 MatrixXd init_cum_hist_mat, curr_cum_hist_mat;
134 MatrixXd cum_joint_hist;
138 MatrixXd init_cum_hist_grad, curr_cum_hist_grad;
139 MatrixXd init_hist_hess, curr_hist_hess;
140 MatrixXd init_cum_hist_hess, curr_cum_hist_hess;
145 MatrixXd ccre_log_term;
146 MatrixXd init_hess_factor, cum_hess_factor;
148 MatrixXd init_hist_grad_ratio, cum_hist_grad_ratio;
149 MatrixXd init_hist_hess_ratio, cum_hist_hess_ratio;
151 VectorXd init_hist_log, curr_hist_log;
152 VectorXd init_cum_hist_log, curr_cum_hist_log;
153 MatrixXd cum_joint_hist_log;
155 VectorXd cum_joint_hist_sum;
157 MatrixXd self_cum_joint_hist, self_cum_joint_hist_log;
158 MatrixXd self_ccre_log_term;
165 MatrixX2i init_bspl_ids;
166 MatrixX2i curr_bspl_ids;
167 MatrixXi linear_idx, linear_idx2;
169 MatrixX2i block_extents;
173 void updateSymSimilarity(
bool prereq_only);
174 void updateSymInitGrad();
175 void cmptSymInitHessian(MatrixXd &hessian,
const MatrixXd &curr_pix_jacobian);
176 void cmptCumSelfHist();
CCREParams(const AMParams *am_params, int _n_bins, bool _partition_of_unity, double _pre_seed, bool _symmetrical_grad, int _n_blocks, bool _debug_mode)
value constructor
void updateDistFeat() override
computes a "distance" vector using the current image patch such that, when the distance vectors corre...
Definition: CCRE.h:108
double hist_pre_seed
value with which to preseed the individual histograms
Definition: CCRE.h:121
MatrixXd init_cum_joint_hist_grad
(n_bins*n_bins) X N gradients of the (flattened) current joint histogram w.r.t. initial and current p...
Definition: CCRE.h:143
double hist_norm_mult
multiplicative factor for normalizing histograms
Definition: CCRE.h:123
Cross Cumulative Residual Entropy.
Definition: CCRE.h:63
double pre_seed
initial value with which each bin of the joint histogram is pre-seeded to avoid numerical instabiliti...
Definition: CCRE.h:21
Definition: AMParams.h:12
Distance functor for FLANN.
Definition: AppearanceModel.h:40
double getLikelihood() const override
returns a normalized version of the similarity that lies between 0 and 1 and can be interpreted as th...
Definition: CCRE.h:72
int n_bins
no.
Definition: CCRE.h:15
MatrixX2i std_bspl_ids
only used internally to increase speed by offlining as many computations as possible; ...
Definition: CCRE.h:164
MatrixXd init_hist_grad
n_bins X N gradients of the marginal histograms w.r.t. pixel values
Definition: CCRE.h:137
bool partition_of_unity
decides whether the partition of unity constraint has to be strictly observed for border bins; if ena...
Definition: CCRE.h:18
VectorXd init_hist
n_bins x n_bins joint histograms;
Definition: CCRE.h:130
unsigned int getDistFeatSize() override
returns the size of the distance vector
Definition: CCRE.h:113
bool isSymmetrical() const override
return false if the similarity function f is not symmetrical, i.e.
Definition: CCRE.h:77
void initializeDistFeat() override
to be called once during initialization if any of the distance feature functionality is to be used ...
Definition: CCRE.h:105
Similarity function that indicates how well a candidate warped patch matches the template.
Definition: AppearanceModel.h:63