李澤平 郭俊先 郭 陽 李雪蓮 張亮亮 黃 華
(1.新疆農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院,新疆 烏魯木齊 830052;2.新疆農(nóng)業(yè)大學(xué)數(shù)理學(xué)院,新疆 烏魯木齊 830052)
無核白葡萄作為新疆吐魯番地區(qū)的主栽品種,在農(nóng)業(yè)經(jīng)濟(jì)發(fā)展中占重要地位[1]。長期以來,無核白葡萄上市前品質(zhì)等級主要依靠人工檢測和分級,速度慢、效率低且主觀性強(qiáng),偏差較大,不利于其精確有效的分級[2-3]。隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,機(jī)器視覺技術(shù)在農(nóng)產(chǎn)品檢測中的應(yīng)用越來越廣泛,徐瑩瑩[4]運(yùn)用圖像處理方法預(yù)處理甜瓜圖像,采用角點(diǎn)提取判斷瓜蒂區(qū),并通過大津算法分割不同區(qū)域,建立了支持向量機(jī)模式識別算法,其識別準(zhǔn)確率達(dá)92.2%。Peng等[5]以蘋果、香蕉、柑橘、梨、楊桃和火龍果為研究對象,采用機(jī)器視覺技術(shù)進(jìn)行分類。汪威等[6]提出了一種基于機(jī)器視覺的去柄鮮香菇智能分級方法,并設(shè)計(jì)了一套自動分級系統(tǒng)。因此,機(jī)器視覺技術(shù)在農(nóng)產(chǎn)品檢測方面技術(shù)相對成熟,同時也是葡萄外部品質(zhì)檢測的有效手段。
目前,國內(nèi)外相關(guān)學(xué)者主要依據(jù)葡萄果粒大小的識別和顏色分級葡萄。羅陸鋒等[7]提出了一種基于輪廓分析的雙串疊貼葡萄目標(biāo)識別方法。李俊偉等[8]運(yùn)用機(jī)器視覺技術(shù),預(yù)測與分級新疆無核白、紅提單粒葡萄的質(zhì)量和果徑大小,預(yù)測決定系數(shù)分別達(dá)0.980,0.945,準(zhǔn)確度達(dá)85%以上。肖壯等[9]采用梯度分割法有效地截取果粒輪廓并去除邊緣輪廓中的干擾弧段,利用隨機(jī)最小二乘橢圓檢測的方法提取果粒尺寸,實(shí)現(xiàn)了對整串紅提的分級,分級正確率為90.48%。Li等[10]利用邊緣檢測對紅提輪廓完成兩次分割,最終分級準(zhǔn)確率為90%。陳英等[11]設(shè)計(jì)了一套基于計(jì)算機(jī)視覺的葡萄檢測分級系統(tǒng),采用投影面積法和果軸方向投影曲線計(jì)算果穗大小和形狀參數(shù),其準(zhǔn)確率分別為90.0%,88.3%。以上研究均只針對單粒葡萄的某些特征不能代表整串果粒,隨機(jī)性太大,正確率不高;或者只是單獨(dú)地進(jìn)行顏色分級和大小形狀分級試驗(yàn),未將顏色特征和大小形狀特征綜合考量。
文章擬采用機(jī)器視覺與圖像技術(shù),通過圖像處理技術(shù)完成圖像預(yù)處理及二值化操作,提取無核白葡萄串分級特征,通過支持向量機(jī)算法實(shí)現(xiàn)無核白葡萄串分級;并設(shè)計(jì)實(shí)現(xiàn)人機(jī)交互界面與分級算法模塊,以期實(shí)現(xiàn)對整串無核白葡萄進(jìn)行檢測分級,旨在為鮮葡萄檢測分級提供依據(jù)。
無核白葡萄串分級系統(tǒng)分為硬件和軟件兩部分,硬件部分完成數(shù)據(jù)采集工作,由無核白葡萄串圖像采集系統(tǒng)組成(圖1)。
1.光源控制器 2.LED光源 3.鋁型材框架 4.鏡頭 5.攝像機(jī) 6.電腦 7.圖像采集卡(內(nèi)置主機(jī)箱中)
自制的采集平臺外形尺寸為48 cm×43 cm×170 cm。用黑色幕布將整個平臺全部遮擋,圖像采集系統(tǒng)包括相機(jī)(丹麥JAI公司AT-200CL型3CCD面陣攝像機(jī))、鏡頭(日本NIKON公司LM35CLS型鏡頭)以及圖像采集卡、光源、計(jì)算機(jī)等硬件組成。
軟件部分完成數(shù)據(jù)分析和處理工作,由python語言開發(fā),采用Tkinter圖形界面模塊主要可以完成圖像輸入、預(yù)處理、二值化、圖像分級以及參數(shù)輸出等功能。其中圖像處理部分調(diào)用OpenCV圖形圖像處理函數(shù)庫完成。
軟件開發(fā)環(huán)境為Windows10系統(tǒng);CPU主頻:3.0 GHz 及以上;內(nèi)存頻率:1 333 MHz;內(nèi)存容量:8 GB;Python2.7;Pycharm 2017;OpenCV3.3;Tkinter框架等。軟件設(shè)計(jì)流程圖如圖2所示。
圖2 軟件設(shè)計(jì)流程圖
選用烏魯木齊市北園春市場所售無核白鮮葡萄共100串,于1 ℃冰柜冷藏。參照無核白葡萄國家標(biāo)準(zhǔn)GB/T 19970—2005和行業(yè)標(biāo)準(zhǔn)NY/T 704—2003,將無核白葡萄串主要分為3個等級:優(yōu)等品、一等品和二等品(見表1)。結(jié)合機(jī)器視覺系統(tǒng)的特點(diǎn),確定無核白葡萄串的分級主要通過顏色、果形等完成。分級過程中,為使無核白葡萄串分級更有意義,對表面無明顯缺陷或無明顯破損的無核白葡萄串樣本進(jìn)行分級。
表1 無核白葡萄串分級要求
為了更準(zhǔn)確地分級無核白葡萄串,實(shí)現(xiàn)采集圖像的像素尺寸與無核白葡萄串的真實(shí)尺寸之間的轉(zhuǎn)換,需要尺寸標(biāo)定。尺寸標(biāo)定時,在與被測樣品相同的條件下,使用有標(biāo)準(zhǔn)刻度的測量尺,通過圖像處理技術(shù)獲得圖像的標(biāo)準(zhǔn)長度和相應(yīng)長度所覆蓋的像素?cái)?shù),從而獲得與像素系數(shù)相對應(yīng)的真實(shí)長度。
利用硬件部分的圖像采集系統(tǒng)完成對無核白葡萄串圖像獲取后,需對原始圖像進(jìn)行圖像預(yù)處理,以消除圖像中的無關(guān)信息,降低圖像噪聲,以便于后續(xù)圖像特征參數(shù)的識別和提取。
2.1.1 高斯濾波 灰度化處理原始圖像,隨后進(jìn)行圖像去噪處理,即對圖像過濾。目的是更加具體地提取圖像特征,進(jìn)而去除數(shù)字化圖像中的噪聲成分。而與均值濾波器相比,高斯濾波器具有更柔和的平滑效果和更好的邊緣保持能力,因此,選用高斯濾波器。高斯濾波是通過調(diào)用Opencv的庫函數(shù)來實(shí)現(xiàn)圖像預(yù)處理[12],高斯濾波后的無核白葡萄串圖像如圖3(b)所示。
2.1.2 邊緣檢測 邊緣檢測的目的是提取目標(biāo)[13]。目前較常見的邊緣檢測算法有Roberts算子和Sobel算子,其中Roberts算子是根據(jù)某一點(diǎn)上對角線相反的兩個像素值之間的差值,然后根據(jù)差值的變化幅度和趨勢完成邊緣檢測,其運(yùn)算精度高但不平滑,噪聲對邊緣檢測效果有一定影響。而Sobel算子是根據(jù)某點(diǎn)周圍的灰色加權(quán)差值是否存在極值來檢測邊緣。Sobel算子可以對圖像中的噪聲起到一定的平滑作用。因此,采用Sobel算子進(jìn)行邊緣檢測[14],其效果如圖3(c)所示。
2.1.3 輪廓檢測 使用Canny算子提取目標(biāo)輪廓。在得到邊緣檢測的響應(yīng)后,統(tǒng)計(jì)邊緣檢測后的所有輪廓編碼序列,求出每一個輪廓的矩形左上角坐標(biāo)(x,y)和矩形的寬(w)、高(h),得到圖像外輪廓的最小外接矩形,其結(jié)果如圖3(d)所示。
圖3 圖像預(yù)處理效果圖
圖像二值化是將圖像上的像素灰度值設(shè)置為0或255,即整個圖像呈現(xiàn)出清晰的黑白效果從而便于圖像的下一步處理[15],其函數(shù)表達(dá)式為:
(1)
式中:
T——閾值。
二值化的關(guān)鍵在于閾值的選擇,使用3種二值化方法對比得出最佳的無核白葡萄串圖像分割效果。
2.2.1 大津法 大津法(Otsu)是一種確定圖像二值化分割閾值的算法,Otsu法根據(jù)圖像的灰度特征,將圖像分成目標(biāo)和背景兩部分。如果目標(biāo)和背景之間的類間方差較大,則目標(biāo)與背景的差別較大,反之則說明兩者之間的差異較小[16]。為了使二值化效果最好,必須使類間方差最大化。其分割效果如圖4(a)所示,具體實(shí)現(xiàn)過程為:
若灰度為i的像素點(diǎn)個數(shù)為pi,則總像素點(diǎn)個數(shù)為
(2)
灰度為i的像素點(diǎn)個數(shù)占總像素點(diǎn)個數(shù)的比例為
(3)
目標(biāo)與背景的像素點(diǎn)個數(shù)占總像素點(diǎn)個數(shù)的比例分別為
(4)
(5)
目標(biāo)與背景的加權(quán)平均灰度分別為
(6)
(7)
整個圖像的加權(quán)平均灰度為
μ=ω0×μ0+ω1×μ1,
(8)
類間方差
G=ω0×(μ0-μ)2μ0+ω1×(μ1-μ)2,
(9)
將式(8)代入式(9)得:
G=ω0×ω1×(μ0-μ1)2,
(10)
式中:
M、N——圖像裁剪后的長度和寬度(其值分別為460,350),像素點(diǎn);
T——目標(biāo)和背景的分割閾值(范圍為0~255);
G——類間方差;
ω0——目標(biāo)像素點(diǎn)占圖像總像素點(diǎn)的比例;
μ0——加權(quán)平均灰度;
ω1——背景像素點(diǎn)占圖像總像素點(diǎn)的比例;
μ1——加權(quán)平均灰度;
μ——圖像的加權(quán)平均灰度。
2.2.2 自適應(yīng)閾值法 實(shí)際處理過程中,某一個固定的閾值在圖像的不同區(qū)域的分割效果不同。為了解決這一問題,需要將閾值取一個可以隨圖像區(qū)域位置變化的函數(shù)值,即自適應(yīng)閾值[17]。自適應(yīng)閾值是利用OpenCV中的一個函數(shù)對所選區(qū)域的像素加權(quán)平均,經(jīng)測試,選取的maxvalue為160,blockSize為25,C為10,分割效果比較明顯。分割效果如圖4(b)所示。
2.2.3 固定閾值法 固定閾值法對圖像檢測是一種最為簡單的圖像二值化處理方法,主要是對輸入單通道矩陣逐像素閾值分割,但通常固定閾值法的單一閾值很難滿足現(xiàn)實(shí)中圖像的降噪需求,選取THRESH_BINARY函數(shù)來實(shí)現(xiàn)固定閾值法,即
(10)
式中:
maxval——設(shè)定的最大值;
arc(x,y)——待處理的無核白葡萄串圖像;
thresh——分割閾值。
最終選取的數(shù)值為:maxval=255,thresh=130,此時分割效果較為明顯,分割效果如圖4(c)所示。
圖4 圖像二值化對比圖
從提取無核白葡萄串圖像信息的效果上看,自適應(yīng)閾值法和固定閾值法的圖像目標(biāo)與背景混雜在一起,無明顯的閾值分界,而大津法對圖像二值化的效果要優(yōu)于自適應(yīng)閾值法和固定閾值法,因此選用大津法對圖像進(jìn)行二值化處理。
文章提取了葡萄目標(biāo)區(qū)域的面積、周長、外接矩長和寬以及3個顏色通道的平均灰度[18]。
(1)面積:采用像素統(tǒng)計(jì)法,并按式(12)計(jì)算無核白葡萄串的真實(shí)面積。
(12)
式中:
S——無核白葡萄串的真實(shí)面積;
Pr——無核白葡萄串的像素?cái)?shù);
Sr——二值化圖像的實(shí)際面積;
P——二值化圖像的像素?cái)?shù)。
(2)周長:通過計(jì)算目標(biāo)區(qū)域邊界上的像素點(diǎn)數(shù)量進(jìn)行計(jì)算。先計(jì)算兩個像素之間的距離,然后將所有像素的距離相加即得無核白葡萄的周長。
(3)長和寬:無核白葡萄的最小外接矩形與無核白葡萄4個方向的切點(diǎn)即無核白葡萄圖像的上、下、左、右4個邊界點(diǎn),分別計(jì)算左、右和上、下的距離即可得到無核白葡萄的長度和寬度。
(4)顏色特征:用RGB分量直接表示。
SVM是基于統(tǒng)計(jì)學(xué)原理的一種分類識別方法,可有效解決線性及非線性、分類及預(yù)測問題。其原理是基于統(tǒng)計(jì)學(xué)習(xí)理論的二類分類方法[19]。給定訓(xùn)練樣本集:
D={(xi,yi),i=1,2,…,l}xi∈Rd。
(13)
每個樣本屬于y={+1,-1}中的一類,訓(xùn)練樣本集由超平面線性可分,則分類器的超平面方程為
ωxi+b=0,
(14)
式中:
xi——訓(xùn)練向量;
ω——法向量;
b——超平面的偏移。
由于無核白葡萄串分類是一個多分類問題,所以應(yīng)構(gòu)造一個多類分類器對無核白葡萄串進(jìn)行分級,而在python中,使用最為廣泛的是sklearn模塊。無核白葡萄串分級時,先加載待分級樣本,利用樣本庫特征參數(shù)得到最優(yōu)適應(yīng)度下的懲罰因子c和核參數(shù)值g,然后訓(xùn)練模塊對樣本庫訓(xùn)練學(xué)習(xí)并得到分類器模型,測試模塊對待分級樣本分類。
分類時,調(diào)用sklearn模塊,提取無核白葡萄串的顏色、輪廓及幾何特征作為數(shù)據(jù)集。使用200幅樣本訓(xùn)練SVM分級模型,選取不同的核函數(shù)訓(xùn)練,采取交叉驗(yàn)證的方式得到懲罰因子c和核參數(shù)值g的最優(yōu)解,參數(shù)coef()、d均取默認(rèn)值。訓(xùn)練模塊對訓(xùn)練集訓(xùn)練學(xué)習(xí)并得到分類器模型,最后對測試集樣本進(jìn)行分類[20],其訓(xùn)練結(jié)果如表2所示,其中全特征由顏色、輪廓及幾何特征共同組成使用。
由表2可知,當(dāng)SVM模型的核函數(shù)為RBF核函數(shù)或Polynomial Kernel函數(shù)時,顏色矩的特征優(yōu)于Sigmoid核函數(shù)的。使用其他特征,當(dāng)SVM模型的核函數(shù)為Polynomial Kernel核函數(shù)時,測試集、訓(xùn)練集準(zhǔn)確率遠(yuǎn)優(yōu)于其他函數(shù)的,且特征為全特征時所得到的SVM模型最優(yōu),此時訓(xùn)練集準(zhǔn)確率為97.85%,測試集準(zhǔn)確率為95.81%,模型的魯棒性最佳,其參數(shù)值為Bestc=2.00,Bestg=0.24,coef()=0,d=3。
表2 SVM模型訓(xùn)練結(jié)果
基于SVM算法的原理,使用python調(diào)用OpenCV圖像處理庫,自行開發(fā)無核白葡萄串分級軟件如5圖所示,該界面主要分為4個區(qū)域,分別是無核白葡萄串識別區(qū)、圖像預(yù)處理區(qū)、算法效果展示區(qū)與無核白葡萄串分級區(qū)。
圖5 軟件界面
實(shí)際應(yīng)用中,用戶只需依照窗口提示點(diǎn)擊登錄,程序會自動調(diào)出圖像處理界面,點(diǎn)擊加載圖像按鈕,加載需要分類的無核白葡萄串圖像,點(diǎn)擊分級按鈕,程序自動計(jì)算處理并給出SVM分類結(jié)果圖像,同時窗口顯示每種特征的具體數(shù)值,人機(jī)交互界面友好,使用方便。
為驗(yàn)證基于SVM的無核白葡萄串分級系統(tǒng)的準(zhǔn)確性,重新拍攝100幅無核白葡萄串圖像測試,測試結(jié)果見表3。
由表3可知,基于SVM的無核白葡萄串分級系統(tǒng)對無核白葡萄串的分級準(zhǔn)確率可達(dá)96%,其主要原因是分級時,無核白葡萄串顏色特征定義的范圍較為廣泛,如果顏色特征能夠相對更具體,識別準(zhǔn)確率將>96%。
表3 基于SVM的無核白葡萄串分級測試結(jié)果
針對無核白鮮葡萄串分級問題,提出了一種由Python語言開發(fā),采用Tkinter圖形界面的基于SVM無核白鮮葡萄串分級系統(tǒng)。該系統(tǒng)可以實(shí)現(xiàn)葡萄串圖像采集、圖像預(yù)處理及二值化;葡萄串分級準(zhǔn)確率達(dá)96%。但試驗(yàn)中鮮葡萄串分級于水平面進(jìn)行,容易對穗形造成影響,不利于后期特征提取,因此在后續(xù)研究中將考慮將鮮葡萄串懸掛式采集圖像,進(jìn)行無核白鮮葡萄串分級。