双目标定
这篇帖子讲得是使用opencv的双目标定(含代码)
https://blog.csdn.net/lolo199611015513/article/details/109486838?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-6&spm=1001.2101.3001.4242
这篇帖子是讲如何使用matlab的工具箱进行标定
https://blog.csdn.net/u013011415/article/details/44907479
另一篇matlab双目标定的帖子
https://blog.csdn.net/leonardohaig/article/details/81254179
这篇帖子是英文的,很详细,但是可能要花点时间来看。
http://www.vision.caltech.edu/bouguetj/calib_doc/index.html#examples
双目立体标定的帖子
https://blog.csdn.net/bestrivern/article/details/88397555
介绍函数StereoRectify函数的使用和参数
https://blog.csdn.net/qq_41685265/article/details/105777229
立体校正函数 stereoRectify()
stereoRectify() 的作用是为每个摄像头计算立体校正的映射矩阵。所以其运行结果并不是直接将图片进行立体矫正,而是得出进行立体矫正所需要的映射矩阵。
调用方法,
void stereoRectify(InputArray cameraMatrix1, InputArray distCoeffs1,
InputArray cameraMatrix2,InputArray distCoeffs2, Size imageSize,
InputArray R, InputArray T,OutputArray R1, OutputArray R2, OutputArray P1,
OutputArray P2, OutputArray Q, int flags=CALIB_ZERO_DISPARITY, double alpha=-1,
Size newImageSize=Size(), Rect* validPixROI1=0, Rect* validPixROI2=0 )
cameraMatrix1-第一个摄像机的摄像机矩阵
distCoeffs1-第一个摄像机的畸变向量
cameraMatrix2-第二个摄像机的摄像机矩阵
distCoeffs1-第二个摄像机的畸变向量
imageSize-图像大小
R- 旋转矩阵
T- 平移矩阵
R1-输出矩阵,第一个摄像机的校正变换矩阵(旋转变换)
R2-输出矩阵,第二个摄像机的校正变换矩阵(旋转矩阵)
P1-输出矩阵,第一个摄像机在新坐标系下的投影矩阵
P2-输出矩阵,第二个摄像机在想坐标系下的投影矩阵
Q-4*4的深度差异映射矩阵flags-可选的标志有两种零或者 CV_CALIB_ZERO_DISPARITY ,如果设置 CV_CALIB_ZERO_DISPARITY 的话,该函数会让两幅校正后的图像的主点有相同的像素坐标。否则该函数会水平或垂直的移动图像,以使得其有用的范围最大alpha-拉伸参数。如果设置为负或忽略,将不进行拉伸。如果设置为0,那么校正后图像只有有效的部分会被显示(没有黑色的部分),如果设置为1,那么就会显示整个图像。设置为0~1之间的某个值,其效果也居于两者之间。
newImageSize-校正后的图像分辨率,默认为原分辨率大小。validPixROI1-可选的输出参数,Rect型数据。其内部的所有像素都有效validPixROI2-可选的输出参数,Rect型数据。其内部的所有像素都有效
映射变换计算函数 initUndistortRectifyMap()
该函数功能是计算畸变矫正和立体校正的映射变换。
调用方法,
void initUndistortRectifyMap(InputArray cameraMatrix, InputArray
distCoeffs, InputArray R,InputArray newCameraMatrix, Size size, int
m1type, OutputArray map1, OutputArray map2)
cameraMatrix-摄像机参数矩阵
distCoeffs-畸变参数矩阵
R- stereoCalibrate() 求得的R矩阵
newCameraMatrix-矫正后的摄像机矩阵(可省略)
Size-没有矫正图像的分辨率
m1type-第一个输出映射的数据类型,可以为 CV_32FC1 或 CV_16SC2 map1-输出的第一个映射变换map2-输出的第二个映射变换
几何变换函数 remap()
调用方法,
void remap(InputArray src, OutputArray dst, InputArray map1, InputArray
map2, int interpolation,int borderMode=BORDER_CONSTANT, const Scalar&
borderValue=Scalar())
src-原图像
Q矩阵的解释
https://zhuanlan.zhihu.com/p/31990359