本文转载自:https://blog.csdn.net/ganguowa/article/details/56843208
https://blog.csdn.net/ganguowa/article/details/60765691
正文
相机的坐标系,总共有四个,有的文章里面说是三个。不管三个,还是四个,说的都是一样的意思。在本篇文章里,我们按照四个坐标系来讲。现在,我们把它们的定义摆出来:
- 图像的像素坐标系(u,v)
以图像的左上方为原点,u轴平行于图像面水平向右,v轴垂直于u轴向下,此坐标系的单位为像素; - 图像的物理坐标系(x,y)
以相机的光轴与图像平面交点为原点,x轴方向与u轴方向一致,y轴方向与v轴方向一致,以毫米为单位,用物理单位表示图像像素位置; - 相机坐标系(Xc,Yc,Zc)
以相机的光心作为原点,Zc轴与光轴重合,并垂直于成像平面,且取摄影方向为正方向;Xc、Yc轴分别与图像物理坐标系的x,y轴平行;相机坐标系的原点与图像物理坐标系原点之间的距离为相机的焦距f,以毫米为单位; -
世界坐标系(Xw,Yw,Zw)
三维世界的全局坐标系,以(Xw,Yw,Zw)来表示,满足右手法则;在对四个坐标系有了明确的定义之后,我们就可以开始对它们之间的关系做一些研究。
我们说的四个坐标系全在下面这张图里,虽然地方小了点儿,但坐标系一个不少,大家可以看一眼,直观地了解一下,虽然并没什么用。
1.图像像素坐标系与物理坐标系之间的转换

如 设Ouv点为像素坐标系的原点,它位于图像的左上顶点。u轴向右为正方向,v轴向下为正方向。
[ps一句:左上角作为像素坐标的原点,这是一种人为的设置。换句话说,我们也可以设置其它顶点作为原点。例如,在opencv里面,像 素的原点即为左上角;而在kinect拍到的图片里,则左下角为原点。有涉及到这方面的小伙伴可以做笔记了,重点已经画出来了。]
与像素坐标系原点不同,图像物理坐标系原点的定义是只此一家,别无分店。我们给物理坐标系原点起个外号:o1。 设o1的像素坐标值为(uo,vo)。很显然,它们之间的转换关系如下:

(1)
不过,事情并不是这么简单,由于各种原因,像素在实际当中并非方方正正的正方形,而是菱形,如下图所示。

这样一来,为了追求更高的精度,我们需要将这个因素考虑进去,当然,没把这个因素考虑进去也无妨,因为好多人都没这么办,譬如大名鼎鼎的opencv,
上图出自opencv2.4.13的文档。相比较像素坐标带来的误差,镜头畸变带来的误差影响更大,因为镜头畸变的原因,相机其实并非线性模型,提高相机标定精度的一大方法就是采用更精确的非线性模型,对比opencv不同版本的文档,我们可以发现,opencv下功夫的也是这方面。
把话题回到主线上来,在考虑到像素坐标的实际形态之后(个人比较喜欢用”形态“这个词),像素坐标系和物理坐标系之间的关系其实是这个样子的:

(2)变换成矩阵形式之后就是下面这个样子:

(3)
与公式(3)的模型相比,opencv的模型是不是显得单纯好多。
2.图像物理坐标系与相机坐标系之间的转换

上面这幅图形象的表明了图像物理坐标系与相机坐标系之间的关系。这两者之间的变换是透视变换。
假设在空间某一点P,它在相机坐标系中的坐标为(xc,yc,zc),依据相似三角形的相关知识,我们可以得到:

(4)
其中,f就是前面所说的焦距。我们把它变成矩阵形式:

(5)
很明显,这个矩阵是一个齐次矩阵,我们为什么要变矩阵变换成齐次形式呢。简单点说,为了求解方便。
3.相机坐标系与世界坐标系之间的转换
这两者之间的变换是刚体变换。所谓刚体变换,就是只有旋转和平移的变换。
当然还有其他变换,缩放、扭曲、翻转还有剪切等等,各种变换真是不要太多。
形象点说,你拿一条棍子甩来甩去,这叫刚体变换。如果你拿一根面条甩来甩去,那就不是刚体变换。
好了,刚体变换的话题到此结束,我们来进入正题,看看相机坐标系与世界坐标系之间的转换。涉及到旋转和平移(其实所有的运动也可以用旋转矩阵和平移向量来描述)。

所以世界坐标到相机坐标可以表示为:
R为旋转矩阵,绕着不同的坐标轴旋转不同的角度,得到相应的旋转矩阵,如下图所示:

(6)
其中,R为3×3的矩阵,T为3×1的矩阵。一如既往,我们对上式采取了齐次的形式。
利用上面的四个变换公式,我们可以得到图像的二维像素点与对应的三维空间坐标点的转换公式:

(7)
其中,值得一提的是,
,0是一个3×1的向量。
(8)
要求解,将上式写成这样的公式(1):

另一种清晰的表示即为:

4、(U,V)与(Xw,Yw,Zw)的求解
在张正友标定法当中,我们一般用棋盘格作为标定模板,通过图像处理上的方法我们可以得到棋盘格上的角点坐标,这样我们就得到了(u,v).
那么,我们如何得到对应的空间点坐标呢。
我们假设标定模板位于zw=0上,结合棋盘格的边长我们就可以得到相应的角点的空间位置。譬如,假设每一个小格子的大小为300*300,那么,红点1的坐标为(0,0,0),则红点2的坐标为(0,300,0),依次类推,这样我们就得到对应点的空间坐标。

5、单应性矩阵的求解
当Zw=0时,公式(1)可以变为:

用单应性矩阵可以表示成:

此处H是一个3×3的矩阵,但是H的自由度只有八个,就是图像平面间的单应性矩阵自由度只有八个。
所以公式可以变成:

容易得到:

通过简单变形后可以得到:

列成矩阵的形式(2):

其中:
![]()
共有八个位置参数,所以需要四个形如(2)的公式才能求解,棋盘一个格子能提供四个点,所以用棋盘的四个角点来求解

通过某些方法皆矩阵,即可得到H阵。
本文介绍了相机标定中像素坐标系与物理坐标系、图像物理坐标系与相机坐标系、相机坐标系与世界坐标系之间的转换关系。通过透视变换和刚体变换,解析了二维像素点到三维空间坐标点的转换公式,并探讨了单应性矩阵的求解方法,特别提到了棋盘格标定模板在获取单应性矩阵中的应用。


被折叠的 条评论
为什么被折叠?



