周建豐,鄧學良
(廣東工業大學機電工程學院,廣州510000)
隨著科技的進步和工業的發展,三維測量技術也進入高速發展階段,許多領域要求對物體的三維信息進行快速而準確的測量[1]。三維測量技術的主要分為接觸式測量和非接觸式測量兩大類。隨著計算機技術、圖像處理和模式識別等技術的不斷進步,非接觸視覺測量技術得到快速發展,具有無損、快速、操作簡單等優勢廣泛應用于產品質量檢測、物體識別、逆向工程、航空、汽車等領域[2-4]。
光學非接觸式三維測量根據光照形式分為被動式和主動式[5-12]。結構光測量是最普遍的一種主動式非接觸三維測量方法,其中編碼結構光是向物體表面投射一幅或多幅二維編碼圖案,通過拍攝獲得經物體高度調制后變形的編碼圖像,然后對編碼圖案與所拍圖像的對應點進行匹配,利用三角測量原理得到物體的三維信息[13]。格雷碼編碼解碼誤差較小,操作簡單,應用廣泛,但要提高測量分辨率,需要投影的編碼條紋就要越細,但攝像機無法識別過細的條紋,因此限制了格雷碼測量精度。相移法則具有很高的測量精度,但是解碼過程復雜,不同的算法對測量精度和速度有較大影響[14]。
本文提出了一種多線結構光合成編碼方式,精度較格雷碼編碼測量有所提高,同時解碼過程簡單。攝像機拍攝的圖片序列與投影儀投射的線結構光即光柵條紋位置一一對應,提出一種“3+2移動法”完整掃描物體表面。通過縱橫兩個方向完成掃描之后,根據圖片時間序列即可確定光柵條紋在投影儀中的像素位置信息,同時對光柵條紋進行亞像素細分,可以得到較格雷碼編碼方式更高的分辨率。
多線結構光合成編碼與格雷碼類似,本質上是結構光測量方式中的一種時間編碼。時間編碼分為數字編碼和模擬編碼兩個大類,在實際應用中通常將兩種編碼方式結合起來進行三維測量[15]。本文先比較格雷碼編碼和合成編碼原理的異同,并選擇格雷碼和合成編碼相互結合的編碼方案,采取宏微復合的方式,把格雷碼作為粗定位,合成編碼進行精準測量。
單目攝像機加投影儀的三維測量方式,本質上是基于雙目立體視覺的三角測量原理來獲取物體的三維信息。因此,投影儀投射的編碼圖案可以通過解碼獲取圖像上任意一點在投影儀中的像素位置,故而投影儀被稱為逆相機。格雷碼編碼是采用黑白條紋分別代表格雷碼中的0和1,如圖1所示為格雷碼編碼原理,投影儀按照順序投射多張格雷碼序列圖片。任意像素所在的光柵條紋序列中,只有一位與相鄰序列不同,因此造成編碼值解碼的誤差最多只有一位[16]。

圖1 格雷碼編碼圖案
合成編碼則是同步相機拍攝,以時間序列作為光柵條紋的位置信息,因此任意一個光柵條紋的位置有且僅有一個與之對應的時間序列。如圖2所示,以一條光柵條紋為例,光柵條紋每次移動x個像素距離,同時相機拍攝一幀圖片并記錄圖片的時間序號。設光柵條紋每秒移動10次,則攝像機每秒拍攝十幀圖片。只需知道圖片的時間序號,即可獲取光柵條紋所在投影儀的像素位置。通過縱橫兩次掃描,將縱橫條紋兩兩結合,即可獲取點P于投影儀的所在像素位置。因此將這一種新方法稱作為合成編碼。假設光柵條紋每次只移動一個像素距離,攝像機采用60幀攝像,掃描整個物體表面需要花費較長時間。因此可以考慮采取增加線結構光的方式,采用n條光柵,則可以使時間縮減至n分之一,大幅度縮減單次掃描時間。

圖2 單條光柵條紋合成編碼原理
如上文所述,采用多條線結構光會造成時間序列中的每張圖片會對應多個光柵條紋,使條紋解碼多義性,因此需要額外的方式劃分編碼區域。本文擬用格雷碼結合合成編碼的方式,將格雷碼作為粗定位,合成編碼精準測量。
以圖3為例,采用六十四線結構光合成編碼,首先按時間順序向被測物體依次投射3幅四灰度格雷碼,將整個測量空間分為43=64個區域。然后再投射合成編碼的時間序列圖片。假設每個區域包含16個像素,即橫向分辨率為1024,光柵條紋每次移動一個像素單位,則攝像機只需拍攝至少16張圖片可完成一次掃描。完成縱橫兩次掃描后,只需要對圖片中任意像素反向搜索對比灰度值變化,即可找出這一像素所對應的縱橫方向兩張光柵圖片序列,通過兩張圖片序列,即可確定像素在投影儀中的行列位置信息,解碼過程非常簡便。

圖3 三幅四灰度級格雷碼圖案與多線結構光合成編碼結合演示
如上文所述,合成編碼的測量精度取決于投影儀的像素分辨率,像素密度越高,則測量的精度就越高。為了提高測量精度,本文提出了一種“3+2移動法”的光柵條紋移動方式,基于“3+2移動法”對光柵條紋進行亞像素細分,理論上可將投影儀分辨率提高一倍。同時亦討論了其他提高測量精度的理論研究。
與格雷碼編碼類似,它的精度取決于像素密度。為了提高像素移動的密度,可將光柵條紋的移動方式按照如圖4所示的規律移動。其中一條光柵條紋寬度占3個像素單位,以3個像素寬度的光柵條紋為初始位置移動,時間序列的下一張圖片,光柵條紋則轉化成占兩個像素單位的光柵條紋,以此為周期重復移動步驟,直至完成一次掃描。則光柵條紋分成兩類,一類占三個像素寬度,另一類占兩個像素寬度。并且相鄰的同類光柵條紋之間相差一個像素距離。光柵條紋按照這種特殊規律移動,每次移動相當于移動半個像素距離,接下來的步驟只需要對光柵條紋進行亞像素細分,找出光柵條紋的中心,即可得像素密度更高的圖片序列,間接提高了投影儀的分辨率。這種方法適用于攝像機分辨率高于投影儀分辨率的情況,當投影儀分辨率接近攝像機分辨率或者投影儀像素密度與攝像機像素密度之比大于1/2時,通過亞像素細分算法插補像素之間的光柵條紋效果將不理想。

圖4 “3+2移動法”示意圖
在雙目立體視覺測量中,可以將其中一部相機用投影儀取代,并稱之為逆相機,通過各種編碼方式,可還原物體某一點在投影儀中的像素位置。即投影儀并沒有真實捕獲物體的圖像,只需要獲取物體在投影儀圖像的位置即可。同理,是否可以選擇其他硬件代替投影儀投射編碼結構光,正如投影儀作為逆相機的功能原理類似,以此構造出虛擬的投影儀像素圖像。由此,我們可以通過結合導軌、線激光和攝像機的方式完成基于線結構光合成編碼的單目—投影儀三維測量方案。
將線激光發射器安裝在導軌上,設置縱橫兩個方向的導軌—線激光組合取代投影儀,測量原理同理于本文上述方式,則測量精度與線激光的精細和導軌的移動精度相關,理論上導軌的移動精度越高,測量精度就越高。同時線激光具有較強的干擾能力等優勢。除此方式之外,還可以采用其他組合,通過構造出虛擬的像素坐標圖像模型,用雙目立體視覺三角測量法完成三維重建。
為驗證基于多線結構光合成編碼三維測量方法的可行性,搭建單目—投影儀三維測量平臺。攝像機分辨率為3856×2764,投影儀分辨率為854×480。被測物距離0.3 m~0.4 m。選取方形盒子與鼠標作為被測物。
為了取得更好的實驗效果,需要對硬件設備進行必要調試。關閉攝像機中所有自動功能,一旦完成調整對焦和曝光,則需要保持環境光強穩定不變直至拍攝完成。調整相機與投影儀方向,最大限度提高像素的利用同時,盡量使得物體在攝像機圖像中的像素密度是投影儀像素密度的四倍以上。
完成標定工作之后,向物體依次投射格雷碼和合成編碼的圖片序列,同時攝像機和多線結構光保持同步拍攝。為了更好驗證多線結構光合成編碼較格雷碼能否提高精度,保持物體位置不變,用格雷碼三維重建做二次實驗。實驗結果對比如圖5所示。

圖5 實驗結果對比
選取點a、b、c,分別測量計算任意兩點點間的距離,對比結果如表1所示所示,其中測量距離1為基于合成編碼三維重建所測。結果顯示,合成編碼方式所測的精度較格雷碼有所提高。

表1 測量結果/mm
本文提出了一種基于多線結構光合成編碼的三維重建方式。利用攝像機與光柵條紋移動同步拍攝得出一系列時間序列圖片,將像素行列位置信息綁定時間序列信息,簡化解碼過程。同時提出適用于合成編碼的“3+2移動法”,對采集圖像中的光柵條紋進行亞像素細分,相比較于格雷碼三維重建方式能間接有效提高投影儀分辨率。最后通過實驗對比,證明該方法有效。此外,筆者將基于合成編碼核心方法,嘗試利用其他硬件構造出虛擬的像素坐標圖像模型,提高測量分辨率。