相机标定 和 单应性矩阵H
求解相机参数的过程就称之为相机标定。
1.相机模型中的四个平面坐标系:
1.1图像像素坐标系(u,v)
以像素为单位,是以图像的左上方为原点的图像坐标系;
1.2图像物理坐标系(也叫像平面坐标系)(x,y)
以毫米为单位,用物理单位表示图像像素位置,定义坐标系OXY,原点O定义在相机Zc轴与图像平面交点;
1.3相机坐标系(Xc,Yc,Zc)
以毫米为单位,以相机的光心作为原点,Zc轴与光轴重合,并垂直于成像平面,且取摄影方向为正方向,Xc、Yc轴
与图像物理坐标系的x,y轴平行,且OcO为摄像机的焦距f;
1.4世界坐标系(Xw,Yw,Zw)
根据具体情况而定,该坐标系描述环境中任何物体的位置,根据具体情况而定,满足右手法则;
四个坐标系关系作图如下:
2.四个坐标系转换
2.1世界坐标系(Xw,Yw,Zw)->相机坐标系(Xc,Yc,Zc):
摄像机的外参数: 旋转向量(大小为1×3的矢量或旋转矩阵3×3)和平移向量(Tx,Ty,Tz)
从相机坐标系到世界坐标系的变换,是通过旋转矩阵R和平移矩阵t完成的。
式中,M1称为相机的外参数. R为3*3矩阵,T为3*1矩阵,0为(0,0,0),旋转矩阵R是坐标轴依次绕x,y和z轴旋转角度ψ,φ和θ,所形成的三个矩阵Rx(ψ),Ry(φ),Rz(θ)的总乘积,
如下:
矩阵R的计算公式为:
2.2相机坐标系(Xc,Yc,Zc):->图像物理坐标系(x,y):
摄像机的内参数:摄像机内参数矩阵(fx,fy,u0,v0)和畸变系数(三个径向k1,k2,k3,两个切向p1,p2)
OpenCV中的畸变系数的排列(这点一定要注意k1,k2,p1,p2,k3)、
理想的摄像机模型是针孔模型,但是实际的镜头不符合这种假设。另外,相机的构造以及制造、安装、工艺等因素也会造成误差,导致相机通常会存在多种非线性畸变,使得上面介绍的针孔相机模型并不能准确地描述最终的成像关系。所以,为了使相机标定结果更加准确,在进行相机标定时应该将相机的非线性畸变考虑进来,修正理想投影模型。
径向畸变
径向畸变产生的主要原因是镜头径向曲率的不规则变化,它会导致图像的扭曲变形,例如,空间中的一条直线成像到图像平面后发生弯曲,变形成一条曲线。这种畸变的特点是以主点为中心,沿径向移动,离的距离越远,产生的变形量就越大。径向畸变是导致图像畸变的主要因素。如图所示,一个矩形的严重径向失真被较正成理想线性镜头的图像。
径向畸变模型在OpenCV中被描述为:
xcorrected=x(1+k1r2+k2r4+k3r6)ycorrected=y(1+k1r2+k2r4+k3r6)
径向畸变如下图所示,有桶形畸变和枕形畸变两种。
切向畸变
由于透镜不是完美地平行于图像平面,所以存在切向畸变。这种畸变使得一些区域看上去比预期的近。畸变模型为:
xcorrected=x+[2p1xy+p2(r2+2x2)]ycorrected=y+[p1(r2+2y2)+2p2xy]
通常还有离心畸变、薄棱镜畸变等,但主要畸变是径向畸变和切向畸变,故opencv中使用这个5个参数描述摄像机畸变,即:
Distortion coefficients=(k1,k2,p1,p2,k3)
2.3图像物理坐标系(x,y):->图像像素坐标系(u,v):
3.世界坐标系与图像像素坐标系之间的变换关系:
M1称为相机的内参数,M2称为外参数
单应性矩阵H,来自于不同角度的拍摄,













转自:http://blog.csdn.net/yonger_/article/details/55194602
相机标定 和 单应性矩阵H的更多相关文章
- 机器学习进阶-案例实战-图像全景拼接-图像全景拼接(RANSCA) 1.sift.detectAndComputer(获得sift图像关键点) 2.cv2.findHomography(计算单应性矩阵H) 3.cv2.warpPerspective(获得单应性变化后的图像) 4.cv2.line(对关键点位置进行连线画图)
1. sift.detectAndComputer(gray, None) # 计算出图像的关键点和sift特征向量 参数说明:gray表示输入的图片 2.cv2.findHomography(kp ...
- OpenCV仿射变换+投射变换+单应性矩阵
本来想用单应性求解小规模运动的物体的位移,但是后来发现即使是很微小的位移也会带来超级大的误差甚至错误求解,看起来这个方法各种行不通,还是要匹配知道深度了以后才能从三维仿射变换来入手了,纠结~ esti ...
- opencv 仿射变换 投射变换, 单应性矩阵
仿射 estimateRigidTransform():计算多个二维点对或者图像之间的最优仿射变换矩阵 (2行x3列),H可以是部分自由度,比如各向一致的切变. getAffineTransform( ...
- OpenCV 之 平面单应性
上篇 OpenCV 之 图象几何变换 介绍了等距.相似和仿射变换,本篇侧重投影变换的平面单应性.OpenCV相关函数.应用实例等. 1 投影变换 1.1 平面单应性 投影变换 (Projectiv ...
- 单应性(homography)变换的推导
矩阵的一个重要作用是将空间中的点变换到另一个空间中.这个作用在国内的<线性代数>教学中基本没有介绍.要能形像地理解这一作用,比较直观的方法就是图像变换,图像变换的方法很多,单应性变换是其中 ...
- 【Computer Vision】图像单应性变换/投影/仿射/透视
一.基础概念 1. projective transformation = homography = collineation. 2. 齐次坐标:使用N+1维坐标来表示N维坐标,例如在2D笛卡尔坐标 ...
- python opencv3 FLANN单应性匹配
git:https://github.com/linyi0604/Computer-Vision 匹配准确率非常高. 单应性指的是图像在投影发生了 畸变后仍然能够有较高的检测和匹配准确率 # codi ...
- OpenCV-Python 特征匹配 + 单应性查找对象 | 四十五
目标 在本章节中,我们将把calib3d模块中的特征匹配和findHomography混合在一起,以在复杂图像中找到已知对象. 基础 那么我们在上一环节上做了什么?我们使用了queryImage,找到 ...
- halcon相机标定及图像矫正
https://blog.csdn.net/humanking7/article/details/44756073 相机标定内容详解:转载自 祥的博客 预备知识 标定中的四个坐标系 1.1.平面旋转 ...
随机推荐
- 169.求众数 leetcode Javascript
给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] 输出: 3 ...
- activemq 持久化
转自: http://blog.csdn.net/kobejayandy/article/details/50736479 消息持久性的原理很简单,就是在发送者将消息发送出去后,消息中心首先将消息存储 ...
- rest_framework基础
简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用 ...
- HDU 5862 Counting Intersections 扫描线+树状数组
题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 Counting Intersections Time Limit: 12000/ ...
- 01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)_讲义
今日内容介绍 1.Java开发环境搭建 2.HelloWorld案例 3.注释.关键字.标识符 4.数据(数据类型.常量) 01java语言概述 * A: java语言概述 * a: Java是sun ...
- Scrum团队成立及《构建之法》第六、七章读后感
5.Scrum团队成立 5.1 团队名称:喳喳 团队目标:突破渣渣 团队口号:吱吱喳喳 团队照: 5.2 角色分配 产品负责人: 112冯婉莹 Scrum Master: ...
- 复利计算程序单元测试(C语言)
对我们和复利计算程序,写单元测试. 有哪些场景? 期待的返回值 写测试程序. 运行测试. 我的复利计算程序是用C语言写的,不懂使用C语言的测试工具,所以用C语言的运行结果来反映测试结果. 测试模块(场 ...
- 树莓派两用优盘制作(FAT32存储+EXT树莓派系统)
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:树莓派两用优盘制作(FAT32存储+EXT树莓派系统) 本文地址:http://tec ...
- 爬虫学习之-xpath
1.XPATH使用方法 使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点): a.通过绝对路径定位元素(不推荐!) WebElement ele = driver.findEle ...
- Android ContentProvider基本用法
转自:https://www.jianshu.com/p/601086916c8f 一.基本概念 ContentProvider是Android系统中提供的专门用户不同应用间进行数据共享的组件,提供了 ...