前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文图解单目相机标定算法

一文图解单目相机标定算法

作者头像
3D视觉工坊
发布2020-12-11 10:54:05
1.6K0
发布2020-12-11 10:54:05
举报
文章被收录于专栏:3D视觉从入门到精通

有一天,蟹老板找底下的员工川建国同学:

等蟹老板走后,然后转头问旁边的学霸李雷同学:

李雷同学整理了下情绪:

有人反映哦,有时候我们发出来的技术贴太硬了,不方便去理解,于是,就有了上面这个尝试,在开始正课之前,我们先讲一段故事。如果大家觉得OK,后面我们将继续用这种方式来讲课,如果不OK,请大家在我们评论区提供您宝贵的意见。

这次单目相机标定教程,预计有三期,第一期讲单目相机成像过程,第二期讲MATALAB和OpenCV的单目相机标定实践,第三期则讲张正友标定法的原理。这里是3D视觉工坊嘉宾,Atlas博士生计算机视觉大讲堂,致力于把计算机视觉知识讲得不那么无趣!

01 什么是相机标定?

说到相机标定,就要先说什么是传感器的标定。我们知道,任何传感器,它都是存在有误差的,那么狭义上说,标定就是去校正这部分误差,让传感器尽量准确一点。我们来看相机标定前后输出图像的差别:

图1 相机标定前后输出图像的差别

有人说了,那为什么相机出厂前,它不提前做好标定呢?

李雷同学又鄙夷了一次建国同学:

出厂前相机标定,厂家想做(谁不想自己的传感器准一点呢),但这个真还不是厂家懒,它真做不了。因为相机要标定的参数,跟相机实际的光圈、焦距大小有关,而这两个参数,在一般的工业相机中都是可调节的,所以只能你自己来标定。

常见单目相机标定方法是张正友标定法,这在很多软件,比如说MATLAB、或者库OpenCV中都有相应的实现。至于相机标定,要标定哪些参数,先让我来和你说一下单目相机的成像模型。

哦,对了,要补充一点,我们常说的标定可不光光指纠正传感器的误差,当涉及到两个或者多个传感器的标定的时候,往往还包括计算出这些传感器间的相互位置关系。比如说在机器人系统里,我们经常需要在不同坐标系下转换位置关系,那么我们所说的一些标定还包括标定出这些关节、传感器之间的相互位置关系。再比如说我们双目相机的标定,就包括左相机、右相机的传感器误差标定,还包括它们之间相互位置关系的这么一个标定。

概括一下,常说的标定包括两部分内容:传感器误差的校正、传感器相互之间的位置关系。

而单目相机的标定主要指前者,传感器误差的校正,常用的方法是张正友标定法

02 理想单目相机成像模型

实际上,小孔成像的模型其实可以看作是针孔相机模型的基础:

图2 小孔成像模型

进一步地,针孔相机模型可以简化为下面这个模型:

图3 针孔相机模型(未翻转)

图中,P是物点, 是前者在CCD上成像的像点,而是相机的光心,则为成像平面到光心的距离,我们称之为焦距。

实际上,焦距的定义会更复杂,是所有平行光透过透镜汇聚一点,那一点到透镜光心的距离,它就涉及到摄影里非常专业的概念最小弥散圆了,我们之后会讲一期相机光圈、焦距、景深、视场大小、最佳成像距离的专栏。

这里先把模型简化一下吧,下面我们来讲整个成像过程,在相机成像模型中,主要有四大坐标系:世界坐标系相机坐标系图像坐标系像素坐标系。

图4 四大坐标系

其中:

世界坐标系(3D):世界坐标系就是以外界某个参考点建立的坐标系,单位为mm,或者m。

相机坐标系(3D):以光心建立相机坐标系,其中轴指向相机的正前方。

图像坐标系(2D):光心在成像平面的投影,也就是点建立另一坐标系,称为图像坐标系,单位为mm。

像素坐标系(2D):像素坐标系是我们最终用户所看到的,也就是坐标系的原点在图像左上角,单位为像素。

那么这中间,我们怎么建立实际物理点(世界坐标系)到图像上点(像素坐标系)的一一映射呢?需要三步转换,也就是:

世界-> 相机 -> 图像 -> 像素

这中间,这些坐标系有什么差别,它们是怎么转换的?请看下面的文章。

2.1世界坐标系 -> 相机坐标系

我们知道,世界坐标系就是以外界某个参考点建立的坐标系,而相机坐标系则是以相机的光心作为坐标原点,光轴的正方向作为Z轴建立的坐标系,两者属于刚体变换,只需要进行旋转和平移,如下所示:

图5 世界坐标系到相机坐标系的转换

为了统一旋转和平移,我们将其写为齐次形式,至于为什么要用齐次,我们之后的栏目里也会说,总而言之是这样的。

2.2 相机坐标系 -> 图像坐标系

在完成了世界坐标系 -> 相机坐标系的转换后,我们再从相机坐标系 -> 图像坐标系。为了方便描述,我们将针孔相机模型对称翻转过来,如下图所示,从数学的角度,它们是等价的:

想不明白没关系,这里就算是不等价的,我们就假设相机的电子设备已经帮我们做好了这样一个翻转

图6 针孔相机模型(翻转)

先回顾一下前面所说的,如我们之前所说:P是物点、P’是像点,现在我们将它翻转过来了,记作小写的p。其中:

跟之前的公式统一一下,写为齐次形式:

2.3 图像坐标系 -> 像素坐标系

图像坐标系中,坐标的原点在图像中间,而我们平时处理图像时用的坐标系,称为像素坐标系,坐标系的原点在图像的左上角,此外它们的度量单位也不同,前者的单位是mm,而后者的单位是像素。如下图所示,两个坐标系之间的差别:

图7 图像坐标系和像素坐标系的差别

CCD并不是一个正方形,dx、dy的大小是有所差别的

将其进行移项,并写为齐次的形式,有:

2.4 汇总

总结一下之前所说的四大坐标系的关系:

图8 四大坐标系间关系

它们的公式如下:

1.世界坐标系->相机坐标系

2.相机坐标系->图像坐标系

3.图像坐标系->像素坐标系

那么将这些式子联立,最终得(你可以尝试自己去推导一下,就是几个式子代换一下):

进一步化简:

这个公式就是整个单目相机在理想情况下的成像公式,可以建立世界坐标系到像素坐标系的一一映射。

再补充一个知识点,归一化平面:

归一化平面,其实际是图像坐标系的等比缩放,也就是当f=1的情况,主要是便于公式推导,它与图像坐标系是等比缩放关系,只需要乘以f即可完成相互转换。

图9 图像坐标系与归一化平面关系

03 相机畸变

以上是理想情况下世界坐标系到像素坐标系的转换。而由于相机制造工艺的原因,其成像过程中难免存在着畸变,在后续构建精确的三维重建算法前,我们要对相机的畸变进行矫正,以提高算法重建的精度,这一步骤才称为相机标定。

3.1径向畸变

径向畸变原因:在相机制造过程中,很难保证镜头的厚度完全均匀,由于制造工艺的原因,通常为这种情况为中间厚、边缘薄,因而光线在远离透镜中心的地方,会发生更大程度的扭曲,这种现象在鱼眼相机(桶形畸变)中尤为明显。

径向畸变主要有两种类型:枕型畸变桶型畸变,示意图如下:

图10 相机径向畸变

需要注意的是,这里校正,并不是用的系数越多,整个矫正结果越精确,我们应该考虑相机的实际情况,选择合适的参数数量。

3.2切向畸变

切向畸变原因:切向畸变产生的原因在于相机在制造过程中,成像平面与透镜平面不平行,产生了透视变换。

图11 切向畸变

这种畸变可以由以下公式描述,它也与距离图像中心的距离半径有关:

3.3合并考虑

将径向畸变和切向畸变合并,只需要将两个畸变矫正直接加起来即可,公式如下:

合并考虑畸变原因:其实也很简单,两种畸变是同时发生在成像过程中的,发生的原因也是相互独立的,而且也都是关于距离的表达式,你似乎也找不到更好的方式来综合考虑这两种误差,实践证明,这种合并考虑畸变的情况效果还不错。

04 成像过程总结

我已经把所有需要记住的知识点汇聚在一张图片上了,请大家对照着前面的文章去理解:

05 思考问题

当看完这次推文之后,请大家在脑海里梳理以下几个概念:

  1. 世界坐标系、相机坐标系、图像坐标系、像素坐标系、归一化坐标系,它们之间的差别是什么,怎么进行相互转换?
  2. 径向畸变、切向畸变、它们的主要因素、以及如何去校正?
  3. 最好的话,你自己去画这个图,去推导一遍公式。虽然你后面公式会忘,但相信我,3D视觉领域好多公式,我不需要你记住它,但你要有个直觉印象,去推导一遍有助于你真正理解这个公式。

当明白了这些以后,下节课我们讲,怎么通过张正友标定法去获得要标定的参数,标定得来的参数怎么用,用MATALAB跟OpenCV分别去实践,不过在此之前,你要自己思考以下这些问题:

  1. 相机标定,我们究竟要标定那些参数?
  2. 相机畸变发生在四大坐标系转换的哪一过程?
  3. 假设我们拿到了这些参数怎么用?
  4. 对于每个物点,在像素坐标系下都有唯一像点与之对应,那么反过来是否成立?
  5. 怎么去评判标定的好不好?

大家还想要我们讲什么呢?请踊跃留言!高能预警,下节课我们将以视频的形式来讲解。不过,如果你没有好好看这个相机成像过程的文章,下节课我讲的再有趣也是白扯~这里是3D视觉工坊嘉宾,Atlas博士计算机视觉大讲堂,致力于把计算机视觉知识讲得不那么无趣!

准确说,Atlas今年博一,应该讲博士生~

当然啊,之后包括多个传感器的时间戳同步、怎么去做融合,这些在我们后续的教程中都会讲,请关注我们的公众号《3D视觉工坊》。我相信,未来视觉领域,一定是3D视觉的世界,如果你可以从头到尾完整地跟完我们整个课程,并且掌握的话,在硕士期间,再尽量去找一些实习,如果你打算从事3D视觉领域,我相信一定会收到一份不错的offer的。

本文仅做学术分享,如有侵权,请联系删文。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3D视觉工坊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1世界坐标系 -> 相机坐标系
  • 2.2 相机坐标系 -> 图像坐标系
  • 3.1径向畸变
  • 3.2切向畸变
  • 3.3合并考虑
  • 当看完这次推文之后,请大家在脑海里梳理以下几个概念:
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档