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