单目相机标定___一、原理
文章图片
文章图片
相机标定目的:
获取摄像机的内参和外参矩阵,同时也会得到每一副标定图像的旋转和平移矩阵。 内参和外参可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。
原理:
成像模型的坐标系为:世界坐标系 --> 相机坐标系 --> 图像坐标系 --> 像素坐标系
先说从相机坐标系到图像坐标系的变换:
从针孔成像模型说起:
文章图片
文章图片
文章图片
————————————————————————————
相机坐标系中实际的点坐标为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章找到相关内容,挺详细的)
文章图片
文章图片
文章图片
推荐阅读
- 塞舌尔系列短片五(用相机记录最惬意的时光)
- 汽车音响中的分辨率
- ios|ios 吊起系统相机设置文字为中文
- 撒金碧桃
- opencv摄像机标定+姿势估计
- iOS|iOS 原生扫码二维码与自定义相机
- android调用系统相机拍照
- android|处理相机拍照后Bitmap和图片旋转问题
- UE4血条、名字面向相机
- 【论文翻译】《投光栅到3D表面条件下基于标定和移相的表面测量》