135 们之间存在着转换关系。 函数原型:void cvCvtColor( const CvArr* src, CvArr* dst, int code ); src:输入的8-bit,16-bit 或32-bit 单倍精度浮点数影像; dst:输出的8-bit,16-bit 或32-bit 单倍精度浮点数影像; code:色彩空间转换,通过定义V_<src_color_space>2<dst_color_space> 常数: 140 a) RGB<=>XYZ (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB); b) RGB<=>YCrCb (CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB); c) RGB=>HSV (CV_BGR2HSV,CV_RGB2HSV); d) RGB=>Lab (CV_BGR2Lab, CV_RGB2Lab); 145 e) RGB=>HLS (CV_BGR2HLS, CV_RGB2HLS); f) Bayer=>RGB (CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR, CV_BayerBG2RGB, CV_BayerRG2BGR, CV_BayerGB2RGB, CV_BayerGR2BGR, CV_BayerRG2RGB, CV_BayerBG2BGR, CV_BayerGR2RGB, CV_BayerGB2BGR)。 150 MatchTemplate 比较模板和重叠的图像区域函数 函数原型:void cvMatchTemplate( const CvArr* image, const CvArr* templ, CvArr* result, int method ); 该函数滑动过整个图像image,用指定方法比较templ 与图像尺寸为w×h 的重叠区域, 并且将比较结果存到result 中。 155 image:欲搜索的图像。它应该是单通道、8-比特或32-比特浮点数图像; templ:搜索模板,不能大于输入图像,且与输入图像具有一样的数据类型; result:比较结果的映射图像。单通道、32-比特浮点数。如果图像是W×H 而templ 是 w×h,则result 一定是(W-w+1)×(H-h+1); method:指定匹配方法,如下。 160 a) method = CV_TM_SQDIFF: = Σ − + + ' , ' ( , ) [ ( ' , ' ) ( ' , ' )]2 x y R x y T x y I x x y y b) method = CV_TM_SQDIFF_NORMED: =Σ − + + Σ ⋅Σ + + ',' ' ' ',' ' ' 2 , ( , ) [ ( ' , ') ( ', ')]2 / ( ', ')2 ( , ) xy x y xy R x y T x y I x x y y T x y I x x y y c) method = CV_TM_CCORR: = Σ ⋅ + + ' , ' ( , ) [ ( ' , ' ) ( ' , ' )] x y 165 R x y T x y I x x y y d) method = CV_TM_CCORR_NORMED: =Σ ⋅ + + Σ ⋅Σ + + ',' ' ' ',' ' ' 2 , ( , ) [ ( ' , ' ) ( ' , ' )]/ ( ' , ' )2 ( , ) xy x y xy R x y T x y I x x y y T x y I x x y y e) method = CV_TM_CCOEFF: = Σ ⋅ + + ' , ' ( , ) [ ' ( ' , ' ) ' ( ' , ' )] x y R x y T x y I x x y y 170 其中, Σ ⋅ = − '' , '' ' ( ' , ' ) ( ' , ' ) 1 ( '' , '' ) x y T x y w h T x y T x y (mean template brightness=>0) Σ + + ⋅ + + = + + − '' , '' ' ( ' , ' ) ( ' , ' ) 1 ( '' , '' ) x y I x x y y w h I x x y y I x x y y (mean patch brightness=>0) 175 f) method = CV_TM_CCOEFF_NORMED: =Σ ⋅ + + Σ ⋅Σ + + ' , ' ' ' ' , ' ' ' 2 , ( , ) [ ' ( ' , ' ) ' ( ' , ' )] / ( ' , ' )2 ( , ) x y x y x y R x y T x y I x x y y T x y I x x y y 函数完成比较后,通过使用cvMinMaxLoc 找全局最小值(CV_TM_SQDIFF*)或者最 大值(CV_TM_CCORR* and CV_TM_CCOEFF*)。 3 目标跟踪设计 180 目标跟踪在一体机方案中已经实现,这里是给其增加可疑目标选定功能,操作员可以根 据自己的观察确定可以目标,并选定它。选定目标后,该目标周围即被红色椭圆形框套住, 操作员将控制转到跟踪状态,就可以对可疑目标进行跟踪了,目标可以是静止或者运动的。 算法流程图如图3 所示。 图3 目标跟踪算法流程图 Fig. 3 Target tracking algorithm flow chart 本模块需要有对鼠标操作的接口,在每一帧的操作中都需要进行目标参数进行判断。如 果用户重新选取了追踪目标,则需要替换原来的目标追踪参数。本模块的主要处理部分集中 190 于在当前帧中对追踪目标位置的判断,并用椭圆进行圈取的过程。由于摄像机捕获帧速度较 快,而目标移动是随机的,有其不确定性,并且要求系统具有较强的实时性和较高的精确性, 因此要求具有较高的运算速度和精确度。 4 实验结果和结论 4.1 全景图合成实验 195 图4 是从AVI 中获取的开始部分图像帧(压缩过的)。 图4 AVI 视频部分帧序列 Fig. 4 AVI part video frame sequence 200 对上图的图像序列进行全景图合成操作,结果如下图5 所示。 图5 全景图合成结果图 Fig. 5 Panorama synthesis results map 205 通过类似以上方式的多次反复试验,全景图合成模块基本符合用户需求,在实时性和精 确度方面都达到了较好的合成效果,但是在显示结果的过程中有些延时。在视频由左向右转 动的合成过程中,显示基本没有问题,因为每次显示都仅是加载新添加的图像;而由右向左 转动的合成过程中,由于每次都要更新合成结果的整个区域,因而显示也需要全部重新加载, 210 则会出现一定的延迟。基本可以满足要求。 4.2 目标跟踪实验 下面的实验过程是在USB 摄像头的情况下测试的。 用鼠标圈取之前,如下图6 所示。 215 图6 选择目标前 Fig. 6 Before selecting the target 图7 为用鼠标圈取目标之后的显示,以椭圆围取目标(宣传画)。 220 图7 选择目标后 Fig. 7 After selecting the target 现在移动摄像头角度,进行目标跟踪实验。实际中是以目标移动,摄像头自动追踪为目 标的。在此处由于用USB 摄像头进行试验,因而可以移动摄像头,从而实现相对运动。图 225 8 和图9 分别是摄像头左移和右移。 图8 摄像头向左转动 Fig. 8 Camera rotation to the left 230 图9 摄像头向右转动 Fig. 9 Camera rotation to the right 图中以红色椭圆形围取的即是被追踪目标(宣传画)。在摄像头移动过程中,始终保持 以椭圆形圈取目标,达到追踪的目的。由于使用的CamShift 算法中仅对目标颜色信息进行 235 判断从而实现追踪,所以跟踪精确度不是很高,仅在类似上图实验中颜色对比较为明显的情 况下比较准确。如果在环境非常复杂,颜色信息非常繁杂的情况下,效果则欠佳。 以上2 个实验,分别说明了对测试结果进行了分析。实验表明,成功地为机器人视觉部 分加装了全景图合成以及可疑目标选定功能,使应用更具针对性。系统虽然有待于进一步实 用化,但通过实验可以看出,系统在一般不是很复杂的情况下,能够满足一般性的需求。系 240 统的研究还在进行中。 [参考文献] (References) [1] David A.Forsyth, Jean Ponce. 计算机视觉:一种现代方法[M]. 林学訚,王宏等译. 北京:电子工业出版 245 社,2004. [2] 谢凯,郭恒业,张田文. 图像Mosaics 技术综述[J]. 电子学报,2004,32(4):630-634. [3] Szeliski R. Image Mosaicing for telereality applications[J]. IEEE Computer Graphics and Applications,1994,(6): 44-53. [4] 李艳丽,向辉. 稳健的球面全景图自动生成算法[J]. 计算机辅助设计与图形学报,2007,19(11): 250 1383-1398. [5] Peleg S,Herman J. Panoramic Mosaics by Manifold Projection[J]. Proceedings of IEEE Computer Society Conference on CVPR,1997: 338-343. [6] 王文明. 面向应用的机器人一体机远程控制方案设计[OL]. [2012-05-10]. http://www.paper.edu.cn/index.php/default/releasepaper/content/201205-166/ 255 [7] Richard O.Duda,Peter E.Hart,David G.Stork. 模式分类[M]. 李宏东等译. 北京:机械工业出版社, 2003. [8] 吴其庆. Eclipse 程序设计经典教程[M]. 北京:冶金工业出版社,2007. [9] 平洁,殷润民. 一种全景图快速生成算法及其实现[J]. 微计算机应用,2007,33(6):59-62. [10] H.M.Deitel,P.J.Deitel. Java 程序设计教程[M]. 施平安等译. 北京:清华大学出版社,2004. 学术论文网Tag: |