本文主要是介绍基于opencv实现双目立体匹配点云距离,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
双目相机或两个单目相机。
一、相机标定
MATLAB软件,打开双目标定app。
点击add images,弹出加载图像的窗口,分别导入左图和右图,设置黑白格长度(标定板的长度一般为20)。
点击确定,弹出加载好的图像。
在菜单栏勾选2 Coefficients(鱼眼相机勾选3 Coefficients)、Tangential Distinction,点击Calibrate,显示误差。需要标定误差小于0.1,这样距离才能更准。若误差较大,删除导致误差较大的图片,重新计算,保证图片数量在30张左右。
最后导出标定数据。
左相机内参矩阵:
stereoParams.CameraParameters1.IntrinsicMatrix的转置
左相机畸变矩阵:
[stereoParams.CameraParameters1.RadialDistortion, stereoParams.CameraParameters1.TangentialDistortion, 0]
右相机内参矩阵:
stereoParams.CameraParameters2.IntrinsicMatrix的转置
右相机畸变矩阵:
[stereoParams.CameraParameters2.RadialDistortion, stereoParams.CameraParameters2.TangentialDistortion, 0]
两个相机间的旋转矩阵:
RotationOfCamera的转置
两个相机间的平移矩阵:
TranslationOfCamera
二、安装opencv_contrib(用在WLS滤波)
2.1 C++平台
opencv和opencv_contrib版本需一致!
opencv下载地址:https://opencv.org/releases/
opencv_contrib下载地址:https://github.com/opencv/opencv_contrib/releases
cmake下载地址:https://cmake.org/download/
打开cmake,添加文件路径。
点击Configure。配置编译器,选择对应其的编译器版本和编译平台版本,再点击finish,cmake将会自动编译文件。
找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”这两个变量,在变量后面的方框内打上“√”。找到“OPENCV_EXTRA_MODULES_PATH”变量,选择opencv_contrib安装包里的modules文件夹。
打开C:\Windows\System32\drivers\etc\hosts (需要使用管理员权限打开),
追加199.232.68.133 raw.githubusercontent.com如下:
重新Configure、Generate,一路白色!
2.2 python平台
pip install opencv-contrib-python
三、效果
Fig1. 左图
Fig2. 右图
Fig3. 视差图
Fig4. 深度图
这篇关于基于opencv实现双目立体匹配点云距离的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!