駱紹燁,張長佳,周 超,蔡榮貴
(莆田學院 機電與信息工程學院,福建 莆田 351100)
我國國土經緯跨度大,東南西北所產的水果品種不可枚舉,在水果產品競爭愈演愈烈的今天,如何提高水果品質、生產效率就尤其重要.而水果篩選分級是提高水果品質的一個重要環節.國內目前在水果篩選分級上還主要依靠人工或借助部分簡易的篩選裝置完成,由此帶來了勞動量大、生產率低等諸多缺點[1].借助機器分類方法具有耗時短、高效率、契合水果品種不容易受損等特點,彌補了人工篩選的缺陷,因此研究和開發高效的水果篩選系統十分必要.
計算機通過效仿人眼所看到的圖像場景,在圖像或圖像隊列中獲取有效信息,對物理世界的三維景物進行形態與運動識別,即計算機視覺[2].隨著計算機技術的提升和新型算法的提出,計算機視覺技術已開始逐漸在包括農業在內的各個領域中得到廣泛應用.針對水果篩選問題,本文在OpenMV微型機器視覺模塊的基礎上,以PC端為載體,運用計算機視覺相關技術實現水果篩選.
基于OpenMV的水果篩選系統主要包括了OpenMV微型機器視覺模塊和計算機兩部分.OpenMV的核心是STM 32 CPU芯片,并在體積小巧的硬件模塊上集成了OV7725攝像頭芯片,從而使核心機器視覺算法能夠高效地實現[3].OpenMV還提供了基于Python的編程接口,這樣就可以方便使用Python來進行二次開發.系統硬件結構設計如圖1所示.

圖1 系統硬件結構圖
攝像頭用來拍攝水果圖像,STM 32 CPU負責圖像的預處理以及機器識別過程,計算機則用于OpenMV系統中攝像頭、視覺模塊的參數設置和水果模板的輸入.系統通過在OpenMV微型機器視覺模塊上的攝像頭獲取實時圖像,在對圖像進行預處理后,利用形狀識別和邊緣檢測等相關算法完成目標水果識別與篩選.
OpenMV運用的是小孔成像這一種理想模型,在實際應用時鏡頭會存在場曲和畸變等[4],可以通過在標定過程中引入畸變參數(sensor)解決.下面是OpenMV攝像頭相關參數的設置代碼.
import sensor #引入感光元件的模塊
# 設置攝像頭參數
sensor.reset() #初始化感光元件
sensor.set_pixformat(sensor.RGB565) #設置攝像頭顏色模式sensor.set_pixformat(sensor.GRAYSCALE) # 設置為灰度圖模式
sensor.set_framesize(sensor.QVGA) #設置圖像像素的大小
sensor.set_auto_gain(False) #關閉自動增益
sensor.set_auto_whitebal(False) #關閉白平衡
sensor.set_windowing(roi) #設置窗口中的興趣區
針對傳統的ATM機上遮擋人臉檢測算法時間復雜度高與魯棒性差的問題,提出了一種快速地遮擋人臉判別方法,通過訓練YOLO人臉檢測網絡模型,定位出人臉所在區域,再結合改進的DLIB多角度人臉關鍵點檢測算法對該區域的人臉進行遮擋判別,若為遮擋人臉,則禁止其進一步操作。將其運用到實時場景下ATM機遮擋人臉判別上,實驗證明該方法達到了較好的判別效果,與傳統的算法相比,檢測速度更快,魯棒性更好,具有一定的使用價值。下一步工作將針對ATM機實時場景中出現的新問題,進一步優化算法的性能,使其在大量復雜的樣本中也能表現出較高的判別率。
while(True):
img = sensor.snapshot() #拍攝照片
基于OpenMV的水果篩選系統主要包括水果類別篩選、水果尺寸篩選和水果成熟度篩選3個主要功能.這些功能主要依靠對攝像頭所拍攝的水果圖像分析實現.
水果類別篩選主要通過模板匹配來實現.模板匹配就是提前得知一張圖像,然后在一片大區域中搜索已知圖像的過程[5].其識別判別的依據是找到與同模板有相同的方向、長短和圖像元素的目標,通過編寫好的Python程序在區域中定位到目標,并確定其坐標位置,最后以某種方式框選出來.前期通過錄入不同水果的模板圖像,建立一個模板庫,然后讓OpenMV進行模板匹配,從而分辨水果.理論上只要模板庫足夠大,就可以識別很多種類的水果.模板匹配流程如圖2所示.

圖2 模板匹配流程圖
這一過程中最為核心的任務是建立模板庫.首先需要在幀緩存區中創建或導入一個指定大小的pgm格式模板.通過直接從OpenMV里面截取一個模板圖像,通過格式轉換工具,將png轉成pgm格式,保存在OpenMV的SD卡文件夾里面,就形成了模板庫.識別篩選功能則由OpenMV自動完成.
利用攝像頭物體測距的基本原理借助參照物進行反推,從而得到水果大小.OpenMV是采用單攝像頭,選取恰當的參照物,并依照參照物的實際長短與成像后的百分比就能夠計算出物體之間的間距.OpenMV測距原理如圖3所示.
由圖3可知,L為OpenMV攝像頭到水果的距離尺寸,Apix為整個畫面的像素值,Bpix為水果在鏡頭中所占的像素,即水果直徑的像素.R是水果真實的直徑,∠α是視角的一半,∠β是水果半徑視角,H是攝像頭覆蓋的實際寬度半徑.

圖3 測距原理圖
(1)
(2)
所以得出以下正切比例公式:
(3)
從右側現實環境里的幾何聯系可以得到:

(4)
代入上述正切比例公式中,可得水果尺寸計算公式:
(5)
由L、Apix、tan (β)在系統中均為固定值可知:水果現實尺寸R與像頭里的像素Bpix成反比,通過測量水果成像大小即可計算出其真實大小.
OpenMV采用Lab顏色模型能夠準確識別各種顏色,而顏色是判斷大部分水果是否成熟的主要因素.Lab顏色模型是CIE組織于1931年擬定的用來衡量顏色的國際標準[6].其中Lab表示:L(亮度);a(+:紅色,-:綠色);b(+:黃色,-:藍色),讓圖像顏色顯示接近人類視覺.Lab模型不依賴光線和顏料,在理論上包括了我們眼睛看到并識別出全部色彩的一種強大模式.它彌補了CMYK和RGB兩種色彩模式的不足,用數字化方法展示出人眼看到的視覺感應.因此可根據水果的顏色來判斷水果是否成熟,水果成熟度篩選流程如圖4所示.

圖4 水果成熟度篩選流程圖
在篩選之前首先要設置顏色的閾值(導入thresholds),thresholds是一個參數列表,里面可以包含多個顏色的參數設定.若要識別多個顏色,就需要在這個列表中添加對應的顏色閾值.為了識別更精準,選擇OpenMV IDE閾值工具進行閾值調試.通過滑動3個通道的最大值以及最小值,使綠色芒果(未成熟)區域變成純白,其他地方全黑即可得出綠色的閾值.當然,在工業生產線上,考慮到一些水果需要長距離運輸,完全成熟就會容易損壞,可以根據實際情況去設置芒果閾值,從而更好地去篩選.
閾值測試效果如圖5所示.

圖5 閾值測試效果(芒果)
成熟度閾值設置好后就可以進行水果成熟度篩選.通過OpenMV的攝像頭模塊拍攝水果照片,對水果圖片進行圖像預處理.預處理完成的水果圖像利用之前設置的顏色閾值進行色塊查找識別,再將獲得的色塊進行合并,合并過程中過小的色塊將會被過濾掉.合并完成后與設置的色塊面積閾值做比較,如果面積超過閾值表示該水果達到了預設的成熟度,否則表示未達到成熟度要求.
為了驗證系統的水果篩選效果,本文選取芒果、香蕉、沃柑和蘋果4種常見水果進行測試.首先進行水果不同模板相似度閾值下的識出率測試.每種水果的測試數量為100次,統計能識別出水果的次數,由此獲得識出率.測試結果如表1所列.

表1 水果在不同相似度閾值下的識出率
從表1可以看出不同水果由于本身的形狀和顏色差異導致在相同的模板和相同的相似度閾值下識出率具有一定的差異.沃柑因為形狀比較規則,顏色相對均勻,識出率相對較高.香蕉的形狀最為不規則,在同等條件下的識出率是最低的,特別是在相似度閾值為0.9時,其識出率僅有65%.隨著相似度閾值的提高,水果的檢出率呈現下降趨勢.相似度閾值要求越高,對于水果模板匹配的相似率就越高,水果就越難以被識別出.但這并不意味著越低的相似率閾值越有利于水果的類別篩選,過低的閾值將導致大量非水果或其他類別的水果被誤識別.通常情況下,80%-90%的水果識出率是比較適宜的,即0.7-0.8的水果模板相似度閾值在水果類別篩選時具有較好的效果.
為了測試系統對水果尺寸測量的準確性,選取一種外形相對規則的水果(沃柑)作為測試水果進行大小測試,并與手工多次測量平均尺寸進行對比.測試分為6組,為了保證測量的準確性,每組測量次數為50次.測試結果如表2所列.
由表2可知,系統平均測量值與手工平均測量值的誤差絕對值最大為0.14 cm,最小僅為0.01 cm,平均偏差率大部分(5組)低于1.1%,最高為2.12%,兩者的偏差較小,表明系統測量的準確性較高.這些偏差主要來源于水果形狀的不規則性、測量位置的不同及系統和手工測量誤差.

表2 水果(沃柑)尺寸測量結果
系統的水果成熟度篩選主要依據水果的顏色篩選,不同的水果具有不同的顏色篩選閾值,所以水果顏色篩選主要針對于顏色均勻且成熟前后顏色差異較大的水果.系統選取芒果、香蕉、沃柑和蘋果進行成熟度測試,通過調整系統中的閾值編輯器獲得最佳的顏色閾值.水果篩選時通常是剔除不合格的水果,所以該閾值范圍為不成熟水果的閾值范圍,結果如表3所列.

表3 水果成熟度篩選閾值范圍
從表3可以看出,各水果L分量的閾值跨度相對都較大,且主要都在L分量取值范圍(0-100)的中間區域.L分量是亮度分量,適中的亮度有利于進行篩選,不同水果的特異性并不明顯.a分量表示的是紅色到綠色的范圍,而大部分水果未成熟時以綠色居多,因此該分量的閾值范圍主要在綠色區域范圍(負數).b分量表示的是從黃色到藍色的范圍,不成熟水果中通常在綠色中還會摻雜著部分黃色,所以該分量的閾值范圍主要在淺黃色區域.水果的成熟度篩選與水果本身的顏色密切相關,成熟前后顏色差異大的水果在篩選時準確率較高,而一些成熟前后顏色差距較小的水果就難以利用顏色判斷.
本文通過利用OpenMV微型機器視覺模塊結合計算機編程設置設計實現了一款基于OpenMV的水果篩選系統.系統通過計算機預先輸入水果模板,利用模板匹配來區別水果的品種.運用物體測距原理來測定圖像中的水果尺寸,以便篩選不合規格的水果.在Lab色系下,設置不成熟水果的顏色閾值范圍并提取對比水果顏色特征來實現水果成熟度的篩選.實驗結果表明,系統具有較高的水果識出率和尺寸測量準確率,并能根據相應的顏色閾值設定篩選水果成熟度.該設計有助于提高水果篩選的智能水平和效率,降低水果篩選成本,具有較好的應用前景.