盧凱璇,吳麗群
(陽光學院人工智能學院,福州350015)
隨著消費水平的不斷提高,食堂的菜品種類日益增多,在消費高峰期,結(jié)算窗口經(jīng)常排起長隊。食堂打飯阿姨需要記住每樣菜的價格還要再進行計價,這種方法的快慢完全依靠打菜阿姨的熟練程度,速度和價格的準確性都沒有保障。有一些學校為了解決打飯阿姨的速度和效率的問題,采用RFID 技術(shù),這種方法是在餐盤底部植入芯片,使每個餐盤代表一個價格,但這種方法在每次使用完餐盤后都需要進行分類,打菜時也要根據(jù)不同價格使用不同的餐盤,且成本較高。
對比上述方案存在的問題提出新的方法即通過攝像頭拍攝照片,再對照片進行處理、分析提取餐盤顏色和形狀,根據(jù)餐盤顏色和形狀對不同菜品進行分類自動計價,最后學生通過刷校園卡進行支付。從而避免了人工結(jié)算中出現(xiàn)的缺點,大大減少了學生的等待時間,同時無需改變現(xiàn)有的餐盤給食堂造成浪費。
本系統(tǒng)設(shè)計主要由五個模塊構(gòu)成。其中,微控制器模塊接收攝像頭采集的相關(guān)信息應用圖像識別算法對圖像信息進行處理輸出結(jié)果,結(jié)合數(shù)據(jù)庫進行智能、自助結(jié)算,并將結(jié)算明細送給顯示模塊,方便消費者核實。當紅外測距模塊感知到餐盤的存在時將信號傳給微控制器,啟動攝像頭攝影,進行對比識別,最后將得到的信息在顯示屏上展現(xiàn)。系統(tǒng)框圖如圖1 所示。
圖1 系統(tǒng)框圖
方案一:采用STC89C52RC 單片機,具有高速度、低功耗、抗干擾能力強、4 路外部中斷和三種工作模式。還有兩種工作頻率可供選擇,具備512 字節(jié)的數(shù)據(jù)存儲器和8K 程序存儲器,內(nèi)置ISP 監(jiān)控程序可以實現(xiàn)通過串口來進行程序的下載,8KB 程序3S 即可完成一片,還具有IAP 的功能。
方案二:采用STM32F407 單片機,擁有頻率高達168MHz 的16 和32 位定時器,具有動態(tài)功耗調(diào)整功能,能夠在運行模式下實現(xiàn)低至238μA/MHz 的電流消耗。擁有強大的串口功能,可以實現(xiàn)不同單片機之間還有MCU 和PC 之間的通訊,并可以接多種接口。
綜上所述,方案二的主頻比方案一高,最高主頻可達168MHz,處理速度更快,能夠存放更多的臨時數(shù)據(jù)。同時STM32F407 有硬件FDU,能直接進行浮點運算,外設(shè)也更加豐富,功耗更低。因此采用方案二。該芯片實物圖如圖2 所示。
圖2 STM32F407ZGT6芯片
方案一:采用OmniVision 公司所生產(chǎn)的OV2640攝像頭,OV2640 攝像頭像素最高有200w,數(shù)據(jù)傳輸支持主流的RGB565 模式以及JPEG 模式。分辨率為1632×1232,UXGA 最高15 幀/秒,支持多種控制功能:自動曝光、自動增益、消除燈光條紋等。
方案二:采用OpenMV 攝像頭,內(nèi)置多種圖像處理算法,可直接調(diào)用算法進行應用,具備體積小、功耗低、成本低的優(yōu)點,攝像頭像素只有30 萬,采集圖像分辨率最高只達到640×480,只能在小范圍或?qū)Ψ直媛什桓叩膱龊鲜褂谩?/p>
綜上所述,對比兩款攝像頭的像素,OV2640 攝像頭具有更高的像素,能獲取更高清的圖片,更好地對圖片進行對比、識別,提高準確度。因此,方案一更適合本系統(tǒng)攝像頭顏色識別模塊設(shè)計,OV2640 攝像頭如圖3 所示。
圖3 OV2640攝像頭
方案一:采用LCD1602A 字符型液晶顯示模塊,lcd1602 控制器內(nèi)置有80 個Byte 的顯存,兩種字符發(fā)生器,而lcd1602 只有2×16 個字符的顯示區(qū)域,所以顯存中有些地址是無法對應上LCD 屏的。
方案二:采用LCD12864 液晶顯示屏,分辨率為128×64。工作所需的電壓小、功耗低,具有接口方式靈活、操作簡便的特點,通訊方式支持串行通信和并行通信,可工作在圖形和字符模式下。
綜上所述:LCD12864 能顯示的內(nèi)容更豐富,且具有功耗低,分辨率更高等優(yōu)點,因此方案二更適合本系統(tǒng)的顯示模塊設(shè)計。該液晶顯示實物圖如圖4 所示。
圖4 LCD12864液晶顯示實物圖
消費者將餐盤放置在指定區(qū)域,當紅外測距模塊感知餐盤存在,向微控制器傳遞信號啟動攝像頭拍攝照片,通過對比識別餐盤顏色,將識別到的信息在顯示屏上顯示,若攝像頭拍到的圖片無法識別則再拍攝一張重新進行識別,識別成功再將識別到的信息在顯示屏上顯示,最后消費者將飯卡放到刷卡處,由RC522 自動扣款。自動結(jié)算流程如圖5 所示。
圖5 自動結(jié)算流程圖
(1)顏色識別
OpenCV 中的模塊具有USB 數(shù)字攝像頭接口,先用函數(shù)打開攝像頭,拍攝并讀取圖片,設(shè)置(R,G,B)分別是紅、綠和藍坐標,它們的值是在0 到1 之間的實數(shù),將圖片的RGB 模型轉(zhuǎn)化為HSV 模型。找到在HSV 空間中的(H,S,V)值[1],再對得到的顏色進行檢測,判定圖像的像素是否在最小值和最大值之間。按照不同的HSV 的數(shù)值對餐盤顏色進行判斷,得到二值圖像。顏色識別過程如圖6 所示。
圖6 顏色識別過程
(2)輪廓提取
將R、G、B 分量映射到R、G、B 立方體的對角線上[2],由此可得如下公式:
式(1)中:R、G、B 分別為3 通道圖像的紅、綠、藍色彩分量值,SGray 是輸出的灰度值,在OpenCV 中通過調(diào)用cvCvtColor()函數(shù)來將R、G、B 分量轉(zhuǎn)換為灰度圖像[3]。再對灰度圖像做二值化處理。采用變閾值式二值閾值化,Threshold 是從0 到255 之間的N 個值(其中N 取11),將不同閾值下二值化后的圖像分別做輪廓和特征提取等處理[4],以適應在不同環(huán)境下對餐盤的精確識別。
調(diào)用尋找輪廓函數(shù),其中參數(shù)取值說明如表1 和表2 所示。
表1 參數(shù)mode 取值表
表2 參數(shù)methor 取值表
自動結(jié)算識別過程需要餐盤的輪廓進行提取,以便計價。簡單歸結(jié)為將拍攝到的圖片轉(zhuǎn)為灰度圖,對灰度圖進行二值化,再進行輪廓提取,最后收集我們所需要的信息。輪廓提取過程如圖7 所示。
圖7 輪廓提取過程
MF-RC522 是采用被動式非接觸半雙工通信,具有獨立的讀卡、校驗、加密功能,工作頻段在13.5MHz,成本低、集成度高,有數(shù)據(jù)發(fā)送和接收單元、數(shù)字處理等功能。具備10Mb/s 的SPI 接口、支持中斷模式、可編程定時器、多種節(jié)電模式,低電壓,低功耗。當系統(tǒng)處理完成并將價格顯示出來后學生進行刷卡操作,首先判斷是否有卡,檢測到學生卡存在是自動扣款,碰到?jīng)_撞時需要學生輸入密碼完成扣款。RC522 扣款流程如圖8 所示。
圖8 RC522扣款流程
為了能更好地進行測試我們對餐盤做了一些處理,選取一些有破損地餐盤、顏色相似的餐盤經(jīng)過多次實驗測試,該系統(tǒng)在實驗中可以穩(wěn)定地運行,實驗中進行了20 次的測試。其中有16 次能成功提取餐盤顏色并識別最后在顯示屏上顯示出價格。如圖所示,系統(tǒng)對餐盤的顏色和形狀進行識別和處理,當攝像頭識別到相應的顏色時在顯示屏上顯示單價、數(shù)量及總價。圖4 是以食堂為例的菜品價格圖,圖5 為攝像頭識別并在顯示屏上顯示的價格圖。
圖9 菜品價格圖
圖10 顯示屏顯示價格圖
實驗失敗的原因總結(jié)如下:
(1)餐盤邊緣破損導致圖像特征丟失,使攝像頭對比識別顏色失??;
(2)剛開始系統(tǒng)不穩(wěn)定也會導致不能成功識別顏色;
(3)餐盤擺放位置不適當。
該方案通過對餐盤顏色的提取和識別,并將價格在顯示屏上顯示、經(jīng)過系統(tǒng)自動結(jié)算、消費者將飯卡放在指定區(qū)域完成自動扣款。隨著越來越廣泛的關(guān)注、大量研究機構(gòu)的投入,越來越多的學校開始采取新的結(jié)算方式。相較于采用RFID 技術(shù),該方案不需要改變食堂現(xiàn)有的餐盤,且就在每個餐盤底部植入芯片來說在成本上占有很大優(yōu)勢。通過不斷的實驗證明,系統(tǒng)雖然存在失誤但總體上識別成功率較高,具有很大的應用價值。