Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ findHomography()中矩阵的单应分解_C++_Opencv_Computer Vision_Homography_Rotational Matrices - Fatal编程技术网

C++ findHomography()中矩阵的单应分解

C++ findHomography()中矩阵的单应分解,c++,opencv,computer-vision,homography,rotational-matrices,C++,Opencv,Computer Vision,Homography,Rotational Matrices,我用它作为基础来检测场景中的矩形目标。我使用圆球和法兰匹配器。我已经能够使用findHomography()和perspectiveTransform()函数成功地绘制场景中检测到的目标的边界框。 参考图像(img_object在上述代码中)是仅矩形目标的直视图。现在,场景图像中的目标可能向前或向后倾斜。我想知道它倾斜的角度。我读过各种帖子,得出结论,findHomography()返回的单应可以分解为旋转矩阵和平移向量。 我使用了代码从推荐的翻译成C++。这是从OpenCV的摄像机标定模块得

我用它作为基础来检测场景中的矩形目标。我使用圆球和法兰匹配器。我已经能够使用
findHomography()
perspectiveTransform()
函数成功地绘制场景中检测到的目标的边界框。
参考图像(
img_object
在上述代码中)是仅矩形目标的直视图。现在,场景图像中的目标可能向前或向后倾斜。我想知道它倾斜的角度。我读过各种帖子,得出结论,
findHomography()
返回的单应可以分解为旋转矩阵和平移向量。 我使用了代码从推荐的翻译成C++。这是从OpenCV的摄像机标定模块得到的Zhang SVD分解代码。我从O'Reilly的学习OpenCV的书中得到了这个分解代码的完整解释。
我的问题是:

  • 假设得到的分解旋转矩阵将告诉我目标倾斜的角度,我的假设正确吗
  • 其次,我可以使用中从
    findHomography()
    获得的单应性作为该分解模块的输入,并期望得到正确的输出吗?还是我遗漏了什么
  • 有没有其他方法可以达到同样的效果
  • 最后,我在移动平台上编码,所以我也关心性能。如果你能给我指出正确的方向,我会很高兴的


    提前感谢您的时间和回复。

    张的校准程序将生成旋转矩阵。这可以表示为3个(欧拉)角,而不是一个。或者,等价地(通过罗德里格斯公式),作为一个单位向量和围绕该向量的旋转角,也就是三个数字


    除非您的相机和目标非常小心地相互定位,否则没有理由期望只有一个非零旋转角度。

    为什么不使用已知参数(比例、平移、旋转和透视参数)创建您自己的单应性,并尝试在这样的矩阵上进行分解?您将看到是否将提取正确的参数。问题不在于单应性分解。我相当确信它工作正常。我想知道的是,在我的情况下,我可以给出findHomography()返回的单应性吗在将球体检测应用于该模块后?旋转矩阵是否会给出目标旋转的角度?谢谢你的回答。我可以理解,在其他两个轴上也会有小角度值。你能详细说明罗德里格斯公式吗?目标会向相机移动或远离相机。因此,该旋转matrix也能给我这个旋转?关于Rodriguez的公式,请参见维基百科:-OpenCV有代码来进行旋转矩阵的转换。我不明白你的第二个问题:与朝向或远离摄影机的运动相关的旋转?这是平移,不是旋转。对不起,我不清楚。通过向前/向后倾斜或朝向/远离摄影机,我的意思是我的目标在opencv轴系统中围绕x轴旋转,如中所示,这意味着我将在该轴上旋转。是的,在这种情况下,轴角度表示是平行于x轴的向量,角度表示绕其旋转,逆时针w.r.t.轴时为正值(如“眼睛盯着箭头,脚放在羽毛上”)。但是,在实践中,轴不会完全平行于相机x轴,除非您非常仔细地制作了这样的设置。