劉 歡,劉驍佳,趙耀邦,王 寧,羅志強(qiáng),危 荃
(上海航天精密機(jī)械研究所,上海 201600)
鋁板焊接后焊縫內(nèi)存在裂紋、氣孔等缺陷,使用X射線成像方法進(jìn)行缺陷檢測(cè)是一種重要檢測(cè)手段。由于X射線的成像方式、焊接材質(zhì)、焊接方法等客觀因素的影響,圖像中焊縫區(qū)域與背景區(qū)域的像素值分布相似,焊縫區(qū)域?qū)Ρ榷容^低,不利于觀察焊縫區(qū)域的缺陷,因此,提升焊縫區(qū)域的對(duì)比度成為有效檢測(cè)焊縫缺陷的前提[1-3]。X射線成像中焊縫區(qū)域在整副圖像中占比較低,若對(duì)整副圖像進(jìn)行對(duì)比度提升處理則數(shù)據(jù)量冗余且含有大量噪聲,對(duì)比度提升效果較差,因此可先確定焊縫區(qū)域后再進(jìn)行對(duì)比度提升處理。確定焊縫位置后,主要在焊縫區(qū)域中進(jìn)行缺陷檢測(cè)和識(shí)別,忽略圖像中大多數(shù)無(wú)關(guān)區(qū)域,這將極大減少系統(tǒng)處理時(shí)間,為焊縫缺陷智能化和快速化檢測(cè)實(shí)際應(yīng)用提供基礎(chǔ)。但由于X射線圖像存在噪聲多、焊縫區(qū)域邊緣模糊等問(wèn)題,因此如Sobel、Canny等傳統(tǒng)的基于邊緣檢測(cè)的方法[4,5]應(yīng)用于焊縫區(qū)域提取時(shí)效果較差。并且由于焊縫缺陷可能位于熱影響區(qū)內(nèi),現(xiàn)有方法多為提取焊縫邊緣,會(huì)導(dǎo)致提取位置遺漏;同時(shí)由于X射線成像焊縫區(qū)域的對(duì)比度低、亮度分布不均勻,基于不同區(qū)域類(lèi)間方差原理的局部自適應(yīng)閾值法[6-8]提取焊縫區(qū)域效果同樣欠佳,并且當(dāng)圖像數(shù)據(jù)集較大,大多數(shù)焊縫提取方法難以針對(duì)所有圖像都有較好的效果。因此針對(duì)現(xiàn)有方法存在的局限,本文提出一種自動(dòng)提取焊縫區(qū)域并提高焊縫區(qū)域?qū)Ρ榷鹊姆椒?,提取焊縫位置區(qū)域并提升對(duì)比度,可解決大批量的X射線成像中焊縫區(qū)域難提取、對(duì)比度低的問(wèn)題,提高識(shí)別可靠性,為后續(xù)焊縫區(qū)域的自動(dòng)化缺陷檢測(cè)提供基礎(chǔ)。
通過(guò)X射線圖像采集裝置,收集多張不同厚度、不同位置、邊緣形態(tài)各異的鋁板焊縫圖像,如圖1所示,圖1a~1e分別為焊縫不同位置、不同X射線源強(qiáng)度下獲取的X射線圖像。由圖1可知,焊縫所在區(qū)域與背景區(qū)域像素值較為接近,焊縫區(qū)域?qū)Ρ榷容^低。
圖1 典型鋁板X(qián)射線圖像Fig.1 Typical X-ray image of aluminum plate
焊縫區(qū)域內(nèi)像素值梯度變化比背景區(qū)域劇烈,據(jù)此焊縫區(qū)域特性,以圖1a中焊縫為例,首先進(jìn)行焊縫區(qū)域的提取,再進(jìn)行像素值線性變換,提升對(duì)比度,整體流程如圖2所示。
圖2 焊縫區(qū)域?qū)Ρ榷忍嵘鞒虉DFig.2 Flow chart of contrast improvement in weld area
首先需對(duì)圖像進(jìn)行去噪處理,本研究使用雙邊濾波方法去除噪聲,在盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,達(dá)到保邊去噪的目的。雙邊濾波同時(shí)考慮像素點(diǎn)的空域信息和值域信息,濾波器各權(quán)重系數(shù)大小ω是定義域核和值域核的乘積。
濾波器的定義域核計(jì)算公式如式(1):
(1)
其中,(i,j)是當(dāng)前被卷積像素的坐標(biāo)點(diǎn),(k,l)是鄰域像素的坐標(biāo)點(diǎn),σd是高斯函數(shù)的標(biāo)準(zhǔn)差。濾波器的值域核計(jì)算公式如式(2):
(2)
其中,vi,j是當(dāng)前被卷積坐標(biāo)(i,j)的像素值,vk,l是其鄰域坐標(biāo)(k,l)的像素值,σr是雙邊濾波器的標(biāo)準(zhǔn)差。定義域核與值域核相乘得到濾波器加權(quán)系數(shù)ω,如式(3):
ω(i,j,k,l)=
(3)
由公式(1)可知,定義域核d(i,j,k,l)由像素點(diǎn)之間的距離決定,像素點(diǎn)距離越遠(yuǎn)權(quán)重系數(shù)大小ω越小。由公式(2)可知,值域核r(i,j,k,l)由像素點(diǎn)差值決定,像素點(diǎn)差值越小權(quán)重系數(shù)大小ω越大。因此當(dāng)圖像中像素值變化較小時(shí),此時(shí)值域核r(i,j,k,l)接近于1,定義域核d(i,j,k,l)起主要作用。當(dāng)圖像中像素值變化較大時(shí)值域核r(i,j,k,l)權(quán)重較大,較好地保留了圖像的邊緣信息。為保證雙邊濾波處理時(shí)定義域核和值域核的均衡性,可將標(biāo)準(zhǔn)差σr和σd數(shù)值設(shè)置為相同,原始X射線圖像使用雙邊濾波器去噪后所得圖像如圖3。
圖3 對(duì)原始圖像進(jìn)行雙邊濾波所得圖像Fig.3 Image obtained by bilateral filtering of the original image
在圖像形成過(guò)程中,由于圖像中圖形紋理、顏色的不同而導(dǎo)致圖像的像素值發(fā)生突變,從而形成了整副圖像的邊緣。通過(guò)上文分析可知,焊縫區(qū)域的像素值梯度變化比背景區(qū)域劇烈,因此可利用焊縫邊緣信息進(jìn)行焊縫位置的提取。邊緣是通過(guò)檢查每個(gè)像素的鄰域并對(duì)其像素變化進(jìn)行量化,這種像素變化的量化相當(dāng)于微積分里連續(xù)函數(shù)中方向?qū)?shù)或者離散數(shù)列的差分[9]。
本研究使用Scharr算子進(jìn)行邊緣檢測(cè),Scharr算子為一階離散微分算子,可獲得數(shù)字圖像的一階梯度[10-12],其算子臨近待計(jì)算像素的算子權(quán)重更大,能計(jì)算出更小的梯度變化,因此精確度更高。Scharr算子是在一個(gè)坐標(biāo)軸方向上進(jìn)行非歸一化的高斯平滑,在另一個(gè)坐標(biāo)軸方向上進(jìn)行差分處理。本研究根據(jù)焊縫擺放位置,設(shè)定在水平方向上進(jìn)行差分處理,獲得圖像在水平方向上的邊緣信息,所用Scharr算子模板如式(4):
(4)
原圖像與Scharr算子進(jìn)行卷積運(yùn)算后,某一像素點(diǎn)(i,j)處的像素值可用式(5)表達(dá):
(5)
由于使用Scharr算子進(jìn)行卷積運(yùn)算后,圖像中某一點(diǎn)的數(shù)值將可能出現(xiàn)負(fù)數(shù)的情況,為處理數(shù)值方便,本研究將Scharr算子處理后的負(fù)數(shù)設(shè)置為0,此時(shí)檢測(cè)出的邊緣僅保留像素由小到大變化的一側(cè),雙邊濾波所得圖像經(jīng)Scharr算子檢測(cè)水平邊緣后所得圖像如圖4所示。
圖4 雙邊濾波圖像進(jìn)行水平方向邊緣檢測(cè)Fig.4 Horizontal edge detection of bilateral filtered images
經(jīng)Scharr算子檢測(cè)水平邊緣所得圖像中存在麻點(diǎn)狀像素點(diǎn),本研究使用形態(tài)學(xué)開(kāi)運(yùn)算操作去除此干擾信息。圖像開(kāi)運(yùn)算可以去除圖像中的噪聲,消除較小連通域,保留較大連通域,同時(shí)能夠使兩塊連接不緊密的連通域分離。圖像開(kāi)運(yùn)算是對(duì)圖像進(jìn)行先腐蝕、后膨脹的過(guò)程,本研究中腐蝕和膨脹過(guò)程中采用相同的結(jié)構(gòu)元素。腐蝕操作時(shí)取結(jié)構(gòu)元素形狀覆蓋范圍內(nèi)最小值作為圖像中該位置的輸出像素值,而膨脹操作時(shí)取結(jié)構(gòu)元素形狀覆蓋范圍內(nèi)最大值作為圖像中該位置的輸出像素值。常用的結(jié)構(gòu)元素有矩形、橢圓和十字交叉,本研究中結(jié)構(gòu)元素選取為矩形,水平方向邊緣檢測(cè)所得圖像經(jīng)開(kāi)運(yùn)算處理后所得圖像如圖5所示。
圖5 水平方向邊緣檢測(cè)所得圖像開(kāi)運(yùn)算處理Fig.5 Open operation processing of images obtained from horizontal edge detection
第1步:獲取形態(tài)學(xué)開(kāi)運(yùn)算后圖像中每一像素點(diǎn)的像素值,統(tǒng)計(jì)每一行中所有像素點(diǎn)像素值的代數(shù)和,則第i行所有像素點(diǎn)的像素值的代數(shù)和由式(6)計(jì)算:
(6)
其中,m和n分別為圖像行數(shù)和列數(shù),vi,j為開(kāi)運(yùn)算后圖像在第i行、第j列的像素值。為便于觀察結(jié)果,可將開(kāi)運(yùn)算所得圖5中像素點(diǎn)值之和按水平方向進(jìn)行投影,可得圖像每一行像素點(diǎn)像素值相加值的大小顯示,如圖6所示。
圖6 像素值之和水平投影Fig.6 Horizontal projection sum of pixel values
第2步:確定X射線圖像中焊縫所在位置的行數(shù),設(shè)置布爾標(biāo)識(shí)符flagWhite、flagBlack,其初始狀態(tài)為0;同時(shí)設(shè)置變量colForword、colBehind分別用來(lái)記錄圖6中像素值之和不為0區(qū)域的起始行數(shù)和終止行數(shù)數(shù)值,其初始狀態(tài)為0;并新建線性列表List用于儲(chǔ)存所有像素值之和不為0區(qū)域的像素值總和大小,列表List1用于儲(chǔ)存所有像素值之和不為0區(qū)域的起始行數(shù)值,列表List2用于儲(chǔ)存所有像素值之和不為0區(qū)域的終止行數(shù)值,List、List1、List2初始狀態(tài)為空。
第3步:從第1行開(kāi)始,判斷圖6中此行像素值之和是否為0,若像素值之和為0則置colForword為當(dāng)前行數(shù)大小,置flagWhite=0,flagBlack=1。
第4步:行數(shù)每次增加1,若像素值之和為0則colForword加1,直到此行像素值之和不為0,此時(shí)置flagWhite=1,flagBlack=0;行數(shù)依然每次增加1,若此行像素值之和不為0,此時(shí)flagWhite、flagBlack布爾值不變;直到此行像素值之和為0,此時(shí)置colBehind為當(dāng)前行數(shù)大小減1。
第5步:計(jì)算colForword行至colBehind行的像素值總和大小sum,將sum儲(chǔ)存至List列表,將colForword儲(chǔ)存至List1列表,colBehind儲(chǔ)存至List2列表。
第6步:重置colForword為當(dāng)前行數(shù)大小,置flagWhite=0,flagBlack=1;并重復(fù)第4步至第5步直到圖像中最后一行,將不為0區(qū)域的像素值總和大小、colForword、colBehind行數(shù)數(shù)值分別存儲(chǔ)至List、List1、List2列表。
第7步:獲取列表List中元素最大值summax,則summax所對(duì)應(yīng)列表List1、List2中colForword、colBehind行數(shù)位置即為焊縫起始行和終止行,由此確定了X射線圖像中焊縫位置區(qū)域。
為了避免圖像處理過(guò)程中引起的焊縫邊緣數(shù)據(jù)丟失,可設(shè)定單邊誤差大小h,則最終確定焊縫在X射線原始圖像中第colForword-h行至colBehind+h行的位置。如圖7中設(shè)定h為30個(gè)像素大小,即設(shè)定離colForword、colBehind各30個(gè)像素點(diǎn)的寬度作為有效區(qū)域,在X射線原始圖像中可標(biāo)注出焊縫區(qū)域。
圖7 焊縫區(qū)域位置提取后標(biāo)注Fig.7 Marking of the position of the weld seam area after extraction
由于X射線原始圖像中對(duì)比度較低、亮度分布不均勻,焊縫區(qū)域像素值較為集中,因此本研究采用像素值線性變換的方法,提高焊縫區(qū)域的對(duì)比度情況。經(jīng)線性變換后輸出圖像中某點(diǎn)的像素值oi,j可用式(7)表達(dá):
(7)
其中,原圖像中焊縫區(qū)域像素值范圍為[vmin,vmax],輸出圖像中焊縫區(qū)域像素值范圍為[omin,omax],通常omin、omax設(shè)定為當(dāng)前圖像深度位數(shù)下像素值最小值和最大值,經(jīng)線性變換處理后的圖像如圖8所示。
為驗(yàn)證本方法的魯棒性和準(zhǔn)確性,對(duì)11 150張X射線圖像進(jìn)行測(cè)試。X射線成像設(shè)備可輸出8位、12位、16位的灰度圖像,由于8位灰度圖像讀取速度快、程序運(yùn)行占用內(nèi)存空間小,因此為快速和大批量驗(yàn)證本文算法的有效性,文中采用8位灰度圖像進(jìn)行處理,依次使用去噪、邊緣檢測(cè)、形態(tài)學(xué)操作、焊縫區(qū)域提取、線性變換處理方法,采用Visual Studio 2015進(jìn)行程序編寫(xiě),對(duì)圖像進(jìn)行批量處理,開(kāi)發(fā)了焊縫區(qū)域?qū)Ρ榷茸詣?dòng)提升的處理程序,圖9所示為對(duì)典型鋁板X(qián)射線圖像進(jìn)行處理所得結(jié)果。由圖9可知,本方法可自動(dòng)提升亮度分布不均、對(duì)比度低的焊縫區(qū)域的對(duì)比度。將本方法與Median-filtering[4]、Canny[5]、Adaptive-threshold[6]、Susan[13]這4種方法進(jìn)行對(duì)比,所有方法均采用濾波去噪、邊緣檢測(cè)、開(kāi)運(yùn)算進(jìn)行處理,如圖10所示。對(duì)比5組實(shí)驗(yàn)結(jié)果可知,本方法比其他方法更適用于邊緣模糊、噪聲較多、亮度分布不均勻的X射線圖像的焊縫區(qū)域提取,提取的冗余區(qū)域更小,可更準(zhǔn)確提取焊縫區(qū)域。根據(jù)單邊誤差大小h的不同對(duì)11 150張X射線原始圖片的測(cè)試結(jié)果準(zhǔn)確率如表1所示。由表1可知,單邊誤差大小設(shè)置為30個(gè)像素時(shí),即可得到準(zhǔn)確率100%的焊縫提取有效區(qū)域。相較于陳強(qiáng)等[13]提出采用Susan算法將焊縫上下邊緣單邊60個(gè)像素點(diǎn)大小作為有效區(qū)域,本方法提高了焊縫提取的準(zhǔn)確率和魯棒性,減小了誤差范圍。
表1 準(zhǔn)確率測(cè)試結(jié)果
圖9 X射線圖像(a~e)以及雙邊濾波(a1~e1)、邊緣檢測(cè)(a2~e2)、開(kāi)運(yùn)算(a3~e3)、對(duì)比度提升(a4~e4)處理后的焊縫圖像Fig.9 X-ray images (a~e) and weld seam images processed by bilateral filtering (a1~e1),edge detection (a2~e2),open operation (a3~e3),and contrast enhancement (a4~e4)
圖10 傳統(tǒng)方法與本文方法結(jié)果對(duì)比:(a) 本方法,(b) Median-filtering,(c) Canny,(d) Adaptive-threshold,(e) Susan Fig.10 Comparison between the results of the traditional method and the method in this paper:(a) the method in this paper,(b) Median-filtering,(c) Canny,(d) Adaptive threshold ,and (e) Susan
對(duì)典型鋁板X(qián)射線原始圖像和線性變換后圖像中焊縫區(qū)域的像素值進(jìn)行統(tǒng)計(jì),計(jì)算X射線原始圖像和線性變換圖像焊縫區(qū)域的均值和標(biāo)準(zhǔn)差,所得結(jié)果如表2所示??芍?,原始X射線圖像中焊縫區(qū)域像素值主要聚集在范圍很小的一個(gè)區(qū)域里,所以導(dǎo)致其對(duì)比度較低。對(duì)原始圖像焊縫區(qū)域的像素值進(jìn)行線性變換后,圖像焊縫區(qū)域的像素值平均擴(kuò)大了4.13倍,像素值數(shù)據(jù)的波動(dòng)性更大,分布更為離散,因此提高了焊縫區(qū)域的對(duì)比度,使圖像細(xì)節(jié)看起來(lái)更加清晰。
表2 焊縫區(qū)域像素值均值和標(biāo)準(zhǔn)差結(jié)果
(1)針對(duì)于亮度分布不均、對(duì)比度低的焊縫區(qū)域,提出一種基于圖像形態(tài)學(xué)的焊縫區(qū)域提取與對(duì)比度提升方法,使用雙邊去噪、邊緣檢測(cè)、形態(tài)學(xué)操作、焊縫區(qū)域提取、線性變換處理,當(dāng)設(shè)置單邊誤差大小為30個(gè)像素時(shí),可自動(dòng)準(zhǔn)確提取到準(zhǔn)確率100%的焊縫位置區(qū)域。
(2)線性變換后的圖像較原有圖像焊縫區(qū)域圖像像素值標(biāo)準(zhǔn)差平均擴(kuò)大了4.13倍,像素值范圍擴(kuò)大從而提升了其對(duì)比度。
(3)使用Visual Studio 2015編寫(xiě)程序,用該方法對(duì)11 150張圖像進(jìn)行批處理,驗(yàn)證了該方法的準(zhǔn)確性和魯棒性,為后續(xù)焊縫區(qū)域內(nèi)缺陷提取或焊縫動(dòng)態(tài)跟蹤提供了可靠保證。