仅针对旋转计算Homography Matrix

时间:2015-05-04 05:39:56

标签: opencv rotation computer-vision affinetransform homography

参考paper我试图计算相机相对于测试图案的方向。测试模式看起来像

this 当相机垂直于测试图案平面观看时。从未知方向查看时,测试图案看起来像

this fitted with an ellipse

我能够计算x(alpha)和y(beta)轴周围的角度。现在我需要校正测试图案以获得绕z(伽马)轴(相机的光轴)的旋转角度。这是通过将测试图案图像围绕x和y旋转α和β的负值来完成的。那么如何将单应矩阵仅用于旋转。我经历了virtual camera rotationwiki link。虚拟摄像机旋转代码产生良好的结果,但取决于摄像机距测试模式的距离,在我的情况下是未知的。我通过仅传递旋转矩阵来尝试cv::warpPerspective,但结果很奇怪。

1 个答案:

答案 0 :(得分:1)

由于你的模式没有破坏其对称性的特征,所以问题显然只能解决90度以上的旋转以及关于模式轴和其中心的对称性。

有了这个警告,你可以使用DLT算法,使用模式的中心和轴与边界之间的4个交点进行直接单应性估计。您可以任意将这些图像点分配给点r *(0,0),r *(1,0),r *(0,1),r *( - 1,0),r *(0,-1)你的模式,r是它的半径长度。

一旦估算了单应矩阵H,就可以在右三角矩阵R的乘积R * Q和您所需的旋转平移矩阵Q中对其进行分解。有关相位校准,请参阅Zhang's paper细节。