CV学习笔记-相机模型(欧式变换及仿射变换)

简介: CV学习笔记-相机模型(欧式变换及仿射变换)

相机模型

1.相机模型原理

1. 相机成像

相机成像是一个小孔成像模型,将现实生活中的三维空间物体映射到二维的成像平面上,进而生成二维的图像。

2018122814580746.png

相机模型中的坐标系:

  • 世界坐标系Pw(Xw, Yw, Zw):对应真实客观三维世界的坐标系,也称为客观坐标系,表征物体在真实世界中的位置坐标。世界坐标系是随着物体的大小和位置变化的,单位一般是长度单位。
  • 摄像机坐标系PO(x, y, z):对应以相机的光心为原点的坐标系,其以平行于图像的x和y方向为x轴y轴,z轴与光轴平行,单位也为长度单位。

     图像物理坐标系P’(x’, y’): 对应以主光轴和图像平面交点为坐标原点的坐标系,单位仍为长度单位。

     图像像素坐标系P(u, v): 对应以图像的顶点为坐标原点的坐标系,u和v的方向平行于x’和y’方向, 单位是像素

2018122814580746.png

相机成像流程:

image.png

2. 坐标变换

欧式变换: 在任何的三维空间的物体,都可以以三维坐标系表示,也即在现实空间中的物体的点,在不同的坐标系下的坐标是不一样的,因为基底不同,那么一个固定的点,在一个坐标系下的坐标,如果转换到另一个坐标系下,使得另外一个坐标系能够确定这个位置,就需要用到欧式变换。 任何一个坐标系到另一个坐标系的转换可以通过旋转和平移完成。

平移变换&旋转变换&齐次坐标:

平移变换是指转换双方坐标系经过有限次平移可以重合,情形例如高帽在人脸的正上方的情况,这样人脸的中心坐标系转换到高帽中心坐标系,仅需将坐标原点向上平移变换即可,没有坐标轴的旋转偏移,在线性代数里的平移变换是在空间坐标系中所在位置的转换,习惯用坐标系中的O的向量表示,通过向量的加常量即可实现,多次平移变换直接进行向量相加即可实现。平移变换比较简单易懂,而旋转变换较为复杂,可以通过二维坐标旋转变换推广到三维笛卡尔坐标系下,对于空间里的刚体来说,是有六个自由度的,绕xyz的转动自由度有三个,而在二维平面中,只能绕垂直平面的轴旋转,即只能有一个自由度,那么对于三维坐标系来说能够写出3×3的R矩阵,记为旋转矩阵

2018122814580746.png

上式表示从B坐标系转换到A坐标系的旋转矩阵中的每一列子向量,等价为B坐标系的坐标轴单位向量在A坐标系中的表示。不难发现这个旋转矩阵是正交单位阵,故有以下推论:

2018122814580746.png

上式说明,矩阵的每一行就是A坐标系的坐标轴在B坐标系中的表示。旋转变换的公式如下:

2018122814580746.png

连续的旋转变换只要矩阵相乘即可。当旋转平移变换同时出现的时候,引入齐次坐标变换的概念;

2018122814580746.png

由上面的结论不难推出此变换过程,这个过程如果用一个矩阵表示,会简洁很多,齐次坐标变换矩阵也应运而生,上图的变换过程等效于以下表达:

2018122814580746.png

T矩阵就是该变换中的齐次坐标变换矩阵,齐次坐标变换矩阵T是一个四阶方阵,可以同时表示旋转变换和平移变换,齐次坐标变换矩阵公式表达如下:

2018122814580746.png

将上面推导过程的角标简化,举个例子:

若将向量a进行两次欧式变换,旋转和平移分别为R1,t1和R2,t2,分别得到:

b = R1*a + t1; c = R2*b + t2; c = R2*(R1*a + t1) + t2

2018122814580746.png

世界坐标系到相机坐标系:

世界坐标系到相机坐标系的变换中也不例外的存在旋转矩阵R和平移矩阵t,关系表示为:

2018122814580746.png

相机坐标系到图像物理坐标系:

  • 原理:相似三角形

2018122814580746.png

2018122814580746.png

  • 矩阵表示为:f为焦距
  • 2018122814580746.png
  • 图像物理坐标系到图像像素坐标系:
  • 原理:坐标偏移(dx、dy表示x和y方向上的一个像素分别占多少个长度单位,dx、dy可能为小数)
  • 2018122814580746.png
  • 2018122814580746.png
  • 齐次坐标表示:
  • 2018122814580746.png
  • 相机坐标系到图像像素坐标系的连续欧式变换:
  • 2018122814580746.png
  • 世界坐标系到图像像素坐标系:
  • 推导过程:
  • 2018122814580746.png
  • 2018122814580746.png
  • 结论:
  • 2018122814580746.png

2. 镜头畸变

1. 镜头畸变

由于制造精度以及组装工艺的偏差,透镜的成品往往会产生畸变,导致原始图像失真。镜头畸变分为径向畸变和切向畸变。

2018122814580746.png

2. 径向畸变

  • 原因 :由于透镜的形状产生的畸变称为径向畸变,透镜径向畸变后点位的偏移示意图:

2018122814580746.png

枕形畸变

2018122814580746.png

桶形畸变

2018122814580746.png

3. 切向畸变

  • 原因:切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的。(大多是由于透镜被粘贴到镜头模组上的安装偏差导致)

2018122814580746.png

4. 畸变矫正

方法:

  • 径向畸变和切向畸变模型中一共有5个畸变参数,在Opencv中他们被排列成一个5*1的矩阵,依次包含k1、k2、p1、p2、k3(这5个参数就是相机标定中需要确定的相机的5个畸变系数),经常被定义为Mat矩阵的形式
Mat distCoeffs = Mat(1.5, CV_32FC1, Scalar::all(0));
  • 求得这5个参数后,就可以校正由于镜头畸变引起的图像的变形失真。

2018122814580746.png

2018122814580746.png

3. 透视变换

1.定义

透视变换又称投影映射(Projective Mapping),是将一个图片从原有平面投影到一个新的视平面(Viewing Plane)的过程。

2. 目的

现实中的物体为直线的棱等在图片中可能是斜线,通过透视变换可以把这条斜线变换成直线。

3. 与仿射变换的区别

仿射变换是透视变换的一个特例,仿射变换(Affine Transformation 或 Affine Map)是指在几何中图像从一个向量空间进行一次线性变换和一次平移,变换到另一个向量空间的过程。

2018122814580746.png

4. 变换过程

  • 变换公式:

2018122814580746.png

下式中的X,Y是原始图片坐标(上式的x,y),对应得到变换后的图片坐标(X’;Y’;Z’)其中Z’=1:

2018122814580746.png

一般地,我们令a33=1,展开上面公式,得到一个点的情况:

2018122814580746.png

image.png个人学习笔记,仅学习交流,转载请注明出处!

相关文章
|
6月前
|
算法 计算机视觉
图像处理之距离变换
图像处理之距离变换
107 8
|
6月前
|
算法 计算机视觉
图像处理之积分图应用四(基于局部均值的图像二值化算法)
图像处理之积分图应用四(基于局部均值的图像二值化算法)
554 0
|
6月前
|
算法 计算机视觉
图像处理之倒角距离变换
图像处理之倒角距离变换
85 1
|
7月前
|
计算机视觉
仿射变换
【5月更文挑战第12天】仿射变换。
95 11
|
6月前
|
算法 C语言 计算机视觉
图像处理之图像快速插值放缩算法
图像处理之图像快速插值放缩算法
41 0
|
7月前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
1837 0
|
算法
基于 SIFT 对图像进行局部特征匹配(Matlab代码实现)
基于 SIFT 对图像进行局部特征匹配(Matlab代码实现)
168 0
|
机器学习/深度学习 算法 自动驾驶
基于图像特征检测——使用相位拉伸变换(Matlab代码实现)
基于图像特征检测——使用相位拉伸变换(Matlab代码实现)
127 0
|
资源调度 算法 机器人
图像特征提取与描述_角点特征02:SIFT算法+SURF算法
前面两节我们介绍了Harris和Shi-Tomasi角点检测算法,这两种算法具有旋转不变性,但不具有尺度不变性,以下图为例,在左侧小图中可以检测到角点,但是图像被放大后,在使用同样的窗口,就检测不到角点了。
221 0