鄧仕超,蔣應(yīng)良,高興宇
(桂林電子科技大學(xué)廣西制造系統(tǒng)與先進(jìn)制造技術(shù)重點(diǎn)實(shí)驗(yàn)室,桂林 541004)
三維測(cè)量技術(shù)作為計(jì)算機(jī)視覺(jué)熱點(diǎn)領(lǐng)域,在出現(xiàn)的許多方法中,線結(jié)構(gòu)光三維測(cè)量技術(shù)有著非接觸、成本低、結(jié)構(gòu)簡(jiǎn)單、快速穩(wěn)定、精度較高等優(yōu)點(diǎn),在文物修復(fù)、航空攝影測(cè)量、工業(yè)檢測(cè)等三維重建領(lǐng)域廣泛應(yīng)用[1-3]。線結(jié)構(gòu)光測(cè)量系統(tǒng)的硬件是線結(jié)構(gòu)光視覺(jué)傳感器(LSLVS),由工業(yè)相機(jī)和激光組成,影響系統(tǒng)精度的主要原因是線激光平面的標(biāo)定,因此光平面標(biāo)定是LSLVS標(biāo)定的關(guān)鍵。
線結(jié)構(gòu)光平面標(biāo)定根據(jù)標(biāo)定靶標(biāo)可以分為1D靶標(biāo)、2D靶標(biāo)、3D靶標(biāo)。3D靶標(biāo)由于要求高精度,且制造成本高,因此應(yīng)用一直受到限制。1D靶標(biāo)和2D靶標(biāo)可以自由移動(dòng),應(yīng)用廣泛。周富強(qiáng)等[4]提出的基于一維靶標(biāo)的光平面標(biāo)定可以現(xiàn)場(chǎng)實(shí)現(xiàn)LSLVS的大視場(chǎng)標(biāo)定,但是靶標(biāo)每次只能獲取激光平面里的一個(gè)特征點(diǎn),導(dǎo)致效率不高。陳新禹等[5]提出一種基于單個(gè)同心圓標(biāo)定的方法,通過(guò)P3P和交比原理計(jì)算三維特征點(diǎn)坐標(biāo),利用最小二乘法進(jìn)行平面擬合。洪磊等[6]提出了一種基于單應(yīng)性矩陣的標(biāo)定方法,與交比不變法相比,該方法獲取標(biāo)定點(diǎn)的效率高,靶標(biāo)設(shè)計(jì)簡(jiǎn)單、通用性強(qiáng),定位準(zhǔn)確度為±0.473 mm。王春梅等[7]提出一種基于直角方框共線圓點(diǎn)靶標(biāo)的標(biāo)定方法,只要使光平面與靶標(biāo)圓點(diǎn)中心平面在同一平面就可一次性標(biāo)定光平面,精度較高,不足之處在于采集圖像時(shí)需要調(diào)整相機(jī)的位置,且對(duì)位置的要求高,拍攝的光條輪廓為銳角時(shí)求解過(guò)程繁瑣且易出錯(cuò)。王華等[8]針對(duì)標(biāo)定存在精度低、局限性大等問(wèn)題,提出一種空間高精度線結(jié)構(gòu)光直接標(biāo)定法,標(biāo)定后沿x方向的平均絕對(duì)測(cè)量誤差為0.015 6 mm,z方向?yàn)?.017 4 mm。魏一等[9]直接利用光條像素坐標(biāo)求光條點(diǎn)在相機(jī)坐標(biāo)系的三維坐標(biāo),從而擬合平面?;诮槐鹊姆椒ㄊ芟抻谔卣鼽c(diǎn)數(shù)量而影響平面擬合的精度。張瑞峰等[10]采用較多的特征點(diǎn)對(duì)光平面進(jìn)行擬合,通過(guò)求取圖像的任意光條中心與相機(jī)光心構(gòu)成的直線和靶標(biāo)平面之間的交點(diǎn),改變靶物位姿獲得更多特征點(diǎn)來(lái)完成標(biāo)定,不足之處是易受噪音干擾。于龍龍等[11]先獲得圖像光條直線與相機(jī)光心形成的平面方程,再讓這個(gè)平面與靶物平面相交能夠得到空間直線方程,通過(guò)多條空間直線擬合出激光平面。胡增等[12]提出基于消隱點(diǎn)的激光平面參數(shù)標(biāo)定法,只需獲得一組平移運(yùn)動(dòng)的靶標(biāo)就能夠標(biāo)定出參數(shù),精度與標(biāo)定效率均較高,但受限于魯棒性不高。
針對(duì)以上方法的局限性,本文提出一種LSLVS的參數(shù)標(biāo)定方法。此方法在相機(jī)坐標(biāo)系下利用相機(jī)標(biāo)定出的內(nèi)外參數(shù)來(lái)標(biāo)定靶標(biāo)平面及光心與光條構(gòu)成平面的兩個(gè)法向量,從而得到激光光條的若干特征點(diǎn),最后利用多組特征點(diǎn)擬合出光平面。本文方法不僅提高了棋盤格角點(diǎn)的定位精度,而且也提高了LSLVS的精度。
在對(duì)棋盤格進(jìn)行角點(diǎn)檢測(cè)和定位時(shí),傳統(tǒng)方法通常是先通過(guò)findChessboardCorners角點(diǎn)檢測(cè)器檢測(cè)粗角點(diǎn),再使用find4quadcornersubpix角點(diǎn)檢測(cè)器提取亞像素角點(diǎn),但是這兩個(gè)檢測(cè)器提取角點(diǎn)的速度太慢,且對(duì)圖像的質(zhì)量要求較高,魯棒性一般。
DUDA等[13]提出的新的棋盤格角點(diǎn)精確檢測(cè)和定位方法遵循的是基于中心線的角點(diǎn)模型(如圖1所示),需要計(jì)算沿中心線穿過(guò)亮區(qū)的所有像素的積分高于沿另一條中心線穿過(guò)暗區(qū)的像素的積分,若P點(diǎn)剛好為棋盤格的角點(diǎn),那么這兩個(gè)積分之間的差滿足最大。
圖1 基于中心線的連接模型
(1)
式中:Rflocal[x,y,α]函數(shù)為局部Radon變換,目的是為給定像素坐標(biāo)(x,y)周圍的所有可能中心線提供積分;fc[x,y]是用來(lái)計(jì)算給定像素點(diǎn)(x,y)周圍所有可能中心線的最大積分值和最小積分值差的平方的函數(shù),m指定圖像中的角點(diǎn)預(yù)計(jì)有多大。通過(guò)最小-最大搜索將圖像轉(zhuǎn)換為響應(yīng)圖就可識(shí)別棋盤角點(diǎn),與Harris探測(cè)器響應(yīng)圖[14]不同,它是在圖像平面的x和y方向上圍繞選定點(diǎn)旋轉(zhuǎn)。在響應(yīng)圖中確定局部極大值后,可以通過(guò)亞像素峰值算法估計(jì)相應(yīng)角點(diǎn)的亞像素位置。此方法不僅能夠保持高亞像素精度,而且對(duì)低對(duì)比度和圖像噪聲具有更好的魯棒性。
當(dāng)前,在對(duì)數(shù)據(jù)進(jìn)行直線擬合處理時(shí),經(jīng)常使用的損失函數(shù)是L2損失和L1損失。L2損失對(duì)異常點(diǎn)敏感,隨著數(shù)據(jù)誤差的增加,其損失是呈平方增加的,這將使損失函數(shù)的值增加,進(jìn)而導(dǎo)致擬合出來(lái)的直線偏離正常數(shù)據(jù),因此L2損失函數(shù)的魯棒性較差。
(2)
式中:e表示生成數(shù)據(jù)與真實(shí)值的殘差,下同。
L1損失的值呈線性增加,比L2損失要更加魯棒,但是其在0處是不可導(dǎo)的,因此對(duì)數(shù)據(jù)優(yōu)化比較困難。
s(e)=|e|
(3)
Huber損失[15]繼承了L2損失和L1損失的優(yōu)點(diǎn),對(duì)數(shù)據(jù)中的異常點(diǎn)沒(méi)有L2損失那么敏感,并且在每一處都可導(dǎo)。如圖2所示,Huber損失在本質(zhì)上是絕對(duì)誤差,只是在誤差很小時(shí),就變?yōu)槠椒秸`差。誤差降到多小時(shí)變?yōu)槎握`差由超參數(shù)τ來(lái)控制,當(dāng)殘差e在[-τ,τ]之間時(shí),等價(jià)為L(zhǎng)2損失,而在[-∞,τ]和[τ,+∞]時(shí)等價(jià)為L(zhǎng)1損失。
圖2 τ=1時(shí)3種損失函數(shù)曲線圖
(4)
在機(jī)器視覺(jué)中,要確定世界坐標(biāo)系(O-XwYwZw)與圖像像素坐標(biāo)系(U-O-V)之間的轉(zhuǎn)換關(guān)系,就必須對(duì)相機(jī)的參數(shù)進(jìn)行標(biāo)定。目前經(jīng)典且高效的方法是張氏標(biāo)定法[16]:
(5)
線結(jié)構(gòu)光三維測(cè)量模型如圖3所示,Oc為相機(jī)坐標(biāo)系原點(diǎn)(即光心);L為線激光投射在靶標(biāo)平面的光條;L′為激光條紋在像素坐標(biāo)系下的成像。
圖3 線結(jié)構(gòu)光三維測(cè)量模型
在二維圖像中,某條直線的方程可以表示為:
(6)
先提取圖像的激光光條中心點(diǎn)的像素坐標(biāo),然后對(duì)提取的中心點(diǎn)使用Huber Loss進(jìn)行直線擬合,得到直線方程的向量表示:
(7)
式中:(u0,v0)為直線方程中的一點(diǎn),(m,n)為直線的方向向量。聯(lián)立式(6)、式(7)可以推出α=n,β=-m,γ=m·v0-n·u0。
在相機(jī)坐標(biāo)系下的空間直線與相機(jī)光心構(gòu)成一個(gè)平面,此平面過(guò)相機(jī)坐標(biāo)系原點(diǎn),故這個(gè)平面方程的常數(shù)項(xiàng)系數(shù)為0,如圖3所示,假設(shè)這個(gè)平面的法向量為no=(A0,B0,C0)T,則此平面的方程可以表示為:
(8)
對(duì)式(6)的像素坐標(biāo)進(jìn)行一個(gè)空間變換,將其轉(zhuǎn)換到相機(jī)坐標(biāo)系后可表示為:
(9)
即:
(10)
聯(lián)立式(8)和式(10)可以得到此平面的法向量:
(11)
把世界坐標(biāo)系建在棋盤格靶標(biāo)平面上,其坐標(biāo)原點(diǎn)與棋盤格第一個(gè)角點(diǎn)重合,Z軸垂直于靶標(biāo)平面(如圖3所示)。取靶標(biāo)平面的法向量nw=(0,0,1)T,平面靶標(biāo)上的第一個(gè)特征點(diǎn)p0=(0,0,0),其在相機(jī)坐標(biāo)系下的坐標(biāo)為pc0=(x0,y0,z0),因此靶標(biāo)平面在相機(jī)坐標(biāo)系下的法向量:
nc=[r1r2r3]·nw=r3
(12)
特征點(diǎn)的坐標(biāo)為:
(13)
故靶標(biāo)平面在相機(jī)坐標(biāo)系下的方程可以表示為:
(14)
至此兩個(gè)平面的法向量均已標(biāo)定,并且統(tǒng)一到了相機(jī)坐標(biāo)系下。將獲得的兩個(gè)法向量進(jìn)行叉乘,即可求得在相機(jī)坐標(biāo)系下兩平面相交的空間直線的點(diǎn)向式方程:
(15)
式中:(a,b,c)為相機(jī)坐標(biāo)系下空間直線的方向向量,(xp,yp,zp)為此空間直線上的一點(diǎn),可由式(8)與式(14)得到。
采集棋盤靶標(biāo)在不同位姿下的圖像,通過(guò)式(15)可以獲得在相機(jī)坐標(biāo)系下的若干條空間直線。最后通過(guò)最小二乘法對(duì)這些空間坐標(biāo)擬合出激光平面[17],從而求得激光平面方程:
AC·XC+BC·YC+CC·ZC+DC=0
(16)
式中:AC、BC、CC、DC為相機(jī)坐標(biāo)系下激光平面方程的系數(shù),為方便計(jì)算設(shè)DC=1。
采集的圖像經(jīng)過(guò)相機(jī)標(biāo)定后可以獲得像素坐標(biāo)系與相機(jī)坐標(biāo)系之間的投影關(guān)系:
(17)
相機(jī)內(nèi)參K即為投影矩陣,聯(lián)立式(16)與式(17)能夠得到像素坐標(biāo)(u,v)對(duì)應(yīng)相機(jī)坐標(biāo)系下的空間坐標(biāo)(XC,YC,ZC)的具體計(jì)算表達(dá)式:
(18)
至此,線結(jié)構(gòu)光傳感器參數(shù)標(biāo)定完成,通過(guò)圖像中的激光條紋中心能夠獲得物體表面在相機(jī)坐標(biāo)系下的三維成像。
實(shí)驗(yàn)所用平臺(tái)如圖4所示,傳感器中的一字線激光波長(zhǎng)為650 nm,功率100 mW,工作電壓為DC 12 V。相機(jī)選用某公司的MV-HS510GC工業(yè)相機(jī),分辨率為2000 ×2000 pixel,鏡頭為手動(dòng)聚焦的定焦鏡頭BT-23C0814MP5,焦距為8 mm。參照物選擇內(nèi)角點(diǎn)為11×8的棋盤格。
圖4 實(shí)驗(yàn)平臺(tái)
標(biāo)定激光平面的完整流程如下:
步驟1:拍攝激光照射在棋盤格空白區(qū)域的圖像,改變棋盤格位姿,理論上2幅圖像就能滿足要求,為提高擬合的精度,一共采集12幅有效圖像;
步驟2:使用高精度亞像素角點(diǎn)檢測(cè)方法[13]對(duì)圖像進(jìn)行角點(diǎn)檢測(cè)和定位,然后對(duì)相機(jī)使用張正友標(biāo)定法獲得相機(jī)內(nèi)外參數(shù);
步驟3:使用基于Hessian的Steger算法對(duì)所采集的圖像的激光條紋中心進(jìn)行提取[18],然后通過(guò)Huber Loss[15]函數(shù)對(duì)中心點(diǎn)進(jìn)行直線擬合,得到圖像光條直線的某一點(diǎn)及方向向量;
步驟4:利用相機(jī)的內(nèi)外參分別求出在相機(jī)坐標(biāo)系下棋盤格平面的法向量及圖像光條直線與光心所構(gòu)成平面的法向量,然后求這兩個(gè)平面相交形成的空間直線的點(diǎn)向式方程;
步驟5:重復(fù)步驟3和步驟4,能夠得到相機(jī)坐標(biāo)系下12條空間直線點(diǎn)向式方程。每條直線在Y軸方向等距提取若干空間特征點(diǎn),將所獲得的特征點(diǎn)應(yīng)用最小二乘法進(jìn)行平面擬合。
為驗(yàn)證本文所提方法的有效性,采用文獻(xiàn)[10-11]以及本文所提算法使用同一組實(shí)驗(yàn)圖像對(duì)LSLVS進(jìn)行標(biāo)定,得到的激光平面方程如表1所示。
表1 光平面標(biāo)定結(jié)果
從表1能夠看出,本文方法與文獻(xiàn)[10-11]方法的標(biāo)定結(jié)果非常接近,因此本文所提方法是可行的。為了確定本文所提方法的傳感器系統(tǒng)精度如何,使用表1中標(biāo)定的3個(gè)平面方程分別對(duì)圖5所示長(zhǎng)度為7±0.06 mm的標(biāo)準(zhǔn)量塊生成點(diǎn)云。
圖5 量塊圖像
然后進(jìn)行5次對(duì)比測(cè)量,得到的測(cè)量結(jié)果如表2所示。
表2 量塊測(cè)量結(jié)果
可以看出,本文標(biāo)定的LSLVS所測(cè)量量塊的平均測(cè)量誤差約為0.036 mm,測(cè)量的精度高于文獻(xiàn)[10]的方法,其原因一方面是文獻(xiàn)[10]方法在圖像光條中心點(diǎn)提取與實(shí)際中心點(diǎn)有偏差時(shí),光心與歸一化平面中心點(diǎn)所構(gòu)成的射線與靶標(biāo)平面相交時(shí)形成的特征點(diǎn)的偏差會(huì)進(jìn)一步被放大。另一方面,本文使用的角點(diǎn)檢測(cè)算法對(duì)噪聲更魯棒,損失函數(shù)在誤差很小時(shí)變?yōu)槠椒秸`差。雖然本文方法的平均測(cè)量誤差比文獻(xiàn)[11]方法略高,但也在標(biāo)準(zhǔn)量塊的尺寸偏差范圍之內(nèi)。
本文提出了一種線結(jié)構(gòu)光視覺(jué)傳感器標(biāo)定方法,通過(guò)標(biāo)定兩個(gè)平面的法向量,從而得到這兩平面相交的空間直線方向向量,改變靶標(biāo)位姿能夠獲得多條空間直線的方向向量,最后在每條直線上等距取點(diǎn)進(jìn)行激光平面擬合。首先,本文方法獲得了較多的特征點(diǎn),解決了傳統(tǒng)方法特征點(diǎn)少導(dǎo)致系統(tǒng)精度低的問(wèn)題。其次,基于快速角點(diǎn)檢測(cè)算法與損失函數(shù),提升了系統(tǒng)標(biāo)定的速度與抗干擾能力。實(shí)驗(yàn)表明此方法魯棒性較好,能夠適應(yīng)較復(fù)雜的環(huán)境。但此方法在曝光不足時(shí)存在特征點(diǎn)識(shí)別不準(zhǔn)確,曝光過(guò)度時(shí)存在激光光條提取出錯(cuò)的情況,這也是下一步需要解決的難題。