欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于重心Voronoi剖分的點(diǎn)云均一化方法與流程

文檔序號:11730262閱讀:522來源:國知局
基于重心Voronoi剖分的點(diǎn)云均一化方法與流程

本發(fā)明涉及三維點(diǎn)云,尤其是涉及基于重心voronoi剖分的點(diǎn)云均一化方法。



背景技術(shù):

點(diǎn)云是大量點(diǎn)的集合,隨著掃描技術(shù)的日益發(fā)展,我們能利用掃描儀獲取不規(guī)則物體的點(diǎn)云表達(dá)從而重構(gòu)出該物體的網(wǎng)格信息,而后實(shí)現(xiàn)3d圖像顯示乃至3d打印等。

隨著技術(shù)的發(fā)展,相關(guān)科技的成熟,kinect、sense等消費(fèi)級掃描儀出現(xiàn)在了人們面前,人們可以在家就實(shí)現(xiàn)對物體的掃描,從而將物體轉(zhuǎn)化為計算機(jī)上的模型。但是鑒于消費(fèi)級的價格要求,設(shè)備的精度相對較低,掃描出來的點(diǎn)云存在分布過于密集、結(jié)構(gòu)缺失、噪音等缺點(diǎn)。掃描儀程序一般會不會對掃描出的點(diǎn)云進(jìn)行更多更好地優(yōu)化,并且用戶通常沒有簡單、快速和有效的辦法對掃描點(diǎn)云進(jìn)行處理,往往是掃描即所得。但是點(diǎn)云的分布情況直接影響了模型的好壞,最終影響了整個渲染顯示的效果,所以對掃描信息的二次處理是十分必要和有意義的。

網(wǎng)格重構(gòu)領(lǐng)域的重心voronoi剖分方法,是將一個輸入的初始網(wǎng)格進(jìn)行重構(gòu),優(yōu)化點(diǎn)的位置以得到一個性質(zhì)更好的網(wǎng)格。但是該方法是建立在網(wǎng)格基礎(chǔ)之上的一種方法,不適用于以點(diǎn)云為基礎(chǔ)的數(shù)據(jù)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的在于基于重心voronoi剖分的點(diǎn)云均一化方法。

本發(fā)明包括以下步驟:

1)對所有的輸入點(diǎn)建立kd-tree([2]bentleyjl.multidimensionalbinarysearchtreesusedforassociativesearching[j].communicationsoftheacm,1975,18(9):509-517),再查找k近鄰,所述查找k近鄰是給定一個坐標(biāo),查找與該坐標(biāo)最接近的k個點(diǎn)的坐標(biāo);

2)對點(diǎn)云數(shù)據(jù)進(jìn)行權(quán)值的賦值工作,具體方法如下:

首先進(jìn)行5次拉普拉斯光順,每一次普拉斯光順的具體辦法是:對每一個輸入點(diǎn),由步驟1)中提前建立的kd-tree求出距離kd-tree最近的10個輸入點(diǎn),然后將該點(diǎn)的曲率與這10個輸入點(diǎn)的曲率求平均值,將該平均值作為該輸入點(diǎn)的新權(quán)重;其次進(jìn)行冪處理,即把每個輸入點(diǎn)的權(quán)重再做一個實(shí)數(shù)的冪運(yùn)算;

在步驟2)中,所述對點(diǎn)云數(shù)據(jù)進(jìn)行權(quán)值的賦值工作,通常,每一個點(diǎn)的權(quán)重會被設(shè)置為其主曲率中較大的一個(設(shè)定權(quán)重的方法不限于此,具體根據(jù)用戶的需求而定),這樣做的好處在使得輸出點(diǎn)在物體表面尖銳處分布密集,在平滑處分布稀疏。權(quán)值設(shè)置完成后要進(jìn)行曲率的光順;所述實(shí)數(shù)的冪運(yùn)算,可取2.5次冪。

3)用戶指定一個所需要的輸出點(diǎn)的數(shù)量n,然后根據(jù)權(quán)重在輸入點(diǎn)集上進(jìn)行點(diǎn)的采樣,得到n個采樣點(diǎn);

在步驟3)中,所述點(diǎn)的采樣的方式可為:

(1)求所有輸入點(diǎn)的權(quán)重和,記為w;

(2)計算輸出點(diǎn)的平均權(quán)重ws,ws=w/n;

(3)設(shè)定一個累加器sum;

(4)遍歷每一個輸出點(diǎn)一次,每訪問一個點(diǎn),累加器sum就加上該點(diǎn)的權(quán)重,當(dāng)累加器sum的值大于平均權(quán)重ws時,即將當(dāng)下遍歷到的點(diǎn)加入采樣點(diǎn)集q中,同時sum減去ws,如此操作后,將得到一個采樣點(diǎn)集q。

4)對采樣點(diǎn)中的每一個點(diǎn)利用步驟1)中建立的kd-tree,查找該采樣點(diǎn)在輸入點(diǎn)中的k近鄰,利用k近鄰和該采樣點(diǎn)計算最小二乘平面s,將該采樣點(diǎn)投影到平面s上得到一個投影q*,以這個投影q*為中心,在平面s上生成一個正六邊形的三角網(wǎng)格m,中心q*到正六邊形的6個頂點(diǎn)的距離稱為半徑r,所述半徑r的計算公式為:

r=2(vb-box/n)1/3

其中,vb-box為輸入點(diǎn)云的包圍盒體積,n為輸出點(diǎn)個數(shù),該正六邊形網(wǎng)格被稱作估計平面,那么每一個采樣點(diǎn)對應(yīng)一個正六邊形的三角網(wǎng)格,記一個點(diǎn)-網(wǎng)格對為<q*,m>;

在步驟4)中,所述k可選為15。

5)如果點(diǎn)云模型沒有邊界,那么跳過此步驟;如果點(diǎn)云模型有邊界,那么利用pointcloudlibrary這個開源的代碼庫將邊界提取出來,該邊界稱為外邊界;

6)利用步驟4)中求出的所有點(diǎn)-網(wǎng)格對<q*,m>及步驟5)中提取的外邊界計算voronoi圖,對于每一個點(diǎn)q*都將擁有一個voronoi單元,voronoi單元中含有其它點(diǎn)的網(wǎng)格,在計算voronoi圖時不需要考慮其它點(diǎn)的網(wǎng)格,僅需要考慮自己的網(wǎng)格,外邊界只用于voronoi單元的計算,其voronoi單元中不需要計算多邊形網(wǎng)格;

7)計算出voronoi圖后,對于每一個voronoi單元中的多邊形網(wǎng)格進(jìn)行三角化操作,三角化操作是將網(wǎng)格中的多邊形分解成多個三角形,三角化的目的在于計算不規(guī)則多邊形的重心;

在步驟7)中,所述三角化操作可采用delaunay三角化。

8)對每一個voronoi單元,計算voronoi單元的重心p,然后以該重心p作為采樣點(diǎn)的新位置,重心p的計算公式如下:

其中,t表示一個voronoi單元v中的三角形,i為該三角形的頂點(diǎn),ci表示點(diǎn)的權(quán)重,pi表示點(diǎn)的坐標(biāo),at表示三角形t的面積;

9)將每一個點(diǎn)q*移動到新的voronoi單元v的重心p后,計算的所有點(diǎn)-網(wǎng)格對及voronoi圖即失效,需要重新計算估計平面,即回到步驟4)估計平面,反復(fù)執(zhí)行步驟4)~8),即lloyd迭代操作;

在步驟9)中,所述反復(fù)執(zhí)行步驟4)~8)的次數(shù)最好為35~50。

10)如果對有邊界的模型使用到步驟6),那么在結(jié)束步驟9)時需要將外邊界上面的部分點(diǎn)加入到最終的輸出點(diǎn)中,具體方法是對步驟9)中得到的輸出點(diǎn)再求一次邊界,稱為內(nèi)邊界,求出距離每一個內(nèi)邊界最近的外邊界集合,將該外邊界集合加入到最終的輸出點(diǎn)中。

本發(fā)明采用重心voronoi剖分來對輸出點(diǎn)進(jìn)行位置的優(yōu)化。由于輸入的信息為單純的點(diǎn),需要利用點(diǎn)集求出最小二乘面從而建立簡單的離散網(wǎng)格,以期獲得相關(guān)計算參數(shù)。利用點(diǎn)與離散網(wǎng)格計算voronoi圖,然后在每個voronoi單元中,進(jìn)行l(wèi)loyd迭代操作,使得點(diǎn)的分布達(dá)到預(yù)想狀態(tài),即重心voronoi圖([3]qiangdu,vancefaber,maxgunzburger.centroidalvoronoitessellations:applicationsandalgorithms[j].siamreview,1999,41(4):637-676)。

背景技術(shù)中提到掃描儀掃描出的點(diǎn)云數(shù)據(jù)就可以采用本發(fā)明進(jìn)行優(yōu)化,本發(fā)明的優(yōu)勢在于點(diǎn)云的簡化、均一和去噪。其優(yōu)點(diǎn)在于:

1)用較少的點(diǎn)去表達(dá)數(shù)量較多的輸入點(diǎn)云想要表達(dá)的物體,將物體平滑表面的點(diǎn)更多地挪動到物體尖銳表面,有效降低掃描儀掃描出的冗余點(diǎn);

2)對噪聲有一定魯棒性,掃描儀得到的數(shù)據(jù)一般是含有一定的噪聲,造成生成的網(wǎng)格不夠光滑等,本發(fā)明有對噪音數(shù)據(jù)的過濾作用;

3)使得輸出點(diǎn)分布均一、呈現(xiàn)蜂巢狀結(jié)構(gòu),視覺上呈現(xiàn)更好的觀感,總體提升點(diǎn)的分布質(zhì)量,為點(diǎn)云的進(jìn)一步應(yīng)用做出鋪墊;

4)本發(fā)明利用網(wǎng)格重心voronoi剖分相關(guān)技術(shù)進(jìn)行了推廣,使得其能直接處理建立在點(diǎn)云上面的數(shù)據(jù);

5)采用重心voronoi剖分來優(yōu)化三維點(diǎn)云中點(diǎn)的位置信息。該方法首先在輸入的粗糙三維點(diǎn)云上采點(diǎn),然后通過估計每個采樣點(diǎn)的所在平面和計算每個采樣點(diǎn)的voronoi單元,計算出采樣點(diǎn)的重心位置,將采樣點(diǎn)移動到新的位置即進(jìn)行l(wèi)loyd迭代([1]lloyd,s.p.leastsquaresquantizationinpcm[j].ieeetransactionsoninformationtheory1982,28(2):129-137),從而獲得一個蜂窩狀分布的點(diǎn)云結(jié)構(gòu)。

附圖說明

圖1為本發(fā)明輸入的不帶邊界的點(diǎn)云模型。

圖2為本發(fā)明對輸入點(diǎn)云進(jìn)行采樣后得到的采樣點(diǎn)。

圖3為本發(fā)明的單個估計平面示意圖。

圖4為本發(fā)明所有估計平面的示意圖。

圖5為本發(fā)明生成的voronoi圖和三角化的示意圖。

圖6為本發(fā)明最終輸出點(diǎn)云結(jié)果。

圖7為本發(fā)明輸入的帶邊界的點(diǎn)云模型。

圖8為一個邊界提取的示意圖。

圖9為本發(fā)明利用邊界進(jìn)行l(wèi)loyd迭代的示意圖。

圖10為本發(fā)明對有邊界的模型輸出的結(jié)果。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

為了豐富結(jié)果,展示含有邊界和不含邊界兩種情況,以下用2個實(shí)施例說明本發(fā)明,實(shí)施例1為不含有邊界的模型,實(shí)施例2為含有邊界的模型。并且實(shí)施例1在步驟s2中使用曲率作為權(quán)重,實(shí)施例2將權(quán)重全部設(shè)置為1。根據(jù)上述發(fā)明內(nèi)容,實(shí)施例1執(zhí)行除步驟s6和s10之外的8個步驟,實(shí)施例2執(zhí)行全部步驟:

實(shí)施例1:

s1:輸入原始點(diǎn)云,建立點(diǎn)云kd-tree。

讀入一個約2.4萬點(diǎn)的兔子點(diǎn)云模型(參見圖1),對所有點(diǎn)建立三維kd-tree。

s2:對點(diǎn)云的權(quán)重進(jìn)行賦值,數(shù)值上等于點(diǎn)的主曲率較大的一個,并進(jìn)行拉普拉斯光順和冪處理。

s3:初始化輸出點(diǎn),采樣。

指定輸出3000個點(diǎn),根據(jù)權(quán)重的采樣結(jié)果如圖2所示。

s4:計算估計平面。

單個估計平面如圖3所示,將所有采樣點(diǎn)的估計平面畫出來將得到圖4所示的分離網(wǎng)格(為了可視性,每個六邊形的網(wǎng)格半徑被適當(dāng)縮小)。

s5:計算voronoi圖。

利用步驟s4中得到的所有點(diǎn)-網(wǎng)格對計算voronoi圖如圖5(a)所示,一個voronoi單元由一個多邊形網(wǎng)格組成。

s6:無邊界,此步跳過。

s7:計算出voronoi圖后,對于每一個voronoi單元中的多邊形網(wǎng)格進(jìn)行三角化操作。

如圖5(b)所示,將一個不規(guī)則多邊形用許多小三角形表示。

s8:對每一個voronoi圖,計算單元的重心p,然后以該重心作為采樣點(diǎn)的新位置。

即利用公式計算步驟s7中每一個不規(guī)則多邊形的重心,然后將這個voronoi單元的對應(yīng)點(diǎn)移動到該重心。

s9:執(zhí)行l(wèi)loyd迭代。

反復(fù)從步驟s4開始的操作,50次后,得到圖6的輸出點(diǎn)云。

s10:無邊界,此步跳過。

實(shí)施例2:

s1:輸入原始點(diǎn)云,建立點(diǎn)云kd-tree。

讀入約12萬個點(diǎn)的牙齒模型(圖7),對所有點(diǎn)建立三維kd-tree。

s2:對點(diǎn)云的權(quán)重進(jìn)行賦值,權(quán)重全部為1。

s3:初始化輸出點(diǎn),采樣。

指定輸出10000個點(diǎn)。

s4:計算估計平面。

s5:計算voronoi圖。

s6:有邊界,如圖7所示的牙齒模型,對其進(jìn)行邊界提取操作,提取的邊界如圖8所示。邊界被加入計算的示意圖如圖9所示,邊界上的點(diǎn)參與voronoi單元計算。

s7:計算出voronoi圖后,對于每一個voronoi單元中的多邊形網(wǎng)格進(jìn)行三角化操作。

s8:對每一個voronoi圖,計算單元的重心p,然后以該重心作為采樣點(diǎn)的新位置。

s9:執(zhí)行l(wèi)loyd迭代。

反復(fù)從步驟s4開始的操作共50次。

s10:對于有邊界的牙齒模型在步驟s9步后就需要將邊界采樣加入輸出點(diǎn),最終輸出結(jié)果如圖10所示。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武功县| 翁牛特旗| 石泉县| 高雄市| 高唐县| 石楼县| 凤翔县| 砚山县| 民和| 芦溪县| 财经| 克什克腾旗| 钦州市| 子长县| 怀来县| 修水县| 临西县| 五原县| 滦平县| 施秉县| 鄱阳县| 永胜县| 五莲县| 都兰县| 习水县| 扶沟县| 兰州市| 平湖市| 汝城县| 利川市| 宁远县| 湖南省| 赤壁市| 武义县| 疏附县| 烟台市| 诸城市| 定襄县| 玛纳斯县| 龙胜| 右玉县|