,
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621000)
隨著我國智能制造2025計劃的制定和實施,以機器人為平臺的噴涂、焊接、打磨等自動加工方法逐漸得到應(yīng)用和普及。這種新型制造方式通常需要獲取工件的3D幾何形狀信息,以實現(xiàn)路徑自動規(guī)劃和作業(yè)。傳統(tǒng)三坐標測量儀和位移傳感器等3D測量方法存在速度慢和自動化程度低等缺點,無法滿足中小企業(yè)小批量、柔性、快速切換制造需求。
光學(xué)測量技術(shù)作為一種非接觸式檢測方法,具有安全系數(shù)高、測量速度快等優(yōu)點,因而在工業(yè)制造領(lǐng)域得到廣泛應(yīng)用[1]。目前基于光電傳感器與圖像處理技術(shù)的光學(xué)3D測量方法,主要分為兩類,一類是無附加外部激勵的被動式測量方法,如雙(多)目視覺;另一類是添加特定光源或激勵信號的主動式測量方法,如飛行時間測距法(Time of Flight,ToF)[2]、激光三角法[3]、結(jié)構(gòu)光法、相位法等。其中,雙目視覺方法(如ZED立體相機)對環(huán)境光干擾等因素要求較低,具有硬件配置簡單、標定方便等優(yōu)點,但對無紋理或弱紋理特征的物體測量重建效果不佳。ToF掃描儀以Kinect2為代表,是基于光速和往返時間確定距離,有成像速度快、可避免陰影遮擋等優(yōu)點,但其測量精度相對較低。單目線結(jié)構(gòu)光的激光三角測距法根據(jù)激光照射物體表面成像時會出現(xiàn)在不同位置,基于三角測量而獲取物體的深度信息。它在測量時需要對相機投影儀的位姿進行標定,一旦相機和投影儀的相對位置改變則需要重復(fù)標定,過程繁瑣[4-5]。
針對傳統(tǒng)方法的不足,本文結(jié)合被動式雙目視覺和主動式結(jié)構(gòu)光成像的優(yōu)點,選擇數(shù)字光處理(DLP)投影儀和雙目視覺相結(jié)合的新型成像方式,充分利用結(jié)構(gòu)光精度高和雙目視覺快速、簡潔的特點,在結(jié)構(gòu)光投影編碼、立體匹配和視差圖像濾波方法等方面進行改進,形成一套操作簡單便捷的高精度工件3D測量系統(tǒng)。
本文采用的雙目結(jié)構(gòu)光視覺系統(tǒng)框圖如圖1所示:投影儀位于中間用于投射光條紋,一般選擇基于TI公司DLP技術(shù)的LED機型;兩側(cè)相機配置普通高清鏡頭,符合小孔成像模型。相機標定采用Matlab工具箱自帶的標定工具[6],標定過程主要借助已知幾何尺寸棋盤格參考點識別來實現(xiàn)相機內(nèi)部和外部參數(shù)計算。相機內(nèi)參數(shù)主要實現(xiàn)圖像像素和物理空間坐標間的變換,包含主點、焦距、畸變和縮放因子等。相機外參數(shù)共有6個參數(shù),可以用3×3旋轉(zhuǎn)矩陣R和3×1平移向量T來表示。設(shè)左相機中心為原點,R和T表示右相機空間坐標系統(tǒng)相對左相機的映射關(guān)系。
圖1 雙目結(jié)構(gòu)光測量系統(tǒng)框圖
在建立左右相機映射關(guān)系后,可以利用三角成像原理獲得物體表面的距離測量,即深度圖像。根據(jù)極坐標幾何,圖1所示成像系統(tǒng)可以簡化為圖2: 用OT和OR表示左右相機,P為被測點。P的深度Z可計算為:
(1)
式中,b為基線長度,f為焦距,為左右相機圖像視差。因為基線和焦距可以事先標定獲得,視差圖像計算是雙目視覺成像中最重要的環(huán)節(jié)。
結(jié)構(gòu)光成像基本原理是通過人為編碼光斑條紋位置信息,建立左右相機圖像像素間對應(yīng)關(guān)系,克服無紋理或弱紋理條件下雙目相機成像的不足,從而有效提高三維重建算法速度和穩(wěn)定性。本文提出的格雷碼結(jié)構(gòu)光雙目視覺成像系統(tǒng)工作流程包括:
1)雙目視覺系統(tǒng)標定。
獲取相機內(nèi)外參數(shù); 以左相機為世界坐標原點,建立世界坐標與相機圖像間、左右相機間映射關(guān)系。
2)條紋編碼與解碼。
根據(jù)投影儀分辨率,確定結(jié)構(gòu)光條紋編碼數(shù)。然后,依次編碼條紋光斑并時序投影。兩相機同步采集圖像,進行解碼以獲得像素對應(yīng)條紋位置信息。
3)立體匹配。
根據(jù)上述步驟獲得的相機內(nèi)外參數(shù),完成左右相機圖像校正,結(jié)合條紋編碼識別結(jié)果,建立兩相機圖像像素間對應(yīng)關(guān)系;依據(jù)三角成像原理計算視差圖像。
4)視差圖像濾波和點云生成。
實際成像過程可能出現(xiàn)噪聲和遮擋等干擾,在點云圖像生成前對2D視差圖像濾波,可望有效消除成像誤差。濾波后對視差圖可以通過公式(1)計算出最終的深度圖。
圖2 雙目視覺成像
編碼技術(shù)是決定結(jié)構(gòu)光3D測量精度、分辨率和可靠性的關(guān)鍵因素。為識別圖像中的像素,結(jié)構(gòu)光條紋經(jīng)時間或空間編碼被投射到物體表面,確保每個像素或圖像塊獲得唯一到標號[7]。
格雷碼作為最具代表性和被廣泛使用的兩種灰度編碼方法之一,以穩(wěn)定和高精度而著稱。它僅包含黑白(1或0)兩種像素值,一般需要log2(n)幅條紋圖才能實現(xiàn)n個不同位置編碼。本文采用典型的二進制格雷碼(Binary Gray Code)。根據(jù)定義,在一組數(shù)的編碼中,若任意兩個相鄰的代碼只有一位二進制數(shù)不同,則稱這種編碼為格雷碼,另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱循環(huán)碼或反射碼。其特點包括:(1)格雷碼屬于可靠性編碼,是一種錯誤最小化的編碼方式。它在相鄰位間轉(zhuǎn)換時,只有一位產(chǎn)生變化。因而大大地減少了由一個狀態(tài)到下一個狀態(tài)時邏輯的混淆。當相鄰DLP投影條紋變化時,格雷碼僅改變一位,這樣與其它編碼同時改變兩位或多位的情況相比更為可靠,即可減少出錯的可能性。(2)典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補碼,它的循環(huán)、單步特性消除了隨機取數(shù)時出現(xiàn)重大誤差的可能,它的反射、自補特性使得求反非常方便。這樣既有利于消除投影過程突變誤差,也方便后續(xù)求反算法。(3)格雷碼的十進制數(shù)奇偶性與其碼字中1的個數(shù)的奇偶性相同,這樣有助于解碼前的校錯和糾錯。
這里以分辨率為854×480的投影儀為例。理論上圖像中的480個點可以用480個格雷碼來標記。但是,成像噪聲和被測物體表面反射特性點的差異可能造成單像素寬度條紋邊界提取錯誤,影響后續(xù)解碼運算和對應(yīng)關(guān)系查找。綜合考慮,最終選擇7位格雷碼方案。7位格雷碼可以生成128個編碼,投影儀的480列像素可以分成128個條紋,每4個像素共享同樣的編碼。類似地,投影儀854行分成間隔7個像素的128個條紋。圖3(a)分別給出列和行方向的格雷碼編碼示例,(b)為左相機采集的工件條紋反射圖。 通過時序疊加上述條紋圖片,所采集的圖像最終可以分解為多個4×4大小的區(qū)塊,每個區(qū)塊有唯一的行列總編號。
雖然格雷碼本身是一種可靠性編碼,具有一定的防錯、糾錯能力,但仍然可能因為場景交互作用導(dǎo)致采集圖像噪聲和解碼錯誤。本文采用一種對原格雷碼取反,再投影對照方式。該方法可望消除投影儀內(nèi)“霧化”效果,減少黑白分界處的反射率誤差。最終的投影過程是:先進行列條紋正碼投影,然后進行反碼投影,接著投射正碼行條紋,最終是反碼行條紋。依靠正反條紋的交替投射精確定位區(qū)塊邊界,實現(xiàn)像素點準確標識和解碼。
兩個相機采集的重疊區(qū)域內(nèi),需要找到實際坐標在兩幅圖案中的對應(yīng)點坐標。通過計算這些對應(yīng)點在左右兩幅圖片中的坐標的差值計算這些對應(yīng)點的視差,最終描述物體的三維特征。立體匹配算法主要是通過建立一個能量代價函數(shù),通過此能量代價函數(shù)最小化來估計像素點視差值,其實質(zhì)就是一個最優(yōu)化求解問題,通過建立合理的能量函數(shù),增加一些約束,采用最優(yōu)化理論的方法進行方程求解,這也是所有的病態(tài)問題求解方法。構(gòu)建一個完整的立體匹配算法的4個步驟:1)廣義匹配基元與特征參數(shù)選擇;2)匹配方法及策略;3)匹配代價優(yōu)化標準;4)視差細化方式。
本文采用基于區(qū)域的立體匹配算法,是對匹配圖中區(qū)域的每一個特征基元,進行視差搜索范圍內(nèi)的特征基元計算相似性,并從中選擇最優(yōu)的匹配基元。在前文中,已經(jīng)通過結(jié)構(gòu)光編碼使圖像中每個搜索區(qū)域具有唯一標志。為實現(xiàn)快速且準確的像素誤差平方和(SSD)匹配,這里提出一種高效的區(qū)域塊搜索策略。它分為粗匹配和精匹配兩個步驟:
1)粗匹配。
依據(jù)極線約束,將二維圖像的特征搜索降為一維線性搜索。因為,最小條紋單位以像素塊為單位,所以,在極線矯正和結(jié)構(gòu)光對像素塊編碼標識的基礎(chǔ)上,采用一維的區(qū)域搜索方式,獲得待匹配點區(qū)域,如圖4所示。以左相機采集的圖片為參考圖,在對應(yīng)的右相機圖像中進行搜索配對。為保證算法的通用性,將圖片的分辨率設(shè)定為H×W,x,y方向上的搜索步長分別為dx,dy,以像素為單位。在格雷碼方案確定時,最小像素塊大小為4×7個像素。通過對矯正后的圖相對進行粗匹配的流程圖如圖3所示。過程如下:
(1)首先構(gòu)造一個小窗口,用此窗口將左邊的圖像覆蓋,選出覆蓋區(qū)域內(nèi)的像素;
(2)同樣用窗口將右邊的圖像覆蓋,選出覆蓋區(qū)域的像素;
圖3 投影序列和左攝像機的編碼工件圖像
(3)比較左右覆蓋區(qū)域的格雷碼解碼值;
(4)以搜索步長分別從y向和x向移動右邊圖像的窗口,重復(fù)第3步,直至解碼值相等或超出搜索范圍時跳出;
(5)找到右圖像對應(yīng)的窗口,即找到了左邊圖像的最佳匹配的像素塊。依次進行迭代,找到左邊所有的像素塊相對應(yīng)的右邊像素塊。
2)精匹配。
在粗匹配成功的基礎(chǔ)上,左右圖像對像素塊的位置已經(jīng)確定好,此時需要對每個像素塊里的像素進行一一匹配。針對滑動窗口的方式,以像素為匹配基元,在匹配點的一維方向上以SSD值為相似性原則進行計算搜索,得到最匹配的點。通過上述步驟,來進一步精準匹配的精確度。
由于物體表面復(fù)雜的紋理,會導(dǎo)致在有效的測量范圍內(nèi),出現(xiàn)對局部區(qū)域無法測量的現(xiàn)象,這種區(qū)域又稱為測量死區(qū)。在搭建硬件平臺時考慮到測量的有效區(qū)域,所以本文出現(xiàn)的測量死角為投影儀可以投影但兩個相機不能采集到的區(qū)域。
對于此現(xiàn)象,左相機采集的圖像中匹配失敗的點,將應(yīng)用插值的方法來進行視差填充處理。
對于這種測量死區(qū)最精確的方法是旋轉(zhuǎn)待測物件,通過在不同的角采集來消除遮擋效果。對比幾種插值方法,Lanczos插值具有速度快,效果好,性價比最高的優(yōu)點,為了考慮視差圖像的完整性,進行圖像的Lanczos插值[14]。
每個輸入樣本對插值的影響由插值重構(gòu)核L(x)定義,稱為Lanczos核。核函數(shù)由歸一化的正弦函數(shù)sin(x)與sin(x/a)相乘所得,公式(2)所示。 其中參數(shù)a是正整數(shù),通常為2或3,決定了Lanczos核的大小。
(2)
為補充視差圖中空白部分如點(xs,ys)處的像素值,首先在x方向上進行插值產(chǎn)生4個中間值,I0,I1,I2,I3:
(3)
其中:S(xsi,ysk)為(xsi,ysk)點的像素值。然后利用公式(4)沿y軸內(nèi)插中間值Ik來計算該點的像素值D(xs,ys)。
(4)
其中:ai=L(xs-xsi),bk=L(ys-ysi),L(x)為Lanczos核函數(shù),這里使用的核函數(shù)尺寸參數(shù)a為2。
圖4為三維測量平臺實物圖,測量裝置由兩個工業(yè)相機和一個投影儀組成:兩個相機分辨率為3856×2764,以0.3-0.8 m的距離觀察物體,配套鏡頭焦距為12 mm,基線長度約為120 mm,其中,一臺DLP數(shù)字投影儀置于兩相機之間,分辨率為854×480,最大光強為200流明。以壓力容器為例,采用本文系統(tǒng)和方法進行三維測量與重建。
圖4 三維測量系統(tǒng)實例
使用本文改進格雷碼結(jié)構(gòu)光雙目視覺成像方法進行測量:先標定出系統(tǒng)的參數(shù),再對工件進行了極線校準,格雷碼結(jié)構(gòu)光編碼解碼,塊匹配,處理后獲得了噴涂工件形狀數(shù)據(jù)。待測工件因表面非連續(xù)且為金屬,對投影的圖案會產(chǎn)生相應(yīng)的反光區(qū)域,部分區(qū)域可見性不強。采用的是面結(jié)構(gòu)光,所以投影計算只針對物體的投影區(qū)域,但通過旋轉(zhuǎn)工件可以分別得到不同角度的數(shù)據(jù)?,F(xiàn)通過MeshLab軟件顯示出了其不同角度的渲染結(jié)果,如圖5(a)所示,可以看出,此方法能基本重建出該工件形狀。
為了驗證此方法,對另一工件進行了實驗,結(jié)果如圖5(b)所示,工件形狀結(jié)果與原物體大體一致,可以實現(xiàn)測量重建功能。因工件表面對投影圖案接受較弱,相機并未采集到部分區(qū)域的信息,故三維數(shù)據(jù)有些丟失??赏ㄟ^選取流明數(shù)更大的投影儀進行投影成像并計算。
圖5 工件的三維數(shù)據(jù)測量結(jié)果
本文對格雷碼雙目三維測量方法進行了研究,針對傳統(tǒng)格雷碼結(jié)構(gòu)光二值邊界處模糊問題,采用黑白取反二次投影方式,從而獲得清晰的格雷碼黑白碼邊界;接著,采用一種快速區(qū)域塊搜索策略對編碼后的圖像進行立體匹配得到視差圖。最后,針對雙目測量死角問題,采用雙線性插值方法填充視差圖,得到補全后的深度信息。實驗結(jié)果表明,采用上述改進的格雷碼雙目三維測量方法能夠很好快速得出工件的三維數(shù)據(jù),算法易于實現(xiàn),可為工業(yè)噴涂、焊接、打磨等提供定位和幾何測量數(shù)據(jù)信息。