高佳文,費樹岷
(東南大學,江蘇南京,210096)
芒果是世界五大熱帶水果之一,味道鮮美,營養豐富,我國于20世紀60年代開始大規模種植,2019年我國芒果種植面積32.3萬公頃,產量達278.2萬噸,位居世界第三[1]。然而,由于生產規模和采后分級不標準,我國芒果出口優勢小,出口量較低,甚至還需大量進口芒果[2]。芒果采后分級的主要指標是顏色、尺寸以及有無缺陷,其中,表面缺陷檢測一直是芒果分級中的重難點。
目前,國內外關于水果表面缺陷檢測的研究主要基于計算機視覺和圖像處理的方法,如常英基于機器視覺實現對櫻桃番茄表面缺陷的檢測[3],曾磊等通過圖像處理來檢測椪柑表面缺陷[4],代秋芳等基于圖像處理完成了蘋果表面的缺陷檢測系統的設計[5]。
邊緣檢測是圖像處理中常用的缺陷檢測方法之一,本文主要采用基于邊緣檢測的圖像處理方法進行芒果表面缺陷的檢測,主要涉及圖像的采集、預處理、改進Canny邊緣檢測方法、背景分離、閾值分割等。
本文選擇比較常見的臺芒作為研究對象,在超市購買了具有腐爛、磨損、劃傷等多種常見缺陷的芒果和正常無缺陷的芒果。具體圖像采集裝置如圖1所示,包括箱體、自帶采光效果的相機、白色背景板等。拍攝時為了盡最大可能避免拍攝陰影對后期芒果圖像處理造成的影響,應當盡量保證攝像頭置于芒果正上方。

圖1 圖像采集裝置
首先對圖像預處理,將采集的RGB圖像進行R、G、B通道分離,彩色圖像和R、G、B分量圖如圖2所示。從圖中可以比較明顯地看出B分量圖中前景與背景灰度值對比最為明顯,可以通過B分量圖進行背景分離;R分量圖中缺陷比較明顯,可以用于后續的缺陷檢測。

圖2 原圖與R、G、B分量圖
傳統的Canny邊緣檢測算法使用高斯濾波的方式對原始圖像進行平滑濾波,但高斯濾波對于消除椒鹽噪聲方面沒有特別好的效果,可能會使得圖像丟失重要的邊緣信息[6]。為了進一步減少椒鹽噪聲對圖像邊緣信息的干擾影響,本文將高斯濾波更換為自適應中值濾波。
自適應中值濾波降噪原理與中值濾波相同,不過加入了判斷條件來調整窗口大小。建立一個大小可變的滑動窗口,將滑動窗口中最大灰度值和最小灰度值設為Gmax與Gmin,灰度中值設為Gmid。如果滿足Gmid<Gmax且Gmid>Gmin,則滑動窗口滿足需求,不需要調整窗口大小。反之,則增大窗口大小,重復該過程,直到找到合適的Gmid,或窗口尺寸無法再增大為止。之后驗證窗口中心點像素G(x,y),如果Gmin<G(x,y)<Gmax,則G(x,y)為該窗口的灰度值,否則Gmid代替G(x,y)成為該窗口的灰度值。
分別使用高斯濾波和自適應中值濾波方法對含椒鹽噪聲的圖像進行濾波,圖3為濾波結果。可以明顯看出,相較于傳統的高斯濾波方法,本文的自適應濾波方法濾波效果更好,能夠更加精準確定圖像邊緣信息。

圖3 噪聲圖與兩種濾波方法效果圖
傳統的Canny算法在邊緣檢測時使用的是2×2鄰域來計算圖像梯度,對于噪聲過于敏感,忽略其他方向的像素點,導致丟失部分邊緣細節信息,影響后續的邊緣檢測結果[7]。
本文在原有Canny算法水平和垂直方向梯度計算的基礎上,采用了四方向梯度計算方法,增加了45°與135°方向的梯度計算。四個方向的梯度計算模板如圖4所示。

圖4 四方向梯度計算模板

分別使用傳統的Canny算法梯度計算和本文方法,圖5為梯度計算結果。可以看出,本文方法相較于傳統Canny算法相比,增加了梯度計算方向,考慮了45°與135°方向梯度計算的影響,邊緣信息更加完整。

圖5 兩種梯度計算方法效果圖
Canny算法中選取雙閾值進行邊緣檢測,其中的高閾值決定了正確檢測到的邊緣點和錯誤判斷的邊緣點的占比,而低閾值則會對未檢測到的邊緣點以及正確的非邊緣點的占比產生重大影響。傳統的Canny算法中,高低閾值是通過實驗或前期經驗人為設置的,算法自適應性低,不能適應不同圖像檢測需求[8]。
本文采用基于梯度直方圖的大津法(Otsu)自適應的確定高低閾值,避免傳統方法人工選取閾值的缺陷。若目標圖像灰度等級L個,Otsu算法將圖像灰度值在不同的灰度等級范圍內計算對應的方差,方差越大,分類越準確,最終通過不斷的比較,獲得最大類間方差。
設每個灰度等級對應的像素點數量值為ni,1≤i≤L,那么圖像中像素點總數N與圖像中各灰度等級i的出現概率pi分別為:

假設圖像使用閾值t將圖像中的像素點根據灰度值分為前景與背景兩類,設為C1和C2,其中C1類的灰度值等級為 1到 t,C2類的灰度值等級為t+1到L,這兩類像素點出現的概率以及兩類的平均灰度等級分別為:


在不同的t值的情況下求取類間方差,當類間方差最大時所對應的t值就是所需要的最優閾值,將這個最優閾值設置為高閾值,低閾值設置為高閾值的一半。
分別采用傳統Canny算法和本文方法對圖像進行邊緣檢測,圖6為檢測結果。相比于傳統方法,本文的Otsu算法自適應求取閾值,增強了算法的自適應性,圖像邊緣信息提取更加全面準確。

圖6 傳統Canny算法與本文方法
為檢驗本文方法在實際缺陷檢測中的效果,選取若干芒果圖像樣本進行實驗。圖7(a)為芒果原圖,使用本文改進的Canny算法對圖7(b)芒果的B分量圖進行邊緣檢測,得到圖7(c)芒果的邊緣檢測圖,通過漫水填充算法進行填充,得到圖7(d)背景分離圖像。
將R分量圖與得到的填充圖像相對應,得到圖7(e)芒果在R分量通道中的位置圖,最后通過閾值分割完成缺陷檢測,實驗檢測結果如圖7(f)所示。從圖中可以看出,本文方法可以精準檢測出邊緣信息,繪制出邊緣圖,完成缺陷檢測的任務。

圖7 缺陷檢測
為了能夠更好的濾除椒鹽噪聲,保留更多圖像邊緣信息,本文在原始的Canny算法上進行了改進,以自適應中值濾波代替高斯濾波,增加了兩個方向的梯度計算,并通過大津法(Otsu)自適應確定高低閾值。實驗表明,本文方法獲取邊緣信息更加全面,邊緣檢測結果更加精準,并具有更好的自適應性,實現了芒果的表面缺陷檢測。