黃 靜,蔣澤寧
(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
隨著計(jì)算機(jī)視覺技術(shù)的蓬勃發(fā)展,基于視覺傳感的自動(dòng)化焊接技術(shù)日漸成為智能焊接領(lǐng)域的一個(gè)研究熱點(diǎn)。焊縫圖像處理是焊縫自動(dòng)跟蹤的一個(gè)較為重要的環(huán)節(jié),其主要任務(wù)是對(duì)視覺傳感器所采集的圖像信息進(jìn)行加工處理, 以提取焊縫圖像的特征信息,而圖像二值化在此過程中起著關(guān)鍵性的作用。二值化閾值的選取至關(guān)重要,過高或者過低都會(huì)對(duì)焊縫邊緣提取任務(wù)造成不利的影響。
圖像二值化過程的主要任務(wù)就是把焊縫的灰度圖像變成取值為0和1的二值圖像[1]。對(duì)一幅焊縫灰度圖像進(jìn)行二值化操作時(shí),首先要選取合適閾值,把所有高于閾值灰度的像素點(diǎn)替換成1,所有低于閾值的像素點(diǎn)替換成0。但實(shí)際操作中,由于不同圖像的灰度基值不同,同一幅圖像中各部分的明暗程度不同,因此閾值的設(shè)定很困難。對(duì)圖像進(jìn)行二值化處理,一方面對(duì)圖像信息進(jìn)行了壓縮,保留了焊縫的主要信息,節(jié)約了存儲(chǔ)空間,有利于計(jì)算機(jī)存儲(chǔ)和處理;另一方面還可以去除大量的粘連,為焊縫特征的提取和匹配做準(zhǔn)備。
國(guó)內(nèi)學(xué)者對(duì)經(jīng)典的Otsu算法進(jìn)行了研究改進(jìn),申俊琦等通過最小二乘法建立圖像閾值與焊縫激光帶區(qū)域灰度平均值的直線回歸方程,從而得到焊縫圖像二值化處理的最佳閾值[2];王興東等提出了一種基于區(qū)域優(yōu)化的等厚對(duì)接焊縫圖像二值化方法[3];齊繼陽(yáng)等提出了一種新的改進(jìn)的Otsu法,在考慮類間方差和類內(nèi)方差對(duì)圖像分割效果影響的基礎(chǔ)上,用方差信息代替均值信息,構(gòu)建了焊接圖像分割閾值算法[4];徐建東等提出了基于最小二乘法擬合的Otsu快速圖像分割法等[5]。
傳統(tǒng)的Otsu閾值化算法對(duì)信噪比較低的圖像分割效果不理想,本文提出將傳統(tǒng)Otsu方法與遺傳算法相結(jié)合,通過灰度拉伸增大背景與前景之間的灰度值分布,結(jié)合遺傳算法,通過編碼、選擇、交叉、變異等操作對(duì)傳統(tǒng)的類間方差法進(jìn)行優(yōu)化,并將該方法試驗(yàn)于焊縫圖像。實(shí)際焊縫圖像試驗(yàn)結(jié)果證明了該方法的有效性,可以更加準(zhǔn)確地提取出適合焊縫圖像的二值化閾值,更利于后續(xù)的圖像處理操作。
針對(duì)灰度化后背景灰度值與前景相近的問題,利用遺傳算法選擇兩個(gè)灰度拉伸因子,增大背景與前景的區(qū)分度[6]。為了獲得可靠的二值化閾值,綜合考慮類間方差與類內(nèi)方差。
灰度拉伸是一種改變圖像對(duì)比度的方法,通過某種映射關(guān)系,將原圖像中的灰度值映射為另一個(gè)灰度值,從而達(dá)到拉伸或壓縮整個(gè)圖像灰度分布的目的。當(dāng)環(huán)境光照強(qiáng)度較大時(shí),通過攝像頭拍攝的焊縫圖像灰度化后有相當(dāng)多的背景灰度值與前景相似,使二值化閾值變得難以選取。通過灰度拉伸,可以增大背景與前景之間的灰度值分布[7]?;叶然暮缚p圖像按灰度強(qiáng)度可以分為3個(gè)部分,高值的焊縫區(qū)域,有較大差異的低值背景區(qū)域,接近焊縫灰度值的中值背景區(qū)域。因此,灰度拉伸的關(guān)鍵在于中值灰度區(qū)域。根據(jù)區(qū)域劃分的特點(diǎn),本文選用了sigmoid函數(shù)作為灰度變換函數(shù)。sigmoid函數(shù)的基本表達(dá)如式(1):
(1)
從公式(1)可以看出sigmoid是一個(gè)單調(diào)遞增函數(shù),值分布在0~1之間,函數(shù)圖像如圖1所示。
圖1 sigmoid函數(shù)圖像
可以發(fā)現(xiàn),sigmoid函數(shù)在變量為0附近區(qū)域值變化非常劇烈,區(qū)域外函數(shù)值變化平穩(wěn),接近常數(shù)。sigmoid函數(shù)分布符合焊縫灰度拉伸的基本要求,本文將灰度圖像的最小值與最大值先映射到-10~10區(qū)間,再通過sigmoid函數(shù)拉升到0~255。初次映射公式(2)如下:
(2)
其中,maxP、minP分別為最大灰度值和最小灰度值,i為輸入的灰度值。
通過上述方式進(jìn)行灰度拉伸還存在一個(gè)問題,如果x(i)集中在0的單側(cè)(左側(cè)或右側(cè)),會(huì)造成拉伸后的灰度值大概率被歸結(jié)于前景或背景,影響閾值選取。因此,引入拉伸因子C調(diào)節(jié)sigmoid函數(shù)在變量值0附近的變化率,將變量x與C相乘,根據(jù)x與0的大小關(guān)系,選擇不同的C值。拉伸因子不同取值下,sigmoid函數(shù)圖像如圖2所示。
圖2 不同拉伸因子取值下的sigmoid函數(shù)圖像
從圖2可以發(fā)現(xiàn),隨著C值的變大,sigmoid函數(shù)圖像變得更加陡峭,這意味著調(diào)節(jié)拉伸因子,可以改變?cè)叶葏^(qū)間的拉伸變化率。本文根據(jù)公式(2)確定x的值后,對(duì)x>0與x<0分別選擇不同的拉伸因子。灰度拉伸的表達(dá)如式(3):
(3)
2.2.1 類間方差
類間方差也稱作大津法(OTSU),由日本學(xué)者大津提出。大津法的原理非常簡(jiǎn)單,但效果優(yōu)異,在數(shù)字圖像處理領(lǐng)域得到廣泛應(yīng)用。根據(jù)圖像的灰度分布特性,大津法將圖像分為背景和前景兩部分,利用方差度量圖像灰度分布的均勻性[8]。背景與前景之間的方差越大,表明兩者之間的差異程度越高,發(fā)生錯(cuò)分的概率越小。類間方差的求解利用了灰度直方圖,假定分割閾值為Th,將小于該值的灰度劃分為背景,大于的則劃分為前景,每個(gè)灰度級(jí)占整幅圖像的比例為式(4):
(4)
其中,hist(i)表示灰度為i的像素值個(gè)數(shù)。
由此可以計(jì)算出前景與背景的占比及均值,如式(5)~(8):
(5)
(6)
(7)
(8)
根據(jù)類間方差的定義,可以得到公式(9):
(9)
根據(jù)公式(9),遍歷0~255個(gè)灰度級(jí),就能夠得出最大的類間方差,此時(shí)的分割閾值即為所求結(jié)果。
2.2.2 類內(nèi)方差
最大類間方差旨在盡可能的分離背景與前景,評(píng)判標(biāo)準(zhǔn)僅考慮目標(biāo)與背景的距離,但是在灰度值相近區(qū)域可能發(fā)生灰度值誤判的情況[9]。為了減少這種情況的發(fā)生,引入類內(nèi)方差。類內(nèi)方差關(guān)注的是目標(biāo)的內(nèi)聚性,如果灰度值與目標(biāo)的中心距離較近,則有更大的概率屬于該類,這意味著目標(biāo)有著較小的類內(nèi)方差。定義類內(nèi)方差的表達(dá)如式(10):
(10)
至此,綜合考慮類間方差與類內(nèi)方差,可以得到閾值分割的評(píng)估函數(shù)(11):
(11)
該評(píng)估函數(shù)與類間方差成正比,類內(nèi)方差成反比,符合上述分析。
達(dá)爾文的生物進(jìn)化論以及其遺傳規(guī)律指出生物的進(jìn)化是一個(gè)依照群體遺傳與自然選擇機(jī)制結(jié)合的過程。其中有利的基因?qū)⑦z傳給下一代,而不利的基因?qū)⒃诖撕蟮母嬷兄饾u消亡。遺傳算法就是模擬生物進(jìn)化過程中自然選擇和自然遺傳機(jī)制的一種廣度優(yōu)化搜索算法[10-12]。
利用遺傳算法找出兩個(gè)拉伸因子以及分割閾值的實(shí)現(xiàn)過程:
(1)編碼。由于遺傳算法不能直接處理解空間的解數(shù)據(jù),染色體必須采用二進(jìn)制字符串編碼,圖像灰度值的取值范圍在0~255之間,所以采用00 000 000~11 111 111八位二進(jìn)制代碼代表圖像灰度值?;叶壤煲蜃覥值的取值范圍在0~32之間,根據(jù)變量x的正負(fù)分成兩種情況,所以采用十位二進(jìn)制代碼表示,其中高5位為變量x>0條件下的拉伸因子C1,低5位為變量x<0條件下的拉伸因子C2。將灰度因子和灰度值結(jié)合,共計(jì)18位二進(jìn)制代碼來表示,前5位、中5位和后9位分別表示拉伸因子C1、拉伸因子C2和圖像灰度值。
(2)初始化群體。在[1,32]之間隨機(jī)生成一個(gè)整數(shù)C1,在[1,C1]之間隨機(jī)生成一個(gè)整數(shù)C2,在[0,255]之間隨機(jī)生成一個(gè)整數(shù)Thres,重復(fù)上述步驟n次,生成n組(C1,C2,Thres),并將其以二進(jìn)制的形式編碼成18為二進(jìn)制碼,初始化群體。
(3)評(píng)價(jià)。評(píng)估種群中個(gè)體適應(yīng)度,首先根據(jù)變量x的正負(fù),通過灰度因子C1和C2進(jìn)行灰度拉伸;將sigmoid拉伸后的灰度值進(jìn)行類間方差的計(jì)算,得到種群中的個(gè)體適應(yīng)度,對(duì)種群適應(yīng)度求和;根據(jù)方差找出最優(yōu)個(gè)體,進(jìn)行個(gè)體適應(yīng)度概率的計(jì)算。
(4)選擇。本文采用輪盤賭選擇(Roulette Wheel Selection),每個(gè)個(gè)體進(jìn)入下一代的概率等于其適應(yīng)度值與整個(gè)種群中個(gè)體適應(yīng)度和的比例。
(5)交叉。在[0.00,0.999]之間取任一隨機(jī)數(shù),與初始設(shè)定的交叉概率CP比較之后進(jìn)行重組運(yùn)算,產(chǎn)生兩個(gè)新的個(gè)體,新的個(gè)體既保留了雙親的部分基因,同時(shí)也引進(jìn)了新的基因。
(6)變異。在[0.00,0.999]之間取任一隨機(jī)數(shù),與初始設(shè)定的變異概率MP比較,符合變異條件的個(gè)體在相應(yīng)的進(jìn)制位上進(jìn)行二進(jìn)制取反操作以實(shí)現(xiàn)變異,從而形成新的個(gè)體。
(7)循環(huán)。每一次進(jìn)化都會(huì)更優(yōu),因此理論上進(jìn)化的次數(shù)越多越好,但在實(shí)際應(yīng)用中往往會(huì)在結(jié)果精確度和執(zhí)行效率之間尋找一個(gè)平衡點(diǎn),設(shè)定循環(huán)演化的迭代次數(shù)NG。
(8)結(jié)果處理。將最后一代群體之適應(yīng)度最大的個(gè)體作為遺傳算法所尋求的最優(yōu)結(jié)果,并將其反編碼成[0,255]之間的灰度值即為最佳閾值。
實(shí)驗(yàn)整體環(huán)境如圖3所示。選擇了ROSEEK公司提供的Woodpecker1系列CCD彩色工業(yè)相機(jī),該相機(jī)擁有4 GB的內(nèi)存,能夠在[-40 ℃,80 ℃]條件下正常啟動(dòng)并長(zhǎng)期穩(wěn)定工作,12 w的最大功耗,390 g的重量,滿足實(shí)驗(yàn)需求;選擇一字線激光器作為激光源,其波長(zhǎng)是635 nm,優(yōu)點(diǎn)是能獲得亮度大小適合、光源相干性能較好、不存在閃爍的一字線光帶,可以在焊接處進(jìn)行較為均勻的照明,形成高質(zhì)量的焊縫成像圖像;將工業(yè)相機(jī)擺放在水平平穩(wěn)的支架上,連接到PC上以控制相機(jī)對(duì)焊縫圖像進(jìn)行采集和后續(xù)的處理。
圖3 實(shí)驗(yàn)整體環(huán)境圖
為驗(yàn)證本文方法的有效性和實(shí)用性,對(duì)采集的焊縫圖像做了大量的試驗(yàn)。本實(shí)驗(yàn)是在Microsoft Visual Studio 2019平臺(tái)上開發(fā),圖像處理算法主要是以C++代碼的形式及調(diào)用OpenCV函數(shù)實(shí)現(xiàn)的。遺傳算法中設(shè)定種群大小n=20,終止迭代次數(shù)NG=20,交叉概率CP=0.9,變異概率MP=0.1,拉伸因子C1_MAX=32。
首先對(duì)如圖4所示的原始焊縫圖像應(yīng)用傳統(tǒng)的Otsu算法進(jìn)行二值化,得到傳統(tǒng)Otsu閾值化后的結(jié)果如圖5所示,可以明顯看出存在反光噪聲,焊縫光帶邊界不光滑,定位不夠精確,目標(biāo)與背景存在混淆等問題。傳統(tǒng)的Otsu大津法對(duì)圖像噪聲較為敏感,只能對(duì)單一目標(biāo)分割,當(dāng)目標(biāo)和背景大小比例懸殊、類間方差函數(shù)就可能會(huì)呈現(xiàn)雙峰或者多峰,閾值分割效果不太理想。
圖4 原始焊縫圖像
圖5 Otsu閾值化后的圖像
為了應(yīng)對(duì)實(shí)時(shí)的焊接要求,應(yīng)有效濾除噪聲、準(zhǔn)確且高效地提取焊縫光帶,故本文將傳統(tǒng)Otsu方法與遺傳算法相結(jié)合,通過灰度拉伸增大背景與前景之間的灰度值分布,結(jié)合遺傳算法,通過編碼、選擇、交叉、變異等操作對(duì)傳統(tǒng)的類間方差法進(jìn)行了優(yōu)化,并將該方法應(yīng)用于焊縫圖像。實(shí)際焊縫圖像試驗(yàn)結(jié)果如圖6所示,證明了該方法的有效性,可以更加準(zhǔn)確地提取出適合焊縫圖像的二值化閾值。
圖6 改進(jìn)后的閾值化圖像
傳統(tǒng)的Otsu大津法對(duì)圖像噪聲較為敏感,只能針對(duì)單一目標(biāo)分割。當(dāng)目標(biāo)和背景大小比例懸殊、類間方差函數(shù)就可能會(huì)呈現(xiàn)雙峰或者多峰,閾值分割效果不太理想。本文將傳統(tǒng)Otsu方法與遺傳算法相結(jié)合,通過灰度拉伸增大背景與前景之間的灰度值分布,結(jié)合遺傳算法,通過編碼、選擇、交叉、變異等操作對(duì)傳統(tǒng)的類間方差法進(jìn)行了優(yōu)化,并將該方法應(yīng)用于焊縫圖像。實(shí)際焊縫圖像試驗(yàn)結(jié)果證明了該方法的有效性,可以更加準(zhǔn)確地提取出適合焊縫圖像的二值化閾值,更利于后續(xù)的圖像處理操作。