正在使用已找到的内部和外部参数校正opencv上的图像

正在使用已找到的内部和外部参数校正opencv上的图像,opencv,computer-vision,camera-calibration,disparity-mapping,Opencv,Computer Vision,Camera Calibration,Disparity Mapping,我在Matlab上运行了Bouguet的校准工具箱(),并获得了校准的参数(内在[焦距和主点偏移]和外在[棋盘相对于相机的旋转和平移]) 我的图像上棋盘格的特征坐标点也是已知的 我想获得校正后的图像,这样我就可以从每对校正后的图像中制作一个视差图(我有相应的代码) 我怎样才能做到这一点呢?文档已经准备好了。最后,它写道“将这些值作为常量添加到程序中,调用和函数以消除失真,并使用廉价低质量的摄像头享受无失真输入” 一旦你的相机被校正,你可能会对课程感兴趣,或者想要得到视差图。如果要检查结果在3D中

我在Matlab上运行了Bouguet的校准工具箱(),并获得了校准的参数(内在[焦距和主点偏移]和外在[棋盘相对于相机的旋转和平移])

我的图像上棋盘格的特征坐标点也是已知的

我想获得校正后的图像,这样我就可以从每对校正后的图像中制作一个视差图(我有相应的代码)

我怎样才能做到这一点呢?

文档已经准备好了。最后,它写道“将这些值作为常量添加到程序中,调用和函数以消除失真,并使用廉价低质量的摄像头享受无失真输入”

一旦你的相机被校正,你可能会对课程感兴趣,或者想要得到视差图。如果要检查结果在3D中的外观是否良好,请在完成后使用。

如果完全校准使用:两个摄像头具有相同的方向,共享相同的R

新R的第一行是基线=两个摄影机中心的减法。基线与旧左z轴的第二行叉积(3行R_旧左)。前两行的第三行叉积

使用H_左=p_新(1:3,1:3)*p_旧=p_左(1:3,1:3)^-1和H_右=p_新(1:3,1:3)*p_旧=p_右(1:3,1:3)^-1扭曲图像


校正后的左像素坐标为u_new=(h11*u+h12*v+h13)/(h31*u+h32*v+h33),v=(h21*u+h22*v+h23)/(h31*u+h32*v+h33),与右像素坐标相同

你能看看我的代码吗?由于某种原因,立体矫正不起作用。。。也许值得注意的是,我没有使用立体相机。这只是一个摄像头,图像是在摄像头相对于场景移动的情况下拍摄的。在这里仍然适用吗?校准参数是用Bouguet工具箱找到的。我不认为你可以用两个普通摄像机来使用立体校正,但我不确定。检查是否可以使用一些束调整或运动技术的结构。你说的两个“通用”相机是什么意思?这只是一个摄像头,两个图像来自于一个摄像头。通过使用立体校正参数CameraMatrix X1=CameraMatrix X2和distCoeffs1=distCoeffs2,难道不可能将来自一个摄像头的两个图像视为立体对图像吗?顺便说一句,谢谢你的帮助。