相机模型与坐标转换!

【三维重建】相机成像及坐标系之间的转换 本文内容为三维重建中相机成像原理和坐标系之间转换的相关知识 阅读详情

       这节博客介绍一下计算机视觉中的几何问题之一:相机模型和坐标转换,希望对各位读者有所帮助!

1.针孔相机模型——几何建模

       数码相机,手机镜头可以简单看作是一组透镜和图像传感器构成的整个光学成像系统。透镜用于约束进入的光线,而传感器则用于对光进行感受、采样和量化。相机模型是对光学成像系统的简化,目前相机模型有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。在这里,我们简要描述一下小孔成像模型,如下图所示:

        由上图可以看到,小孔成像成的是倒立的图像,随着成像平面距离小孔的远近不同,像的大小也不一样,通常的相机其成像平面,一般放置在焦平面的位置。

2.世界坐标系

       世界坐标系O_{w}-X_{w}Y_{w}Z_{w},也就是真实世界的立体空间坐标,是一个三维坐标系,点在世界坐标系中的坐标通常用 [X_{w}, Y_{w},Z_{w}]来表示,世界坐标系可以任意选取。单位:m

3.相机坐标系

       设相机坐标系用O-XYZ来表示,如下图所示,在相机坐标系中,Z 轴指向相机前方,X 向右,Y 向下,O 为摄像机的光心,也是针孔模型中的针孔。单位:m

4.图像坐标系(物理)

       设图像坐标系为O{}'-X{}'Y{}',现实世界的空间点 P ,经过小孔O投影之后,落在物理成像平面O{}'-X{}'Y{}'上,成像点为 P ′。图像坐标系的原点落在了光心在成像平面上的投影,X指向右,Y指向下。单位:m

5.像素坐标系

像素坐标系一般用O-uv来表示,其原点在图像的左上角,u指向右边,v指向左边,像素坐标是整数。单位:pixel

6.内参:从相机坐标系到图像坐标系到像素坐标系

       把世界坐标系定为相机坐标系,设空间中一点P在相机坐标系下的坐标为[X,Y,Z],在图像坐标系下的坐标为[x,y],那么这两个坐标之间满足什么样的关系呢?

如上图所示,设相机的焦距为f,根据小孔成像模型,利用三角相似性原理可以得到:

其中负号表示成的像是倒立的。为了简化模型,我们把可以成像平面对称到相机前方,和三维空间点一起放在摄像机坐标系的同一侧,如下图样子所示。

这样做可以把公式中的负号去掉,使式子更加简洁:

经过整理可得:

上式描述了点 P 和它的像之间的空间关系。不过,在相机中,我们最终获得的是一个个的像素,这需要在成像平面上对像进行采样和量化。为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面O-uv。我们假设在像素平面得到了P^{'}的像素坐标:[u,v]^{T},像素坐标系通常的定义方式是:原点O^{'}位于图像的左上角,u 轴向右与 x 轴平行,v轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。我们设像素坐标在 u 轴上缩放了 α 倍,在 v 上缩放了 β 倍。同时原点平移了[cx, cy]^{T}。那么P^{'}的坐标与像素坐标[u,v]^{T}的关系为:

将该式与上式合并整理得到:

其中,f的单位为米,\alpha,\beta的单位为像素每米,所以 f_{x},f_{y}的单位为像素。把该式写成矩阵形式,会更加简洁,不过左侧需要用到齐次坐标:

该式中,我们把中间的量组成的矩阵称为相机的内参数矩阵K(Camera Intrinsics)。通常认为相机的内参在出厂之后是固定的,不会在使用过程中发生变化。有的相机生产厂商会告诉你相机的内参,而有时需要你自己确定相机的内参,也就是所谓的标定。

7.外参:从世界坐标系到相机坐标系

        除了内参之外,自然还有相对的外参。内参表达了从相机坐标系到像素坐标系下的坐标转换,而外参则表达了从世界坐标系到相机坐标系下的坐标转换。假设P的世界坐标记为P_{w},相机的当前位姿由它的旋转矩阵 R 和平移向量 t 来描述,那么有:

上式中P的坐标都采用了齐次坐标(注意后一个式子隐含了一次齐次坐标到非齐次坐标的转换),其中T称为外参矩阵:

8.畸变

       为了获得好的成像效果,我们在相机的前方加了透镜。透镜的加入对成像过程中光线的传播会产生新的影响: 一是透镜自身的形状对光线传播的影响,二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使得光线穿过透镜投影到成像面时的位置发生变化。由透镜形状引起的畸变称之为径向畸变。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线 。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类,桶形畸变和枕形畸变,如下图所示:

       桶形畸变是由于图像放大率随着离光轴的距离增加而减小,而枕形畸变却恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。除了透镜的形状会引入径向畸变外,在相机的组装过程中由于不能使得透镜和成像面严格平行也会引入切向畸变,如下图所示:

      对于径向畸变,无论是桶形畸变还是枕形畸变,由于它们都是随着离中心的距离增加而增加。我们可以用一个多项式函数来描述畸变前后的坐标变化,这类畸变可以用和距中心距离有关的二次及高次多项式函数进行纠正:

在上式描述的纠正模型中,对于畸变较小的图像中心区域,畸变纠正主要是 k1起作用。而对于畸变较大的边缘区域主要是 k2 起作用。普通摄像头用这两个系数就能很好的纠正径向畸变。对畸变很大的摄像头,比如鱼眼镜头,可以加入 k3 畸变项对畸变进行纠正。

     另一方面,对于切向畸变,可以使用另外的两个参数 p1 ,p2 来进行纠正:

故得到:

9.相机标定

       前面已经说明,相机标定是获取相机内参的方法。对于针孔模型相机最为常用的相机标定方法是张正友标定法,使用Matlab的标定工具箱可以轻松实现相机标定。

参考:内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解

           计算机视觉-相机内参数和外参数

           What Is Camera Calibration?

           Camera Calibration

相机模型、相机标定及基于yolov5的单目测距实现 相机模型、相机标定及基于yolov5的单目测距实现1 前言2 相机模型及单目测距原理3 相机参数标定3.1 内参矩阵3.2 内参标定 1 前言 在摄像头成像过程中,物体反射的光线通过摄像头的凸透镜打在成像器件上,形成一张图片。这是一个三维物体转换为二维图像的过程。在这个过程中,丢失了物体的深度信息,所以单目摄像头很难测距。但是,我们可以通过一个强假设,来简单计算物体的距离,即假设物体是处于地面上。具体意思下面再详细说。 2 相机模型及单目测距原理 相机模型可以简单看成一个凸透镜成像的模型。下图中,XcYcZ 阅读详情

相关推荐

相机模型与去畸变方法详解

首先介绍了针孔相机的成像原理以及实际坐标和像素坐标的转换方法。然后根据实际相机存在的一些问题,引入了畸变模型,并给出了去畸变的公式方法以及详细示例程序。

个人博客 1万+

从零搭建ROS小车:我是如何用Astra相机和OpenVINO让mini2实现颜色识别与抓取的

本文详细介绍了如何从零搭建ROS小车,利用Astra相机和OpenVINO实现颜色识别与抓取功能。通过硬件架构设计、视觉感知系统优化、机器人运动规划及系统集成调试,展示了ROS在机器人应用中的强大能力。特别关注了图像数据流、坐标转换和运动规划的有机融合,为工业级机器人应用提供了实用方案。

weixin_29901799的博客 314

OpenCV实现SfM(一):相机模型

相机的标定SfM介绍SfM的全称为Structure from Motion,即通过相机的移动来确定目标的空间和几何关系,是三维重建的一种常见方法。

aipiano 5万+

PIX4D加载照片提示错误

PIX4D处理航拍数据,出现提示i0002:80%以上的图像坐标和像机模型是像同的,因此,像应的地理标签将不被采用,出现错误的原因,POS数据格式不正确,pos数据名称应该是全部的包括后缀名,例如:DSCD1793.JPG,不应该只写成DSCD1793。POS数据格式为TXT格式,各别情况CSV格式导入POS数据会出现问题的,TXT格式的通用性比较好,其它格式会存在识别的问题。

u011468564的博客 1731

相机模型、参数和各个坐标系(世界坐标系、相机坐标系、归一化坐标系、图像坐标系、像素坐标系之间变换)

文章目录说明一、相机模型1、针孔模型2、畸变(1)径向畸变1)桶形畸变2)枕形畸变(2)切向畸变(3)畸变小结二、各坐标系之间的转换1、各坐标系的定义2、各坐标系之间的相互转换模型整体公式(1)世界坐标系-->相机坐标系(2)相机坐标系-->归一化坐标系(3)归一化坐标系-->像素坐标系三、相机需要标定的参数四、参考资料 说明 写这篇博文可太费劲了!又要画图又要手打公式(还是用LaTeX语法 &#x1F600) 一、相机模型 ​ 相机成像,即将三维世界中的坐标点(单位:m

暴雨梨花博客 3万+

相机与图像--小孔成像模型与坐标系--坐标系转换

利用图像序列进行三维重建的过程,相当于把一张张由很多像素组成的二维图像还原到三维空间中的一个过程。通过了解整个投影的过程,就可以很容易理解如何利用图像进行三维重建,以及三维重建中的关键步骤是什么。该小节主要讲述单目相机的投影过程。 A. 小孔成像模型与坐标系 相机拍摄图像的过程可以简化成小孔成像的一种形式,利用这种形式可以很容易得到相机模型的数学表达式。通过相机的成像方式及其数学表达式,可以看出三维场景和图像中每一个像素之间的映射关系。通过这种映射关系,就可以将图像中的像素还原到三维空间中。若把一系列.

TFZ941214的博客 1万+

【教程】详解相机模型与坐标转换

非常详细,适合小白!

xfxuezhang.cn 8133

【MQ笔记】这可能是目前最详细的相机标定坐标转换介绍了~

在我之前的博文https://blog.youkuaiyun.com/qq_45427038/article/details/99672093里,介绍了计算机视觉系统中涉及到的4种坐标系:图像像素坐标系、图像物理坐标系、相机坐标系和世界坐标系。但是对于这些坐标系之间的转换方式介绍的比较粗略,所以今天新开一贴,专门讲讲坐标的那点事儿~ 摄像机采集的数字图像在计算机内可以储存为数组,数组中的每一个元素(像素...

M&Q的博客 3181

深度相机原理及坐标系转换

深度相机 操作系统:ubuntu18.04 显卡:GTX1080ti python版本:2.7(3.7) QQ群:加入深度学习交流群 获取学习资料 (147960154) 主要介绍深度相机的成像原理及投影坐标转换 文章目录深度相机深度相机分类相机成像原理小孔成像与凸透镜成像相机结构相机成像模型中的4个坐标系前向投影反向重建相机畸变双目视觉(Stereo)原理应用双目视觉的优缺点结构光(Structured-light)原理应用飞行时间(TOF)原理应用 参考了以下文章 深度相机-TOF、RGB双目、

water&水滴之纯の博客 1万+

相机成像模型

相机成像模型的原理以及应用

计算机视觉大讲堂 3641

【3D目标检测】单目相机成像原理

为了方便对透镜模型进一步简化,得到小孔成像的模型。小孔成像模型中,所成的像和原像之间的对应关系,全部都是连线,或者说所有的光线都没有改变方向。为了后面的分析方便,对小孔成像的模型进行进一步的调整,将成像平面画到镜头的对称位置,使得图像不再倒立。相机结构最基本的理解就是透镜模型,穿过光心的光线没有改变方向,其他光线都会在一定程度上改变方向。红色部分可以预处理出来,只要拿到深度,就可以快速得到对应的空间坐标。这里的x,y是物理坐标,不是图像当中的像素坐标。z是深度,就是物体距离相机的距离。

可乐大牛的博客 4140

相机的成像模型

在学习计算机视觉的过程中,少不了接触针孔相机的成像模型,这是基础也是容易让人混淆的东西,特别是其中参数的概念,对应的物理意义是什么。其实,相机的成像模型无非就是几个坐标系的转换,其中涉及到的坐标系有:世界坐标系(world frame)、相机坐标系(camera frame)、图像坐标系(image frame)、像素坐标系(pixel frame)。完成上面两个关系后,只需要获得图像坐标系与像素坐标系的转换关系,就可以将世界坐标系下的点投影转换为像素坐标系下了(为什么要转换到像素坐标系呢?

cg1135217680的博客 3472

3D图形学学习总结(二)—相机坐标转换(欧拉相机)

原文链接:http://www.nicemxp.com/articles/19 物体放置到世界中后,在欧拉相机模型下转换成相机坐标。 欧拉相机模型是使用位置和旋转角度(欧拉角度)定义的,其中旋转角度决定了相机的朝向。 相机位置在(camx, camy, camz),观察角度为(0,angy,0),即相机绕y轴顺时针旋转angy。如图: 如图所示,要想转换成相机坐标,首先将相机移动到原点...

nice_xp的博客 4192

【鱼眼相机模型】鱼眼相机投影模型理解

鱼眼相机模型

qq_44876051的博客 1万+

最新小旋风蜘蛛池X6.21解密版+绕过授权带教程

介绍: 1.站群管理:用你的域名在这里添加网站 2.站点优化:站点互链,内容优化 2.系统设置:开启蜘蛛池 3.采集管理(可开启自动采集) 4.缓存设置:推荐开启tkd缓存 其他的用户根据自己的实际情况后台进行配置,通常以下: 1.后台首页(这里显示系统的大致概况) 2.系统设置:蜘蛛池的基本设置(访问开关、跳转、统计等等) 3.站群管理: 1.网站管理(用你的域名在这里添加网站) 2.模型管理(可构建不同类型站点:电影、文章、论坛等等) 3.TKDB调用模板(即:title、keywords、descri

百度SEO程序下载 2937

QGIS:安装Deepness插件+应用

简单的描述了deepness的安装应用历程,重点是记录博主本次遇到的坑

fengyi157的博客 2336

针孔相机模型

在介绍针孔相机模型之前,我们先了解一些相机的相关知识。光轴:是一条垂直穿过理想透镜中心的光线。焦点:与光轴平行的光线射入凸透镜时,理想的凸镜应该是所有的光线会聚在透镜后面一点上,这个会聚所有光线的一点,就叫做焦点。焦距:一般指镜片的中心到焦点为止的光轴上的距离,入射平行光线(或其延长线)与出射会聚光线(或其延长线)相交,就能确定折射主面,这个想象的平面与镜头光轴相交处就是主点。光圈:光圈对照片的影...

爱做菜的炼丹师 2226

Catia二次开发QueryInterface的操蛋问题

探索了很久,尝试录制宏,打开部件属性窗口,然后随意设置一些属性(必须改变一些东西才能录制成功,否则不会录制到任何东西),再看录制的结果,发现原来CATIAAnalyze是从Product那里来的。例如获得一个部件的体积,找到相关接口CATIAAnalyze,但是这个部件的CATIAAnalyze的对象不知道如何获取。总结一下,写Catia二开代码,就像漂亮国那款《莫里秀》 又名《爸爸死哪了》的综艺节目,大部分时间都是在找爸爸!Catia二开很痛苦,明明已经找到接口类,但是却不知道怎么获得这个接口类的对象。

gergul的专栏 747

相机系列——透视投影:针孔相机模型

上文我们提到,三维相机是对真实世界成像的模拟,为了让三维物体在计算机屏幕上呈现出来的图像符合人眼观察效果,通常采用透视投影方式模拟相机成像,为了简化计算,可以用针孔相机模型来描述透视投影成像过程。

Mapmost的博客 8166

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 401

7.DJI-PSDK:psdk负载应用固件升级(基于RTOS)

在单片机应用程序开发阶段,我们可以借助keil5和J-LINK来直接下载应用程序进行开发和调试, 但在产品交付之后,我们对应用程序做了改动和升级,是断然不可能采用这种方式的,我们应该将新版本的程序固件打包发给客户, 能够方便用户通过DJI Assistant2选择更新负载设备的固件,导入本地固件程序包,更新负载设备。使用STM32F4 开发的负载设备从Flash 中直接读取固件文件并运行负载设备程序,因此开发者需先烧录Bootloader 再烧录应用固件,烧录Bootloader 的步骤不再赘述。

哒宰的博客 673

3D图形学学习总结(三)—相机坐标转换(UVN相机)

原文链接:http://www.nicemxp.com/articles/20 在很多情况下,欧拉相机是可行的,但是会存在一些问题,如万向头死锁。 UVN相机是使用注视目标和向量u,v,n定义的。它与欧拉相机模型的差别是如何定义相机朝向,欧拉相机使用角度,而UVN相机使用向量。定义相机的朝向:右向量u( ux, uy, uz),上向量v( vx, vy, vz),注视向量n( nx, ny, ...

nice_xp的博客 5348

【异常】SpringCloud Gateway报错503 SERVICE_UNAVAILABLE “Unable to find instance for xxx-gen“

网关服务报错,如下。

奶爸的编程之路,也就一周冷个三天 4224

【双光相机配准】红外-可见光双光相机的坐标转换原理与实现

【代码】【双光相机配准】红外-可见光双光相机的坐标转换。

sazass的博客 857

Skills入门学习路线

简单来说,Skills就像是给Claude准备的”插件包"或”工具箱”。它是一个集合,里面装了特定的操作指令(Instructions)、可执行脚本(Scripts)和相关素材(Resources)。2025 年 10 月中旬,Anthropic 正式发布 Claude Skills。两个月后,Agent Skills 作为开放标准被进一步发布,意在引导一个新的 AI Agent 开发生态。OpenAI、Github、VS Code、Cursor 均已跟进。为了更好的理解,你可以把。

十二测试录 1098

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: TensorFlow Object Detection API 源码介绍!
下一篇: 基于椭圆和大圆的测地线问题!
dulingwen
博客等级 码龄9年 519粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值