单目相机标定原理

 
 

 
 

相机标定目的:
获取摄像机的内参和外参矩阵,同时也会得到每一副标定图像的旋转和平移矩阵。 内参和外参可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。

 

原理:
成像模型的坐标系为:世界坐标系 --> 相机坐标系 --> 图像坐标系 --> 像素坐标系

先说从相机坐标系到图像坐标系的变换:
从针孔成像模型说起:

 
 

 
 

 
 

————————————————————————————
相机坐标系中实际的点坐标为Q(X, Y, Z)
对应的图像(坐标系)平面上的点为 q(x, y , f)

 

理想情况如上所示,但实际上成像芯片的中心通常不在光轴上。


 
 

 
 

原本的焦距是f,这里把f拆成2个不同的焦距,一个是x轴的焦距,一个是y轴的焦距


 
 

因此最终计算的结果为:
 
 

将实际中的点Q(X, Y, Z)映射到投影平面上坐标为 (x , y)的点的过程称为投影变换。

这种变换可以使用齐次坐标。


 
 

 
 
 
 

给q(x, y)增加了一个维度w,即为q(x, y, w)


 
 

 
 

下图所示,网上一些资料中也有这种形式:
x0、y0为在图像平面上的主点坐标,是Cx,Cy的另一种形式,
其中s为坐标轴倾斜参数,理想情况下为0,其他参数都是一样的。


 
 

—————————————————————————————————
我们已经得到了内参矩阵,能够从相机坐标系转换到图像坐标系上,
接下来说如何得到外参矩阵,将其从世界坐标系转换到相机坐标系上

从世界坐标系转换到相机坐标系上属于刚体变换,即不会发生形变,也就是说只有旋转平移

公式符号说明:
带有下标 w 的是世界坐标系
带有下标 c 的是相机坐标系

设旋转矩阵为 R, 平移矩阵为 T
 
 
 
 

再把偏移矩阵T加上即可,
偏移矩阵T为 [Tx, Ty, Tz]的转置,是X、Y、Z方向上的平移。


 
 

将旋转矩阵R和偏移矩阵T合起来即得外参矩阵即为:


 
 

——————————————————————————————————
图像坐标系和像素坐标系之间的转换:
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。
图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位为mm,属于物理单位,
而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以
这两者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel = dx mm
点(u,v)为像素坐标系上的点,对应的图像坐标系上的点为(x,y)

 
 

——————————————————————————————————————
有了一系列参数后就能推导整个公式了。(这里借用一下别人的图)
 
 

 

相机的内参和外参可以通过张正友标定获取。通过最终的转换关系来看,
一个三维世界中的坐标点,可以在图像中找到一个对应的像素点,

但是反过来,通过图像中的一个点找到它在三维中对应的点就很困难,因为我们并不知道等式左边的Zc值。这个Zc可近似看做相机坐标系中相机到物体的距离。

在我看来,二维图像中的一个点,对应在三维空间中是一条线,因此如果不知道相机剧被测物体距离,是无法从二维图像上的点推导出三维空间中某个点的坐标的。
————————————————————————————————
透镜畸变
(写了这么多,写不动了,透镜畸变原理可以在《学习OpenCV》第11章找到相关内容,挺详细的)

 
 

 
 

 

 

posted @ 2019-05-14 15:34  小y  阅读(...)  评论(... 编辑 收藏