代码贴:双目测距--5 双目相机 联合 YOLOv8_爱钓鱼的歪猴的博客-CSDN博客
0、图片筛选
可以用matlab,对双目图像做个一个筛选,也就是做双目标定。
熟悉matlab的小伙伴完全可以用matlab做双目标定,我是没咋接触过不知道怎么导出标定结果,所以我只是用其做图片筛选,然后用OpenCV标定,因为后续开发也是OpenCV
所有图像双目标定,可以看出有几对图像的误差比较大
剔除这些图像对,再次标定查看下
1、单目标定(张友正标定法)
获得左相机、右相机的cameraMatrix(内部参数值)、disCoeffs(畸变矩阵)
2、双目标定
固定左右相机的内部参数值、畸变矩阵,求R (右相机坐标系相对于左相机坐标系的旋转矩阵),T(右相机坐标系相对于左相机坐标系的平移动向量), E(本征矩阵), F(基础矩阵)
进一步求得畸变矫正、立体矫正所需的映射矩阵,以及深度差异映射矩阵Q
原图:
畸变矫正、立体矫正后:
画横线检查是否行对准,验证矫正质量
3、获取深度图并使用yolov8进行目标检测
利用双目标定结果,对左右相机图像进行畸变矫正、立体矫正,此时两相机共面且行对准。
利用SGBM立体匹配算法获取视差图,并进一步获得图像每个像素的深度信息(深度图)
yolov8对矫正后的左相机图像进行物体检测,目标框中心点的深度值即为距离
其他:
stereoRectify() flags参数设置
原图
flags-设置为CV_CALIB_ZERO_DISPARITY
flags-设置为0
flags-设置为-1