本發(fā)明涉及三維模型測量領(lǐng)域,尤其涉及一種獲取物體幾何質(zhì)心的方法。
背景技術(shù):
質(zhì)心,又稱質(zhì)量中心,其在物理中有明確的定義:對(duì)于一個(gè)歐氏空間中的三維流形,其質(zhì)心的坐標(biāo)可以通過求解其內(nèi)部所有點(diǎn)坐標(biāo)的加權(quán)平均得到,質(zhì)心能夠使得慣性矩達(dá)到最小。
然而,當(dāng)物體的外形呈現(xiàn)非凸時(shí),根據(jù)物理定義所得到的質(zhì)心可能會(huì)落在該非凸物體的外部。在數(shù)字幾何處理的很多應(yīng)用場合中,要求質(zhì)心必須落在三維流形的內(nèi)部,并且保證質(zhì)心對(duì)噪聲和變形不敏感。顯然,基于上述物理定義所得到的質(zhì)心并不能滿足此要求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是針對(duì)上述現(xiàn)有提供一種獲取物體幾何質(zhì)心的方法。該方法能夠保證所得到的質(zhì)心處于三維流形的內(nèi)部,并且既可以不受物體外形影響,又可以避免遭受噪聲和變形的不利影響。
本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:一種獲取物體幾何質(zhì)心的方法,用于三維流形所形成的物體,其特征在于,包括如下步驟1至步驟6:
步驟1,計(jì)算三維流形的內(nèi)部距離;其中,三維流形的內(nèi)部距離的計(jì)算過程包括如下步驟1-1至步驟1-3:
步驟1-1,將所述物體對(duì)應(yīng)的三維流形模型離散為多個(gè)四面體,以形成四面體網(wǎng)格;其中,所述四面體網(wǎng)格的獲取過程包括如下步驟1-11和步驟1-12:
步驟1-11,采用TetGen軟件對(duì)所述物體對(duì)應(yīng)的三維流形模型進(jìn)行離散化處理,以生成高質(zhì)量的四面體網(wǎng)格;
步驟1-12,對(duì)四面體的梯度算子、散度算子以及拉普拉斯-貝爾特拉米算子分別進(jìn)行離散化處理;其中,四面體的梯度算子、散度算子以及拉普拉斯-貝爾特拉米算子的離散化處理包括如下步驟1-121至步驟1-124:
步驟1-121,假定在四面體網(wǎng)格內(nèi)部的標(biāo)量函數(shù)f線性變化,并設(shè)定標(biāo)量函數(shù)f為該四面體網(wǎng)格上的分片線性函數(shù);
步驟1-122,根據(jù)四面體網(wǎng)絡(luò)中每個(gè)四面體的分片線性函數(shù),計(jì)算所述每個(gè)四面體的分片線性函數(shù)的梯度算子;其中,四面體h的分片線性函數(shù)的梯度算子標(biāo)記為
其中,Vh表示四面體h的體積,Sj為四面體h中與該四面體h的頂點(diǎn)j相對(duì)的三角形的面積,fj為四面體h的頂點(diǎn)j上的分片線性函數(shù)值,nj為四面體h中與該四面體h的頂點(diǎn)j相對(duì)的三角形上的單位法向量;
步驟1-123,構(gòu)建四面體網(wǎng)格內(nèi)部的分段線性向量場,并設(shè)置四面體的頂點(diǎn)處的散度算子;其中,假設(shè)所構(gòu)建的分段線性向量場g以及四面體h的頂點(diǎn)j處的散度算子分別設(shè)置如下:
其中,m表示四面體網(wǎng)格中的四面體的數(shù)目;Vj表示四面體j的體積;
步驟1-124,獲取四面體網(wǎng)格中拉普拉斯-貝爾特拉米算子的離散化數(shù)值;其中:
Δ=V-1L;
其中,Δ表示拉普拉斯-貝爾特拉米算子,V為對(duì)角矩陣,Vj表示四面體j的體積,L為稀疏對(duì)稱矩陣;i和j分別表示四面體中的兩個(gè)相鄰頂點(diǎn),ωji表示權(quán)重,表示頂點(diǎn)j與頂點(diǎn)i所對(duì)邊ek的長度,為邊ek所處的兩個(gè)平面之間所形成二面角的角度;
步驟1-2,在三維流形中設(shè)定給定的起點(diǎn)為s,并以s為單位熱源,計(jì)算四面體網(wǎng)格經(jīng)過時(shí)刻t之后的熱量分布;其中,四面體網(wǎng)格中的熱量分布計(jì)算過程包括如下步驟1-21和步驟1-22:
步驟1-21,設(shè)定μ(t,x,y)為熱傳導(dǎo)方程的解;其中:
其中,t為四面體所經(jīng)過的時(shí)間,x和y為四面體網(wǎng)格空間中的兩個(gè)任意點(diǎn);k表示所述四面體空間的維度;
步驟1-22,計(jì)算熱量場的梯度,并對(duì)所得熱量場的梯度進(jìn)行歸一化后,得到歸一化熱量場梯度,以利用所得到的歸一化熱量場梯度表示三維流形內(nèi)部距離場的梯度;
步驟1-3,利用LDLT分解法求解泊松方程,以得到三維流形內(nèi)部的距離場;利用LDLT分解法求解泊松方程過程包括步驟1-31和步驟1-32:
步驟1-31,設(shè)定所要求解的泊松方程的矩陣形式如下:
采用LDLT分解法對(duì)泊松方程矩陣進(jìn)行分解:
L=PQΛQTPT;
其中,P為置換矩陣,Q為稀疏的下三角矩陣,V為對(duì)角矩陣;PT為置換矩陣P的轉(zhuǎn)置矩陣,QT為下三角矩陣Q的轉(zhuǎn)置矩陣;G是熱量場的梯度向量場;表示熱量場的梯度算子;
步驟1-32,將所分解的矩陣代入矩陣形式的泊松方程,以得到三維流形內(nèi)部的距離場:
d表示三維流形內(nèi)部的距離場;
步驟2,構(gòu)建針對(duì)三維流形的能量函數(shù)模型;其中,所構(gòu)建的能量函數(shù)模型設(shè)定如下:
其中,E(y)為能量函數(shù),E(y)恒為正數(shù)且有界,ρ(x)為三維流形中點(diǎn)x處的密度,dg(x,y)為三維流形中任意點(diǎn)x與三維流形中任意點(diǎn)y的內(nèi)部距離;
步驟3,采用梯度下降法對(duì)所述能量函數(shù)進(jìn)行最小化處理,以得到三維流形相應(yīng)的梯度函數(shù);其中,三維流形能量函數(shù)的梯度函數(shù)計(jì)算公式如下:
其中,ρ(x)為三維流形中的點(diǎn)x處的密度,dg(x,y)為三維流形中任意點(diǎn)x與三維流形中任意點(diǎn)y的內(nèi)部距離,E(y)為能量函數(shù);
步驟4,根據(jù)所得三維流形的能量函數(shù)的梯度函數(shù),得到三維流形中點(diǎn)x到點(diǎn)y的最短路徑;其中,三維流形中點(diǎn)x到點(diǎn)y的最短路徑記為d(x,y)min,其方向?yàn)樵撟疃搪窂絛(x,y)min的結(jié)束方向,長度為1;
步驟5,針對(duì)三維流形中的點(diǎn)y,隨機(jī)選取N個(gè)不同的初值{yr,r=1,2,…,N}以分別對(duì)能量函數(shù)E(y)進(jìn)行優(yōu)化,并獲取到最優(yōu)能量函數(shù)值;其中,最優(yōu)能量函數(shù)值標(biāo)記為E(y)opt:
步驟6,根據(jù)所獲取的最優(yōu)能量函數(shù)值E(y)opt,以該最優(yōu)能量函數(shù)值E(y)opt所對(duì)應(yīng)的點(diǎn)yv作為物體的幾何質(zhì)心。
進(jìn)一步地,在所述步驟1-2中,所述四面體所經(jīng)過的時(shí)間t=l2,l為四面體網(wǎng)格中所有四面體的平均邊長。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
首先,在利用本發(fā)明方法獲取物體幾何質(zhì)心時(shí),由于本發(fā)明通過對(duì)三維流形的模型進(jìn)行離散化處理,以得到由多個(gè)四面體所形成的四面體網(wǎng)格,記錄了本發(fā)明的方法在不同四面體數(shù)量的網(wǎng)格模型上計(jì)算單源內(nèi)部距離場的時(shí)間代價(jià);利用LDLT加速方法獲取三維流形內(nèi)部距離場的過程僅需消耗非常小的時(shí)間代價(jià),從而實(shí)現(xiàn)利用本發(fā)明方法能夠高效地計(jì)算物體所對(duì)應(yīng)三維流形內(nèi)部距離;
其次,在對(duì)四面體網(wǎng)格的熱量分布情況計(jì)算中,通過對(duì)四面體網(wǎng)格的熱量場梯度歸一化處理,使得針對(duì)四面體網(wǎng)格所經(jīng)過時(shí)間t的取值對(duì)三維流形的內(nèi)部距離場的求解幾乎沒有影響;另外,獲取物體幾何質(zhì)心的計(jì)算代價(jià)??;
再次,對(duì)噪聲的魯棒性好。在針對(duì)三維流形模型處于有噪聲和光滑的情況下,利用本發(fā)明方法所計(jì)算出來的質(zhì)心在位置上僅差1.7×10-3,這說明本發(fā)明中獲取物體幾何質(zhì)心的方法對(duì)噪聲不敏感;
最后,由于本發(fā)明方法所求出的三維流形的內(nèi)部距離也是三維流形內(nèi)部的測地距離,即本發(fā)明將三維流形的歐式距離替換為物體的內(nèi)部距離,也就是三流形內(nèi)部的真正測地距離,而三維流形與物體姿勢變化無關(guān),使得幾何質(zhì)心繼承了這種性質(zhì),即使在姿勢變形較大的情況下,三維流形的質(zhì)心的位置也基本一致。
附圖說明
圖1為本發(fā)明實(shí)施例中獲取物體幾何質(zhì)心的方法的流程示意圖;
圖2為本發(fā)明實(shí)施例中四面體ABCD的示意圖。
具體實(shí)施方式
以下結(jié)合附圖實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
如圖1所示,本實(shí)施例中獲取物體幾何質(zhì)心的方法,用于三維流形所形成的物體,該獲取物體幾何質(zhì)心的方法包括如下步驟1至步驟6:
步驟1,計(jì)算三維流形的內(nèi)部距離;由于每一個(gè)三維流形都可以看成是由多個(gè)四面體所形成,所以每一個(gè)三維流形又可以看做是一個(gè)由多個(gè)四面體所形成的四面體網(wǎng)格,一個(gè)物體對(duì)應(yīng)著一個(gè)三維流形模型;其中,在本實(shí)施例中,三維流形的內(nèi)部距離的計(jì)算過程包括如下步驟1-1至步驟1-3:
步驟1-1,將所述物體對(duì)應(yīng)的三維流形模型離散為多個(gè)四面體,以形成四面體網(wǎng)格;其中,該四面體網(wǎng)格的獲取過程包括如下步驟1-11和步驟1-12:
步驟1-11,采用TetGen軟件對(duì)所述物體對(duì)應(yīng)的三維流形模型進(jìn)行離散化處理,以生成高質(zhì)量的四面體網(wǎng)格;TetGen是一款能夠生成四面體網(wǎng)格的軟件,TetGen軟件屬于本領(lǐng)域技術(shù)人員的常用工具,此處不做過多贅述;
步驟1-12,對(duì)四面體的梯度算子、散度算子以及拉普拉斯-貝爾特拉米算子分別進(jìn)行離散化處理;其中,四面體的梯度算子、散度算子以及拉普拉斯-貝爾特拉米算子的離散化處理包括如下步驟1-121至步驟1-124:
步驟1-121,假定在四面體網(wǎng)格內(nèi)部的標(biāo)量函數(shù)f線性變化,并設(shè)定標(biāo)量函數(shù)f為該四面體網(wǎng)格上的分片線性函數(shù);例如,四面體h的分片線性函數(shù)則標(biāo)記為fh;
步驟1-122,根據(jù)四面體網(wǎng)絡(luò)中每個(gè)四面體的分片線性函數(shù),計(jì)算所述每個(gè)四面體的分片線性函數(shù)的梯度算子;其中,四面體h的分片線性函數(shù)的梯度算子標(biāo)記為
其中,Vh表示四面體h的體積,Sj為四面體h中與該四面體h的頂點(diǎn)j相對(duì)的三角形的面積,fj為四面體h的頂點(diǎn)j上的分片線性函數(shù)值,nj為四面體h中與該四面體h的頂點(diǎn)j相對(duì)的三角形上的單位法向量;假設(shè)四面體網(wǎng)絡(luò)中的四面體個(gè)數(shù)為H,可知h=1,2,…,H;
步驟1-123,構(gòu)建四面體網(wǎng)格內(nèi)部的分段線性向量場,并設(shè)置四面體的頂點(diǎn)處的散度算子;其中,假設(shè)所構(gòu)建的分段線性向量場g以及四面體h的頂點(diǎn)j處的散度算子分別設(shè)置如下:
其中,m表示四面體網(wǎng)格中的四面體的數(shù)目;Vj表示四面體j的體積;Vj實(shí)質(zhì)上就是四面體上頂點(diǎn)j所控制的四面體體積;
步驟1-124,獲取四面體網(wǎng)格中拉普拉斯-貝爾特拉米算子的離散化數(shù)值;其中:
Δ=V-1L;
其中,Δ表示拉普拉斯-貝爾特拉米算子,V為對(duì)角矩陣,Vj表示四面體j的體積,L為稀疏對(duì)稱矩陣;i和j分別表示四面體中的兩個(gè)相鄰頂點(diǎn),ωji表示權(quán)重,表示頂點(diǎn)j與頂點(diǎn)i所對(duì)邊ek的長度,為邊ek所處的兩個(gè)平面之間所形成二面角的角度;具體地,參見圖2中所示:在單獨(dú)的一個(gè)四面體ABCD中,兩個(gè)相鄰的頂點(diǎn)A與頂點(diǎn)B所對(duì)邊即為邊CD,邊CD的長度邊CD所處的兩個(gè)平面分別是面ABD和面ABC,邊CD所處的兩個(gè)平面ABD、ABC之間所形成的二面角即為∠EGF;
步驟1-2,在三維流形中設(shè)定給定的起點(diǎn)為s,并以s為單位熱源,計(jì)算四面體網(wǎng)格經(jīng)過時(shí)刻t之后的熱量分布;其中,四面體網(wǎng)格中的熱量分布計(jì)算過程包括如下步驟1-21和步驟1-22:
步驟1-21,設(shè)定μ(t,x,y)為熱傳導(dǎo)方程的解;其中:
其中,t為四面體所經(jīng)過的時(shí)間,x和y為四面體網(wǎng)格空間中的兩個(gè)任意點(diǎn);k表示所述四面體空間的維度;t=l2,l為四面體網(wǎng)格中所有四面體的平均邊長;該步驟1-21中的公式描述了在時(shí)間t比較小的情況下,熱量和距離之間存在一種換算關(guān)系,即熱量場的等值線也是距離場的等值線。其中,熱量場的梯度方向與距離場的梯度方向基本一致,兩者反向但長度不等;
步驟1-22,計(jì)算熱量場的梯度,并對(duì)所得熱量場的梯度進(jìn)行歸一化后,得到歸一化熱量場梯度,以利用所得到的歸一化熱量場梯度表示三維流形內(nèi)部距離場的梯度;
步驟1-3,利用LDLT分解法求解泊松方程,以得到三維流形內(nèi)部的距離場;利用LDLT分解法求解泊松方程過程包括步驟1-31和1-32:
步驟1-31,設(shè)定所要求解的泊松方程的矩陣形式如下:
采用LDLT分解法對(duì)泊松方程矩陣進(jìn)行分解:
L=PQΛQTPT;
其中,P為置換矩陣,Q為稀疏的下三角矩陣,V為對(duì)角矩陣;PT為置換矩陣P的轉(zhuǎn)置矩陣,QT為下三角矩陣Q的轉(zhuǎn)置矩陣;G是熱量場的梯度向量場;表示熱量場的梯度算子;
步驟1-32,將所分解的矩陣代入矩陣形式的泊松方程,以得到三維流形內(nèi)部的距離場:
d表示三維流形內(nèi)部的距離場;
步驟2,構(gòu)建針對(duì)三維流形的能量函數(shù)模型;其中,所構(gòu)建的能量函數(shù)模型設(shè)定如下:
其中,E(y)為能量函數(shù),E(y)恒為正數(shù)且有界,ρ(x)為三維流形中點(diǎn)x處的密度,dg(x,y)為三維流形中任意點(diǎn)x與三維流形中任意點(diǎn)y的內(nèi)部距離;
步驟3,采用梯度下降法對(duì)能量函數(shù)進(jìn)行最小化處理,以得到三維流形相應(yīng)的梯度函數(shù);其中,三維流形能量函數(shù)的梯度函數(shù)計(jì)算公式如下:
其中,ρ(x)為三維流形中的點(diǎn)x處的密度,dg(x,y)為三維流形中任意點(diǎn)x與三維流形中任意點(diǎn)y的內(nèi)部距離,E(y)為能量函數(shù);
步驟4,根據(jù)所得三維流形的能量函數(shù)的梯度函數(shù),得到三維流形中點(diǎn)x到點(diǎn)y的最短路徑;其中,三維流形中點(diǎn)x到點(diǎn)y的最短路徑記為d(x,y)min,其方向?yàn)樵撟疃搪窂絛(x,y)min的結(jié)束方向,長度為1;
步驟5,針對(duì)三維流形中的點(diǎn)y,隨機(jī)選取N個(gè)不同的初值{yr,r=1,2,…,N}以分別對(duì)能量函數(shù)E(y)進(jìn)行優(yōu)化,并獲取到最優(yōu)能量函數(shù)值;其中,最優(yōu)能量函數(shù)值標(biāo)記為E(y)opt:
具體地,最優(yōu)能量函數(shù)值E(y)opt計(jì)算獲取過程進(jìn)一步說明如下:
首先,令并根據(jù)得到在時(shí)所對(duì)應(yīng)求解得到的y=y(tǒng)v;然后,將所得y=y(tǒng)v代入到能量函數(shù)模型中,從而得到此時(shí)對(duì)應(yīng)的能量函數(shù)值E(yv);最后,把所得能量函數(shù)值E(yv)作為該步驟5中的最優(yōu)能量函數(shù)值,即E(y)opt=E(yv);
步驟6,根據(jù)所獲取的最優(yōu)能量函數(shù)值E(y)opt,以該最優(yōu)能量函數(shù)值E(y)opt所對(duì)應(yīng)的點(diǎn)yv作為物體的幾何質(zhì)心。
在利用本實(shí)施例中的方法獲取物體幾何質(zhì)心時(shí),由于本發(fā)明通過對(duì)三維流形的模型進(jìn)行離散化處理,以得到由多個(gè)四面體所形成的四面體網(wǎng)格,記錄了本實(shí)施例中的方法在不同四面體數(shù)量的網(wǎng)格模型上計(jì)算單源內(nèi)部距離場的時(shí)間代價(jià);利用LDLT加速方法獲取三維流形內(nèi)部距離場的過程僅需消耗非常小的時(shí)間代價(jià),從而實(shí)現(xiàn)利用本發(fā)明方法能夠高效地計(jì)算物體所對(duì)應(yīng)三維流形內(nèi)部距離;
其次,在對(duì)四面體網(wǎng)格的熱量分布情況計(jì)算中,通過對(duì)四面體網(wǎng)格的熱量場梯度歸一化處理,使得針對(duì)四面體網(wǎng)格所經(jīng)過時(shí)間t的取值對(duì)三維流形的內(nèi)部距離場的求解幾乎沒有影響;另外,獲取物體幾何質(zhì)心的計(jì)算代價(jià)??;
再次,對(duì)噪聲的魯棒性好。在針對(duì)三維流形模型處于有噪聲和光滑的情況下,利用本發(fā)明方法所計(jì)算出來的質(zhì)心在位置上僅差1.7×10-3,這說明本實(shí)施例中獲取物體幾何質(zhì)心的方法對(duì)噪聲不敏感;
最后,由于所求出的三維流形的內(nèi)部距離也是三維流形內(nèi)部的測地距離,即本發(fā)明實(shí)施例將三維流形的歐式距離替換為物體的內(nèi)部距離,也就是三流形內(nèi)部的真正測地距離,而三維流形與物體姿勢變化無關(guān),使得幾何質(zhì)心繼承了這種性質(zhì),即使在姿勢變形較大的情況下,三維流形的質(zhì)心的位置也基本一致。