图书馆机器人利用视觉进行书脊识别问题展开研究

描述

针对无人图书馆中机器人利用视觉进行书脊识别问题展开研究。根据书脊图像本身较复杂、单本书轮廓难以提取的特点,提出了运用小波分析作书脊轮廓增强的图像预处理方案,通过实验比较了运用Sobel算子和Canny算子法作书脊轮廓检测的效果,用累计概率霍夫变换法作书脊线段查找,用VC++和OpenCV开发了应用程序,借鉴模糊计算思想,针对厚、较厚、中等厚度、较薄、薄、混合等几种类型的书脊进行了分类试验和研究,再经辅助优化处理,基本可有效识别出不同情况下每本书的书脊轮廓,检测出每本书的厚度,为机械手利用视觉进行图书取放操作奠定了基础。

1 引言

目前,世界上成功应用图书馆机器人的有德国洪堡大学、美国犹他州大学、日本早稻田大学等,这些图书馆机器人的应用大大节省了图书管理成本,同时使读者借还图书更加便捷。2002年,美国Johns  Hopkins大学的Jackrit Suthakom等人研制了一种完整意义上的图书馆机器人实验装置,它由移动机器人、机械手及其升降装置、摄像头等几部分组成,可以实现图书的自动存取。同年,新加坡国立大学KHO.Hao Yuan等人研究了基于RFID定位技术的无人化图书馆系统,可利用机器人完成图书存取工作。以往图书馆机器人的研究已经很好的解决了机器人图书搬运、装卸及辅助图书管理员完成图书管理等工作,但在图书上下架时机械手如何利用机器视觉进行书脊正确快速识别问题并未得到很好的解决[1-4]。书脊视觉识别的难点在于书脊图像本身比较复杂,每本书的轮廓与图像细节部分不易区分,且在实际应用中,机械手与书脊之间存在相对运动,这也给视觉识别增加了难度。美国的D.  J. Lee等人对自动化图书馆中书脊的视觉识别问题曾进行过深入的探讨[5]。本文结合实际项目,针对书脊视觉识别的特点,将小波分析、Hough变换等多种算法相结合,提出一种新的书脊视觉识别方法,该方法的有效性已在实验中得到较好的验证。

2 机器人视觉识别系统框架

机械手移动到确定的位置区间后,便可利用视觉系统通过图像处理算法精确识别出每本书的厚度,进而完成机械手的抓取操作。

通过反复实验,确定出如图1所示的图书视觉识别流程:

机器人

Figure 1 Book-Spine  Visual  Recognition  Process

图1书脊视觉识别流程

图像采集时本系统选择的是MDC-D80 2 自由度云台摄像机,470  线高分辨率,采用SONY HAD  CCD,10倍光学变焦,可通过RS-232控制,标准视频输出;旋转120度/秒,俯仰60度/秒,具有自动回复中位功能。

3 运动图像去模糊处理

由于机械手靠近书架时与书之间存在相对运动,因此会造成获取的图像模糊。本系统中机械手的运动速度并不要求很快且可以通过控制使其保持匀速,因此模糊后图像f(x,y)上任意点的值为

将模糊图像近似认为是由摄像机在x方向上作水平匀速直线运动引起的,上式可简化为

将机械手摄像机拍摄到的书脊图像信号近似看作平稳随机过程。Wienier滤波器的基本原理是将原始图像f和对原始图像的估计看作随机变量,按照使f和对估计值之间的均方误差达到最小的准则实现图像复原。运用Wienier滤波去书脊图像模糊,结果如图2所示:

机器人

机器人

(a)运动造成的模糊图像  (b)Wienier滤波去图像模糊

Figure  2Experimental  Results  of  Eblurringby  Wienier  Filter

图2  Wienier滤波去书脊图像模糊实验效果图

实验表明,运用Wienier滤波时运动位移和运动角度两个参数需根据机械手的实际运动情况合理设置,才可得到好的滤波结果。

4 小波分析法增强书脊轮廓

4.1  小波图像分解原理

设Vk为张量积多分辨率分析,Wk为小波空间。图像为f(x,y),f(x,y)L2(R2),fN(x,y)是f(x,y)在空间VN中的投影。对fk(x,y)Vk与gk(x,y)Wk,有[6]

fk+1(x,y) = fk(x,y)  + gk(x,y)

而gk(x,y)Wk还可进一步分解为

gk=  gk(1)+  gk(2)+  gk(3)

其中,,i=1,2,3。

设{al,j}{}(i=1,2,3)是由两个一元分解序列生成的二元分解序列

则图像分解算法为

图像分解示意图如图3所示:

机器人

Figure 3 Two  Level Wavelet  Decompositionof  Pictures

图3  图像小波两层分解

可得重构算法为

机器人

图像作小波变换后,可得到一系列不同分辨率的子图像,不同子图像对应的频率不同。

4.2 设计与实验

小波变换将一幅图像分解为大小、位置、方向均不相同的分量,图像经二维小波分解后,轮廓主要体现在低频部分,细节主要体现在在高频部分[7]。由于机械手抓取图书时需要知道的是每本书的厚度,因此在作图像识别时应更多关注书脊的外部轮廓而非书脊上的文字细节信息。这可以通过对图像作小波增强处理来实现,本系统的做法是:对书脊图像进行2层分解,对分解系数进行处理,即使低频分解系数增强以突出轮廓,高频分解系数衰减以弱化细节,再对处理后的系数进行小波重构,最终得到轮廓增强的图像。为得到理想的图像,小波分解系数的阈值选取是关键,即如何界定高低频分解系数问题。设系数阈值为T。对大于T的系数进行加权处理,设此权值为;对小于T的系数也进行加权处理,设此权值为。书脊轮廓增强实验效果如图4所示:

机器人

图4小波书脊轮廓增强实验效果

比较处理后的图像效果可知,系数阈值的大小对图像的灰度有直接影响,权值的选择对轮廓与细节的保留程度有影响,只有在适中的情况下,才可获得想要的结果。选择图4中(e)作为进一步检测和识别的对象。

5视觉检测与识别实验5.1  书脊边缘检测实验

机器人图书视觉检测系统对边缘检测的要求是:

(1)能检测出预抓取的目标书籍的完整外部轮廓;

(2)尽可能少检测出书脊上文字的轮廓;

(3)对当前机器视野中所有书脊的轮廓能够很好的区分开。

图5为调整到最佳阈值后对同一幅图像分别用Sobel算子和Canny算子所做的书脊边缘检测效果。

机器人

(a)原始图像  (b)Sobel算子  (c)Canny算子

Figure 5 Experimental  Results  of Book-Spine  Edge  Detection

图5书脊边缘检测实验效果图

比较后发现,运用Canny算子对书脊边缘进行检测的效果更好,可以更加完整的检测出书脊轮廓,有利于后续的Hough算法提取书脊线段。除边缘检测算法外,检测效果与摄像机拍摄图像时的位置及拍摄到的图像角度、范围都有关。

Canny  算法采用双阈值法从候选边缘点中检测和连接出最终的边缘。OpenCV中通过函数cvCanny访问Canny算子边缘检测算法,其函数原型为cvCanny(  const CvArr* image, CvArr* edges, double threshold1, double threshold2, int  aperture_size  ),参数threshold1为第一个阈值,参数threshold2为  第二个阈值。 运用Canny算子对书脊进行边缘检测时应恰当设置阈值参数,阈值设置的目的是尽量使图像的细节部分边缘减少,尽可能多的保留每本书的外部轮廓边缘,以利于外部轮廓的直线查找。图6是选用不同阈值时的边缘检测效果,显然(b)的阈值设定值更符合图像分割需求。

机器人

Figure 6  CannyAlgorithm  Threshold  Setting  Results  Compare

图6Canny算法阈值设定结果比较

通过实验“试凑法”得到合理的Canny算法阈值是一种有效方法,但对于动态的移动机器人视觉系统来讲并不实用。移动机器人视觉系统应能在每次采集图像并进行预处理时自适应的调整边缘检测算法的阈值。常用的自适应阈值选取方法有:双峰法、迭代法、大津法(OTSU法)及其改进算法。在以上实验的基础上,本文采用迭代法选取最佳阈值,解决不同书脊图像分割时的阈值自动切换与识别问题。迭代法的公式是:

机器人

迭代法的实现步骤是:

(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,迭代计算直至迭代收敛于某个稳定的阈值时,此阈值即为最终结果。

5.2 书脊线段查找实验

本系统采用累计概率霍夫变换(PPHT)算法实现书脊线段的查找。

采用霍夫变换检测直线,其基本思想是利用点-线的对偶性,点-线在两个坐标系中的对偶关系如图7所示:

机器人

Figure 7 Hough  Transform for  Line  Detection  Principle

图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,doubletheta,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  Aalgorithm

图8PPHT算法参数选择实验

实验结果表明,Threshold固定时,当param2偏大时,Hough变换连成的直线太多,很多直线是不想要的,这些直线的干扰使书脊边界无法提取;当param2偏小时,连成的直线又太少,检测不出相对较长的书脊直线,也不好提取书脊边界。Threshold的设置对书脊的判定影响较大。由于该图书馆机器人工作在自主作业模式,因此需根据作业对象自适应的调整Threshold的设定值以达到环境适应性强的目的。为加快系统计算速度,这里仍采用迭代法自适应的设定阈值参数。

5.3 识别结果优化处理

摄像头拍摄角度、距离以及书本身的高度不等等客观事实会带来所拍摄图像的某些区域检测结果有较大失真,此时应放弃对此部分区域的处理结果,圈定出检测效果相对完善的区域,即能够有效分离出每一本书并确定出每一本书厚度的区域,将此区域定义为有效检测区域,如图9中矩形R所包围的区域。在有效检测区域内再做下一步的计算与处理。

进一步的计算与处理包括两个方面:1)在有效检测区域中划出虚拟的两条线段a和b,使a、b之间为最有利于提取出书脊直线特征的区域。2)消除多余线段带来的检测误差,如图中书脊上的文字可能被误检测成书之间的分割线段(图中的线段①、②),这会给机械手控制器发出抓取指令时带来强干扰,解决此问题的方法是:对同一幅图像进行多次采集,将每次的处理结果相比较,采用表决融合准则,降低误判率。为减少计算量,最多采集3次。

为验证方法的有效性和普遍适用性,借鉴模糊智能计算思想,对书脊厚度类别作如下模糊划分:{厚、较厚、中等厚度、较薄、薄、混合},其中“混合”是指厚、薄书脊随机混放情况。在以上6种情况下分别采集不同书脊图像100幅,用文中提出的方法进行书脊识别试验,得到书脊位置有效检出率分类统计结果,如表1所示。

Table 1 Storage space analysis of OBDDs data structure  (Byte)

表1 书脊位置有效检出率分类统计表

厚度类别 霍夫变换的阈值 有效检出率(%) 耗时(s)
厚(每本书厚度>1000页) 50 100 1.0
较厚(500<=每本书厚度<=1000页) 50 99 1.2
中等厚度(300<=每本书厚度<500页) 60 95 1.8
较薄(100<=每本书厚度<300页) 60 90 1.9
薄(每本书厚度<100页) 80 85 2.0
混合(厚、薄随机混放) 80 70 2.5

从表1中可看出,当书脊厚度较大且均匀时,有效检出率较高,且算法耗时较少,基本可满足鲁棒实时识别的需求;当书脊厚度较小且均匀时,有效检出率相对低一些,但仍能满足实时识别需求;当书脊厚度不一即随机混合时,检出率最低  ,耗时也最大,这种情况为最难识别的极端情况。

6  结束语

图书馆机器人机械手的图书识别问题实际上属于摄像机运动、目标静止的移动机器人视觉系统问题,这也是目前运动视觉研究的一个重要方向。常用的处理方法是分析运动过程中获得的图像序列,可能是对某一感兴趣区域的各个角度的观察图像序列,来建立目标的3D结构信息[9]。考虑到此种方法在程序处理时的复杂性,本文采取了一种新型综合处理方法,实验结果已充分表明,该方法可通过编程实现,且计算量较小、识别率较高、实时性较强,已成功应用到我们研制的图书馆机器人装置中。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分