1 #ifndef MTF_SIMILITUDE_H 2 #define MTF_SIMILITUDE_H 4 #include "ProjectiveBase.h" 5 #include "SSMEstimator.h" 6 #include "SSMEstimatorParams.h" 13 int pt_based_sampling;
17 bool _normalized_init,
bool _geom_sampling,
18 int pt_based_sampling,
int _n_model_pts,
27 int runKernel(
const CvMat* m1,
const CvMat* m2, CvMat* model)
override;
28 bool refine(
const CvMat* m1,
const CvMat* m2,
29 CvMat* model,
int maxIters)
override;
31 void computeReprojError(
const CvMat* m1,
const CvMat* m2,
32 const CvMat* model, CvMat* error)
override;
38 Similitude(
const ParamType *params_in =
nullptr);
39 void setCorners(
const CornersT& corners)
override;
40 using ProjectiveBase::setCorners;
42 void setState(
const VectorXd &ssm_state)
override;
43 void compositionalUpdate(
const VectorXd& state_update)
override;
45 void getInitPixGrad(Matrix2Xd &ssm_grad,
int pix_id)
override;
47 void getCurrPixGrad(Matrix2Xd &ssm_grad,
int pix_id)
override {
48 getInitPixGrad(ssm_grad, pix_id);
50 void cmptInitPixJacobian(MatrixXd &jacobian_prod,
const PixGradT &am_jacobian)
override;
52 void cmptPixJacobian(MatrixXd &jacobian_prod,
const PixGradT &am_jacobian)
override{
53 cmptInitPixJacobian(jacobian_prod, am_jacobian);
55 void cmptApproxPixJacobian(MatrixXd &jacobian_prod,
const PixGradT &pix_jacobian)
override;
56 void cmptWarpedPixJacobian(MatrixXd &jacobian_prod,
57 const PixGradT &pix_grad)
override;
59 void cmptInitPixHessian(MatrixXd &pix_hess_ssm,
const PixHessT &pix_hess_coord,
60 const PixGradT &pix_grad)
override;
62 void cmptPixHessian(MatrixXd &pix_hess_ssm,
const PixHessT &pix_hess_coord,
63 const PixGradT &pix_grad)
override {
64 cmptInitPixHessian(pix_hess_ssm, pix_hess_coord, pix_grad);
66 void cmptWarpedPixHessian(MatrixXd &d2I_dp2,
const PixHessT &d2I_dw2,
67 const PixGradT &dI_dw)
override;
69 void estimateWarpFromCorners(VectorXd &state_update,
const Matrix24d &in_corners,
70 const Matrix24d &out_corners)
override;
71 void estimateWarpFromPts(VectorXd &state_update, vector<uchar> &mask,
72 const vector<cv::Point2f> &in_pts,
const vector<cv::Point2f> &out_pts,
74 void updateGradPts(
double grad_eps)
override;
75 void updateHessPts(
double hess_eps)
override;
77 void applyWarpToCorners(Matrix24d &warped_corners,
const Matrix24d &orig_corners,
78 const VectorXd &state_update)
override;
79 void applyWarpToPts(Matrix2Xd &warped_pts,
const Matrix2Xd &orig_pts,
80 const VectorXd &state_update)
override;
82 void generatePerturbation(VectorXd &perturbation)
override;
84 void additiveRandomWalk(VectorXd &perturbed_state,
85 const VectorXd &base_state)
override;
87 void additiveAutoRegression1(VectorXd &perturbed_state, VectorXd &perturbed_ar,
88 const VectorXd &base_state,
const VectorXd &base_ar,
double a = 0.5)
override;
89 void compositionalRandomWalk(VectorXd &perturbed_state,
90 const VectorXd &base_state)
override;
92 void getWarpFromState(Matrix3d &warp_mat,
const VectorXd& ssm_state)
override;
93 void getStateFromWarp(VectorXd &state_vec,
const Matrix3d& warp_mat)
override;
96 bool supportsSPI()
override{
return true; }
102 Vector4d geomToState(
const Vector4d &geom);
103 Vector4d stateToGeom(
const Vector4d &est);
105 cv::Mat estimateSimilitude(cv::InputArray _points1, cv::InputArray _points2,
107 int estimateSimilitude(
const CvMat* in_pts,
const CvMat* out_pts,
Definition: StateSpaceModel.h:35
Definition: Similitude.h:23
Definition: Similitude.h:35
Definition: SSMEstimatorParams.h:9
Base class for robust estimators for different SSMs adapted from CvModelEstimator2 defined in _modelt...
Definition: SSMEstimator.h:14
Definition: Similitude.h:10
base class for all SSMs that can be expressed by homogeneous multiplication with a 3x3 projective tra...
Definition: ProjectiveBase.h:14