透镜

实际成像时,如果小孔过小,则入射光的强度会受到影响,进一步会影响到成像。 另一方面,由于光的波动性,在小孔的边缘上,光将发生衍射,因此,这些光将在像平面上“散播”。当小孔变的越来越小时,入射光的“散播”范围将变得越来越大,因此,入射光中越来越多的能量将会被“散播”到:偏离入射光方向的“地方”。

我们在使用针孔相机时,我们做过一个假设:针孔是无线小的一个孔。在真实物理世界中,我们的假设一般无法成立,那如果改变针孔的大小后,会发生怎样的变化呢?

如上图所示,当针孔尺寸发生改变后,穿过针孔的光线数量就会增加。光线数越多,像平面中的点就会被三维世界中物体上越多的点影响,导致图像越发模糊。针孔小了,得到的图像更清晰,但也更暗。自然而然的,我们就会想到针孔模型下的一个基本问题:我们能设计一个相机能得到既清晰又明亮的图像吗?

为了解决小孔相机的上述问题,我们现在考虑:在成像系统中使用透镜。镜头可以使光线聚焦或分散,如果我们选用一个理想的透镜替代针孔,那他应该具有以下特性:P点发出的所有射线,经镜头折射后,聚焦在像平面上P′点。

假如我们另取一点 Q,在像平面上的投影点则可能是模糊或失焦的。每个镜头都会有特定的准确对焦的距离,在摄影学或计算机图形学中也叫景深(depth of field)。

镜头能够讲所有平行于光轴的光线折射到同一个点,称之为焦点。焦点和光心的距离即为焦距f。从光心穿过的光线不会偏离原始方向。
一个理想的透镜具有如下两个性质:

  • 它的投影方式和小孔模型相同
  • 将一定数量的光线汇聚在一起。

畸变模型参数

相机的内参除了以上fx, fy, u0, v0,还包含畸变系数[k1, k2, p1, p2, k3]
理想的透镜是没有畸变的。但是,因为制造和安装精度等方面的原因,镜头总是存在这畸变。畸变是相机固有特性,同款相机的畸变也会有些许差异,但是其和相机内参一样,标定一次即可。

畸变参数分为径向畸变(Radial Distortion)和切向畸变(Tangential Distortion),除了这两种之外也还有其他类型畸变,但是没有这两种显著,故忽略不计。

径向畸变

径向畸变来自透镜形状不规则以及建模的方式,导致镜头不同部分焦距不同。光线在远离透镜中心的地方偏折更大(枕型畸变)或更小(桶形畸变)。

从径向畸变开始。实际摄像机的透镜总是在成像仪的边缘产生显著的畸变,如下图所示。对某些透镜,光线在远离透镜中心的地方比靠近中心的地方更加弯曲。

对径向畸变,成像仪中心(光轴)的畸变为0,随着向边缘移动,畸变越来越严重。当然,在实际的相机中,这种畸变比较小,而且可以用r=0位置周围的泰勒级数展开的前几项来定量描述。

下图显示矩形网格因径向畸变而产生的位移。越远离光轴中心的地方,矩形网格上的点偏移越大。

下图描述了3种常见的畸变情形,桶形畸变通常k1>0,枕形畸变通常k1<0。

切向畸变

切向畸变来自于整个摄像机的组装过程。由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的,如下图所示:


切向畸变可以用两个额外的参数p1和p2来描述:

去畸变计算

到目前位置,相机的模型已经建立起来了,以下公式中的矩阵描述了相机的固有参数

有时(u0, v0)也写作(cx, cy),以及畸变参数:Distortioncoefficients=(k1,k2,p1,p2,k3)

决定这两个矩阵的过程,便是相机标定。通常,把摄像机对准一个有很多独立可标识点的物体,在不同角度观看这个物体,进一步可通过每个图像来计算摄像机的相对位置和方向,以及摄像机的内参。

在内参标定完成后,可以建立三维坐标和二维图像的关系:

综合径向畸变和切向畸变,我们总结出去畸变公式:

  • Ideal point (xu,yu)为理想点
  • real point (xd,yd)为实际点
  • dr为径向畸变,参数为{k1, k2, k3}
  • dt为切向畸变,参数为{p1, p2}
    于是通过下面的变换,可以得到没有畸变的标定结果:

    等式右边的(x, y)为得到的图像中的理想点,但是存在畸变,于是把其带入等式右边,经过径向和切向变换后,得到左边的畸变校正后的实际点坐标(xcorrected, ycorrected),取出对应颜色值作为(x, y)的颜色值即可。通过去畸变,可以完成图像的矫正,如下图:

    注:以上文字和图片均来源于链接,若有侵权请联系转载方删除。

相机畸变模型及去畸变计算相关推荐

  1. 相机畸变原因与去畸变原理与代码

    相机畸变原因与去畸变原理与代码 相机主要有两种畸变:径向畸变和切向畸变 径向畸变由透镜形状引起的畸变: 切向畸变由相机组装过程中透镜与成像面不严格平行导致的. 一个畸变效果图: 我们能够看到位于图像边 ...

  2. 立体视觉 -- 相机畸变矫正(去畸变)

    相机畸变矫正 在双目立体视觉中,常常会使用张正友的相机标定方法,得到相机的参数(相机内参和畸变),进而矫正由于相机透镜制造工艺等因素造成的图像畸变.在Opencv 和 Matlab 中都有封装好的函数 ...

  3. 读取摄像机的内参和畸变系数并对畸变图像进行去畸变

    这个程序的目标是读取摄像机的参数(内参和畸变系数),并对畸变图像进行去畸变操作,然后进行一些特征点和矩形框的绘制. #include 语句引入所需的库. using namespace std; 和 ...

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

    相机与图像模型 一.针孔相机模型 1.1 成像原理 1.2 实际坐标与像素坐标的关系 1.3 如何获得实际坐标 二.畸变相机模型 2.1 两种常见畸变的介绍 2.2 去畸变方法 2.3 示例程序 相机 ...

  5. 根据相机内参进行图像去畸变

    cv::Mat img; cv::Mat img_undistort; double fx,fy, cx, cy, k1, k2, p1, p2, k3;for(int v = 0; v < i ...

  6. 照片畸变校正 python_去畸变 opencv

    相机畸变主要是由于透镜成像原理导致的,其畸变的原理可以参考相机模型,它的畸变按照原理可以分解为切向畸变和径向畸变. 畸变校正 opencv提供了可以直接使用的矫正算法,即通过calibrate Cam ...

  7. 2.3ORBSLAM3之相机模型与畸变模型

    1.简介 主要内容: 1. 对SLAM中常见的相机模型进行介绍,包括针孔相机模型和鱼眼相机模型 2. 对每种相机模型的畸变模型进行介绍 3. 对VSLAM中常见的几种去畸变方法进行介绍 4. 对常见的 ...

  8. 针孔相机模型和相机镜头畸变模型

    针孔相机模型和相机镜头畸变模型 一.针孔相机模型 图1. 针孔相机模型 针孔相机模型(如图1所示)存在四个坐标系:世界坐标系.摄像机坐标系.图像物理坐标系和图像像素坐标系.假设现实世界的空间点的世界坐 ...

  9. 从普通相机模型到鱼眼畸变模型--标定与去畸变

    目录 普通相机模型 普通成像模型 针孔模型与透镜组: 径向畸变 切向畸变 现代手机摄像头的基本组成 内参矩阵 畸变模型 张氏标定法 鱼眼模型 透镜组 r和f的进一步说明 等距投影模型(OpenCV:: ...

最新文章

  1. mysql内连接运算量会增加多少_新年手打,40道经典MYSQL面试干货,速来收藏
  2. 面试问什么是无损降级?
  3. 51nod 1298:圆与三角形(计算几何)
  4. Oracle Varchar2 字段转成Clob字段
  5. MT6575 3G切换2G
  6. bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队【st表||线段树】
  7. JavaSE面向对象学习笔记总结
  8. 模糊搜索怎么实现_干货 | 你真的了解自己是怎么搜索的吗_01
  9. java飞行记录器是什么_运行java飞行记录器JFR(java flight recorder)
  10. mysql集群session_集群session解决方案
  11. heic格式转化jpg方法
  12. 7.1 布朗运动定义及构造
  13. Vue传递数组对象报property path is neither an array nor a List nor a Map
  14. java.net.SocketException: Unrecognized Windows Sockets error: 10106: create
  15. UE4实现风格化渲染(一):UserNormalTranslator工具的使用
  16. 徐徐图之红楼之花自飘零水自流房东和房客彼得·潘与辛德瑞拉
  17. 科学-天文学:天文学百科
  18. 数据结构之树从入门到如土(四)----从零开始入门Rust实现一颗B树(未完成待续)
  19. Java微服务面试题整理
  20. 开门的磁卡在哪里配_电子门禁卡怎么配

热门文章

  1. 程序员的生存技巧 — 搜索技巧
  2. 设计模式【java提高】
  3. 计算机很快就会冷却,不会产生热量
  4. 零基础学3D游戏建模需要多久?
  5. 如何使得搜索的内容更准确?
  6. 内网和外网的通讯原理
  7. 自定义实现Java动态数组
  8. 用协程的方式下载英雄联盟的高清皮肤
  9. CI框架文件上传+多文件上传+文件下载
  10. Jupyter Notebook:简介