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