皮金柱, 梁艷陽, 何宏森
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621000)
傳統(tǒng)的三維模型測量手段主要有基于被動光測量和主動光測量。基于主動光的非接觸式三維測量技術(shù)在現(xiàn)代工業(yè)中占據(jù)重要的地位且精度高于被動光的方法。主動光視覺按投射結(jié)構(gòu)光的屬性分為散斑、線結(jié)構(gòu)光、光柵等,主動光視覺通過人為投射具有某種屬性的結(jié)構(gòu)光,來解決由于物體缺乏紋理而造成的測量困難。
文獻(xiàn)[1]提出了一種基于面結(jié)構(gòu)光的刀具三維測量系統(tǒng),采用多頻外差法與4步相移法結(jié)合的方法使系統(tǒng)獲得了較高的測量精度,測量誤差小于0.09 mm。文獻(xiàn)[2]提出了一種雙頻相移三維測量方法,使用通過四步相移法求解包裹相位來建立條紋周期編號組合表,通過獲得條紋周期數(shù)和利用條紋周期與包裹相位之間的數(shù)學(xué)關(guān)系得到絕對相位,實(shí)現(xiàn)解包裹。文獻(xiàn)[3]中采用格雷碼—相移組合的結(jié)構(gòu)光,結(jié)合雙目立體視覺技術(shù)的三維表面測量方法,重建結(jié)果驗(yàn)證該方法的準(zhǔn)確性和可靠性。文獻(xiàn)[4]針對牙齒的三維輪廓重建提出了一種基于張正友標(biāo)定法提出一種快速、精確的相機(jī)與投影儀聯(lián)合標(biāo)定的方法提高系統(tǒng)的精度,測量誤差小于0.1 mm。文獻(xiàn)[5]中提出了一種雙頻相移與格雷碼結(jié)合的方法,消除了測量過程中的由周期跳變導(dǎo)致的粗大誤差,有效提高了系統(tǒng)的精度。
本文提出了基于RGB格雷碼和相移法相結(jié)合的三維重建方法。采用RGB格雷碼的編碼方式進(jìn)行條紋定級。與傳統(tǒng)的二值格雷碼與相移法相比,64級條紋之內(nèi)僅需要3幅條紋圖,有效減少了條紋圖的幅數(shù),減少解碼周期提高重建的精度,更好地滿足實(shí)時重建需求。
系統(tǒng)的總體方案設(shè)計(jì)如圖1所示, 首先當(dāng)投影儀投射初始相位為0,π/2,π,3π/2的正弦光柵時,雙目相機(jī)采集不同相位的圖片。然后將3幅RGB格雷碼條紋投射在立體模型表面,用同樣的方式記錄變形的格雷碼條紋。
圖1 系統(tǒng)平臺設(shè)計(jì)
系統(tǒng)流程如圖2所示,由于左右相機(jī)采集圖片的順序是已知的,分別計(jì)算相位主值和條紋級數(shù),最后求出初始相位為0時,經(jīng)立體模型調(diào)制后正弦光柵的真實(shí)相位分布,將左右視圖進(jìn)行立體匹配生成視差圖。對雙目相機(jī)進(jìn)行標(biāo)定,根據(jù)標(biāo)定參數(shù)和視差圖求出立體模型的三維點(diǎn)云。
圖2 系統(tǒng)流程
2.1.1 正弦光柵生成
本文使用投影機(jī)投射可編程的正弦光柵相移條紋[6,7]。當(dāng)投影系統(tǒng)的光強(qiáng)分布滿足余弦分布時,其光強(qiáng)則可表示[8]為
F0(x,y)=A(x,y){B(x,y)+C(x,y)cosφ(x,y)}
(1)
式中A(x,y)為物體表面的反射率,B(x,y)為背景光強(qiáng),C(x,y)為條紋幅度,φ(x,y)為初始相位。本文采用四步相移法[5],需要4幅相位間隔π/2度的條紋圖。通過大量的實(shí)驗(yàn)數(shù)據(jù)分析確定采樣間隔為一個像素點(diǎn)。由于該系統(tǒng)對立體模型的輪廓進(jìn)行測量時,其深度信息相對變化幅度較大,故選取的采樣周期應(yīng)較大一些,本文選取的采樣周期為1/32。設(shè)T為采樣周期,在光柵原圖中每一個點(diǎn)賦值Fi(x,y)
Fi(x,y)=127.5+127.5sin(i2π/T+0.5tπ)
(2)
式中t=0,1,2,3分別為4次相移。生成的正弦光柵如圖3所示。
圖3 正弦光柵
2.1.2 正弦光柵相位主值解包裹
正弦光柵的解碼包括相位主值的求取和真實(shí)相位值的展開兩步[9]。在本文中采用四步相移法計(jì)算包裹相位,在采集變形光柵圖片時,由于受到現(xiàn)場環(huán)境和采集設(shè)備的影響,采集的圖像中會存在失真及各種噪聲點(diǎn)。使得到的光柵圖像中會產(chǎn)生一些錯誤灰度值,這種情況對整個測量結(jié)果造成不利影響。經(jīng)分析圖像的主要噪聲點(diǎn)為斑點(diǎn)噪聲,因此要在解碼之前先對采集的圖像進(jìn)行中值濾波[10]。由于正弦光柵投射到漫反射物體表面后,CMOS相機(jī)獲取的變形光柵圖像滿足式(1),根據(jù)式(2)可以得到相位差為π/2的4幅變形光柵圖片,由式(2)可得
(3)
(4)
從式(3)、式(4)可以計(jì)算出n幀相移的相位函數(shù)[7]
(5)
本文選擇四步相移法,故n=4,根據(jù)式(5)解得相位主值為
(6)
根據(jù)式(6)求得左相機(jī)圖像進(jìn)行相位矯正后的相位主值分布。
2.2.1 RGB格雷碼編碼
傳統(tǒng)的利用格雷碼編碼的圖像中只包含黑、白兩種顏色的條紋[11],編碼所需要投影的編碼圖像數(shù)多,解碼所需時間長。本文采用RGB格雷碼對光柵條紋進(jìn)行定級,為使條紋之間的差別達(dá)到最大,本系統(tǒng)投射的彩色條紋只采用每一通道的最大灰度255,即使用三基色紅(255,0,0)、綠(0,255,0)、藍(lán)(0,0,255)和(0,0,0)來編碼。使用三基色編碼使系統(tǒng)的噪聲大大減少,有利于圖像正確解碼得到可靠的數(shù)據(jù)。本文的編碼如圖4所示,其中01代表RGB通道值為(255,0,0),11代表RGB通道值為(0,0,255),10代表RGB通道值為(0,255,0),00代表RGB通道值為(0,0,0)。
圖4 彩色光柵編碼
同理,第二級條紋在T1,T2,T3時刻條紋的RGB通道值分別為(255,0,,0)、(0,0,0)和(255,0,0),以此類推。第一級條紋在T1時刻投射三個通道值為(255,0,0)的條紋,在T2時刻投射三通道值為(0,0,0),T3時刻投射三通道值為(0,0,0)的條紋。根據(jù)圖4的編碼原理,可以生成相對應(yīng)的三幅格雷碼圖片,如圖5所示。
圖5 光柵原圖
傳統(tǒng)方法在基于二值的格雷碼編碼時需要投射log 2n幅圖片[9](n為條紋級數(shù)),而本文的方法有效地減少了投射圖片,僅需要log 4n/3+1幅圖片,很大程度提高了測量效率。
2.2.2 正弦光柵條紋定級
四步相移法是利用反正切函數(shù)求解相位主值,因此,所求得的相位都被折疊在[π,- π]之間。存在跳變和不連續(xù)的狀態(tài),需要對折疊的相位進(jìn)行展開,才能得到連續(xù)分布的真實(shí)相位值[10,12]。
本文采用RGB格雷碼對正弦光柵相位進(jìn)行展開。根據(jù)式(2)可知,sin(i2π/T+0.5tπ)=0時,解得i值Ii,其中Ii為每個周期的正弦光柵條紋中心處。 由于正弦光柵與RGB格雷碼的節(jié)距和位置是一樣的,故格雷碼條紋中心與正弦條紋中心重合。 由圖4知,正弦光柵第一級條紋中心編碼為010000,第二級為010001,第三極為010010,以此類推,第64級為111111。采集t1時刻經(jīng)物體高度調(diào)制的光柵圖片,將RGB光柵圖片的三通道轉(zhuǎn)換為單通道,并用灰度重心法提取條紋中心線[13,14],根據(jù)條紋中心的位置,對比t1,t2,t3時刻對應(yīng)位置光柵圖的三個通道的像素值,根據(jù)式(8)得到條紋中心處每個像素對應(yīng)的編碼值。分析格雷碼條紋中心處和非條紋中心處的像素的灰度值,得到解碼時所需的閾值Th,Tl。對照圖4的編碼列表,由式(7)、式(8)可以解出條紋級數(shù)K為
K=P1+P2+P3
(7)
式中Th設(shè)為最大值,Tl為最小值,r,g,b為對應(yīng)光柵圖片的R,G,B通道值。
由式(2)得到正弦光柵的相位主值φ,由式(7)求出正弦光柵條紋級數(shù)K,將φ和K帶入公式(8)可以得到相位真實(shí)值φ
φ=φ+2Kπ
(8)
本文采用張正友平面標(biāo)定法求出相機(jī)的內(nèi)參數(shù)和外參數(shù),然后求出左相機(jī)到右相機(jī)的旋轉(zhuǎn)平移矩陣R,T。由于在雙目的左右視圖中,每一行中每個像素的φ值是唯一的,根據(jù)雙目視覺原理的極線約束條件知,左相機(jī)相位分布圖中的每一個點(diǎn)在右相機(jī)相位視圖的極線上都有唯一的點(diǎn)與之相對應(yīng),逐點(diǎn)求出視差值得到的左視圖的視差圖。
實(shí)驗(yàn)平臺采用Inter i7730處理器,三菱MD—565X投影儀,BASLER PIA 2400工業(yè)相機(jī),分辨率為1 280×1 024,實(shí)驗(yàn)中的立體模型采用的是立體的人臉石膏模型。
采用張正友標(biāo)定法對相機(jī)標(biāo)定,雙目相機(jī)拍攝14幅以上個不同位置的棋盤格標(biāo)定板圖像。求出左右相機(jī)的內(nèi)外參數(shù)矩陣。
雙目標(biāo)定完成后,將正弦光柵投射于待測物體表面,得到4幅相位差為π/2的光柵編碼圖案,如圖6(a)~圖6(d)所示。根據(jù)式(6)求得正弦光柵的相位主值,并將相位主值歸一化為(0~255),得到相位主值分布圖,如圖6(e)所示。
圖6 正弦光柵編碼
相位主值具有周期性不能用于立體匹配,需要用RGB格雷碼將相位展開。將3幅格雷碼圖案按順序投射于被測物體表面,得到求取相位真實(shí)值所需要的編碼圖案,如圖7所示。
圖7 RGB格雷碼與相位
由實(shí)驗(yàn)得知,投射RGB通道值為(255,0,0),(0,255,0),(0,0,255)的條紋,得到的真實(shí)通道為230以上,投射RGB通道值為(0,0,0)的條紋,得到的真實(shí)通道為30以下,故式(8)中的Th,Tl設(shè)置為230和30。完全滿足根據(jù)RGB通道值大小為解碼依據(jù)的要求。根據(jù)圖7和式(7),可以解得每個條紋的編碼值,然后對照圖4的解碼方式,可以確定每條格雷碼條紋的級數(shù)K。將K值和由式(6)求得的φ值帶入式(8),得到正弦光柵的真是值分布圖,如圖7 (d)所示。
本實(shí)驗(yàn)中條紋級數(shù)為64級,多頻相移法解碼所需的圖片數(shù)量至少8幅[1],二值格雷碼與相移法需要投射的條紋幅數(shù)最小為11幅[3,4],因此,傳統(tǒng)格雷碼與相移法比多頻相移法的運(yùn)算效率低,但精度比多頻相移法高。本文方法可以直接進(jìn)行相位主值求取和對條紋級數(shù)定級,且64級條紋之內(nèi)需要投射的格雷碼條紋圖片為7幅。本文方法在條紋定級時僅需要3幅條紋圖,提升了重建的速率。為了驗(yàn)證本文提出的算法的優(yōu)越性,本文方法和多頻相移法以及傳統(tǒng)二值格雷碼與相移法分別對投射有正弦光柵的模型進(jìn)行相位解包裹和三維重建。分別從時間和點(diǎn)云精度及視差圖效果做對比,由實(shí)驗(yàn)結(jié)果得出,在同樣的圖片分辨率下,本文方法比傳統(tǒng)二值格雷碼與相移法、多頻相移法效率更高。多頻相移法需要在求出相位主值之后才能求取相位真實(shí)值,不利于并行計(jì)算,速率受到限制。 由圖8(a)知,在同樣分辨率的圖片下,本文的方法比多頻相移法的速率要高1.5倍左右,比二值格雷碼與相移法的速率高1.2倍左右。本文算法和多頻相移法及二值格雷碼與相移法應(yīng)用到同一標(biāo)準(zhǔn)球體表面的三維重建中,將點(diǎn)云擬合為球面并求出重建球面半徑,重建半徑與標(biāo)準(zhǔn)半徑做差得到重建誤差,連續(xù)測量10次得到圖8(b)所示的誤差分布圖??芍疚姆椒ǖ木瓤梢赃_(dá)到0.025 mm,比多頻相移法和二值格雷碼與相移法的精度分別提高了0.02 mm和0.03 mm。
圖8 各算法性能對比
將該方法應(yīng)用到標(biāo)準(zhǔn)平面的三維重建中,如圖可知本文方法噪聲低于多頻相移法及二值格雷碼與相移法。利用三種不同方法重建模型的視差圖,本文的方法點(diǎn)云稠密,噪點(diǎn)少。根據(jù)雙目相機(jī)標(biāo)定參數(shù)和視差圖,得到模型的三維點(diǎn)云,如圖9所示。
圖9 三維模型點(diǎn)云及局部點(diǎn)云對比圖
本文提出了一種新的RGB格雷碼編碼方式,該方法在64級條紋之內(nèi)將解碼需要的投影條紋數(shù)量減少到3幅,提升了傳統(tǒng)格雷碼和多頻相移法的相位解包裹精度和效率。后續(xù)將對重建過程中存在的噪聲和傳感器融合的精度進(jìn)行深入研究。