166 福 建 电脑 2012年第4期 基于OpenCV的Matlab标定实现研究 程志杰.李文锦 (福建电力职业技术学院机电工程系福建泉州362000) 【摘 要】:本文提出了一种新的摄像机标定方法,首先对有畸变的摄像机进行标定,给出了 标定方法的理论依据和求解过程。实验结果表明:该方法矫正图像效果良好,具有实际的工程使 用价值。 【关键词】:OpenCV;标定 1、摄像机的坐标系 MV400型号图像采集卡。 计算机视觉常用坐标系采用右手准则来定 使用针孔摄像机模型,其定义是: 义,图2.1表示了三个不同层次的坐标系统,其分 别是世界坐标系、摄像机坐标系和图像坐标系【”。 YI2 Y13 L 考虑到镜头的径向崎变和切向崎变的公式变 形为: —.........。.......... ...L y Z 1●●●●●●,●j = —............R ........ ...L O 0 1●● ,●,●j + ]●●_!● 一—.. ...。 ................L 图1标定系统的坐标系 巧 1,t:y Z ”1.图像坐标系:图l所示的坐标系(OiXY)和 : (1+ r +k2r )+2 。 ’+ (, +2x’ ) (o0uv)均为图像坐标系,(o0uv)为图像像素坐标 Y’ y'(1+kf +k2r )+2p2 ‘Y’+ (, +2y’ ) 系.(OiXY)为图像物理坐标系或图像实际坐标 r。 +y “= ・ ”"4"C系。 x 2.摄像机坐标系:摄像机成像几何关系可由 V=L'y”+ 图2.1表示.其中O点称为摄像机光心,X轴和Y 公式中(Xw。Yw,Zw)是一个点的世界坐标; 轴与成像平面坐标系的X轴和Y轴平行.Z轴为 u,v1是点投影在图像平面的坐标,以像素为单位; 摄像机的光轴,由点O与x、y-,z轴组成的右手直 A是摄像机的内参数矩阵;(cx,cy)是基准点(通常 角坐标系称为摄像机坐标系 光心到成像平面的 在图像的中心);fx,fv是以像素为单位的焦距。旋 垂直距离是摄像机的焦距 转平移矩阵[RIt]称为外参数矩阵.用来描述物体 3.世界坐标系:图2.1所示的坐标系(OW 围绕摄像机的刚性运动。 XW YW zw)为世界坐标系 摄像机坐标系在环 2.OpenCV标定及校正算法的实现 境中的位置是随着摄像机的移动而改变的。因此 由于OpenCV所采用的张氏标定法『21和角点 我们需要在环境中选择一个基准坐标系来描述摄 提取算法标定结果准确而且运算效率高。所以考 像机的位置.并且此坐标系可表述环境中任何物 虑在111atlab上实现调用OpenCV的算法程序以实 体的物理位置.此坐标系就是用户定义的世界坐 现摄像机的标定。其算法实现过程如下: 标系。 11首先自制一张标定板.设定标定棋盘的正 本系统采用陕西维视数字图像技术有限公司 方形格子数目为7x6.其边长为30mm.如图2所 2012年第4期 福 建 电脑 167 示。在白色方块的外围还要求留约一个格子的距 离。并把用A4纸打印出来贴于平板上。 图4精确角点位置计算 子像素级角点定位的实现是基于对向量正交 性观测来实现.即从中央点q到其领域点p的向 图2标定板 2)OpenCV角点提取函数cvFindChessboard— Corners可以用于检测标定板图像的角点以及角 点数量。 函数输入必须是8位的灰色的灰色或彩色图 像,同时可以根据函数标志位nags选项,选择对输 入图像的处理准则。其处理准则有:A)使用自适应 阀值进行二值化。B)利用固定阀值或自适应阈值 进行二值化之前.先使用cvNormalizeHist来均衡 化图像亮度。C)使用其他准则(如轮郭面积。周 长.方形形状)来去除在轮廓检测阶段检测到的错 误方块。 此函数试图确定输入图像是否是棋盘模式. 并确定角点的位置。如果所有角点都被检测到且 它们都被按照一定顺序排布(一行一行.每行从左 到右),则函数返回非零值,如图3所示;否则在函 数不能发现所有角点或者不能记录它们的情况 下.函数返回0 图3角点提取 但这个函数有可能不能识别所有的图像点. 所以要求角点清晰并且光线良好以及函数相关参 数是正确的 为了精确确定角点坐标的位置.使用cvFind— CornerSubPix函数来寻找精确的角点位置.它是 通过迭代来发现具有子像素精度的角点位置或放 射鞍点。如图4所示 量与P点处的图像梯度正交。因而有以下表达式 =7Ip0(g—P。) 其中 ,p 表示q的一个领域P 处的图像梯 度,q值通过最小化 得到。通过 设为O,可以 建立系统方程如下: ∑(VIp ・ )・g一∑(VIp ・ ・P,)=0 f i 其中,q的邻域(搜索窗)中的梯度被累加。调 用第一个梯度参数G和第二个梯度参数b.得到 q=G一・b 该算法将搜索窗的中心设为新的中心q,然 后迭代,直至找到低于某个阈值点的中心位置 3)把角点在图像坐标系和世界坐标值代人 到cvCalibrateCamera2得到摄像机的内外参数 (1)输入定标点的坐标,为3xN或Nx3的矩 阵,其中N为所有视图中点的总数。 (2)输入定标点在图像中的坐标.为2xN或 Nx2的矩阵.其中N是所有视图中点的总数 (3)输入不同视图中点的数目,为1xM或 Mx1向量.其中M是视图数目 (4)输入图像的大小.用于初始化内参数 (5)输出内参矩阵A,其值为ll 0 d0u0 y vo ll 0 0 1 I (6)输出大小为4x1或lx4的畸变向量.其值 为[衄k2 kal kd2]。 (7)输出大小为3XM或Mx3的旋转矩阵,其 值为旋转向量(旋转矩阵的紧凑表示方式)。 (8)输出大小为3XM或Mx3的平移矩阵。 这样就可以求出所需要摄像机的内部参数和 畸变系数 4)调用cvSave命令将摄像机的内外参数及 崎变系数保存为XML文件 5)将摄像机的内参数矩阵和变形系数向量输 入到cvUndistort2函数后.可以得到校正后的图 像。cvUndistort2通过对图像进f下转第178页1 178 福 建 电脑 2012年第4期 用本机Ping其他IP地址。现在来分析捕获的数 析后.接下来就是要根据“OP”字段来判断这个 据包,从Ethereal的第一栏中,我们看到这是个 ARP分组是ARP请求还是ARP应答的。其中以 ARP的广播包,如图2所示。 太网的ARP分组格式如图4所示。 £f,lE咖 州 £a 啪 {谣萄 娴 馒忏地址长熳 盛斟斟锱馘盼嗣x囝&图铂略∞吾堡 国 园 Q q唆 r—— 协议地址长度 EI t’昏 te ; eIe ar 目的 源地 类型 硬件 协议 0P 发送端以 发送端 目的以太 日的lP地 I N0.Time 3。u rce Deg自mI n ,olo‘o1 h 口 1 O.OOO ̄O In ̄l_4g:6g: Bra st 脚 帅ha5 172 18,19.70 ̄ T 1 172 0 地址 址 类型 类型 太阳地址 地址 朋地址 址 } 2 O.OOOO31¨1teI_44:§々:qj BI"did铀st ^RP 帅0 h 5 172.18.19,s ral 172.2 r 3 0.00004 Inre1_aa Bg“ 4删c s ^RP lotto 172,18.19.1 ’ te11 7 I 4 ∞0052 tnt 1 44 4 日r0adc st ^RP 帅hai 172 1{.1 .16 ’tell 172,博 |0 。 b 强 一- ¨I 强 图4以太网ARP请求和应答的分组格式 60: 4a (00 ;11 :11 : ̄ “ ・ : ” 。 。 ,j Eource:I l_4a 69■a(oo:ii:ii:4●:6q:4 a) 如果“OP”字段的值为0x0001时是请求. aller ;000000000 0000000 000 ̄00 000…D1ut㈨[0c0‘requ0,000。O0 ■ _ I …~ r、~・……r…nn1、 Ox0002时是应答。同样道理,我们也可以利用 bo躲;10g 0 88 oO。o0。 08 38器器 06 od oo Ol∞u虹401∞2 1帅3∞O4¨40器8i:8∞。0∞∞ ’孤13 2a…….::::::’:.. ]:: .… Ethereal对ICM报文和IP数据包进行分析 l 钾4蛳 2咻 1q O 1 q m q 3、结束语 图2 ARP广播包 网络数据包的捕获与分析是网络安全应用的 Ethereal是使用Ethernet II来解码的.Ether— 基础.网络攻击手段在数据包分析后将无所遁形. net II的封包格式如图3所示。 因此.防止该攻击的方法及措施可以得到有效地 实施;另外,还可用来监测网络中的数据流量,分 析网络故障等相关应用领域。 参考文献: 图3以太网封装RFC(894) 【1】Timothyj.o’Leary.计算机科学引论(第1版)[M].北 Ethereal可以根据“类型”字段来判断一个数 京:高等教育出版社,2004. 据包是IP数据报还是ARP请求/应答或RARP请 [2】吴黎兵.计算机网络实验教程(第1版)[M].北京:机械 求/应答。当类型为0x0806时,由图2我们看到该 工业出版社.2007. 数据包为ARP数据包。Ethereal判断出是ARP解 [3】顾尚杰.计算机通信网络基础(第1版)[M].北京:电子 工业出版社.2000. (上接第167页) 行变换来抵消径向和切向的镜头变形.对每个图 角点提取法算法,在这些基础上开发的标定程序, 像的象素计算其在输入图像的位置.然后通过双 结果准确.而且其中的函数在设计和汇编时被In. 线性插值来计算输出图像的像素值。 tel公司做了优化,因而具有很高的性能。本文实 6)编写matlab和VC++的接口函数。实现 验表明:基于OpenCV开发的标定程序可以有效 matlab对VC的摄像机标定程序的调用.其标定 的应用到实际的视觉系统中。 程序是dU文件.由于所使用的pc机是32位机, 所以其文件扩展名为mexw32。 3、实验结果 1.内参与畸变系数 根据Zhang标定算法求得摄像机内参矩阵 为: 7 A= =1l 0 310 . 28 1 30 .盖 00]1I 图5校正前图 图6校正后图 0 0 1同时求得畸变系数分别 参考文献: k2 l 2】=[-0.3603 ol1447-0.0024—0.00121 【1】贾云得.机器视觉rM】.北京:科学出版社,2000 2.校正前后效果,如图5和6所示。 [2]Marr著.姚正国等译.视觉计算理论.北京:科学出版 4、结论 社.1988. OpenCV采用张氏标定法和Jean2Yves Bouget