一、前言

根据针孔模型,物体和成像之间参数会满足相似三角形的关系。但现实中会存在装配误差和透视失真等原因,导致这种关系无法成立,使理想成像与实际成像存在误差,这种误差即称为畸变。
畸变分为径向畸变,切向畸变和薄棱镜畸变。

二、畸变

2.1 径向畸变

径向畸变字面意思是图像坐标产生径向位置的误差,是由镜头形状缺陷造成的。
径向畸变效果可以分为枕型畸变、桶形畸变,示意图如下所示。

根据opencv给出的r=0处的泰勒展开公式:

其中,Xdr,Ydr为畸变后像素坐标,x,y为理想坐标,k1,k2,k3为径向畸变参数。

2.2 切向畸变

切向畸变一般是由透镜和芯片的安装位置误差引起的,导致透镜和成像平面不平行。

公式如下:

其中Xdt,Ydt为畸变后像素坐标,x,y为理想坐标,p1,p2为切向畸变参数。

2.3 薄棱镜畸变

是由镜头设计缺陷和加工误差导致的,高价位镜头可以忽略。

其中s1,s2为畸变参数

三、校正

上述公式均为由理想位置求畸变坐标,但实际情况是我们已知畸变位置,需要通过以上公式进行反推,求解k1,k2,k3,p1,p2。
将以上公式相加得到最终公式,其中在实际应用中只需考虑前两阶参数。

参考文章:
相机标定的来龙去脉(详解标定原理、畸变矫正原理、使用经验)

相机标定(三) —— 畸变校正相关推荐

  1. OpenCV相机标定与畸变校正

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自OpenCV学堂. OpenCV单目相机标定,图像畸变校正 相机标定定义与原理 01 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点 ...

  2. opencv相机标定(1)-畸变校正原理

    理想相机成像模型 看到一篇博客,介绍的十分详细.参考 链接 (为了好理解,个人还是喜欢分四大坐标系,世界坐标系,摄像机坐标系,图像物理坐标系,图像像素坐标系) 1)世界坐标系->摄像机坐标系 R ...

  3. 手机广角相机标定和畸变校正

    摄像头或者相机会因为镜片的光学特性而发生有规律的变形或者畸变,包括桶型畸变,枕型畸变和线性畸变.普通相机的这些畸变十分轻微,人的肉眼几乎分辨不出,所以这时可以不需要校正.对于广角相机,鱼眼相机,由于视 ...

  4. 鱼眼摄像头标定与畸变校正(OPENCV版)

    转载请注明作者和出处:http://blog.csdn.net/u011475210 代码地址:https://github.com/WordZzzz/fisheye_calibration 软件版本 ...

  5. 鱼眼摄像头标定与畸变校正(双OPENCV版本)

    转载请注明作者和出处:http://blog.csdn.net/u011475210 代码地址:https://github.com/WordZzzz/fisheye_calibration 软件版本 ...

  6. 相机标定(三)——手眼标定

    相机标定(一)--内参标定与程序实现 相机标定(二)--图像坐标与世界坐标转换 相机标定(三)--手眼标定 一.简述 手眼标定目的在于实现物体在世界坐标系和机器人坐标系中的变换. 在标定时,一般在工作 ...

  7. python 正方形去畸变_opencv 角点检测+相机标定+去畸变+重投影误差计算

    https://blog.csdn.net/u010128736/article/details/52875137 https://blog.csdn.net/h532600610/article/d ...

  8. 相机标定之畸变矫正与反畸变计算

    相机标定之畸变矫正与反畸变计算 相机标定问题已经是比较成熟的问题,OpenCV中提供了比较全面的标定.矫正等函数接口.但是如果我想通过一张矫正好的图像,想获得原始的畸变图,却没有比较好的方法,这里讨论 ...

  9. 机器视觉-相机标定及畸变矫正

    摘要:本文首先介绍了针孔相机模型(线性模型),然后推导四个坐标轴变换的关系,引出R.T.K.D中包含相机的5个内参,6个外参.然后介绍相机畸变的原因以及畸变模型(非线性模型),引出相机的5个畸变参数. ...

最新文章

  1. Ubuntu下内存泄露检测工具Valgrind的使用
  2. h5 和native 交互那些事儿
  3. mongodb的id的唯一性_探讨MongoDB的_id字段含义,及对MongoDB数据库的重要性
  4. ORACLE使用JOB定时备份数据库
  5. 计算机应用基础(高起专)答案,东北师范大学14秋《计算机应用基础(高起专)》14秋在线作业1答案...
  6. boss直聘用什么语言开发_我不在乎开发人员使用什么工具。 我根据基本原则聘用。...
  7. Android开发笔记(一百七十一)使用Glide加载网络图片
  8. sql azure 语法_什么是Azure SQL Cosmos DB?
  9. 我为何不再愿意打一份朝九晚五的工?
  10. no target device found怎么解决_关于移动端开发 1px 线的一些理解和解决办法
  11. Shader、Draw Call和渲染管线(Rendering Pipeline)
  12. 深度学习笔记 —— 卷积层
  13. 步进电机驱动器powerSTEP01_电源管理外围电路解析
  14. php 开源网店系统,企业级开源PHP网店系统海盗云商(Haidao)
  15. [C++项目]C++实现简易的酒店管理系统
  16. 【读书笔记】文案创作完全手册
  17. mysql扣减库存_扣库存之mysql方案讨论
  18. TensorFlow 高性能数据输入管道设计指南
  19. 【简便的PyQt5】制作一个极具特色的视频播放器
  20. Unity 2D塔防

热门文章

  1. 【转】wordpress/wp-includes目录文件概述
  2. 主成分分析原理解释(能力工场小马哥)
  3. python文件操作总结
  4. HTML 标记大全参考手册
  5. 【数据结构】图的深度优先搜索
  6. POJ 1228 Grandpa's Estate --深入理解凸包
  7. SPRING自定义注入CONTROLLER变量
  8. 26 JSX深度剖析与使用技巧
  9. 架构师不可不知的十大可扩展架构
  10. Python基础知识-05-数据类型总结字典