42 #include <opencv2/core/core.hpp> 68 R = cv::Mat::zeros(3,3,CV_64F);
69 t = cv::Mat::zeros(3,1,CV_64F);
92 bool Rpp(
const cv::Mat &model_3D,
const cv::Mat &iprts,
93 cv::Mat &Rlu, cv::Mat &tlu,
int &it1,
double &obj_err1,
double &img_err1, std::vector<Solution>&sol);
95 void ObjPose(
const cv::Mat P, cv::Mat Qp, cv::Mat initR,
96 cv::Mat &R, cv::Mat &t,
int &it,
double &obj_err,
double &img_err);
98 void AbsKernel(cv::Mat P, cv::Mat Q,
const std::vector <cv::Mat> &F,
const cv::Mat &G,
99 cv::Mat &R, cv::Mat &t, cv::Mat &Qout,
double &err2);
101 cv::Mat
EstimateT(
const cv::Mat &R,
const cv::Mat &G,
const std::vector <cv::Mat> &F,
const cv::Mat &P);
102 cv::Mat
NormRv(
const cv::Mat &R);
103 cv::Mat
NormRv(
const cv::Vec3d &V);
109 bool Get2ndPose_Exact(
const cv::Mat &v,
const cv::Mat &P,
const cv::Mat &R,
const cv::Mat &t, std::vector <Solution> &ret);
111 bool GetRfor2ndPose_V_Exact(
const cv::Mat &v,
const cv::Mat &P,
const cv::Mat &R,
const cv::Mat &t, std::vector <Solution> &ret);
113 void GetRotationY_wrtT(
const cv::Mat &v,
const cv::Mat &P,
const cv::Mat &t,
const cv::Mat &Rz,
114 std::vector <double> &al, cv::Mat &tnew, std::vector <double> &at);
117 bool DecomposeR(
const cv::Mat &R, cv::Mat &Rz2, cv::Mat &ret);
119 cv::Mat
RpyMat(
const cv::Vec3d &angs);
120 bool RpyAng(
const cv::Mat &R, cv::Vec3d &ret);
121 cv::Mat
Mean(
const cv::Mat &m);
122 cv::Mat
Sum(
const cv::Mat &m,
int dim=1);
123 cv::Mat
Mul(
const cv::Mat &a,
const cv::Mat &b);
124 cv::Mat
Sq(
const cv::Mat &m);
125 cv::Mat
Xform(
const cv::Mat &P,
const cv::Mat &R,
const cv::Mat &t);
126 double Norm(
const cv::Mat &m);
128 void Print(
const cv::Mat &m);
132 cv::Mat
Point2Mat(
const std::vector <cv::Point3d> &pts);
133 cv::Mat
Point2Mat(
const std::vector <cv::Point2d> &pts);
134 cv::Mat
Vec2Mat(
const cv::Vec3d &v);
136 bool RpyAng_X(
const cv::Mat &R, cv::Vec3d &ret);
cv::Mat Mul(const cv::Mat &a, const cv::Mat &b)
bool Get2ndPose_Exact(const cv::Mat &v, const cv::Mat &P, const cv::Mat &R, const cv::Mat &t, std::vector< Solution > &ret)
cv::Mat Sq(const cv::Mat &m)
cv::Mat Vec2Mat(const cv::Vec3d &v)
bool Rpp(const cv::Mat &model_3D, const cv::Mat &iprts, cv::Mat &Rlu, cv::Mat &tlu, int &it1, double &obj_err1, double &img_err1, std::vector< Solution > &sol)
bool RpyAng(const cv::Mat &R, cv::Vec3d &ret)
Quaternion Quaternion_byAngleAndVector(double q_angle, const cv::Vec3d &q_vector)
cv::Mat Sum(const cv::Mat &m, int dim=1)
double Quaternion_Norm(const Quaternion &Q)
void Print(const cv::Mat &m)
cv::Mat NormRv(const cv::Mat &R)
cv::Mat GetRotationbyVector(const cv::Vec3d &v1, const cv::Vec3d &v2)
cv::Mat EstimateT(const cv::Mat &R, const cv::Mat &G, const std::vector< cv::Mat > &F, const cv::Mat &P)
void GetRotationY_wrtT(const cv::Mat &v, const cv::Mat &P, const cv::Mat &t, const cv::Mat &Rz, std::vector< double > &al, cv::Mat &tnew, std::vector< double > &at)
double Norm(const cv::Mat &m)
bool RpyAng_X(const cv::Mat &R, cv::Vec3d &ret)
void AbsKernel(cv::Mat P, cv::Mat Q, const std::vector< cv::Mat > &F, const cv::Mat &G, cv::Mat &R, cv::Mat &t, cv::Mat &Qout, double &err2)
bool GetRfor2ndPose_V_Exact(const cv::Mat &v, const cv::Mat &P, const cv::Mat &R, const cv::Mat &t, std::vector< Solution > &ret)
cv::Mat quat2mat(const Quaternion &Q)
cv::Mat Xform(const cv::Mat &P, const cv::Mat &R, const cv::Mat &t)
void ObjPose(const cv::Mat P, cv::Mat Qp, cv::Mat initR, cv::Mat &R, cv::Mat &t, int &it, double &obj_err, double &img_err)
Quaternion(const cv::Vec3d &v, double s)
cv::Mat Point2Mat(const std::vector< cv::Point3d > &pts)
cv::Mat RpyMat(const cv::Vec3d &angs)
Quaternion Quaternion_byVectorAndScalar(const cv::Vec3d &vector, double scalar)
cv::Mat Mean(const cv::Mat &m)
Quaternion Quaternion_multiplyByScalar(const Quaternion &q, double scalar)
Solution(const Solution &s)
bool DecomposeR(const cv::Mat &R, cv::Mat &Rz2, cv::Mat &ret)