毛雪憶,李文國(guó)
(昆明理工大學(xué) 機(jī)電工程學(xué)院,云南 昆明 650500)
線(xiàn)結(jié)構(gòu)光三維測(cè)量技術(shù)是一種非接觸式測(cè)量方法,被廣泛應(yīng)用于智能制造[1]、醫(yī)學(xué)診斷[2]、工業(yè)產(chǎn)品設(shè)計(jì)[3]等領(lǐng)域。光條圖像中心點(diǎn)的提取是線(xiàn)結(jié)構(gòu)光視覺(jué)測(cè)量中的一項(xiàng)關(guān)鍵的技術(shù)。由相機(jī)采集到的光條圖像中,條紋中心線(xiàn)包含了被測(cè)物體的表面三維輪廓信息,是物體表面三維重構(gòu)的基礎(chǔ)[4]。條紋中心線(xiàn)提取的精度直接影響三維測(cè)量的精度。
目前,最常用的線(xiàn)結(jié)構(gòu)光中心線(xiàn)提取方法有幾何重心法、閾值法、灰度重心法和Steger法等。幾何重心法[5]和閾值法[6]利用光條圖像在其法線(xiàn)方向上的灰度分布呈高斯分布的曲線(xiàn)特征,通過(guò)先檢測(cè)光條圖像的邊緣,再取其中間點(diǎn)作為該法線(xiàn)方向上的中心點(diǎn),用上述方法遍歷整個(gè)光條來(lái)獲得光條中心線(xiàn)。這兩種方法處理速度快,但精度較低,對(duì)噪聲敏感?;叶戎匦姆╗7]將光條紋法線(xiàn)方向上指定寬度區(qū)域的灰度重心作為該橫截面上的光條紋中心點(diǎn)。這種方法在處理有噪聲干擾或者光帶亮度不集中等問(wèn)題時(shí),提取精度會(huì)明顯下降?;贖essian矩陣的Steger法[8]是對(duì)光條橫截面上的灰度分布利用泰勒級(jí)數(shù)展開(kāi)式來(lái)求極值,該方法精度高,但容易受到環(huán)境光的干擾而影響精度,不適用于有環(huán)境光的條件。
本文實(shí)驗(yàn)的系統(tǒng)結(jié)構(gòu)是相機(jī)垂直向下拍照,發(fā)散型多線(xiàn)激光器傾斜投射。傾斜投射的發(fā)散型多線(xiàn)激光器會(huì)造成每一根條紋中心線(xiàn)偏移。本文的研究方法分為標(biāo)定和測(cè)量?jī)蓚€(gè)階段:在標(biāo)定階段進(jìn)行相機(jī)標(biāo)定,計(jì)算結(jié)構(gòu)約束的參數(shù)以及各個(gè)條紋的偏移系數(shù);在測(cè)量階段,利用偏移系數(shù)求出條紋中心線(xiàn)。由于在測(cè)量階段往往有環(huán)境光的干擾,故現(xiàn)有的中心線(xiàn)提取方法會(huì)存在較大誤差,無(wú)法準(zhǔn)確提取出中心線(xiàn)。本文提出的方法受環(huán)境光的影響較小,可提高測(cè)量系統(tǒng)的抗干擾能力。
如圖1所示,多線(xiàn)結(jié)構(gòu)光條紋中心線(xiàn)的獲取主要由圖像獲取系統(tǒng)和多線(xiàn)結(jié)構(gòu)光條紋中心線(xiàn)提取系統(tǒng)組成。多線(xiàn)結(jié)構(gòu)光條紋中心線(xiàn)獲取系統(tǒng)由4個(gè)模塊組成。由于在無(wú)環(huán)境光時(shí),Steger法提取的條紋中心線(xiàn)的精度非常高,因此在計(jì)算系統(tǒng)空間結(jié)構(gòu)參數(shù)時(shí)可采用此種方法。提取中心線(xiàn)后,對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行處理和誤差分析。
在無(wú)環(huán)境光下,對(duì)系統(tǒng)進(jìn)行相機(jī)標(biāo)定[9-10],得到相機(jī)的內(nèi)部參數(shù)和外部參數(shù)。粗提取條紋中心線(xiàn)算法步驟如下:
圖1 多線(xiàn)結(jié)構(gòu)光條紋中心線(xiàn)獲取系統(tǒng)的組成Figure 1. The composition of the multi-line structured light stripe centerline acquisition system
步驟1通過(guò)圖像采集設(shè)備采集多線(xiàn)激光條紋的原始圖像,設(shè)圖片中最中間條紋的編號(hào)為mid,其它條紋的編號(hào)如圖2所示。對(duì)圖3(a)所示的原始圖像進(jìn)行預(yù)處理,降低圖像噪聲[11],得到圖3(b);
圖2 條紋編號(hào)示意圖Figure 2. Schematic diagram of stripe numbering
步驟2對(duì)圖3(b)所示的原始圖像進(jìn)行邊緣提取[12]并設(shè)置感興趣區(qū)域(Region of Interest,ROI),得到mid條紋邊緣像素值和ROI圖像,如圖4所示;
(a) (b)
步驟3設(shè)置灰度值為R,遍歷圖4中ROI區(qū)域的點(diǎn),當(dāng)灰度值大于R時(shí)輸出此點(diǎn)的像素坐標(biāo),灰度值小于R則舍去。具體的原理為:經(jīng)過(guò)灰度化后的光條紋圖像中有光條紋的部分的灰度值范圍是240~255,無(wú)光條紋的部分灰度值范圍是70~130,取灰度值R為200,即可輸出圖像中有光條紋部分的像素坐標(biāo);
步驟4條紋像素寬度d為
(1)
式中,d為mid條紋像素寬度;n表示每根條紋左、右兩邊緣像素對(duì)的編號(hào);x2n和x2n-1表示條紋左右邊緣像素對(duì)的橫坐標(biāo);s表示每根條紋邊緣左右像素對(duì)的總數(shù);
圖4 mid條紋ROI區(qū)域Figure 4. ROI area numbered mid stripe
步驟5取條紋像素寬度d的中間值t,與步驟2中的條紋左邊緣的像素值相加,即為粗略條紋中心線(xiàn)的像素值p(u,v)。
1.2.1 相機(jī)鏡頭中心坐標(biāo)計(jì)算
本文的世界坐標(biāo)參考系是以相機(jī)中心為原點(diǎn)進(jìn)行計(jì)算的,故相機(jī)鏡頭中心坐標(biāo)為(0, 0, 0)。
1.2.2 光斑中心的世界坐標(biāo)的計(jì)算
提取圖3(b)中的光斑邊緣,ROI圖像如圖5所示,均值提取光斑像素坐標(biāo),求得光斑中心點(diǎn)的像素坐標(biāo),并轉(zhuǎn)化為三維坐標(biāo)(xc,yc,zc)。
圖5 圖像邊緣提取Figure 5. Image edge extraction
1.2.3 激光器發(fā)射中心的世界坐標(biāo)的計(jì)算
激光器發(fā)射中心的世界坐標(biāo)的算法步驟如下:
步驟1采用Steger算法提取圖中3(b)中L12和R12條紋中心線(xiàn)像素坐標(biāo)[13],利用相機(jī)內(nèi)、外參數(shù)將中心線(xiàn)的二維像素坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)系下的三維坐標(biāo);
步驟2通過(guò)隨機(jī)抽樣一致性算法[14](Random Sample Consensus,RANSAC)求得L12和R12所在光平面方程[15];
步驟3將L12和R12所在的兩條光平面相交,得到空間點(diǎn)向式直線(xiàn)方程
(2)
式中,(x0,y0,z0)是激光器發(fā)射中心P的三維坐標(biāo)值;a、b和c為直線(xiàn)的方向向量;
步驟4光斑中心點(diǎn)(xc,yc,zc)與激光器發(fā)射中心的世界坐標(biāo)(x0,y0,z0)的連線(xiàn)的方程為式(3)。
(3)
由系統(tǒng)空間結(jié)構(gòu)可知,式(2)與式(3)相交且垂直,垂足即為激光器發(fā)射中心點(diǎn),如圖6所示。聯(lián)立兩個(gè)方程,求得垂足(激光器發(fā)射中心)的世界坐標(biāo)(x0,y0,z0)。
圖6 光斑中心點(diǎn)與光平面相交線(xiàn)作垂線(xiàn)的空間關(guān)系圖Figure 6. The spatial relationship diagram of the vertical line between the center point of the spot and the light plane
1.3.1 編號(hào)為mid條紋的偏移系數(shù)計(jì)算
空間結(jié)構(gòu)約束模型如圖7所示。由發(fā)散型多線(xiàn)激光器特性知[16],在以激光器軸為參考時(shí),mid條紋的強(qiáng)度分布為標(biāo)準(zhǔn)的正態(tài)分布,如圖8所示。正態(tài)分布函數(shù)如式(4)所示。
圖7 空間結(jié)構(gòu)約束模型Figure 7. Spatial structure constraint model
圖8 傾斜的高斯分布函數(shù)圖像Figure 8. Tilted Gaussian distribution function image
(4)
式中,xc為光斑的x坐標(biāo);p為正態(tài)分布對(duì)稱(chēng)軸的位置;q為的條紋寬度。
由章節(jié)2.2得到的參數(shù)坐標(biāo)可以確定圖7模型的位置。使用本模型前,可以通過(guò)結(jié)構(gòu)調(diào)整使相機(jī)的世界坐標(biāo)中的y值與激光器發(fā)射中心的y值相同。因此,可用x、z坐標(biāo)求得夾角β(光斑中心點(diǎn)坐標(biāo)到相機(jī)坐標(biāo)的連線(xiàn)與光斑中心點(diǎn)坐標(biāo)到激光器發(fā)射中心點(diǎn)坐標(biāo)的連線(xiàn)的夾角)的三角函數(shù)關(guān)系為
(5)
式中,x0和z0為激光器發(fā)射中心點(diǎn)的坐標(biāo);xc和zc為光斑中心點(diǎn)的坐標(biāo)。
mid條紋的光平面與法線(xiàn)交點(diǎn)A的坐標(biāo)為
(6)
如圖9所示,求得中心線(xiàn)偏移量e與偏移系數(shù)k0為
e=xA-x0=fbsinβ
(7)
圖9 像素坐標(biāo)下的一整根條紋Figure 9. A whole stripe in pixel coordinates
(8)
式中,D為條紋的世界坐標(biāo)寬度;e為粗提取條紋中心線(xiàn)x坐標(biāo)與精確提取中心線(xiàn)x坐標(biāo)之間的差值;k0為偏移量與條紋寬度的比值。
1.3.2 同一光條紋各個(gè)位置的條紋偏移系數(shù)特點(diǎn)
通過(guò)分析空間結(jié)構(gòu)約束系統(tǒng)可知,同一線(xiàn)結(jié)構(gòu)光投影到的不同空間位置上的點(diǎn),其成像后的條紋偏移系數(shù)相同,具體分析如下文所述。
如圖10所示,以光斑中心點(diǎn)為原點(diǎn)建立坐標(biāo)系,設(shè)mid條紋光平面與其法線(xiàn)的交點(diǎn)A的縱坐標(biāo)為h,則點(diǎn)A與原點(diǎn)O的直線(xiàn)方程為
y=cotβ·x
(9)
圖10 以光斑中心為原點(diǎn)的系統(tǒng)空間結(jié)構(gòu)圖Figure 10. System space structure diagram based on spot center
將y=h代入上式,得點(diǎn)A的坐標(biāo) (htanβ,h)。
設(shè)在多線(xiàn)激光器坐標(biāo)系下標(biāo)準(zhǔn)正態(tài)分布的高度為fb,如圖8所示,可知在以光斑中心為原點(diǎn)的坐標(biāo)系下
fb′=fb·cosβ
(10)
以光斑中心為原點(diǎn)的坐標(biāo)系下,法點(diǎn)A上的高斯分布的最高點(diǎn)A′的y坐標(biāo)為
y′=fb·cosβ+h
(11)
因?yàn)锳′也在法點(diǎn)A與原點(diǎn)的直線(xiàn)上,故將y=y′代入式(9),求得點(diǎn)A上的高斯分布的最高點(diǎn)A'的x坐標(biāo)為
x′=fb·sinβ+htanβ
(12)
則A′的坐標(biāo)為(y0·sinβ+h·tanβ,y0·cosβ+h)。
由式(9)~式(12)可得,此根條紋的中心線(xiàn)偏移系數(shù)k為
(13)
可知,偏移系數(shù)k與A點(diǎn)的縱坐標(biāo)無(wú)關(guān),即證明同一線(xiàn)結(jié)構(gòu)光上各個(gè)點(diǎn)的條紋偏移系數(shù)相同。
1.3.3 所有條紋的偏移系數(shù)
如圖13與表2所示,根據(jù)發(fā)散型激光器自身的特性,本文以25根條紋的激光器為例。根據(jù)制造廠(chǎng)家的生產(chǎn)制造規(guī)格數(shù)據(jù),每?jī)筛鶙l紋的夾角α為定值(1.11°)。由圖7所示,求得與A點(diǎn)相鄰的B點(diǎn)坐標(biāo)如下
(14)
編號(hào)為r1條紋的中心線(xiàn)偏移量e1計(jì)算如下
e1=fb·cosβ·sinα
(15)
通過(guò)下式求得此根條紋的偏移系數(shù)
(16)
式中,D1為R1條紋的條紋寬度。以此類(lèi)推,可求得其它所有條紋的偏移系數(shù)kn。
(17)
式中,n為條紋的編號(hào)數(shù);Dn為條紋寬度。
由式(1)得到的條紋像素寬度d與式(17)的系數(shù)kn相乘得到條紋中心線(xiàn)的偏移量m偏。粗提取中心線(xiàn)像素坐標(biāo)p初(u,v)與中心線(xiàn)偏移量m偏相加,即為條紋在物體上精確的中心線(xiàn)圖像坐標(biāo)l終(u,v)。
如圖12所示,本實(shí)驗(yàn)所用到的設(shè)備有一部相機(jī)、一個(gè)鏡頭、一個(gè)激光器和一臺(tái)筆記本電腦。其中激光器的參數(shù)由表1和表2所示。實(shí)驗(yàn)流程如圖11所示。
圖11 實(shí)驗(yàn)流程圖Figure 11. Flow chart of experiment
圖12 多線(xiàn)結(jié)構(gòu)光實(shí)驗(yàn)平臺(tái)Figure 12. Multi-line structured light experiment platform
表1 激光器的主要參數(shù)
表2 激光器衍射角
圖13 多線(xiàn)結(jié)構(gòu)光示意圖Figure 13. Schematic diagram of multi-line structured light
搭建一個(gè)無(wú)環(huán)境光的實(shí)驗(yàn)臺(tái),多線(xiàn)激光器傾斜入射,相機(jī)垂直拍照[17]。采用張氏標(biāo)定法對(duì)相機(jī)進(jìn)行標(biāo)定,得到相機(jī)的內(nèi)外參數(shù)。
將L12和R12光條紋所在的光平面進(jìn)行擬合,得到這兩條光條紋所在光平面方程
(18)
將兩個(gè)光平面相交,得到空間點(diǎn)向式直線(xiàn)方程
(19)
均值提取圖5光斑中心點(diǎn)后,將其轉(zhuǎn)化為世界坐標(biāo)(-0.055,-0.01,492.12)。光斑中心與激光器發(fā)射中心的世界坐標(biāo)(x0,y0,z0)的連線(xiàn)方程為
(20)
聯(lián)立式(19)與式(20),求得激光器發(fā)射中的世界坐標(biāo)。
由圖7中參數(shù)的位置關(guān)系,求得夾角β為20.778 3°。由式(17)求得所有條紋的偏移系數(shù)。
標(biāo)定階段結(jié)束后,本文從斜平面、圓柱體高度和曲面擬合分別做了中心線(xiàn)提取實(shí)驗(yàn),并與Steger法進(jìn)行比較,其中斜平面和圓柱體高度擬合屬于平面擬合。本文中的3個(gè)實(shí)驗(yàn)需要保證參數(shù)位置關(guān)系相同。
2.2.1 斜平面擬合實(shí)驗(yàn)及分析
如圖14所示,調(diào)整使平面板傾斜于水平桌面。圖15為Steger算法提取結(jié)果。
圖14 平面板擬合實(shí)驗(yàn)結(jié)構(gòu)Figure 14. Experimental structure of plane plate fitting
(a) (b)
由圖15可以看出,當(dāng)沒(méi)有環(huán)境光時(shí),Steger算法能有效提取條紋中心線(xiàn);但是當(dāng)有環(huán)境光時(shí),Steger算法無(wú)法有效提取條紋中心線(xiàn)。
計(jì)算利用本文方法提取的中心點(diǎn)到標(biāo)定板面的距離,測(cè)量其誤差,并與采用Steger算法獲得的結(jié)果進(jìn)行比較,結(jié)果如表3所示。
表3 本文方法與Steger方法的誤差比較
由表3可以看出,當(dāng)沒(méi)有環(huán)境光時(shí),本文的方法擬合平面在測(cè)量精度方面與Steger算法處在同一個(gè)像素級(jí)(都沒(méi)有超過(guò)0.005 mm);當(dāng)有環(huán)境光時(shí),Steger算法無(wú)法有效提取中心線(xiàn),而本文提出的方法依然能有效提取中心線(xiàn),且能將精度控制在0.007 mm以?xún)?nèi),說(shuō)明本文方法除了可以控制精度,還具有較強(qiáng)的抗干擾性。
2.2.2 圓柱體高度擬合實(shí)驗(yàn)和分析
本實(shí)驗(yàn)在無(wú)環(huán)境光下提取了圓柱體上表面的條紋中心線(xiàn),對(duì)這些條紋中心線(xiàn)進(jìn)行平面擬合。通過(guò)計(jì)算圓柱體上表面與平板之間的距離,得到了圓柱體的高度。本文使用的標(biāo)準(zhǔn)圓柱體的高為70 mm,實(shí)驗(yàn)如圖16所示,誤差分析如表4所示。
(a)
表4 圓柱體高度誤差
由表4可以看出,在無(wú)環(huán)境光時(shí),Steger法擬合圓柱高度的百分比平均相對(duì)誤差為0.74%,本文的方法擬合的百分比平均相對(duì)誤差為0.686%,比Steger法提取的精度提高了0.054%,可見(jiàn)在無(wú)環(huán)境光時(shí),本文的方法能較準(zhǔn)確地提取出條紋中心線(xiàn)。
2.2.3 半球體曲面擬合實(shí)驗(yàn)及分析
曲面擬合實(shí)驗(yàn)采用的是直徑為50 mm的半球體,本實(shí)驗(yàn)在環(huán)境光下進(jìn)行,實(shí)驗(yàn)如圖17所示。由圖17(b)可以看出,Steger算法提取的條紋中心線(xiàn)存在斷口和缺失等問(wèn)題,無(wú)法準(zhǔn)確有效地采集到半球表面的點(diǎn)云。
(a) (b)
本文的方法是通過(guò)條紋寬度和偏移系數(shù)來(lái)計(jì)算條紋中心線(xiàn)的點(diǎn)云。通過(guò)對(duì)半球物體上的條紋進(jìn)行邊緣提取,得到條紋邊緣的點(diǎn)云,如圖18所示。然后,將這些點(diǎn)云擬合成橢圓。同一根條紋的邊緣線(xiàn)有兩條,擬合橢圓是一個(gè)同心橢圓。最后通過(guò)兩個(gè)橢圓的短半軸相減,得到球體表面條紋像素寬度,從而獲得條紋中心線(xiàn)點(diǎn)云。
圖18 曲面條紋邊緣提取Figure 18. Edge extraction of surface stripes
本文通過(guò)6組實(shí)驗(yàn)進(jìn)行驗(yàn)證,其中一組計(jì)算出的點(diǎn)云圖如圖19(a)所示。對(duì)這些點(diǎn)云進(jìn)行曲面擬合[18-19]后的結(jié)果如圖19(b)所示。半徑誤差如表5所示。
(a)
表5 有環(huán)境光時(shí)半球直徑誤差
由表5可以看出,在有環(huán)境光時(shí),Steger算法無(wú)法進(jìn)行半球點(diǎn)云擬合,而采用本文的方法提取條紋中心線(xiàn),重構(gòu)半球后誤差為0.57 mm,百分比相對(duì)誤差為1.14%,比高度擬合的平均相對(duì)誤差增大了0.435%。該結(jié)果說(shuō)明在曲線(xiàn)擬合時(shí),精度會(huì)因?yàn)闂l紋的彎曲而增大,進(jìn)而說(shuō)明本文的中心線(xiàn)提取方法更適用于表面相對(duì)平滑的物體。
本文提出了一種基于多線(xiàn)結(jié)構(gòu)光中心線(xiàn)提取方法。因所使用的激光器為發(fā)散型激光器,故每根條紋的中心線(xiàn)都有不同程度的偏移,造成中心線(xiàn)提取存在誤差。相較于其它的算法,該方法通過(guò)結(jié)構(gòu)約束來(lái)提取中心線(xiàn),在標(biāo)定階段搭建實(shí)驗(yàn)系統(tǒng)進(jìn)行標(biāo)定和計(jì)算偏移系數(shù),在測(cè)量階段只需通過(guò)檢測(cè)條紋像素寬度,結(jié)合偏移系數(shù)系數(shù)通過(guò)數(shù)學(xué)計(jì)算便可求出條紋中心線(xiàn)。實(shí)驗(yàn)結(jié)果表明,該方法能在有環(huán)境光時(shí)準(zhǔn)確提取中心線(xiàn),抗干擾性好、精度高。實(shí)驗(yàn)結(jié)果證明,在有環(huán)境光干擾的情況下其它方法無(wú)法提取中心線(xiàn),但是本文所提方法能有效提取條紋中心線(xiàn)。本文的方法在提取表面為平面的條紋中心線(xiàn)時(shí)的精度很高,但提取曲面物體的條紋中心線(xiàn)時(shí)精度不高,還需要進(jìn)一步探索與研究。此外,當(dāng)測(cè)量物體的表面為復(fù)雜表面時(shí),得到的激光條紋無(wú)明顯規(guī)律,條紋寬度無(wú)法準(zhǔn)確獲取,從而無(wú)法精確提取條紋中心線(xiàn)。在今后的研究中,也將針對(duì)這一問(wèn)題進(jìn)行探討和改進(jìn)。