车载环视拼接系统的设计与实现(二):摄像机成像原理_环视摄像头原理-程序员宅基地

技术标签: 机器视觉  图像处理  摄像机成像原理  车载环视系统  

 摄像机成像原理:

        摄像机成像过程可以用一个简单的针孔摄像机模型来阐述,把针孔比作一堵墙中的一个点,而光线只能通过这个孔进入相机进行投影,物点到针孔平面距离与像点到针孔平面距离成线性比例关系,但实际是针孔并不能快速反射光线,得到图像,因此一般引用透镜来得到汇聚的光线,但是引入透镜带来的问题是背离了针孔摄像模型的线性模型,从而引入透镜畸变。理想无畸变摄像机针孔模型如图所示。


                               理想无畸变摄像机针孔模型

其中  f为焦距, z为物距。

       摄像机成像模型分为线性和非线性模型两种,线性成像模型为摄像机的理想模型,一般的摄像机也存在一定的畸变,对于鱼眼摄像机,由于畸变较大,一般用非线性模型来描述。 鱼眼镜头的成像原理与普通的镜头一致,但是由于鱼眼镜头的焦距相对于普通摄像头的焦距小很多,而镜头的成像角度会随着焦距的减小而增大,所以鱼眼镜头的成像角度比普通的镜头要大。

描述物体成像过程涉及到的坐标系有:

世界坐标系: 一般为了描述物体方便自己定义的坐标系,一般以X,Y轴平面为地面,可通过旋转和平移后得到相机坐标系

相机坐标系:以摄像机的针孔平面建立的坐标系,一般选取针孔平面为X,Y轴平面。

图像坐标系:图像坐标系是指相机坐标系中的点经过投影后变为二维图像平面

像素坐标系:像素坐标系与图像坐标系主要是原点不一样。


各坐标系之间关系转换:

1、世界坐标系与相机坐标系关系

       构建世界坐标只是为了更好的描述物体与相机的位置关系,如图所展示一个现实中的物体是如何在摄像机中成像的。于是从世界坐标系到相机坐标系,涉及到旋转和平移。以世界坐标系分别绕坐标轴X,Y,Z旋转,再对原点进行平移即可把世界坐标系转为相机坐标系。

世界坐标系绕Z轴旋转关系式:(具体怎样推导出矩阵R1,网上有比较详细的解释可参考https://www.cnblogs.com/meteoric_cry/p/7987548.html)

其中Xw,Yw,Zw 表示世界坐标系下的坐标点, Xc,Yc,Zc表示相机坐标系下的点,同理可根据上述公式,可知对于分别绕 X,Y轴旋转的结果如下:



于是可得旋转矩阵R=R1*R2*R3 (3x3矩阵)

结合世界坐标系原点和相机坐标系原点间平移向量T,

可推导出世界坐标系的一点(Xw,Yw,Zw)  到相机坐标系的一点(Xc,Yc,Zc)的数学表达式如下:



2、相机坐标系与图像坐标系关系

由相机坐标系到图像坐标系的转换过程,属于透视投影变换,即把三维空间物体投影为二维图像平面。从相机坐标系到图像坐标系推导过程如下:

如图所示假设三维空间中某一点在相机坐标系下坐标为(Xc,Yc,Zc),

对应图像坐标系上一点p(x,y),   f为焦距


根据三角形相似原理:


则有:


3、图像坐标系与像素坐标系关系

由于相机坐标系到图像坐标系转换后的单位并不是图像像素单位,需要进一步转换到像素坐标系。图像坐标系(x,y)和像素坐标系(u,v)的关系:


假设dx、dy表示感光芯片上像素的实际大小即单位像素实际大小,dx、dy是连接像素坐标系和真实尺寸坐标系参数,u0、v0表示图像像素中心点,根据上图图像坐标系和像素坐标系关系示意图不难推出图像坐标点到像素坐标点的关系式:

4、从世界坐标到像素坐标

经过上面的介绍可推导出直接由世界坐标转换为像素坐标的公式:


其中假设M:


可表示为下式的形式,表示为摄像相机的内参矩阵:

其中对于摄相机内参可以通过摄像头标定法得出,后面小节将介绍摄像机标定方法。摄像机内参为后续鱼眼图畸变校正等提供计算参数。



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w77AYU/article/details/79343216

智能推荐

如何在 Linux 上安装设备驱动程序_name-of-desired-driver-程序员宅基地

文章浏览阅读2.7k次。学习 Linux 设备驱动如何工作,并知道如何使用它们。对于一个熟悉 Windows 或者 MacOS 的人,想要切换到 Linux,它们都会面临一个艰巨的问题就是怎么安装和配置设备驱动。这是可以理解的,因为 Windows 和 MacOS 都有一套机制把这个过程做得非常的友好。比如说,当你插入一个新的硬件设备, Windows 能够自动检测并会弹出一个窗口询问你是否要继续驱动程序的安装。你也可以从网络上下载驱动程序,仅仅需要双击解压或者是通过设备管理器导入驱动程序即可。而这在 Linux 操作系.._name-of-desired-driver

安装ArcGIS10.2-详细图文安装教程_arcgis安装教程10.2-程序员宅基地

文章浏览阅读2.6w次,点赞42次,收藏120次。说明:ArcGIS Decktop安装结束后,如果需要操作上面的第10和第11步来设置License的读取,可点击“开始”-“程序”-“ArcGIS”-“ArcGIS Administrator”弹出的界面中操作。说明:ArcGIS Server安装完后,只需首次进行新站点的创建,以后只需点击“开始”-“程序”-“ArcGIS”-“ArcGIS 10.2 for Server”-“Manager”进入管理界面。5.如上信息设置完成后,点击“ok”。若界面中出现“success”的字样,表示创建成功。_arcgis安装教程10.2

synchronize锁升级-程序员宅基地

文章浏览阅读625次,点赞13次,收藏11次。Java中的synchronized关键字用于实现线程同步,保证多个线程对共享资源的操作具有原子性和可见性。在不同的JDK版本中,对synchronized的优化过程可能有所不同。在旧版本的JDK中,synchronized关键字的底层实现是依赖于操作系统的底层互斥量(mutex)来实现的。每次进入synchronized块时,会使用操作系统提供的互斥量进行加锁和解锁。这种方式在竞争不激烈的情况下效率较高,但在高并发场景下可能存在性能问题。从JDK 1.6开始,Java引入了和来优化。

日常软件集合-程序员宅基地

文章浏览阅读90次。2019独角兽企业重金招聘Python工程师标准>>> ..._mac astah community

服务器能ping通外界,但是外界无法ping通服务器_linux服务器能ping外面但是不能被ping-程序员宅基地

文章浏览阅读4.5k次。服务器直接接入路由器来获取ip(192.168.1.101)等等,所以可以直接ping通外界ip,但是不能被外界直接访问。先是关闭了防火墙,发现无济于事serivce iptables stop后来发现新服务器是通过路由器在连接到公网,所以外界根本不可能直接ping通这个192.168.2.101于是需要进入到路由器的设置界面进行修改,直接打开浏览器,输入路由器地址192.168.1.1,输入管理员密码进行设置。需要设置两处:1.设置DMZ,需要将DMZ打开2.设置虚拟路由器,让路由器能够转_linux服务器能ping外面但是不能被ping

11个值得珍藏的4K高清壁纸网站推荐_wallpaper abyss 官网-程序员宅基地

文章浏览阅读5.4w次,点赞33次,收藏248次。前言由于前几天因需求须找一些视觉素材,翻来覆去整了一些,整理了10个图片素材网站可以给大家收藏使用&作为打开电脑 or 手机第一眼就看到的桌面,给它设置一个赏心悦目的桌面壁纸还是必不可少的。下面分享了 10 个值得珍藏的高清桌面壁纸网站,支持各种图片比例和分辨率,从 720P 到 4K、8K 应有尽有,电脑和手机都可以使用。高清桌面壁纸网站1. Awesome Wallpapers - wallhaven.cc官网:https://alpha.wallhaven.cc/.._wallpaper abyss 官网

随便推点

2023年MathorCup数学建模C题思路 - 电商物流网络包裹应急调运与结构优化问题_数学建模物流配网络问题-程序员宅基地

文章浏览阅读720次。1 赛题C 题 电商物流网络包裹应急调运与结构优化问题电商物流网络由物流场地(接货仓、分拣中心、营业部等)和物流场地之间的运输线路组成,如图 1 所示。受节假日和“双十一”、“618”等促销活动的影响,电商用户的下单量会发生显著波动,而疫情、地震等突发事件导致物流场地临时或永久停用时,其处理的包裹将会紧急分流到其他物流场地,这些因素均会影响到各条线路运输的包裹数量,以及各个物流场地处理的包裹数量。_数学建模物流配网络问题

图解机器学习算法(1) | 机器学习基础知识(机器学习通关指南·完结)_机器自学习算法示意框图-程序员宅基地

文章浏览阅读1.5w次,点赞23次,收藏260次。本文覆盖机器学习常见知识要点,包括机器学习流程、算法分类(监督学习、无监督学习、强化学习)、依托的问题场景(分类、回归、聚类、降维)、机器学习模型评估与选择等。_机器自学习算法示意框图

厦门大学数据结构MOOC 5-2 Knowledge (20 point(s))-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。每个人的学识水平化为09,用09表示其学识高低程度。众所周知,与新生婴儿讨论微积分是一个非常扯淡的事情,所以,学识不为0的人群才可以参与讨论, 现在给定一个m*n的人群,给定每个人的文化程度,每个人仅可和上下左右进行讨论,所以请你求出学术讨论组的个数。输入格式:用空格隔开的整数m,n(m行,n列)矩阵(1≤m,n≤100)。输出格式:学识组的个数。输入样例:4 10067480001..._厦门大学数据结构mooc 5-2 knowledge (20 point(s))

国内免费可用的stun服务器(2020.7.14)_国内stun-程序员宅基地

文章浏览阅读5.2w次,点赞3次,收藏18次。端口号都是3478stun.xten.com stun.voipbuster.com stun.sipgate.net stun.ekiga.netstun.ideasip.comstun.schlund.destun.voiparound.comstun.voipbuster.comstun.voipstunt.comstun.counterpath.comstun.1und1.destun.gmx.netstun.callwithus.comstun.cou..._国内stun

FIFO溢出-FIFO上溢和FIFO下溢区别_fifo上溢和下溢-程序员宅基地

文章浏览阅读2.5k次,点赞3次,收藏7次。By: Ailson JackDate: 2021.11.28个人博客:http://www.only2fire.com/本文在我博客的地址是:http://www.only2fire.com/archives/141.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。在调试芯片的某个外设的时候,如果该外设带有FIFO,那么一般情况下都有FIFO上溢和FIFO下溢的错误标志位,用于表示驱动对外设的FIFO操作是否正确,下面就是FIFO上溢和FIFO下溢对应的概念:FIFO上_fifo上溢和下溢

win10系统玩部分老游戏时提示0xc0000022的解决方法._游戏0xc0000032-程序员宅基地

文章浏览阅读2.6k次。在win10系统中玩一些游戏时会碰到以下提示,"应用程序无法正常启动(0xc0000022)",这是因为win10缺少了系统的某种组件引起的,因为win10相对之前的版本会有一些旧的组件被淘汰,而那些远古游戏需要依赖那些组件才能运行,于是出现以上报错.当开启游戏时系统会主动出现以下提示,只需要点击"安装此功能"将该组件下载即可.点击搜索栏,输入"控制面板" ,然后打开控制面板.之后点击程序, 进入程序界面后点击启用或关闭windows功能. 然后下拉找到旧版组件,点击左侧+号. 将组件勾选然后单击下方确_游戏0xc0000032

推荐文章

热门文章

相关标签