MTF
CBH.h
1 #ifndef MTF_CHOMOGRAPHY_H
2 #define MTF_CHOMOGRAPHY_H
3 
4 #include "ProjectiveBase.h"
5 
6 _MTF_BEGIN_NAMESPACE
7 
9  // compute all warps w.r.t. the initial object bounding box rather than the unit square
10  // centered at the origin
11  bool normalized_init;
12  double grad_eps;
13  bool debug_mode;
14 
15  CBHParams(const SSMParams *ssm_params,
16  bool _normalized_init, double _grad_eps, bool _debug_mode);
17  CBHParams(const CBHParams *params = nullptr);
18 };
20 class CBH : public ProjectiveBase{
21 public:
22 
23  typedef CBHParams ParamType;
24 
25  using ProjectiveBase::setCorners;
26 
27  CBH( const ParamType *params_in = nullptr);
28 
29  void setCorners(const Matrix24d &corners) override;
30  void compositionalUpdate(const VectorXd& state_update) override;
31 
32  void cmptInitPixJacobian(MatrixXd &jacobian_prod, const PixGradT &am_jacobian) override;
33  void cmptWarpedPixJacobian(MatrixXd &dI_dp, const PixGradT &dI_dw) override;
34  void cmptPixJacobian(MatrixXd &jacobian_prod, const PixGradT &am_jacobian) override;
35  void cmptApproxPixJacobian(MatrixXd &jacobian_prod,
36  const PixGradT &pix_jacobian) override;
37 
38  void estimateWarpFromCorners(VectorXd &state_update, const Matrix24d &in_corners,
39  const Matrix24d &out_corners) override;
40  void estimateWarpFromPts(VectorXd &state_update, vector<uchar> &mask,
41  const vector<cv::Point2f> &in_pts, const vector<cv::Point2f> &out_pts,
42  const EstimatorParams &est_params) override;
43 
44  void invertState(VectorXd& inv_state, const VectorXd& state) override;
45  void getInitPixGrad(Matrix2Xd &ssm_grad, int pt_id) override{
46  getPixGrad(ssm_grad, pt_id, init_pts, init_corners);
47  }
48  void getCurrPixGrad(Matrix2Xd &ssm_grad, int pt_id) override{
49  getPixGrad(ssm_grad, pt_id, curr_pts, curr_corners);
50  }
51 
52  void getWarpFromState(Matrix3d &warp_mat, const VectorXd& ssm_state) override;
53  void getStateFromWarp(VectorXd &state_vec, const Matrix3d& warp_mat) override;
54 
55 private:
56 
57  ParamType params;
58 
59  Matrix3d warp_update_mat;
60  Matrix3d warp_mat;
61  RowVectorXdM hom_den;
62  MatrixXd dw_dp_0, dw_dp_t;
63 
64  Matrix24d inc_corners, dec_corners;
65  Matrix2Xd inc_pts, dec_pts;
66  Matrix3d inc_warp, dec_warp;
67 
68  Matrix24d updated_corners;
69 
70  void computeJacobian(MatrixXd &jacobian, Matrix24d &basis_corners,
71  Matrix3Xd &basis_pts_hm);
72  void getPixGrad(Matrix2Xd &ssm_grad, int pt_id, const PtsT &pts, const CornersT &corners);
73 
74 };
75 
76 _MTF_END_NAMESPACE
77 
78 #endif
Definition: StateSpaceModel.h:35
Definition: CBH.h:8
Definition: SSMEstimatorParams.h:9
Corner Based Homography.
Definition: CBH.h:20
base class for all SSMs that can be expressed by homogeneous multiplication with a 3x3 projective tra...
Definition: ProjectiveBase.h:14