此文章参考如下博客:
http://blog.csdn.net/wangchao7281/article/details/52506691
感谢子非鱼大大提供的宝贵的理论知识和代码。
双目匹配的过程无非是包括双目相机的标定、矫正以及最后得出视差图这么几个步骤。具体的理论知识可以参考上文的博客地址中的讲述或者自行搜索。
1. 双目相机的标定
双目相机的标定我使用的是Matlab的APP,Matlab自带Stereo Camera Calibration工具,位置如下截图
点击下拉按钮,在图像处理和计算机视觉中找到Stereo Camera Calibration模块并打开它,点击Add images按钮,分别把左右相机拍摄的图片传入Matlab中,其中的Size of checkerboard square的大小是标定板的方格的长度,单位是mm。
之后Matlab就会自动识别角点,点击上方菜单栏的Calibrate就会自动计算相关的参数,点击Export Camera Parameters之后就会把相关的参数Matlab的工作区,在这里就可以查看相关的参数了。
红色方框圈起来的是左右相机的各种参数,点进去之后可以看到相机的内参数以及畸变参数等等,红色箭头指向的是旋转矩阵,蓝色箭头指向的是平移矩阵。
至此标定部分全部完成,具体的参数可以直接在Matlab的工作区中查看即可。
2. 双目相机的矫正
在步骤1中,我们通过标定得到了相机的各种参数,现在把它传入OpenCV。代码如下
Mat cameraMatrixL = (Mat_<double>(3, 3) << 1.289608025726931e+03, 0, 6.437248258682027e+02,
0, 1.290358173802592e+03, 5.321046969048958e+02,
0, 0, 1);
Mat distCoeffL