劉長英, 王喜超
(吉林大學(xué) 儀器科學(xué)與電氣工程學(xué)院, 長春 130061)
隨著高速列車技術(shù)的興起,滿足人機(jī)工程學(xué)和空氣動(dòng)力學(xué)的流線型列車外形愈來愈受到人們的重視.列車頭部外形尺寸的精確性直接影響到列車的速度與安全性,為了精確檢測(cè)車頭外形尺寸,可以把可視化技術(shù)應(yīng)用于標(biāo)測(cè)過程中,從而使動(dòng)車車頭的測(cè)量及制造更為精準(zhǔn).在車頭標(biāo)測(cè)系統(tǒng)中,散亂點(diǎn)云的三維重建是關(guān)鍵,也是測(cè)量系統(tǒng)的基礎(chǔ).
隨著激光和結(jié)構(gòu)光的廣泛應(yīng)用,物體的三維點(diǎn)云數(shù)據(jù)可以通過三維掃描等方式來獲得.通過點(diǎn)云數(shù)據(jù)可以獲取被測(cè)物體曲面的坐標(biāo)等相關(guān)信息,使得三維曲面重建的過程更加簡(jiǎn)單,隱函數(shù)曲面重建算法[1-3]能更好地根據(jù)三維點(diǎn)云數(shù)據(jù)的特點(diǎn)來重建高精度、高質(zhì)量的物體模型.
當(dāng)前的三維重建可以分為三類:1)參數(shù)曲面重建;2)變形重建;3)網(wǎng)格重建.高速列車車頭的表面結(jié)構(gòu)不是規(guī)則的曲面,很難用原有的方法對(duì)其進(jìn)行三維重建.隱函數(shù)曲面重建僅僅根據(jù)被測(cè)物體的三維坐標(biāo)便能較好地?cái)M合出被測(cè)物的三維模型,其中,泊松曲面重建[4-6]可以把點(diǎn)云數(shù)據(jù)的曲面重構(gòu)轉(zhuǎn)化為求解泊松方程的問題.泊松曲面重建算法可以很好地運(yùn)用被測(cè)物的整體三維點(diǎn)云數(shù)據(jù),從而更好地過濾掉一些與重建計(jì)算無關(guān)的信息,比較適用于解決數(shù)據(jù)量較大的離散數(shù)據(jù).但是由于車頭測(cè)量環(huán)境限制的原因,采集到的點(diǎn)云樣本中含有大量的異常點(diǎn),現(xiàn)有的泊松曲面算法很難解決車頭測(cè)量實(shí)際應(yīng)用中去噪的問題,本文對(duì)原有方法進(jìn)行改進(jìn),從而有效解決了此問題.原有泊松曲面算法還存著空洞性的問題,本文采取改變罰函數(shù)的方法來改進(jìn)現(xiàn)有的泊松曲面重建方法,從而更好地解決了曲面收縮和曲面空洞等問題,使其表面更加光順.針對(duì)提取等值面時(shí)曲面連接的不唯一性,本文提出一種改進(jìn)算法來消除其二義性.
首先要找到一個(gè)合適的泊松方程,將這個(gè)方程作為求取曲面的隱式函數(shù)[7-9],然后再求取點(diǎn)云數(shù)據(jù)最佳等值面,運(yùn)用插值的方法去逼近被測(cè)物表面,圖1為具體的求解示意圖.具體步驟如下:1)求取一個(gè)最佳的指數(shù)函數(shù)φM,如果目標(biāo)點(diǎn)不在曲面內(nèi),則該指示函數(shù)值就為0;如果目標(biāo)點(diǎn)在曲面內(nèi),則該指示函數(shù)值就為1.2)計(jì)算指示函數(shù)梯度,指示函數(shù)的梯度為被測(cè)物表面在其中一點(diǎn)的法矢,僅在所求曲面內(nèi)的法矢可能有非零值,所以通過梯度值[10-11]的計(jì)算可以準(zhǔn)確定位一點(diǎn)在坐標(biāo)系中的相對(duì)位置.3)運(yùn)用插值法使指示函數(shù)梯度最佳逼近點(diǎn)云的向量場(chǎng).4)求取所求指示函數(shù)相應(yīng)的等值面即為模型表面.
圖1 泊松曲面求解示意圖Fig.1 Schematic diagram of Poisson surface solution
本文基于泊松曲面重建算法,在其點(diǎn)云數(shù)據(jù)預(yù)處理問題、最小化問題與提取等值面問題方面提出了不同的解決方法.在點(diǎn)云數(shù)據(jù)預(yù)處理方面,本文采用一種混合濾波器來去除點(diǎn)云數(shù)據(jù)的噪聲,有效地提高了重建的精度和效率;在最小化問題方面,現(xiàn)有方法基本使用最小二乘罰常數(shù),本文則利用平方范數(shù)作為罰常數(shù),有效地控制了重建時(shí)間和曲面精度;在提取等值面方面,本文對(duì)原有算法[12]進(jìn)行了改進(jìn),消除了原有算法中二義性對(duì)提取等值面的影響,獲得了比較精確的車頭表面三維模型.改進(jìn)后的重建算法流程如圖2所示.
圖2 改進(jìn)算法流程圖Fig.2 Flow chart of improved algorithm
現(xiàn)有的泊松曲面重建算法多是采用一些較小的三角面片去拼接被測(cè)物的曲面,三維曲面重建模型是由若干個(gè)小面片拼接而成,在此模型中,由于測(cè)量條件的限制,有很多面片與實(shí)際被測(cè)物曲面不符.這些面片的頂點(diǎn)對(duì)于三維重建模型的精度有著至關(guān)重要的作用,這些與被測(cè)物原始表面不符的面片散落在車頭模型的外部,與被測(cè)模型表面相聚較遠(yuǎn),不符合點(diǎn)云的正態(tài)分布,所以對(duì)于原始點(diǎn)云的預(yù)處理是很有必要的.
由于車頭外形尺寸比較大,點(diǎn)云數(shù)據(jù)量較大,點(diǎn)云數(shù)據(jù)的噪聲種類也比較多,一般的濾波器很難滿足預(yù)處理要求.本文將高斯濾波器與中值濾波器相結(jié)合,可以更好地對(duì)原始點(diǎn)云進(jìn)行預(yù)處理,提高重建模型精度,減少點(diǎn)云的數(shù)據(jù)量,從而加快處理速度.該種混合型濾波器結(jié)合了兩種濾波器的優(yōu)點(diǎn)對(duì)原始數(shù)據(jù)進(jìn)行去噪,高斯濾波器能最大限度地保持原始點(diǎn)云中各點(diǎn)之間的差異,使得重建車頭模型最大限度地保持原貌.中值濾波器可以對(duì)測(cè)量到的三維點(diǎn)云數(shù)據(jù)進(jìn)行較好的平滑處理,大量減少離散點(diǎn),將不符合被測(cè)曲面的點(diǎn)對(duì)重建效果的影響降到最低.
改進(jìn)的泊松曲面重建算法主要為求解指示函數(shù)φM的最小化問題,即
式中:x為任意點(diǎn)云;α為正值模型參數(shù);n為點(diǎn)云相關(guān)法線;f為可微罰函數(shù),其表達(dá)式為
其中:ε為閾值;v為罰函數(shù)的自變量.
現(xiàn)有方法多采用最小二乘法進(jìn)行處理,但最小二乘法需要對(duì)較小結(jié)構(gòu)進(jìn)行收縮,并對(duì)較為尖銳的邊緣進(jìn)行平滑處理.而采用平方范數(shù)當(dāng)作罰函數(shù)相比于最小二乘法可省去上述過程,該方法可以改善其他罰常數(shù)所產(chǎn)生的不穩(wěn)定性,從而提高了算法效率與重建精度.
在泊松重建算法中,如果值為1的角點(diǎn)和值為0的角點(diǎn)位于對(duì)角線的兩端,則會(huì)產(chǎn)生二義性的問題,本文提出一種解決此問題的算法,算法流程圖如圖3所示.
圖3 消除二義性流程Fig.3 Flow chart for elimination of ambiguity
利用泊松曲面重建算法提取等值面時(shí),需逐點(diǎn)判斷各個(gè)面片是否存在兩種連接方式.將各個(gè)頂點(diǎn)函數(shù)值與等值面閾值進(jìn)行比較,大于閾值的點(diǎn)記為1,小于閾值的點(diǎn)記為0.在同一個(gè)小面片中,若值為1和0的點(diǎn)分別位于對(duì)角線的兩端,則存在兩種連接方式,存在二義性的可能.圖4為兩種連接方式產(chǎn)生的二義性示意圖.
圖4 二義性示意圖Fig.4 Schematic diagram of ambiguity
設(shè)點(diǎn)P、Q、M、N為等值面與二義性面的交點(diǎn),直線PQ和MN的交點(diǎn)為O.計(jì)算并比較交點(diǎn)處的函數(shù)值與等值面閾值的數(shù)值關(guān)系,若大于等值面閾值,記為1,反之為0.若為1,該面片與標(biāo)記為1的頂點(diǎn)在一個(gè)區(qū)域;反之,與為0的兩個(gè)頂點(diǎn)在一個(gè)區(qū)域,這樣,可以確定唯一一個(gè)等值面連接方式,從而消除了二義性的問題.
通過拼接獲取曲面重建后的車頭三維表面模型,并把面片擬合起來并將其曲面化,從而將抽象的車頭點(diǎn)云數(shù)據(jù)轉(zhuǎn)化為可視化的三維模型,形成光滑的三維曲面并進(jìn)行測(cè)量等操作.
為了驗(yàn)證本文算法的可行性和有效性,將本文算法與現(xiàn)有算法進(jìn)行對(duì)比.實(shí)驗(yàn)平臺(tái)為Windows 10 64位系統(tǒng),在Visual Studio 2010與PCL點(diǎn)云庫1.6.0環(huán)境下進(jìn)行實(shí)驗(yàn).采用實(shí)驗(yàn)室已有掃描獲得的車頭點(diǎn)云數(shù)據(jù)進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果表明,本文算法對(duì)于高速列車車頭表面重建取得了較好的結(jié)果,算法具有魯棒性和高效性.
圖5為通過機(jī)器視覺方法得到的車頭三維點(diǎn)云模型(stl文件),圖6為采用改進(jìn)方法對(duì)其進(jìn)行重建的三維模型.實(shí)驗(yàn)結(jié)果表明,通過改進(jìn)算法重建得到的三維模型雖然在一些較小的細(xì)節(jié)上不清晰,但是對(duì)車頭外形曲面的擬合精度高,并且重構(gòu)曲面廣順度好.
圖5 車頭的點(diǎn)云數(shù)據(jù)Fig.5 Point cloud data of locomotive
圖6 重建的模型曲面Fig.6 Reconstructed model surface
圖7a為采用現(xiàn)有泊松曲面重建得到的車頭三維曲面模型;圖7b為采用本文方法獲得的曲面模型.通過對(duì)比不難看出,采用本文方法處理過的數(shù)據(jù)經(jīng)三維曲面重建后得到的車頭模型與現(xiàn)有算法相比有明顯差別,其還原效果更為真實(shí),表面更為光滑,重建效果更好.
圖8為采用現(xiàn)有算法與本文算法的細(xì)節(jié)放大對(duì)比圖.采用本文方法重建后的模型光順性較好,通過對(duì)點(diǎn)云數(shù)據(jù)的預(yù)處理與對(duì)提取等值面方法的改進(jìn),濾除了大量異常點(diǎn),減少了錯(cuò)誤拼接的可能,各個(gè)小面片之間的拼接更為合理,使得整個(gè)重建曲面更加光滑,較好地還原了原始車頭模型.
表1為改進(jìn)算法與現(xiàn)有算法各項(xiàng)相關(guān)數(shù)據(jù)的對(duì)比,通過預(yù)處理點(diǎn)云數(shù)據(jù),刪除了大量異常點(diǎn),提高了重建效率.改進(jìn)算法通過對(duì)提取等值面時(shí)二義性的消除,減少了小面片錯(cuò)誤拼接而導(dǎo)致的空洞性問題,拼接的小面片數(shù)量顯著增加,拼接更規(guī)則,使得重建車頭三維模型表面更光滑,重建效果有很大提高.通過對(duì)兩種算法所得的三維模型與車頭原始數(shù)據(jù)進(jìn)行表面輪廓度誤差計(jì)算而得出的數(shù)據(jù)可以看出,改進(jìn)算法的輪廓度誤差相較于現(xiàn)有算法顯著降低,重建精度更高,對(duì)車頭模型的還原度更好.改進(jìn)算法通過對(duì)大量異常點(diǎn)的濾除與對(duì)最小化問題的改進(jìn),減少了數(shù)據(jù)處理量,簡(jiǎn)化了函數(shù)最小化的過程,從而有效縮短算法的運(yùn)行時(shí)間,提高了車頭曲面重建的運(yùn)行效率.
圖7 車頭外形曲面重建對(duì)比Fig.7 Comparison in reconstructed surfaces of locomotive
圖8 車頭外形曲面重建細(xì)節(jié)對(duì)比Fig.8 Detailed comparison in reconstructed surfaces of locomotive
通過對(duì)實(shí)驗(yàn)數(shù)據(jù)的分析不難看出,改進(jìn)算法較現(xiàn)有方法的時(shí)間復(fù)雜度低,算法效率高.表2為改進(jìn)算法與現(xiàn)有算法在處理不同規(guī)模的點(diǎn)云數(shù)據(jù)時(shí)所用的時(shí)間與空間對(duì)比.通過表2可以看出,改進(jìn)算法雖然在內(nèi)存占用上有時(shí)稍高于現(xiàn)有算法,但在處理相同規(guī)模點(diǎn)云時(shí),改進(jìn)算法相較于原有算法所用時(shí)間有著顯著的差別,且當(dāng)點(diǎn)云規(guī)模越大時(shí),所用時(shí)間差別越明顯.
表1 算法相關(guān)數(shù)據(jù)對(duì)比Tab.1 Comparison in related data from different algorithms
表2 時(shí)間空間對(duì)比Tab.2 Comparison in time and space
通過上述實(shí)驗(yàn)可以看出,采用本文方法對(duì)現(xiàn)有泊松曲面重建算法進(jìn)行改進(jìn)后,在噪聲點(diǎn)濾除、曲面光滑性與重建效率方面均優(yōu)于現(xiàn)有泊松曲面重建算法.
本文提出了一種改進(jìn)的泊松算法并對(duì)采集到的車頭點(diǎn)云數(shù)據(jù)進(jìn)行三維重建.該方法可以使重建的車頭模型廣順性更好,減少了異常點(diǎn)對(duì)重建精度與效率的影響,省去了最小二乘法的收縮過程,從而提高了重建效率.另外,針對(duì)提取等值面時(shí)出現(xiàn)的二義性問題,本文采用了一種簡(jiǎn)化改進(jìn)方法來解決此問題,提高了重建精度和速度,獲得了更加準(zhǔn)確的車頭模型,為車頭測(cè)量提供了一種新的方式,也對(duì)大尺寸工件的檢測(cè)起到了推動(dòng)性的作用.下一步將重點(diǎn)研究如何提高重建精度,以滿足更高精度的車頭測(cè)量要求.