相机成像原理与推导
前言
相机成像原理是一个很复杂的知识,这里只是将其简化,进行了最基础的原理分析与公式推导。文章结尾我会放出手写的推导过程(此次作业),文章为了好看还是用的电子
正文
相机成像原理说明
数码相机,手机镜头可以简单看作是一组透镜和图像传感器构成的整个光学成像系统。透镜用于约束进入的光线,而传感器则用于对光进行感受、采样和量化。相机模型是对光学成像系统的简化,目前相机模型有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。下文我们讲的都是最简单的小孔成像模型。
这里我简单谈一下为什么最后会成为小孔成像模型,这个我查了很多文章都没有找到明确的答案,所以这里只是我在看了好多文章后自己分析出来的简单结论:
我们首先讲相机的那一组透镜简化为了一个透镜,也就是认为相机镜头是一个透镜。那么这里其实仍然是与小孔成像有区别的,如图:
这样其实意味着对于一个点,其实经过镜头的也并不只是一条光线,应该如下图一样,是实像的一点有很多条光线经过透镜,经过后又汇聚成为了虚像的一点,如图:
相机的镜头是一组透镜, 当平行于主光轴的光线穿过透镜时, 会聚到一点上, 这个 点叫做焦点, 焦点到透镜中心的距离叫做焦距 f。 数字相机的镜头相当于一个凸透镜, 感光元件就处在这个凸透镜的焦点附近, 将焦距近似为凸透镜中心到感光元件的距离,那么其实也就是跟上图一样。
既然从起点与结果来看是点到点,那么我们再进一步的简化,将实像点与虚像点之间的无数条光线简化为一条单一的直线,那么现在其实就是一个小孔成像模型了。
坐标系转换
四种坐标系介绍
- 世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系。就是物体在真实世界中的坐标。点在世界坐标系中的坐标通常用Pw(Xw,Yw,Zw)来表示
- 相机坐标系:以相机的光心为坐标原点, X 轴和 Y 轴分别平行于图像坐标系的 X 轴和 Y 轴,相机的光轴为 Z 轴。
- 图像坐标系:以图像平面的中心为坐标原点,X 轴和 Y 轴分别平行于图像平面的两条垂直边, 用( x , y )表示其坐标值。 图像坐标系是用物理单位(例如毫米)表示像素在图像中的位置。
- 像素坐标系:以图像平面的左上角顶点为原点,X 轴和 Y 轴分别平行于图像坐标系的 X 轴和 Y 轴,用(u , v )表示其坐标值,单位是像素。
相机成像的过程简单来说就是将物体所在的坐标系不断转换的过程。最开始物体在三维现实中(三维的世界坐标系),最后我们要把它转移到二维图片中(二维的像素坐标系)
世界坐标系-->相机坐标系
相机坐标系是会随着相机摆放位置、角度变化的,而世界坐标系我们一般会把他固定住,所以要做此转换,两者都是三维坐标系,我们要做的就是求出转换后世界坐标系中的各个点的坐标在相机坐标系里变成了什么。
上面我们也说了,假如我们固定好的世界坐标系,那么转换坐标系其实就是对现在的世界坐标系做一系列处理,让他变成相机坐标系。
适应相机的位置需要改变世界坐标系的原点,适应相机的摆放角度需要让世界坐标系发生一些旋转。
因此,从世界坐标系到相机坐标系,涉及到旋转和平移。
首先在这里证明一下坐标系旋转后坐标点的公式,这里我使用了极坐标的方法
得到这个结论后,我们就可以很容易的写出坐标系转换中的旋转的转换过程了
最后再加上相机位置导致的平移即可
相机坐标系-->图像坐标系
现在我们要将三维坐标转换为二维坐标
实像P在成像平面中的虚像为p',我们对其进行关于光心的对称,得到p,这样我们对于光心右边的讨论就可以转化为相似三角形问题
相机坐标系的点为Pc,图像坐标系的点为p,z轴方向上s为Pc点到光心的距离,f从上面我画的图里可以知道。
于是通过相似三角形得到如下等式
展开得
将其转化为齐次矩阵
其中,s为比例因子(s不为0),f为有效焦距(光心到图像平面的距离),(x,y,z,1)T是空间点P在坐标系oxyz中的齐次坐标,(x,y,1)T是像点p在图像坐标系OXY中的齐次坐标。
注意:此时投影点p的单位还是mm,并不是pixel,需要进一步转换到像素坐标系。
图像坐标系-->像素坐标系
当前图像坐标系得单位为mm,像素坐标系的单位为pixel,所以我们要进行伸缩变换
其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx mm。
总和
整体流程如下
我们得到的各个公式如下
现在将三个公式进行整合,得到总公式
其中内参矩阵还可以进一步的整合
那么现在,我们将s
称为尺度因子(该点在相机轴距方向上与成像平面的距离),
对于内参矩阵,内参矩阵取决于相机的内部参数。其中,f为像距,dx、dy分别表示x,y方向上的一个像素在相机感光板上的物理长度(即一个像素在感光板上是多少毫米)
对于外参矩阵,外参矩阵取决于相机坐标系和世界坐标系的相对位置,R表示旋转矩阵,T表示平移矢量。
结尾
本博客参考了如下文章:
手写推导:
__EOF__

本文链接:https://www.cnblogs.com/zaughtercode/p/17229485.html
关于博主:qq:1730119093 欢迎加我讨论
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异