張洪鑫 王明珠 仇浩然 姜金剛
哈爾濱理工大學(xué)機(jī)械動力工程學(xué)院,哈爾濱,150080
因為鑄件在生產(chǎn)過程中自身的工藝特點,使得成形后的鑄件表面存在毛刺、飛邊等外觀缺陷,影響后續(xù)的鑄件精加工和裝配等。目前,鑄件毛刺的檢測和剔除主要依靠人工完成,工作量大,效率低,很難滿足生產(chǎn)需求,因此,研究基于機(jī)器視覺的鑄件毛刺自動檢測與識別具有重要意義。
機(jī)器視覺具有廣闊的應(yīng)用市場,如機(jī)器人導(dǎo)航、工業(yè)自動化、恢復(fù)建筑原貌等[1]。按照工業(yè)相機(jī)的數(shù)量,機(jī)器視覺獲取圖像方法可分為單目視覺、雙目視覺和多目視覺[2]。雙目和多目視覺不僅需要準(zhǔn)確標(biāo)定相機(jī)之間的相對位置,還要保證拍攝時的同步性和穩(wěn)定性,且拍攝空間大、拍攝過程難、成本較高[3-5]。單目視覺僅需通過一個相機(jī)圍繞單個目標(biāo)旋轉(zhuǎn)拍攝一組圖像序列,就可根據(jù)圖像處理算法重建出三維物體或場景。單目視覺無需對相機(jī)相對于目標(biāo)的位置進(jìn)行標(biāo)定,拍攝空間小,裝置簡單,成本低,易于實現(xiàn)[6]。
本文提出一種基于單目圖像序列的三維重建方法,通過單目相機(jī)對鑄件進(jìn)行多個角度旋轉(zhuǎn)拍攝獲得一組圖像序列,然后通過云計算對圖像序列進(jìn)行特征點檢測與匹配,建立匹配點集合。利用從運(yùn)動中恢復(fù)結(jié)構(gòu)(structure from motion,SFM) 方法對匹配點進(jìn)行稀疏點云重構(gòu)和稠密點云重建獲得三維點陣,再對點陣進(jìn)行泊松表面重建,即可獲得具有良好幾何表面特征和細(xì)節(jié)的鑄件三維重建表面。該方法有助于提高工業(yè)機(jī)器人對鑄件進(jìn)行精確加工的智能程度。
圖像特征點檢測與匹配是基于圖像序列的三維重建的第一步,本文依據(jù)LOWE[7]提出的尺度不變特征變換算法( scale invariant feature transform,SIFT) 進(jìn)行圖像特征點的檢測與匹配,并在此基礎(chǔ)上提出“兩步匹配法”對特征點進(jìn)行優(yōu)化,然后利用圖像間的極線約束,采用隨機(jī)采樣一致算法(random sample consensus,RANSAC)提純,得到鑄件特征點優(yōu)化匹配結(jié)果[8]。
SIFT特征點檢測主要步驟如下:①尺度空間極值檢測。搜索所有尺度上的圖像位置,通過高斯微分函數(shù)來識別潛在的對尺度和旋轉(zhuǎn)不變的興趣點。②特征點定位。在每個候選的位置上,通過一個擬合精細(xì)的模型來確定位置和尺度。③方向確定。基于圖像局部的梯度方向,分配給每個特征點位置一個或多個方向。④特征點描述。采用該特征點鄰域的梯度幅值大小和梯度方向來進(jìn)行描述。以特征點為中心,用高斯窗確定特征點鄰域的范圍,高斯窗可用圓來代替。計算鄰域內(nèi)每個采樣點的梯度幅值和梯度方向,然后將若干個采樣點的計算值累加到n×n個統(tǒng)計窗口內(nèi),每個窗口用r表示梯度方向數(shù),每個梯度方向的計算值為累加之后的梯度幅值大小。一個特征點有n×n×r維的特征向量描述子。根據(jù)文獻(xiàn)[7],當(dāng)n=4,r=8時,特征點匹配率較高,如果n取更大值,則計算量增大,因此本文一個特征點有4×4×8=128維特征向量描述子。SIFT特征點檢測方法不但增強(qiáng)了算法的抗噪能力,還為后續(xù)特征點匹配提供了容錯性。圖1所示為相鄰兩幅單目圖像的特征點檢測結(jié)果。
圖1 特征點檢測結(jié)果Fig.1 Results of feature points detection
一個特征點由一個128維的特征向量來描述,當(dāng)相鄰圖像間的特征向量生成后,就可以進(jìn)行特征點匹配。常見的特征點匹配方法是用特征點特征向量的歐氏距離來判斷兩幅圖像中特征點的相似程度,即用特征向量的最近鄰距離與次近鄰距離的比值作為匹配約束條件。匹配原理是:Xa是圖像1中的某個特征向量,Xb和Xb′是圖像2所有特征向量中與Xa距離最近的兩個向量,設(shè)Xa與Xb的距離小于Xa與Xb′的距離;如果最近鄰距離與次近鄰距離之比小于某個閾值T, 則Xb為Xa的匹配向量,表示為dist(Xa,Xb)/dist(Xa,Xb′) 上述粗匹配存在的問題是:在匹配過程中由于歐氏距離只計算了兩向量之間的距離,而忽略了各向量分量之間的相關(guān)性,所以會出現(xiàn)大量誤匹配點對,數(shù)據(jù)冗余量大,后期計算量大。 本文提出“兩步匹配法”,在將歐氏距離作為粗匹配約束條件的基礎(chǔ)上,進(jìn)一步通過向量空間余弦相似度匹配來增加匹配約束條件[9],從而減少誤匹配點對數(shù)。余弦相似度進(jìn)一步考慮了上述粗匹配中兩個特征向量之間的方向相關(guān)性,在向量空間中用這兩個特征向量的夾角余弦值衡量特征點對差異的大小。余弦值越接近0,則表明兩個特征向量夾角越接近于90°,也就說明此特征點對不相關(guān),是誤匹配點,予以剔除。Xa(Xa1,Xa2,…,Xa128)與Xb(Xb1,Xb2,…,Xb128)的余弦相似度為 (1) 首先在粗匹配基礎(chǔ)上,判斷Xa與Xb這兩個特征向量的余弦相似度cosθ,如果大于某一經(jīng)驗閾值k,則進(jìn)一步確定粗匹配點對為匹配點,否則粗匹配就被判斷為誤匹配點被剔除。利用余弦相似度匹配法可剔除大量誤匹配點,如圖2b所示。然后通過RANSAC算法優(yōu)化提純,得到最優(yōu)匹配結(jié)果,如圖2c所示。利用“兩步匹配法”提高了特征點匹配的精度,剔除了大量誤匹配點,提高了圖像處理效率。 (a)特征點粗匹配結(jié)果 (b)余弦相似度匹配結(jié)果 (c)RANSAC優(yōu)化匹配結(jié)果圖2 特征點匹配結(jié)果Fig.2 Results of feature point match 本文采用SFM方法[10]進(jìn)行基于單目圖像序列的鑄件三維稀疏點云重建。SFM方法是一個迭代計算的過程。首先選取具有最多匹配點的圖像作為初始圖像對,計算得到初始的相機(jī)運(yùn)動信息及鑄件結(jié)構(gòu)信息,通過兩幅圖像之間匹配點對的三角測量過程得到鑄件的初始空間三維點云,重建的每個點都對應(yīng)著被重構(gòu)鑄件的某一部分;然后逐漸增加新的圖像進(jìn)行迭代,SFM方法中每加入一幅新的圖像就可以獲得該圖像所對應(yīng)相機(jī)的運(yùn)動信息以及鑄件的結(jié)構(gòu)信息;最后使用集束調(diào)整(bundle adjustment ,BA)[11]方法來進(jìn)行參數(shù)優(yōu)化[12-13]。 集束調(diào)整是一種非線性最小二乘法優(yōu)化技術(shù),通過估計相機(jī)姿態(tài)和圖像序列之間的相對運(yùn)動,以迭代方式添加和細(xì)化三維點。集束調(diào)整使用成本函數(shù)來最小化由運(yùn)動結(jié)構(gòu)三角測量預(yù)測的三維點與其相應(yīng)觀察位置之間的重投影誤差,直至重建完整的圖像集合,獲得鑄件的最優(yōu)三維點云重建模型。重投影誤差計算式為 (2) 其中,n個三維物點在m張圖片中,Xij為第j張圖片上看到的第i個物點,vij為第i個物點在第j張圖片上的映射判斷系數(shù),若vij=1,表明有映射,若vij=0,則無映射。每張圖片的相機(jī)j用向量aj參數(shù)化表示,每個三維物點i用向量bi參數(shù)化表示。函數(shù)Q(aj,bi)表示物點bi在相機(jī)aj下的投影坐標(biāo),也就是預(yù)測值。函數(shù)d表示觀測到的圖像坐標(biāo)與預(yù)測的圖像坐標(biāo)之間的歐氏距離。 使用SFM方法生成的稀疏點云僅具有SIFT識別的特征點的三維坐標(biāo),所得到的點云是低密度的,不包含被重建鑄件的更多細(xì)節(jié),因此,還需要對稀疏點云進(jìn)行稠密重建來獲得稠密點云匹配。 本文采用多視角密集匹配(CMVS/PMVS)實現(xiàn)稠密點云匹配,其中點云多視角立體匹配(CMVS)[14]通過優(yōu)化SFM輸入的稀疏點云數(shù)據(jù)來對圖像序列進(jìn)行聚簇分類,以消減重建過程的數(shù)據(jù)量,提高運(yùn)算速度和重建精度;然后基于面片模型的多視角立體匹配(PMVS)[15]根據(jù)聚簇分類后的圖像序列和由SFM算法計算出的各自的投影矩陣,利用稀疏點云重構(gòu)結(jié)果將點云向周圍進(jìn)行漫射,得到定向點云,同時利用局部光度一致性和全局可見性約束經(jīng)過匹配、擴(kuò)展、過濾等過程完成稠密重建過程,建立稠密點云模型。 PMVS是一種基于區(qū)域增長的方法:首先是匹配,在圖像中采用Harris和Difference-of-Gaussian算法搜索圖像特征f,在其他圖像中搜索與f相匹配的圖像特征f′,形成一個匹配子集F,利用點對(f,f′)構(gòu)成三維點云,由點云再生成稀疏面片,然后將其保存在覆蓋圖像的網(wǎng)格中;其次是擴(kuò)展,通過迭代算法在已經(jīng)生成的稀疏面片鄰近的空區(qū)域中,通過重復(fù)利用點云再生成新的面片,增加重構(gòu)點的密度,獲得稠密點云;最后是濾波,對重構(gòu)點云通過兩步濾波算法,增強(qiáng)可視密度并濾除不匹配誤差。擴(kuò)展和濾波步驟是交替迭代進(jìn)行的,最終創(chuàng)建了一個致密的定向三維貼片云,獲得三維稠密點云模型。 稠密點云模型比較形象地還原鑄件模型,但仍是大量孤立的三維空間點集合,且表面還存在一些小的空洞。本文采用泊松曲面重構(gòu)[16]方法,將對點云數(shù)據(jù)的曲面重構(gòu)轉(zhuǎn)化為求解泊松方程,通過求解稠密點云的最佳擬合表面,從而獲得鑄件連續(xù)光滑的三維表面。 ▽x≡▽·▽x=▽·V (3) (a)有向點集 (b)指示函數(shù)梯度 (c)指示函數(shù) (d)模型表面圖3 曲面重建示意圖Fig.3 Diagram of curved surface reconstruction 泊松表面重建不但綜合了全部的點云信息,而且無需具體細(xì)節(jié)就可以很好地過濾冗余信息。 圖4為基于單目圖像序列鑄件三維重建方法的流程圖。采用智能手機(jī)的攝像頭圍繞一個帶有毛刺的鑄件旋轉(zhuǎn)拍攝42張圖片,每張圖片像素大小為4608×3456。旋轉(zhuǎn)拍攝時只要求獲得鑄件的表面信息即可,對旋轉(zhuǎn)沒有嚴(yán)格要求。不要求以鑄件為固定中心,不要求相機(jī)按照固定位置或間隔固定角度拍攝。 圖4 鑄件三維重建流程圖Fig.4 The flow chart of the 3D reconstruction of casting 圖5為拍攝的部分圖像。圖6a為SFM方法迭代計算恢復(fù)的相機(jī)拍攝位置分布圖;圖6b為鑄件稀疏點云重建結(jié)果,稀疏點云只是給出了鑄件的一部分空間三維點陣,重建了部分輪廓。圖7為鑄件的稠密點云重建結(jié)果,稠密點云基本上重構(gòu)了鑄件的三維表面,一些明顯的毛刺能顯示出來,但是三維表面粗糙,外部輪廓局部點缺失明顯,還存在一些明顯的孔洞。圖8所示為鑄件的泊松表面重建結(jié)果,鑄件的三維表面與稠密點云圖像相比,重建點密集,表面光滑,表面細(xì)節(jié)基本修復(fù),鑄件上的毛刺的細(xì)節(jié)也能顯示出來。實驗結(jié)果表明,基于單目無標(biāo)定拍攝圖像序列的鑄件三維重建方法能夠?qū)崿F(xiàn)基于機(jī)器視覺的鑄件毛刺檢測,為下一步鑄件毛刺的自動配準(zhǔn)與剔除提供了可行性。 (a)角度為0° (b)角度為8.32° (c)角度為15.56° (d)角度為23.20° (e)角度為33.54° (f)角度為40.37°圖5 圖像序列中的部分圖像Fig.5 Some image sequences (a)相機(jī)圍繞鑄件拍照的位置分布 (b)鑄件稀疏點云重建效果圖6 相機(jī)的位置分布和鑄件稀疏點云重建效果Fig.6 The location distribution of the camera and the effect of casting sparse point cloud reconstruction 圖7 鑄件的稠密點云重建結(jié)果Fig.7 Dense point cloud reconstruction results of casting 圖8 鑄件的泊松表面重建結(jié)果Fig.8 Effect of the casting of poisson surface reconstruction 本文提出并實現(xiàn)了基于單目無標(biāo)定拍攝圖像序列的鑄件三維重建方法。對圖像序列進(jìn)行特征點匹配中,通過余弦相似度匹配法增加對特征向量的約束條件,剔除大量誤匹配點,壓縮冗余數(shù)據(jù),提高圖像處理效率。以SFM迭代計算的方法從運(yùn)動中恢復(fù)結(jié)構(gòu)獲得相機(jī)的位置信息以及鑄件的稀疏點云,并重建了稠密點云。最后通過泊松表面重建,獲得了鑄件三維表面的細(xì)節(jié)特征。實驗結(jié)果表明,本文提出的方法無需對相機(jī)的位置進(jìn)行標(biāo)定,所需拍攝空間小,對拍攝環(huán)境、鏡頭位置和圖像序列數(shù)目也沒有嚴(yán)格的要求,適用于機(jī)械加工環(huán)境下零件三維表面檢測和毛刺識別。2 鑄件三維重建
2.1 稀疏點云重建
2.2 稠密點云重建
2.3 泊松表面重建
3 實驗結(jié)果與分析
4 結(jié)論