相机标定 无棋盘格_单目相机标定

bc9bb766f03877c93b5444311268a4d5.png

单目相机标定是什么?

举个例子。

我拍了一张狗的图像。那么真实世界里,这个狗头是怎么变成图像里的狗头的呢。

狗头(假设狗头很小,就是一个点)在真实世界里,用一个三维坐标可以定位。在图像里,狗头是一个二维坐标点。 根据矩阵论学到的知识,要想从真狗头变到图里的狗头,实际上是一个三维坐标到二维坐标的变换,也就是映射关系。

单目相机标定,就是想要求解这个映射关系。

从相机到图像发生了哪些映射?

首先,物体在真实世界里,光要先到镜头。经过镜头成像,光会落在一个感光元件上。最终,形成了图像。

画一下重点,流程是这样的:真实世界-----》镜头-------》感光元件-----》图像。

于是,就以这四个东西,各自建坐标系,就是标定里著名的四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。

919e4da4eb74c741440dc7f9a4ba0f34.png
图1

从真实世界到镜头,是一个刚性变换,意思就是仅发生了旋转和平移的变换。通过一个矩阵就可以描述旋转和平移变换。这个矩阵,就叫相机的外参矩阵。

从镜头到图像坐标系,就是初中物理学的凸透镜成像的原理。理想情况下,用最简单的相似性就可以计算出来。然而实际情况是镜头会发生畸变,这个畸变就不能简单的用矩阵来描述了,需要一个非线性的函数。

从图像坐标系到像素坐标系,就是简单的平移、离散化。具体来讲是这样的,成像元件和镜头和中心是在同一水平线上的,原点(0,0)都是它们各自的正中心。成像元件的每一个感光单元实际上就是图像的一个像素。而对于像素坐标系,坐标(0,0)的是左上角的那个像素,许多软件里也都是这样定义的。

后两步,也可以分别用矩阵来表示。俩矩阵乘一起,叫内参矩阵。

经典公式还是附上。

3f6c8a4aeb6ebc845717b29a75444a33.png
公式1

标定是怎么计算这些矩阵的?

这实际上是一个解方程的关系。我有一堆图像点(u,v), 还有一堆世界坐标(Xw, Yw, Zw),它们一一对应。根据上面这幅图上的数学关系,我建立一系列的方程,把内参和外参算出来就好了。最经典的求解方法就是张正友标定。

关于张正友标定存在以下几个问题:

                 关于方程的建立

1.图像点怎么获得?

张正友的方法是,拿一个棋盘格图像,通过角点检测,得到角点在图像里的坐标。

2.世界坐标怎么获得

棋盘格的每个格子是已知尺寸的,比如20×20厘米这种。以棋盘格所在平面为世界坐标的z平面,以两个边为x轴和y轴。按照这个,数出来每个角点的坐标就行了。

                 关于方程的求解

1.求解方法

根据上述,假设我们用了一个7*6的棋盘格,我们就有42组对应的点坐标了。我们拿到的这些点有时候不能够得到精确解,只能用一些估计的方法,比如最大似然估计之类的,估计一个近似解。

2.求解流程

第一步:求解内参和外参矩阵的乘积。

内参和外参的乘积是一个3*3的矩阵,叫做单应性矩阵。

“单应性矩阵
是齐次矩阵,有8个独立未知元素。当一张图片上的标定板角点数量等于4时(一个点有x坐标和y坐标,因此可以列出来两个方程),即可求得该图片对应的矩阵
。当一张图片上的标定板角点数量大于4时,利用最小二乘法回归最佳的矩阵
。”

第二步:求解内参矩阵。

求解内参矩阵

过程中,通过一系列公式,算着算着发现:如果先求解矩阵
,通过矩阵
再求解相机的内参矩阵
,这样比较简单。

然后继续推呀推,最终发现:

“我们只要取3张标定板照片,即可求解内参矩阵
当标定板图片的个数大于3时(事实上一般需要15到20张标定板图片),可采用最小二乘拟合估计出矩阵
,进而求解出内参矩阵
。”

第三步:求解外参矩阵

第四步:求解畸变参数

张正友的方法仅考虑了幅度较大的径向畸变。

其他问题

1. 内参是相机和镜头本身的性质,只需标定一次就可以了。

2. 外参是相机和世界坐标的位置关系,一旦发生位置变化,就需要重新求解外参。求解外参的方法有PNP方法,以后熟悉了再做详细介绍。

3. 上文中公式1里,有一个尺度坐标

从3D到2D时,根据物体在世界坐标系的Z坐标

可以求解出来。

如果想2D到3D点映射时,只有图像上点坐标和内外参矩阵,计算时会发现尺度坐标

解不出来,尺度坐标
是相关的。直观地,可以理解为图像缺少了深度信息,无法单张图像从2D直接恢复到三维世界里。以后有空了放一下公式。

c++ 和Opencv 实现张正友标定 代码

代码放在了gitee上,里面有单目标定的测试图像和C++代码。

提供了相机标定、标定误差计算、矫正畸变图像、将3D点坐标映射至2D坐标。

代码网站如下:

幼儿园优秀毕业生崔如瑶/learn3D​gitee.com
b8165e687466aa2671f9683bd7772081.png

测试用图来源为:公众号麻瓜智能。 参考链接:

第三更,单目相机标定实践(完整过程)​www.jianshu.com
caa3b2f367fd48d6d0f3b9f4af6c06e0.png

参考资料

Wang Hawk:29. 小孔相机​zhuanlan.zhihu.com
b3ba81a98c7f14b10b8513f2a30ff3f8.png
世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换_lyhbkz的博客-CSDN博客_相机坐标系转世界坐标系​blog.csdn.net
e09a9096db05cff985ff40a0a95e65e0.png
相机那些事(五)——单应矩阵Homography Matrix​www.jianshu.com
84895360087b6ad4aa48c6efcc7c0ec4.png
Homography单应性矩阵原理_weixin_42424674的博客-CSDN博客_单应性矩阵​blog.csdn.net
9dc756408270f371d7a1fc95f09f5f64.png
张正友标定法-完整学习笔记-从原理到实战_hehedadaq的博客-CSDN博客_张正友标定法-完整学习笔记-从原理到实战​blog.csdn.net
a22e942b52d8d3b7a8deb512f2582b48.png
1335:相机标定之张正友标定法数学原理详解(含python源码)​zhuanlan.zhihu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值