我有一个任务:
我们有一个系统工作,相机在人头周围做半个圆圈.我们知道相机矩阵和每帧的旋转/平移.(失真和更多...但我想首先没有这些参数工作)
我的任务是我只有相机矩阵,它在此移动时保持不变,以及图像(超过100).现在我必须逐帧进行平移和旋转,并将其与现实世界中的旋转和平移进行比较(来自我所拥有的系统,但仅用于比较,我也证明了它!)
到目前为止我做的第一步:
cv::Mat E = K.t() * F * K; //Found at the Bible HZ Chapter 9.12
现在我们需要用SVD从E中提取R和t.顺便说一句,camera1的位置只是零,因为我们必须从某个地方开始.
cv::SVD svd(E);
cv::SVD svd(E);
cv::Matx33d W(0,-1,0, //HZ 9.13
1,0,0,
0,0,1);
cv::Matx33d Wt(0,1,0,//W^
-1,0,0,
0,0,1);
cv::Mat R1 = svd.u * cv::Mat(W) * svd.vt; //HZ 9.19
cv::Mat R2 = svd.u * cv::Mat(Wt) * svd.vt; //HZ 9.19
//R1 or R2???
R = R1; //R2
//t=+u3 or t=-u3?
t = svd.u.col(2); //=u3 …Run Code Online (Sandbox Code Playgroud)