胡韻松,王軍民,付嘉瑋,李雄軍,劉 威
(1.長江大學(xué) 油氣資源與勘探技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室, 武漢 430100;2.賀州學(xué)院,廣西 賀州 542899)
激光線性結(jié)構(gòu)光傳感器具有結(jié)構(gòu)簡單,體積小等特點(diǎn),廣泛用于焊接的焊縫追蹤,軌跡規(guī)劃等,稱為焊接過程自動(dòng)化的關(guān)鍵技術(shù)之一。而在結(jié)構(gòu)光條定位中,為了提高定位精度,提出了亞像素的概念,是指在相機(jī)得到的像素和像素之間還有幾十到十幾個(gè)微米的距離。而通常我們計(jì)算出的坐標(biāo)都是正整數(shù),這表示的是我們是在對(duì)像素進(jìn)行操作,而亞像素計(jì)算出來的坐標(biāo)是實(shí)數(shù),能夠極大地提高算法的精度。
多年來,國內(nèi)外學(xué)者就光條中心問題提出了多種方法,比較常見的主要有極值法、幾何中心法、灰度重心法和 Steger 法等;特征點(diǎn)檢測常見有Harris角點(diǎn)檢測、FAST角點(diǎn)檢測,以及一些局部圖像特征,如SIFT,SURF,ORB等[1]。焊縫特征識(shí)別的一般步驟是圖像濾波、中心線提取、對(duì)線性特征進(jìn)行擬合、特征點(diǎn)的識(shí)別。但是這些算法都只是依賴于像素單元進(jìn)行處理,算法的識(shí)別精度并不夠高。更有學(xué)者使用深度學(xué)習(xí)、機(jī)器學(xué)習(xí)的方法[2]對(duì)焊縫進(jìn)行處理,在涉及到小目標(biāo),神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)深層差一個(gè)像素,在網(wǎng)絡(luò)淺層會(huì)差8或者16個(gè)像素,這對(duì)小目標(biāo)的跟蹤影響巨大,也難以做到亞像素定位。文中將利用基于Hessian矩陣的Steger亞像素光條定位算法,再通過經(jīng)過亞像素精度優(yōu)化后的Shi-Tomasi角點(diǎn)檢測算法,在提取光條中心線以及特征點(diǎn)檢測兩個(gè)重要流程中,都在亞像素精度下進(jìn)行圖像處理,并且考慮到了算法的實(shí)時(shí)性,經(jīng)過實(shí)驗(yàn)表明,算法的精度和效率能夠滿足要求。
實(shí)驗(yàn)裝置包括計(jì)算模塊,成像系統(tǒng)模塊。文中使用開源,體積小,相對(duì)廉價(jià)的樹莓派用作計(jì)算模塊,使用工業(yè)相機(jī)進(jìn)行圖像信號(hào)的采集,采用線性的主動(dòng)激光提取激光照射后的特征。考慮到圖像處理中的實(shí)時(shí)性要求,要求圖像采集速度要高于檢測對(duì)象的檢測速率,即相機(jī)的幀率要高,同時(shí)得保證計(jì)算要足夠快。因此,采用了一塊基于1.4 GHz 64位4核 ARM Cortex-A53 CPU的樹莓派3B+作為計(jì)算模塊。成像系統(tǒng)采用了一塊像素為200萬的工業(yè)相機(jī),同時(shí)使用一塊 650 nm的低通濾光片過濾,限制鏡頭的進(jìn)光量。
圖1 焊縫提取系統(tǒng)設(shè)備和工作環(huán)境
系統(tǒng)采用主動(dòng)激光和工業(yè)相機(jī)來采集圖像,在主動(dòng)激光接通電源后,能夠發(fā)出特定波長的光,產(chǎn)生一個(gè)平面的線激光,線激光照射在焊件上會(huì)產(chǎn)生固定形狀的光條[3]。經(jīng)過特定波長的濾光片和相機(jī)中的透鏡成像后,能夠正好拍攝到一條包含焊縫輪廓信息的條紋。通過對(duì)主動(dòng)激光照射在焊件上產(chǎn)生的圖像進(jìn)行處理,可以提取到焊縫的中心線以及焊縫坡口的位置,以便于以后通過圖像處理得到偏移的距離,然后采用輸出指令的方式來糾正焊槍的位置。
本提取系統(tǒng)后續(xù)需要在一秒內(nèi)向伺服電機(jī)輸出5或6條指令。因此進(jìn)行圖像處理的計(jì)算要求較高,故采用C++進(jìn)行程序設(shè)計(jì),在樹莓派的Raspbian操作系統(tǒng),編譯OpenCV庫,作為主要的圖像處理工具。
在機(jī)器視覺的應(yīng)用中,相機(jī)得到的圖像往往會(huì)產(chǎn)生畸變,這些畸變一般分為徑向畸變和切向畸變。徑向畸變往往是由于透鏡的形狀引起的,見公式。
xcorrect=x(1+k1r2+k2r4+k3r6)
(1)
ycorrect=y(1+k1r2+k2r4+k3r6)
(2)
式中,x和y為像素橫縱方向的像素距離,r為該點(diǎn)距離成像中心的距離,得到的結(jié)果為校正后的新位置。對(duì)于畸變較小的中心區(qū)域,主要是k1起作用,對(duì)于畸變較大的邊緣,主要是k2起作用。普通的相機(jī)一般用這兩個(gè)參數(shù)就可校正,而工業(yè)相機(jī)一般會(huì)使用到更多參數(shù)。
而切向畸變是因?yàn)樵谙鄼C(jī)的組裝過程中,由于不能使透鏡嚴(yán)格和成像平面平行,會(huì)引入切向畸變,給出計(jì)算公式。
xcorrect=x+2p1xy+p2(r2+2x2)
(3)
ycorrect=y+p1(r2+2y2)+2p2xy
(4)
聯(lián)立四式,得到畸變參數(shù)k1、k2、p1、p2、p3。
我們需要利用標(biāo)定算法同時(shí)求出相機(jī)的內(nèi)參和畸變參數(shù),來校正圖像。最常見的算法是張正友標(biāo)定算法,在OpenCV和Matlab中均已經(jīng)實(shí)現(xiàn)該算法。本系統(tǒng)中采用玻璃底板、棋盤格寬度為1 cm的棋盤格進(jìn)行標(biāo)定。如圖3,是15張640×480分辨率的棋盤格圖像,標(biāo)定生成的成像模式示意圖。
圖2 標(biāo)定圖像成像示意圖
對(duì)標(biāo)定后的數(shù)據(jù),使用5個(gè)畸變參數(shù)與相機(jī)內(nèi)參數(shù)實(shí)現(xiàn)校正,校正結(jié)果如圖3。
圖3 原始圖像和校正圖像對(duì)比圖
在沒有主動(dòng)激光的情況下,提取焊縫多要使用LED光源、鹵素?zé)簟⒏哳l熒光燈等常見機(jī)器視覺光源。但在采用主動(dòng)激光的條件,周圍光照一定不能超過激光的強(qiáng)度,所以可以不需要再采用其他機(jī)器視覺光源進(jìn)行輔助。埋弧焊鋼管焊接中圖像的噪聲多為椒鹽噪聲,這里采用高斯濾波進(jìn)行圖像處理,可以一定程度上去除噪聲干擾,并對(duì)后一步光條中心線的提取做好了前置工作。
2.3.1 光條中心線的提取方法
光條細(xì)化中心的提取,對(duì)后續(xù)進(jìn)行焊縫坡口以及特征點(diǎn)的提取具有重要意義。需要對(duì)光條進(jìn)行處理,得到一條單像素寬的中心線。并且光條細(xì)化中心的提取速度和精度,會(huì)影響整個(gè)焊縫處理系統(tǒng)。目前,光條中心線的提取方法主要包括骨架細(xì)化法、幾何中心法、灰度重心法、基于Hessian矩陣的Steger算法等,國內(nèi)外學(xué)者也對(duì)其做了大量的研究[4]。
骨架細(xì)化法是一種形態(tài)學(xué)算法,通過不斷剝離二值圖像的邊界像素,最終得到細(xì)化的光條,但是剝離的過程要花費(fèi)大量的時(shí)間,不滿足實(shí)時(shí)性。
幾何中心法,則是通過Roberts算子,Sobel算子、Canny算子等先做邊緣檢測,得到光條的兩邊邊界,再將兩邊界的中線,取做中間線。該方法簡單,速度快,但是要求圖像的光條邊界必須十分精確,生產(chǎn)實(shí)際中的噪聲會(huì)對(duì)邊緣檢測造成非常大的影響,算法的魯棒性不高。
灰度重心法,是對(duì)圖像中的所有像素進(jìn)行遍歷,在一列線激光中,先采用極值法求取光強(qiáng)最大的一點(diǎn)max,然后確定一個(gè)閥值K=max-△l(l一般取10~20),在閾值兩邊判斷大于K的元素,對(duì)中間的每一行提取灰度重心作為光條紋的中心位置?;叶戎匦姆ㄐ枰獙?duì)閾值進(jìn)行選取,也易受環(huán)境噪聲影響。
基于Hessian矩陣的Steger算法,是一種亞像素中心定位算法。圖像中的點(diǎn)性結(jié)構(gòu)具有各項(xiàng)同性,而線性結(jié)構(gòu)具有各向異性。因此我們可以利用Hessian矩陣對(duì)圖像中的線性結(jié)構(gòu)進(jìn)行增強(qiáng),濾去點(diǎn)狀的結(jié)構(gòu)和噪聲點(diǎn)。Steger算法首先通過Hessian矩陣最大特征值對(duì)應(yīng)的特征向量,得到光條的法線方向,然后在法線方向上進(jìn)行泰勒展開,求出的多項(xiàng)式極大值就是光條紋中心的亞像素位置[5]。Hessian矩陣是由多元函數(shù)的二階偏導(dǎo)數(shù)組成的矩陣,定義如式(5)。式中rxx為圖像沿x方向的二階偏導(dǎo)數(shù),其它的值類似。
(5)
而對(duì)于二維圖像內(nèi)某一點(diǎn)的Hessian矩陣,它的最大特征值和其對(duì)應(yīng)的特征向量,對(duì)應(yīng)其鄰域二維曲線最大曲率的強(qiáng)度和方向??偨Y(jié)來說,圖像某點(diǎn)的Hessian矩陣特征值大小和符號(hào)決定了該點(diǎn)鄰域內(nèi)的幾何結(jié)構(gòu)。該算法具有處理精度高,魯棒性好等優(yōu)點(diǎn),本系統(tǒng)采用了這種方法,但是計(jì)算量相對(duì)較大,為了保證實(shí)時(shí)性需要進(jìn)行實(shí)驗(yàn)和注意程序設(shè)計(jì)時(shí)算法的復(fù)雜度。處理結(jié)果見圖4。
圖4 增加濾光片焊縫圖像與Steger算法處理效果圖
2.3.2 特征點(diǎn)提取
一般圖像的特征類型可以被分為邊緣、角點(diǎn)、感興趣區(qū)域。焊縫特征點(diǎn)的提取可以依賴于角點(diǎn)特征的提取。角點(diǎn)的具體描述一般可以分為灰度的梯度局部最大所對(duì)應(yīng)的像素點(diǎn);兩條或兩條以上邊緣的交點(diǎn);圖像中梯度值和梯度變化率高的點(diǎn)。角點(diǎn)提取算法有很多,例如Harris角點(diǎn),F(xiàn)AST角點(diǎn),以及學(xué)者們又設(shè)計(jì)了很多局部圖像特征,如SIFT,SURF,ORB等,但是在生產(chǎn)實(shí)際中,SIFT以及SURF都有專利保護(hù)。故此采用一種對(duì)Harris角點(diǎn)的進(jìn)行改進(jìn)的算法,Shi-Tomasi角點(diǎn)檢測算法,在很多情況下可以得到比Harris算法更好的結(jié)果。
用(w,x)表示窗口函數(shù),(u,v)為窗口平移量,可以求得像素在窗口內(nèi)的變化量,再對(duì)灰度變化進(jìn)行泰勒展開,可以得到式(6)。
(6)
Au2+2Buv+Cv2=E
(7)
即為橢圓方程,橢圓的長短軸表示了矩陣的特征值,反應(yīng)了兩個(gè)垂直方向的變化情況,兩個(gè)特征值都大的情況。Harris 角點(diǎn)檢測是用C來評(píng)價(jià)角點(diǎn)的強(qiáng)度,見式(7)。檢測的結(jié)果與k值有關(guān),k是一個(gè)經(jīng)驗(yàn)值,需要多次試驗(yàn)才能找到最佳值。
C=det(H)-ktrace(H)
(8)
C=λ1λ2-k(λ1+λ2)2
(9)
式中,det(H)為窗口矩陣的行列式,trace(H) 為窗口矩陣的跡,λ1,λ2為特征值。而在Shi-Tomasi算法中間,直接用較小的那個(gè)特征值作為C來判斷角點(diǎn)的強(qiáng)度,這樣就不需要調(diào)整K值了[5]。見公式(9)。和Harris 角點(diǎn)檢測算法一樣,C大于設(shè)定的閾值,我們就認(rèn)為它是一個(gè)角點(diǎn)。
C=min(λ1,λ2)
(10)
基于Shi-Tomasi算法與Harris角點(diǎn)檢測算法一樣,只能達(dá)到像素級(jí)別,可以使用cornerSubPix亞像素角點(diǎn)檢測作進(jìn)一步的優(yōu)化操作,可以使角點(diǎn)的精度達(dá)到亞像素的級(jí)別。算法的主要思想,是要對(duì)正交向量的點(diǎn)乘進(jìn)行迭代。
圖5 cornerSubPix算法示意圖
如圖5,q為待求取的亞像素點(diǎn),pi是q周圍的點(diǎn),坐標(biāo)已知,可以自行選取,圖像中實(shí)線的箭頭表示梯度方向。求取亞像素點(diǎn)需要兩個(gè)正交向量才可求解,設(shè)(pi-q)為第一個(gè)向量,pi位置的灰度設(shè)為Gi,為第二個(gè)向量??紤]兩種情況,如圖5中po表示,位于白色區(qū)域,此時(shí)的梯度為0;如圖5中的pi表示,位于邊緣區(qū)域,向量(pi-q)與Gi垂直,即點(diǎn)乘為0。都可以得到式(11)。
Gi*(pi-q)=0
(11)
再將式(10)轉(zhuǎn)換為最小二乘法的矩陣形式。
(12)
(13)
所以當(dāng)點(diǎn)q固定時(shí),若有足夠多的向量(pi-q)滿足式(11),將每個(gè)向量看成一個(gè)方程,對(duì)方程組求解,可求得亞像素點(diǎn)的位置。但是點(diǎn)q只有一個(gè),pi點(diǎn)有多個(gè),需要對(duì)式(13)加上求和符號(hào)。但是在采用多點(diǎn)計(jì)算后,各點(diǎn)離中心距離不一致,需要引入權(quán)重,這里引入高斯權(quán)重,假設(shè)pi處權(quán)重系數(shù)為wi,式子最終可以修正為式(14)。
(14)
即cornerSubPix亞像素角點(diǎn)檢測優(yōu)化,是以一個(gè)初始的角點(diǎn)q0為中心,選取一個(gè)窗口,對(duì)窗口中各點(diǎn)的梯度進(jìn)行求和,因?yàn)楦鼽c(diǎn)離中心距離不一,引入了高斯權(quán)重,用最小二乘法求解,即可得到一個(gè)亞像素點(diǎn)(qx,qy),再以q為中心,不斷迭代,通過設(shè)置結(jié)果精度確定迭代次數(shù)。于是,對(duì)得到的特征點(diǎn)進(jìn)行篩選,考慮到坡口處的橫坐標(biāo)遠(yuǎn)大于非坡口處的橫坐標(biāo),就能過濾掉非坡口處的坐標(biāo),選取坡口部分的特征點(diǎn)坐標(biāo)。對(duì)坡口處的特征點(diǎn)坐標(biāo)進(jìn)行均值處理,最后能夠得到我們需要的特征點(diǎn)坐標(biāo)。
為了驗(yàn)證算法的有效性和準(zhǔn)確性,實(shí)驗(yàn)基于標(biāo)定后的線結(jié)構(gòu)光測量系統(tǒng),選取了兩塊不銹鋼鋼板作為測量對(duì)象,尺寸大小為 300 mm×160 mm×4 mm,分別對(duì)其表面進(jìn)行焊縫提取。試驗(yàn)中,傳感器距離焊件表面約100 mm,所檢測的焊縫寬度約為 2 mm??紤]算法執(zhí)行時(shí)間和CPU的頻率有關(guān),在分辨率為320×240、640×480、1 024×768、1 280×960圖像分辨率下對(duì)算法所用的執(zhí)行時(shí)間進(jìn)行測算,執(zhí)行的平臺(tái)為樹莓派。 但是算法執(zhí)行的時(shí)間和操作系統(tǒng)調(diào)度有關(guān),如果在輕負(fù)載情況下,可以通過多次運(yùn)行消除操作系統(tǒng)調(diào)度的影響。且近10年來的處理器都支持動(dòng)態(tài)頻率調(diào)整,會(huì)根據(jù)負(fù)載的情況會(huì)調(diào)整頻率。故采用多次測量時(shí)間求均值消除影響。測量時(shí)間如圖6,橫坐標(biāo)的單位為圖像像素,縱坐標(biāo)單位為毫秒。
圖6 不同分辨率下求取10次算法時(shí)間統(tǒng)計(jì)圖
對(duì)所做實(shí)驗(yàn)的結(jié)果求取均值,可以得到算法在不同分辨率時(shí)間的預(yù)測。
要求在1秒內(nèi)輸出至少五幀,則每一幀的總時(shí)間不超過200 ms。在不開啟圖像顯示時(shí)(人機(jī)交互),可以使用640×480分辨率的圖像;在開啟圖像顯示后,會(huì)拖慢圖像處理的速度,這時(shí)在樹莓派的算力下需要采用用320×240分辨率的圖像。
表1 不同分辨率下圖像處理時(shí)間
利用Harris角點(diǎn)檢測對(duì)以及細(xì)化處理的圖像進(jìn)行檢測,觀察放大后的圖像,提取的角點(diǎn)位置多為離散像素點(diǎn)的角點(diǎn),而不是焊縫坡口處的角點(diǎn),檢測出的精度不高。
圖7 增加濾光片焊縫圖像與Harris算法處理效果圖
如圖8,顯示了直接使用Shi-Tomasi算法和經(jīng)過亞像素精度優(yōu)化后的結(jié)果、根據(jù)圖像顯示,找到的角點(diǎn)位置更加清晰,通過對(duì)角點(diǎn)的顯示,角點(diǎn)和角點(diǎn)的位置之間沒有更多粘粘,可以得出經(jīng)過亞像素優(yōu)化后的角點(diǎn)的位置更加準(zhǔn)確。
圖8 Shi-Tomasi算法與優(yōu)化后的算法處理效果圖
1) 針對(duì)常見焊縫提取算法精度不高的問題,文章利用樹莓派和工業(yè)相機(jī)搭建主動(dòng)激光焊縫提取系統(tǒng),通過Steger算法以及對(duì)Shi-Tomasi角點(diǎn)檢測算法進(jìn)行精度優(yōu)化,做到了亞像素精度級(jí)別的焊縫識(shí)別,能夠得到了坡口處的位置信息,為下一步進(jìn)行伺服電機(jī)控制焊槍提供了幫助。
(2) 經(jīng)過試驗(yàn)表明,該算法實(shí)時(shí)性能夠達(dá)到要求,算法精度高,實(shí)際可行[6-13]。