姚夢(mèng)潔
(山東科技大學(xué)測(cè)繪與空間信息學(xué)院,山東青島 266590)
20 世紀(jì)70 年代計(jì)算機(jī)性能提升,可處理圖像等大規(guī)模數(shù)據(jù),研究者可利用計(jì)算機(jī)代替人類(lèi)視覺(jué)器官認(rèn)識(shí)世界,計(jì)算機(jī)視覺(jué)逐漸受到關(guān)注。通過(guò)計(jì)算機(jī)實(shí)現(xiàn)自動(dòng)讀取、識(shí)別客觀世界,代替人腦進(jìn)行處理,實(shí)現(xiàn)人工智能是該學(xué)科探索方向[1]。近年來(lái)計(jì)算機(jī)視覺(jué)技術(shù)飛速發(fā)展,在醫(yī)學(xué)、工業(yè)等方面應(yīng)用廣泛,如何實(shí)現(xiàn)生活生產(chǎn)過(guò)程自動(dòng)化成為研究焦點(diǎn)[2]。計(jì)算機(jī)具有機(jī)械性特點(diǎn),一方面可快速批量進(jìn)行大數(shù)據(jù)處理,另一方面根據(jù)機(jī)械命令運(yùn)轉(zhuǎn)。因此需將人腦機(jī)能通過(guò)冗長(zhǎng)、復(fù)雜的程序轉(zhuǎn)化為計(jì)算機(jī)機(jī)械性語(yǔ)言[3]。
在工業(yè)生產(chǎn)中,產(chǎn)品質(zhì)檢必不可少,利用計(jì)算機(jī)實(shí)現(xiàn)生產(chǎn)過(guò)程自動(dòng)化是目前工業(yè)生產(chǎn)研究熱點(diǎn)[4]。在工業(yè)質(zhì)檢中,需要檢查產(chǎn)品組成成分?jǐn)?shù)量是否達(dá)標(biāo),但這些組成成分往往粘連嚴(yán)重且背景復(fù)雜,因此粘連單元數(shù)量檢測(cè)成為工業(yè)生產(chǎn)中計(jì)算機(jī)視覺(jué)應(yīng)用難點(diǎn)[5-6]?,F(xiàn)有處理粘連單元的主要方法是通過(guò)分割算法將粘連單元分離開(kāi)來(lái)。葉明等[7]對(duì)粘連顆粒圖像中心點(diǎn)進(jìn)行識(shí)別,利用先驗(yàn)圖像前景輪廓對(duì)圖像進(jìn)行檢測(cè)確定中心點(diǎn);蘆念加等[8]先進(jìn)行粘連物體中心核提取,根據(jù)中心核進(jìn)行極限腐蝕并分割圖像;何磊等[9]利用自適應(yīng)極大值方法對(duì)分水嶺過(guò)分割問(wèn)題進(jìn)行改進(jìn);李永鋒等[10]通過(guò)距離變換改進(jìn)分水嶺算法,對(duì)粘連大米進(jìn)行分割;高揚(yáng)等[11]基于模糊距離變換改進(jìn)了顆粒分割算法;魏瑾等[12]將模糊距離與分水嶺算法相結(jié)合。上述方法研究對(duì)象只有小部分粘連,粘連單元粘連程度較低,且粘連單元之間有空隙,部分算法只適用于特定形狀,因此在實(shí)際生產(chǎn)中實(shí)用性不強(qiáng),并不適用于粘連嚴(yán)重背景復(fù)雜的分割,所以研究粘連單元分割算法具有重要意義。
一般通過(guò)檢驗(yàn)纖維產(chǎn)品組成單元數(shù)量判斷其是否符合生產(chǎn)標(biāo)準(zhǔn)。目前通過(guò)計(jì)算機(jī)進(jìn)行自動(dòng)數(shù)量檢測(cè)主要借助連通域計(jì)數(shù)。該方法先對(duì)待檢測(cè)的圖像進(jìn)行二值化,然后利用種子算法形成多個(gè)連通域,通過(guò)檢測(cè)連通域數(shù)量得到纖維粘連單元數(shù)量。但是在實(shí)際生產(chǎn)中,高清纖維單元照片往往背景復(fù)雜且存在粘連現(xiàn)象,復(fù)雜的背景難以去除且多個(gè)單元粘連容易被錯(cuò)認(rèn)為是1 個(gè)連通域,所以數(shù)量檢測(cè)難度較大。針對(duì)纖維粘連單元數(shù)量檢測(cè)難點(diǎn),本文采用波段運(yùn)算解決背景復(fù)雜問(wèn)題,采用邊緣檢測(cè)與連通域標(biāo)記的方法解決纖維單元粘連問(wèn)題。
工業(yè)生產(chǎn)圖像背景復(fù)雜,后續(xù)操作容易造成很大誤差,因此需將前景從復(fù)雜背景中提取出來(lái),進(jìn)行前景、背景分離,所檢測(cè)的前景往往與背景在顏色或亮度等方面存在較大差異。針對(duì)粘連單元和背景差異,本文利用波段運(yùn)算方法去除背景,通過(guò)觀察各波段圖像之間的關(guān)系進(jìn)行波段間加減運(yùn)算,最終去除背景。
本文實(shí)驗(yàn)圖像是從工廠直接拍攝得到的樣本圖,由于相機(jī)相位及各項(xiàng)校正參數(shù)等可控,所以在進(jìn)行粘連物體數(shù)量檢測(cè)時(shí)可忽略位置、相機(jī)拍攝等客觀條件的影響。
原始實(shí)驗(yàn)圖像如圖1(彩圖掃描OSID 碼可見(jiàn))所示。圖1(a)、圖1(b)分別為同一相機(jī)位拍攝的不同纖維圖像。中間顆粒狀物體為纖維單元,周?chē){(lán)色和白色部分均為雜亂背景。連通域進(jìn)行數(shù)量檢測(cè)是根據(jù)像元亮度值進(jìn)行判斷,將像元在一定亮度范圍之內(nèi)的纖維單元二值化后進(jìn)行數(shù)量檢測(cè)。圖1 中纖維單元和復(fù)雜背景像元范圍沒(méi)有明確界限,甚至是相互交叉的關(guān)系,因而利用連通域進(jìn)行數(shù)量檢測(cè)時(shí)需先將纖維單元與雜亂的背景分離。
Fig.1 Fiber adhesion unit samples圖1 纖維粘連單元樣品
為了找到纖維單元與背景的分離方法,本文利用ENVI軟件統(tǒng)計(jì)R、G、B 3 個(gè)波段圖像元亮度值,其分布如圖2 所示。圖3 是紅光波段圖像,亮度值高的區(qū)域是需檢測(cè)的纖維單元;圖4 是綠光波段圖像,亮度值較高的區(qū)域是纖維單元及其周?chē)尘?;圖5 為藍(lán)光波段,圖中亮度值相對(duì)較高的地方主要是背景部分。本文利用波段運(yùn)算的方法去除背景,從圖2 可以看出,利用紅光波段或綠光波段與藍(lán)光波段作差可得到纖維單元,但對(duì)3 個(gè)波段亮度值分布進(jìn)行分析可知,紅光波段亮度值較高的像元非常多,作差以后容易產(chǎn)生纖維單元,導(dǎo)致整個(gè)區(qū)域高亮、看不出邊緣,而采用綠光波段與藍(lán)光波段做差則能取得較好的檢測(cè)結(jié)果。
Fig.2 Distribution of brightness valus圖2 像元亮度值分布
Fig.3 R-band image圖3 R 波段圖像
Fig.4 G-band image圖4 G 波段圖像
Fig.5 B-band image圖5 B 波段圖像
在進(jìn)行波段運(yùn)算時(shí),在部分背景區(qū)域出現(xiàn)像元值相減之后小于0,本文將這些小于零的值均賦為零。但由于波段運(yùn)算得到的纖維單元圖存在亮度較暗的雜質(zhì),所以將去除背景后的圖像進(jìn)行高斯濾波,以提高纖維單元提取純度。本文運(yùn)用該波段運(yùn)算方法對(duì)40 多個(gè)纖維樣本圖進(jìn)行背景提取,其中4 個(gè)樣本圖背景去除后的結(jié)果如圖6 所示。
經(jīng)過(guò)數(shù)據(jù)預(yù)處理得到的纖維單元仍存在粘連,本文通過(guò)邊緣檢測(cè)得到纖維粘連單元邊界,然后將去除背景纖維單元圖與邊緣檢測(cè)圖做差得到獨(dú)立纖維單元,從而利用連通域與種子算法進(jìn)行檢測(cè)即可得到纖維單元數(shù)量。
Fig.6 Results after background removal圖6 背景去除后的結(jié)果
計(jì)算機(jī)視覺(jué)應(yīng)用中最常用的兩種邊緣檢測(cè)技術(shù)是閾值法與邊緣連接法。在閾值法中,利用鄰域算子對(duì)圖像灰度進(jìn)行不連續(xù)性增強(qiáng)[13]。邊緣檢測(cè)是一種基于物體與背景間灰度或紋理特性中某種不連續(xù)性或突變性的檢測(cè)技術(shù)。目前在計(jì)算機(jī)視覺(jué)中,常用邊緣檢測(cè)算法主要有拉普拉斯邊緣檢測(cè)、基于模板的邊緣檢測(cè)和基于方向梯度法進(jìn)行的邊緣檢測(cè)[14]。本文將3 種算法運(yùn)行結(jié)果進(jìn)行對(duì)比分析,發(fā)現(xiàn)利用方向梯度法對(duì)纖維單元進(jìn)行邊緣檢測(cè)獲得的邊緣更為流暢清晰。
方向梯度法的思想是若邊緣處于梯度方向最大值處,并且預(yù)計(jì)在沿著邊緣梯度垂直方向出現(xiàn)下一個(gè)梯度點(diǎn),即將圖片看作二維函數(shù),每個(gè)x、y 對(duì)應(yīng)1 個(gè)函數(shù)值,每個(gè)像素點(diǎn)均有梯度方向,這樣使邊緣檢測(cè)加入方向性,每個(gè)像素點(diǎn)均有梯度方向,檢測(cè)效果更好[15]。
如式(1)所示,gx表示x 方向梯度變化,gy表示y 方向梯度變化,g 表示梯度變化值,θ表示梯度方向。利用方向梯度法對(duì)去掉背景后的粘連單元進(jìn)行邊緣檢測(cè)得到邊緣,為了增加邊緣連貫性,對(duì)得到的邊緣圖進(jìn)行膨脹,膨脹后的邊緣檢測(cè)結(jié)果如圖7(a)所示,放大后結(jié)果如圖7(b)所示。
Fig.7 Edge detection results圖7 邊緣檢測(cè)結(jié)果
連通域是基于圖像二值化進(jìn)行的。在圖像分割中,圖像投影釋放出潛在和有用信息。圖像分割方法應(yīng)用包括背景分離、故障識(shí)別、疾病預(yù)測(cè)、基于內(nèi)容的圖像檢索、目標(biāo)識(shí)別等。數(shù)字圖像分割是檢測(cè)和識(shí)別給定圖像中目標(biāo)的關(guān)鍵環(huán)節(jié)[16],大多將圖像進(jìn)行二值化,即圖像中像素只有兩種可能,一般默認(rèn)為非黑即白。利用種子算法將二值化后的圖像進(jìn)行連通域檢測(cè),最終對(duì)連通域進(jìn)行計(jì)數(shù)得到連通域數(shù)量,即待測(cè)纖維粘連單元個(gè)數(shù)[17]。
二值圖像指圖像中的每個(gè)像素只有兩種可能的取值或灰度等級(jí)狀態(tài),通常用黑白、B&W表示。圖像二值化是對(duì)圖像進(jìn)行數(shù)據(jù)處理和壓縮的過(guò)程,通過(guò)設(shè)置閾值,將像素值劃分為兩部分,分別賦予兩個(gè)固定的像素值,一般設(shè)置成非黑即白,即二值化后的圖像像素值只有0 和255兩種,二值化后的圖像可反映圖像整體和局部特征,有利于在對(duì)圖像進(jìn)一步處理時(shí),不再涉及像素多級(jí)值,簡(jiǎn)化處理過(guò)程。本文進(jìn)行圖像二值化時(shí)將纖維單元點(diǎn)亮度值標(biāo)記為255,非纖維單元點(diǎn)亮度值標(biāo)記為0[18-19]。
二值化后的圖像需進(jìn)行連通域標(biāo)記,連通域標(biāo)記采用區(qū)域增長(zhǎng)算法[20]。首先,從圖像的第1 個(gè)像素點(diǎn)開(kāi)始遍歷,找到第1 個(gè)像素值為0 作為種子點(diǎn);然后遍歷種子點(diǎn)周?chē)狞c(diǎn),看像素值是否為0,如果為0,則將其合并到種子像素集合中;最后將集合所有像素作為新的種子像素,如此反復(fù),直到再?zèng)]有像素可被合并。在遍歷過(guò)程中所有遍歷過(guò)的像素均被標(biāo)記,此時(shí)種子像素所在整體構(gòu)成1 個(gè)連通域,然后繼續(xù)遍歷其他沒(méi)有標(biāo)記過(guò)的像素,找到新的種子點(diǎn),最終找到所有連通域。
將邊緣檢測(cè)得到的邊緣圖和去除背景后的圖像進(jìn)行做差,可以得到分離的纖維單元,為了獲取更高精度的結(jié)果,對(duì)做差圖進(jìn)行腐蝕,防止某些區(qū)域有細(xì)微連通,得到分離的纖維單元如圖8(a)所示,圖8(b)為左圖中的局部區(qū)域的放大顯示。
Fig.8 Separated fiber units圖8 分離的纖維單元
對(duì)做差得到的纖維單元圖進(jìn)行數(shù)量檢測(cè),數(shù)量檢測(cè)結(jié)果如圖9(彩圖掃描OSID 碼可見(jiàn))所示,每個(gè)紅色框標(biāo)識(shí)檢測(cè)出的1 個(gè)連通域,對(duì)該圖像進(jìn)行計(jì)數(shù)得到的纖維單元個(gè)數(shù)為36,檢測(cè)結(jié)果為33,除個(gè)別單元粘連嚴(yán)重以外,大多數(shù)纖維單元均可檢測(cè),即使亮度較暗的纖維單元也可被全部檢測(cè)出來(lái)。
Fig.9 Quantity test result of fiber units圖9 纖維單元數(shù)量檢測(cè)結(jié)果
采集尺寸為5 472×3 648 的纖維圖像作為實(shí)驗(yàn)數(shù)據(jù)。通過(guò)對(duì)纖維單元進(jìn)行人工計(jì)數(shù)作為檢驗(yàn)數(shù)據(jù)。實(shí)驗(yàn)過(guò)程中,一共選取10 幅圖像進(jìn)行檢測(cè),10 幅圖像相機(jī)位、相機(jī)參數(shù)固定,其纖維單元大小形狀等有微小差異,但并不會(huì)影響檢測(cè)效果。
在實(shí)驗(yàn)過(guò)程中,為了獲取純凈的纖維單元,采用波段運(yùn)算的方法去除背景,通過(guò)分析多幅圖像RGB 波段圖像,最終確定通過(guò)綠光波段和藍(lán)光波段做差,然后過(guò)濾較低亮度的暗像元以去除纖維單元背景。為了將粘連單元分離開(kāi)來(lái),本文采用方向梯度法進(jìn)行邊緣檢測(cè),將去除背景的纖維圖像與檢測(cè)到的邊緣做差,以達(dá)到去除粘連單元邊緣的目的,從而將粘連單元分離,然后利用連通域標(biāo)記算法進(jìn)行纖維單元數(shù)量檢測(cè)。從檢測(cè)結(jié)果可以看出,所有纖維單元均可被提取出來(lái),包括亮度值較暗的纖維單元,整體檢測(cè)結(jié)果檢測(cè)誤差較小,僅極個(gè)別纖維單元在做差后存在粘連現(xiàn)象。
目前進(jìn)行粘連單元分離的方法主要有兩種:①對(duì)圖像進(jìn)行銳化,通過(guò)調(diào)節(jié)對(duì)比度等方法使單元邊緣弱化,中心較亮的部分突出,但是該方法只適用于邊緣和粘連單元亮度值有明顯差異的圖像,且不適用于粘連單元本身亮度值分布不均勻的情況;②對(duì)圖像進(jìn)行分割,主要方法是分水嶺算法,目前對(duì)分水嶺算法的研究較多,但是分割不完全和過(guò)分割問(wèn)題始終沒(méi)有得到解決,而且大多數(shù)算法研究對(duì)象僅為部分粘連單元,對(duì)于粘連嚴(yán)重的單元始終沒(méi)有很好的分割方法。
進(jìn)行粘連單元數(shù)量檢測(cè)的關(guān)鍵是將粘連單元分成獨(dú)立的連通域,然后對(duì)所有連通域進(jìn)行計(jì)數(shù),最終得到的數(shù)量即為粘連單元個(gè)數(shù)。為把粘連單元變?yōu)楠?dú)立單元可將粘連的模糊邊緣變清晰,從而使粘連單元分離開(kāi)來(lái)。本文基于該思想直接進(jìn)行邊緣檢測(cè),將邊緣提取后去除,從而分離粘連單元。本文利用已發(fā)展較成熟的邊緣檢測(cè)算法,針對(duì)被檢測(cè)物體粘連程度較高的特點(diǎn),采用方向梯度法進(jìn)行邊緣檢測(cè),同時(shí)沿x、y 方向邊緣進(jìn)行檢測(cè),最后對(duì)檢測(cè)結(jié)果進(jìn)行合成。方向梯度法是基于物體與背景間灰度或紋理特性上某種不連續(xù)性或突變型的一種檢測(cè)技術(shù),通過(guò)對(duì)亮度值發(fā)生突變的區(qū)域檢測(cè)得到邊緣,可有效獲取邊緣信息,對(duì)于不發(fā)生突變的暗像元區(qū)域不會(huì)發(fā)生誤判,還可完整檢測(cè)出粘連程度嚴(yán)重的整個(gè)區(qū)域邊緣,實(shí)驗(yàn)中檢測(cè)多幅圖像均獲得了完整的邊緣。通過(guò)將粘連單元前景圖減去其邊緣檢測(cè)結(jié)果可得到獨(dú)立的檢測(cè)單元,最后基于連通域標(biāo)記的算法對(duì)纖維單元進(jìn)行數(shù)量檢測(cè)。
本文提出的粘連單元數(shù)量檢測(cè)方法在對(duì)粘連單元分割研究的基礎(chǔ)上,針對(duì)傳統(tǒng)分水嶺圖像分割缺點(diǎn),對(duì)圖像分割進(jìn)行有效優(yōu)化。
傳統(tǒng)圖像分割方法基于分水嶺算法。該算法將圖像中的邊緣轉(zhuǎn)化成“山脈”,將均勻地區(qū)轉(zhuǎn)化為“山谷”,其基本思想是把圖像看作是測(cè)地學(xué)上的拓?fù)涞孛?,圖像中每一點(diǎn)像素灰度值表示該點(diǎn)海拔高度,每一個(gè)局部極小值及其影響區(qū)域稱為集水盆,而集水盆邊界則形成分水嶺。分水嶺算法根據(jù)找到兩個(gè)局部極小值區(qū)域的交界線求得邊界,所得邊緣是一條由極大值點(diǎn)組成的連貫曲線。但是在實(shí)際生產(chǎn)生活中,物體之間的粘連并不是簡(jiǎn)單的一條線,往往是由很多最大值點(diǎn)組成的帶狀結(jié)構(gòu),此時(shí)利用分水嶺算法進(jìn)行邊緣檢測(cè)無(wú)法找到可連成線的極大值點(diǎn),因此無(wú)法得到準(zhǔn)確的邊界檢測(cè)結(jié)果。
本文提出基于方向梯度法的邊緣檢測(cè)算法,圖像像素值變化情況可由像素值分布梯度反映,給定連續(xù)的圖像f(x,y),其方向倒數(shù)在邊緣方向上取得局部最大值。圖像中1 點(diǎn)邊緣被定義為1 個(gè)矢量,模為當(dāng)前點(diǎn)最大的方向?qū)?shù),方向?yàn)樵摻嵌却淼姆较?。通常只考慮模大小而忽略其方向,但實(shí)際情況中邊緣一般是連續(xù)變化的點(diǎn)。分水嶺算法可求取兩個(gè)局部最小值中間的極大值點(diǎn)(標(biāo)記為邊界點(diǎn)),但實(shí)際生產(chǎn)中邊界往往不是由點(diǎn)連成的線,而是細(xì)長(zhǎng)的條帶狀結(jié)構(gòu),所以該方法在實(shí)際生產(chǎn)中并不適用。利用方向梯度法相對(duì)于分水嶺算法進(jìn)行的邊緣提取既可兼顧像素點(diǎn)變化大小又能考慮像素點(diǎn)方向變化,從而提高邊緣檢測(cè)準(zhǔn)確度。
本文采用方向梯度法進(jìn)行邊緣檢測(cè),該方法是目前公認(rèn)的可較好獲取圖像邊緣的檢測(cè)算法。但目前進(jìn)行粘連單元數(shù)量檢測(cè)時(shí)大都采用將粘連單元分割開(kāi)來(lái)再計(jì)數(shù)的方法,分割算法僅針對(duì)粘連程度較輕且邊界清晰明顯的圖像有較好的分割效果,運(yùn)用現(xiàn)有算法處理粘連程度較嚴(yán)重的圖像時(shí)存在嚴(yán)重的過(guò)分割或分割不足等問(wèn)題,往往產(chǎn)生較大的影像。實(shí)驗(yàn)證明,本文方法可有效解決過(guò)分割或者分割不足的問(wèn)題,精確分離后的計(jì)數(shù)誤差在10%以內(nèi),效果有明顯改進(jìn),在工業(yè)生產(chǎn)質(zhì)檢中具有較強(qiáng)的實(shí)用性。
為了將粘連單元分離,本文采用邊緣檢測(cè)法,但是該方法僅適用于單元不太小的情況,如果粘連單元太小,則去掉邊緣后單元在濾波過(guò)程中可能被過(guò)濾掉,因此在盡可能保證邊緣檢測(cè)效果好的情況下,如何保證較小粘連單元不被過(guò)濾掉,是下一步研究?jī)?nèi)容。