何 昊 賀福強(qiáng) 李思佳 張明月 謝 丹
(貴州大學(xué)機(jī)械工程學(xué)院 貴州貴陽(yáng) 550025)
硅鋼片是一種很重要的磁性材料,主要用于制作變壓器、電動(dòng)機(jī)和發(fā)電機(jī)的鐵芯。變壓器、電動(dòng)機(jī)、發(fā)電機(jī)都是農(nóng)業(yè)裝備中重要供電、動(dòng)力設(shè)備。在農(nóng)業(yè)生產(chǎn)中,設(shè)備運(yùn)行環(huán)境較為惡劣,較好的零部件質(zhì)量能提升裝備運(yùn)行壽命。通過對(duì)零部件硅鋼片進(jìn)行缺陷檢測(cè),增加零部件的合格率。硅鋼片的表面質(zhì)量好壞是決定其磁性能的主要因素[1]。視覺檢測(cè)具有實(shí)時(shí)性、高效率、精度高等的優(yōu)點(diǎn)[2],故視覺檢測(cè)可以實(shí)現(xiàn)檢測(cè)的自動(dòng)化,極大降低誤檢率、減少人工檢測(cè)主觀性的影響。
圖像分割就是把圖像根據(jù)性質(zhì)分成多個(gè)區(qū)域的過程,主要是指灰度值、像素強(qiáng)度值、紋理等特征。分割的方法主要有基于閾值、聚類法、遺傳算法、變形模型、區(qū)域生長(zhǎng)等[3]。Fabricio 等[4]提出了一種基于梯度向量流的自動(dòng)種子區(qū)域生長(zhǎng)方法,對(duì)較多目標(biāo)的分割也有不錯(cuò)的效果。Cui等[5]提出了一種改進(jìn)的SRG 算法,利用Harris 角點(diǎn)檢測(cè)原理自動(dòng)選擇起始種子點(diǎn);區(qū)域生長(zhǎng)準(zhǔn)則里引入了圖像的不確定性,使分割更具有魯棒性。Mohammed 等[6]提出了一種可以自動(dòng)提取 ROI 并且用機(jī)器學(xué)習(xí)算法篩選比較適合的種子點(diǎn)的SRG算法,明顯改善圖像分割后的噪聲。Rajkumar等[7]依據(jù)預(yù)選擇的像素區(qū)域的中值來自動(dòng)選擇種子點(diǎn),提取出種子ROI,利用梯度算子分割出ROI的邊界。Sheng等[8]利用深度學(xué)習(xí)找到比較有效的分割閾值進(jìn)行閾值分割后,再進(jìn)行區(qū)域生長(zhǎng)。
拍攝圖像會(huì)產(chǎn)生隨機(jī)的擾動(dòng),圖像有一定的噪聲,為消除掉圖像中的無關(guān)信息,對(duì)圖像進(jìn)行預(yù)處理。
為降低運(yùn)算量,需要將拍攝的三通道的RGB圖像轉(zhuǎn)化為單通道的灰度圖像。采用加權(quán)平均法的灰度化方法,其中心理學(xué)灰度公式根據(jù)人眼對(duì)RGB三色的敏感程度選擇不同的權(quán)重:
式(1)中,R、G、B分別為RGB 三通道灰度值,灰度化結(jié)果如圖1(a)所示。
為了盡可能避免將背景當(dāng)作缺陷,需要對(duì)圖像進(jìn)行平滑處理,這樣雖然會(huì)使缺陷的邊界模糊,但是有利于減少背景的干擾。注意所采用的去噪處理為均值濾波,均值濾波公式為:
式(2)中,m、n分別為所選擇的濾波核的長(zhǎng)和寬,Sxy是以(x,y)為中心的濾波核對(duì)應(yīng)像素的位置集合,平滑處理結(jié)果如圖1(b)所示。均值濾波的缺點(diǎn)是會(huì)使一些細(xì)節(jié)如邊緣等信息丟失,因此在找到種子點(diǎn)后,對(duì)沒有經(jīng)過平滑處理的圖像進(jìn)行區(qū)域生長(zhǎng),找到缺陷邊界。
圖1 均值濾波處理
閾值分割是圖像分割中最簡(jiǎn)單、基礎(chǔ)的方法,性能比較穩(wěn)定,計(jì)算量較小,運(yùn)算速度快;它主要有全局閾值分割、局部閾值分割、自適應(yīng)閾值分割等方法。閾值算法基于閾值T,將像素灰度值大于閾值T 和小于閾值T 的部分分別叫做前景和背景。變換函數(shù)表達(dá)式:
式(3)中,T 為閾值,g(x,y)為原圖像像素點(diǎn)(x,y)的灰度值,f(x,y)為分割后圖像像素點(diǎn)(x,y)的灰度值,閾值分割結(jié)果如圖2所示。
圖2 閾值分割結(jié)果
數(shù)學(xué)形態(tài)學(xué)簡(jiǎn)稱形態(tài)學(xué),其處理方式為領(lǐng)域運(yùn)算,即把領(lǐng)域結(jié)構(gòu)元素與圖像對(duì)應(yīng)位置像素進(jìn)行邏輯運(yùn)算,這種運(yùn)算的影響因素主要有結(jié)構(gòu)元素大小、形狀和邏輯運(yùn)算的規(guī)則。形態(tài)學(xué)操作主要有膨脹、腐蝕、梯度運(yùn)算、禮帽運(yùn)算、黑帽運(yùn)算、開運(yùn)算和閉運(yùn)算等,但其基礎(chǔ)為腐蝕和膨脹,利用膨脹和腐蝕就能完成不同形式的運(yùn)算。
腐蝕運(yùn)算能消除輪廓邊界點(diǎn),使邊界向內(nèi)縮小,主要用于細(xì)化二值圖像目標(biāo)輪廓、去除噪聲等。
式(4)中,A為原圖像,B為結(jié)構(gòu)元素。首先給結(jié)構(gòu)元素B定義一個(gè)原點(diǎn),當(dāng)結(jié)構(gòu)元素B的原點(diǎn)移動(dòng)到圖像A的(x,y)上時(shí),如果結(jié)構(gòu)元素B上等于1 的像素點(diǎn)對(duì)應(yīng)圖像A也等于1,則將圖像A的(x,y)的灰度值置為1,否則置為0,腐蝕示意圖如圖3所示。
圖3 腐蝕示意圖
膨脹運(yùn)算則與腐蝕運(yùn)算相反,使邊界向外擴(kuò)張,主要用于填補(bǔ)圖像分割后的空白,使相近的不相連的輪廓相連。其公式為:
式(5)中,A為原圖像,B為結(jié)構(gòu)元素。首先給結(jié)構(gòu)元素B定義一個(gè)原點(diǎn),當(dāng)結(jié)構(gòu)元素B的原點(diǎn)移動(dòng)到圖像A的(x,y)上時(shí),如果結(jié)構(gòu)元素B上等于1 的像素點(diǎn)對(duì)應(yīng)圖像A中至少有一個(gè)等于1,則將圖像A的(x,y)的灰度值置為1,否則置為0。
先進(jìn)行腐蝕操作,然后在腐蝕的基礎(chǔ)上進(jìn)行膨脹操作,主要用于去噪和計(jì)數(shù)等。其公式為:
式(6)中,A為原圖像,B、C為結(jié)構(gòu)元素。開運(yùn)算效果如圖4 所示,圖5 為開運(yùn)算處理的結(jié)果。
圖4 開運(yùn)算效果
圖5 形態(tài)學(xué)開運(yùn)算結(jié)果
區(qū)域生長(zhǎng)的思想就是把領(lǐng)域(四領(lǐng)域、八領(lǐng)域等)相同的化為一個(gè)區(qū)域。首先需要一個(gè)種子點(diǎn)作為生長(zhǎng)的開始,然后將種子點(diǎn)領(lǐng)域內(nèi)滿足相似準(zhǔn)則要求的像素點(diǎn)合并到種子的區(qū)域,將這個(gè)區(qū)域的像素做為種子點(diǎn),繼續(xù)進(jìn)行生長(zhǎng),直到?jīng)]有符合要求的點(diǎn),生長(zhǎng)結(jié)束,所有種子點(diǎn)像素作為生長(zhǎng)的區(qū)域。分割的好壞由初始種子點(diǎn)和相似準(zhǔn)則決定。
2.3.1 種子點(diǎn)選擇與檢測(cè)
經(jīng)過閾值分割和形態(tài)學(xué)處理后,將二值圖像各輪廓中心作為待定種子點(diǎn)。如果選擇的種子點(diǎn)位于缺陷的絕對(duì)區(qū)域,那么種子點(diǎn)總有一個(gè)方向各像素的深度值呈現(xiàn)高-低-高的形態(tài)。設(shè)計(jì)檢測(cè)模板如圖 6 所示,計(jì)算出種子點(diǎn)在 0°、45°、90°、135°方向上的深度變化,判斷其變化是否呈高低高形態(tài)。
圖6 檢測(cè)模板
種子點(diǎn)左右兩側(cè)r個(gè)像素的灰度平均值分別為:
各方向的灰度變化為:
深度形Si態(tài)變化判定:
式(10)中,I(u)為檢測(cè)模板中第u個(gè)像素的灰度值,w= 1,2,3,4,分別代表 0°,45°,90°,135°方向,mwm為w方向兩側(cè)的最小灰度值,T1為形態(tài)變化閾值。如果種子點(diǎn)不滿足深度形態(tài)變化判定,則去除該待定種子點(diǎn)。
2.3.2 生長(zhǎng)過程
區(qū)域生長(zhǎng)的具體流程如下:
(1)將種子點(diǎn)坐標(biāo)放入種子點(diǎn)集seeds。
(2)頂出種子點(diǎn)集中的一個(gè)種子點(diǎn),對(duì)種子點(diǎn)八鄰域的像素點(diǎn)進(jìn)行相似準(zhǔn)則判斷;滿足相似準(zhǔn)則條件的點(diǎn),視為種子點(diǎn)放入種子點(diǎn)集seeds。
(3)將頂出的種子點(diǎn)存入種子集S。
(4)如果種子點(diǎn)集內(nèi)沒有元素,則跳到步驟(4); 如 果 種 子 點(diǎn) 集 中 還 有 元 素 , 則 跳 到步驟(2)。
(5)生成一張和輸入圖像長(zhǎng)寬一致,像素值全為0的圖像I。
(6)將圖像I中對(duì)應(yīng)種子集S坐標(biāo)的像素值置為255,得到分割圖像I'。
其中生長(zhǎng)的相似準(zhǔn)則為:
式(11)中,gray(seed)為當(dāng)輪種子點(diǎn)的灰度值,gray(8_n)為其八鄰域各點(diǎn)的像素值,Thresh為設(shè)置的閾值。區(qū)域生長(zhǎng)結(jié)果如圖7所示。
圖7 區(qū)域生長(zhǎng)結(jié)果
圖像分割就是按照預(yù)先設(shè)定的規(guī)則,將圖像分割為有意義的前景和背景的過程。區(qū)域生長(zhǎng)是一個(gè)分割效果比較好的算法,但前提是需要找到適合的種子點(diǎn)。單一的分割算法就容易遇到這種不足的情況,結(jié)合使用形態(tài)學(xué)和閾值分割的方法來找到合適的種子點(diǎn),幫助區(qū)域生長(zhǎng)算法完成分割任務(wù),達(dá)到滿足要求的分割效果,分割方法流程如圖8所示。
圖8 分割流程圖
首先對(duì)輸入的圖片進(jìn)行灰度化處理,變成單通道的灰度圖片,然后濾波去除噪聲,使圖像更平滑,選擇合適的閾值進(jìn)行閾值分割,在利用開運(yùn)算去除掉分割后較小的前景,以各前景區(qū)域的中心點(diǎn)為起始種子點(diǎn),進(jìn)行區(qū)域生長(zhǎng),得到最終所滿足要求的前景。
本文采用的圖像來自開源數(shù)據(jù),實(shí)驗(yàn)是在Windows10,OpenCV 上實(shí)現(xiàn)的。電腦配置為i5-8300H,NVIDIA GeForce GTX1060;軟件 Py‐thon3.7,OpenCV_Python4.1.2;圖像的灰度值范圍為[0,255]區(qū)間。
本文提出的自動(dòng)種子區(qū)域生長(zhǎng)算法部分實(shí)驗(yàn)效果如圖9所示,分割比較飽滿,誤判較少(噪聲較少)。其中a(1)~a(6)為硅鋼片微表面原圖,b(1)~b(6)為對(duì)應(yīng)圖像的人工標(biāo)注圖像,c(1)~c(6)為對(duì)應(yīng)圖像算法分割結(jié)果。
本文對(duì)比實(shí)驗(yàn)了閾值分割算法、人工選擇種子點(diǎn)的區(qū)域生長(zhǎng)法以及本文提出的自動(dòng)種子區(qū)域生長(zhǎng)算法。
對(duì)比人工標(biāo)注圖像,計(jì)算各算法分割圖像的精確率P、F1值,進(jìn)行分割效果客觀比較。
精確率:
圖9 自動(dòng)種子區(qū)域生長(zhǎng)算法效果
式(12)(13)中,TP、TN、FP、FN分別為正類判定為正類、負(fù)類判定為負(fù)類、負(fù)類判定為正類,正類判定為負(fù)類的數(shù)目。
根據(jù)各算法各分割圖像的精確率、F1 值繪制折線圖。各算法分割性能如圖10 所示,圖10(a)為各算法F1值,圖10(b)為各算法精確值。
從圖10 可以看出,自動(dòng)種子區(qū)域生長(zhǎng)算法基本達(dá)到人工種子點(diǎn)區(qū)域生長(zhǎng)算法的性能,甚至有所增強(qiáng),這是由于該算法選擇缺陷中心點(diǎn)作為種子點(diǎn),而人工工選擇種子點(diǎn)的算法由于偶爾種子點(diǎn)選擇靠近缺陷邊緣,缺陷中心的種子點(diǎn)生長(zhǎng)更有優(yōu)勢(shì)。
圖10 各算法性能比較
對(duì)于在復(fù)雜背景下分割缺陷,單一的算法很難奏效。例如閾值分割算法,很難找到一個(gè)固定的閾值可以有效分割所有的圖像;由于缺陷所占比例不清楚且所占比例很小,多種自動(dòng)閾值方法都會(huì)失效;單一的自動(dòng)種子區(qū)域生長(zhǎng)算法也因?yàn)轭愃频脑蚨荒苡泻芎玫姆指钚Ч?。基于此,本文提出了一種基于形態(tài)學(xué)的自動(dòng)種子區(qū)域生長(zhǎng)算法,該算法結(jié)合了形態(tài)學(xué)、閾值分割、區(qū)域生長(zhǎng)方法,其分割效果比單一的算法都要好。對(duì)硅鋼片微表面缺陷圖像的測(cè)試結(jié)果表明,該方法缺陷分割的準(zhǔn)確性表現(xiàn)不錯(cuò)。
表1 各算法性能比較