李佩陽,葉睿哲,陸華才
(安徽工程大學(xué) 電氣傳動與控制安徽普通高校重點(diǎn)實(shí)驗(yàn)室,安徽 蕪湖 241000)
我國在玉米產(chǎn)業(yè)的自動化方面較為落后,主要還是依靠人力對玉米粒飽滿度進(jìn)行挑選,效率精度低下而且不能夠滿足玉米產(chǎn)業(yè)發(fā)展的需求,這種篩選方式不能很好地適應(yīng)玉米加工產(chǎn)業(yè)的自動化和智能化發(fā)展。玉米粒飽滿度參數(shù)的研究在糧食、飼料以及很多工業(yè)原料方面都有著重要的價值,玉米的生產(chǎn)和銷售過程中不夠飽滿的玉米籽粒都會造成玉米品質(zhì)的下降,而且還會影響農(nóng)業(yè)產(chǎn)品市場價格,造成巨大的經(jīng)濟(jì)損失[1]。
很多專家學(xué)者對玉米粒質(zhì)量和粒型方面做出了大量研究,管樹輝[2]通過數(shù)字圖像處理手段對玉米粒品質(zhì)進(jìn)行檢測,得到橢圓長寬比來實(shí)現(xiàn)對玉米粒品質(zhì)進(jìn)行鑒別。萬鵬等[3]通過計(jì)算機(jī)視覺技術(shù)開發(fā)了粒型檢測算法,拓寬了對玉米粒質(zhì)量的檢測方法。然而現(xiàn)有的研究中,大多都是局限于對玉米粒型和質(zhì)量的研究,而對玉米粒檢測精度方面的研究較少。
本研究在傳統(tǒng)玉米粒型檢測方法基礎(chǔ)上進(jìn)行了改進(jìn),加入高斯濾波的方式來去除玉米粒圖像中的高斯噪聲,通過引入OTSU算法來解決人工設(shè)置Canny邊緣算子的高低閾值問題,避免了人工設(shè)置閾值過程中存在閾值過高而導(dǎo)致圖像邊緣信息缺失,閾值過低而導(dǎo)致出現(xiàn)過多無關(guān)邊緣信息的干擾等問題[4]。所提出的新型檢測算法能夠很好地解決玉米粒飽滿度檢測精度低下的問題,極大地提高了算法運(yùn)行的精度,為我國玉米粒等谷物生產(chǎn)和加工過程提供了新的研究方法。
玉米粒飽滿度的研究主要是通過玉米粒輪廓表面積與其輪廓最小外接圓之比來有效地判斷玉米粒的飽滿程度[5]。圖1是運(yùn)用計(jì)算機(jī)視覺對玉米粒的飽滿度進(jìn)行檢測的流程圖,先通過圖像采集、灰度化二值化、圖像的腐蝕與距離變換、開運(yùn)算和輪廓查找,最后再通過判斷優(yōu)良差對玉米粒飽滿度進(jìn)行判斷[6]。經(jīng)過灰度化后加入高斯濾波可以對圖像進(jìn)一步地減噪,而輪廓提取之后可以進(jìn)行Canny邊緣檢測,因?yàn)檫@一部分的邊緣檢測會使得邊緣信息更加精確,對重要的邊緣信息不會造成丟失,可以很好地檢測出玉米粒輪廓的邊緣信息[7]。
圖1 傳統(tǒng)算法檢測流程圖
圖片進(jìn)行處理過程中,必須先進(jìn)行灰度化處理才能繼續(xù)進(jìn)行后續(xù)操作[8]。圖片色彩的顯示實(shí)質(zhì)上是由R(紅色)、G(綠色)、B(藍(lán)色)這三種顏色混合而成的?;叶然褪菍、G、B這三個分量相等的過程[9],灰度圖像的每個像素點(diǎn)只有一種樣本顏色,且灰度是介乎于黑白之間的顏色,從而使得灰度較大的像素點(diǎn)顯得更亮,反之灰度較小的像素點(diǎn)顯得更暗[10]。像素值的范圍是0~255,像素值為0即是白色,而值255即為黑色。常用的灰度處理方法包括最大值灰度處理、整數(shù)灰度處理以及加權(quán)平均值灰度處理等[11]。這里我們選擇使用加權(quán)平均值的方法進(jìn)行灰度處理。
根據(jù)人眼對藍(lán)綠顏色敏感度不同,人眼對綠色敏感度最高,對藍(lán)色敏感度最低,所以設(shè)置的權(quán)重按照0.299、0.587、0.144的比例進(jìn)行加權(quán)平均值灰度處理,
g=0.299R+0.587G+0.144B,
(1)
其中:g為灰度值大小,R、G、B分別為紅色、綠色、藍(lán)色的灰度值。
圖2和圖3分別為灰度化處理前后的對比圖?;叶然幚碇饕菫榱藴p少對圖像處理過程中的運(yùn)算量,這樣能極大地提高運(yùn)算的效率,提升整體的運(yùn)行速度[12]。
圖2 玉米粒圖像灰度化處理前效果
圖3 玉米粒圖像灰度化處理后效果
二值化的目的主要是為了使得圖像中像素點(diǎn)變成0或者255,通過設(shè)置相應(yīng)的閾值進(jìn)行二值化,二值化后的圖像見圖4,而利用腐蝕變換消除圖像上的噪點(diǎn)后的圖像,如圖5所示。
圖4 玉米粒圖像二值化后的效果
圖5 玉米粒圖像腐蝕變換后的效果
可以看出圖5中輪廓之間還未完全分離開,仍然有一些粘連的部分,會對后續(xù)的邊緣處理造成一定的影響。本研究采用距離變換歸一化的方式解決圖像的粘連部分問題,距離變換通過計(jì)算圖像中的像素點(diǎn)與最近零像素點(diǎn)的距離得到的輪廓骨架,再通過歸一化處理方式使得灰度值保持在0~1.0之間。由圖6可知距離變換歸一化后的圖像,二值化圖像的距離變換定義為
D(p)=Min(d(p,q)),
(2)
其中:p∈0,q∈B且設(shè)二值圖像為l,連通區(qū)域?yàn)镾,目標(biāo)集為O和背景集為B,距離圖為D,d為歐式距離變換。
對距離變換而言,本次采用的是歐式距離變換,因?yàn)闅W氏距離變換綜合來說精確度較高,有著良好的處理效果,歐式距離公式為
(3)
其中:(x1,y2),(x2,y2)分別為像素點(diǎn)S1,S2的像素坐標(biāo)值。
圖7為開運(yùn)算后邊緣提取的圖像,開運(yùn)算實(shí)質(zhì)就是先腐蝕后膨脹的過程。
圖6 玉米粒圖像用距離變換歸一化后的效果
圖7 玉米粒圖像用開運(yùn)算后邊緣提取的效果
計(jì)算機(jī)視覺對玉米粒飽滿度檢驗(yàn)主要還是處理圖像所包含的邊緣信息。以玉米粒輪廓表面積與其最小外接圓的比值作為玉米飽滿度的參考指標(biāo),比值越大說明玉米粒飽滿度越高,反之飽滿度越低。輪廓提取不能改變玉米粒輪廓的面積進(jìn)行提取,否則使得實(shí)驗(yàn)結(jié)果失真,從而失去參考性??紤]到這個因素,本研究采用開運(yùn)算的方式對玉米粒邊緣輪廓進(jìn)行提取。開運(yùn)算的本質(zhì)就是對圖像先進(jìn)行腐蝕操作,然后進(jìn)行膨脹處理,這樣做的目的主要是為了能夠消除較為分離且較小的點(diǎn),在圖像的纖細(xì)點(diǎn)處能夠有效地對物體進(jìn)行分離,從而使得輪廓更為完整平滑,最主要的一點(diǎn)是不改變檢測物體的實(shí)際面積[13]。
圖像腐蝕并不能很好地去除圖像中高斯噪聲,必須通過高斯濾波去除[14]。高斯濾波屬于線性平滑濾波,其濾波原理主要以掩膜來對圖像中的每個像素點(diǎn)進(jìn)行掃描,將掩膜內(nèi)部中心點(diǎn)的像素值換成掩膜掃描后得到的鄰域內(nèi)像素的加權(quán)平均值[15]。高斯濾波的效率并非最高,但是其濾波效果非??捎^,運(yùn)用高斯濾波生成的圖像效果就像是在隔著半透明玻璃去觀察圖像。在計(jì)算機(jī)視覺算法預(yù)先處理過程中,高斯平滑技術(shù)往往用于這個階段,這樣可以有效地增強(qiáng)圖像的效果。
為了使結(jié)果更加地精確,本研究將圖像與圓形方框做卷積運(yùn)算,這樣就會得到焦外成像的效果。高斯模糊過程就相當(dāng)于是一種低通濾波過程,高斯濾波函數(shù)在圖像中的引入效果如圖8所示。
圖8 玉米粒圖像在高斯濾波后的效果
高斯平滑濾波器對于抑制服從高斯分布的噪聲效果顯著,所用一維零均值高斯函數(shù)表達(dá)式為
G(x)=exp(-x2/(2σ2)),
(4)
其中:x為自變量,σ為高斯分布參數(shù)。
而二階零均值離散高斯函數(shù)通常被用于平滑濾波器進(jìn)行濾波操作,其公式為
(5)
其中:A為幅值,x和y為中點(diǎn)坐標(biāo),σx為σy方差。
圖9為試驗(yàn)樣本圖。OTSU算法處理圖像二值化的過程中,通常計(jì)算出一個合適的閾值來代替Canny邊緣檢測的高閾值,低閾值設(shè)置為高閾值一半。這樣可以避免閾值選取過小而造成圖像信息的缺失(如圖10所示),也避免了閾值選取過大而導(dǎo)致圖像邊緣信息過少(如圖11所示),更加準(zhǔn)確地選取合適的閾值大小來完成Canny邊緣檢測過程,在Canny邊緣檢測中引入OTSU算法后所獲結(jié)果圖見圖12。
圖9 Canny邊緣檢測試驗(yàn)樣本 圖10 Canny邊緣檢測閾值過小結(jié)果
圖11 Canny邊緣測驗(yàn)閾值過大結(jié)果 圖12 引入ostu算法后Canny邊緣檢測結(jié)果
由圖10和圖11可知,閾值過小會有很多無關(guān)邊緣信息的干擾,而閾值過大則會導(dǎo)致重要邊緣信息的缺失,引入OTSU算法很好地解決了可能出現(xiàn)閾值過大或過小的問題。Canny邊緣檢測過程中閾值大小選取要合適才能準(zhǔn)確表達(dá)出圖像的邊緣信息,過大或過小都會影響圖像檢測的準(zhǔn)確性,所以采用OTSU算法選取Canny邊緣檢測的雙閾值,能夠使得實(shí)驗(yàn)結(jié)果更加準(zhǔn)確。
玉米粒的邊緣檢測過程既要保證檢測的準(zhǔn)確性,同時也要保證重要的邊緣信息不能丟失。而Canny算子的優(yōu)點(diǎn)在于:第一,既保持了原有重要的邊緣部分,同時也不會出現(xiàn)虛假的邊緣部分;第二,在圖像的邊緣檢測部分,其實(shí)際邊緣與檢測到的邊緣部分偏差最小;第三,將多處的邊緣響應(yīng)部分降低為單個邊緣響應(yīng)部分,這一點(diǎn)很好地解決了邊緣部分的噪聲影響問題。以下用5×5的高斯內(nèi)核來表明Canny檢測的噪聲消除:
(6)
計(jì)算梯度的幅值和方向,需要運(yùn)用的一對卷積陣列為
(7)
(8)
其中x和y分別為兩個垂直方向。
梯度幅值和方向的計(jì)算公式為
(9)
(10)
其中θ為角度。
Canny算子本身自帶滯后閾值,滯后閾值包括高閾值和低閾值這兩種:當(dāng)掃描圖像中每一點(diǎn)的像素值的時候,大于高閾值的像素點(diǎn)則會被保留下來,而低于低閾值的像素點(diǎn)則會被去除。如果某一點(diǎn)的像素值介乎于高閾值和低閾值之間,則會進(jìn)一步判斷該點(diǎn)鄰域是否有大于高閾值的像素點(diǎn),若有則該點(diǎn)被保留,反之則排除該點(diǎn)。圖13為引入OTSU算法后Canny邊緣檢測的圖像。
圖13 玉米粒圖像經(jīng)Canny邊緣檢測后的效果
玉米粒飽滿度檢測分別用了兩種檢測方式進(jìn)行對比,第一種是傳統(tǒng)流程對玉米粒進(jìn)行檢測(如圖14所示),而第二種則是采用高斯濾波以及在Canny邊緣檢測算子中引入最大類間方差法(OTSU)對玉米粒飽滿度進(jìn)行檢測(如圖15所示),圖14和圖15中g(shù)ood,normal,bad分別表示玉米粒的飽滿度程度。
圖14 玉米粒圖像經(jīng)傳統(tǒng)流程檢測后的結(jié)果 圖15 玉米粒圖像經(jīng)改進(jìn)算法處理后的結(jié)果
由圖14與圖15的結(jié)果對比可以發(fā)現(xiàn),傳統(tǒng)算法檢測中一些玉米粒輪廓邊緣特征并不十分飽滿,但卻被識別成good和normal,而玉米粒輪廓邊緣特征較為飽滿的卻被識別成了bad。改進(jìn)算法明顯解決了這些問題,提高了識別的精確度。
首先調(diào)節(jié)高斯核對圖片進(jìn)行降噪;其次對開運(yùn)算之后的圖片引入OTSU算法完成Canny邊緣檢測,玉米粒邊緣部分信息完整地保留了下來;再對玉米粒輪廓進(jìn)行提取和判斷過程,從而使得實(shí)驗(yàn)結(jié)果更加地精確。根據(jù)不同樣本值的飽滿度進(jìn)行測試,得出的實(shí)驗(yàn)數(shù)據(jù)如下(見表1和表2)。
表1 傳統(tǒng)檢測方式測量誤差 樣本值/粒測量值/粒測量誤差/%504216.000625314.516887415.9001008416.00012010115.83312310316.26014912615.43616313715.95117114316.374表2 改進(jìn)算法測量誤差樣本值/粒測量值/粒測量誤差/%50476.00062586.45288826.818100946.0001201126.6671231156.5041491406.0401631526.7481711606.433
根據(jù)不同的樣本值來進(jìn)行測量,由測量數(shù)據(jù)可知加入高斯濾波以及引入OTSU算法完成Canny邊緣檢測后,測量誤差降低,測量精度較高。由實(shí)驗(yàn)數(shù)據(jù)可知,改進(jìn)的算法有效地提高了對玉米粒飽滿度檢測的準(zhǔn)確性。
玉米粒的邊緣輪廓提取是檢測玉米粒飽滿度的一個重要過程,在處理過程中加入高斯濾波以及在Canny邊緣檢測算子中引入最大類間方差法(OTSU)來取代人工設(shè)置的高低閾值,從而避免真實(shí)邊緣的丟失,保證圖像處理過程中信息的完整性,實(shí)驗(yàn)處理結(jié)果精度明顯高于傳統(tǒng)檢測精度,實(shí)際誤差也明顯降低。實(shí)驗(yàn)結(jié)果表明,該新型檢測算法對玉米粒飽滿度檢測結(jié)果明顯優(yōu)于傳統(tǒng)檢測算法,可以解決玉米粒飽滿度檢測失真問題,能極大地提高檢測的精度,實(shí)際運(yùn)行效果較好。本改進(jìn)算法可應(yīng)用于玉米粒等農(nóng)作物的篩選加工過程,同時也為玉米等農(nóng)作物篩選加工過程走向自動化發(fā)展道路提供了一定的參考價值和理論依據(jù)。