蔣潔琦,楊 庚,劉沛東,錢 晨
(1.南京郵電大學(xué) 計算機學(xué)院、軟件學(xué)院,江蘇 南京 210046;2.江蘇亨通光電有限公司,江蘇 蘇州 215200;3.南京郵電大學(xué) 光電學(xué)院,江蘇 南京 210046)
在產(chǎn)品的生產(chǎn)加工過程中,由于受到表面材料、生產(chǎn)工藝以及生產(chǎn)者水平等因素的影響,產(chǎn)品表面總會出現(xiàn)一些缺陷,常見的缺陷主要包括:小孔、鼓包、氣泡、刮痕等。這些缺陷不僅會影響產(chǎn)品表面的美觀,還會造成其機械性能的下降,因此對于產(chǎn)品表面缺陷的檢測顯得尤為重要。
近年來,國內(nèi)從事表面檢測技術(shù)開發(fā)的公司不斷增加,如北京大恒圖像、北京和利時、北京凌云光視、上海法視特、深圳賽克數(shù)碼、蘇州南光電子,以及國內(nèi)許多高??蒲性旱榷荚谥铝τ诒砻鏅z測技術(shù)的研發(fā),但是還未能形成一個全面成熟的解決方案。
目前比較常用的解決方案是基于圖像處理的瑕疵檢測技術(shù),該方案主要局限于圖像去噪[1]、邊緣檢測[2-4]、圖像分割[5-6]等步驟。當(dāng)產(chǎn)品表面受到光源、光照方式、圖像采集方式等因素的影響,使得圖像缺陷邊緣的灰度有較寬的過渡區(qū),不是理想的階躍型邊緣,形成了相對緩慢的過渡邊緣即弱邊緣[7-8]時,這些方法存在對弱邊緣信息不敏感從而難以完整提取瑕疵的缺點。
針對弱邊緣難以提取的問題,文中提出了表面弱邊緣瑕疵檢測算法,即通過引入Scharr算子,在原圖像中融合Scharr邊緣圖像,這不僅保留了原有圖像的強邊緣,而且利用Scharr增強弱邊緣瑕疵的優(yōu)勢,同時在此基礎(chǔ)上結(jié)合形態(tài)學(xué)進(jìn)行優(yōu)化表面效果,從而有效準(zhǔn)確地提取出強弱邊緣瑕疵,以獲得理想的分割結(jié)果。
傳統(tǒng)人工檢測具有速度慢,效率低下,人眼的空間分辨率有限,無法識別相當(dāng)微小的瑕疵,人易受其主觀意識影響,檢測的標(biāo)準(zhǔn)不統(tǒng)一等缺點,這些缺點使得其在實際應(yīng)用中具有很大的局限性。因此,人工檢測已經(jīng)不能滿足企業(yè)對檢測速度、精度和可靠性的要求。針對傳統(tǒng)人工檢測技術(shù)存在的問題,研究出有效準(zhǔn)確的檢測產(chǎn)品表面缺陷的技術(shù),是當(dāng)前工業(yè)生產(chǎn)中的一個主要課題。
長飛光纖光纜有限公司[9]于2013年提出了一種線纜表面缺陷在線檢測裝置及方法,主要檢測光纜表面劃痕部分。無錫港灣網(wǎng)絡(luò)科技有限公司[10]于同年也提出了一種基于機器視覺的線纜在線檢測方法,這種方法主要檢測線纜在生產(chǎn)過程中字符的錯印、漏印、噴印模糊等。目前,對于產(chǎn)品表面瑕疵檢測的相關(guān)技術(shù)還不成熟。
產(chǎn)品表面瑕疵檢測主要分為基于機器學(xué)習(xí)和基于圖像處理兩大類方法。基于機器學(xué)習(xí)的表面瑕疵檢測算法把瑕疵檢測看成是一個像素聚類的過程,比較典型的有混合高斯模型分析法和隨機場模型分析法。文獻(xiàn)[11]采用基于混合高斯模型分析的方法,雖然得到了較好的檢測效率,但是計算量大;隨機場模型在紋理模型中是比較重要的一類模型,具體包括AR模型、ARMA模型、MA模型和隨機馬爾可夫模型,文獻(xiàn)[12]正是運用隨機場模型的分析方法,通過參數(shù)表示一幅圖像的信息,但是對于其模型的選取具有一定難度?;趫D像處理的表面瑕疵檢測算法主要通過圖像預(yù)處理、圖像分割等過程來實現(xiàn)瑕疵檢測。在圖像處理的發(fā)展過程中,研究人員對不同的對象采用與其合適的表面瑕疵檢測算法,取得了良好效果。例如,文獻(xiàn)[13]利用閾值和邊緣檢測圖像分割方法,有效實現(xiàn)了鋼板表面瑕疵的分割。文獻(xiàn)[14]將SVM應(yīng)用于鋼絲桿表面檢測,通過采用雙閾值二值化、形態(tài)學(xué)處理、邊緣檢測等方法提取瑕疵特征,并利用支持向量機實現(xiàn)分類,對因氧化而導(dǎo)致的鋼絲桿表面裂紋和脫磷可以進(jìn)行有效的識別。文獻(xiàn)[15]設(shè)計出一種銅線表面缺陷高速檢測系統(tǒng),通過使用CCD相機獲取線纜圖像,經(jīng)過圖像預(yù)處理、圖像分割、圖像二值化等過程,實現(xiàn)銅線表面缺陷的檢測與識別。
在工業(yè)生產(chǎn)中,產(chǎn)品表面弱邊緣瑕疵由于其灰度緩慢變化,所以弱邊緣信息難以提取。在基于圖像處理的瑕疵檢測過程中,傳統(tǒng)的瑕疵檢測技術(shù)主要運用一般圖像處理流程來解決強邊緣瑕疵,這些方法存在對弱邊緣信息不敏感從而難以完整提取瑕疵的缺點。與相關(guān)研究工作相比,文中更加注重表面弱邊緣瑕疵的檢測,在一般的瑕疵檢測流程基礎(chǔ)上提出了弱邊緣瑕疵檢測算法。
一般圖像處理過程中瑕疵檢測的流程為圖像預(yù)處理、圖像分割兩部分,根據(jù)對瑕疵圖片的了解,產(chǎn)品表面瑕疵由于受到外界因素的影響,圖像缺陷邊緣的灰度可能會形成相對緩慢的過渡邊緣即弱邊緣,弱邊緣在傳統(tǒng)邊緣檢測中不易被分割出來。因此,文中在一般檢測方法的圖像預(yù)處理之后添加Scharr算子來突出弱邊緣,同時在此基礎(chǔ)上結(jié)合形態(tài)學(xué)開、閉操作來濾除噪聲,較好地分割開各個缺陷區(qū)域并且使表面紋理趨于平滑,為閾值分割打下基礎(chǔ)。最后,再進(jìn)行圖像分割得出檢測結(jié)果。算法流程如圖1所示。
圖1 弱邊緣檢測算法流程
2.1.1 邊緣檢測
Canny算子[3]是John Canny于1996年提出的,同時也給出了3個準(zhǔn)則來評價邊緣檢測性能的優(yōu)劣:
(1)信噪比準(zhǔn)則,即判定非邊緣點為邊緣點的概率以及判定邊緣點為非邊緣點的概率都要很低;
(2)定位精度準(zhǔn)則,即檢測出來的邊緣點應(yīng)該盡可能都在實際邊緣中心;
(3)單邊緣響應(yīng)準(zhǔn)則,即單一邊緣產(chǎn)生多個響應(yīng)的概率盡可能要低,并且應(yīng)該最大程度抑制響應(yīng)虛假邊緣。
Canny算子邊緣檢測正是在滿足這3個準(zhǔn)則的最優(yōu)解的基礎(chǔ)上實現(xiàn)的,所以對于圖像中物體邊緣敏感性相對較高,同時對光纜表面背景噪聲也具有很好的抑制和消除的作用。
2.1.2 有效區(qū)域提取
有效區(qū)域提取是將研究對象從采集的圖像中提取出來,使得感興趣的目標(biāo)與背景分割,從而減少圖像背景對后續(xù)瑕疵檢測造成干擾。文中實驗對象為光纜,即要將光纜從背景中提取出來。通過Canny算子邊緣檢測已經(jīng)能夠得到光纜的輪廓,并且由于光纜圖像輪廓類似平行四邊形,因此通過對圖像像素點第一列和最后一列分別進(jìn)行自上而下和自下而上的遍歷,找出像素點灰度值突變的點并記錄它們的位置,得到平行四邊形四個點,然后通過把平行四邊形上下兩條邊以外的像素點灰度值置為0,即讓其顯示黑色,很快能分割出光纜區(qū)域,為后面瑕疵檢測奠定基礎(chǔ)。
2.2.1 弱邊緣突出
在2.1節(jié)得到的去除背景后的圖像中添加Scharr算子來突出弱邊緣。
具體步驟是:
(1)水平方向模板對圖像求取梯度:分別將圖像預(yù)處理后得到的圖像A與卷積核Gx進(jìn)行卷積,公式表述如下:
(1)
(2)垂直方向模板對圖像求取梯度:分別將圖像預(yù)處理后得到的圖像A與卷積核Gy進(jìn)行卷積,公式表述如下:
(2)
(3)圖像的每一個像素的橫向及縱向灰度值通過以下公式結(jié)合,來計算該點灰度的大小G:
(3)
2.2.2 圖像融合
將2.2.1得到的圖像與原圖像采用OpenCV內(nèi)置函數(shù)addWeighted進(jìn)行融合。
2.2.3 形態(tài)學(xué)處理
基本的數(shù)學(xué)形態(tài)學(xué)操作包括腐蝕、膨脹、開操作、閉操作等,定義如下:
(1)形態(tài)學(xué)膨脹操作:膨脹是求局部最大值的操作。核B與圖像卷積,核B可以是任意的形狀或大小,它擁有一個單獨定義出來的參考點,核B掃描圖像的每一個像素,計算核B覆蓋區(qū)域的像素點的最大值,并把這個最大值賦給參考點(核B的中心點)指定的像素,使圖像變明亮。
(4)
(2)形態(tài)學(xué)腐蝕操作:腐蝕是求局部最小值的操作,核B掃描圖像的每一個像素,即計算核B覆蓋的圖像區(qū)域的像素點的最小值,并把這個最小值賦值給參考點(核B的中心點)指定的像素,使圖像變灰暗。
(5)
(3)形態(tài)學(xué)開操作:將圖像進(jìn)行先腐蝕再膨脹的操作,即:
open(src,element)=dilate(erode(src,element))
(6)
(4)形態(tài)學(xué)閉操作:將圖像進(jìn)行先膨脹再腐蝕的操作,即:
close(src,element)=erode(dilate(src,element))
(7)
開操作具有消除細(xì)小物體,在纖細(xì)處分離物體和平滑較大物體邊界的功能,閉操作具有填充物體內(nèi)細(xì)小空洞,連接鄰近物體和平滑邊界的功能。利用開操作和閉操作的這些功能,先對2.2.2融合后的圖像進(jìn)行開操作消除表面零散分布的噪聲點,再進(jìn)行閉操作使得表面紋理趨于平滑,為圖像分割做準(zhǔn)備。
2.3.1 最大熵閾值
為了從圖像中提取瑕疵部分,需要對其進(jìn)行分割。文中采用最大熵閾值[16]來計算閾值實現(xiàn)分割,閾值計算方法如下:
設(shè)閾值t將圖像劃分為目標(biāo)O和背景B兩類,它們的概率分布分別為:
O區(qū):pi/Pt,i=0,1,…,t;
B區(qū):pi/(1-Pt),i=t+1,t+2,…,L-1。
則目標(biāo)O和背景B的熵函數(shù)分別為:
ln(1-Pt)+(H-Ht)/(1-Pt)
(9)
圖像的總熵為:
H(t)=HO(t)+HB(t)=lnPt(1-Pt)+Ht/P+
數(shù)據(jù)接收過程中,為了確保每次能正確的把圖像數(shù)據(jù)寫進(jìn)后面的緩沖 FIFO 中,在寫入 FIFO 之前首先通過數(shù)據(jù)比較器在圖像數(shù)據(jù)中找到圖像幀頭后使能后面的FIFO,把后面的圖像數(shù)據(jù)寫入到FIFO中[8]。
(H-Ht)/(1-Pt)
(10)
(1)從灰度級0開始,選取初始閾值T0=0,計算原始圖像的信息熵H0并初始化Hmax=H0,Tmax=T0;
(2)考察灰度級1,閾值T1=1將圖像分割為G1和G2兩個區(qū)域,計算G1和G2的信息熵Hd和Hb,比較Hd+Hb與Hmax的大小,如果Hd+Hb>Hmax,則Tmax=T1,Hmax=Hd+Hb,否則Tmax,Hmax保持不變;
(3)重復(fù)第2步,繼續(xù)考察灰度級2~255,直到找到最大熵閾值。
在計算出閾值之后,對2.2.3得到的圖像進(jìn)行分割,將圖像中所有像素點的灰度值與閾值進(jìn)行比較,若像素點灰度值的大小大于閾值,則將其灰度值置為255,否則將該像素點灰度值置為0,從而得到二值圖像。
2.3.2 輪廓搜索擬合
對于閾值分割得到的二值圖像,使用缺陷輪廓搜索算法來獲取提取出的每個瑕疵邊界像素點的坐標(biāo),從而組成輪廓序列,再根據(jù)邊界條件進(jìn)行篩選;最后篩選得到的輪廓序列采用輪廓擬合算法勾勒瑕疵大致的幾何形狀,并在原圖上標(biāo)注出來。
(1)缺陷輪廓搜索。
文中采用OpenCV內(nèi)置函數(shù)findContours對閾值分割后得到的二值圖像進(jìn)行外輪廓搜索。
(2)缺陷輪廓擬合。
在提取得到圖像輪廓序列后,存在一些圖像輪廓邊緣呈現(xiàn)鋸齒狀,此時需要對缺陷輪廓進(jìn)行平滑擬合從而使得輪廓圖像鋸齒邊緣趨于圓滑。文中采用OpenCV內(nèi)置函數(shù)approxPolyDP對輪廓進(jìn)行擬合。
實驗采用的圖像為工業(yè)生產(chǎn)流水線上采集的光纜圖像,由江蘇亨通光電有限公司提供,其中兩幅圖像如圖2所示,圖像的投影信息和灰度值3維圖顯示在圖3中。由圖3可看出,圖像弱邊緣瑕疵灰度變化相對緩慢,容易被誤以為是正常光纜纜面,不易被檢測出。
圖2 原始圖像
圖3 原始圖像的灰度分布信息
傳統(tǒng)的基于圖像處理的瑕疵檢測技術(shù)[17]主要局限于邊緣檢測、圖像分割等步驟,當(dāng)產(chǎn)品表面受到光源、光照方式、圖像采集方式等因素的影響,使得圖像缺陷邊緣的灰度有較寬的過渡區(qū),不是理想的階躍型邊緣,形成了相對緩慢的過渡邊緣即弱邊緣時,這些方法存在對弱邊緣信息不敏感等缺點。圖4顯示了光纜原圖I和光纜原圖II經(jīng)過傳統(tǒng)瑕疵檢測方法檢測的結(jié)果(邊緣檢測均采用Canny算子檢測,圖像分割均采用最大熵閾值分割方法),可以看出傳統(tǒng)的瑕疵檢測技術(shù)對于弱邊緣信息并不敏感,所以很難完全提取出完整瑕疵。
圖4 傳統(tǒng)方法檢測結(jié)果
按照圖1所示流程,對原始圖像進(jìn)行檢測,檢測的結(jié)果顯示在圖5中。圖5(a)、5(c)是經(jīng)過弱邊緣增強處理后的圖像灰度3維圖像,對應(yīng)的投影圖分別為圖5(b)、5(d),對比圖3中原始纜面灰度3維圖像和投影圖,可以看出,經(jīng)過弱邊緣增強后的圖像,光纜表面的噪聲、紋理得到了很大的削弱,強、弱邊緣瑕疵與周圍纜面灰度差變大,強、弱邊緣瑕疵信息相對于正常纜面信息顯得更加明顯。對于那些灰度值較小的像素點(屬于正常纜面的像素點)進(jìn)行了閾值去除,得到圖5(e)、圖5(f)(文中圖5(e)閾值大小為137,圖5(f)閾值大小為78),最終瑕疵檢測結(jié)果分別為圖5(g)、圖5(h)??梢钥闯?,光纜強、弱邊緣瑕疵的信息都被較好地提取出來了。
圖5 文中算法檢測結(jié)果
在產(chǎn)品表面瑕疵檢測過程中,圖像處理中常用的方法是先進(jìn)行圖像預(yù)處理來對圖像進(jìn)行去噪、提取有效區(qū)域等,然后對得到的圖像進(jìn)行分割得到二值化圖像,最后得出檢測結(jié)果。該算法易于實現(xiàn),對于一般圖像可以取得良好的分割效果,因此得到了廣泛的應(yīng)用。但在實際工業(yè)生產(chǎn)中,由于會受到光照、材料本身等外界因素的影響,產(chǎn)品表面容易出現(xiàn)灰度變化緩慢的弱邊緣瑕疵,傳統(tǒng)的瑕疵檢測方法對它敏感度不高而容易把它當(dāng)成正常表面紋理,因而不易被檢測出來。通過在預(yù)處理之后添加Scharr算子來突出弱邊緣,同時結(jié)合形態(tài)學(xué)處理操作平滑表面來改進(jìn)算法。實驗結(jié)果表明,與一般瑕疵檢測方法相比,該算法對弱邊緣的敏感度更高,能完整檢測出表面瑕疵。但是如何提高檢測效率并使檢測輪廓與實際瑕疵輪廓更加貼合,使其達(dá)到最優(yōu)化還需要進(jìn)一步深入研究。