双目立体匹配与三维重建在计算机视觉中占据着重要地位,能够实现从一对立体图像中恢复出三维场
景的几何信息。本文基于网上开源代码进行修改,以实现基于特征点和 OpenCV 立体匹配算法的三维
重建及显示。修改后的代码适用于 VS2015 Debug win32 版本,并且已经完成了 OpenCV 相关配置
,无论电脑中是否配置 OpenCV 都可以运行。
本文首先介绍了操作步骤,需要将 Reconstuction3d bin 中的所有 dll 拷贝到 C: windows
sysWOW64(或者 system32,根据电脑版本决定)目录下。接着双击打开 Reconstuction3d.sln
工程,在运行后即可得到结果。
文章接着详细解释了程序的结构和功能。Reconstuction3d.cpp 是程序的主函数,cvFuncs.cpp
包含了特征点三维重建的算法,包括 SIFT、SURF、FAST 等算法,而 cvFuncs2.cpp 则是视差图三
维重建的算法,包含 BM、SGBM 等算法可选择。特征点三维重建的流程包括特征提取、特征描述、特
征匹配、三角测距计算点云和原图像三角剖分等步骤。视差图三维重建的流程则包括获取稠密视差图
、三角测距计算点云和原图像三角剖分等步骤。
在讨论标定方面时,文章推荐了使用 MATLAB 手动标定工具箱进行双目标定,尽管 MATLAB 自动标定
精度较低。文章也提到了精度问题,对于精度要求不高且相机畸变不大的情况,可以直接使用未校正
的图像进行处理。对于精度要求较高的情况,则需要进行图像校正和获取平行校正后的有效焦距等复
杂操作。
此外,文章还提到了关于特征点的设置和调整。通过修改 cvFuncs.cpp 开头的 DETECTOR_TYPE、
DESCRIPTOR_TYPE 和 MATCHER_TYPE 参数,可以调整程序的特征提取、特征描述和特征匹配算法
。程序设定了描述子匹配的阈值进行粗筛选,并利用 RANSAC 算法获取单应性矩阵后进行精确筛选。
最后,文章提到了 MATLAB 点云的显示方法,程序运行后会生成 pointcloud.txt 文件,可以通过
MATLAB 进行显示。文章给出了两种显示方法,一种是点显示,另一种是面显示,通过输入相应的
MATLAB 代码即可实现。
本文通过详细解释程序的结构和功能,展示了双目立体匹配与三维重建的实现过程。介绍了操作步骤
、程序详解、标定、精度、特征点设置等相关内容,帮助读者了解并运行该程序。通过修改代码和参
数,读者可以根据自己的需求进行定制化的三维重建。该程序的开源特性和便利性使其具有广泛的应
用前景,可以在计算机视觉、虚拟现实等领域发挥重要作用。