楊 鐸,劉菲菲
(大連大學(xué) 機(jī)械工程學(xué)院,遼寧 大連 116622)
3D打印技術(shù)是制造行業(yè)里的新興技術(shù),其模型獲取的方法也是研究熱點(diǎn)之一,有模型的正向設(shè)計(jì)和逆向重建兩種方式。特別是三維逆向重構(gòu)的算法與理論逐漸成熟,可應(yīng)用到實(shí)際加工中。
基于圖像的三維重構(gòu)方法可分為兩種:?jiǎn)文恳曈X和立體視覺[1]。與單目視覺法相比,立體視覺法重構(gòu)精度普遍較高、重構(gòu)時(shí)間長(zhǎng)、設(shè)備復(fù)雜。隨著不斷研究和發(fā)展,單目視覺法的重建精度在逐漸提高,再加上其本身具有的簡(jiǎn)單便捷等優(yōu)點(diǎn),具有研究?jī)r(jià)值。相比單目視覺中其他方法如陰影法、紋理法、輪廓法、調(diào)焦法等,運(yùn)動(dòng)法對(duì)圖像要求較低,最具魯棒性,可實(shí)現(xiàn)完全自動(dòng)化,在計(jì)算機(jī)視覺、虛擬現(xiàn)實(shí)、逆向工程等多個(gè)領(lǐng)域都具有實(shí)用性[2],國內(nèi)外已有相關(guān)研究。SNAVELY等人[3]提出將SIFT特征提取算法運(yùn)用到了運(yùn)動(dòng)法中,并展示了重構(gòu)效果,但是運(yùn)算量大、效率低;為了解決這個(gè)問題,BAY等人[4]提出了SURF特征提取和匹配算法,進(jìn)一步提高了運(yùn)算效率。近年來,出現(xiàn)了對(duì)基本矩陣求解方法和對(duì)誤檢測(cè)點(diǎn)篩選算法的研究[5-6]。張帆[7]改進(jìn)了基于直線特征的三維重構(gòu)方法,利用無人機(jī)采集了人造建筑的圖片集,基于線段特征進(jìn)行了圖像的特征提取與匹配,直線重構(gòu)后的精度高,且抗干擾能力強(qiáng),然而其整個(gè)重建過程的自動(dòng)化程度較低,數(shù)據(jù)量大。
針對(duì)上述問題,本研究提出優(yōu)化采集序列圖像的方法及算法流程,以葉輪零件為例,進(jìn)行三維重構(gòu)實(shí)驗(yàn);在VC++平臺(tái)結(jié)合OpenGL實(shí)現(xiàn),并驗(yàn)證該方法的精度和魯棒性。
筆者提出的算法流程如圖1所示。
圖1 算法流程
圖1中,首先采集圖像數(shù)據(jù),進(jìn)行圖像去噪和增強(qiáng)等預(yù)處理,提取并匹配其中的關(guān)鍵信息,計(jì)算本質(zhì)矩陣和基本矩陣,最后代入自標(biāo)定計(jì)算出的相機(jī)內(nèi)外參數(shù),重建三維模型。
為降低高像素圖片需要處理的數(shù)據(jù)量,筆者首先對(duì)獲取的圖像進(jìn)行濾波處理。中值濾波是常用的非線性的平滑濾波方式之一。把數(shù)字圖像中一點(diǎn)的像素值用該點(diǎn)相鄰各點(diǎn)的中值來取代,A為濾波窗口,中值濾波可表示為:
(x,y)=Med{f(x,y),(x,y)A}
(1)
為了改善由色調(diào)相近、拍攝時(shí)抖動(dòng)等引起的模糊成像,更容易檢測(cè)圖像中的關(guān)鍵特征,筆者用Matlab將普通圖像轉(zhuǎn)化成灰度圖像,再進(jìn)行直方圖均衡化處理。
采用改進(jìn)的SIFT算法,分為以下幾個(gè)步驟:
(1)檢測(cè)尺度空間極值點(diǎn);
(2)精確定位極值點(diǎn);
(3)為每個(gè)關(guān)鍵點(diǎn)指定方向參數(shù);
(4)生成關(guān)鍵點(diǎn)描述算子。
圖像的高斯尺度空間,由圖像和不同的高斯卷積得到,不同尺度的圖像空間表示為:
L(x,y,σ)=G(x,y,σ)*I(x,y)
(2)
式中:I—圖像像素坐標(biāo);G(x,y,σ)—二維高斯核函數(shù)。
二維高斯核函數(shù)表達(dá)式為:
(3)
式中:σ—尺度空間因子。
將局部極值檢測(cè)作為高斯差分空間(DoG)中的關(guān)鍵點(diǎn)。DoG算子的定義是兩種不同尺度的高斯核的差異[8],即:
D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))I(x,y)=L(x,y,kσ)-L(x,y,σ)
(4)
建立高斯差分(DoG)金字塔如圖2所示。
圖2 高斯差分(DoG)金字塔
創(chuàng)建圖像的高斯金字塔以確定要素點(diǎn)的位置和穿梭尺寸。第一段的第一層是原始像素的兩倍,且同次序上層比例因子與低層比例因子成比例,為其k倍。對(duì)第一次序的第三層采樣,得到第二次序的第一層,第二次序的另一層與第一段構(gòu)造方法相同;第三階及其余各階各層同理。一般金字塔的構(gòu)造選擇4階和5層。
DoG空間極值檢測(cè)如圖3所示。
圖3 DoG空間極值檢測(cè)
當(dāng)檢測(cè)到極值時(shí),筆者將每個(gè)像素(除了DoG空間的底部和最頂部像素之外)與其所有鄰居進(jìn)行比較,判斷其大于或小于它的圖像域和比例域的相鄰點(diǎn)[9]。圖3中,需要將黑色十字標(biāo)記的像素與相同比例的周圍26個(gè)像素作比較,具體包括鄰域的8個(gè)像素和對(duì)應(yīng)于相鄰比例的周圍鄰域中的18個(gè)像素,確保檢測(cè)到的像素在比例空間和二維圖形空間中都是局部極值。
筆者通過擬合三維二次函數(shù),確定特征點(diǎn)的位置和比例(實(shí)現(xiàn)子像素精度)。依據(jù)特征點(diǎn)的鄰像素梯度矢量分布結(jié)構(gòu),將方向參數(shù)分配給每個(gè)關(guān)鍵點(diǎn),算子最終具有旋轉(zhuǎn)不變性。設(shè)(x,y)為某以關(guān)鍵點(diǎn)鄰域像素,則(x,y)像素m處的梯度模值m(x,y)滿足:
m(x,y)=
(5)
以及方向θ(x,y)計(jì)算式:
(6)
式中:a—最大幅值;L—關(guān)鍵點(diǎn)的尺度。
為實(shí)現(xiàn)建模過程自動(dòng)化,需采用直接從圖像序列中自動(dòng)標(biāo)定。早期直接求解KRUPPA方程的方法,幾乎不能統(tǒng)一所有圖像到一個(gè)映射框架中,精度較低;基于本質(zhì)矩陣的自標(biāo)定方法同樣達(dá)不到理想精度[10]。對(duì)于序列圖像的自標(biāo)定,基于絕對(duì)對(duì)偶二次曲面的方法是首選,該算法標(biāo)定出的精確度可達(dá)1像素,其基本思想如下:
(7)
式中:ω*—絕對(duì)對(duì)偶二次曲線;Pi—攝影相機(jī)矩陣;Q*—絕對(duì)對(duì)偶二次曲面;λi—常數(shù)因子。
通過(已知)Pi可以把ω*上的約束轉(zhuǎn)移為Q*的約束。消去λi常數(shù)(式7兩邊矩陣對(duì)應(yīng)項(xiàng)作叉乘),即:
(8)
式中:[*]kl—矩陣第k行第l列元素;Ki—特定相機(jī)內(nèi)參數(shù)矩陣。
然后由Ki的約束來確定Q*,最后用式(7)計(jì)算出ω*。
每張圖像最多只能列出5個(gè)獨(dú)立的歐氏矩陣,其公式為:
Pi≌K1[R1|0]≌[K1|0]
(9)
特征點(diǎn)需要用種點(diǎn)標(biāo)記出來,即生成特征點(diǎn)描述算子,其過程如圖4所示。
圖4 生成特征點(diǎn)描述算子過程
首先,旋轉(zhuǎn)其坐標(biāo)軸系,匹配特征點(diǎn)正方向(即主方向),選擇以特征點(diǎn)為中心的窗口[11]。圖4箭頭代表矢量;矢量方向?yàn)槊總€(gè)像素的梯度方向;長(zhǎng)度表示梯度的模數(shù);并有高斯加權(quán)的圓圈。在方格中,共可得出8向的梯度直方圖,并繪制各個(gè)梯度方向上的累計(jì)值。最終形成的每個(gè)種點(diǎn)含有8向的矢量信息,每個(gè)特征點(diǎn)由4個(gè)種點(diǎn)組成。
本研究通過SIFT初始匹配的8點(diǎn)法計(jì)算基本矩陣,發(fā)現(xiàn)從兩幅圖中找到的n對(duì)點(diǎn)集數(shù)大于8,所以采用最小二乘法求解基本矩陣[12-13],即:
E=t×R=[t]×R
(10)
式(8)為本質(zhì)矩陣的表達(dá)式,對(duì)基本矩陣進(jìn)行奇異值分解,可得和兩幅圖相關(guān)的攝像機(jī)矩陣P和P′,從而推導(dǎo)出攝像機(jī)的外參數(shù)(旋轉(zhuǎn)矩陣R和平移向量t),計(jì)算離散特征點(diǎn)的空間三維坐標(biāo)。
實(shí)驗(yàn)基于單目視覺原理,采用三維重建方法,建立模型重構(gòu)系統(tǒng)。
實(shí)驗(yàn)裝置如圖5所示。
圖5 圖像采集裝置示意圖
葉輪在柔光棚內(nèi)拍攝,并噴有顯像粉,去除反光的同時(shí)增強(qiáng)表面特征。實(shí)驗(yàn)相機(jī)為佳能500D,35 mm定焦鏡頭。根據(jù)實(shí)踐經(jīng)驗(yàn)調(diào)整攝像機(jī)參數(shù)。在手動(dòng)模式下設(shè)置感光度400,光圈F5.0,快門1/320 s。需要從多個(gè)視角拍攝葉輪,保證每張圖像有超過60%的重疊[14]。
相機(jī)拍攝角度布局如圖6所示。
圖6 拍攝角度布局圖
相機(jī)以3個(gè)高度俯視拍攝物體。轉(zhuǎn)動(dòng)轉(zhuǎn)臺(tái)一圈,可獲得3組俯視圖。由于待測(cè)物體為剛性物體,倒置后不會(huì)變形,可將物體上下翻轉(zhuǎn)后重復(fù)拍攝,獲得仰視的3組圖像。物體通過高精度轉(zhuǎn)臺(tái)每次轉(zhuǎn)10°,即重構(gòu)對(duì)象相對(duì)于相機(jī)轉(zhuǎn)動(dòng),轉(zhuǎn)臺(tái)的轉(zhuǎn)動(dòng)由計(jì)算機(jī)控制。36張為一圈,共216張照片。
合成的葉輪網(wǎng)格模型與實(shí)物模型對(duì)比如圖7所示。
圖7 網(wǎng)格模型與實(shí)物模型對(duì)比
由圖7可見,零件的結(jié)構(gòu)特征能夠良好展示。
鑒于激光掃描儀比傳統(tǒng)圖像重構(gòu)法模型精度高,其所得點(diǎn)可用做參考坐標(biāo)。本研究采用吳清超[15]的精度檢測(cè)方法驗(yàn)證重建精度。在葉輪的一個(gè)葉片上設(shè)置4個(gè)圓形靶標(biāo),用激光掃描系統(tǒng);6個(gè)設(shè)置的圖形靶標(biāo),用本文模塊??刂泣c(diǎn)為激光掃描的4個(gè)圓靶標(biāo),將本文模塊生成的點(diǎn)云數(shù)據(jù)坐標(biāo)系轉(zhuǎn)換至激光掃描儀器坐標(biāo)系下;其余6個(gè)圖形靶標(biāo)的點(diǎn)位數(shù)據(jù)作為檢核點(diǎn)。與激光掃描儀實(shí)測(cè)坐標(biāo)相比較。
二者對(duì)比結(jié)果如表1所示。
表1 校驗(yàn)點(diǎn)三維坐標(biāo)
表1中,坐標(biāo)平均誤差為0.19,滿足檢驗(yàn)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)差為0.101 6,具備魯棒性。本文算法精度接近激光掃描儀,而激光掃描儀的重建精度高于傳統(tǒng)圖像建模,說明文中算法比傳統(tǒng)圖像建模精度高。
本研究采用優(yōu)化的序列圖像獲取方式,進(jìn)行了葉輪的三維重構(gòu)實(shí)驗(yàn),結(jié)果表明:重構(gòu)模型坐標(biāo)平均誤差為0.19;按一定角度來擺放相機(jī)拍攝圖像,配合去噪算法,以減少運(yùn)算量;采用改進(jìn)的SIFT算法能夠準(zhǔn)確匹配特征點(diǎn);需要絕對(duì)對(duì)偶二次曲面法標(biāo)定相機(jī)實(shí)現(xiàn)自動(dòng)化;利用靶標(biāo)法驗(yàn)證重建精度,計(jì)算出坐標(biāo)誤差的標(biāo)準(zhǔn)差為0.101 6。
同激光掃描儀相比,基于單目視覺的圖像三維重構(gòu)的方法具有設(shè)備成本低等優(yōu)點(diǎn),適應(yīng)性較好。該研究可為3D打印模型獲取提供一種方法。