1. 坐标系变换回顾

  • 首先世界坐标系通过旋转、平移矩阵变换为相机坐标系
  • 相机坐标系通过相似三角形(小孔成像原理),将相机坐标系转换为图像坐标系,这里利用的其实就是相机的焦距。
  • 最好利用相机内参,将图像坐标系转换为像素坐标系。

相机标定

相机标定的目的是为了获得相机的内外参以及畸变参数。

相机标定的流程

标定的过程

  • 1.打印标定板
  • 2.从不同角度对标定板进行拍摄
  • 3.用opencv接口检测标定板中的特征点(一般用的是方格,检测其角点)
  • 4.求理想无畸变情况下的内外参
  • 5.利用极大似然估计来迭代优化精度(用张正友标定法去求解内外参,其实是极大似然估计迭代求解的一个初始值,给定了初始求解参数,为了获取更精确的内外参需要用迭代法进行优化)
  • 6.利用最小二乘法求解径向畸变参数
  • 7.综合内外参、畸变参数,使用极大似然法,提升估计精度
  • 8 最好我们会计算得到相机的内外参和畸变系数

相机标定的trick

标定板图案
标定板图案我们一般用的是棋盘格,但我们其实不一定都要使用棋盘格,可以使用其他的图案。

  • 可以使用三维、二维,圆形,网格,随机图案。(如果用黑白棋盘格的话,检测角点会比较好检测;如果用的是圆形,它会检测圆心。Opencv这两种接口都有提供)
  • 一般选择使用平面物体的多个视角,而不是构造三维物体。

棋盘格角点个数和参数个数

  • 标定板的个数一般是越多越好,每张标定板的格子数多点。在不引入噪点的情况下
  • 总参数个数:四个相机内参($f_x,f_y,u_0,v_0$),5个畸变参数(k1~k3,p1,p2),3个旋转参数(每个坐标轴一个参数,能确定旋转矩阵),3个平移参数。
  • 假设棋盘格有N个角点,K个不同位置的图像
  • K个棋盘格提供2NK个约束,每个角点两个约束
  • 暂时忽略畸变参数:有4个内参,6个外参(在不同位置拍摄不同的图,旋转平移矩阵是不一样的,外参不相同)
  • 能够求解参数的前提: 2NK(约束) >6K +4,推出(N-3)*K>2 ,方程个数大于参数才可以求解
  • 单应性矩阵,通过4个点可以唯一确定,4个点便可以表达平面透视图,在4个方向伸展边
  • 不管棋盘格有多少个点,实际有用的只有四个有效的角点信息
  • K>1 ,至少需要拍摄两张棋盘格
  • 考虑到噪声和数值稳定性,需要使用更大的棋盘格,采集更多的图像
  • 为了更有效的效果,一般使用10张以上的,7*8或更大的棋盘格。采集更多的图,对这些图进行筛选,选择更有效的图片,对于噪声比较大的图像可以去掉。

如何评价相机的标定效果

评估重投影误差:
没有相机真实参数的情况下,评估相机标定的效果

  • 检测到的二维图像的角点,和真实世界的三维点的投影点之间的距离;
  • 使用标定得到的相机内外参,将三维世界点投影到像素坐标系中的二维点
  • 然后和算法检测到的二维图片的角点,计算均方误差RM
    我们会拿相机拍摄一张棋盘格,拍摄棋盘格会得到一张二维图像,二维图像上可以使用opencv的特征点检测算法,可以检测出二维图像的角点坐标A;另外,拍摄棋盘格我们知道它在世界坐标系的坐标,然后用我们求解到的相机内外参以及畸变参数,带到坐标矩阵变换中,通过计算求得棋盘格角点的坐标B。然后求解A,B的均方误差RMS
  • 平均的投影误差小于一个像素是可以接受的
  • 计算每张图的重投影误差,可以用来赛选去除误差较大的图片

    外参可视化
  • 以相机为中心点的标定板视图
  • 以标定板为中心的相机视图,对外参进行可视化
  • 相机固定,标定板移动,适合以相机为中心的视图
  • 反之,适合使用标定为中心的视图

观察畸变校正后的图片
-观察畸变矫正后的棋盘格,弯曲的线是否变直,适用于畸变比较明显的情况

如何改善相机标定的效果

  • 增加更多的图片

  • 标定板覆盖完全的图像,尤其是图像边缘、角点处畸变比较大的地方

  • 标定的图片需要足够的变化,不同角度,不同位置

  • 移除图片,对于噪声比较大的图片

  • 移除模糊的图片

  • 移除标定板相对于相机的倾斜度大于45度

相机标定(2): 单目相机标定总结相关推荐

  1. Ubuntu20.04 ROS读取basler相机图像步骤。MATLAB2021b标定basler单目相机

    运行环境:Ubuntu20.04(64-Bit) ROS版本:Noetic 网卡型号:Realtek RTL 8156外置网卡 相机型号:acA 1920-25gc (GigE接口) 驱动版本:pyl ...

  2. PanoSim仿真模型--传感器模型之单目相机

    目前,PanoSim 内置 7 类共 14 个传感器模型.传感器的一般化模型如图 5.22 所示. 图 5.22 传感器的一般化模型示意图 每一个传感器模型由三个重要部分构成:输入变量.模型的内外参数 ...

  3. OpenCV4每日一练day9:单目相机标定

    一.单目相机模型 二.OpenCV提供的相关函数 三.标定 准备文件: 运行(GIF动图) 最终标定结果: 附代码: #include <opencv2\opencv.hpp> #incl ...

  4. 机器视觉——单目相机模型(坐标标定以及去畸变)

    单目相机模型: 针孔相机模型的映射关系: 化为矩阵形式: 其中,中间的矩阵被称为相机的内参矩阵K.通常认为,相机的内参在出厂之后是固定的,不会在使用过程中发生变化.有点相机生产厂商会告诉你相机的内参, ...

  5. 单目相机内参标定的问题

    疑问: 一直有一个问题,就是单目相机标定的时候大都是移动标定板,固定相机不动,也没有说出个所以然来,但是为什么没有教程说固定标定板不动,移动相机呢? ------------------------- ...

  6. 基于OpenCV的单目相机标定与三维定位

    相机是产生图像数据的硬件,广泛应用于消费电子.汽车.安防等领域.围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等.目前大火的自动驾驶中相机也是重要的硬件组成,如环视 ...

  7. matlab单目相机标定

    文章目录 1.标定图片 2.标定 3.获取标定结果 使用matlab进行相机参数标定非常方便,相机畸变模型请参考另一篇文章相机内参与畸变模型,单目相机标定的结果就是得到相机内参与畸变系数. 1.标定图 ...

  8. 3.OpenCV可视化(Viz)——单目相机标定模拟

    单目相机标定模拟 基于OpenCV中的Viz模块,虚拟一个相机,设置相机的内参数.然后在相机视野下放置标定板,通过相机标定算法,最终再获取相机内参数. 当然最终相机标定还是存在误差,我猜测主要原因是标 ...

  9. python绘制黑白棋盘_生成黑白棋盘标定图和单目相机标定(python+opencv实现)

    学习记录. 事实上很早就接触过视觉定位这东西,但是到现在才返回头学习一下相机的标定,真是可耻啊!我把想法和过程记录一下. 相机成像 相机的成像原理--小孔成像 然而,在实际由于设计工艺问题.相机安装环 ...

最新文章

  1. 计算机网络课程复习大纲
  2. 小程序支持php版本是多少,小程序体验版本什么意思
  3. redis动态扩展内存
  4. 内存泄露和溢出的区别_Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子?...
  5. 【神经网络】神经元模型和感知器
  6. 欧盟 | 地平线 2020 ENSEMBLE:D2.13 SOTIF Safety Concept(上)
  7. 【和76】龙头企业在区域市场中竞合关系分析样例(温微观察13-6)
  8. 2022年重庆医院三基考试心血管系统疾病多选练习题及答案
  9. PHP经典实例读书笔记--变量
  10. 解决百度网盘下载限速 速度慢问题
  11. element-ui换肤,全局换肤
  12. java 历遍 类_[Java] 遍历指定包名下所有的类(支持jar) | 学步园
  13. java web argox打印机 用jna调用dll
  14. 拼写检查器的编写[转]
  15. 网络嗅探教程:使用Sniffer Pro监控网络流量 2
  16. nb移动udp_NB-IOT使用LWM2M移动onenet基础通信套件对接之APN设置
  17. 《TCP/IP协议族》:POP3协议
  18. TWAIN扫描识别工具v16.2正式发布,添加了新的API
  19. TortoiseGit工具 修改登录用户名密码
  20. 声学多普勒流速剖面仪_声学多普勒流速剖面仪(ADCP)的应用实例

热门文章

  1. 什么是IssS,PaaS和SaaS及其区别
  2. 分享一下身边朋友自学android开发及找工作的那些事!【不足勿喷】
  3. Freemarker模板生成排版缩进问题
  4. 卡巴斯基互联网安全套装(KIS)7.0官方简体中文版
  5. 如何使用burpsuite对网站进行暴力破解?
  6. 关于Halcon C++常用的两种数据结构Hobject和HTuple
  7. vsco和lr哪个好_vsco、泼辣修图、snapseed哪个好用?使用对比
  8. 天宇,snapseed,第六课,静物人像
  9. 吉林大学软院夏令营面试
  10. 测试开发之Django实战示例 第十章 创建在线教育平台