matlab摄像机校准工具箱是适用于使用matlab软件的摄像机校准工具箱。 此工具箱可以解决用户在使用中遇到的各种问题。 是一个非常实用的工具箱。 需要的朋友请立即下载到本网站。
如何使用matlab摄像机校准工具箱
用VS2012 OpenCV2.4.6编写的双目标定的程序(其实是奔跑的Samples ),实验结果一直不理想,在很多Blog中查询,在MATLAB标定工具箱中得到extrinsics和intrinsics矩阵
一、环境布局
将MATLAB标定工具箱解压缩到某个文件夹。 默认值为TOOLBOX_calib,将其存储在MATLAB\R2010b\toolbox下。 (我个人喜欢,可以放在其他地方。
2 .运行MATLAB并将文件夹TOOLBOX_calib的位置添加到MATLAB路径path中。 具体操作为: File-Set Path-Add Folder To Path,找到刚才存储的文件夹TOOLBOX_calib、save后立即确定。
二.档案配置
将所有要标定的板图放置在与文件夹TOOLBOX_calib中的. m文件相同的目录中。 (个人喜欢将左右摄像机的图像命名为left01.jpg或right01.jpg等的形状,容易观看,也支持后述的标定结果的保存)、OK、准备就绪,准备就绪。
三.单一目标
在Matlab命令行窗口中输入calib_gui
选择标准
单击Image names后,在命令行窗口中显示图像的basename和图像的格式(例如,你的图像文件名为right01、right02、right12、basename为right,图像格式例如
4 .然后返回主控制界面,单击提取网格坐标中心,提取每个图的角点。 单击可在命令行中显示以下提示: 主要让您输入棋盘角落的搜索窗口的大小。 加大窗户就更容易提取角落。 即使偏移也能找到,但请注意不要增大网格的大小。 通过点击回车选择默认设置即可使用这些选项。
5 .上一步Enter敲门后,跳出第一个棋盘格图,分别顺时针或逆时针单击棋盘格最外侧的四个内格点,其余角点将自动检测。
6 .选择四个角后,程序将提示在命令行窗口中输入标定板盘的size。 输入你棋盘的实际大小就可以了。 例如,如果我的棋盘格为24mm,则输入24。 这个步骤事实上相当重要,如果要定义空间尺度来测量物体,这个步骤是必须的。 Ender后,同时得到转角检测结果图。
7 .继续命令行窗口,按Ender键选择默认项目,跳出新标定板图像,以相同方式重复,检测转角完成12幅左视图。
8 .检测到所有图像后,单击Calibration开始摄像机校准。
9 .标定结束后,可以对各种结果进行可视化观察。 Show Extrinsic结果图表明,摄像机与标定板的距离约为1000mm左右,其中各色标定板与分析错误结果图的各误差结果相对应,其中红色(与第二张标定板图像相对应)误差较大,部分角点提取存在问题
11 .左摄像机校准的方法与右摄像机相同,在生成的Calib_Result.mat之后改名为Calib_Result_left.mat即可。
四.双目标定
1 .左右摄像机校准完成后,可以开始立体校准。 在Matlab命令行中输入stereo_gui以启动立体标定面板。
2 .单击loadleftandrightcalibrationfiles后,系统会提示您在命令行窗口中分别填写左右两侧的自校准结果。 如果要使用上面的文件名保存,请直接在Ender中选择默认文件名(Calib_Result_left.mat和Calib_resuure )
3 .加载成功后,可以启动运行串级激活。 run后的结果如下图所示,修正了左右摄像机的参数,还求出了两个摄像机之间的旋转和平移关系矢量[om和t]。 从结果可以看出,左右摄像机的Focal Length之间的差相当大,并且不知道如何影响后续视差图等的计算。
4.run成功后,可以看到标定的结果。 也可以直观地看出相机的相对位置相差很大。
图4 .图3平面图
5 .此外,Rectify the calibration images按钮现在可以获取所有修改的棋盘格图像,并将其直接导入OpenCV中进行匹配。 当然,我们需要得到其他物体和实时视差图。 另外,必须将相互标定结果写入OpenCV函数调用时支持的格式中。
五、问题探讨
1 .照相机的焦距应该一致吗?
答案是肯定的。 因为后续视差图转换为三维图时,q矩阵只有一个f值。 所以至少要求焦距很近。 并且立体图像的三角测量(出现在Learning OpenCV书中)的前提是fl=fr。 不知道是否理解。
2 .如何调整两个相机的焦距?
a .标定板放置在与两个摄像头相同的距离处,两个摄像头可以放在一起达到这个效果。 调节两个相机的焦距,使两个画面的清晰度相似。 (这是我咨询大恒图像技术支持的结果)
b .我想这样还是不行。 可以重新调整。 决定一次焦距,重新调整后再测量。 那样的话就麻烦了。
不知道有没有更好的方法。 我看了很多Blog,但没有看到与此相关的东西。 我不知道大家是怎么解决的。