使用单应性估计摄像机角度

问题描述 投票:1回答:1

我一直在尝试根据两帧之间的单应性来估计无人机的欧拉角(Rotz(偏航)* Roty(螺距)* Rotx(横滚))。这意味着我必须将从每帧到上一帧的旋转乘以前一帧,以获得相对于初始轴的总旋转。因此:R_accumulated = R01 * R12 * ...这些R是从openCV中的decomposeHomography()获得的。根据REP和OpenCV单应性页面,相机参考是Z向前,X垂直和Y向下,但是我的UAV参考系统是ENU。问题是如何从R_累积了dron方向。

从单应性中累积的R_告诉您如何将一个平面转换为另一个平面。因此,如果我想使摄像机定向,则摄像机必须做相反的动作才能获得相同的结果(inv(R_accumulated))?然后,应该将相机方向矩阵转换为ENU坐标?我已经尝试过几次旋转来做到这一点,但是我没有得到好的结果。

我拥有的最好的方法是直接从R_accumulate获取角度并交换俯仰和横滚。这是一个很好的估计,但我仍然需要知道从摄像机框架到无人机的某种旋转矩阵。

我不知道你是否了解我。

opencv rotation orientation homography pose-estimation
1个回答
0
投票

最后,我已经解决了我的问题:

如果UAV轴与摄像机的轴不同,我们必须找到一个矩阵R1,该矩阵将UAV轴转换为摄像机的轴,而另一个矩阵则将相同的任务从摄像机轴转换为UAV轴,R2。 >

单应性返回应应用于第一个图片以获取第二个图片的平移和旋转值。但是我们想要相机的姿势,而不是图片的姿势。因此,例如,如果z轴指向具有向上箭头的对象,则IMAGE围绕该前向轴旋转90º将使箭头指向右方。但这不是相机为了使箭头指向右所要做的旋转。如果要使箭头指向右,则必须沿同一轴旋转相机-90º。总之,摄影机的运动是图像的逆,因此摄影机的旋转将是单应性旋转的逆,并且位移将是-1 *(homography_traslation)* scale_factor。

假设我们在初始图像和最终图像之间有一个旋转R。如果要获得无人飞行器的EulerAngles(最好称为Tait-Brian)作为Rotz * Roty * Rotx,则必须计算R1 * inv(R)* R2的EulerAngles。 R是帧之间所有中间旋转的乘积,因此R = Rinit * ... * Rend

© www.soinside.com 2019 - 2024. All rights reserved.