摘要以计算机视觉三维重建技术为研究对象,分析了开放计算机视觉函数库OpenCV中的三维重建模型,通过六个步骤,特别是摄像机标定和立体匹配中极线约束方法的使用,给出了基于OpenCV的三维重建算法。该算法充分发挥了OpenCV的函数库功能,提高了计算的精度效率,具有良好的跨平台移植性,可以满足各种计算机视觉系统的需要。关键词计算机视觉;三维重建;OpenCV;摄像机标定;极线约束,应、特征检测与匹配定位精度等,一般来讲,距离测量精度与匹配定位精度成正比,与摄像机基线长度成反比。增大基线长度可以改善深度测量精度,但同时会增大图像间的差异,增加匹配的困难程度。因此,要设计一个精确的立体视觉系统,必须综合考虑各方面的因素,保证各环节都具有较高的精度。2.6后处理[6]后处理包括深度插值、误差校正和精度改善。立体视觉的最终目的是恢复景物可视表面的完整信息,目前,无论哪种匹配方法都不可能恢复出所有图像点的视差,因此对于一个完整的立体视觉系统,必须进行最终的表面内插重建。3基于OpenCV的三维重建OpenCV[2]中采用的定标方法是介于传统定标方法和自定标方法之间的一种方法,由张正友在其论文[3]中提出的。这种方法不需要知道摄像机运动的具体信息,这点比传统定标技术更为灵活,同时仍需要一个特定的标定物以及一组已知的特征基元的坐标,这点不如自定标灵活。它通过在至少3个不同的位置获取标定物的图像,计算出摄像机所有的内外参数。由于它比传统定标技术更为灵活,又可以得到不错的定标精度,所以被OpenCV所采纳。在这个模型的定标过程中将用到的三个坐标系:图像坐标系,摄像机坐标系和世界坐标系。通过坐标系之间的变换可以通过下面的公式把图像坐标系的点和世界坐标系[7][8]:由于矩阵A包含了摄像机全部的6个内参数,所以称A为摄像机内参数矩阵。PC为模型的外参数矩阵,可以通过以下公式得到:三维重建中最大的难点也是最重要的部分就是立体匹配部分。在OpenCV中选用基于特征匹配中的极线约束方法[9]。假设空间一点P,它在两个摄像机成像平面上的投影点分别为P1和P2,如图3所示。其中,C1和C2分别为两个摄像机的中心,即摄像机坐标系的原点。在极线几何中,我们称C1和C2的连线为基线。基线和两摄像机成像平面的交点e1和e2分别为两摄像机的极点,它们分别为两个摄像机中心C1和C2在对应的摄像机成像平面上的投影坐标。P、C1和C2组成的三角平面称为极平面π。π和两个摄像机成像平面的交线l1和l2称为极线,一般称l1为点P2对应的极线,l2为点P1对应的极线,l1和l2互为对应极线。图3我们在极平面π上另取一点P′,从图中可以看到,它在两摄像机平面上的投影点为P1和P2′,其中,P2和P2′都在极线l2上。这就是极线约束,即当给定一点P1,它的匹配点一定出现在它所对应的极线上,由此,可以将我们的搜索空间压缩到一维的直线,即极线上。在OpenCV中可以先使用函数cvFindFundamentalMat()求出图像的基础矩阵,然后用把求得的基础矩阵代入函数cvComputeCorrespondEpilines()函数中求出一幅图像中的点在另一幅图像中的对应极线。求得极线后,对图像上沿极线方向上的像素点进行灰度相似性的匹配,能很方便的找出该点在对应图像上的匹配点。4实验结果基于上述原理和OpenCV的函数,利用VC6.0开发了一个全套的三维重建系统。通过上述的6个步骤最终还原出了物体的图形。程序经过严格的测试,运行稳定。在进行相机标定时,要注意的是:照片越多(至少3幅)计算的内外参数就越精确。而且其中任意两幅图像所对应的摄像机光轴不能是平行的。图4实验所用到的左右对应图像图5提取到的轮廓图6匹配过程(图中白点标记为一对对应点)图7点重建的效果图(使用OpenGL重建)5结束与展望三维重建视觉作为计算机视
,,一种基于OpenCV三维重建实现方案飞雪