目前运用过的单应矩阵实例,有2种:
2.1图像还原根据opencv函数findhomograph计算出来H,反向映射出原始图像与新图像的重合关系,主要功用是在Debug时查看H的计算效果,采用的函数是warpPerspective。
2.2评估空间关系,计算旋转矩阵和平移矩阵第二种才是运用的重点,利用计算出的H,结合opencv函数decomposeHomographyMat,反向计算两个图片对应物体间的旋转矩阵和平移矩阵,这里参考了两部分资料的计算结果,供三种结果:
a)采用opencv decomposeHomographyMat函数;
b) 采用基本的SVD分解法;
c) 开源库ORB-SLAM
ORB-SLAMhttps://gitee.com/paopaoslam/ORB-SLAM2
这里的推荐以下两个资料:
1)论文:Deeper understanding of the homography decomposition for vision-based control. 2007https://hal.archives-ouvertes.fr/file/index/docid/174739/filename/RR-6303.pdf
2) 文章:
单应矩阵分解https://blog.csdn.net/kokerf/article/details/72885435结合opencv的sample src:对于上一个博客的两个图片的计算结果:
采用solvePnp的原始计算结果:
采用基本的SVD算法的结果:
采用decomposeHomographyMa计算的结果,一共4种解:
最后是采用ORB-SLAM 计算的有效解,8个中一共2个Goodnum>0:
与资料的结果是一致的。
结论:1)分解H得到的R,其还是有一定误差的,而求出的t需要主要尺度上有缩放。
2)在基于PID算法进行路径导引时,还是具有收敛的,但是用于精度定位,不行。还是使用基于solvePnP的原理更靠谱,这也就是为什么视觉基于LandMark的导航运用的实例越来越多的原因。



