相机参数标定(cameracalibration)及标定结果如何使用「建议收藏」腾讯云开发者社区

一直都想写一写这个主题,但是,一直都感觉有点虚,也没有去整理。在网上搜了一下,发现大多数都是转来转去,看着也是似懂非懂的,让人很老火。所以,我就按照自己的理解,尽量简单易懂一点,也便于以后的应用。如有不足或者错误之处请指出,还请指出。

1、相机标定的意义

2、坐标系的变换

2.1、小孔成像的原理

小孔成像的原理可以用下图来说明:

2.2、各个坐标系的定义

为了说明白,建议先介绍图像的坐标系,再逐步推广到世界坐标系,最后说明各个坐标系是如何变化的,从而给出相机的内参和外参。

2.2.1、像素坐标系

像素坐标就是像素在图像中的位置。一般像素坐标系的左上角的顶点就是远点,水平向右是u,垂直向下是v轴。

例如,在上图中,任意一个像素点的坐标可以表示为(ui,vi)。

2.2.2、图像坐标系

在像素坐标系中,每个像素的坐标是用像素来表示的,然而,像素的表示方法却不能反应图像中物体的物力尺寸,因此,有必要将像素坐标转换为图像坐标。

将像素坐标系的原点平移到图像的中心,就定为图像坐标系的原点,图像坐标系的x轴与像素坐标系的u轴平行,方向相同,而图像坐标系的y轴与像素坐标系的v轴平行,方向相同。

在图中,假设图像中心的像素坐标是(u0,v0),相机中感光器件每个像素的物力尺寸是dx*dy,那么,图像坐标系的坐标(x,y)与像素坐标系的坐标(u,v)之间的关系可以表示为:

写成矩阵的形式就为:

改写为齐次坐标的形式:

2.2.3、相机坐标系

相机坐标系是以相机的光轴作为Z轴,光线在相机光学系统的中心位置就是原点Oc(实际上就是透镜的中心),相机坐标系的水平轴Xc与垂直轴Yc分别于图像坐标系的X轴和Y轴平行。在图中,相机坐标系的原点与图像坐标系的原点之间的距离OcOi之间的距离为f(也就是焦距)。

上图中,如果有一个物体成像到图像坐标系,则可以用下图来表示(B点是相机坐标系中物体的点坐标,P是图像坐标系中成像的坐标):

可以知道相机坐标系与图像坐标系的关系为:

(1)本文的第一个图就是小孔成像的原理图。像平面就是成像的位置,这个是用户自己设定的,就是CCD传感器的位置,而焦平面就是镜头的焦距所在平面。当像平面刚好和焦平面重合时,此时所成的像是最清晰的。所以,这也就是为什么上面的公式中相机坐标系的原点到图像坐标系的原点的距离就是焦距。(实际上,由于物理条件的限制,像平面和焦平面是不可能完全重合的。)

(2)同样是本文的第一个图,我们可以看到像平面在光学系统的右面,而在推导相机标定的坐标系关系时,却认为光线先通过成像平面,再在相机坐标系上汇聚到一个点,实际上,如果用下图来说明,可能就更清楚一点。就是推导的时候,把像平面用虚拟像平面代替了。

2.2.4、世界坐标系

世界坐标系是图像与真实物体之间的一个映射关系。如果是单目视觉的话,主要就是真实物体尺寸与图像尺寸的映射关系。如果是多目视觉的话,那么就需要知道多个相机之间的关系,这个关系就需要在同一个坐标系下进行换算。在下图中,世界坐标系的原点是Ow,而Xw,Yw,Zw轴并不是与其他坐标系平行的,而是有一定的角度,并且有一定的平移。

当对相机坐标系安装一定的参数,分别绕着X,Y,Z轴做平移和旋转后,就得到在世界坐标系中的坐标。

平移表示:

而对于旋转,可以采用如下的方法,给定一个基本旋转矩阵和基本矩阵

对于三坐标轴旋转,当绕着X轴旋转时,保持基本矩阵的第1列不变,有如下的旋转矩阵

当绕着Y轴旋转时,保持基本矩阵的第2列不变,有如下的旋转矩阵

当绕着Z轴旋转时,保持基本矩阵的第3列不变,有如下的旋转矩阵

那么,整个相机坐标系到世界坐标系的变换公式为

2.3、相机的内参和外参

通过前面的几个步骤,我们已经得到了各个坐标系之间的相互转换关系,进一步的就可以得到从像素坐标系到世界坐标系的变换关系:

公式中,红色的框框就表示相机的外参,可以看到,外参就是相机相对于世界坐标系的旋转和平移变换关系。内参是相机固有的属性,实际上就是焦距,像元尺寸。同时还可以看到,公式中有一个Zc,它表示物体离光学中心的距离。这也就说明,在标定的时候,如果物体在距离相机的不同位置,那么我们就必须在不同的位置对相机做标定。简单点来理解就是,当物体离相机远的时候,在图像上就很小,那么一个像素代表的实际尺寸就大,当物体离相机近的时候,那么成像效果就大,一个像素代表的实际物体尺寸就小。因此,对于每一个位置都需要去标定。

先说一说什么叫齐次坐标系:能够明显的区分点与向量,并且便于计算机做图形处理时进行仿射变换的坐标系。

在欧式空间,两条平行线是不会相交的(可以想象成两条平行的光线)。但是,再想象一下或者我们经常看到的例子,比如平行的火车轨道,如果我们站在火车轨道的正中间,向很远处观察两条轨道,是不是感觉两条轨道在很远处相交了,这就是透视空间。透视的英文单词是perspective,英文单词的解释是:theartofcreatinganeffectofdepthanddistanceinapicturebyrepresentingpeopleandthingsthatarefarawayasbeingsmallerthanthosethatarenearerthefront。仔细的揣摩一下就类似于坐在那个地方画画,怎么表达轨道是无限往前走的呢,这就是一种透视的原理。

例如,在欧式空间,表示一个三维的点和一个三维的向量可以采用如下的方法

由于向量只有方向和大小,如何只给出(x,y,z),鬼知道这到底是向量还是点。好了,如何来做呢。

通过矩阵的变换

可以看到,点和向量区分的方式是最后一个数值是否为1。

(1)从普通坐标系变换到齐次坐标系

如果是点(x,y,z)则变换为(x,y,z,1)

如果是向量(x,y,z)则变换为(x,y,z,0)

(2)从齐次坐标系变换到普通坐标系

如果是点(x,y,z,1)则变换为(x,y,z)

如果是向量(x,y,z,0)则变换为(x,y,z)

有了这些准备之后,我们知道,相机成像的过程就类似于上面我们说的透视变换的过程(这个过程不详细说,大致理解就行,可以参考专业的书籍),也就类似于画画。因此,普通坐标系上的点,就可以通过在后面加上一个1的方式来实现。又由于标定过程中的各个坐标系的变换,实际上就是坐标系中各个点的变换关系,因此,采用齐次坐标系不仅便于区分,而且有利于后面的计算。想了一下,大致画一个相机成像的透视变换图

3、图像畸变及畸变矫正

3.1、相机的畸变模型

畸变的英文单词是distortion。从英文的意思来看就是物体看起来是不正常的,比如说形状改变了,扭曲了或者其他的变化。

造成图像畸变的原因有很多,总结起来可以分为两类:径向畸变和切向畸变。

3.1.1、径向畸变

可以这样来理解,对于透镜而言,以透镜的中心作为原点,往外是透镜的半径的方向,当光线越靠近中心的位置,畸变越小,沿着半径方向远离中心的时候,畸变越大。典型的径向畸变有桶形畸变和枕形畸变。如下图所示。

径向畸变的矫正公式如下(这里不给出推导过程,直接使用)

式中,(x,y)是理想的无畸变的坐标(图像坐标系),(xdr,ydr)是畸变后图像像素点的坐标,而且,

3.1.2、切向畸变

切向畸变可以这样理解,当透镜与成像平面不行时,就产生了畸变,类似于透视变换。打个比方的例子。

切向畸变的矫正公式如下(这里不给出推导过程,直接使用)

3.2、畸变矫正

通过上面介绍的径向畸变和切向畸变模型,可以得到两个模型最终作用于真实图像后的矫正模型。

为什么是相加呢,可以这样理解,畸变就是距离的变化,而距离的变化反映到坐标值上就是加减的关系。

4、相机参数标定到底怎么用

当求解出了相机的内参和外参后,那么如何使用这些参数呢?下面做一个大致的说明。

上面的理论部分是通用的,但是,在实际的应用过程中,却有区别。比如说,在我的项目经验中,有用到单目视觉的情况,也有用到双目视觉的情况。

对于单目视觉而言,实际上我们是没有必要知道世界坐标系的,因为,我们没必要去探究到底我这一个相机处于世界坐标坐标系的什么位置。据我了解,如果采用单目视觉的立体图像匹配,或者空间位置定位,应该需要用到空间位置信息。那么,在通常的单目视觉应用中,求得内参和畸变参数后,就可以对新拍摄的图像做变换和矫正。矫正完拍摄的图像之后,就可以对图像做其他处理了。

对于双目视觉而言,需要用到世界坐标系。对单目视觉做完内参和畸变参数的矫正之后,就可以用这些变换后的图像,同时结合世界坐标系实现定位或者其他用途了。

5、一个相机标定的实例

5.1、标定采集的数据图像

5.2、图像处理

实际上这一步就是角点提取,有很多算法,例如DoG,FAST,sift,surf等算法。不再一一列举。下图是提取角点后的结果(OpenCV函数:findChessboardCorners)。

5.3、相机参数的计算

直接调用OpenCV中的函数来计算

calibrateCamera()

当输入一副新的拍摄的图像后,就可以用计算得到的参数,去矫正这幅图(本文只是单目视觉的矫正),用OpenCV中的函数来实现的。

THE END
1.第3.3课《创作木制飞机模型》(教案)2024压岁钱袋 (教学设计) 《交通标志我会认》第一课时(教学设计) 《二、整理书包》(教案) 光荣的少先队(教案) 遵守纪律我能行(教案) 《学习习惯调查》(教案) 五年级上册综合实践教案-5.3龙宫觅宝 |沪科黔科版 活动三 学会发豆芽(教案) 《绿色小卫士——垃圾分类与环保实践》(教案) 《6 奇妙的剪纸》(教案)https://www.zxxk.com/soft/48911289.html
2.(完整版)《威尼斯的小艇》公开课教学设计经管文《威尼斯的小艇》公开课教学设计 《威尼斯的小艇》公开课教学设计 第一课时 一、教学目标:1、读课文,https://bbs.pinggu.org/thread-12856282-1-1.html
3.WordPress主题7B2模版登录窗口美化有子主题就放在child.js文件中 $(function(){/*弹窗登录效果-www.xiaohuli.vip*/$("#login-box .login-box-content").addClass("b2-radius");$('.login-box-content').prepend(''+''+''+'WordPress主题 7B2登录窗口'+' 日常办公、行业软件完备全套'+' 影视动漫、学习教程应有尽有'+' https://blog.csdn.net/QWQ123Q/article/details/144005901
4.B52战略轰炸机的驾驶舱军工企业军事战术军用飞行器BB-52战略轰炸机的驾驶舱2024-05-20 16:37:07 大自然的合唱 山东 举报 0 分享至 0:00 / 0:00 速度 洗脑循环 Error: Hls is not supported. 视频加载失败 大自然的合唱 3712粉丝 大自然的合唱 00:34 母狮将自己的幼崽推到水中后又救起 02:45 料很足的印度街头美食 01:04 Torso,一个用https://www.163.com/v/video/VI1ND27NS.html
5.wordpress主题模板wordpress企业主题柒比贰(7B2)主题是一款集合wordpress企业主题、wordpress微信主题的wordpress多功能高级付费主题模板,全面支持微信登陆、微信支付、微信公众号、微信小程序和APP等各个场景。https://7b2.com/page/510
6.主机007主机向导B2 PRO主题5.4.2最新免授权版 B2 PRO 5.4.2 最新免授权版不再需要改hosts,和正版一样上传安装就可以激活。并且不限域名,之前总有人说换了域名进不去网站之类的,现在不存在该问题啦。https://mega.nz/folder/wUMSAJAZ#pcy- 资源下载 wangzhe125886个月前 https://www.zhuji007.com/
7.kafka公网和内网kafka网络协议比如为某个主题增加了若干分区,控制器在负责创建这些分区的同时要更新上下文信息,并且需要将这些变更信息同步到其他普通的broker节点中。不管是监听器触发的事件,还是定时任务触发的事件,或者是其他事件(比如ControlledShutdown,具体可以参考《优雅关闭》一节)都会读取或更新控制器中的上下文信息,那么这样就会涉及多线程间的https://blog.51cto.com/u_16099346/9791583
8.ASDASoftV5.3.3.0台达伺服驱动器软件.zipASDASoft_5.3.3.0 台达Delta ASDA A2-Soft是台达电子专为伺服驱动器开发之特殊软体,现阶段支援ASDA-A2、ASDA-B2之机种,软体功能齐全,包含示波器监控,装置监控,异警监控,数位输入输出控制,参数编辑器,自动调机功能等等。 ASDA-Soft软体目的在于让使用者可以非常快速的熟悉并使用,所以各界面设计时都致力于简单容易操作https://www.iteye.com/resource/weixin_38744435-11664819
9.物流审计研究范文6篇(全文)“成本、效率、服务”的管理主题, 实现精确的核算、精细的管理和精准的服务, 具体目标是低本高效运作、快速响应市场, 促进客户满意度提升, 努力提升烟草2. 仓储分拣评价 (B2) 仓储分拣评价指标用于衡量卷烟物流仓储管理和分拣包装环节的作业水平, 是审计评估卷烟物流内部作业效率的重要手段, 对加强仓储、分拣环节https://www.99xueshu.com/w/ikeyakmso59t.html
10.Tkinter入门教程您也可以根据需要更改字体颜色和其他属性。例如,您可以创建多个不同的自定义字体对象,用于表示不同的颜色主题,并在程序运行时动态地切换它们。 3. 组件讲解 3.1 tkinter 的核?组件 在tkinter 中,有 21 个核?组件,它们提供 了GUI开发的完整功能,因为使?频率较?。 https://developer.aliyun.com/article/1413897
11.晚会策划方案(通用15篇)b2:银行xx分行XX年总结表彰大会暨迎新春联欢晚会 合:现在开始! 进入章节环节,表演共分三个章节,主要以演唱、舞蹈、语言类节目为主,中间加以其他形式多元化的节目进行穿插组合而成,我们做的以下安排的节目与章节主题相关。 第一乐章关怀大爱无痕 章节片头视频——关怀温情回顾(vcr)用三种情感来体现xx银行在多年来的https://mip.oh100.com/a/202211/5586786.html
12.GitHubdevwan/GitHubChineseToplenve/VBlog V部落,Vue+SpringBoot实现的多用户博客管理平台! 5.3 Java 05/15 ?回到目录 Java #RepositoryStarsLanguageUpdated 1 2018/CS-Notesnewpanjing/simpleui A modern theme based on vue+element-ui for django admin.一款基于vue+element-ui的django admin现代化主题。全球+网站都在使用!https://github.com/dev-wan/GitHub-Chinese-Top-Charts/tree/bac4dc5cedc0b22193a703809398e72296eaa697
13.更新日志开源商城新零售系统免费多商户B2B2C5.3.9 2024-05-28 15:26:19 单商户V5.3.9更新说明 注意事项: 1、升级前请先做好备份! 2、升级之前请注意php版本配置到7.4 3、确保授权域名与当前支持主题风格变化 * 商品列表样式调整 * PC端,首页滚动一段距离,随便点击商品进入详情,滚动位置就在底部,要滚动到顶部 0 的位置 * PC端,商品列表增加一http://api.niushop.com/web/product/update.html?product_key=B2C_V4
14.漫步者B2室内电视壁挂音响拼接道闸工程广播类 音响设备 室内壁挂系列 漫步者 B2 室内电视壁挂音响 对比 收藏(0) 漫步者 B2 室内电视壁挂音响蓝牙5.3光纤,同轴,APP控制主题 回复 浏览 作者 时间 暂无讨论帖 点击浏览全部 猜你喜欢 日日高KD-501 惠威款壁挂 1件/20只(独立包装)额定功率20W 登录可见 日日高木纹壁挂 https://www.lnxmt.com/goods.php?id=28726
15.食品中黄曲霉毒素B1B2G1G2的测定方法6.3.2.1.2 展开:同GB/T 5009.22中5.3.2.1.2。 6.3.2.1.3 观察及评定结果: 6.3.2.1.3.1 在紫外光灯下观察第一、二板,若第二板的第二点在黄曲霉毒素B1、B2、G1、G2标准点的相应处出现最低检出量,而第一板在与第二板的相同位置上未出现荧光点,则样品中黄曲霉毒素B1、G1含量在5?g/kg以下;B2、G2https://m2.antpedia.com/blog/260774.html
16.组合式空调机组GB/T1429493(全文完整版)6.3.2 盘管耐压性能试验 在5.3.2规定的试验压力条件下试压。 6.3.3 额定风量和全压试验 应按附录A(补充件)或附录B(补充件)规定的方法进行试验,型式检验时,当额定风量小于等于60000m3/h时,应按附录A的方法试验,当额定风量等于大于80000m3/h时,可按附录B的方法试验。 http://www.iwuchen.com/a-51/
17.XSR32FC系列流量积算仪XSR32FCIKRIB1B1V0XSR32FC2 组 参数名称 取值范围 地址 默认值 章节 设计工况压力 -99999~99999 MPa 46H 00000 5.6 无温度、固定温度、公式计算、PT100、 温度输入信号 CU100、CU50、K 偶、T 偶、E 偶、S 偶、 4FH PT100 5.3 4-20mA、0-10mA、0-20mA 3.4 参数设置 温度小数点 00000.、0000.0、000.00、00.000、0.0000 0BH https://max.book118.com/html/2022/0802/8142135112004124.shtm
18.华为(HUAWEI)手环B2商务版怎么样B2比上一代外观更为时尚,同时金属托架部分还采用了高强度航空铝材,整体更加轻薄和坚固。在腕带方面还提供有抗敏TPU软胶材质和真皮两种。B2最大的变化就是加入了一块高清触摸屏幕,通过内置的6轴传感器,可进行各种精确的识别。金属机身、触屏控制、兼容安卓和IOS系统都是这款智能手环的亮点。 https://best.pconline.com.cn/product/2043.html