为了提高单目相机标定的精度,认真看了张正友标定法的原文,并且学习过网上一些牛人的方法,但是大部分时候说的很笼统,自己把这些经验总结起来并都测试了一下,感觉靠谱的结论列出如下:

(1)在标定时,标定模板所在平面与成像平面(image plane)之间的夹角不能太小,实验表明:当两者之间夹角较小时,会产生很大的误差。

(2)图像中标定板与相机的相对位姿,一般要让标定板占据整张图像的一半左右面积,并且标定板相对于相机要有正视、仰视、俯视、左斜视和右斜视等;
(3)标定板的位姿对标定结果影响比标定照片数目的影响大得多;
(4)标定板一定要平整,否则误差很大,标定板的平整度是最重要的因素;
(5)用于拍摄的照片的先后顺序对结果影响不大,小数点后前五位都是一样的,随机抽掉一张结果影响也不大;
(6)按照张正友标定法原文,拍照顺序是从正对图像开始,每次选择一个坐标轴,旋转45度的角度,拍摄16幅左右的图片就可以,但是感觉可以角度小一点;

-----------------------------------分割线------------------------------
    列出当时自己实验时的拍摄角度方案,这七个方案拍摄标定出来的结果去畸变都没问题,但是光心的位移有一点不同,都往右下方向偏移但是偏移量不同,后来总结效果最好的方案应该 是方案 六,但是优势并不明显。如果以后有人想做这个实验,可以先看看我的不成功案例,也许可以节省时间。

方案一:三组,正视14张、仰视14张、俯视14张,所有照片仅相对水平轴旋转,正视照片占相机视野四分之三,俯仰视照片占相机视野四分之一,每组内的14张照片是划出了一个矩形的轮廓,中间2张,四周12张;
方案二:三组,正视14张、仰视14张、俯视14张,正视照片无转角(无任何旋转),仰视和俯视的照片成扇面状对着相机(既绕水平轴又绕铅垂轴),正视照片占相机视野四分之三,俯仰视照片占相机视野四分之一,14张照片是划出了一个矩形的轮廓,中间2张,四周12张;
方案三:其他与方案二一致,只是仰视和俯视的照片成楔子状对着相机;
方案四:三组,正视14张、仰视14张、俯视14张,正视、仰视和俯视的照片全部成扇面状对着相机,正视照片占相机视野四分之三,俯仰视照片占相机视野四分之一,14张照片是划出了一个矩形的轮廓,中间2张,四周12张;
方案五:其他与方案四一致,只是正视俯视仰视照片成楔子状对着相机;
方案六:先拍四张正视,然后左远右近(就是标定板的左边离相机远右边离相机近,下同)四张,左近右远四张,上远下近四张,上近下远四张——既不是楔子型也不是扇面形。
方案七:长轴中线上,均匀变换角度,拍9张,短轴中线上,均匀变化角度,拍9张,然后四个角各补一张。共22张。
--------------------- 
版权声明:本文为CSDN博主「Witnesses」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zilanpotou182/article/details/68491447

参考链接:https://blog.csdn.net/lxy_2011/article/details/80675803

在传统的相机模型中共有 4 套坐标系:世界坐标系是物体点 p 的三维世界坐标,是由用户自己定义的;相机坐标系 是以相机光心为原点,以垂直于图像平面的相机光轴为 zc轴,xc轴和 yc轴平行于图像平面;图像的物理坐标系 和 分别为像上显示的坐标和畸变矫正后的像点物理坐标;(u,v)为像点的像素坐标系。空间物点 pw到像点 pd的转换就通过这 4 套坐标系经过 3 次转换而得来的[4]。根据理想的小孔成像模型,可表示为:

式(1)中:dx、dy 分别为感光器件上 x 和 y 方向上像素点间的距离;u x 和 y 方向的有效焦距,其单位是像素。r 为世界坐标系到相机坐标系的 3×3 矩阵。t 为世界坐标系到相机坐标系的唯一平移向量。

考虑到一般性,在张氏标定方法中设计了平面靶标,即,z=0,记单应性矩阵

,又可以写为:

单应性矩阵 h 把靶标上的点同图像上的点联系起来,h为 3×3。每一幅图像都最多只有一个单应性矩阵。一个单应性矩阵可以从 4 组((x,y,z)和对应的(u,v))坐标对中产生多达 8 个参数。利用从不同视场拍摄多次拍摄(理论上至少两次)图片计算出多个单应性矩阵,利用最小二乘原理可以计算出相机的内外部参数[5]。有了准确的单应性矩阵 h 才能进一步计算相机的内外部参数。

2 影响标定精度的因素分析

2.1 标定板的测量误差及特征点的提取对标定精度的影响

对一幅图像上的 i(i=1,2,3,4,…)个特征点有(2)式,从中可以看出,特征点的提取精度和世界坐标的测量精度都会对单应性矩阵的计算造成影响,通常特征点会远远大于 4 个,因此以上方程组不相容,不存在通常意义下的解,通常取最小二乘解。即令

可求得单应性矩阵一个 h。特征点(u,v,0)、标定板上角点世界坐标(x,y,z)都会对计算结果产生直接的影响[6],每一幅图像上特征点的数量将影响到每个单应性矩阵的求解精度。

2.2 图像数量对相机标定精度的影响

在该标定方法中要求每一幅图片都从不同的角度去拍摄,即一幅图片就是一个视场,能唯一确定一个单应性矩阵 h。图片的数量即 h 的数量。在由单应性矩阵求解相机内外参数的过程中,h 的数量同样会影响到标定的精度。不考虑畸变的情况下,相机参数共有 9 个,而一个单应性矩阵仅能确定 8 个自由度,因此标定至少需要 2 幅不同视角的图像。为了获得稳定的数值结果,通常采集的图片数量会远远超过次数。如果采集图像不足,明显会对内部参数计算带来一定的误差,但采集图像过多一方面影响标定的精度,另一方面也会造成误差累积,增加错误概率。因此合适图像数量必须加以考虑。

3 仿真及验证

为了进一步准确分析影响相机标定精度的因素,采用计算机模拟和真实图片相结合的办法对主要因素影响做逐项分析。为此以 vc++6.0 和 opencv 为工具编写了仿真软件和标定程序,以模拟相机的投影过程和实现标定。

3.1 仿真分析

(1)图片数量对标定精度的影响。

实验以特征点的重投影误差为主要的衡量标准。假设模拟相机的内外部参数为(像素): 、。畸 变 系 数,k1=-0.043275,k2=0.031404, 。实验中通过设置相同的相机内部参数和多组(40 组)不同的外部参数,投影生成 40组不同的特征点,也即相当于 40 幅不同的图片。从此 40 组特征点中不同组数进行标定相机的内外部参数,得有效焦距随标定图像数量之间的变化曲线。

可见在不考虑(在仿真实验中没有)特征点提取误差和世界坐标测量误差的时,图片数量为 11-15 时,相机内部各个参数基本保持稳定。纵向有效焦距和横向有效焦距都在 2 个像素内波动,测量值基本接近仿真设定的真实值,误差小于 1‰。

(2)标定板世界坐标精度的影响。

制作标定板时,往往都假设打印的黑白棋盘格是等边长的[7]。但是由于普通打印机不够精确,造成了测量标定板的误差。因此有必要研究世界坐标的测量精确程度对标定造成的影响。在上述实验中产生的 40 组特征点中任取 20 组,做相机内外部参数标定。标定时在世界坐标中加入期望为 0、均方差不同的高斯噪声,噪声均方差水平与总投影误差(单位:像素)的关系如下图。

得到重投影误差和噪声误差之间的变化曲线,如图 2。重投影误差随噪声均方差水平的增大而迅速增大,标定结果对世界坐标非常敏感。为了进一步提高标定精度需要提高平面靶标的测量精度,或提高打印精度。当误差水平小于 1.5%时,重投影误差小于一个像素。当误差水平大于 2%时投影误差则迅速变大。

3.2 实际检验

以理光 grdⅲ型定焦相机为标定对象。该型相机有效像素达 1000 万,最高分辨率 3648×2736。实验所用标定靶标为600×450mm,上有 9 行×13 列黑白棋盘格的平面板。为避免因印刷不准确造成的影响,在实验前已经使用全站仪对各个内角点进行了精确的测量。由于全站仪不能保证严格地以板平面为基准面,因此在测量后又进行了坐标转换,基本保证了所有特征点的 z 向坐标为 0。

(1)内部参数标定。

在标定过程中,从不同角度和不同的深度拍摄了 40 幅图像进行标定。分别得到主点坐标和有效焦距与图片数量之间的变化关系。见图 3 和图 4。

从曲线变化可以看出,在实际的标定过程中,由于特征点提取误差,为保证内部参数标定结果可靠,至多需要 20 幅图片使标定结果基本稳定在 3 个像素内波动,约合 1‰。

(2)外部参数标定。

取实验(1)中计算出的内部参数,进行外部参数标定。标定时使用经全站仪精确测量得的世界坐标。标定时在特征点世界坐标中加入期望为 0、均方差不同的高斯噪声,观察噪声均方差水平与总投影误差的关系是否与仿真分析相一致。可以得到重投影误差对噪声均方差相对变化的曲线。如图 5:

从重投影误差和噪声均方差之间的关系可以看出,仿真实验与真实图片实验的结果相一致。从标定结果来看,重投影误差和噪声均方差之间呈明显的正相关;不加入噪声时,平均投影误差可达 0.5 个像素以下;当噪声均方差小于 1 时,两者成近似线性关系;当噪声均方差大于 1 时,重投影误差则迅速增大。

4 结语

本文通过计算机模拟相机成像过程和标定过程,研究了标定图片数量、特征点世界坐标测量精度、特征点提取精度对摄像机相机标定内外参数的影响。认为相机标定至多使用 20张图片就能够实现高精度标定;使用全站仪测量特征点世界坐标,并且特征点图像坐标提取精度达亚像素下能使相机标定的相对误差达 1%以下。

相机光学(十五)——如何提高相机标定的精度相关推荐

  1. 多传感器融合定位十五-多传感器时空标定(综述)

    多传感器融合定位十五-多传感器时空标定 1. 多传感器标定简介 1.1 标定内容及方法 1.2 讲解思路 2. 内参标定 2.1 雷达内参标定 2.2 IMU内参标定 2.3 编码器内参标定 2.4 ...

  2. OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)

    OpenCV学习笔记(十一)--谈谈像素的类型和对Templates的限制使用 Templates是c++的一个很强大的特征,可以是数据结构更加安全高效.但也会增加编译时间和代码的长度,当函数被频繁调 ...

  3. 中国光学十大进展|每秒4万亿帧相机,把光拍成黑客帝国子弹

    <黑客帝国>慢镜头里的那些子弹,仍在不少人的脑海里飞行,这种电影技术被称作"子弹时间". 不过,特效始终是特效,手枪子弹在无风条件下的速度也不过每秒数百米.西安交通大学 ...

  4. 相机光学(十二)——面阵相机与线阵相机

    面阵相机:实现的是像素矩阵拍摄.相机拍摄图像中,表现图像细节不是由像素多少决定的,是由分辨率决定的.分辨率是由选择的镜头焦距决定的,同一种相机,选用不同焦距的镜头,分辨率就不同. 像素的多少不决定图像 ...

  5. 「CameraCalibration」传感器(相机、激光雷达、其他传感器)标定笔记

    没写完,但可看 ------------------分割线---------------------- 序 看了很多次相机标定,但都是看个模模糊糊,希望这次能够通过写blog掌握并精通与相机标定相关的 ...

  6. imu相机标定_解放双手——相机与IMU外参的在线标定

    本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员 一.相机与IMU的融合 在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图.这是因为这两个 ...

  7. 相机光学(一)——成像系统分辨率的理论

    参考资料:https://blog.csdn.net/wangyanchao151/article/details/84586752 https://blog.csdn.net/ruibin_cao/ ...

  8. 【科普】始于颜值,终于实力:五镜头倾斜相机、双镜头倾斜相机介绍

    五镜头倾斜相机.双镜头倾斜相机介绍 倾斜摄影技术是国际摄影测量界近十几年发展过程中的高新技术,通过1个垂直.4个倾斜的视角同步采集影像,获取丰富的地物顶面及侧视的高分辨率纹理,真实地反映地物情况,用先 ...

  9. 苏黎世联邦理工开发的多相机光学触觉传感器,可以实现基于视觉的机器人皮肤

    最近瑞士苏黎世联邦理工学院的一组研究人员开发了一种多相机光学触觉传感器(即基于光学设备的触觉传感器),该传感器收集有关施加到其表面的接触力分布的信息.在arXiv上预发表的一篇论文中介绍的这种传感器可 ...

最新文章

  1. 【nginx】从主页搭建看nginx常用配置
  2. CentOS7配置ntp服务
  3. java-模拟出栈入栈
  4. 有没有那种python在线编译器_推荐几个好用的在线编译器
  5. 提高网站的性能----回流与重绘
  6. 分布式版本控制系统Git的安装和使用
  7. c语言线程锁的原理开锁原理图,C++多线程之可重入锁
  8. HNUSTOJ-1437 无题
  9. poj1163 数字三角形 (动态规划)
  10. Linux Socket C语言网络编程:UDP Socket
  11. 蓝桥杯 ADV-193算法提高 盾神与条状项链
  12. oracle自增列问题i,Oracle序列 和 SQL SERVER 自增列的问题-oracle
  13. 使用Mybatis实例
  14. 收到客户反馈的BUG,主管应该怎么办
  15. 打卡小程序源码,微信小程序源码下载
  16. 软件创新实验室:微信小程序开发——音频录制与播放
  17. Kafka报错:Couldn't find leaders for Set
  18. linux 查看go安装目录,Linux系统安装Go语言的步骤
  19. [Swift]LeetCode882. 细分图中的可到达结点 | Reachable Nodes In Subdivided Graph
  20. 【HGNN】北邮循序渐进研究HGNN

热门文章

  1. 关于office 2013 word 中使用微软IME首字母无法输入的问题
  2. 如何宣传Android作为Bluetooth LE外围设备
  3. stm32中断源有哪些_STM32常见问题汇总
  4. shader流光+自发光
  5. 在查找预编译头时遇到意外的文件结尾
  6. 用c语言编写s7-1200 plc程序教程,S7-1200编程指南.pdf
  7. C语言—整除问题、求余、赋值、逻辑运算符易错点
  8. linux用vi写文件内容,Linux下利用vi编辑器创建文件并写入内容 专家详解
  9. 便携式航电实时系统测试平台工作台设计
  10. 搭建(WSTMart)php电商环境时缺少fileinfo函数