梁明輝+王得偉+陳嘉卿+何宇+鶴喜
摘要:本文采用十字激光作為標識,應(yīng)用圖像處理技術(shù)和雙目測距原理,實現(xiàn)了三維物體表面坐標的視覺檢測,并利用測量的坐標點云,采用OpenGL的Delaunay三角法進行了三維重建。該方法的突出優(yōu)點是它不需要復雜的視覺匹配計算,僅根據(jù)左右圖像中的十字激光標識而快速確定同名點,從而實現(xiàn)了三維表面的快速檢測與重建,是一種成本低效率高的三維物體掃描重建方法。
關(guān)鍵詞:激光標識;圖像處理;雙目測距;三維重建
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1007-9416(2017)11-0069-04
立體視覺是計算機視覺領(lǐng)域中的一個重要研究課題[1],它的開創(chuàng)性工作始于上個世紀的六十年代中期,主要研究重構(gòu)場景三維幾何信息的獲取。立體視覺仿照人眼采用雙目攝像頭,通過將同一空間物理坐標點在不同攝像機畫面上的映射點對應(yīng)起來,進而獲得獲取到場景中每個位置的深度。一般處理過程如圖1所示。
其中難點是左右圖像中同名點的匹配,常用的有基于區(qū)域特征的和基于全局約束的相似準則[2],但都比較耗時,效率低,一種變通的方法是在物體表面人為的打上標記便于識別,這就是基于激光的結(jié)構(gòu)光測量方法[3],大多采用線狀激光掃描,將匹配點縮減到一條直線上,還是要匹配計算,本文采用十字激光標識,利用激光交叉點的唯一性,一次完成匹配點確定,不需要任何匹配計算,效率高。但在激光圖像進行預(yù)處理時也存在偽交叉的奇異點干擾,要進行坐標點的統(tǒng)計分析,去除奇異點,然后再通過OpenGL對坐標點云數(shù)據(jù)進行重建。
1 雙目立體視覺模型
雙目立體視覺統(tǒng)通過采用兩臺位置相對固定的攝像機,從不同的角度去拍攝同一物體或者環(huán)境,通過計算兩個攝像機成像畫面中的對應(yīng)點的視差,進而得到物體或者環(huán)境的三維信息。雙目立體視覺模型如圖2所示。
當左右兩個攝像機的光軸平行且處于同一水平面的時候,空間目標點P(X,Y,Z)在左右兩臺攝像機上形成的圖像坐標分別為(ul,vl)與(ur,vr),橫坐標ul與ur存在明顯的位差(即視差)。通過三角形相似,可以得到如下關(guān)系:
2 圖像的預(yù)處理和十字中心的定位
激光投射到物體表面,可以采用自動或手動掃描,對于左右攝像機采集到的圖像,需要進行圖像的預(yù)處理。圖像的預(yù)處理對于十字激光中心點的檢測以及雙目測距的準確性都有很大的影響,圖像預(yù)處理得不好,將直接導致誤差點的引入,從而引發(fā)三維重建模型的錯誤。本文對圖像的預(yù)處理過程包括圖像的二值化、圖像的閉運算(先膨脹后腐蝕)、圖像的細化處理等部分。對于預(yù)處理后的圖像,還要進行十字中心的定位。這一過程包括圖像的線性濾波、圖像的輪廓檢測等。
2.1 圖像的二值化處理
圖像的二值化是為了去除圖像中大多數(shù)干擾部分,只保留十字激光照射物體所留下的十字交叉圖像。在本文中采用的是紅色十字激光進行定位坐標,因此,在RGB三通道圖像中,十字激光照射部分中R通道將會是高亮顯示。傳統(tǒng)方法中,通過設(shè)定某個固定閾值,當R通道中的值大于此閾值時,將相應(yīng)像素點值置1,反之置0。然而在實際試驗中發(fā)現(xiàn),此方法受環(huán)境亮度影響較大,不能很好地適應(yīng)實際環(huán)境的變化。本文提出一種改進方法,引入一個比例因子r,將原始圖像中的像素點按R通道值大小進行排序,取前r%的像素點值置1,其余置0。實驗表明,當r取值0.5時效果最好。原圖像和二值化后的圖像分別如圖3和圖4所示。
2.2 圖像的閉運算處理
從攝像機上獲取到的圖像可能會因為激光、環(huán)境亮度、二值化算法、物體的反光度等因素,造成二值化后的圖像線段呈現(xiàn)鋸齒狀,有些線段的內(nèi)部還存在著孔洞。而這些問題,將會影響后續(xù)的處理過程。因此,需要對圖像進行閉運算處理,即先膨脹后腐蝕。
膨脹,是圖像與任意形狀的內(nèi)核進行卷積[4],當內(nèi)核在圖像中移動的時候,圖像中的點將會取內(nèi)核所覆蓋區(qū)域的最大像素值,這一操作,將會導致圖像中高亮的區(qū)域擴張;而腐蝕,則與膨脹正好相反,當內(nèi)核在圖像中移動的時候,圖像中的點將會取內(nèi)核所覆蓋區(qū)域的最小像素值,因此,這將導致圖像中高亮的區(qū)域收縮。
在對二值化圖像膨脹時,能將二值化圖像中的孔洞進行填充,以及遇到當圖像因為光照等因素導致線段不連續(xù)的時候,能將斷開的圖像重新連接上。但膨脹并不是只對孔洞等位置有影響,對圖像成像較好的位置同樣會照成影響。因此,在膨脹后,還需要對圖像進行腐蝕操作,使得圖像整體變回膨脹前的大小。
在本文中,閉運算采用的是尺寸為5*5,值全為1的矩陣。閉運算處理前后的圖像分別如圖5與圖6所示。
2.3 圖像的細化處理
圖像的細化,又稱為骨架提取,它指的是將原本臃腫的像素塊簡化為單個像素相連接的二值圖像,這里采用文獻[5]中所提到的細化二值區(qū)域的算法[5]。設(shè)圍繞處理點p1的周圍像素點為p2-p9,分布如下:
p9 p2 p3
p8 p1 p4
p7 p6 p5
該算法由兩個基本的操作組成:
(1)對于滿足下列a、b、c、d四個條件的邊界點作標記,待遍歷完圖像后,進行刪除。
(a)2≤N(p1)≤6 (b)S(p1)==1
(c)p2*p4*p6==0 (d)p4*p6*p8==0
其中N(p1)=p2+p3+p4+…+p9,點p1領(lǐng)域中1的個數(shù)
S(p1)是按p2,p3,…p9,p2的順序,0-1轉(zhuǎn)換的個數(shù)。
(2)與(1)中的操作基本相同,只是條件(c)、(d)改為:
(c)p2*p4*p8==0 (d)p2*p6*p8==0。
讓圖像循環(huán)做上述的操作(即輸出圖像作為輸入圖像),直到不存在可以刪除的點,即可以結(jié)束循環(huán)。細化處理前和細化處理后的圖像分別如圖7圖8所示。endprint
2.4 十字中心的定位
從前面的預(yù)處理后的圖像可以看出,當十字激光照射的物體為一個平面時,十字中心的交點即為兩條直線的交點。從這一點出發(fā),可以很直觀地想到利用霍夫直線檢測,計算出兩條相交直線的方程,進而得到十字中心的坐標。然而,當照射物體的平面變得不規(guī)則,比如曲面的時候,此時攝像機獲取到的圖像中,十字中心點則變成了兩條曲線段的交點,若采用多項式曲線擬合,不僅難度較大,而且還面臨精度不高等問題。
為此,本文提出一種新型的十字中心定位算法,該算法主要分成兩個步驟:第一步,使用特殊設(shè)計的濾波算子對預(yù)處理后的圖像進行線性濾波處理,初步確定十字中心的坐標;第二步,在前一步初步確定的坐標上使用輪廓檢測,確定十字中心的準確坐標。以下做詳細介紹。
線性濾波可以說是圖像處理中最基本的方法,通過設(shè)計不同的濾波器矩陣,可以得到很多不同的效果。例如Sobel算子的邊緣檢測,中值濾波等。而在本文中,為了初步確定十字中心的交點,設(shè)計的濾波算子s如圖9(a)所示。
圖9(a)是一個尺寸為5*5,中心值為-24,其余全為1的濾波算子。使用此算子對圖像進行濾波處理,圖像中大于預(yù)期閾值且小于0像素點的坐標,就是可能存在十字中心的坐標。而此閾值的大小,則是與濾波算子緊密相關(guān)。
在觀察預(yù)處理后的圖像可以發(fā)現(xiàn),十字激光在圖像中對應(yīng)的交叉結(jié)構(gòu),應(yīng)該是類似于圖9(b)結(jié)構(gòu)(即一個節(jié)點有4個分支)。但是,考慮到細化后的圖像,圖像交點部分可能穿在部分變形,如圖9(c)的情形。
雖然我們不可能窮盡所有情形,但可以假設(shè),當結(jié)構(gòu)內(nèi)具有三個或三個以上分支的時候,則判斷可能為十字交點。根據(jù)上文的濾波算子,可以計算出相應(yīng)的閾值為s[2][2]+s.size/2*3,即為-24+5/2*3=-18,同時,像素點的值之所以小于0,這是因為濾波算子s的中心設(shè)置為1-s.size * s.size,即-24,通過這種設(shè)定,使得當像素點為高亮的時候,濾波后的圖像相應(yīng)點為負值。
經(jīng)過線性濾波后的圖像可能存在多個符合條件的坐標點,但是這并不意味著已經(jīng)找到十字中心的坐標。這些符合條件的坐標點中可能存在一個或不存在十字中心的坐標,需要進一步的處理。將符合條件的坐標點的值按從大到小進行排序,排序的目的在于,坐標點的值越大,說明其周圍的分支較多,越有可能是所找的十字中心。按照排序過后的順序,一一判斷是否是十字中心的坐標,直至找到或找不到。判斷的依據(jù)主要依靠圖像的輪廓檢測。
根據(jù)圖像中的十字交點,可以很容易看出,當在某個邊長為b的矩形區(qū)域中存在4個空白區(qū)域的時候,則十字交點的坐標就在這個矩形中。根據(jù)上文,線性濾波后的圖像中符合條件的坐標點很有可能就是十字中心,因此,以此坐標為中心周圍邊長為b的矩形區(qū)域即是感興趣區(qū)域(ROI,region of interest)。但因為圖像細化后,形狀會有少許變形,因此本文中使用的是閉運算處理后的圖像設(shè)置ROI。在此矩形區(qū)域內(nèi),尋找輪廓,若找不到4個空白區(qū)域的輪廓,拋棄該點,并進行下一個可能的坐標點的判斷,直到找到一個符合條件的矩形區(qū)域,執(zhí)行下一步操作。
在得到4個空白區(qū)域的輪廓點集后,可以得出四個輪廓的相對位置,分別計算對角區(qū)域之間的最短距離,取得最短距離的兩個點,求出兩點的中點,把該點坐標看作十字中心的坐標。
3 實驗結(jié)果與分析
物體的形狀可由三維點云通過delaunay三角算法進行拼接來表示[6]。本文以一個長方形紙箱作為實驗?zāi)繕耍脠D像處理庫OpenCV和OpenGL編寫軟件對文中提出的三維重建系統(tǒng)與算法進行驗證。使用的物理設(shè)備為用三腳架固定的小型雙目攝像頭,輸出幀率為15幀/秒,單攝像頭分辨率為640*480,如圖10所示。
由人手持十字激光發(fā)射器對實驗物體從上到下,從左到右進行照射掃描,攝像機采集到的圖像經(jīng)由USB串口傳輸?shù)缴衔粰C,由上位機程序進行分析。由圖11可以看到,程序窗口上方顯示的是原圖像,下方顯示的圖像為原圖經(jīng)過了二值化處理、閉運算之后的結(jié)果。當程序成功檢測到十字激光交點時,程序會在檢測出坐標的位置作矩形,以方便比較。程序會將檢測出的十字中心坐標轉(zhuǎn)換為世界坐標系的三維坐標,并進行記錄。在采集到足夠數(shù)量的三維點云信息后,利用OpenGL進行三維重建,圖12和圖13顯示了三維重建后的結(jié)果。
由圖片可以看出,激光掃描的實驗物體的輪廓已經(jīng)能夠較為準確地獲取,并且能夠反映紙箱兩個側(cè)面與棱緣的細微變化,取得較好的重建效果,精度較高。
4 結(jié)語
本文提出一種基于十字激光立體視覺檢測的三維重建方案,能夠較為準確地采集到目標物體表面的點云并拼接合成以完成三維重建過程。其中,針對圖像二值化處理受環(huán)境光照影響較大的問題提出了一種按比例進行劃分的方法。對于圖像十字中心的定位問題提出了一種新的算法,通過線性濾波、輪廓檢測等操作,能夠很有效率地完成十字中心的檢測,保證了匹配精度,獲得了較好的重建效果。
參考文獻
[1]周星,高志軍.立體視覺技術(shù)的應(yīng)用與發(fā)展[J].工程圖學學報,2010,31(4):50-55.
[2]肖艷青,劉黨輝,孫朋.圖像立體匹配研究進展[J].測控技術(shù),2009,28(8):1-5.
[3]韓建棟,呂乃光,董明利,等.線結(jié)構(gòu)光傳感系統(tǒng)的快速標定方法.光學精密工程,2009,17(5):958-962.
[4]姚敏.數(shù)字圖像處理[M].機械工業(yè)出版社2012.
[5]何斌,馬天予,王運堅,等.Visual C++數(shù)字圖像處理[M].機械工業(yè)出版社,2002.
[6]余杰,呂品,鄭昌文.Delaunay三角網(wǎng)構(gòu)建方法比較研究.中國圖象圖形學報,2010,15(8):1158-1164.
Abstract:In this paper, image processing technology and binocular ranging principle are used to realize the visual detection of 3D object surface coordinates using cross laser marking. The 3D reconstruction of the coordinate point cloud is carried out by OpenGL's Delaunay triangulation. The advantage of this method is quickly to determine the corresponding point in left and right images based only on cross laser marking without complex visual matching calculation, so as to realize the rapid detection and reconstruction of 3D surface, it is a scanning and reconstructing method of 3D object with high efficiency and low cost.
Key Words:laser marking; image processing; binocular ranging; 3D reconstructionendprint