方建军,杜明芳,2,庞 睿
(1.北京联合大学自动化学院,北京100101;2.北京理工大学自动化学院,北京100081)
目前,世界上成功应用图书馆机器人的有德国洪堡大学、美国犹他州大学、日本早稻田大学等,这些图书馆机器人的应用大大节省了图书管理成本,同时使读者借还图书更加便捷。2002年,美国Johns Hopkins大学的 Suthakom J等人[1]研制了一种完整意义上的图书馆机器人实验装置,它由移动机器人、机械手及其升降装置、摄像头等几部分组成,可以实现图书的自动存取。同年,新加坡国立大学Yuan K H等人[2]研究了基于RFID定位技术的无人化图书馆系统,可利用机器人完成图书存取工作。以往图书馆机器人的研究已经很好地解决了机器人图书搬运、装卸及辅助图书管理员完成图书管理等工作,但在图书上下架时,机械手如何利用机器视觉进行书脊正确快速识别问题并未得到很好的解决[1~4]。书脊视觉识别的难点在于书脊图像本身比较复杂,每本书的轮廓与图像细节部分不易区分,且在实际应用中,机械手与书脊之间存在相对运动,这也给视觉识别增加了难度。美国的Lee D J等人[5]对自动化图书馆中书脊的视觉识别问题曾进行过深入的探讨。本文结合实际项目,针对书脊视觉识别的特点,将小波分析、Hough变换等多种算法相结合,提出一种新的书脊视觉识别方法,该方法的有效性已在实验中得到较好的验证。
机械手移动到确定的位置区间后,便可利用视觉系统通过图像处理算法精确识别出每本书的厚度,进而完成机械手的抓取操作。
通过反复实验,确定出如图1所示的图书视觉识别流程。
Figure 1 Book-spine visual recognition process图1 书脊视觉识别流程
本系统选择 MDC-D80 2自由度云台摄像机用于图像采集,该摄像机具有470线高分辨率,SONY HAD CCD,10倍光学变焦,旋转120°/s,俯仰60°/s。
由于机械手靠近书架时与书之间存在相对运动,因此会造成获取的图像模糊。本系统中机械手的运动速度并不要求很快且可以通过控制使其保持匀速,因此模糊后图像f(x,y)上任意点的值为:
其中,Tr是运动终止时间,x0(t)是起始时刻x方向上的像素坐标。
将模糊图像近似认为是由摄像机在x方向上做水平匀速直线运动引起的,上式可简化为:
将机械手摄像机拍摄到的书脊图像信号近似看作平稳随机过程。Wiener滤波器的基本原理是将原始图像f和对原始图像的估计^f看作随机变量,按照使f和对估计值之间^f的均方误差达到最小的准则进行图像复原。运用Wiener滤波去书脊图像模糊,结果如图2所示。
Figure 2 Experimental results of eblurring by Wiener filter图2 Wiener滤波去书脊图像模糊实验效果图
实验表明,运用Wiener滤波时,运动位移和运动角度两个参数需根据机械手的实际运动情况合理设置,才可得到好的滤波结果。
设{Vk}为多分辨率分析,Wk为Vk关于Vk+1的补空间。图像为f(x,y),f(x,y)∈L2(R2),fN(x,y)是f(x,y)在空间VN中的投影。对fk(x,y)∈Vk与gk(x,y)∈Wk,有[6]:
而gk(x,y)∈Wk还可进一步分解为:
设{al,j},{}(i=1,2,3)是由两个一元分解序列生成的二元分解序列:
记:
其中,Ck;n,m、是小波系数,Ø 是 Vk的基底,φi是Wk的基底。
则图像分解算法为:
图像分解示意图如图3所示,其中,L表示低频,H表示高频。图像做小波变换后,可得到不同分辨率的子图像序列。
Figure 3 Two-level wavelet decomposition of pictures图3 图像小波两层分解
设{pl,j},}(i=1,2,3)是由两个一元两尺度序列得到的二元两尺度序列,即:
可得重构算法为:
图像做小波变换后,可得到一系列不同分辨率的子图像,不同子图像对应的频率不同。
小波变换将一幅图像分解为大小、位置、方向均不相同的分量,图像经二维小波分解后,轮廓主要体现在低频部分,细节主要体现在高频部分[7]。由于机械手抓取图书时需要知道的是每本书的厚度,因此在做图像识别时应更多关注书脊的外部轮廓而非书脊上的文字细节信息。这可以通过对图像做小波增强处理来实现,本系统的做法是:对书脊图像进行两层分解,对分解系数进行处理,即使低频分解系数增强以突出轮廓,高频分解系数衰减以弱化细节,再对处理后的系数进行小波重构,最终得到轮廓增强的图像。为得到理想的图像,小波分解系数的阈值选取是关键,即如何界定高低频分解系数问题。设系数阈值为T,对大于T的系数进行加权处理,设权值为α;对小于T的系数也进行加权处理,设权值为β。书脊轮廓增强实验效果如图4所示。
Figure 4 Experimental results of book-spine contour enhancement by wavelet图4 小波书脊轮廓增强实验效果
比较处理后的图像效果可知,系数阈值的大小对图像的灰度有直接影响,权值的选择对轮廓与细节的保留程度有影响,只有在适中的情况下,才可获得想要的结果。选择图4e作为进一步检测和识别的对象。
机器人图书视觉检测系统对边缘检测的要求是:(1)能检测出预抓取的目标书籍的完整外部轮廓;(2)尽可能少检测出书脊上文字的轮廓;(3)对当前机器视野中所有书脊的轮廓能够很好地区分开。
图5为调整到最佳阈值后对同一幅图像分别用Sobel算子和Canny算子所做的书脊边缘检测效果。
比较后发现,运用Canny算子对书脊边缘进行检测的效果更好,可以更加完整地检测出书脊轮廓,有利于后续的Hough变换提取书脊线段。除边缘检测算法外,检测效果与摄像机拍摄图像时的位置及拍摄到的图像角度、范围都有关。
Figure 5 Experimental results of book-spine edge detection图5 书脊边缘检测实验效果图
Canny算子采用双阈值法从候选边缘点中检测和连接出最终的边缘。OpenCV中通过函数cvCanny访问Canny算子边缘检测算法,其函数原型为cvCanny(const CvArr*image,CvArr*edges,double threshold1,double threshold2,int aperture_size),参数threshold1为第一个阈值,参数threshold2为第二个阈值。运用Canny算子对书脊进行边缘检测时应恰当设置阈值参数,阈值设置的目的是尽量使图像的细节部分边缘减少,尽可能多地保留每本书的外部轮廓边缘,以利于外部轮廓的直线查找。图6是选用不同阈值时的边缘检测效果,显然图6b的阈值设定更符合图像分割需求。
通过实验“试凑法”得到合理的Canny算子阈值是一种有效方法,但对于动态的移动机器人视觉系统来讲并不实用。移动机器人视觉系统应能在每次采集图像并进行预处理时自适应地调整边缘检测算法的阈值。常用的自适应阈值选取方法有:双峰法、迭代法、大津法(OTSU法)及其改进算法。在以上实验的基础上,本文采用迭代法选取最佳阈值,解决不同书脊图像分割时的阈值自动切换与识别问题。迭代法的公式是:
其中,n为灰度级的个数,hk是灰度为k的像素点的个数,Ti是迭代i次后的阈值。
迭代法的实现步骤是:
(1)根据实验结果求出图像的最大灰度值和最小灰度值,分别记为ZMAX和ZMIN,令初始阈值T0=(ZMAX+ZMIN)/2;
(2)根据阈值Ti(i=0,1,2,…)将图像分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;
(3)求出新阈值Ti+1=(ZO+ZB)/2;
(4)若Ti=Ti+1,则所得即为阈值;否则转(2),迭代计算直至迭代收敛于某个稳定的阈值时,此阈值即为最终结果。
本系统采用累计概率霍夫变换PPHT(Progressive Probability Hough Transform)算法实现书脊线段的查找。
采用霍夫变换检测直线,其基本思想是利用点-线的对偶性,点-线在两个坐标系中的对偶关系如图7所示。
Figure 7 Principle of Hough transform for line detection图7 霍夫变换检测直线原理
Hough变换采用一种“投票机制”,输入空间(x-y 空间)中的每一个点,对对应的输出空间(p-q空间)的某些参数组合(由q、p组成的数组)进行投票,获得票数最多的参数组合(如某对(p,q)值)胜出。
在OpenCV中通过函数cvHoughLines2访问PPHT算法。cvHoughLines2的函数原型是:
CvSeq*cvHoughLines2(CvArr*image,void*line_storage,int method,double rho,double theta,int threshold,double param1,double param2 )[8]。将 参 数 method 设 置 成 CV _HOUGH_PROBABILISTIC表示选择PPHT算法。实验表明,参数threshold、param1、param2的设置对检测结果有直接影响,恰当地配置这些参数才能得到使机械手臂准确定位的目标图像。Threshold是阈值参数,如果相应的累计值大于threshold,则认定为一条直线。param1设置将要返回的线段的最小长度,param2表示在同一条直线上进行碎线段连接的最大间隔值(gap),即当同一条直线上的两条碎线段之间的间隔小于param2时,将其合二为一。
图8为修改各参数值时得到的不同检测结果(为简便,用f1表示原始图像,用f2表示小波轮廓增强后的图像,th表示threshold,p1表示param1,p2表示param2)。
Figure 8 Parameter selection experiments by PPHT algorithm图8 PPHT算法参数选择实验
实验结果表明,在threshold固定时,当param2偏大时,Hough变换连成的直线太多,很多直线是不想要的,这些直线的干扰使书脊边界无法提取;当param2偏小时,连成的直线又太少,检测不出相对较长的书脊直线,也不好提取书脊边界。Threshold的设置对书脊的判定影响较大。由于该图书馆机器人工作在自主作业模式,因此需根据作业对象自适应地调整threshold的设定值,以达到环境适应性强的目的。为加快系统计算速度,这里仍采用迭代法自适应地设定阈值参数。
摄像头拍摄角度、距离以及书本身的高度不等等客观事实会带来所拍摄图像的某些区域检测结果有较大失真,此时应放弃对此部分区域的处理结果,圈定出检测效果相对完善的区域,即能够有效分离出每一本书并确定出每一本书厚度的区域,将此区域定义为有效检测区域,如图9中矩形R所包围的区域。在有效检测区域内再做下一步的计算与处理。
Figure 9 Recognition results optimization图9 识别结果优化处理
进一步的计算与处理包括两个方面:(1)在有效检测区域中划出虚拟的两条线段a和b,使a、b之间为最有利于提取出书脊直线特征的区域。(2)消除多余线段带来的检测误差,如图中书脊上的文字可能被误检测成书之间的分割线段(图中的线段①、②),这会给机械手控制器发出抓取指令时带来强干扰,解决此问题的方法是:对同一幅图像进行多次采集,对每次的处理结果相比较,采用表决融合准则,降低误判率。为减少计算量,最多采集三次。
为验证方法的有效性和普遍适用性,借鉴模糊智能计算思想,对书脊厚度类别做如下模糊划分:{厚.较厚.中等厚度.较薄.薄,混合},其中“混合”是指厚、薄书脊随机混放情况。在以上六种情况下分别采集不同书脊图像100幅,用文中提出的方法进行书脊识别实验,得到书脊位置有效检出率分类统计结果,如表1所示。
Table 1 Spine position detection rate table表1 书脊位置有效检出率分类统计表
从表1中可看出,当书脊厚度较大且均匀时,有效检出率较高,且算法耗时较少,基本可满足鲁棒实时识别的需求;当书脊厚度较小且均匀时,有效检出率相对低一些,但仍能满足实时识别需求;当书脊厚度不一,即随机混合时,检出率最低,耗时也最大,这种情况为最难识别的极端情况。
图书馆机器人机械手的图书识别问题实际上属于摄像机运动、目标静止的移动机器人视觉系统问题,这也是目前运动视觉研究的一个重要方向。常用的处理方法是通过分析运动过程中获得的图像序列,可能是对某一感兴趣区域的各个角度的观察图像序列来建立目标的3D结构信息[9]。考虑到此种方法在程序处理时的复杂性,本文采取了一种新型综合处理方法,实验结果已充分表明,该方法可通过编程实现,且计算量较小、识别率较高、实时性较强,已成功应用到我们研制的图书馆机器人装置中。
[1] Suthakom J.A robotic library system for an off-site shelving facility[C]∥Proc of 2002IEEE International Conference on Robotics & Automation,2002:1010-1012.
[2] Yuan K H,Hong A C,Ang M,et al.Unmanned library:An intelligent robotic books retrieval &return system utilizing RFID tags[C]∥Proc of 2002IEEE International Conference on Systems,Man and Cybernetics,2002:50-55.
[3] Miller C.An investigation of an automated shelf reading and inventory system for the clemson university cooper library[EB/OL].[2006-01-07].http://www.ces.clemson.edu/ie/academics/isaris.pdf.
[4] Anderson D R.Method without madness:Shelf-reading methods and project management[J].College and Undergraduate Libraries,1998,5(1):1069-1072.
[5] Lee D J.Matching book-spine images for library shelf-reading process automation[C]∥Proc of the 4th IEEE Conference on Automation Science and Engineering Key Bridge Marriott,2008:1004-1008.
[6] Cheng Zheng-xing.Wavelet analysis and applications[M].Xi’an:Xi’an Jiaotong University Press,2006.(in Chinese)
[7] Hu Chang-hua,Li Guo-hua.MATLAB 7.X based systems analysis and design:Wavelet analysis[M].third edition.Xi’an:Xi’an University of Electronic Science and Technology Press,2008.(in Chinese)
[8] Bradski G,Kaehler A.Learning openCV:Computer vision with the openCV library[M].Beijing:Tsinghua University Press,2009.(in Chinese)
[9] Zhang Yi,Luo Yuan,Zheng Tai-xiong.Mobile robot technology and its applications[M].Beijing:Electronic Industry Press,2007.(in Chinese)
附中文参考文献:
[6] 程正兴.小波分析与应用实例[M].西安:西安交通大学出版社,2006.
[7] 胡昌华,李国华.基于 MATLAB 7.X的系统分析与设计:小波分析[M].第三版.西安:西安电子科技大学出版社,2008.
[8] Bradski G,Kaehler A.Learning OpenCV:Computer Vision with the OpenCV Library[M].北京:清 华大学出版社,2009.
[9] 张毅,罗元,郑太雄.移动机器人技术及其应用[M].北京:电子工业出版社,2007.