1 #ifndef MTF_TRANSLATION_H 2 #define MTF_TRANSLATION_H 4 #include "ProjectiveBase.h" 5 #include "SSMEstimator.h" 6 #include "SSMEstimatorParams.h" 21 int runKernel(
const CvMat* m1,
const CvMat* m2, CvMat* model)
override;
22 bool refine(
const CvMat* m1,
const CvMat* m2,
23 CvMat* model,
int maxIters)
override;
25 void computeReprojError(
const CvMat* m1,
const CvMat* m2,
26 const CvMat* model, CvMat* error)
override;
32 using ProjectiveBase::setCorners;
35 typedef EstimatorParams::EstType EstType;
39 void setCorners(
const Matrix24d &corners)
override;
40 void setState(
const VectorXd &ssm_state)
override;
41 void compositionalUpdate(
const VectorXd& state_update)
override;
43 void estimateWarpFromCorners(VectorXd &state_update,
const Matrix24d &in_corners,
44 const Matrix24d &out_corners)
override;
46 const PixGradT &pix_jacobian_coord)
override{
47 validate_ssm_jacobian(pix_jacobian_ssm, pix_jacobian_coord);
48 pix_jacobian_ssm = pix_jacobian_coord.leftCols<2>();
51 void cmptWarpedPixJacobian(MatrixXd &pix_jacobian_ssm,
52 const PixGradT &pixel_grad)
override {
53 pix_jacobian_ssm = pixel_grad.leftCols<2>();
55 void cmptApproxPixJacobian(MatrixXd &pix_jacobian_ssm,
56 const PixGradT &pixel_grad)
override {
57 pix_jacobian_ssm = pixel_grad.leftCols<2>();
60 void cmptPixJacobian(MatrixXd &pix_jacobian_ssm,
61 const PixGradT &pix_jacobian_coord)
override{
62 cmptInitPixJacobian(pix_jacobian_ssm, pix_jacobian_coord);
64 void cmptInitPixHessian(MatrixXd &pix_hess_ssm,
const PixHessT &pix_hess_coord,
65 const PixGradT &pix_jacobian_coord)
override{
66 validate_ssm_hessian(pix_hess_ssm, pix_hess_coord, pix_jacobian_coord);
67 pix_hess_ssm = pix_hess_coord;
69 void cmptWarpedPixHessian(MatrixXd &pix_hess_ssm,
const PixHessT &pix_hess_coord,
70 const PixGradT &pix_jacobian_coord)
override{
71 validate_ssm_hessian(pix_hess_ssm, pix_hess_coord, pix_jacobian_coord);
72 pix_hess_ssm = pix_hess_coord;
74 void cmptApproxPixHessian(MatrixXd &pix_hess_ssm,
const PixHessT &pix_hess_coord,
75 const PixGradT &pix_jacobian_coord)
override{
76 validate_ssm_hessian(pix_hess_ssm, pix_hess_coord, pix_jacobian_coord);
77 pix_hess_ssm = pix_hess_coord;
80 void cmptPixHessian(MatrixXd &pix_hess_ssm,
const PixHessT &pix_hess_coord,
81 const PixGradT &pix_jacobian_coord)
override{
82 cmptInitPixHessian(pix_hess_ssm, pix_hess_coord, pix_jacobian_coord);
85 void getInitPixGrad(Matrix2Xd &ssm_grad,
int pix_id)
override{
86 ssm_grad = Matrix2d::Identity();
89 void getCurrPixGrad(Matrix2Xd &ssm_grad,
int pix_id)
override{
90 ssm_grad = Matrix2d::Identity();
93 void invertState(VectorXd& inv_state,
const VectorXd& state)
override;
95 void updateGradPts(
double grad_eps)
override;
96 void updateHessPts(
double hess_eps)
override;
98 void applyWarpToCorners(Matrix24d &warped_corners,
const Matrix24d &orig_corners,
99 const VectorXd &state_update)
override;
100 void applyWarpToPts(Matrix2Xd &warped_pts,
const Matrix2Xd &orig_pts,
101 const VectorXd &state_update)
override;
103 bool supportsSPI()
override{
return true; }
105 void compositionalRandomWalk(VectorXd &perturbed_state,
106 const VectorXd &base_state)
override;
107 void compositionalAutoRegression1(VectorXd &perturbed_state, VectorXd &perturbed_ar,
108 const VectorXd &base_state,
const VectorXd &base_ar,
double a = 0.5)
override;
109 void estimateStateSigma(VectorXd &state_sigma,
double pix_sigma)
override {
110 state_sigma[0] = state_sigma[1] = pix_sigma;
112 void estimateWarpFromPts(VectorXd &state_update, vector<uchar> &mask,
113 const vector<cv::Point2f> &in_pts,
const vector<cv::Point2f> &out_pts,
116 void getWarpFromState(Matrix3d &warp_mat,
const VectorXd& ssm_state)
override;
117 void getStateFromWarp(VectorXd &state_vec,
const Matrix3d& warp_mat)
override;
122 cv::Mat estimateTranslation(cv::InputArray _points1, cv::InputArray _points2,
125 int estimateTranslation(
const CvMat* in_pts,
const CvMat* out_pts,
Definition: StateSpaceModel.h:35
Definition: Translation.h:10
Definition: SSMEstimatorParams.h:9
Definition: Translation.h:17
Definition: Translation.h:29
Base class for robust estimators for different SSMs adapted from CvModelEstimator2 defined in _modelt...
Definition: SSMEstimator.h:14
void cmptInitPixJacobian(MatrixXd &pix_jacobian_ssm, const PixGradT &pix_jacobian_coord) override
right multiplies the initial or current ssm jacobian with the provided am jacobian; though this can b...
Definition: Translation.h:45
base class for all SSMs that can be expressed by homogeneous multiplication with a 3x3 projective tra...
Definition: ProjectiveBase.h:14