1 #ifndef MTF_PROJECTIVE_BASE_H 2 #define MTF_PROJECTIVE_BASE_H 4 #include "StateSpaceModel.h" 6 #include <boost/random/mersenne_twister.hpp> 7 #include <boost/random/normal_distribution.hpp> 21 void setCorners(
const CornersT& corners)
override;
23 using StateSpaceModel::setCorners;
25 void setState(
const VectorXd &ssm_state)
override;
26 void additiveUpdate(
const VectorXd& state_update)
override;
27 void invertState(VectorXd& inv_state,
const VectorXd& state)
override;
28 void updateGradPts(
double grad_eps)
override;
29 void updateHessPts(
double hess_eps)
override;
30 void applyWarpToCorners(Matrix24d &warped_corners,
const Matrix24d &orig_corners,
31 const VectorXd &state_update)
override;
32 void applyWarpToPts(Matrix2Xd &warped_pts,
const Matrix2Xd &orig_pts,
33 const VectorXd &state_update)
override;
34 void applyWarpToPt(
double &warped_x,
double &warped_y,
double x,
double y,
35 const ProjWarpT &warp);
37 void getIdentityWarp(VectorXd &identity_warp)
override;
38 void composeWarps(VectorXd &composed_state,
const VectorXd &state_1,
39 const VectorXd &state_2)
override;
42 virtual void getWarpFromState(Matrix3d &warp_mat,
const VectorXd& ssm_state) = 0;
43 virtual void getStateFromWarp(VectorXd &state_vec,
const Matrix3d& warp_mat) = 0;
49 typedef boost::mt11213b SampleGenT;
50 typedef boost::normal_distribution<double> SampleDistT;
51 typedef SampleDistT::param_type DistParamT;
53 std::vector<SampleGenT> rand_gen;
54 std::vector<SampleDistT> rand_dist;
55 VectorXd state_perturbation;
57 void initializeSampler(
const VectorXd &state_sigma,
58 const VectorXd &state_mean)
override;
59 void setSampler(
const VectorXd &state_sigma,
60 const VectorXd &state_mean)
override;
61 void setSamplerMean(
const VectorXd &mean)
override;
62 void setSamplerSigma(
const VectorXd &
std)
override;
64 VectorXd getSamplerSigma()
override;
65 VectorXd getSamplerMean()
override;
67 void additiveRandomWalk(VectorXd &perturbed_state,
68 const VectorXd &base_state)
override;
69 void compositionalRandomWalk(VectorXd &perturbed_state,
70 const VectorXd &base_state)
override;
72 void additiveAutoRegression1(VectorXd &perturbed_state, VectorXd &perturbed_ar,
73 const VectorXd &base_state,
const VectorXd &base_ar,
double a = 0.5)
override;
74 void compositionalAutoRegression1(VectorXd &perturbed_state, VectorXd &perturbed_ar,
75 const VectorXd &base_state,
const VectorXd &base_ar,
double a = 0.5)
override;
77 void generatePerturbation(VectorXd &perturbation)
override;
78 void generatePerturbedPts(VectorXd &perturbed_pts)
override;
79 void estimateMeanOfSamples(VectorXd &sample_mean,
80 const std::vector<VectorXd> &samples,
int n_samples)
override;
81 void getPerturbedPts(VectorXd &perturbed_pts,
82 const VectorXd &state_perturbation)
override;
83 void estimateStateSigma(VectorXd &state_sigma,
double pix_sigma)
override;
87 ProjWarpT warp_mat, warp_update_mat;
88 ProjWarpT inv_warp_mat;
95 HomCornersT init_corners_hm, curr_corners_hm;
99 CornersT norm_corners;
100 HomCornersT norm_corners_hm;
102 const PtsT& getNormPts()
const{
return norm_pts; }
103 const HomPtsT& getHomNormPts()
const{
return norm_pts_hm; }
104 const CornersT& getNormCorners()
const{
return norm_corners; }
105 const HomCornersT& getHomNormCorners()
const{
return norm_corners_hm; }
108 void getPtsFromCorners(ProjWarpT &warp, PtsT &pts, HomPtsT &pts_hm,
109 const CornersT &corners);
113 stringstream err_msg;
Definition: StateSpaceModel.h:35
Definition: StateSpaceModel.h:49
HomPtsT init_pts_hm
3 x 3 projective warp matrix
Definition: ProjectiveBase.h:94
base class for all SSMs that can be expressed by homogeneous multiplication with a 3x3 projective tra...
Definition: ProjectiveBase.h:14