学生姓名:呼沛璇
班 级:车辆2018-03班
指导教师:华春蓉
毕设题目:基于双目视觉的路面三维重建
一、概况
1.选题意义
视觉是人类认识世界的主要方式之一,人类通过眼睛摄取自然界中的信息,并传送到大脑进行处理,最终做出相应的举动,完成对世界的感知与同环境的交互。随着数字化时代的到来,计算机视觉的应用逐渐广泛,同时也成为研究的热点,计算机视觉技术为人们创造了机会的同时,也带来了诸多挑战。三维重建作为其中备受瞩目的方向之一,在诸多领域都有所应用。在工业上,其可用于文物保护、模具等逆向工程;在医疗上,其可用于对人体内部组织进行建模,以便医护人员找到最佳的治疗方案;在影视方面,其可用于3D制作、AR、VR等增强现实场景的真实感;在导航方面,其可使机器人、汽车等具有与人类相似的三维立体视觉,以便进行路径规划等自动化的功能。因此,三维重建技术具有十分广阔的应用前景和研究价值。
三维重建研究对象:学校南门行车路面、虹桥
图1 南门行车路面 图2 虹桥
2.任务分解
(1)相机标定与图像处理:使用Open CV工具库中相机标定功能对所用双目摄像机进行标定,确定其内外参数。
(2)图像处理、特征提取与立体匹配:对所拍摄图像进一步进行极线校正、畸变校正等处理;利用Open CV工具库对所拍摄的图像进行特征点的提取,以便进行后续的立体匹配。
(3)立体匹配:利用Open CV工具库与Visual Studio2019软件进行立体匹配,获得视差图。
(4)生成点云矩阵并对其进行处理:学习点云矩阵的生成与处理方法,由视差图像生成相应点云矩阵。
(5)完成模型重建。基于Visual Studio 2019、使用Open CV库、PCL 1.6.0点云库,完成对研究对象的三维重建。
(6)对生成的三维模型进行误差分析,找到产生误差的主要原因,并加以改进。
二、已完成工作
1.完成外文文献的阅读和翻译、论文框架构建和前四章的撰写;
查阅外文资料,并对《Accurate Multiple View 3D Reconstruction Using Patch Based Stereo for Large-Scale Scenes》、《Machine Perception of Three-Dimensional Solids》两篇文献进行翻译。
论文进展如图3所示,框选部分为已完成内容,未框选部分为后续撰写内容。
图 3 论文进展
2.完成试验台框架构建:
图 4 实验平台模块构成
3.完成双目相机的标定;
完成基于机器视觉的三维重建技术的第一步就是图像的获取,在图像测量过程中,建立相机成像的几何模型,能够确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,这个几何模型的参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就是相机标定。
标定和图像处理部分整体算法流程图:
图 5 标定和图像处理部分流程图
通过双目工业相机从不同方向拍摄标定板图像,首先进行角点的检测,利用亚像素精确化手段进行二次提取,然后通过二维坐标推算三维坐标,再使用Open CV工具库中的单目标定函数calibrateCamera以及双目标定函数stereoCalibrate对双目相机进行标定,获取内外参数矩阵、本征矩阵、基础矩阵以及左右相机相对应的旋转和平移向量,标定结果如下。
角点检测结果:
图 6 角点获取结果
左相机内参矩阵:
图 7 左相机内部参数
左相机图像平均误差
图 8 左相机图像平均误差
右相机内参矩阵:
图 9 右相机内部参数
右相机图像平均误差
图 10 右相机图像平均误差
整体平均误差
双目标定结果:
图 11 双目标定结果
4.完成相机图像的畸变矫正、极线矫正;
利用畸变方程,通过获取图像校正前图像坐标系下的二维坐标,将其转换到像素坐标系中,形成方程组,运用最小二乘法求解方程组,得到畸变系数。校正时选择Levenberg-Marquardt算法进行一个非线性最优化处理,减少畸变现象。相机畸变系数与校正前后对比图如下。
左相机畸变参数:
图 12 左相机畸变系数
右相机畸变参数:
图 13 右相机畸变系数
校正前:
图 14 校正前图像
极线校正、畸变校正后:
图 15 校正后图像
拍摄图片中的枕形畸变、图片倾斜已几乎被消除。
5.完成视差图象的生成,并根据实际距离对视差图像的结果进行评估;
图16 视差图 图17 随机点三维信息
Z轴数值的绝对值表示图像内物体到摄像机的距离(单位:像素),带入换算公式,与实验环境对比可知此视差图生成结果误差在10%以内。
6.改变图像样本数量和图像拍摄角度,对相机标定的最优解进行研究。
图 18 标定结果评估
【结论】:标定板尺寸规格应在25mm×25mm以上、角点数≤40为宜;标定所使用图片样本数量在15-20张效果最佳。
三、下一步工作计划
1.使用实验平台对虹桥进行照片拍摄,配合PCL点云库生成点云矩阵并进行后处理,完成三维重建。
2.总结实验结果,进行误差分析,完成后撰写毕业设计论文剩余部分。
问题一:对于不同情况下视差图质量的优劣是如何评估的?
回答:首先,通过肉眼进行初步判断,选出反映信息较为完全的视差图象;其次,运用算法对误匹配点对个数与视差平滑度进行检测与对比,找到最优的视差图生成方式。
问题二:所生成图片的用途是什么?
回答:通过使用标定板,配合Open CV工具库中的相机标定函数对三维重建所使用的双目摄像机进行内外参数矩阵的获取,该矩阵是后续三维重建的工作中需要的输入量,好的标定结果与精度能够大大减小路面三维重建最终的误差,达到更好的重建效果。
问题三:为什么要对虹桥进行三维重建?使用其他普通路面会不会更好?
回答:选择虹桥作为重建对象是因为该建筑有交大特色,能够很好的观察重建效果,同时具备了路面特征。但经过老师的指导,选择普通路面特征进行重建更加贴合选题,也符合汽车的使用工况,因此对普通路面进行重建会更好一些。
通过几个月的学习与实验,我的毕业设计任务已经完成了一大半,在此过程中我感受到了毕业设计不单单只是像课程设计一样按部就班的完成老师布置的任务,而是需要我从选择好题目开始就对题目进行全面的调研、分析、拆解与思考。
首先,我认为将老师所给的题目转化为自己的题目是保质保量地完成毕业设计的重要基础,通过不断地阅读文献、学习理论知识以及练习C++语言编程、Open CV工具库的使用,我逐渐能够从别人是如何分解项目、每一步做了什么转换到自己要怎么做、每一步做什么上来,能够利用树状图和流程图将解题的思路和步骤梳理清晰,完成从0到无穷大的转变;其次,毕业设计是对我们综合能力的全面考察,我的题目对机器视觉方向有所要求,而在此前我并没有学习了解过这个方向,所以良好的自学能力和实战能力就显得尤为重要;最后,养成总结归纳的好习惯也不可或缺,在完成毕业设计的过程中,我在看到有帮助的文献或代码思路时,都会把自己的想法用表格记录下来,方便以后的查看与实施。
在这几个月中,得益于指导教师和不同专业同学们的热心帮助,我在有困难的时候能够收获宝贵的意见和建议,使我通过不同的角度看待问题并且解决问题,顺利完成工作任务和中期答辩。
我将继续认真完成毕业设计的剩余内容,并且我也相信通过后续设计任务和论文撰写的训练,我的能力将会有新的提升。