OpenCV单目平面测距

单目测距广泛运用于车辆道路障碍物识别、机器人导航等领域,是计算机视觉中的重要技术之一。

众所周知的是,图像中的像素坐标只提供了二维信息,而空间坐标是三维信息,因此只能让空间坐标中的一维为0或固定值,才可以测得平面距离信息,因此单目测距主要是针对空间中的平面坐标。

摄像机模型如图1所示:

图1 摄像机模型

 

由摄像机模型,可知

                                                                   

令Zw=0, 则摄像机和世界坐标系的位姿关系如下:


                                                                      

由式(1)、式(2)可得:

                                                       

Zc可看为缩放因子, 因此式子可转为

 

      因此只要知道单应性矩阵H,就可知道图像点和空间平面之间的关系,而这个求解过程,OpenCV已经给出了相应的求解函数cvGetPerspectiveTransform,同时也给出了转换函数cvWarpPerspective。

标定实验:

由于资金紧缺,没有车和机器人,而幸好的是这些只是应用平台,算法独立于平台,因此实际标定只需要一个摄像机即可。

标定图像中的正方形为5cm  X  5cm, 如图2所示:

图2 标定图像

 

正方形的底部中心与地板砖的线对齐重合,将其对应到图像底部中心,将它设为原点,用50像素对应5cm的边,即10:1 ,透视变换效果如图3所示:


                                                                           图3透视变换效果图

测距试验:

      求地板砖线到本子的距离,测试图如图4所示:

图4  测试图

       透视效果图, 如图5所示:

图5 透视效果图

       测得透视效果图线到本子的距离为210像素,即21cm, 与测试图中的尺子所测距离 一致。

      由此完成OpenCV单目平面测距的功能,此功能可应用于各种平面测距的应用。

      对于OpenCV求解单应性矩阵,请看下一章OpenCV透视变换源码解析。

 

 

 


没有更多推荐了,返回首页