張文飛 韓建海,2* 郭冰菁,2 李向攀,2 劉賽賽
1(河南科技大學(xué)機(jī)電工程學(xué)院 河南 洛陽 471003)2(河南省機(jī)器人與智能系統(tǒng)重點(diǎn)實(shí)驗(yàn)室 河南 洛陽 471003)3(鄭州科技學(xué)院 河南 鄭州 450000)
當(dāng)前,我國的水果品質(zhì)已經(jīng)接近國際先進(jìn)水平,然而水果市場的國際競爭力仍然很低,主要原因就在于我國的水果產(chǎn)后處理能力不足,其中像上線、清洗、烘干等處理比較容易解決,而水果分揀技術(shù)才是最核心的關(guān)鍵技術(shù)。但是我國目前水果檢測和分揀技術(shù)仍比較落后,致使那些接近國際品質(zhì)的水果沒有被真正地分揀出來[1]。
目前,我國是世界上最大的原料藥生產(chǎn)國和出口國,由于需求巨大,醫(yī)藥生產(chǎn)單純靠人工勞動力無法滿足,因此在很多醫(yī)藥生產(chǎn)線上出現(xiàn)了像機(jī)器人這樣的自動化設(shè)備來代替人工完成一些生產(chǎn)工序,比如:醫(yī)藥生產(chǎn)、藥品分揀、包裝等,這些設(shè)備大都配有視覺裝置,通過圖像信息使自動化設(shè)備高效準(zhǔn)確地完成作業(yè)任務(wù)。然而藥品種類繁多,擺放雜亂無章,視覺機(jī)器人在分揀時(shí)容易出現(xiàn)漏撿、錯(cuò)撿的情況,造成的后果嚴(yán)重。所以不管是水果還是醫(yī)藥分揀,分揀的精度要求都是很高的,而分割又是分揀的核心一環(huán),能否精確地將圖像分割出來將直接影響后續(xù)分揀結(jié)果的好壞。
圖像分割就是將圖像中有意義或者感興趣的目標(biāo)區(qū)域提取出來,用于圖像的后續(xù)處理[2]。但是由于設(shè)備或人為原因,以及圖像在捕獲、傳輸?shù)倪^程中容易受到外界環(huán)境的影響,會使得到的圖像質(zhì)量降低,能否將目標(biāo)物體從圖像中準(zhǔn)確分割出來將會直接影響后續(xù)圖像處理的效果[3-4]。圖像分割中比較難解決的問題就是圖像的粘連性問題,在進(jìn)行多種類水果和藥盒無序分割時(shí),若能解決水果和藥盒之間的粘連性問題,將會很大程度上提高水果和藥盒的分揀效率與檢測精度。針對不同粘連程度的圖像分割問題,研究者們提出了各種分割算法及其改進(jìn)算法?;谛螒B(tài)學(xué)操作的圖像分割算法具有簡單、快速等特點(diǎn),適用于簡單圖像的分割,但用于對粘連程度高的圖像進(jìn)行分割時(shí),效果并不理想[5-6]?;趫D論的圖像分割算法會隨著圖像分辨率的提升而導(dǎo)致圖的存儲空間大、構(gòu)圖計(jì)算量大、計(jì)算速度慢等問題[7]?;诎键c(diǎn)匹配的圖像分割算法分割效果依賴于能否正確匹配凹點(diǎn),然而對于那些粘連程度比較高的圖像,凹點(diǎn)是很難得到有效匹配的,也會導(dǎo)致分割不精確[8-9]。相對于其他圖像分割算法,分水嶺算法[10-11]對微弱邊緣比較敏感,不容易丟失邊緣信息,這也是解決粘連性問題的關(guān)鍵,但同時(shí)也會造成圖像過分割的情況,影響分割精度。目前針對分水嶺過度分割的問題,常見的解決方案有兩種:一種是利用給分割圖像制作一個(gè)掩膜標(biāo)記來作為種子點(diǎn)引導(dǎo)分水嶺分割;另一種是對分水嶺分割后的圖像利用一些區(qū)域合并準(zhǔn)則合并相似區(qū)域。本文結(jié)合形態(tài)學(xué)運(yùn)算和歐氏距離變換來改進(jìn)傳統(tǒng)的分水嶺算法,用于分割粘連程度高的圖像。實(shí)驗(yàn)結(jié)果表明,該算法在對于粘連程度高的多種類混合水果和藥盒無序分割時(shí)具有很好的分割效果。
1.1.1顏色特征
水果的種類多種多樣,由于地域環(huán)境,生長時(shí)接收光照情況的不同,同一種水果也會出現(xiàn)很大的顏色差異,但主要還是以黃色、青色、紅色為主。這些水果有些是純色的,有些是混合顏色搭配的。藥盒的種類更是多種多樣,不同廠家有不同的設(shè)計(jì)風(fēng)格,又加上藥盒本身上面的顏色大都以混合顏色為主,所以對圖像的分割造成了較大干擾。
1.1.2幾何特征
水果的形狀輪廓主要以圓形和橢圓形為主,藥盒的形狀輪廓主要以矩形為主,本文統(tǒng)一用圖像輪廓外接圓來衡量其大小。實(shí)驗(yàn)主要分割外接圓大小在25 cm2以內(nèi)的水果,長寬在16 cm×12 cm,也就是外接圓大小為314 cm2以內(nèi)的藥盒。水果原圖和藥盒原圖如圖1所示。
本文提出了一種結(jié)合形態(tài)學(xué)運(yùn)算和距離變換的改進(jìn)分水嶺分割方法。首先對圖像進(jìn)行前景提取[12-13],得到目標(biāo)圖像,然后利用形態(tài)學(xué)運(yùn)算去除噪聲,接著制作掩膜標(biāo)記,進(jìn)行分水嶺分割,這樣可以在保證分割準(zhǔn)確率的前提下大大提高粘連圖像整體的分割效率。具體實(shí)現(xiàn)流程如下:
Step1輸入粘連圖像A,背景圖像B,通過求取|A-B|≤閾值,提取前景圖像P;
Step2輸入圖像P,用形態(tài)學(xué)運(yùn)算去除多余的背景噪聲,輸出圖像G;
Step3輸入圖像G,求取距離圖像D,進(jìn)行連通區(qū)域分析,得到標(biāo)記圖像M;
Step4結(jié)合形態(tài)學(xué)圖像G,距離圖像D,連通區(qū)域標(biāo)記圖像M,制作掩膜標(biāo)記,進(jìn)行分水嶺分割。
對于粘連的水果或者藥盒圖像,由于圖像中目標(biāo)區(qū)域顏色和形狀都很類似,若是用一般的濾波方法,比如高斯濾波、中值濾波,雖然能夠得到一定的平滑圖像,實(shí)現(xiàn)去除噪聲的效果,但是對于粘連程度高的圖像來說,在降噪的同時(shí)會使得部分邊緣信息丟失。而遞歸雙邊濾波算法是一種高通濾波器,能夠?yàn)V除掉圖像中的低頻信息,銳化像輪廓邊緣這樣的高頻圖像信息。相比傳統(tǒng)雙邊濾波算法,遞歸雙邊濾波算法對值域?yàn)V波器核進(jìn)行了約束,通過累積從像素坐標(biāo)(i,j)到像素坐標(biāo)(k,l)路徑上相鄰像素值的鄰近性來實(shí)現(xiàn)[14]。
從像素點(diǎn)(i,j)到像素點(diǎn)(k,l)有很多路徑,本算法中采取的遞歸路徑是先對像素點(diǎn)進(jìn)行水平方向遞歸,在此基礎(chǔ)上再對像素點(diǎn)進(jìn)行垂直方向遞歸。遞歸雙邊濾波具體實(shí)現(xiàn)如下:
(1)
(2)
ω(i,j,k,l)=r(i,j,k,l)×d(i,j,k,l)
(3)
式(1)是遞歸雙邊濾波算法的值域核,表示從像素(i,j)到(k,l)相似像素值的遞歸;式(2)是遞歸雙邊濾波算法空域核,表示從像素(i,j)到(k,l)的空間域系數(shù);式(3)是表示兩個(gè)像素點(diǎn)的加權(quán)系數(shù),取決于空域核和值域核的乘積。由于對值域核的遞歸約束,使得粘連圖像中同一目標(biāo)區(qū)域的像素彼此的依賴性更強(qiáng),圖像的粘連處邊緣更加突出。
形態(tài)學(xué)運(yùn)算是圖像處理中常用的一種數(shù)學(xué)工具。其基本思想是先構(gòu)建一個(gè)結(jié)構(gòu)元素,讓其在圖像中移動,與圖像中的像素進(jìn)行交、并集等集合運(yùn)算[15-16]。本文用S(x)代表結(jié)構(gòu)元素,(x,y)代表圖像中的像素點(diǎn),對于形態(tài)學(xué)中常用的腐蝕、膨脹、開運(yùn)算、閉運(yùn)算四種運(yùn)算定義如下:
腐蝕:E=X⊙S={x,y|Sxy?X}
(4)
膨脹:E=X⊕S={x,y|Sxy∩A!=?}
(5)
開運(yùn)算:O=(X⊙E)⊕S
(6)
閉運(yùn)算:C=(X⊕S)⊙S
(7)
為了后續(xù)圖像精確分割,首先對粘連圖像進(jìn)行前景提取處理,本文采取的方式是先對前景信息進(jìn)行粗提取,再進(jìn)行精提取。具體實(shí)現(xiàn)方式如下:先采取一幅無前景圖像的背景圖像,然后將粘連圖像與背景圖像灰度化,進(jìn)行相減,與設(shè)定的閾值比較,來達(dá)到圖像前景信息的粗提取,這樣就能去除大部分的背景圖像信息,但是會有一些背景信息成為噪聲點(diǎn);接著再通過形態(tài)學(xué)運(yùn)算,像處理傳統(tǒng)噪聲一樣,來進(jìn)行降噪處理,進(jìn)行前景精提取,就能得到比較理想的前景信息。如圖2、圖3所示。
對于水果和藥盒這兩種粘連圖像,通過實(shí)驗(yàn)測試,若是選取3×3的結(jié)構(gòu)元素,則對圖像腐蝕的程度會較低,達(dá)不到所需的去除背景噪聲的效果;若是選取11×11或者更大的結(jié)構(gòu)元素,會出現(xiàn)粘連圖像邊緣被腐蝕掉的情況。最終選取5×5的矩形內(nèi)核結(jié)構(gòu)元素,先對圖像進(jìn)行腐蝕操作,去除粘連圖像中的一些離散噪聲,收縮圖像邊界,再選取7×7的矩形內(nèi)核結(jié)構(gòu)元素對圖像進(jìn)行開運(yùn)算,進(jìn)一步平滑粘連物體邊界的同時(shí)不明顯改變其面積大小,就能將粘連圖像的前景信息給提取出來。
2.3.1距離變換的原理
在二維空間中,距離圖像是對二值圖像處理操作中常用的手段,其實(shí)質(zhì)是將圖像中每個(gè)非零像素與距其最近的零點(diǎn)像素的距離來作為距離圖像相對應(yīng)位置的像素[17-18]。距離圖像可以使物體中心位置區(qū)域的像素更加突出,越靠近中心位置,像素灰度值越高,在距離圖像中表現(xiàn)得越高亮;越靠近邊界,像素值灰度值越低,圖像表現(xiàn)得越晦暗。
2.3.2距離變換的實(shí)現(xiàn)
本實(shí)驗(yàn)采用歐氏距離變換,將一個(gè)大小為M×N的二值圖像用一個(gè)二維數(shù)組AM×N=[aij]來表示,aij=1表示前景像素點(diǎn),用aij=0表示背景像素點(diǎn)。假設(shè)背景像素集合表示為:B={(x,y)|aij=0},前景像素集合表示為:F={(x,y)|aij=1},則對集合A里面所有像素點(diǎn)(i,j)進(jìn)行式(8)所示的距離變換;式(9)解釋了歐氏距離計(jì)算方法。
dij=min{DE[(i,j),(x,y)],(x,y)∈B}
(8)
(9)
對水果和藥盒圖像做歐氏距離變換,得到距離圖像,根據(jù)距離圖像中像素距離背景像素越遠(yuǎn)圖像越亮的特性,可以很容易確定粘連圖像中超過某一閾值的高亮像素的大致位置。通過距離變換的水果和藥盒圖像如圖4所示。
連通區(qū)域指圖像中位置相鄰并且像素值相同的像素點(diǎn)組成的圖像區(qū)域。本文采用的是基于種子填充法的連通區(qū)域分析,具體實(shí)現(xiàn)步驟如下:
1) 逐行掃描圖像,直到當(dāng)前像素點(diǎn)為前景像素,即P(x,y)=1。
(1) 將P(x,y)作為種子,并賦予其一個(gè)標(biāo)簽label,然后再將與該棧頂像素值相同的鄰域像素都壓入棧中;
(2) 彈出棧頂像素,賦予其相同的label,然后再將與該棧頂像素值相同的所有鄰域像素都壓入棧中;
(3) 重復(fù)步驟(2),直到棧內(nèi)元素為空,便找到了圖像P中的一個(gè)連通區(qū)域,該區(qū)域內(nèi)的像素值被標(biāo)記為label;
2) 重復(fù)步驟1),直到掃描結(jié)束,就可得到圖像P的所有連通區(qū)域。
分水嶺分割精度的高低取決于掩膜標(biāo)記制作的好壞。本文掩膜標(biāo)記的制作是結(jié)合形態(tài)學(xué)運(yùn)算、距離圖像和連通區(qū)域分析標(biāo)記圖像來共同制定的。具體實(shí)現(xiàn)為將形態(tài)學(xué)處理后的圖像與距離圖像二值化結(jié)果做差值運(yùn)算,然后遍歷差值后的圖像像素,找出非零像素,并在連通區(qū)域標(biāo)記圖對應(yīng)位置做上標(biāo)記,即得到分水嶺掩膜標(biāo)記,如圖5所示。
改進(jìn)后的分水嶺算法實(shí)現(xiàn)過程大致為:先用遞歸雙邊濾波算法對彩色圖像濾波,然后對圖像進(jìn)行灰度化、二值化、形態(tài)運(yùn)算等操作,最后制作掩膜標(biāo)記(mask)指導(dǎo)分水嶺分割圖像。改進(jìn)后分水嶺算法分割流程如圖6所示。
本實(shí)驗(yàn)算法是在Ubuntu 16.04操作系統(tǒng)下,基于Clion IDE,采用C++語言進(jìn)行編寫和測試,實(shí)驗(yàn)數(shù)據(jù)來源于實(shí)驗(yàn)室利用kinect v2采集的混合水果數(shù)據(jù)和藥盒數(shù)據(jù)。圖7-圖11列出了采用傳統(tǒng)分水嶺分割算法、圖切割算法和結(jié)合距離變換的分水嶺算法對水果和藥盒圖像的分割效果圖。
從圖8(a)、圖9(a)、圖10(a)、圖11(a)可以看出,不管是水果數(shù)據(jù)還是藥盒數(shù)據(jù),傳統(tǒng)分水嶺算法分割的效果都不是很理想,過分割現(xiàn)象比較嚴(yán)重,主要原因是傳統(tǒng)分水嶺算法的分割過程是比較盲目的,易受噪聲點(diǎn)的影響,產(chǎn)生過多的極小值點(diǎn),在進(jìn)行像素排序和模擬浸沒的過程中,誤把噪聲點(diǎn)區(qū)域當(dāng)成盆地,造成圖像過度分割。從圖8(b)、圖9(b)、圖10(b)、圖11(b)可以看出,圖切割算法的分割效果要比傳統(tǒng)的分水嶺算法要好得多,能夠分割出粘連圖像的大致輪廓,但存在的問題是很多目標(biāo)輪廓之間是連通的,也會造成粘連分割定位不準(zhǔn)確。從圖8(c)、圖9(c)、圖10(c)、圖11(c)可以看出,相比傳統(tǒng)分水嶺算法和圖切割算法而言,結(jié)合距離變換的分水嶺算法,對于種類比較多粘連程度比較大的目標(biāo)物體分割精度提升很多。雖然此算法需要制作掩膜標(biāo)記來引導(dǎo)分水嶺分割目標(biāo)物體,但是卻在制作掩膜標(biāo)記的時(shí)候,拋開了傳統(tǒng)的將圖像經(jīng)過預(yù)處理再進(jìn)行邊緣檢測的結(jié)果作為掩膜標(biāo)記的思想,通過對圖像做距離變換來突出目標(biāo)物體的粘連部分,再對圖像進(jìn)行連通區(qū)域分析,根據(jù)形態(tài)學(xué)圖像、距離變換圖像,連通區(qū)域標(biāo)記圖像來制作分水嶺的掩膜標(biāo)記。這種掩膜標(biāo)記制作方法在很大限度上緩解了分水嶺掩膜標(biāo)記制作不精確造成的過分割或欠分割的問題,對于水果和藥盒的粘連圖像分割具有很好的分割效果。
(a) 水果原圖 (b) 藥盒原圖圖1 粘連圖像原圖
(a) 前景粗提取 (b)前景精提取圖2 水果圖像前景提取
(a) 前景粗提取 (b) 前景精提取圖3 藥盒圖像前景提取
(a) 水果距離圖像 (b) 藥盒距離圖像圖4 粘連圖像的距離圖像
(a) 水果圖像掩膜標(biāo)記 (b) 藥盒圖像掩膜標(biāo)記圖5 粘連圖像的掩膜標(biāo)記圖像
圖6 改進(jìn)算法流程
(a) 水果原圖 (b) 藥盒原圖圖7 水果、藥盒原圖
(a) 傳統(tǒng)分水嶺 (b) 圖切割算法 (c) 改進(jìn)分水嶺圖8 水果分割算法比較
(a) 傳統(tǒng)分水嶺 (b) 圖切割算法 (c) 改進(jìn)分水嶺圖9 分割圖像輪廓外接圓效果圖
(a) 傳統(tǒng)分水嶺 (b) 圖切割算法 (c) 改進(jìn)分水嶺圖10 藥盒分割算法比較
(a) 傳統(tǒng)分水嶺 (b) 圖切割算法 (c) 改進(jìn)分水嶺圖11 藥盒分割效果圖
為了進(jìn)一步驗(yàn)證本文算法的優(yōu)勢,又分別使用500幅隨意混合的水果圖像和500幅隨意混合的藥盒圖像來驗(yàn)證傳統(tǒng)分水嶺分割算法、圖分割算法和改進(jìn)的分水嶺算法的分割正確率。分割正確率計(jì)算如下:
(10)
為了直觀地比較三種分割算法在圖像分割時(shí)間效率上的差別,以傳統(tǒng)分水嶺分割算法運(yùn)算時(shí)間為標(biāo)準(zhǔn)進(jìn)行對比,計(jì)算這三種算法的歸一化運(yùn)算時(shí)間:
(11)
三種分割算法實(shí)驗(yàn)結(jié)果正確率、歸一化運(yùn)算時(shí)間如表1、表2所示。
表1 三種分割算法分割水果結(jié)果比較
表2 三種分割算法分割藥盒結(jié)果比較
由表1可以看出,傳統(tǒng)分水嶺算法分割水果圖像時(shí)沒有引導(dǎo),分割比較盲目,每次分割都要進(jìn)行像素排序,尋找種子點(diǎn),再進(jìn)行“模擬浸水”,比較費(fèi)時(shí),還容易受噪聲點(diǎn)的影響,分割準(zhǔn)確率也比較低,約10%左右。相比而言,圖切割算法和改進(jìn)后的分水嶺算法分割時(shí),效果要好很多,其中:圖切割的分割時(shí)間約縮短至傳統(tǒng)分水嶺算法的三分之一,分割準(zhǔn)確率達(dá)到了65.4%;本文改進(jìn)后的分水嶺分割算法的分割時(shí)間約為傳統(tǒng)分水嶺算法的五分之一,分割準(zhǔn)確率達(dá)到了96.4%。
由表2可以看出,在對藥盒圖像進(jìn)行分割時(shí),傳統(tǒng)分水嶺算法由于分割時(shí)的局限性,分割時(shí)間比較高,分割準(zhǔn)確率也是比較低的,約14.6%。而圖切割算法對于藥盒圖像分割相比傳統(tǒng)分水嶺算法在分割時(shí)間與分割準(zhǔn)確率上有了很大改善,時(shí)間縮短為傳統(tǒng)分水嶺的近三分之一,分割準(zhǔn)確率也達(dá)到了74.8%。本研究中改進(jìn)的分水嶺分割算法相比前兩種分割算法,在時(shí)間和分割準(zhǔn)確率上都有很大提升,分割準(zhǔn)確率更是達(dá)到了97.2%。
本文在傳統(tǒng)分水嶺算法的基礎(chǔ)上,闡述了一種結(jié)合距離變換的標(biāo)記分水嶺算法,主要用于解決粘連程度比較大的目標(biāo)物體的分割,在很大程度上改善了分水嶺算法造成的過分割和欠分割問題,得到比較理想的分割效果。
本文改進(jìn)后的分水嶺算法,在水果和藥盒圖像的實(shí)驗(yàn)中,分割準(zhǔn)確率達(dá)到97.2%,分割時(shí)間能穩(wěn)定在90 ms左右。
由于水果種類和藥盒種類比較多,后期還需要進(jìn)一步改善算法,以便更適用于工業(yè)或醫(yī)藥等行業(yè)的應(yīng)用。