王建新,朱 煜,2,胡小鋒,張亞輝
(1.上海交通大學(xué)機械與動力工程學(xué)院,上海 200240;2.江南造船(集團)有限責(zé)任公司,上海 201913)
船體是以超過10萬數(shù)量的零件裝配而成的金屬結(jié)構(gòu)為主體的骨架,船體零件的檢測對于船體建造的精度控制具有重要意義。船體零件形狀種類繁多、重量巨大,采用機器視覺方法對其進(jìn)行非接觸式測量擁有無可比擬的效率優(yōu)勢。但是由于零件搬運時的相互摩擦以及較長時間的堆積,作業(yè)現(xiàn)場的待測零件表面易產(chǎn)生劃痕、銹蝕,此外,帶有槽、孔類特征的船體零件的數(shù)量眾多,且厚度較大,在成像時往往出現(xiàn)下表面成像的情況。在此基礎(chǔ)上,通過邊緣提取獲得的零件輪廓較易帶有偽邊緣,且無法保證封閉性,這會給圖像分割造成很大干擾,而船體零件幾何基元提取的準(zhǔn)確性依賴于良好的圖像分割結(jié)果,上述情況易導(dǎo)致幾何基元的殘缺或者完全缺失,從而使測量結(jié)果產(chǎn)生誤差甚至完全錯誤[1]。
傳統(tǒng)的圖像分割算法主要分為以下幾類:基于邊緣的分割[2-4]、基于閾值的分割[5]、基于區(qū)域的分割[6]、分水嶺分割[7]和聚類分割[8-9]等。相比于其他類算法,基于邊緣檢測的圖像分割算法具有更好的邊緣定位準(zhǔn)確性,且運行速度更快,但其檢測結(jié)果不能保證邊緣連續(xù)性或封閉性。針對這一問題,學(xué)者們通常將邊緣檢測與其他方法相結(jié)合以實現(xiàn)圖像分割,包括:邊緣檢測與邊緣連接[2]、邊緣檢測與區(qū)域生長[3]、邊緣檢測與形態(tài)學(xué)分析[4]等。上述方法中對于偽邊緣的處理大致可分為2類:通過動態(tài)選取合適閾值剔除梯度幅值較小的偽邊緣;在邊緣連接/生長過程中選擇真實邊緣點連接/生長。然而在船體零件圖像中,對于零件表面劃痕、銹蝕以及下表面成像等特殊噪聲導(dǎo)致的偽邊緣,其梯度幅值通常相似于或大于真實邊緣的梯度幅值,且通常分布于真實邊緣附近,若通過第1類方法處理則難以對真實邊緣和偽邊緣做出有效區(qū)分,甚至可能錯誤地剔除真實邊緣,而第2類方法則存在連接至偽邊緣點的情況,從而可能導(dǎo)致分割結(jié)果錯誤。
為了解決船體零件表面劃痕、銹蝕以及下表面成像等特殊噪聲導(dǎo)致的偽邊緣及邊緣不連續(xù)問題,本文提出了一種基于邊緣和k-means聚類的圖像分割方法。充分利用邊緣點的梯度方向與像素灰度值等先驗知識篩選偽邊緣,提取不受特殊噪聲影響的零件邊緣,并基于斷點間的測地距離及方向信息連接邊緣斷裂部分。
圖像分割算法流程如圖1所示,其主要過程為:首先通過全局閾值處理[10],初步定位零件的初始輪廓;然后沿初始輪廓建立多個小尺度矩形邊緣檢測區(qū)域(rectangular edge detector,EDR)[11],以獲取局部邊緣細(xì)節(jié)信息;之后在每個EDR內(nèi)利用Canny算法得到局部的1組邊緣點,依據(jù)邊緣點梯度方向信息,剔除該組邊緣點中劃痕、銹蝕類偽邊緣,依據(jù)邊緣點像素灰度值的差異,剔除該組邊緣點中下表面成像類偽邊緣,在此基礎(chǔ)上得到零件全部真實邊緣點;最后檢測真實邊緣點集中的斷點并連接,獲得零件封閉輪廓。
圖1 圖像分割算法流程
EDR的邊緣檢測范圍有限,僅當(dāng)零件輪廓位于其范圍內(nèi)時,才能進(jìn)行有效檢測。因此,本文第1步利用全局閾值處理獲得零件的大體輪廓。對于亮色背景上較暗物體組成的圖像f(x,y),任何f(x,y) (1) 取圖像g(x,y)上01交界處的輪廓作為零件的大體輪廓。初始定位結(jié)果如圖2所示,由圖2可看出,該輪廓與零件真實輪廓接近,但二者間仍有一定間距,將該輪廓稱為初始輪廓,記作CInit。 圖2 輪廓的初始定位 為提高局部邊緣檢測的準(zhǔn)確性,同時盡量消除非輪廓區(qū)域的干擾,在零件輪廓初始定位的基礎(chǔ)上,沿初始輪廓創(chuàng)建多個矩形邊緣檢測區(qū)域。首先獲得初始輪廓上像素點的坐標(biāo),CInit={(xi,yi)|i=1,2,3,…,n}。其次將CInit劃分為N個子輪廓,記作CPart,則CPart={(xi,yi)|i=1,2,3,…,m},其中m=n/N。然后計算輪廓法線方向,為減少計算量,取CPart內(nèi)兩端點(x1,y1)和(xm,ym)連線的法線方向DPart作為該子輪廓法線方向的近似,DPart為 (2) 矩形邊緣檢測區(qū)域EDR如圖3所示,在每個DPart上創(chuàng)建一個大小動態(tài)變化的矩形檢測區(qū)域(EDR)。該EDR的中心為CPart的中間點(x[m/2],y[m/2]),DPart為長軸方向,l1為長軸高度,l2為短軸寬度。其中,l1不小于CPart與零件真實輪廓偏移距離的2倍;為了提高DPart在圓弧段對子輪廓CPart法線方向的近似程度,l2的大小需動態(tài)調(diào)整,當(dāng)中間點(x[m/2],y[m/2])與兩端點(x1,y1)和(xm,ym)所在直線的距離小于設(shè)定值dT時,取當(dāng)前l(fā)2作為矩形寬度,否則取l2為其原值的二分之一并重復(fù)上述判斷流程。l1、l2、dT的初始值可依據(jù)實際情況適當(dāng)調(diào)整。 圖3 創(chuàng)建矩形邊緣檢測區(qū)域EDR 對于單個矩形邊緣檢測區(qū)域(EDR),利用Canny算法提取該區(qū)域內(nèi)初始邊緣點集??紤]到邊緣點梯度方向?qū)罄m(xù)篩選邊緣點集起到關(guān)鍵性作用,為提高計算結(jié)果的準(zhǔn)確性,在保持經(jīng)典Canny算法主體不變基礎(chǔ)上,對其梯度方向計算做出如下改進(jìn)。 借鑒Sobel邊緣檢測算子求解邊緣點(xi,yi)的梯度方向,分別從水平、垂直、45°、135°方向計算一階偏導(dǎo)[12],模板如圖4所示。 4個方向上的梯度分量Gx(xi,yi)、Gy(xi,yi)、G45(xi,yi)和G135(xi,yi)分別由圖4中4個一階梯度模板對圖像卷積得到。 把45°、135°方向的梯度值投影到水平與垂直方向并求和,求和結(jié)果作為新的水平及垂直方向梯度值Gx1(xi,yi)和Gy1(xi,yi),計算公式如下: 圖4 梯度方向模板 (3) (4) 進(jìn)而可求得當(dāng)前邊緣點的梯度方向為 (5) 由于本文測量的船體零件圖像存在劃痕、銹蝕以及下表面成像等特殊噪聲,而該類特殊噪聲所在位置的像素灰度變化特性與真實邊緣相似,無法通過常規(guī)方法消除,基于一階微分的邊緣檢測算子易將上述特殊噪聲誤判為邊緣點。因此,檢測到的初始邊緣點集P={(xi,yi)|i=1,2,3,…,n}中既包含了真實邊緣點集P′,也包含了偽邊緣點集Ns,需進(jìn)一步篩選初始邊緣點集P。 一般而言,零件輪廓附近劃痕和銹蝕的走向與零件輪廓走向存在一定差異,即此類偽邊緣的梯度方向與輪廓法線方向具有較大差值,而真實邊緣梯度方向與輪廓法線方向近似。因此,可以利用矩形邊緣檢測區(qū)域(EDR)內(nèi)邊緣點梯度方向與輪廓法線方向差異的大小來判別此類偽邊緣。下表面成像的原因比較特殊,通常情況下,僅零件的上表面對相機可見,然而當(dāng)零件有一定的厚度且?guī)в胁?、孔類結(jié)構(gòu)時,其距離相機軸心較遠(yuǎn)一側(cè)的槽(孔)通常在圖像中存在2個梯度值較大的過渡帶[13],從而導(dǎo)致邊緣提取的結(jié)果為上邊緣、下邊緣以及部分過渡帶邊緣并存。上述3類邊緣點的梯度方向以及幅值均十分相近,但三者所在像素的灰度值大小又有所不同,其中上邊緣像素灰度值的總體均值最小,下邊緣最大,因此可在EDR內(nèi)利用灰度值的差異予以區(qū)分。 分別記劃痕、銹蝕和下表面成像導(dǎo)致的偽邊緣點集為Ns1和Ns2。對于劃痕和銹蝕導(dǎo)致的偽邊緣點的判別描述如下:對EDR內(nèi)任一邊緣點(xi,yi),計算輪廓法線方向DPart與其梯度方向θ(xi,yi)的差值df,并將該值Td與閾值比較,當(dāng)df小于閾值Td時,則該邊緣點不屬于偽邊緣點集Ns1,其中Td的值可根據(jù)實際情況做出適當(dāng)調(diào)整。判別下表面成像類特殊噪聲,其關(guān)鍵在于如何判斷當(dāng)前EDR內(nèi)是否存在由其導(dǎo)致的偽邊緣,以及若存在該類偽邊緣,如何區(qū)分該區(qū)域內(nèi)3種邊緣,并且僅保留上邊緣。 k-means聚類算法是一種基于樣本相似性度量的無監(jiān)督實時聚類方法。其基本思想為:對于包含n數(shù)據(jù)點的數(shù)據(jù)集X:X={X1,X2,X3,…,Xn},將其依據(jù)相似度劃分為類,令類內(nèi)相似度最高的同時使類間相似度最低。本文利用k-means聚類對下表面成像導(dǎo)致的3類邊緣加以區(qū)分。k-means聚類流程如下: a.選擇k個對象作為初始簇中心C1,…,Ck。 b.計算每個Xi到簇中心Cj的距離d,當(dāng)d最小時即為其屬于的簇Lj,d的公式為 d=|Xi-Cj|i∈{1,2,3,…,n},j∈{1,2,3,…,k} (6) c.以每個簇中所有數(shù)據(jù)點的均值作為新的簇中心,即 Cj=∑Xi/|Lj| (7) 其中,Xi∈Lj,|Lj|為簇Lj中數(shù)據(jù)點的數(shù)量。 d.重復(fù)上述過程直至準(zhǔn)則函數(shù)值小于設(shè)定閾值。準(zhǔn)則函數(shù)定義為 (8) 利用k-means聚類將下表面成像邊緣劃分為3個簇:上邊緣點簇L1、過渡區(qū)域點簇L2以及下邊緣點簇L3,即k=3。利用三者像素灰度值間的差異進(jìn)行區(qū)分,則Xi的值為邊緣點的像素灰度值。由于隨機選取的初始簇中心對分類結(jié)果影響較大,因此依據(jù)像素灰度值的極值計算初始簇中心的值。 (9) 對于聚類結(jié)果,當(dāng)簇中心C3與C1的差值大于一定值時,則判定當(dāng)前EDR內(nèi)存在下表面成像類特殊噪聲,并把簇L2和L3內(nèi)邊緣點歸為偽邊緣點集Ns2,否則不做處理。 經(jīng)邊緣檢測以及2類偽邊緣點篩選后,可得到真實邊緣點集P′=P-Ns1-Ns2。考慮復(fù)雜圖像總會出現(xiàn)一些算法無法檢測出的邊緣[2],并且由于參數(shù)設(shè)置不合理等問題,邊緣點篩選時可能會錯誤剔除部分真實邊緣點。在此基礎(chǔ)上得到的邊緣點集通常是不封閉的,必須通過邊緣連接算法準(zhǔn)確連接邊緣斷裂部分,才能完成圖像分割。因此,本文提出了改進(jìn)的基于測地距離邊緣連接算法[14]。首先利用改進(jìn)的斷點檢測模板獲得全部有效斷點,之后依據(jù)鄰域信息標(biāo)記斷點連接方向,最后由似然函數(shù)評估候選斷點并連接。 算法以邊緣檢測得到的二值邊緣圖像作為輸入,將1組改進(jìn)的斷點檢測模板應(yīng)用于邊緣圖像提取邊緣斷點。模板如圖5所示,邊緣點由1表示,非邊緣點由0表示,待評估邊緣點由灰色框圈出,值為1,X的值為0或1。若待評估邊緣點為斷點,則模板中值為1的X的數(shù)量大于0且小于3,并且當(dāng)數(shù)量為2時,灰色框X的值必須為1。該模板確保了每個斷點有且僅有一個連接方向。 圖5 斷點檢測模板 圖6 斷點連接方向 斷點的鄰域內(nèi)往往不止1個候選斷點,本文設(shè)計了似然函數(shù)對候選斷點進(jìn)行評估,則有 (10) Dg(Pe1,Pe2)為當(dāng)前斷點與候選斷點的測地距離,Θ(Pe1,Pe2)為兩斷點連接方向的夾角,二者的值越小,似然函數(shù)的結(jié)果H(Pe1,Pe2)越大,則候選斷點被視為最佳匹配的概率越大。測地距離的定義為: (11) (12) I(pi)與I(pi+1)分別為相鄰兩像素點pi與pi+1的灰度值;dN為兩者間的灰度差值;Pe1和Pe2之間的連接路徑(pi|i=1,2,3,…,n)通過Bresenham算法求得。 本文圖像采集的硬件包括:Basler acA3800-10gm相機,OPT-C0825-10M鏡頭,白色光源,實驗PC處理器為Intel i5-8265U CPU@1.60 GHz,內(nèi)存8.00 GB。為驗證本文圖像分割算法的有效性,將實驗結(jié)果與傳統(tǒng)Canny邊緣檢測算法的分割結(jié)果進(jìn)行對比,同時對所選船體零件的幾何尺寸進(jìn)行測量,驗證測量方法的準(zhǔn)確度和精密度。系統(tǒng)標(biāo)定系數(shù)為k=0.267 mm/px。 選取蓋板、肋板、加強筋和水密補板4種典型船體零件作為測試樣例。如圖7a所示,4種零件均不同程度的存在劃痕、銹蝕類特殊噪聲,且水密補板的凹槽處存在下表面成像類特殊噪聲。分別使用傳統(tǒng)Canny算法與本文所提算法進(jìn)行圖像分割,結(jié)果如圖7b和圖7c所示,觀察可發(fā)現(xiàn), Canny算法無法完整提取真實邊緣,提取的邊緣存在斷裂現(xiàn)象,且在真實邊緣附近包含由2類特殊噪聲導(dǎo)致的偽邊緣。本文所提方法能夠有效剔除由劃痕、銹蝕以及下表面成像等特殊噪聲導(dǎo)致的偽邊緣,抑制特殊噪聲帶來的影響,且準(zhǔn)確連接邊緣斷裂部分,提取到零件完整、封閉的輪廓,有效解決了傳統(tǒng)基于邊緣的分割算法受特殊噪聲影響較大的問題。 圖7 零件圖像分割結(jié)果 準(zhǔn)確度是指在一定實驗條件下多次測定的平均值與真值相符合的程度;精密度是指在規(guī)定條件下,對同一或類似對象重復(fù)測量所得示值或測得值間的一致程度[15]。通俗講,準(zhǔn)確度體現(xiàn)了測量值與真值的接近程度,而精密度體現(xiàn)了測量方法的可重復(fù)性。本文利用這2種指標(biāo)對船體零件測量精度進(jìn)行評價。 選取蓋板、肋板、加強筋和水密補板4種典型船體零件的主要尺寸為待測特征。首先,利用游標(biāo)卡尺、半徑量規(guī)連續(xù)測量10次,取測量結(jié)果的均值作為參考量值。表1給出了各零件特征的參考量值。 之后,對測試零件分別連續(xù)拍取10張圖像,在獲得零件完整、封閉輪廓的基礎(chǔ)上,將零件輪廓按照幾何基元進(jìn)行分段并擬合,求解相關(guān)方程組,計算零件特征的量值。分別求得各零件特征量值的均值、標(biāo)準(zhǔn)偏差以及測量誤差,計算結(jié)果如表2所示。 使用測量結(jié)果的誤差以及標(biāo)準(zhǔn)偏差評估準(zhǔn)確度和精密度,計算表2中所有誤差項絕對值的均值,求得4種類型零件的測量誤差的均值為0.27 mm,同時各零件特征誤差值的絕對值均小于0.5 mm,說明應(yīng)用本文算法具有較高的測量準(zhǔn)確度。此外,計算表2中各項零件特征的標(biāo)準(zhǔn)偏差的平均值為0.262 mm,其中水密補板槽寬的量值受下表面成像因素的影響,標(biāo)準(zhǔn)偏差略高為0.726 mm,除水密補板槽寬的標(biāo)準(zhǔn)偏差較大以外,其余零件特征的標(biāo)準(zhǔn)偏差均小于0.5 mm,這一結(jié)果說明應(yīng)用本文算法具有較高的可重復(fù)性較和測量精密度。 表1 零件特征參考量值 mm 表2 零件特征測量結(jié)果 mm 由于運輸和存放環(huán)境所限,船體零件表面易發(fā)生劃痕、銹蝕,且?guī)Р?、孔零件眾多,其成像易產(chǎn)生偽邊緣及邊緣不連續(xù)問題導(dǎo)致測量結(jié)果存在誤差或錯誤,為了解決這一問題,本文提出了一種基于邊緣和k-means聚類的船體零件圖像分割方法。實驗結(jié)果表明,相比于傳統(tǒng)Canny算法圖像分割,本文方法能有效抑制零件表明劃痕、銹蝕和下表面成像問題對圖像分割效果的影響,獲得更加平滑、封閉性更好的零件圖像分割效果,在此基礎(chǔ)上的零件幾何尺寸測量具有較高的準(zhǔn)確度和精密度,保障了船體零件測量的精度。本文方法雖然可以對存在特殊噪聲的零件圖像進(jìn)行有效分割,但需具有較多的參數(shù)設(shè)置,當(dāng)測量環(huán)境變化時可能無法獲得良好的分割結(jié)果,因此,下一步會著重研究參數(shù)的動態(tài)求取,以達(dá)到更佳的分割效果。1.2 創(chuàng)建矩形邊緣檢測區(qū)域
1.3 提取邊緣點集
1.4 篩選邊緣點集
1.5 邊緣連接
2 實驗結(jié)果與分析
2.1 船體零件圖像分割實驗
2.2 船體零件測量精度實驗
3 結(jié)束語