1.原理

参见单目标定基本原理

2.采集

2.1标定板的制作
  • 大小:应当使得标定板在图像中占比尽可能大一些。占图像长度比例应当超过1/3;如果实在无法保证标定板占图像比例比较大如果占比比较小,则需要尽可能多采集一些图像。
  • 平:标定板应当尽可能使理想平面。如果要求不是非常严格(比如重投影误差0.3即可),也可以用纸板(一般的标定板厂商做得即为此类);如果标定精度要求比较高,则需要用硬度较高的材料做标定板,在该标定板上打印涂层形成标定板)
  • 其他:matlab工具箱的标定板要求是横纵格点数目一奇一偶。需要注意的是,“上下左右黑白相交”点才算格点,也就是最外侧的一条与标定板白色背景相交的那一条线上的点不算格点。
2.2标定图像数目

如果标定板占图像的长度比例大于1/2,则标定图像数目在10-20张为宜。否则,如果标定板在图像中比较小(比如双目基线超过1米时),则应继续增加标定图像张数到20张以上,以免标定板。

2.3标定板的位置
  • 条件1
    如果以后需要采集数据的物体在相机前5米左右,那么标定板也放在5米是最好的。如果相机本身比较好/贵,则相机在消除畸变等方面做得很好,则可以不用太在意这一条
  • 条件2:应该让标定板处在图像中不同位置,包括上下坐下,以及四角都有一定程度涵盖,最后所有标定板叠加,结果看起来整幅图主要部分都被标定板覆盖了,而不能仅仅覆盖图像左侧或右侧,或者看重左上部分而忽略右下部分。这样主要避免主点偏向一侧时,该侧没有足够数据支持相机畸变模型。
  • 条件3:拍照时应当让标定板完全静止,避免图片放大后细节处有模糊,或左右相机因为没有硬件同步而导致所采图像不一致。
标定板的摆放朝向

各个标定板采集图像应该代表不同平面,比如在一个位置时可以左右偏航,上下俯仰;保持标定板平面与相机成像平面有一定一定倾斜夹角,但不要超过45度,以免角点检测失败。

2.4采集环境

为了精确定位标定板的格点,采集现场不能过曝过暗。光线以柔和为主、避免阳光直射,避免光照角度单一造成标定板上形成镜面反射。

3.标定过程

相机模型以针孔相机模型为主,如果镜头焦距很小,如鱼眼相机或球面相机,则可以用球面相机模型(也可用opencv fisheye来进行标定)
以下以针孔相机模型举例:

3.1 opencv 标定

对于opencv,应该先进行左右相机的calibrateCamera单目标定,然后再进行stereoCalibrate双目标定;

3.2 matlab标定工具箱

matlab 2014以后集成了一个标定工具箱(并非某论文作者自己开发的matlab标定代码),兼有单目标定、双目标定、立体矫正的功能。
注意使用时,打开skew,切向畸变的开关。
此外,应该先进行左右相机的单目标定,得到各自内参值,并将该内参值作为双目标定的初始值传入。

将双目标定完成后,
应该进行检查

  • 重投影误差,这主要是单目标定情况
  • 矫正结果,比如应该水平的线条是否水平,以及标定板对应位置是否在同一水平线上。
  • 检查外参,特别是基线长度是否和重投影的一致

4.矫正

采集代码示例可参照opencv的sample,包含普通相机和鱼眼相机两种矫正模型(注意opencv 鱼眼相机标定函数有一定问题,在Ubuntu14.04上OpenCV2.4.11和3.4上测试得到的结果都是错的)。
经过双目矫正后,左右视图的内参数都为一样的,新的矫正左右视图的图像需要采用统一的内参数,即opencv stereoRectify()得到的P2的左上角的3x3矩阵。同时,如果矫正是水平对齐,则baseline数值是P2的右上角的数值(fx⋅baselinefx \cdot baselinefx⋅baseline)除以fx。(ORBSLAM等直接使用P2右上角的fx*baseline.

双目标定(三)标定流程(含矫正)相关推荐

  1. 3D视觉(三):双目摄像头的标定与校正

    3D视觉(三):双目摄像头的标定与校正 对于双目摄像头而言,除了需要分别标定左目摄像头的内参矩阵K1.畸变系数D1.右目摄像头的内参矩阵K2.畸变系数D2,还需要标定左右目对应的旋转矩阵R和平移向量T ...

  2. 双目摄像头三种标定方式标定结果对比

    不同的人利用不同的方法对双目摄像头进行标定,总结起来包括如下三种,(1)利用matlab分别对左.右摄像头进行标定:(2)利用matlab同时对双目摄像头进行标定:(3)利用opencv对摄像头进行标 ...

  3. matlab棋盘格标定角点,相机标定(Camera calibration)Matlab——棋盘格标定原理,流程...

    计算机视觉----相机标定 相机标定概念:图像测量过程以及计算器视觉中,为确定空间物体某点的三维几何关系位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,模型的参数就是相机的参数.求解 ...

  4. matlab双目相机标定校正_双目相机的标定过程详解!-----MATLAB

    基于双目视觉的测距.三维重建等过程中的第一步就是要进行标定.双目相机的标定过程在网上有很多资料,但是基本都没有matlab官方网址讲的好.所以请参考MATLAB官方文档:https://ww2.mat ...

  5. OpenCV双目相机的标定C++

    代码来和数据集来自于"小白公众号" 链接:https://pan.baidu.com/s/1bYrj57MEdhwWp45XXVbdpA 提取码:b3m6 双目相机标定的过程: 1 ...

  6. zed相机拆机_机器人技术:ZED 双目相机内参标定方法

    今天在家总结了下标定 ZED 相机的步骤,方便开学后直接开整. 一.准备工作 一个 8x6 的棋盘标定板,边长 10.8 cm,因为标定用的是内部角点,所以实际打印出是 9x7 大小 保证一个 5m ...

  7. 双目相机的标定 python_六个步骤完成双目相机的标定,这么看来也不是很难嘛...

    机器视觉之halcon入门(40)-双目相机的标定 一个相机看到的是一张图像,只有二维信息,要想获取空间物体的三维信息,有一种常用的一种方法是:模拟人眼,用两个相机,就是所谓的双目相机.用相机总是少不 ...

  8. Halcon 圆形标定板标定基本流程-标定助手操作

    Halcon 圆形标定板基本流程 1. 认识标定板: 2. 生成标定板的描述文件 3. 开始标定 4. 采集标定板的图像 5. 得到相机内外参 1. 认识标定板: 这个标定板的规格是 7×7: 标定板 ...

  9. 相机标定(三)——手眼标定

    相机标定(一)--内参标定与程序实现 相机标定(二)--图像坐标与世界坐标转换 相机标定(三)--手眼标定 一.简述 手眼标定目的在于实现物体在世界坐标系和机器人坐标系中的变换. 在标定时,一般在工作 ...

  10. Ubuntu16.04安装ROS kinetic以及标定工具Kalibr流程

    Ubuntu16.04安装ROS kinetic以及标定工具Kalibr流程 一.安装ROS Kinetic 二.安装kalibr 编译期间可能遇到的问题及解决方案: 一.安装ROS Kinetic ...

最新文章

  1. 时间复杂度,O(1), O(n), O(logn), O(nlogn) 的区别+样例分析
  2. 勇敢的交流者在敏捷组织中的重要性
  3. linux怎么确认oracle已启动,怎么设置在Linux启动后,Oracle也启动,监听也启动
  4. Interviews(内连接,左外连接,分组、聚合)
  5. jdk 8 时区 转换_JDK 8 BigInteger精确缩小转换方法
  6. 《Python Cookbook 3rd》笔记(5.10):内存映射的二进制文件
  7. TMS320C55x之C/C++语言程序设计
  8. Mybatis系列(四)注解
  9. XZ_iOS iOS13浅色模式/暗黑模式导航栏颜色不自动适配
  10. svn代码量统计工具StatSVN的使用
  11. 基于JTT808协议的车联网网关中间件
  12. C语言练习实例——费氏数列
  13. JS eval json unexpected token :
  14. ubuntu linux 安装报错解决方法E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource tempo
  15. 不到 10 行代码完成抖音热门视频的爬取!
  16. Linux网络协议之旅,用西游记的故事串联整个网络世界(必看!)
  17. 【打开CMD的方法】
  18. 业务智能化成为电信运营业的总体发展趋势
  19. canvas-变换-scale(缩放)
  20. 【观察】数字中国的新机遇,神州数码的新角色

热门文章

  1. VPS常用网络测试工具
  2. 已经更CSS《一篇文章让你从HTML零基础入门前端开发》12.22
  3. 基于Python制作实现的推箱子小游戏
  4. 这几天加班熬夜把所有Python库整理了一遍,非常全面!
  5. 【R语言】预测模型最合适阈值Cutoff选取及其它指标计算
  6. 小胡时隔两年的第二篇Blog
  7. Base64 编码的特征
  8. EFI Driver Model(上)
  9. 查错集|No.1解决Undefined symbol xxx (referred from xxx.o)问题
  10. AspectJ自定义注解报错:error Type referred to is not an annotation type:xxx -----IllegalArgumentException