張震宇,汪 洋,張家龍
(浙江科技學院 自動化與電氣工程學院,杭州 310023)
?
基于OpenCV的餐廳自動化結算研究
張震宇,汪 洋,張家龍
(浙江科技學院 自動化與電氣工程學院,杭州 310023)
為實現(xiàn)餐廳結算的自動化,研究了基于OpenCV的圖像處理技術。簡要介紹餐廳自動結算系統(tǒng)的硬件構成和工作原理:由計算機、工業(yè)攝像頭及底層交互單元組成;攝像頭獲取圖像并經(jīng)軟件處理后識別為相應的價格,從而實現(xiàn)自動化結算。進而詳細分析圖像處理的過程,包括圖像采集、預處理、特征提取及模式識別等主要步驟;闡述OpenCV函數(shù)在各步驟中的具體應用,并給出相應的實驗結果。實驗結果表明,將基于OpenCV的圖像處理技術應用于餐廳自動化結算是完全可行的,這為餐廳自動化結算提供了一種新方法。
OpenCV;餐廳自動化結算;圖像處理;模式識別
近年來出現(xiàn)了大量的自助式餐廳,特別是在學校和醫(yī)院等就餐人數(shù)較多的單位。因其方便、靈活等優(yōu)點,自助式取餐越來越受人歡迎。自助式餐廳的結算系統(tǒng)至關重要,其性能、效率等將直接影響顧客的滿意度[1-2]?,F(xiàn)有的自助式餐廳結算系統(tǒng)主要有以下3種:一是傳統(tǒng)的人工結算方式。通過采用不同顏色、不同形狀的餐盤來表示不同的菜價,以方便人工快速結算。這種方式的缺點是結算速度慢、出錯率高,已不能適應當今社會發(fā)展的需要。二是基于條碼識別的結算方式。每個餐盤都貼上1個條碼標簽,使每個菜品的價格與相應的條碼關聯(lián),使用條碼掃描器對餐盤的條碼進行非接觸式讀取,從而實現(xiàn)自動結算。這種方式的缺點是結算時的效率偏低(需對餐盤逐個掃描識別),紙質條碼標簽易損壞,因而給實際推廣使用帶來不便。三是基于射頻識別RFID(radio frequency identification)的結算方式。在每個餐盤內部放置1個無源RFID標簽,并使用無源RFID讀寫器將每個菜品對應的價格信息寫入標簽[3],使每個菜品的價格與相應的RFID標簽關聯(lián),使用無源RFID讀寫器對餐盤的RFID標簽進行非接觸式讀取,從而實現(xiàn)自動結算。這種方式的缺點是所用的餐盤必須定制,成本較高。
OpenCV是1999年由英特爾(Intel)公司建立的一個基于開源發(fā)行的跨平臺計算機視覺庫[4],可以在Linux、Windows等多種操作系統(tǒng)上運行。OpenCV是圖像處理、計算機視覺、模式識別和計算機圖形學等相關領域的優(yōu)秀工具,因其資源豐富、使用方便等優(yōu)點,深受廣大從業(yè)人員的歡迎[5]。針對現(xiàn)有的餐廳自動結算系統(tǒng)性能上存在的不足,筆者應用基于OpenCV的圖像處理技術,研究了一種全新的餐飲自動結算系統(tǒng)。該系統(tǒng)無需對傳統(tǒng)餐盤進行任何定制或改造,能根據(jù)餐盤特定的顏色和形狀,識別出菜品的價格,尤其適合于那些希望采用傳統(tǒng)餐盤實現(xiàn)自動化結算的自助式餐廳,具有一定的實用價值。
本系統(tǒng)硬件主要由計算機、工業(yè)攝像頭及底層交互單元(包括托盤檢測電路、人機對話電路、IC卡讀寫器和微型熱敏打印機等)構成,如圖1所示。其中,人機對話電路與計算機通過串口1連接,微型熱敏打印機與計算機通過串口2連接,工業(yè)攝像頭、IC卡讀寫器與計算機分別通過USB1、USB2接口連接,系統(tǒng)使用的IC卡規(guī)格為13.56 MHz的M1 S50卡。在實際使用中,當托盤檢測電路檢測到托盤擺放到位后,發(fā)出到位信號給人機對話電路,人機對話電路再告知給計算機,于是計算機令攝像頭獲取餐盤圖像,并對所獲的餐盤圖像采用基于OpenCV的圖像處理技術進行處理,識別出每個餐盤對應的價格并作出匯總后,再將相關數(shù)據(jù)信息發(fā)送給人機對話電路。人機對話電路以液晶顯示和語音播報為提示方式,告知顧客消費情況,然后系統(tǒng)等待顧客刷卡。當顧客刷卡時,系統(tǒng)令IC卡讀寫器寫入顧客的IC卡,收取本次消費金額,同時也寫入網(wǎng)絡數(shù)據(jù)庫。結算完畢后,人機對話電路給出相應的提示信息,計算機令微型熱敏打印機打印出消費小票。
圖1 系統(tǒng)整體硬件構成示意圖Fig.1 Schematic diagram of the whole hardware system
餐盤圖像處理過程主要包括圖像采集、圖像預處理、特征提取和形狀與顏色識別等步驟[6],系統(tǒng)采用的USB攝像頭支持靜態(tài)和動態(tài)圖像捕捉,計算機軟件按特定的算法對采集到的圖像進行處理,即可識別出餐盤的不同形狀、顏色,進而實現(xiàn)自動結算。攝像頭使用時應安裝于托盤的正上方,使其能很好地俯視托盤全景,以便完整地采集到餐盤的圖像信息。
2.1 圖像采集
OpenCV中的HighGUI模塊提供了標準USB數(shù)字攝像頭接口,需要采集圖像時,只需調用cvCreateCameraCaptur()函數(shù)來打開攝像頭即可。實驗中采集到的餐盤原始圖像如圖2所示。
2.2 圖像預處理
圖像預處理主要包括圖像的平滑處理、灰度處理、二值化處理、輪廓提取和噪聲過濾5個步驟[7]。
2.2.1 平滑處理
采用中值濾波器來對圖像進行平滑處理[8],其公式為:
h(x,y)=med{f(x-k,y-l),(k,l)∈W},
(1)
式(1)中:f(x,y)、h(x,y)分別為原始圖像和中值濾波處理后的圖像;W為二維模板,通常為2×2、3×3區(qū)域。在OpenCV中可通過調用函數(shù)cvSmooth(img_in, img_out,CV_MEDIAN)來進行處理,其中img_in為輸入圖像的指針,img_out為輸出圖像的指針。處理后圖像如圖3所示。
圖2 采集到的原始圖像Fig.2 The original image acquired by the camera
圖3 平滑處理后的圖像Fig.3 The image produced by smoothing processing
圖4 灰度處理后的圖像Fig.4 The image produced by gray processing
從圖3可明顯看出,平滑處理后原始圖像的眾多細節(jié)信息被過濾,只剩下主體輪廓圖像,這樣便于開展后續(xù)的圖像處理與識別。
2.2.2 灰度處理
將R、G、B分量映射到R、G、B立方體的對角線上[9],由此可得出公式:
SGray=0.299×r+0.587×g+0.114×b,
(2)
式(2)中:r、g、b分別為3通道圖像的紅、綠、藍色彩分量值;SGray是輸出的灰度值。在OpenCV中可通過調用函數(shù)cvCvtColor(color_img,bin_img,CV_BGR2GRAY)來將r、g、b分量轉換為灰度圖像。處理后圖像如圖4所示。
2.2.3 二值化處理
典型的二值閾值化公式[10]為
(3)
圖5 Threshold為30時二值閾值化處理后的圖像Fig.5 The image produced by two values threshold processing(Threshold=30)
式(3)中:SGray(x,y)為輸入像素點灰度值;k(x,y)為輸出像素點二值量。本研究采用變閾值式二值閾值化,Threshold是從0到255之間的N個值(其中N取11),將不同閾值下二值化后的圖像分別做輪廓和特征提取等處理[11],以適應在不同環(huán)境下對餐盤的精確識別。采用OpenCV提供的cvThreshold()函數(shù)可實現(xiàn)上述功能。處理后圖像如圖5所示。
2.2.4 輪廓提取
調用OpenCV的尋找輪廓函數(shù)cvFindContours,令contours_num=cvFindContours(bin_img, storage, &contour, size, mode, method),其中參數(shù)取值[12]說明見表1~2。
表1 參數(shù)mode取值表Table 1 The value table of parameter mode
表2 參數(shù)method取值表Table 2 The value table of parameter method
采用CV_RETR_LIST檢索模式和CV_CHAIN_APPROX_NONE邊緣近似方法來提取邊緣信息,提取后再通過cvStartReadSeq讀取輪廓信息,通過CV_READ_SEQ_ELEM讀取輪廓中點信息,并用cvCircle (pContourImg, pt1,1, color[0])畫出所提取的輪廓。處理后圖像如圖6所示。
2.2.5 噪聲過濾
輪廓提取后,可明顯地發(fā)現(xiàn)有很多背景或反光等造成的干擾信息,由于餐盤的面積和攝像頭安裝的位置都相對固定,因此所采集到的餐盤圖像的面積可限定于一定的范圍內,故本研究采用面積過濾的方法,快速去除圖像中面積不符合的干擾部分,其中關鍵是通過已知的點集來獲取輪廓面積[13]。在OpenCV中提供了輪廓面積函數(shù)cvContourArea(contour,CV_WHOLE_SEQ))來獲取指定輪廓的面積,如果面積小于5 000或大于20 000像素的就不予保留。處理后的輪廓圖像如圖7所示。
圖像預處理后獲得了比較清晰的餐盤輪廓信息,接下來就是根據(jù)獲得的輪廓信息來提取關鍵特征[14],以識別出不同形狀和顏色的餐盤,從而實現(xiàn)自動結算。
實驗中所用的餐盤一共有4種形狀和4種顏色,其中形狀分別為矩形、方形、圓形和殼形,顏色分別為綠色、藍色、粉紅色和白色。另外,承載餐盤所用的托盤為橘黃色。餐盤的基本特征有輪廓的面積、周長、最小外接圓的面積、最小外接矩形的面積及色調直方圖等。
圖6 輪廓提取處理后的圖像Fig.6 The image produced by contour extraction
圖7 噪聲過濾處理后的圖像Fig.7 The image produced by noise filtering
采用函數(shù)cvContourArea(contour,CV_WHOLE_SEQ)來獲取輪廓的面積,其中參數(shù)contour為輪廓的指針,參數(shù)CV_WHOLE_SEQ表示針對輪廓中所有的點序列;采用函數(shù)cvMinEnclosingCircle(contour, ¢er, &radius)來獲取輪廓的最小外接圓,參數(shù)center、radius分別是所得最小外接圓的圓心和半徑;采用函數(shù)cvMinAreaRect2(contour)獲取輪廓的最小外接矩形,函數(shù)返回一個CvBox2D類型的指針,進而通過rect.size.height、rect.size.width、rect.center和rect.angle來分別獲取最小外接矩形的高度、寬度、中心點坐標、與水平線的角度。
為獲取輪廓色調信息,首先要進行圖像RGB模型到HSV模型的轉換工作[15]。從RGB模型到HSV模型的參數(shù)H(即色調)的轉換公式為:
首先采用外接標準圖形的方法來區(qū)分圓形(包括殼形)和矩形(包括方形)。在得到的每個輪廓中進行最小外接圓操作,然后計算此外接圓與此輪廓的面積比值,所得的值越接近于1,則輪廓圖形越接近于圓形;同理,在得到的每個輪廓中進行最小外接矩形操作,然后計算此外接矩形與此輪廓的面積比值,所得的值越接近于1,則輪廓圖形越接近于矩形。為了劃定圓形和矩形的界限,規(guī)定與最小外接圓比值大于0.7的,判定為圓形,與最小外接矩形的比值大于0.85的,則判定為矩形。這一步完成后,實現(xiàn)了對餐盤形狀的初步區(qū)分,分別記圖7中左上角、左下角、右上角及右下角的餐盤為1 ~ 4號,實驗中得到的相關數(shù)據(jù)及初步判斷結果如表3所示。在識別出圖形是圓形或是矩形后,還需從圓形中區(qū)分出殼形,從矩形中區(qū)分出方形。顯然,在面積相等時,標準圓形外輪廓周長必然小于殼形外輪廓周長;同理,在面積相等時,方形外輪廓周長必然小于普通矩形外輪廓周長。借助于這2個特性,即可識別出圓形、殼形、矩形和方形這4種圖形,最終形狀識別得出的結論如表4所示。
表3 餐盤形狀初步判斷實驗數(shù)據(jù)Table 3 Experiment data table of preliminary shape recognition for the plates
最后還要判斷出餐盤的顏色,由于餐盤中間部分往往會有食物盛放,因此只有通過提取餐盤輪廓上的色調(用參數(shù)ImageH表示)來識別出不同的顏色。本研究實驗中餐盤顏色種類有4種,顏色識別色調范圍如表5所示。完成了餐盤的形狀和顏色識別后得到的實驗效果如圖8所示,1號餐盤被識別為圓形、綠色,2號餐盤被識別為圓形、藍色,3號餐盤被識別為粉紅色、矩形,4號餐盤被識別為白色、方形,實驗結果與實際情況相符。
表4 餐盤形狀最終識別實驗數(shù)據(jù)Table 4 Experiment data table of ultimate shape recognition for the plates
圖8 圖像識別成功后的效果圖Fig.8 The image produced by successful recognition
表5 色調范圍及相應顏色識別實驗數(shù)據(jù)
Table 5 Experiment data table of hues and corresponding color recognition
色調下限色調上限顏色識別結果230256紅色90160綠色35080藍色190210花色260350粉紅色//白色
注:“/”表示無定義。
根據(jù)上述圖像處理過程給出的實驗結果可知,該系統(tǒng)方案是完全可行的。與現(xiàn)有的餐廳自動結算系統(tǒng)相比,該系統(tǒng)在性價比上具有一定的優(yōu)勢,這為實現(xiàn)餐廳自動化結算提供了一種實用價值較高的方法。但目前此系統(tǒng)只能針對矩形、方形、圓形和殼形等外部特征簡單且種類已知的餐盤進行識別;同時在實驗中還發(fā)現(xiàn),當餐盤中裝滿食物,特別是食物較多地遮擋了餐盤的外圍輪廓線時,實驗結果不很理想。在后續(xù)研究中將采用優(yōu)化的輪廓檢測算法來提升該系統(tǒng)的性能,以達到在復雜情況下也能準確識別的目的。
[1] 劉振亞,喬兵,陳卓鵬.基于菜盤特征提取的食堂自助支付系統(tǒng)[J].計算機系統(tǒng)應用,2014,23(3):216.
[2] 劉子龍,胡少凱,蔣辰飛,等.基于ARM和計算機視覺的餐廳快速結算系統(tǒng)設計[J].信息技術,2013(11):80.
[3] 南京新版圖信息技術有限公司.一種自助售餐系統(tǒng):201320243785.6[P].2014-03-19.
[4] 劉瑞禎,于仕琪.OpenCV教程基礎篇[M].北京:北京航空航天大學出版社,2007.
[5] BRADSKI G,KAEHLER A.學習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].中國醫(yī)學物理學雜志,2013,30(1):3876.
[12] 黃佳.基于OPENCV的計算機視覺技術研究[D].上海:華東理工大學,2012.
[13] PETRUSHAN M, VERMENKO Y, SHAPOSHNIKOV D, et al. Comparative analysis of color- and grayscale-based feature descriptions for image recognition [J]. Pattern Recognition and Image Analysis,2013,23(3):417.
[14] CHOI J Y, RO Y M, PLATANIOTIS K N. Color local texture features for color face recognition [J]. IEEE Transactions on Image Processing,2012,21(3):1369.
[15] 石美紅,申亮,龍世忠,等.從RGB到HSV色彩空間轉換公式的修正[J].紡織高?;A科學學報,2008,21(3):354.
Research on application of the OpenCV-based image processing technology to the canteen automated clearing system
ZHANG Zhenyu, WANG Yang, ZHANG Jialong
(School of Automation and Electrical Engineering, Zhejiang University of Science and Technology, Hangzhou 310023, Zhejiang, China)
In order to realize automation for the canteen clearing system, application of the OpenCV-based image processing technology is researched. Firstly, the hardware constitution and the working principle of the canteen automated clearing system are briefly introduced, with the system composed of a computer, an industrial camera and an interactive unit. The image acquired by the camera is processed through software and then recognized at a corresponding price, thus achieving the automatic clearing function. Secondly, the process of image processing is analyzed in detail, including image acquisition, preprocessing, feature extraction and pattern recognition, etc. Afterwards, the specific application of OpenCV functions to the system is expounded, with the corresponding experimental results specified. Finally, the experimental results show that it is completely feasible to apply the OpenCV-based image processing technology, which offers a new method for the canteen automated clearing system.
OpenCV; canteen automated clearing system; image processing; pattern recognition
10.3969/j.issn.1671-8798.2017.03.006
2016-12-23
張震宇(1976— ),男,浙江省蘭溪人,副教授,碩士,主要從事測量與控制、無線通信、工業(yè)網(wǎng)物聯(lián)網(wǎng)等方面的研究和應用工作。E-mail:zhangzhenyu@zust.edu.cn。
TN911.73;TP751
A
1671-8798(2017)03-0189-06