相机矩阵

1.相机小孔模型

针孔模型是相机成像的基础模型,是理解后续相机矩阵内容的基础。下图描述了基本的小孔成像过程:

图中,X坐标系是针孔所在坐标系,Y坐标系为成像平面坐标系,P为空间一点,小孔成像使得P点在图像平面上呈现了一个倒立的像。

这幅图是前一幅图的俯视图,由三角相似关系可以得到:

写成矩阵的形式:

多了一个讨厌的负号(小孔成像上下颠倒,左右也颠倒),为了方便,大家把成像平面移到了和物体(P点)相同的一边,这样相似关系中就没有负号。

上图中Y1’为移动后的成像平面,这与移动前的比例关系是等效的。

写成矩阵形式:

2.相机矩阵(内参)

成像过程就是三维空间坐标到二维图像坐标的变换,这是一个投影过程(降维打击)。相机矩阵就是建立这种三维到二维的投影关系。

如果我们用[xw yw zw ]来表示一个空间点的坐标,用[x y]来表示对应于成像平面上的一个图像点的坐标(不是像素坐标),那么这两个点肯定是有一种变换关系联系起来的,我们把这个变换关系记为P。

对于空间点:在这里插入图片描述,其在图像上的点为:在这里插入图片描述

那么有如下关系:

在这里插入图片描述

其中3x4的矩阵(这是为了满足4X1变换到3X1的要求),该矩阵就被称为相机矩阵(camera matrix ),或者相机投影矩阵(camera projection matrix)。

第一部分说小孔模型时没有使用齐次坐标,现在我们用齐次坐标再来看看小孔模型。

在这里插入图片描述

把它写成齐次形式:

在这里插入图片描述

在此,我们先暂时舍弃比例因子f/x3,只建立[y1 y2 1]与[x1 x2 x3]的关系,可以得到表达式

在这里插入图片描述

由于舍弃了一个比例因子,等式不再成立,因此使用~来表示二者之间的相似关系。

对于在这里插入图片描述,可以建立在这里插入图片描述在这里插入图片描述的关系,用矩阵表示如下:

å¨è¿éæå¥å¾çæè¿°

至此由于在这里插入图片描述,就有在这里插入图片描述在这里插入图片描述的关系,如下所示:

在这里插入图片描述

其中,在这里插入图片描述就是相机矩阵,或者乘以一个系数f写为在这里插入图片描述

3.相机矩阵(Intrinsic matrix)

以图像左上角为原点建立以像素为单位的直接坐标系u-v。像素的横坐标u与纵坐标v分别是在其图像数组中所在的列数与所在行数。(在OpenCV中u对应x,v对应y)

图像点的表示是长度单位,不是像素,由于我们拿到的图像是以像素来衡量的,因此还需要将图像坐标系转化为像素坐标系。由于(u,v)只代表像素的列数与行数,而像素在图像中的位置并没有用物理单位表示出来,所以,我们还要建立以物理单位(如毫米)表示的图像坐标系x-y。将相机光轴与图像平面的交点(一般位于图像平面的中心处,也称为图像的主点(principal point)定义为该坐标系的原点O1,且x轴与u轴平行,y轴与v轴平行,假设(u0,v0)代表O1在u-v坐标系下的坐标,dx与dy分别表示每个像素在横轴x和纵轴y上的物理尺寸,则图像中的每个像素在u-v坐标系中的坐标和在x-y坐标系中的坐标之间都存在如下的关系:

其中,我们假设物理坐标系中的单位为毫米,那么dx的的单位为:毫米/像素。那么x/dx的单位就是像素了,即和u的单位一样都是像素。为了使用方便,可将上式用齐次坐标与矩阵形式表示为:

å¨è¿éæå¥å¾çæè¿°

于是之前的相机矩阵又得添加一项:

å¨è¿éæå¥å¾çæè¿°

上述推导中有一个假设前提,就是相机的感光元件是正方形的,感光元件的安装也是通过光轴中心的,但这不可能,于是会出现以下两个问题:
1、感光元件的基本单元不是方的,一个方形物体可能最后成像为一个矩形(甚至会有斜切效果,一般可以不考虑斜切因素);
这导致上述表达式中,dx与dy不相等,
2、感光元件的中心与光轴通过的主点不重合,会使得正常投影的图像发生了一点小小的位移。这导致上述表达式中,u0与v0可能并不等于成像传感器长宽尺寸的一半。(理想状态下就是一半)

上述表达式中,等式右边的前三个矩阵合并,得到下式:

å¨è¿éæå¥å¾çæè¿°

其中在这里插入图片描述被称为内参矩阵(Wikipedia)

或者只合并等式右边前两个矩阵,得到下式:

在这里插入图片描述


于是也有习惯将在这里插入图片描述称为内参矩阵(少了一列0),都是一个意思。

内参矩阵的参数含义:
f:焦距,单位毫米,dx:像素x方向宽度,单位毫米,1/dx:x方向1毫米内有多少个像素
f/dx:使用像素来描述x轴方向焦距的长度
f/dy:使用像素来描述y轴方向焦距的长度
u0,v0,主点的实际位置,单位也是像素。

内参矩阵反应了相机自身的属性,各个相机是一不一样的,需要标定才能知道这些参数。

4.相机的外参矩阵(extrinsic matrix)

相机坐标系

相机成像的几何关系可由图2表示。其中O点为摄像机光心(投影中心),Xc轴和Yc轴与成像平面坐标系的x轴和y轴平行,Zc轴为摄像机的光轴,和图像平面垂直。光轴与图像平面的交点为图像的主点O1,由点O与Xc,Yc,Zc轴组成的直角坐标系称为摄像机的坐标系。OO1为摄像机的焦距。

世界坐标系

世界坐标系是为了描述相机的位置而被引入的,如上图中坐标系OwXwYwZw即为世界坐标系。平移向量t和旋转矩阵R可以用来表示相机坐标系与世界坐标系的关系。所以,假设空间点P在世界坐标系下的齐次坐标是(Xw,Yw,Zw,1)T,(这里T是上标转置),在相机坐标下的齐次坐标是(Xc,Yc,Zc,1)T,则存在如下的关系:

其中,R是3×3的正交单位矩阵(也成为旋转矩阵),t是三维的平移向量,矢量 ,M1是4×4矩阵。

外参矩阵是世界坐标系到相机坐标系的变换。既然是变换,我们就能够将其表达为[R t],齐次形式为在这里插入图片描述

空间某个点p,其在世界坐标系下表示为[xw,yw,zw,1],在相机坐标系下表示为[xc,yc,zc,1],那么它们具有如下关系:

å¨è¿éæå¥å¾çæè¿°

带入到相机矩阵表达式中可以得:

å¨è¿éæå¥å¾çæè¿°

合并等式右边2、3两个矩阵:

å¨è¿éæå¥å¾çæè¿°

到此,我们就看到了一个比较常见的内外参数矩阵的写法,等式右边,第一个矩阵为内参矩阵(3x3),第二个矩阵为外参矩阵(3x4),合起来就是相机矩阵,它建立了三维点齐次坐标到二维点齐次坐标的变换。

5.争议讨论

外参矩阵常被误解为相机坐标系到世界坐标系的变换(刚好反了),等效的误解表达为:相机在世界坐标系下的位置姿态。

我认为准确的表述应该是:
外参矩阵是世界坐标系在相机坐标系下的描述(或者位置姿态)
等价于外参矩阵是从世界坐标系到相机坐标系的变换
它确实也确定了相机在世界坐标系下的位置姿态,但相机位置姿态是外参矩阵的逆。
再说细一些:
R的每一个列向量表示世界坐标系的每一个坐标轴在相机坐标系下的指向;
t表示世界坐标系原点在相机坐标系下的表示。


原文链接:https://blog.csdn.net/lingchen2348/article/details/83052214

总结:

 

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip 基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值