原理:
成像模型的坐标系为:世界坐标系 --> 相机坐标系 --> 图像坐标系 --> 像素坐标系学习
先说从相机坐标系到图像坐标系的变换:
从针孔成像模型提及:
code
理想状况如上所示,但实际上成像芯片的中心一般不在光轴上。orm
本来的焦距是f,这里把f拆成2个不一样的焦距,一个是x轴的焦距,一个是y轴的焦距ip
这种变换可使用齐次坐标。ci
给q(x, y)增长了一个维度w,即为q(x, y, w)io
下图所示,网上一些资料中也有这种形式:
x0、y0为在图像平面上的主点坐标,是Cx,Cy的另外一种形式,
其中s为坐标轴倾斜参数,理想状况下为0,其余参数都是同样的。form
—————————————————————————————————
咱们已经获得了内参矩阵,可以从相机坐标系转换到图像坐标系上,
接下来讲如何获得外参矩阵,将其从世界坐标系转换到相机坐标系上class
从世界坐标系转换到相机坐标系上属于刚体变换,即不会发生形变,也就是说只有旋转和平移。原理
公式符号说明: 带有下标 w 的是世界坐标系 带有下标 c 的是相机坐标系 设旋转矩阵为 R, 平移矩阵为 T
再把偏移矩阵T加上便可,
偏移矩阵T为 [Tx, Ty, Tz]的转置,是X、Y、Z方向上的平移。file
将旋转矩阵R和偏移矩阵T合起来即得外参矩阵即为:
——————————————————————————————————
图像坐标系和像素坐标系之间的转换:
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不同。
图像坐标系的原点为相机光轴与成像平面的交点,一般状况下是成像平面的中点或者叫principal point。图像坐标系的单位为mm,属于物理单位,
而像素坐标系的单位是pixel,咱们日常描述一个像素点都是几行几列。因此
这二者之间的转换以下:其中dx和dy表示每一列和每一行分别表明多少mm,即1pixel = dx mm
点(u,v)为像素坐标系上的点,对应的图像坐标系上的点为(x,y)
相机的内参和外参能够经过张正友标定获取。经过最终的转换关系来看,
一个三维世界中的坐标点,能够在图像中找到一个对应的像素点,
可是反过来,经过图像中的一个点找到它在三维中对应的点就很困难,由于咱们并不知道等式左边的Zc值。这个Zc可近似看作相机坐标系中相机到物体的距离。
在我看来,二维图像中的一个点,对应在三维空间中是一条线,所以若是不知道相机剧被测物体距离,是没法从二维图像上的点推导出三维空间中某个点的坐标的。
————————————————————————————————
透镜畸变:
(写了这么多,写不动了,透镜畸变原理能够在《学习OpenCV》第11章找到相关内容,挺详细的)