正在进行安全检测...

发布时间:2023-11-23 10:04:33

基于OpenCV的餐厅自动化结算研究张震宇;汪洋;张家龙【摘要】为实现餐厅结算的自动化,研究了基于OpenCV的图像处理技术.简要介绍餐厅自动结算系统的硬件构成和工作原理:由计算机、工业摄像头及底层交互单元组成;摄像头获取图像并经软件处理后识别为相应的价格,从而实现自动化结算.而详细分析图像处理的过程,包括图像采集、预处理、特征提取及模式识别等主要步骤;阐述OpenCV函数在各步骤中的具体应用,并给出相应的实验结果.实验结果表明,将基于OpenCV的图像处理技术应用于餐厅自动化结算是完全可行的,这为餐厅自动化结算提供了一种新方法.【期刊名称】《浙江科技学院学报》【年(,期】2017(029003【总页数】6(P189-194【关键词】OpenCV;餐厅自动化结算;图像处理;模式识别【作者】张震宇;汪洋;张家龙【作者单位】浙江科技学院自动化与电气工程学院,杭州310023;浙江科技学院动化与电气工程学院,杭州310023;浙江科技学院自动化与电气工程学院,杭州310023【正文语种】【中图分类】TN911.73;TP751
近年来出现了大量的自助式餐厅,特别是在学校和医院等就餐人数较多的单位。因其方便、灵活等优点,自助式取餐越来越受人欢迎。自助式餐厅的结算系统至关重要,其性能、效率等将直接影响顾客的满意度[1-2]。现有的自助式餐厅结算系统主要有以下3种:一是传统的人工结算方式。通过采用不同颜色、不同形状的餐盘来表示不同的菜价,以方便人工快速结算。这种方式的缺点是结算速度慢、出错率高,已不能适应当今社会发展的需要。二是基于条码识别的结算方式。每个餐盘都贴上1个条码标签,使每个菜品的价格与相应的条码关联,使用条码扫描器对餐盘的条码进行非接触式读取,从而实现自动结算。这种方式的缺点是结算时的效率偏低(需对餐盘逐个扫描识别,纸质条码标签易损坏,因而给实际推广使用带来不便。三是基于射频识别RFID(radiofrequencyidentification的结算方式。在每个餐盘内部放置1个无源RFID标签,并使用无源RFID读写器将每个菜品对应的价格信息写入标签[3],使每个菜品的价格与相应的RFID标签关联,使用无源RFID读写器对餐盘的RFID标签进行非接触式读取,从而实现自动结算。这种方式的缺点是所用的餐盘必须定制,成本较高。OpenCV1999年由英特尔(Intel公司建立的一个基于开源发行的跨平台计算机视觉库[4],可以在LinuxWindows等多种操作系统上运行。OpenCV是图像处理、计算机视觉、模式识别和计算机图形学等相关领域的优秀工具,因其资源丰富、使用方便等优点,深受广大从业人员的欢迎[5]。针对现有的餐厅自动结算系统性能上存在的不足,笔者应用基于OpenCV的图像处理技术,研究了一种全新的餐饮自动结算系统。该系统无需对传统餐盘进行任何定制或改造,能根据餐盘特定的颜色和形状,识别出菜品的价格,尤其适合于那些希望采用传统餐盘实现自动化结算的自助式餐厅,具有一定的实用价值。本系统硬件主要由计算机、工业摄像头及底层交互单元(包括托盘检测电路、人机对话电路、IC卡读写器和微型热敏打印机等构成,如图1所示。其中,人机对话
电路与计算机通过串口1连接,微型热敏打印机与计算机通过串口2连接,工业摄像头、IC卡读写器与计算机分别通过USB1USB2接口连接,系统使用的IC卡规格为13.56MHzM1S50卡。在实际使用中,当托盘检测电路检测到托盘摆放到位后,发出到位信号给人机对话电路,人机对话电路再告知给计算机,于是计算机令摄像头获取餐盘图像,并对所获的餐盘图像采用基于OpenCV的图像处理技术进行处理,识别出每个餐盘对应的价格并作出汇总后,再将相关数据信息发送给人机对话电路。人机对话电路以液晶显示和语音播报为提示方式,告知顾客消费情况,然后系统等待顾客刷卡。当顾客刷卡时,系统令IC卡读写器写入顾客的IC卡,收取本次消费金额,同时也写入网络数据库。结算完毕后,人机对话电路给出相应的提示信息,计算机令微型热敏打印机打印出消费小票。餐盘图像处理过程主要包括图像采集、图像预处理、特征提取和形状与颜色识别等步骤[6],系统采用的USB摄像头支持静态和动态图像捕捉,计算机软件按特定的算法对采集到的图像进行处理,即可识别出餐盘的不同形状、颜色,进而实现自动结算。摄像头使用时应安装于托盘的正上方,使其能很好地俯视托盘全景,以便完整地采集到餐盘的图像信息。2.1图像采集OpenCV中的HighGUI模块提供了标准USB数字摄像头接口,需要采集图像时,只需调用cvCreateCameraCaptur(函数来打开摄像头即可。实验中采集到的餐盘原始图像如图2所示。2.2图像预处理图像预处理主要包括图像的平滑处理、灰度处理、二值化处理、轮廓提取和噪声过5个步骤[7]2.2.1平滑处理采用中值滤波器来对图像进行平滑处理[8],其公式为:
(1中:f(x,yh(x,y分别为原始图像和中值滤波处理后的图像;W为二维模板,通常为2×2、3×3区域。在OpenCV中可通过调用函数cvSmooth(img_in,img_out,CV_MEDIAN来进行处理,其中img_in为输入图像的指针,img_out为输出图像的指针。处理后图像如图3所示。从图3可明显看出,平滑处理后原始图像的众多细节信息被过滤,只剩下主体轮廓图像,这样便于开展后续的图像处理与识别。2.2.2灰度处理RGB分量映射到RGB立方体的对角线上[9],由此可得出公式:(2中:rgb分别为3通道图像的红、绿、蓝色彩分量值;SGray是输出的灰度值。在OpenCV中可通过调用函数cvCvtColor(color_img,bin_img,CV_BGR2GRAY来将rgb分量转换为灰度图像。处理后图像如图4所示。2.2.3二值化处理典型的二值阈值化公式[10](3中:SGray(x,y为输入像素点灰度值;k(x,y为输出像素点二值量。本研究采用变阈值式二值阈值化,Threshold是从0255之间的N个值(其中N11将不同阈值下二值化后的图像分别做轮廓和特征提取等处理[11],以适应在不同环境下对餐盘的精确识别。采用OpenCV提供的cvThreshold(函数可实现上述功能。处理后图像如图5所示。2.2.4轮廓提取调用OpenCV的寻找轮廓函数cvFindContours,令contours_num=cvFindContours(bin_img,storage,&contour,size,mode,method,其中参数取值[12]说明见表12采用CV_RETR_LIST检索模式和CV_CHAIN_APPROX_NONE边缘近似方法来提
取边缘信息,提取后再通过cvStartReadSeq读取轮廓信息,通过CV_READ_SEQ_ELEM读取轮廓中点信息,并用cvCircle(pContourImg,pt1,1,color[0]画出所提取的轮廓。处理后图像如图6所示。2.2.5噪声过滤轮廓提取后,可明显地发现有很多背景或反光等造成的干扰信息,由于餐盘的面积和摄像头安装的位置都相对固定,因此所采集到的餐盘图像的面积可限定于一定的范围内,故本研究采用面积过滤的方法,快速去除图像中面积不符合的干扰部分,其中关键是通过已知的点集来获取轮廓面积[13]。在OpenCV中提供了轮廓面积函数cvContourArea(contour,CV_WHOLE_SEQ来获取指定轮廓的面积,如果面积小于5000或大于20000像素的就不予保留。处理后的轮廓图像如图7所示。图像预处理后获得了比较清晰的餐盘轮廓信息,接下来就是根据获得的轮廓信息来提取关键特征[14],以识别出不同形状和颜色的餐盘,从而实现自动结算。实验中所用的餐盘一共有4种形状和4种颜色,其中形状分别为矩形、方形、圆形和壳形,颜色分别为绿色、蓝色、粉红色和白色。另外,承载餐盘所用的托盘为橘黄色。餐盘的基本特征有轮廓的面积、周长、最小外接圆的面积、最小外接矩形的面积及色调直方图等。采用函数cvContourArea(contour,CV_WHOLE_SEQ来获取轮廓的面积,其中参contour为轮廓的指针,参数CV_WHOLE_SEQ表示针对轮廓中所有的点序列;采用函数cvMinEnclosingCircle(contour,¢er,&radius来获取轮廓的最小外接圆,参数centerradius分别是所得最小外接圆的圆心和半径;采用函数cvMinAreaRect2(contour获取轮廓的最小外接矩形,函数返回一个CvBox2D类型的指针,进而通过rect.size.heightrect.size.widthrect.centerrect.angle来分别获取最小外接矩形的高度、宽度、中心点坐标、与水平线的角度。为获取轮廓色调信息,首先要进行图像RGB模型到HSV模型的转换工作[15]。从
RGB模型到HSV模型的参数H(即色调的转换公式为:首先采用外接标准图形的方法来区分圆形(包括壳形和矩形(包括方形。在得到的每个轮廓中进行最小外接圆操作,然后计算此外接圆与此轮廓的面积比值,所得的值越接近于1,则轮廓图形越接近于圆形;同理,在得到的每个轮廓中进行最小外接矩形操作,然后计算此外接矩形与此轮廓的面积比值,所得的值越接近于1,则轮廓图形越接近于矩形。为了划定圆形和矩形的界限,规定与最小外接圆比值大于0.7的,判定为圆形,与最小外接矩形的比值大于0.85的,则判定为矩形。这一步完成后,实现了对餐盘形状的初步区分,分别记图7中左上角、左下角、右上角及右下角的餐盘为14号,实验中得到的相关数据及初步判断结果如表3示。在识别出图形是圆形或是矩形后,还需从圆形中区分出壳形,从矩形中区分出方形。显然,在面积相等时,标准圆形外轮廓周长必然小于壳形外轮廓周长;同理,在面积相等时,方形外轮廓周长必然小于普通矩形外轮廓周长。借助于这2个特性,即可识别出圆形、壳形、矩形和方形这4种图形,最终形状识别得出的结论如表4所示。最后还要判断出餐盘的颜色,由于餐盘中间部分往往会有食物盛放,因此只有通过提取餐盘轮廓上的色调(用参数ImageH表示来识别出不同的颜色。本研究实验中餐盘颜色种类有4种,颜色识别色调范围如表5所示。完成了餐盘的形状和颜色识别后得到的实验效果如图8所示,1号餐盘被识别为圆形、绿色,2号餐盘被识别为圆形、蓝色,3号餐盘被识别为粉红色、矩形,4号餐盘被识别为白色、方形,实验结果与实际情况相符。根据上述图像处理过程给出的实验结果可知,该系统方案是完全可行的。与现有的餐厅自动结算系统相比,该系统在性价比上具有一定的优势,这为实现餐厅自动化结算提供了一种实用价值较高的方法。但目前此系统只能针对矩形、方形、圆形和壳形等外部特征简单且种类已知的餐盘进行识别;同时在实验中还发现,当餐盘中
装满食物,特别是食物较多地遮挡了餐盘的外围轮廓线时,实验结果不很理想。在后续研究中将采用优化的轮廓检测算法来提升该系统的性能,以达到在复杂情况下也能准确识别的目的。【相关文献】[1]刘振亚,乔兵,陈卓鹏.基于菜盘特征提取的食堂自助支付系统[J].计算机系统应用,2014,23(3:216.[2]刘子龙,胡少凯,蒋辰飞,.基于ARM和计算机视觉的餐厅快速结算系统设计[J].信息技,2013(11:80.[3]南京新版图信息技术有限公司.一种自助售餐系统:201320243785.6[P].2014-03-19.[4]刘瑞祯,于仕琪.OpenCV教程基础篇[M].北京:北京航空航天大学出版社,2007.[5]BRADSKIGKAEHLERA.学习OpenCV(中文版[M].于仕琪,刘瑞祯,译.北京:清华大学出版,2009.[6]黄凯,余学才,丁建平,.基于OpenCV的铁路导轨自动识别研究[J].计算机工程与设,2013,34(2:575.[7]赵亚飞,陈柏金,郭文行,.基于OpenCV的高温锻件边缘检测[J].自动化技术与应用,2013,32(7:79.[8]谭同德,王三刚.基于OpenCV的车牌定位方法[J].计算机工程与设计,2013,34(8:2819.[9]董华军,廖敏夫,邹积岩,.真空开关电弧图像采集及其处理过程[J].电工技术学报,2007,22(8:177.[10]董立菊,于戈.一种有效的图像二值化方法[J].东北大学学报(自然科学版,2004,25(12:1150.[11]刘玉红,王志芳,杨佳仪,.彩色图像二值化算法及应用[J].中国医学物理学杂,2013,30(1:3876.[12]黄佳.基于OPENCV的计算机视觉技术研究[D].上海:华东理工大学,2012.[13]PETRUSHANM,VERMENKOY,SHAPOSHNIKOVD,etal.Comparativeanalysisofcolor-andgrayscale-basedfeaturedescriptionsforimagerecognition[J].PatternRecognitionandImageAnalysis,2013,23(3:417.[14]CHOIJY,ROYM,PLATANIOTISKN.Colorlocaltexturefeaturesforcolorfacerecognition[J].IEEETransactionsonImageProcessing,2012,21(3:1369.[15]石美红,申亮,龙世忠,.RGBHSV色彩空间转换公式的修正[J].纺织高校基础科学学,2008,21(3:354.

正在进行安全检测...

相关推荐