999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于點云融合算法的Kinect三維重建技術(shù)及其應(yīng)用研究

2018-08-15 08:02:46吳劍鋒蔣濛婷馬夢鑫
計算機(jī)應(yīng)用與軟件 2018年8期
關(guān)鍵詞:深度模型

吳劍鋒 蔣濛婷 馬夢鑫 羅 凱

(浙江工業(yè)大學(xué) 浙江 杭州 310023)

0 引 言

三維重建(3D Reconstruction)技術(shù)是指在計算機(jī)環(huán)境下對人物或物體建立能完整表示和處理的三維模型,它屬于計算機(jī)視覺的一個分支。目前三維重建技術(shù)已在多個領(lǐng)域里面得到廣泛應(yīng)用,如醫(yī)學(xué)、歷史文化遺產(chǎn)保護(hù)、游戲、虛擬現(xiàn)實、逆向工程等。

現(xiàn)如今,三維重建的軟硬件實現(xiàn)技術(shù)有很多,在不同的行業(yè)根據(jù)自身的特點也會選擇不同的方法。例如在建筑行業(yè),一般采用合成孔徑雷達(dá)SAR(Synthetic Aperture Radar)技術(shù)、無人機(jī)航拍等獲取三維重建數(shù)據(jù),如黃佳彪等[1]的研究,馮荻[2]的三維重建技術(shù)研究。在醫(yī)學(xué)領(lǐng)域,一般采用計算機(jī)斷層掃描技術(shù)、超聲圖像、CT掃描等方式獲取精確數(shù)據(jù),如魯媛媛等[3]在乳腺腫瘤領(lǐng)域的研究,萬建省等[4]在復(fù)雜腎結(jié)石經(jīng)皮腎鏡取石術(shù)中的應(yīng)用探討。上述領(lǐng)域?qū)θS重建精度有極高的要求,因此整個過程所需的硬件設(shè)備價格昂貴,重建技術(shù)復(fù)雜,無法普及。本文采用Kinect硬件設(shè)備用于獲取三維重建數(shù)據(jù),極大降低了設(shè)備成本以及技術(shù)復(fù)雜度,更加利于三維重建技在教學(xué)和生活上的廣泛普及。

自微軟發(fā)布Kinect的開發(fā)框架SDK后,國內(nèi)外眾多學(xué)者都參與研究其在三維重建技術(shù)領(lǐng)域上的實現(xiàn)方法和實際應(yīng)用價值。由Newcombe等[5]開發(fā)的KinectFusion系統(tǒng)可以說是具有里程碑的意義,利用Kinect獲取三維點云數(shù)據(jù),并通過迭代最近點算法來進(jìn)行配準(zhǔn),最后TSDF點云融合算法完成重建。此方法重建精度低,不適用大范圍場景,對環(huán)境有一定限制,對進(jìn)行重建技術(shù)的計算機(jī)要求高。針對KinectFusion的缺點,國內(nèi)外的學(xué)者用不同方式進(jìn)行了改進(jìn),并取得了一定進(jìn)展。Whelan等[6]的Kintinuous對KinectFusion算法改進(jìn),使之能夠用于大范圍場景重建。Keller等[7]對KinectFusion算法進(jìn)行了改進(jìn),采用基于點的重建方式代替原本基于體素的重建方式。Zeng等[8]用八叉樹代替原有三維數(shù)組數(shù)據(jù)結(jié)構(gòu),減少了計算機(jī)存儲空間浪費(fèi),提高了重建精度以及重建范圍。朱笑笑等[9]通過添加環(huán)境邊線特征點匹配以及地面點云,提高了原算法的魯棒性以及重建精度。

本文通過Processing平臺進(jìn)行三維重建,相比其余平臺,該平臺操作更加便捷、簡易,更利于在教育及生活中普及三維重建。本文首先對深度圖像數(shù)據(jù)進(jìn)行雙邊濾波處理,去除采集過程中產(chǎn)生的噪點,通過OpenNI坐標(biāo)轉(zhuǎn)移技術(shù)獲取光滑三維點云。其次,在點云融合過程中,提出通過ICP算法構(gòu)建表面網(wǎng)格獲取三維模型,再利用3D打印修復(fù)技術(shù)進(jìn)行模型修復(fù),與KinectFusion的TSDF點云融合方法相比,雖在模型精度上些許下降,但能大大提高重建效率,更適合在工業(yè)設(shè)計、產(chǎn)品設(shè)計、輔助教育等領(lǐng)域應(yīng)用。

1 Kinect 3D數(shù)據(jù)掃描原理

利用Kinect平臺,基于OpenNI框架下,采用Processing的SimpleOpenNI庫來進(jìn)行對物體的三維點云數(shù)據(jù)的獲取。而所有的三維點云數(shù)據(jù)都是在Kinect的深度圖像中獲取,Kinect的深度圖像是由其自帶的紅外投影機(jī)和紅外攝像頭配合獲取而得,如圖1所示。

圖1 Kinect深度流數(shù)值

獲取到得每個像素點數(shù)據(jù)都是一個為兩個字節(jié)的數(shù)據(jù),即共16 bit數(shù)據(jù),其中前13個bit就是每個像素的深度值。在空間坐標(biāo)(x,y,z)中,所獲取的深度圖平面坐標(biāo)(x,y)以目標(biāo)位置為參考平面,z代表Kinect傳感器與物體目標(biāo)的距離(即圖中的攝像頭與物體的深度),如圖2所示。

圖2 Kinect深度數(shù)據(jù)流

利用Kinect獲取深度圖像數(shù)據(jù)過程中,由于自身信號傳輸和環(huán)境因素的干擾,不可避免地會出現(xiàn)一定的噪聲。這會影響到后續(xù)三維重建的計算過程,因此需要對獲得的深度數(shù)據(jù)進(jìn)行濾波處理。本文采用的是雙邊濾波算法[10],其是高斯濾波算法的改進(jìn)算法,特點是采用灰度域權(quán)值和空間域權(quán)值優(yōu)化圖像邊緣數(shù)據(jù)。對深度圖像D中的點p(x,y)計算方法如下:

(1)

(2)

式中:q是點p領(lǐng)域中的點,δs2和δr2為灰度域權(quán)值和深度域權(quán)值。

通過OpenNI的坐標(biāo)轉(zhuǎn)移技術(shù),提高掃描獲取光滑的三維點云數(shù)據(jù)。如圖3所示。

圖3 通過程序改變掃描角度獲得點云數(shù)據(jù)

2 網(wǎng)格構(gòu)建的關(guān)鍵技術(shù)

通過上述方法獲取三維點云數(shù)據(jù)后,盡管在屏幕上顯示的是連續(xù)的圖像,但這技術(shù)還是不具備能夠?qū)D像打印成物理所需的數(shù)據(jù)結(jié)構(gòu)。點云數(shù)據(jù)中的點定位在3D空間中,但它們并不是以描述一個可以打印的實際表面。為了能構(gòu)建一個表面,就必須對所有的點云數(shù)據(jù)進(jìn)行構(gòu)建網(wǎng)格生成表面。

用迭代最近點算法ICP(Iterative closest point)[11]來構(gòu)建三角形網(wǎng)格。Kinect在開始掃描的時候,從一個單獨的深度點的索引開始,然后計算如何將這個點與鄰近的點連接起來,形成能添加至網(wǎng)格的三角形。如圖4所示。

圖4 三角形索引點圖

在一個每行4個共3行的深度點中,由于Kinect獲取的深度點云并不是整齊排列在行中的,而是根據(jù)落在物體表面的區(qū)域而輕微分散的。如圖4所示,黑色點表示當(dāng)前點,用羅盤的方法來命名各個角:NW為當(dāng)前點,它將構(gòu)成左上角,NE為右上角,而SW和SE為下面兩個。現(xiàn)在要計算這四個角的索引i(即搜索編號),第一個點NW比較簡單,利用式(3),將深度點的x-y位置變換為索引;其他3個點分別在x軸和y軸上有s行的位移,即NE點的索引為(x+s)+y×640,SW點為x+(y+s)×640,SE點為(x+s)+(y+s)×640。

i=y×640+x

(3)

計算出4個點的索引后,根據(jù)右手準(zhǔn)則增加頂點,這樣就可把這4個點定義的平面分割成兩個三角形:分別是NW到NE到SW和NE到SE到SW,如圖5所示。

圖5 三角形網(wǎng)格的構(gòu)成圖

為了得到每一個點的位置,就必須要計算它們在深度點數(shù)組中的索引。當(dāng)前點完成索引工作后,就從NE點開始,NE是緊挨著當(dāng)前點右側(cè)的點,為了能找到它的索引,就要在當(dāng)前點的索引上增加一個變量r,從而來計算當(dāng)前行下一個位置的深度點。其中SW是開始點的下一行,在構(gòu)建網(wǎng)格過程中,如果要用到所有行的深度點,那只需要每次都下移一行,但是,為了加快掃描的速度,采用減少掃描密度的方法,隨機(jī)跳過一些行。當(dāng)跳過一些行后,為了能重新找到索引點,這里就用變量r來判斷,當(dāng)算出SW的索引后,那么SE也就自然簡單可以計算而得。

通過如此的方法得到平面的三角形,應(yīng)用到3D幾何中也是類似的方法,三角形本身就是3D幾何的基本原子單元。通過把Kinect獲取的深度點連接成一個平滑的表面,如圖6所示。如在150像素的立方體上的兩個面,把每個面拆分成兩個三角形,每一個三角形連接都是由組成面的四個點中的三個點組成,而每個點最終都屬于多個三角形。

圖6 立體網(wǎng)格的構(gòu)成圖

3 3D打印修復(fù)技術(shù)

通過上述網(wǎng)格構(gòu)建技術(shù),通過Processing的Modelbuilder庫導(dǎo)出STL模型文件后,用微軟的3D builder打開發(fā)現(xiàn),掃描獲得的網(wǎng)格一片混亂,如圖7所示。這并不是在上一步進(jìn)行三角形網(wǎng)格構(gòu)建的時候出現(xiàn)的錯誤,如果將圖進(jìn)行拉伸,所有的表面還是可以看到,只是背景前后錯位。

圖7 背景前后錯層圖

在構(gòu)建網(wǎng)格中,采用的是迭代鄰近點的方法,但是在Kinect的深度圖中是有很多孔洞的,而根據(jù)深度圖生成原理中,這些孔洞的坐標(biāo)都是(0,0,0),當(dāng)去迭代這些點時就會導(dǎo)致背景和物體的錯位。對于一個可打印的3D模型,它必須是無縫的,即需要一個連續(xù)的立體表面,所有的法線必須朝向外側(cè)。

計算法線的方法可以非常簡單,如對每一個點,取和它相鄰的兩個點組成三角形,計算三角形的法向即為該點的法向。但是這種方法很不精確,其中有一個點的坐標(biāo)稍有變化,就會影響最終法線的方向。

要解決這個問題,采用的方法是考慮一個點周邊的所有的點,使用最小二乘法來擬合一個最佳平面,這個平面的法向即為該點的法向[12]。首先要計算該點以及周邊的所有點到這個平面的距離之平方和最小:

(4)

式中:M為所有點到平面的距離平方和,a、b、c是決定這個平面的參數(shù),也就是這個平面的法矢量(a,b,c)。x、y、z是該點的坐標(biāo),為了求出合適的a、b、c值,對三個變量分別求偏導(dǎo):

(5)

(6)

(7)

通過公式計算出a、b、c值,即可得到該面的法向。在Kinect獲取到深度圖像數(shù)據(jù)后,通過上述方法進(jìn)行修復(fù)處理。修復(fù)結(jié)果如圖8所示。

圖8 錯層修復(fù)圖

在進(jìn)行修復(fù)處理后,已經(jīng)將三維表面連接成面了,但由于構(gòu)建網(wǎng)格是三角形網(wǎng)格,即表面都是三角形,這樣導(dǎo)出模型的表面相對粗糙。為了能快速地生成打印格式文件,本文通過微軟的3D builder軟件進(jìn)行一鍵手動修復(fù)表面,修復(fù)的過程中也能調(diào)整好打印所需的切片文件,如圖9所示。

圖9 表面光滑處理圖

通過上述處理后,就可以得到進(jìn)行3D打印前的模型文件,導(dǎo)出成stl格式后完成打印工作。

4 輔助教學(xué)中的具體應(yīng)用實現(xiàn)

上述Kinect的三維重建技術(shù)結(jié)合3D打印技術(shù)在輔助教學(xué)方向具有重要的應(yīng)用價值,以下以立體幾何結(jié)構(gòu)輔助教學(xué)應(yīng)用為例。立體幾何結(jié)構(gòu)的學(xué)習(xí)在機(jī)械結(jié)構(gòu)設(shè)計和產(chǎn)品結(jié)構(gòu)設(shè)計中都起著至關(guān)重要的作用。但是在教學(xué)過程中,如果沒有用具體的結(jié)構(gòu)實物來講解,學(xué)生往往很難靠想象來記住復(fù)雜的結(jié)構(gòu),特別是多結(jié)構(gòu)體的相互穿插,產(chǎn)生的交插截面是很難想象出來的,只靠講解和平面圖是較難理解和掌握。

如果應(yīng)用本文所講述的技術(shù),即利用Kinect對多個幾何結(jié)構(gòu)物體進(jìn)行分別掃描重建,通過微軟開發(fā)的3D builder軟件對多個三維幾何圖形進(jìn)行組合,通過3D打印機(jī)打印出組合模型,這樣就可從實物上一目了然地看到新物體的結(jié)構(gòu),從而達(dá)到輔助教學(xué)的目的。而且,對比傳統(tǒng)的KinectFusion的應(yīng)用方法,其優(yōu)勢非常明顯,整個掃描、建模到打印過程快速簡單、效率高、對硬件的要求低,一般的教學(xué)設(shè)備即可滿足。具體的實現(xiàn)流程如圖10所示。

本實驗具體以兩把不同椅子組合模型為例。兩把椅子結(jié)構(gòu)融合交錯,如果沒有結(jié)構(gòu)實體,很難想象出各個交錯截面的結(jié)構(gòu)樣式。因此使用上述方法,可以通過得到的實物,清晰地從不同角度和深度來體現(xiàn)。根據(jù)上述流程圖,首先通過Kinect的紅外攝像頭和紅外投影儀來分別獲取兩把椅子的深度圖像。對于獲取到的深度圖像,在程序中,可以直接得到每個像素點的三維數(shù)據(jù),并可通過坐標(biāo)轉(zhuǎn)換實現(xiàn)各個位置的點云數(shù)據(jù),如圖11所示。

圖11 兩把椅子的點云數(shù)據(jù)圖

對于調(diào)整好角度的點云數(shù)據(jù),利用迭代最近點算法(ICP)進(jìn)行三角形網(wǎng)格構(gòu)建,從而融合所有點云實現(xiàn)三維重建,用3D builder打開,如圖12所示。

圖12 3Dbuilder椅子模型效果圖

為了避免導(dǎo)出三維模型數(shù)據(jù)的背景與物體前后交錯的現(xiàn)象,采用網(wǎng)格修正算法對所有的點云數(shù)據(jù)進(jìn)行修正。利用Processing的ModelBuilder庫進(jìn)行STL文件的導(dǎo)出,再利用微軟的3D builder軟件進(jìn)行修復(fù)重組,如圖13所示。

圖13 3Dbuilder修復(fù)重組模型效果圖

對得到的STL文件模型利用桌面3D打印機(jī)進(jìn)行實體模型打印。打印結(jié)果如圖14所示。

圖14 實體打印模型

通過該實驗證明,在輔助教學(xué)中對復(fù)雜的結(jié)構(gòu)拼接和結(jié)構(gòu)教學(xué)都帶來更為直觀的呈現(xiàn),這樣就可以摒棄傳統(tǒng)教學(xué)中靠想象和平面圖示的抽象認(rèn)知。

5 結(jié) 語

本文利用Kinect三維重建技術(shù)結(jié)合3D打印技術(shù)研究在輔助教育領(lǐng)域的價值,采用Kinect的多深度圖像融合算法,通過微軟的3D builder平臺進(jìn)行優(yōu)化,基于桌面3D打印機(jī)實現(xiàn)實物模型輸出。在實驗中,本文是基于OpenNI框架,使用Processing的SimpleOpenNI庫進(jìn)行3D點云數(shù)據(jù)掃描,并用ModelBuilder庫進(jìn)行網(wǎng)格構(gòu)建輸出三維模型STL文件,根據(jù)上述實驗所得的組合實體模型,可以直觀地看出其幾何結(jié)構(gòu)穿插部分的輪廓,在輔助教育中帶來更為直觀正確的教學(xué)。這種快速的建模方法在其他領(lǐng)域也有很多快速高效的優(yōu)勢。

猜你喜歡
深度模型
一半模型
深度理解一元一次方程
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
深度觀察
深度觀察
深度觀察
深度觀察
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
主站蜘蛛池模板: 色综合日本| 波多野结衣中文字幕一区二区| 成人精品视频一区二区在线| 精品国产美女福到在线不卡f| 婷婷亚洲最大| 中文字幕人妻av一区二区| 亚洲AⅤ综合在线欧美一区| 国产免费久久精品99re不卡| 91久久国产热精品免费| 色噜噜久久| 天天综合色网| 亚洲,国产,日韩,综合一区 | 中日无码在线观看| 人妻无码中文字幕一区二区三区| 国产精品黑色丝袜的老师| 国产十八禁在线观看免费| 国产熟睡乱子伦视频网站| 免费毛片视频| 欧美黄色网站在线看| 久久精品无码国产一区二区三区| 老熟妇喷水一区二区三区| 露脸国产精品自产在线播| 国产一区亚洲一区| 欧美国产日韩另类| 久久99国产精品成人欧美| 九色国产在线| 一本大道无码日韩精品影视| 91午夜福利在线观看| 亚洲综合第一页| 欧美不卡二区| 日本91在线| 国产特级毛片aaaaaa| 日韩一二三区视频精品| 国产美女精品人人做人人爽| 九九久久99精品| 色网站在线视频| 久久精品嫩草研究院| 国产情精品嫩草影院88av| 黄色污网站在线观看| 亚洲av无码专区久久蜜芽| 试看120秒男女啪啪免费| 久久中文电影| 久夜色精品国产噜噜| 亚洲二三区| 99久久人妻精品免费二区| 精品自拍视频在线观看| 日本国产精品| 成人字幕网视频在线观看| 久久精品无码国产一区二区三区| 亚洲最大在线观看| 国产91丝袜在线观看| 久久99蜜桃精品久久久久小说| 日本成人在线不卡视频| 亚洲欧美国产高清va在线播放| 夜精品a一区二区三区| a欧美在线| 欧美日韩综合网| 日韩成人在线视频| 国产精鲁鲁网在线视频| 日本高清视频在线www色| 国内精品久久人妻无码大片高| 91精品视频在线播放| 在线播放精品一区二区啪视频| 欧美成人h精品网站| 99热这里都是国产精品| 欧美区日韩区| a级毛片视频免费观看| 成人夜夜嗨| 97视频在线观看免费视频| 国产三级精品三级在线观看| 日韩中文精品亚洲第三区| 高清视频一区| 国产天天色| 99热这里只有精品5| 国产精品任我爽爆在线播放6080| 精品精品国产高清A毛片| 高清亚洲欧美在线看| 婷婷六月综合| 国产成人AV男人的天堂| 久久国产乱子伦视频无卡顿| 毛片一区二区在线看| 国产精品欧美在线观看|