張宇廷,王宗彥,王 曦,范浩東
(中北大學(xué) a.機械工程學(xué)院;b.山西省起重機數(shù)字化工程技術(shù)研究中心,太原 030051)
隨著數(shù)字化信息時代的發(fā)展,基于圖像處理分析的工業(yè)化智能檢測技術(shù)日益成熟,數(shù)字化圖像基本處理衍生出了大量的算法結(jié)合識別處理與自適應(yīng)圖像分析等方法[1]。包括Otsu算法的閾值處理,多形態(tài)學(xué)圖像的開運算與閉運算,多目標(biāo)優(yōu)化算法圖像處理都成為了當(dāng)代數(shù)字圖像處理的熱點[2-4]。
其中,圖像的首要識別特征為邊緣輪廓的標(biāo)定過程,應(yīng)用的相關(guān)技術(shù)為圖像分割與閾值處理[5]。傳統(tǒng)的邊緣檢測算子包括LoG檢測器,過零點檢測器,Prewitt檢測器,Sobel檢測器與Canny邊緣檢測器。其中在簡單工件識別方面,運用效果最佳的主要為Canny算子與Sobel算子[6]。其中王海龍等[7]通過改進Canny插值的方法自主選擇合適閾值,對比了不同閾值下圖像鑒別結(jié)果。張加朋等[8]在使用Canny算子檢測工件時將高斯濾波改成了中值濾波,將高低梯度值與最大方差閾值結(jié)合,有效的避免了工件表面污漬帶來的影響。黎浩等[9]運用頂帽變換的思路進行Canny-Otsu算法處理,實現(xiàn)了帶鋼工件的表面缺陷檢測。但是在面臨復(fù)雜相似工件的情況下,傳統(tǒng)的Canny邊緣檢測與自適應(yīng)Otsu閾值優(yōu)化處理在面對鋸齒與孔洞的時候可能產(chǎn)生鋸齒邊緣粘連,孔洞特征失效等情況[10]。
本文提出了一種改進K-means算法自適應(yīng)Canny算子邊緣處理技術(shù),通過改進算法分割復(fù)雜工件圖像得到不同的鋸齒與孔洞特征,再進行形態(tài)學(xué)運算處理得到明顯的圖像特征,對比不同的聚類K值進行邊緣的最優(yōu)化處理,由于邊緣輪廓復(fù)雜性在改進Canny算子方面進行梯度方向的增加,使用最小二乘法進行孔洞與鋸齒擬合。
傳統(tǒng)的工件邊緣識別思路為使用強大的Sobel與Canny算子嵌套模板,人工調(diào)整內(nèi)核與模板,對于簡單形狀工件而言有較為良好的邊緣處理效果,Canny算子與Otsu閾值優(yōu)化的結(jié)合使得工件閾值分析更加合理,但是對于復(fù)雜工件而言,它所具有的一般特征為細小孔洞,非標(biāo)準(zhǔn)形狀、鋸齒、粗糙表面等特征都會為邊緣標(biāo)定造成困難。因此提出了一種改進K-means算法的Canny邊緣檢測方法,總體設(shè)計思路如圖1所示。
本算法結(jié)合聚類算法與Canny邊緣檢測,著重考慮到鋸齒、奇異邊緣、細小孔洞等細節(jié)處理,相似工件圖像不需要進行多次調(diào)整閾值與降噪,對于光源影響下的工件邊緣,采用K-means聚類改進算法實現(xiàn)目標(biāo)為陰影部分與背景重合,與前景目標(biāo)區(qū)分,檢測出的圖像中細小孔洞面積與原有圖像保持一致,鋸齒特征不粘連失真,圖2為測試工件類型。
圖2 測試工件
對應(yīng)的Canny算子也需要改進,由于邊緣特征的復(fù)雜性除去原有水平與垂直梯度方向,添加45°與135°方向處理,引入K-means中的數(shù)據(jù)堆積特征值,最后對于多余邊界進行形態(tài)學(xué)腐蝕操作,對比峰值信噪比(PSNR),結(jié)構(gòu)相似性(SSIM),測試多組數(shù)據(jù),選取平均檢測結(jié)果。
K-means聚類算法作為數(shù)據(jù)挖掘與圖像信息處理中使用到的聚類為無監(jiān)督式樣本,它的基本思想規(guī)定固定數(shù)量k種聚類,每一種感興趣區(qū)域(RoI)分配最近均值的聚類,反復(fù)迭代細化均值,得到為區(qū)域化塊狀連接圖像[11]。不同于超像素的多區(qū)域分割思路,采用整體分割使得分割效率大大提高,K-means常用于數(shù)據(jù)神經(jīng)網(wǎng)絡(luò)處理與圖像分析,有效的平滑細化圖像特征點與邊緣[12]。
2.2.1 傳統(tǒng)K-means圖像分割
傳統(tǒng)的K-means算法適用于邊界紋理不復(fù)雜的圖像邊緣判定[13],而且在尋找區(qū)域平均像素值時可能由于噪聲,分辨率,光源等外在因素的影響,眾多噪聲點和孤立點污染整個圖像區(qū)域,因此改進K-means算法的主要目的是為了平滑不必要的細節(jié)框架,聚集必要的邊緣特征。
由于聚類算法本身分割圖像具有隨機性,因此隨機選取K值進行數(shù)據(jù)簇擁,對原始Canny邊緣弱化的像素點進行圖像分割。需要確定需要的K值大小。使用MATLAB2018a分析工件圖像,取K=2~6的聚類樣本作為參考圖像。傳統(tǒng)K-means圖像分割如圖3所示。
圖3 傳統(tǒng)K-means聚類分割
圖3a為工件原始圖像,圖3b~圖3e為K值為2~6的聚類分割結(jié)果,可以看出圖3b喪失了基本邊緣特征,圖3d和圖3e的工件存在明顯的色差梯度變換與點噪聲,會干擾后續(xù)的Canny邊緣檢測結(jié)果。
2.2.2 改進算法原理
針對傳統(tǒng)K-means聚類算法的圖像失真與固定K值不易輸入分析的問題,建立相應(yīng)的數(shù)學(xué)模型?;舅枷霝閳D像一般分為前景值與背景值,提取需要的輪廓信息。改進原始算法單一K值域的思想,分別取兩種不同的K值區(qū)域規(guī)定K聚類的數(shù)量,樣本集合分別為Q1、Q2。令Q1={z1,z2,…,zQ1},Q2={z1,z2,…,zQ2},將Q1,Q2分別劃分為K個最優(yōu)不相交簇,聚類簇C={C1,C2,…,Ck}。數(shù)據(jù)集合不相交公式為:
(1)
(2)
通過計算公式得到兩個不同的K聚類均值mi1、mi2,K=[K1,K2],其中{K∈N2≤K≤6},隨機進行數(shù)據(jù)聚集反復(fù)迭代。
mi+1=mi
(3)
直到?jīng)]有產(chǎn)生新聚類變換為止,自動更新聚類值,擬合出最優(yōu)背景與前景K值如圖4所示。
圖4 數(shù)據(jù)聚值擬合結(jié)果
將不同前景與背景的K聚類值進行擬合,但是不能將數(shù)據(jù)混疊造成圖像干擾,隨機排布K值矩陣[1,1][1,2]…[6,6],通過15組擬合數(shù)據(jù)得出最佳區(qū)域為隨機K值聚類集合的并解,K∈[1.732,3.227],因此K的建議取值為2與3。
對得到的最優(yōu)前景圖像與背景圖像進行小波融合分析,對于水平、垂直、對角方向的高頻信息進行提取,圖5為融合過程。改進后的圖像的邊緣輪廓與原圖像分割明顯,提取黑色像素通道即可提取工件基本輪廓。
圖5 融合示意圖
2.2.3 算法驗證
聚類相關(guān)分析使用MATLAB2018a進行仿真測試,測試樣本為原先Cameraman圖像對比傳統(tǒng)K-means算法。圖6所示為驗證過程。
圖6 具體驗證過程
通過改進算法的實驗驗證,得到改進后的K=2~6聚類如圖7所示。
圖7 改進K-means聚類算法圖像處理
與原算法對比圖基本輪廓清晰可見,邊緣未存在失真,圖7b與圖7c的背景緩和,工件像素梯度平滑,圖7d與圖7e雖然仍存在梯度變換,但對比原算法有了明顯改進。該仿真證明該改進算法聚類K=2~6取值實現(xiàn)的可行性,其中圖7a~圖7c可用于后續(xù)的Canny邊緣檢測處理。
改進算法后的程序運行時間由于算法步驟的簡化以及自動過濾異常值與偏態(tài)分布,運行效率大大提高,選取K值,運行20次取平均時間,測得優(yōu)化前后時間如表1所示,優(yōu)化時間明顯縮短。
表1 優(yōu)化前后運行時間對比
Canny邊緣檢測器是Edge算法中較為突出的檢測算法,檢測的三項指標(biāo)為低錯誤率,邊緣定位點趨于真實,真實邊緣點返回單響應(yīng)點。本文所檢測的工件還需要保證鋸齒孔洞特征的相似性(SSIM)與高性能的峰值信噪比(PSNR)。
改進Canny檢測的基本步驟如下:
(1)原始Canny圖像進行Guass濾波,降低孤立點帶來的影響,加入雙邊濾波,得到的圖像邊緣相似度會大大提高,提升峰值信噪比。Guass濾波與雙邊濾波相關(guān)函數(shù)為:
(4)
(5)
式中,σ、σs、σr為標(biāo)準(zhǔn)差,用于改善圖像平滑度;i(x,y)為輸入圖像;i(m,n)為像素強度值,用于保持梯度。
(2)套用Sobel檢測器檢測圖像的x軸與y軸梯度幅值與方向。實現(xiàn)橫向與縱向的邊緣數(shù)值估計。梯度幅值與方向公式為:
(6)
(7)
式中,iGS(x,y)為平滑后的圖像,由于需要檢測鋸齒與孔洞,需要添加45°與135°方向模板。梯度模板為:
(8)
梯度幅值公式演變?yōu)椋?/p>
(9)
式中,G45°、G135°為梯度卷積后的方向梯度幅值。
(3)對于梯度圖像在局部極大值包含寬脊進行非極大值抑制操作,規(guī)定了相關(guān)的梯度向量∝(x,y)。
(4)在進行滯后閾值過程中,使用低閾值TL與高閾值TH檢測邊緣,通過全局閾值優(yōu)化,再進行連通性分析連接圖像相關(guān)真實點。最終得到完整檢測結(jié)果。
將上述原理輸入到MATLAB與OpenCV實現(xiàn)相關(guān)邊緣功能,將處理好的聚類圖像進行二次優(yōu)化處理,如圖8所示。
(a) 閾值分割 (b) 非極大值抑制圖8 Canny優(yōu)化過程
最終融合K-means的數(shù)據(jù)堆積,如圖9所示。
圖9 數(shù)據(jù)堆疊過程
得到最終邊緣檢測結(jié)果,與Sobel檢測,傳統(tǒng)Canny檢測,Prewitt檢測,閾值優(yōu)化Canny檢測對比,結(jié)果如圖10所示。
圖10 邊緣檢測結(jié)果
每種算子運行20次取最佳邊緣驗證結(jié)果,Prewitt檢測算子噪聲點很少,但是目標(biāo)與背景混雜,未能有效檢測邊緣,傳統(tǒng)Canny搜尋邊緣特征過多,Sobel算子背景邊緣處理不明顯,Canny+Otsu在閾值分析過程中大量邊界缺失。而本文提出算法則有明顯邊緣特征,且噪聲去除效果明顯。
驗證出改進K-means算法的邊緣檢測可靠性后,進行相關(guān)的工件檢測實驗,由于不同計算機處理算法具有差異性,所用設(shè)備搭建處理環(huán)境統(tǒng)一為圖11所示平臺,選取不同帶有細小孔洞與鋸齒特征的奇異非標(biāo)準(zhǔn)工件作為參考。
圖11 實驗平臺
搭建的硬件框架主要分為光源、攝像頭,待測工件以及測控電腦組成。采用LED光源負責(zé)工件與黑色背景的對比處理,減少陰影造成的影響。采集圖像的攝像頭型號為MV-CA013-20GM,固定在水平框架上,其分辨率為1280×1024,開啟曝光模式增加背景與目標(biāo)工件對比度。測控電腦環(huán)境為AMD R5-4600H四核16 G內(nèi)存,進行實時圖像處理。
軟件準(zhǔn)備為測控電腦搭載Visual Studio2019與OpenCV3.4.6進行圖像預(yù)處理,使用MATLAB進行算法優(yōu)化與數(shù)據(jù)擬合,GigE Vision用于電腦與攝像頭的協(xié)議連接。
檢測帶有細小孔洞的工件不僅需要使處理后的工件邊緣基本完好問題,還需要保證形狀保持一致,在算法處理數(shù)據(jù)堆積的過程中,由于上述三種工件的基本孔洞特征直徑在1.5~2.3 mm之間,可能造成形狀的失真細小圓孔變成矩形孔洞,會影響到相似度評價(SSIM)與測量尺寸,因此需要使用最小二乘法擬合工件圓孔,具體原理如下:
首先進行相關(guān)數(shù)學(xué)模型搭建,設(shè)圓心為(A,B),半徑為R,平面圓形一般方程為:
x2+y2+ax+by+c=0
(10)
式中,a=-2A;b=-2B;c=A2+B2+C2,測試i組不同數(shù)據(jù)簇(xm,ym),m=1,2,…,i,算出目標(biāo)函數(shù)為:
(11)
對a,b,c同時偏導(dǎo),令F=0,得到相關(guān)矩陣為式(12),通過解得a,b,c計算擬合圓相關(guān)參數(shù):
(12)
通過解得a,b,c計算擬合圓相關(guān)參數(shù)。隨后進行微面積篩選與孔洞特征圓形擬合,通過OpenCV得到細化圖像輪廓,如圖12所示。
圖12 圓形孔洞擬合對比圖
對改進K-means算法進行實際驗證,采集到的圖像為工件1,2,3,采集30組數(shù)據(jù)共120張,評價標(biāo)準(zhǔn)為:
(1)對三種工件進行相似度(SSIM),峰值信噪比(PSNR)的一般評估,觀察所測工件不同算子條件下的數(shù)值對比,將30組圖像數(shù)據(jù)進行平均計算,得到可靠的一般評估與Canny檢測和Otsu+Canny檢測對比。
(2)由于工件的特殊性,需要對鋸齒形狀與孔洞進行評判,評判標(biāo)準(zhǔn)為鋸齒與圓形孔洞的失真程度。
選取傳統(tǒng)Canny算子,基于Otsu的Canny算子作為對照,添加均值為0.2,方差為0.05的高斯噪聲,放大特征細節(jié)得到邊緣輪廓如圖13所示。
圖13 細節(jié)對比
由圖可知,Canny算子的邊緣不連貫,且缺失孔洞與鋸齒特征,基于閾值優(yōu)化的Canny算子雖然可以基本檢測邊緣輪廓,但孔洞邊緣存在不連貫,部分鋸齒失真。而本文算法去噪能力強,孔洞與鋸齒擬合程度高,具有很強的魯棒適應(yīng)性,邊緣平滑度更高。
取30組實驗數(shù)據(jù)平均值,對比工件圖像的相關(guān)相似度與峰值信噪比,如表2所示。細小孔洞與鋸齒特征檢測結(jié)果如表3所示。
表2 圖像評價對比表
表3 孔洞鋸齒特征統(tǒng)計 (個)
由表2可以看出本文的改進算法的峰值信噪比和結(jié)構(gòu)相似度較傳統(tǒng)Canny算法與閾值優(yōu)化后的Canny算法而言明顯提高,驗證了改進算法的可靠性。由表3可得基于改進算法的Canny邊緣檢測的孔洞鋸齒識別率有所提高, 特征與邊緣細化比原有算子更為平滑。
通過改進K-means聚類算法實現(xiàn)自適應(yīng)的Canny邊緣檢測過程,首先進行復(fù)雜工件圖像預(yù)處理操作,然后通過改進K-means算法實現(xiàn)區(qū)域工件圖像的梯度優(yōu)化,配合Canny檢測算子進行細小孔洞與鋸齒處理,最終得到優(yōu)化的邊緣檢測結(jié)果。
處理后的圖像不僅可用于機器視覺的標(biāo)定檢測,而且得出的邊緣提取效果較傳統(tǒng)Canny邊緣檢測在相似度與峰值信噪比評價上有所提高,在孔洞與鋸齒邊緣對比上失真程度下降,驗證了改進K-means算法在Canny邊緣處理上的可行性。