本篇文章主要介绍如何使用相机标定,实现世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系。

 相机标定内参/畸变系数求解与外参求解代码:  (添加:2022-0926)

原理介绍如下:

 一、世界坐标系转换为相机坐标系

相机标定概念:即求解外参旋转矩阵R与平移向量t

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系

 世界坐标系概念(一般摄像机为坐标原点):

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_相机标定_02

 相机坐标系:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_相机标定_03

 

世界坐标系到相机坐标系方法,通常使用旋转和平移方法实现:

旋转方法种类:旋转矩阵,欧拉角,四元数,轴角,李群和李代数

旋转应用场景:惯性导航,机器人学(机械臂运动学,无人机姿态估计,slam等)

旋转矩阵图解推导方法:

本图说明:红点假设为物体p(物体未发生变化,只是坐标系建立方法不同而已),黑色为原坐标系,蓝色为绕X轴旋转坐标系,旋转角为seta。

求解新坐标系(Xc,Yc,Zc),其中绕X轴旋转,则新Xc=X将不发生变化。

Yc=oa+ab=ec+pd=oc*sin(seta)+cp*cos(seta)=Z*sin(seta)+Y*cos(seta)

Yc=ac-cd=oe-cd=oc*cos(seta)-cp*sin(seta)= Z*cos(seta)-Y*sin(seta)

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系_04

 

 最终表现为矩阵如下:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_相机标定_05

 

验证旋转是否正确(因到原点距离不变),采用欧式距离验证:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_06

 

通过以上方法类推绕Y轴,Z轴旋转,得到以下矩阵,将其相乘可得到绕X/Y/Z轴旋转的坐标转换。 

如下为旋转角矩阵变换:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系_07

添加(2022-0930):以上绕x轴公式的正负号偏差为角度问题,若-seta可将上面角度转为下面公式:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_相机标定_08

 

 

 

补充关于绕Y轴旋转的矩阵:

以下利用几何变换推导绕Y轴变换不同的2个矩阵,若读者发现不同文章不一样,可以不用慌张,仅仅思考角度不一样,可理解seta角正负的影响,

详情推导请看下面的变换。

 

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_09

 

 

额外注意点:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系_10

 

 

平移向量可表示为:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_11

 

相机的外参R、t:

 

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_12

 二、相机坐标系转换为图像坐标系

相机坐标系->图像坐标系这个转换过程,实际将三维转换我二维平面,其原理复符合小孔成像,可采用相似三角形求解转换公式。

小孔成像示意图:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_13

 

 

从下图上,如果相机坐标系到图像坐标系的转化,我们可以理解为,如何将相机坐标系下的3D点 

- 映射到 

- 上,通过蓝色虚线部分,我们可以得到两个相似三角形 

- 和 

- ,其中相机坐标系的原点 

- 到图像坐标系的原点 

- 的距离,我们称之为焦距 

- 。

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_14

                        

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系_15

 

 

 

 

利用相似三角形可得:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_16

 

最终可转换如下:

 

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系_17

 说明:Zc实际为相机坐标系Z轴的值,可通过如下形式得到:(添加:2022-0926)

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_18

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_19

 

 

 

 

 三、图像坐标系转换像素坐标系 

图像坐标系转像素坐标系实际是比列尺(属于缩放问题)与移动问题,首先是 

 这个我们可以理解为,从图像坐标系中心点到像素坐标系中心点的一个偏移量。属于相机内参的一部分。另外,如果我们已知图像坐标系的一个点 

 ,我们还应该知道,横坐标的每一个mm对应像素是多少。即有如下公式:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_20

 

 

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_旋转矩阵_21

 其中dx与dy表示x轴与y轴物理像素尺寸,即1个像素是dx毫米。

可使用以下公式表示:

 

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_相机标定_22

 

 

最终实现世界坐标系到像素坐标系的转换:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_世界坐标系_23

 上图可知M2为相机外参,M1为相机内参

相机标定目的:

相机标定(世界坐标系-->相机坐标系,相机坐标系-->图像坐标系,图像坐标系-->像素坐标系,完成世界坐标系-->像素坐标系)_相机标定_24