透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。

1. 径向畸变

顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图:

成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式为:

公式里(x0,y0)是畸变点在成像仪上的原始位置,(x,y)是畸变较真后新的位置,下图是距离光心不同距离上的点经过透镜径向畸变后点位的偏移示意图,可以看到,距离光心越远,径向位移越大,表示畸变也越大,在光心附近,几乎没有偏移。

2. 切向畸变

切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述:

下图显示某个透镜的切向畸变示意图,大体上畸变位移相对于左下——右上角的连线是对称的,说明该镜头在垂直于该方向上有一个旋转角度。

径向畸变和切向畸变模型中一共有5个畸变参数,在Opencv中他们被排列成一个5*1的矩阵,依次包含k1、k2、p1、p2、k3,经常被定义为Mat矩阵的形式,如Mat distCoeffs=Mat(1,5,CV_32FC1,Scalar::all(0));这5个参数就是相机标定中需要确定的相机的5个畸变系数。求得这5个参数后,就可以校正由于镜头畸变引起的图像的变形失真,下图显示根据镜头畸变系数校正后的效果:

图像处理:透镜畸变及校正模型相关推荐

  1. 图像处理中消除相机透镜畸变和视角变换

    from:图像处理中消除相机透镜畸变和视角变换 一般的针孔相机模型如下: 三维坐标点经过透视投影变换,转换到一个图像平面坐标点. 而相机透镜还存在一定的畸变,包括横向畸变和切向畸变. 因此,针孔相机模 ...

  2. 透镜畸变和畸变校准(OpenCV)

    透镜畸变和畸变校准(OpenCV) 透镜畸变 理想的相机模型应该是小孔成像模型,但由于透镜制造和相机镜头安装等因素,必然会导致畸变的存在.畸变主要分为径向畸变.切向畸变和薄棱镜畸变. 1.径向畸变 径 ...

  3. 数字图像处理:图像变换的基本模型

    数字图像处理:图像变换的基本模型 一.常用图象的变换模型 变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型.可采用的变换模型有如下几种:刚性变换 ...

  4. MRI图像处理——图片不均的校正

    MRI图像处理--图片不均的校正 面向MRI影像的处理 图像不均匀性产生的原因:现有的MRI成像因为多个线圈并行会导致,随着距离变化,线圈的灵敏度下降,信号强度出现了变化,形成了不均匀的磁场由于磁场的 ...

  5. matlab怎么转换广角照片,广角相机非规则畸变全域校正方法与流程

    本发明属于视觉测量领域,涉及广角相机非规则畸变全域校正方法. 背景技术: 随着计算机行业和芯片行业的飞速发展和不断更新,智能驾驶.智能监控等技术不断成熟.相机的作用和应用有了很大的发展,相机不仅仅是获 ...

  6. 6S大气校正模型源码

    转载:http://blog.sina.com.cn/s/blog_678716330102v8g8.html 6S的源码是用FORTRAN来写的,想要对6S有所了解,还是要有一定的FORTRAN基础 ...

  7. 处理VR透镜畸变的三种方法

    处理VR透镜畸变的三种方法 该文章英文地址,翻译中有一些个人添加的辅助信息,以括号标识,"注:"开头,以粗体表示,例如(注:以下为个人翻译,水平有限,欢迎指正). 沉浸感需要大的视 ...

  8. halcon 畸变图像校正与长度测量

    * This program measures the length of scratches in world * coordinates in a perspectively distorted ...

  9. 智能车图像处理去畸变教程

    逆透视请参考:智能车逆透视教程(含上位机.源码)_Wyean的博客-CSDN博客  去畸变+逆透视请参考:智能车去畸变+逆透视教程_LoseHu的博客-CSDN博客 去畸变:如下 1.简介 对于镜头而 ...

最新文章

  1. workerman结合laravel开发在线聊天应用的示例代码
  2. linux网络命名空间详解,Linux Network Namespace (netns) 详解
  3. Introduction to Byteball — Part 3: Smart Contracts
  4. IIS应用程序池相关问题及连接池已满的解决方法
  5. Scala的那些匿名函数
  6. Ubuntu下ADSL配置
  7. Yarn FairSheduler使用FairSharePolicy计算Fair Share的规则、原理和代码实现
  8. 机器学习读书笔记:神经网络
  9. matlab的菜单编程实例,MATLAB-GUI 里面包含9个小例子,简单的讲述了各种控件和菜单menu的应用方法 ComboBox 组合框 266万源代码下载- www.pudn.com...
  10. HTML页面转PDF导出加水印并解决字被截断的问题
  11. linux进程等待wait()实例
  12. tbf格式用什么打开_TBF的完整形式是什么?
  13. 电子书各种格式的转换常见问题
  14. iOS图片压缩成指定大小
  15. 科技无障碍盛会举办,人工智能和创新成为高频词
  16. 用计算机弹Despacit,《计算器:游戏》老师,这真的只是个长得好看的计算器而已!...
  17. 【对讲机的那点事】带你玩转宝锋UV6R对讲机(三)
  18. 文件删除不了的解决办法
  19. 全面了解ADSL/Cable共享路由器
  20. 怎么选择好的CCD视觉检测?

热门文章

  1. python java正则表达式_java 正则表达式
  2. shell mysql 取值_shell 脚本中获取mysql多个字段的值
  3. matlabpython建模_参加数学建模用 MATLAB,还是 Python?
  4. WDS服务不能启动-----Service-specific error code 1056767740
  5. 宿主机docker容器互传文件命令
  6. mybatisplus中的xml如何添加like条件,进行模糊查询
  7. [导入]asp.net2.0乱记(33)vista下使用vs2005及一些软件
  8. Arcgis Javascript那些事儿(八)--图层获取与图层顺序
  9. GIS制图课程目录(持续整理)
  10. ArcGIS制图表达Representation-制图表达使用须知