基于OpenCV的摄像机标定方法的实现
OpenCV相机标定坐标系详解

OpenCV相机标定坐标系详解在OpenCV中,可以使⽤calibrateCamera函数,通过多个视⾓的2D/3D对应,求解出该相机的内参数和每⼀个视⾓的外参数。
使⽤C++接⼝时的输⼊参数如下:objectPoints - 每⼀个视⾓中,关键点的世界坐标系。
可以使⽤vector < vector <Point3f> >类型,第⼀层vector表⽰每⼀个视⾓,第⼆层vector表⽰每⼀个点。
如果使⽤OpenCV⾃带的棋盘格,可以直接传⼊交叉点(不包括边⾓)的实际坐标,以物理世界尺度(例如毫⽶)为单位。
写坐标时,要保证z轴为0,按照先x变化,后y变化,从⼩到⼤的顺序来写。
如果⽹格尺⼨为5厘⽶,写作:(0,0,0),(5,0,0), (10,0,0)...(0,5,0), (5,5,0), (10,5,0),...如下图例⼦,x⽅向是8个交叉点,y⽅向3个较差点。
imagePoints - 每⼀个视⾓中,关键点的图像坐标系。
可以使⽤vector < vector <Point2f> >类型。
这个值可以通过findChessboardCorners函数从图像中获得。
注意:传⼊findChessboardCorners函数的patternSize参数,要和objectPoints 中的⾏列数统⼀。
imageSize - 图像尺⼨。
flags - 参数。
决定是否使⽤初始值,扭曲参数个数等。
输出参数如下:cameraMatrix - 3*3的摄像机内矩阵。
distCoeffs - 4*1(具体尺⼨取决于flags)。
对图像坐标系进⾏进⼀步扭曲。
这两个参数是内参数,可以把摄像机坐标系转换成图像坐标系。
rvecs - 每⼀个视图的旋转向量。
vector<Mat>类型,每个vec为3*1,可以⽤Rodrigues函数转换为3*3的旋转矩阵。
tvecs - 每⼀个视图的平移向量。
一种基于OpenCV的摄像机标定算法的研究与实现

1 引言 .
定算
:
0
() 7
法 ,最后 分析 如何借 助开 源软 件0 e C p nV V 2× 是 n 6的矩 阵 , 当 n ≥3时就 可 以得 计 算机 视 觉 的基本任 务之 一是 从摄 像机 获取 的 图像信 息 出发计 算三 维空 间 中物 体 的 实现 算法 。 到b 的唯 一解 ,并根 据b 求解 摄像 机 的 内参 来 几何 信 息,并 由此 重建 和识 别物 体 。而 空 间 数矩 阵A 内部 参数 确 定后 ,外 部参 数 可 以 。 2 摄 像机 模型 . 物体 表面 某 点的三 维几 何位 置与其 在 图像 中 对应 点 之间 的相 互关系 是 由摄像 机成像 的几 何模 型 决定 的 ,这些 几何模 型参 数就 是摄 像
、
() 1
1
Y Βιβλιοθήκη 0 eC Oe o reC mu e iin p n V(p n S u c o p t r V s o
摄 像机 标定 是确 定摄像 机 内外参 数 的一 个过 程 ,其 中 内参 数 的标 定是指 确 定摄像机
一种基于OpenCV的摄像机标定算法的研究与实现

一种基于OpenCV的摄像机标定算法的研究与实现作者:孙昆穆森邱桂苹赵倩来源:《电子世界》2012年第14期【摘要】摄像机标定是计算机视觉中的一个重要问题。
本文介绍了标定的基本原理,详尽阐述了使用二维模板的标定算法,重点分析了如何借助开源软件OpenCV实现该算法。
实验结果显示,使用OpenCV中的相关函数,可以方便地进行数学计算,简单有效地完成摄像机标定。
【关键词】摄像机标定;内部参数;单应性矩阵;OpenCV1.引言计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体。
而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。
摄像机标定是确定摄像机内外参数的一个过程,其中内参数的标定是指确定摄像机固有的、与位置参数无关的内部几何与光学参数,包括图像中心坐标(也称主点坐标)、图像纵横比、相机的有效焦距和透镜的畸变失真系数等;外参数的标定是确定摄像机坐标系相对某一世界坐标系的三维位置和方向关系。
目前,摄像机标定技术主要有两种实现方法:(1)基于标定物的方法:需要尺寸已知的标定参照物,通过建立标定物上三维坐标已知点与其图像点之间的对应,利用一定的算法获得摄像机的内外参数。
标定物可以是三维的,也可以是二维共面的。
三维标定物条件下,只需一幅图像就可以求出摄像机的全部内外参数。
但三维标定物的加工和维护比较困难。
二维共面标定物加工维护简单,但一幅图像不足以标出所有的摄像机参数,因此需要简化摄像机模型,或者从不同角度获取多幅图像来同时标出所有的参数。
当应用场合要求的精度很高而且摄像机的参数不经常变化时,这种标定法应为首选。
(2)自标定法:不需要标定物,仅依靠多幅图像对应点之间的关系直接进行标定。
利用了摄像机内部参数自身的约束,而与场景和摄像机运动无关。
该方法非常灵活,但不是很成熟,由于未知参数太多,很难得到稳定的结果。
相机标定过程(opencv)+matlab参数导入opencv+matlab标定和矫正

相机标定过程(opencv)+matlab参数导⼊opencv+matlab标定和矫正%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%⾟苦原创所得,转载请注明出处%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%start -- 摄像机标定 ---------------------------------------------->摄像机标定的数学过程如下标定事先选⽤棋盘格要注意⼀些问题,张正友论⽂中建议棋盘格数⼤于7*7。
opencv标定时候对正⽅形的棋盘格标定板是不能识别的,需要长⽅形的标定板。
张正友论⽂中建议每次拍摄标定板占50%以上,但这是对畸变并不是很⼤的普通相机⽽⾔的,对于球⾯相机是不适⽤的,相反球⾯相机标定使⽤的标定板占⽐应该较⼩⽐较好(对于格⼦并不是⾮常密的棋盘格⽽⾔),原因是因为棋盘格每个⾓点之间的距离越⼤,这段距离之间的可能发⽣畸变的点越多,如果占⽐过⼤就⽆法将形变体现在棋盘格中。
棋盘格的选⽤应该根据实际需要选⽤,对于要求精密识别的情况,则需要⾼精度的棋盘格,相应的价格也会较⾼;对于精度要求并不是很⾼的(如抓取)情况并不需要精度很⾼的标定板,也能够节省开⽀。
这⾥程序的实现是在opencv中,所以就⽤opencv的程序来说明具体的过程.注意各个版本的opencv之间的程序移植性并不好,以下程序是在opencv2.4.3下编制运⾏的,每⼀步的要⽤到的输⼊输出都做了红⾊标记.⽴体相机标定分为两个步骤,⼀个是单⽬标定(本⽂档第2步),另⼀个是双⽬标定单⽬标定获得相机的x,y轴的焦距;x,y轴的坐标原点位置;世界坐标系和平⾯坐标之间的旋转和平移矩阵,5个畸变系数双⽬标定获得两个相机成像平⾯之间的旋转和平移矩阵注意1.程序运⾏前需要插上摄像头,否则程序有可能不能正常运⾏2.单⽬标定(1).获取棋盘格图像for (int i=1; i<=19; i++)//输⼊左标定板图像{std::stringstream str;//声明输⼊输出流str << "./left" << i << ".jpg";//以名字⽅式把图像输⼊到流std::cout << str.str() << std::endl;//.str("")清除内容 .clear()清空标记位leftFileList.push_back(str.str());//.push_back从容器后向前插⼊数据leftBoardImage = cv::imread(str.str(),0);//⽤来显⽰即时输⼊的图像cv::namedWindow("left chessboard image");cv::imshow("left chessboard image",leftBoardImage);cv::waitKey(10);}(2).定义棋盘格的⾓点数⽬cv::Size boardSize(14,10)(3).程序定位提取⾓点这⾥建⽴的是理想成像平⾯(三维,第三维为0,单位为格⼦数)和图像坐标系(⼆维,单位是像素)之间的关系(a)⾸先声明两个坐标容器std::vector<cv::Point2f> imageCorners;//⼆位坐标点std::vector<cv::Point3f> objectCorners;//三维坐标点(b)初始化棋盘⾓点,令其位置位于(x,y,z)=(i,j,0),⼀个棋盘格为⼀个坐标值for (int i=0; i<boardSize.height; i++){for (int j=0; j<boardSize.width; j++){objectCorners.push_back(cv::Point3f(i, j, 0.0f));}}(c)直接使⽤opencv内函数找到⼆维⾓点坐标,并建⽴标定标定格⼦和实际坐标间的关系(像素级别)这个函数使⽤时,当标定板是长⽅形时可以找到⾓点,但是标定板是正⽅形时,就找不到,原因还未知.cv::findChessboardCorners(image, boardSize, imageCorners);(d)获得像素精度往往是不够的,还需要获得亚像素的精度cv::cornerSubPix(image,imageCorners, //输⼊/输出cv::Size(5,5),//搜索框的⼀半,表⽰在多⼤窗⼝定位⾓点cv::Size(-1,-1), //死区cv::TermCriteria(cv::TermCriteria::MAX_ITER + cv::TermCriteria::EPS,30, // max number of iterations//迭代最⼤次数0.01)); // min accuracy//最⼩精度注:TermCriteria模板类,取代了之前的CvTermCriteria,这个类是作为迭代算法的终⽌条件的,这个类在参考⼿册⾥介绍的很简单,我查了些资料,这⾥介绍⼀下。
学习笔记:使用opencv做双目测距(相机标定+立体匹配+测距).

学习笔记:使⽤opencv做双⽬测距(相机标定+⽴体匹配+测距).最近在做双⽬测距,觉得有必要记录点东西,所以我的第⼀篇博客就这么诞⽣啦~双⽬测距属于⽴体视觉这⼀块,我觉得应该有很多⼈踩过这个坑了,但⽹上的资料依旧是云⾥雾⾥的,要么是理论讲⼀⼤堆,最后发现还不知道怎么做,要么就是直接代码⼀贴,让你懵逼。
所以今天我想做的,是尽量给⼤家⼀个明确的阐述,并且能够上⼿做出来。
⼀、标定⾸先我们要对摄像头做标定,具体的公式推导在learning opencv中有详细的解释,这⾥顺带提⼀句,这本书虽然确实⽼,但有些理论、算法类的东西⾥⾯还是讲的很不错的,必要的时候可以去看看。
Q1:为什么要做摄像头标定?A: 标定的⽬的是为了消除畸变以及得到内外参数矩阵,内参数矩阵可以理解为焦距相关,它是⼀个从平⾯到像素的转换,焦距不变它就不变,所以确定以后就可以重复使⽤,⽽外参数矩阵反映的是摄像机坐标系与世界坐标系的转换,⾄于畸变参数,⼀般也包含在内参数矩阵中。
从作⽤上来看,内参数矩阵是为了得到镜头的信息,并消除畸变,使得到的图像更为准确,外参数矩阵是为了得到相机相对于世界坐标的联系,是为了最终的测距。
ps1:关于畸变,⼤家可以看到⾃⼰摄像头的拍摄的画⾯,在看矩形物体的时候,边⾓处会有明显的畸变现象,⽽矫正的⽬的就是修复这个。
ps2:我们知道双⽬测距的时候两个相机需要平⾏放置,但事实上这个是很难做到的,所以就需要⽴体校正得到两个相机之间的旋转平移矩阵,也就是外参数矩阵。
Q2:如何做摄像头的标定?A:这⾥可以直接⽤opencv⾥⾯的sample,在opencv/sources/sample/cpp⾥⾯,有个calibration.cpp的⽂件,这是单⽬的标定,是可以直接编译使⽤的,这⾥要注意⼏点:1.棋盘棋盘也就是标定板是要预先打印好的,你打印的棋盘的样式决定了后⾯参数的填写,具体要求也不是很严谨,清晰能⽤就⾏。
之所⽤棋盘是因为他检测⾓点很⽅便,and..你没得选。
一种基于OpenCV的简易摄像机标定方法

图像像素坐标系, 该坐标系的单位是像素 , 坐标原点 0 在图像的左上角。由于 ( 只表示像素位于数 。 , ) 组中的列数与行数, 并没有用物理单位表示出该像 素在 图像 中的位置, 因此, 需要再建立 以物理单位 ( 毫米 ) 表示 的图像坐标系 , 如图 l 所示 , Y 是图 ( ) , 像物理坐标 , 光心 0 在图像的中心点上 。
图 1 图像坐标系
由图 1 可得, 图像中任意一个像素在两个坐标
系下 的坐标 有 如下 的关 系 :
=
孚+ ‰
() 1
() 2
用齐 次坐标 与矩 阵表示为 :
1 O
u。
图 3 摄 像 机模 型
图 3 0为摄像机光心 , 中, 0 为图像坐标原点 ,
() 3
①读取 实验所 需 的图像 。
②使用 cF d hs orCr r 函数提取棋盘 vi C e ba o e n s d ns
模 板上 的角点 。
1y ,) k, +, + p( )) 2l ] 6( Y :z( ,) [23 , +p y x ) +2 x
() 7
③使用 cFnC r r b i vi o e uP d n S x函数对上步 中所提 取 出来的角点进行进一步的细化, 以得到更精确 的 角 点位 置 。 ④亚像素精确化后, 再使用 cDa C e ba — v r hs or w s d
界坐 标 系。
收 稿 E期 :2 1 0 t 0 1— 7—0 4
取三维空间信息的前提和基础。标定结果的好坏直
接影 响 着 三 维 测 量 的 精 度 和 三 维 重 建 结 果 的 好 坏H , 因此研究 摄像 机 标定 方 法 具有 重 要 的理 论 意 义 和实 际应用 价值 。
基于OpenCV的红外与可见光双摄像机标定方法研究

基于OpenCV的红外与可见光双摄像机标定方法研究任贵文【摘要】With the development of infrared thermal imaging technology , as well as the advantages of non-con-tact temperature measurement , study of infrared thermal imaging technology is also increasing , And the fusion of in-frared and visible images become the focus of current research , integration of the main difficulty is the calibration of infrared and visible light cameras , for image registration .Based on the versatile camera calibration technique , in the VS2013 environment , combined with the OpenCV open source computer vision library , we developed a set of calibration system for infrared and visible light cameras .The system overcomes the disadvantages of Infrared Image camera can not take clear checkerboard images , and achieving fast , accurate real-time infrared and visible light cameras calibration .%随着红外热成像技术的不断发展,以及其非接触性测温的优点,人们对红外热成像技术的研究也越来越多;其中,红外与可见光图像的融合成为目前研究的热点;融合的主要难点是对红外和可见光摄像机的参数标定,已达到图像配准的目的。
基于Opencv和C++的摄像机标定研究与实现

Ab s t r a c t I n t h e a na l y s i s b a s e d o n t h e c a me r a mo d e l ,a n d c o n s i d e r t h e l e ns d i s t o r t i o n,i n e n s ur i n g t h e s t a b i l i t y o f t h e c a me r a mo de l ,t he t h e n e w me t h o d me t h o d r e d uc i n g t h e a mo u n t o f c o mp ut a t i o n t o e n s u r e c a l i b r a t i o n a c c u r a c y . Th e me t h o d i n VC+ + d e v e l op me nt e n v i r o n — me nt ,g i v e f u l l p l a y t o t h e Op e nc v l i br a r y f u n c t i o n s,a n d i mp l a n t e d i n t o t h e GM L c a l i b r a t e t o o l s t o i mp l e me n t . Exp e r i me n t s s ho w t h a t t he
me t h o d of c a l i b r a t i o n h a s a c c u r a c y,r o b u s t n e s s ,a n d a g oo d c r o s s pl a t f o r m po r t a b i l i t y,c a n me e t r e a l - t i me r e q u i r e me nt s .
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
空间物 体表 面某 点 的三 维几何位 置 与其在 图
标定 法而 言 , 摄像 机标 定法 标定 结果稳 定 , 传统 精 度 较高 . 摄 像机 方 位 、 在 焦距 固定 不 变 的情况 下 , 往往 采用传 统摄像 机标 定法 . 开放 源代码 的计 算 机 视觉 类 库 ( pnSuc O e ore
M e h d o m e a Ca i r to s d o t o n Ca r lb a i n Ba e n Ope CV n
W ANG is e Ba— h ng,GAO u— a Yo nin,S HEN e —h n W nz o g
(colfEetc o e a dA t ai n i e n , h n hi n e i Sho o l r P w r n uo tnE gn r g S ag a i rt o ci m o ei U v sy f
第2 6卷 第 4期
上 海 电 力 学 院 学
报
Vo . 6, No 4 12 . Au . 2 1 g 0 0
21 0 0年 8月
J u n l o S a g a Un v r i o E e ti Po r o r a f hn hi i e st y f l crc we
位于俄 罗斯 的研究 实 验室 开 发 , 一 套 可免 费获 是 得 的 由一些 C函数和 c+ 类 所组 成 的库 , 来实 + 用 现 一些 常用 的图 像处 理 及 计 算 机 视 觉算 法 , 实 可
现物体轮廓跟踪、 图像的几何处理、 形体学处理 、 图像 特 征 提取 、 景 分 离 、 背 金字 塔 算 法 、 种子 填 充 算法 、 光流算法 、 主动轮廓算法 、 相机 的校正、 姿势
下, 指出了基 于 O eC pn V的摄像机标定算法. 该算 法充 分运用 了 O eC p n V的函数库 功能 , 具有 很高 的标定 精度 和计算效率 , 可以满足立体视觉系统的需要. 关键词 :计算机视觉 ; pn V; O eC 摄像机模 型 ; 摄像机标定
中图 分 类 号 :T 3 14 ; N 4 . 1 P9 . 1 T 9 84 文 献 标 识 码 :A
o e f n t n e l r r ,h s a v r ih s n a d o c u a y a d c mp tt n lef i n y, ft u c i s i t i a h o nh b y a e y h g t d r fa c r c n o u a i a f ce c a o i a d i a l e e n e so t r o v s n s s ms n s b e t me tt e d fs e i o y t . o h e i e
EetcP w r S ag i 0 00, hn ) l r o e, h nh 20 9 C i ci a a
Abta t O e o recm u rvs n ( pn V)l rr sit d cd fs y n h n te s c : pn suc o p t i o O e C r e i i ayi n o ue r ,ad te h b r it l
文 章 编 号 :10 42 (00 0 0 8 06— 7 9 2 1 )4— 33—0 4
基 于 Op n V 的 摄 像 机 标 定 方 法 的 实 现 eC
汪柏 胜 , 高幼年 , 文忠 沈
( 上海 电力学 院 电力与 自动化工 程学 院 , 上海 20 9 ) 00 0
摘 要 :介绍 了开放计算机视觉 函数库 O e C p n V和摄 像机模 型, 考虑 到切 向畸变 和径 向畸变 , V +环境 在 C+
c me a mo e i ie a r d l s g v n. Co sde n a i l it rin n a g n il itri n , a ag rtm f n i r g r d a d soto s a d t n e t d so o s i a t n lo h o i c me a c l r t n b s d o e CV sg v n i a r a i ai a e n Op n b o i ie n VC + e io me t + nvr n n .Th sa g rt m k sf l u e i lo h i ma e ul s
C mp t io irr, p n V) 因特 尔 公 司 o ue Vs n Lba O e C 由 r i y
像 中对 应点 之 间的相 互关 系是 由摄像 机成 像 的几 何 模 型决定 的 , 这些 几 何 模 型参 数 就是 摄 像 机 参 数. 在大 多数 情况 下 , 些参数 必须通 过实 验与 计 这
算才能得到 , 这个过程称 为摄像 机标 定…. 一个
完 整 的立 体 视觉 系统 通 常可 分为 图像 获取 、 像 摄 机标 定 、 征 提 取 、 体 匹 配 、 度 确定 及 内插 等 特 立 深 6大部 分 . 像 机标 定 是 立 体 视觉 系 统 实 现 的 J摄 必要 过程 , 其精 度 直 接影 响立体 视 觉 系统 实 现 的 准确 性. 目前 , 摄像机标 定 主要分 为传统 摄像 机标 定法 和摄 像机 自标 定 法两 类 … . 对 于摄 像 机 自 相