您的当前位置:首页正文

基于混合编程的双目视觉三维重建方法

2022-10-14 来源:九壹网
第27卷第2期 湖 北 工 业 大 学 学报 2O12年O4月 VO1.27 No.2 Journal of Hubei University of Technology Apr.2012 [文章编号]1003—4684(2012)02—0079—04 基于混合编程的双目视觉三维重建方法 袁 宁 ,范有情 ,何 涛 (1湖北工业大学现代制造质量工程重点实验室,湖北武汉430068;2湖北工业大学机械工程学院,湖北武汉430068) [摘要]利用Matlab实现相机标定和三维绘图功能,同时利用Vc++实现程序界面、图像采集以及立体匹配等 功能,提高了开发效率和软件产品质量. [关键词]三维重建;VC++;Matlab;混合编程 [中图分类号]TN911.73 [文献标识码]:A 随着计算机视觉技术的发展,对三维重建的开 在编程环境中使用Matlab引擎扩展编程的基 发效率、软件产品质量以及重建速度的要求越来越 本操作步骤为:1)对开发环境进行必要的设置;2)创 突出E1].在数值化计算程度高的双目视觉三维重建 建Matlab引擎对象;3)向引擎空间写入数据;4)调 的应用程序开发中,利用Matlab实现矩阵计算和数 用Matlab命令处理数据;5)从引擎空间读取数据; 值计算较多的相机标定部分以及三维绘图部分,利 6)释放Matlab引擎对象.如果在VC集成环境下利 用VC+ 实现程序界面、图像采集以及立体匹配 用Matlab引擎实现VC和Matlab的混合编程,一 等部分.而Matlab语言和C语言相比较,它具有语 般需要对VC++与Matlab混合编程的编译环境 言简单、内涵丰富、易学易用等优点,尤其是它提供 进行设置,在完成了若干基本步骤后即可利用Mat— 了丰富的绘图函数和命令,可方便地绘制一维、二维 lab引擎库函数engEvalString来调用Matlab的内 和三维图形,如线性图、极坐标图、直方图、等高线 建函数 J. 图、落差图等lL2].针对传统的利用单一环境实现三维 重建的软件开发效率和重建速度受局限等问题,本 2 系统开发环境及流程 文提出了一种基于VC++与Matlab混合编程的 双目视觉三维重建方法. 双目视觉的三维重建系统包括两个computar 1 VC++利用Matlab engine实现与 的16 mm镜头和2个西安方诚科技的VDC—FD matlab的混合编程技巧 130M型CCD相机(图1). Matlab可以通过引擎的方式与其他编程环境 下的程序实现通信,将Matlab作为一个计算引擎使 用,让其在后台运行,完成复杂的矩阵计算,简化前 台用户程序设计的任务.与其他各种接口相比,引擎 所提供的Matlab功能支持是最全面的.通过引擎方 式,应用程序会打开一个新的Matlab进程,可以控 制它完成任何Matlab所支持的计算和绘图等操作. 图1双目视觉示意图 在数据交流方面,可以对几乎所有的基本数据类型 提供支持.同时以引擎方式打开的Matlab进程以非 该三维重建系统的软件部分是以VC++为基 常友好的界面方式支持Matlab的各种操作[2]. 本框架,调用Matlab engine来实现三维重建的工 [收稿日期]2011—11—24 [基金项目]湖北省教育厅产学研项目(C2o10029),武汉市科技攻关项目(200810321157,200910321096) [作者简介]袁 宁(1987一),男,河南商丘人,湖北工业大学硕士研究生,研究方向为图像检测技术、无损检测技术、自 动检测技术 80 湖 北 工 业 大 学 学 报 201 2年第2期 作.开发环境:Win2000、Vc++6.0和Matlab7.0. 该系统采用的具体流程如图2所示. 相机标定 图像获取N>t图像预处理 特征点提取 三维重构l< 立体匹配 图2三维重建基本流程 3三维重建方法 3.1 相机标定 为了从图像中获取世界坐标系中三维物点与像 点的对应关系(图3),计算物体的形状位置等信息, 必须建立相机成像的集合模型并获得其参数.在大 多数条件下,这些参数必须通过计算与实验才能得 到,这种求解参数的过程称为相机标定[5]. ( ,Y ,Z ) 图3相机标定模型 设(X ,Y ,Z )是三维世界坐标系中某目标 点P的三维坐标,( ,y,z)是该点在相机坐标系 (定义如下图所示)中的坐标.相机坐标系定义为: 中心在0点(光学中心),Z轴与光轴重合,(X,y)是 中心在0 点(光轴 与图像平面的交点)且平行于 z,Y轴的图像坐标系,有效焦距.厂是图像平面和光 心的距离.(z ,Y )是在理想Pin—hole模型下P点 的图像坐标,( ,Y 是由透镜畸变引起的(dx , d )偏离的实际图像坐标_1 . 相机标定部分涉及到了大量的矩阵运算,而 Matlab具有强大的数学运算功能,并且有专业的相 机标定工具箱. 利用Matlab相机标定工具箱对一个基于15张 平面西洋跳棋盘图片的全面标定.具体步骤:1)装入 标定图片;2)提取图像角点;3)运行主标定程序;4) 显示结果;5)控制精度;6)添加或减少图片;7)纠正 图片畸变;8)以不同格式输出标定数据.标定板图集 如图4所示. 标定的结果被保存在Matlab的二进制文件 (mat文件)里以便于数据传递.图5所示为左右两 个相机与标定板之间的位置关系.图6所示为相机 标定工具箱获得标定结果的误差分析.从图中可以 看出每个标定板图像的误差范罔,便于添加或减少 图片,通过进一步标定获得误差更小的标定结果. 图4标定板图集 200 0 图5 双相机与标定板之间的位置关系 图6误差分析 通过Matlab相机标定工具箱可以简便快速地 完成相机的标定以及标定结果数据的存储与传递, 避免了利用VC++标定的复杂过程,有效提高了相 机标定的效率. 3.2图像预处理 通过CCD工业相机获取图像后,考虑到光照、 噪声以及相机性能等条件的影响,需要对获取的图 像做进一步处理,以提高图像清晰度,改善视觉效 果,将图像转换成更适合犬或计算机分析处理的形 式[4].该过程包括两个部分:1)图像的滤波、增强及 平滑;2)目标物体与背景的分离.在VC++环境中 有图像预处理算法集,能够完全满足三维重建中原 第27卷第2期 袁 宁等 基于混合编程的双目视觉三维重建方法 81 始图像的预处理要求.因此,图像预处理部分在VC ++环境中实现. 按键调用Matlab engine来绘制三维图.图9a为左 相机拍摄轴承图片,图9b为右相机拍摄轴承图片, 3.3特征点提取和立体匹配 特征点提取是通过Harris[ 算法实现.Harris 特征提取算法的思想是:在图像中设计一个局部检 测窗口,当该窗口沿任一方向做微小移动时,检测窗 口平均能量的变化.当能量变化值超过了设定阈值 时,则将窗口中心像素点设为角点.图像亮度 A C M: C B . (1) 式中:A一 aI+ ,B= + cu,c= + ∞. 表示卷积运算. aI, 分别为图 像在z和Y方向上的导数.(2k+1)(2k+1)的高斯 卷积函数  ̄-o1.,.f=一=:  —了 e( ).,. (2)L , Harris算法的角点响应函数 R===det(M)一k(trace(M)) >T. (3) 式中,det(M)一 1 2=AB—C ;trace(M)= 1+A 2 :A+B;k为经验值,取0.04.角点对应于函数R的 局部极大值点.当图像上某点像素的R值大于给定 的阈值T时,就把该点作为特征点. 立体匹配是三维重建的核心问题.立体匹配是 指将在不同视点下拍摄到的同一空间场景的投影图 像中的映像点对应起来,并生成相应的视差图的过 程l_7].对于实际的立体图像对,求解其对应问题极具 挑战性,可以说是立体视觉中最困难的一步.Bar— nard[ 回顾了立体重构的基本原理,对主要的匹配 方法做了综述,并且给出了算法新能的评价标准. Dhondl9 总结了大量的立体匹配算法,并介绍了分 级处理思想,提出了使用三目约束减少立体匹配的 不确定性.Koschan[ 对动态立体和主动立体、早期 的遮挡和元纹理问题以及实时立体视觉实现进行了 探讨与总结. 本文设计了一种基于置信度传播的立体匹配算 法模型,在Harris角点提取算法的基础上实现立体 匹配.图7为本文立体匹配流程图. 3.4三维重构 在VC++的编译环境中编写程序的主界面 (图8).在程序主界面中,点击按键可以有效调用 Matlab内置函数.基于双目视觉的三维重建中包含 相机标定、立体匹配、三维重构等三部分. 三维重构部分在matlab环境中实现,因其有着 强大的绘图功能,在前期工作的数据结果基础上,可 以快速获得需要的三维图.图8中的“显示三维图” 图9c为三维重建以后获得的轴承三维图. I图像前期处理I t 校验视差一致性 t l生成高置信度视差图l t 过滤分割视差图 牢 l获得高精度匹配点l t 生成高精度高置信度视差图 图7立体匹配流程 图8三维重建程序主界面 (a)左相机图像 (b)右相机图像 (c)三维图 图9轴承三维重建图 82 湖 北 工 业 大 学 学 报 2012年第2期 本文的三维重建是VC++和Matlab混合编 Ez]王素立,高洁,孙新德.MATI AB混合编程与工程 程的一个应用,即以VC++环境为程序主框架,并 应用[M].北京:清华大学出版社,2008. 且利用其完成每个界面,同时利用Matlab强大的数 [3]景征骏,许家民.VC++与MATLAB混合编程及其 学计算和绘图功能,完成整个工作.在实际的数值计 应用[J].计算机与信息技术,2006(12):70—71. 算、控制系统开发等工程应用中,可以很好地利用二 [4]冯 宇.基于计算机立体视觉的三维重建系统研究 者混合编程技术,从而简化应用程序的开发. [D].青岛:青岛科技大学图书馆,2009. [5]赵娟,曾强,魏林嫒,等.基于立体视觉的三维模型 重建系统设计[J].光电系统,2011(2):12~14,30. 4 结束语 [6]Harris C,Stephens M.A Co mbined COrner and Edge Detector[C] {Fourth Alvey Vision Conference,1988 t 三维重建技术是计算机视觉、人工智能、虚拟现 147—151. 实、医学图像等前沿领域的热点和难点,也是在基础 [7]魏 冲.基于数码相机图像的三维重建技术研究[D]. 研究和应用研究中面临的重大挑战之一.本文通过 太原:中北大学图书馆,2009. 对VC++和Matlab的集成开发,以精练的代码和 [8]Barnard S T,Fischler M A.Computational stereo[J]. 较高的运行效率实现对二维图像的三维重建.该系 ACM Computing Surverys・1982. 统不仅稳定,而且操作简单,提高了自动化的程度. [9]Dhond U R,Aggarwal J K.Structure from stereo-Are— view[J].IEEE Trans on Systems,Man and Cybernet— ics,1989,19(6):1 489—1 510. ElO]Kosehan A.What is new in computational stereo since [ 参 考 文 献 ] 1989:A survey of current stereo papers[R].Berlin: Technical University of Berlin,1993. [1]史利民,郭复胜,高伟,等.基于语义交互的三维重建 [11]张楠.双目立体视觉的摄像机标定方法研究FD].武 [J].计算机辅助设计与图形学学报,2011(5):731— 汉:湖北工业大学图书馆,2008. 734. 3 D Rec0nstructi0n of Binocular Vision Based on Hybrid Programming of VC++and Matlab YUAN Ning ,FAN You—qing ,HE Tao ,。 (1 Hubei Key Lab of Modern Manufacture Quality Engin.,Wuhan 430068,China; 2 School of Mechanical Engin.,Hubei Univ.of Tech.,Wuhan 430068,China) Abstract:This paper presented a method of binocular vision 3d reconstruction based on the hybrid pro— gramming of VC++and Matlab.The method used Matlab to realize the camera calibration and 3D drawing function,and also used VC++to realize the program interface,image acquisition and three—di— mensional matching,and other functions.The results show that the method improves the development ef— ficiency and software quality. Keywords:3D reconstruction;VC十—卜;Matlab,hybrid programming [责任编校:张众] 

因篇幅问题不能全部显示,请点此查看更多更全内容