專利名稱:三維物體的近似最小體積包圍盒快速求解方法
技術(shù)領(lǐng)域:
本發(fā)明提供一種三維物體的近似最小體積包圍盒快速求解方法,屬于計算機輔助設(shè)計領(lǐng)域。
背景技術(shù):
三維物體的最小包圍盒在鑄造模具分型、產(chǎn)品包裝設(shè)計、碰撞檢測、圖像處理和模式識別等領(lǐng)域具有廣泛的應(yīng)用。目前,常見的三維物體最小包圍盒求解算法主要包括O’ Rourke算法、投影旋轉(zhuǎn)法和主元分析法三類
1)O’ Rourke算法是一種基于三維物體凸包的最小包圍盒求解算法,該算法能夠準確 求解物體的最小包圍盒,時間復(fù)雜度為0(n3);
2)投影旋轉(zhuǎn)法基于“長方體的三個互相垂直面,當(dāng)且僅當(dāng)其面積最小時,長方體體積最小”,將三維物體的軸向包圍盒分別圍繞三個坐標軸旋轉(zhuǎn),確定各面最小投影矩形獲得最小包圍盒,但是確定某個最小面積的矩形后,包圍盒圍繞其它軸旋轉(zhuǎn)時會改變已確定投影矩形的邊長,使矩形的面積改變,所以不能同時滿足包圍盒三個互相垂直面的面積最小條件;
3)主元分析法利用協(xié)方差矩陣確定散亂點云的主元向量,將主元向量作為坐標軸求解散亂點云的軸向包圍盒,但當(dāng)散亂點云各維相關(guān)度較小時,該方法難以得到最優(yōu)的主元向量,造成較大的誤差。綜上所述,目前尚缺乏一種能夠兼顧求解效率與精度的三維物體最小體積包圍盒求解方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于遺傳算法的三維物體近似最小體積包圍盒的快速求解方法,能夠有效提高三維物體最小包圍盒的求解效率并能保證包圍盒精度符合工程需求,技術(shù)方案如下。一種三維物體的近似最小體積包圍盒快速求解方法,其特征在于包含以下步驟I)對三維物體進行掃描采樣獲取表面點云數(shù)據(jù);2)求解表面點云數(shù)據(jù)的凸包并計算凸包所對應(yīng)的高斯球;3)確定遺傳算法的目標函數(shù),方法是基于O’ Rourke算法在求解三維物體凸包的最小包圍盒問題上的精確性特點,選取O’Rourke算法中包圍盒的體積函數(shù)Hejr ek)作為目標函數(shù),其中~和4表示凸包的任意兩條邊,J'和々為[l,n]之間的整數(shù),η為凸包的邊數(shù);4)確定個體的編碼與解碼方式,方法是由目標函數(shù)ek)中的決策變量可知需要對凸包的任意兩條邊進行組合編碼,采用符號編碼的方式,凸包的η條邊^(qū) ^…,4所對應(yīng)的編碼符號分別用而,m2,…,%表示,個體編碼后的基因型為(^.,%),解碼后所對應(yīng)的表現(xiàn)型為4),且為了能夠快速定位個體基因型與表現(xiàn)型之間的對應(yīng)關(guān)系,以編碼符號為鍵、其所對應(yīng)的邊為鍵值建立哈希表,存儲兩者之間的關(guān)系;5)確定適應(yīng)度函數(shù),方法是由于個體對應(yīng)的包圍盒體積值越小,其適應(yīng)度應(yīng)越大,故將適應(yīng)度函數(shù)設(shè)為
, s為),Viei為)< C
n^,%)=|0} " ,其中c為當(dāng)前代中所有個體目標函數(shù)的體積最大
值;6)利用標準遺傳算法求解凸包的近似最小體積包圍盒。本發(fā)明三維物體的近 似最小體積包圍盒快速求解方法具有以下優(yōu)點
1、通過遺傳算法避免了對散亂點云凸包邊組合的枚舉求解,通過較少次數(shù)的查詢獲得近似最小包圍盒,有效提高了三維物體近似最小體積包圍盒的求解效率;
2、利用O’Rourke算法的體積函數(shù)使得個體對應(yīng)精確的局部體積最小值,防止個體體積精度影響其適應(yīng)度,顯著縮小了三維物體近似最小體積包圍盒體積誤差的范圍,提高計算精度。
圖I是本發(fā)明三維物體的近似最小體積包圍盒快速求解方法的程序?qū)崿F(xiàn)流程圖。圖2是本發(fā)明實施例所使用的兔子模型。圖3是掃描得到的兔子模型表面三維散亂點云。圖4是兔子模型三維散亂點云的凸包。圖5是兔子模型三維散亂點云凸包所對應(yīng)的高斯球。圖6是凸包的邊與編碼符號之間的對應(yīng)存儲關(guān)系。圖7是求解得到的兔子模型的近似最小體積包圍盒。
具體實施例方式實施案例快速求解兔子模型的近似最小體積包圍盒,下面結(jié)合附圖對本發(fā)明作進一步說明。圖I是本發(fā)明三維物體的近似最小體積包圍盒快速求解方法的程序?qū)崿F(xiàn)流程圖,三維物體的近似最小體積包圍盒快速求解程序包含凸包及其高斯球計算程序1,O’ Rourke包圍盒體積計算預(yù)定義程序2以及利用標準遺傳算法求解最小體積包圍盒程序3。在凸包及其高斯球計算程序I中,預(yù)先對三維物體進行掃描采樣得到其表面點云數(shù)據(jù),然后對點云數(shù)據(jù)進行求解計算其凸包P,最后根據(jù)凸包與高斯球之間的映射關(guān)系計算凸包對應(yīng)的高斯球S。圖2為本實施例所使用的三維實體模型一兔子模型,它的表面由大量復(fù)雜曲面拼接組合而成,實施例就是求解該兔子模型的近似最小體積包圍盒。圖3為利用三維激光掃描儀對兔子模型表面進行掃描采樣獲得的兔子模型表面點云數(shù)據(jù),數(shù)據(jù)點個數(shù)為34834個,輸出的文件格式為ASC格式,即文件中每一行記錄一個點的三維坐標值(H ^)。圖4為利用Qhull程序計算求解得到的兔子模型三維散亂點云的凸包,Qhull(WWW. qhull. org)是一款用于計算任意維數(shù)點集的凸包、Delaunay三角剖分以及Voronoi圖等的開源程序軟件,本實施例即是使用Qhull來計算求解兔子模型三維散亂點云的凸包。
圖5為凸包所對應(yīng)的高斯球,對于給定凸包的多面體結(jié)構(gòu)P,計算其高斯球S的時間復(fù)雜度是線性的,具體方法如下①計算P中各個面的單位法向量,將法向量起點平移到高斯球的球心,法向量終點為該面在高斯球S上的映像點將各對相鄰面在高斯球上的映像點使用大圓圓弧連接起來。為達到線性時間復(fù)雜度的目的,在步驟②中必須能夠以線性的復(fù)雜度來判斷P上的相鄰面,否則高斯球求解復(fù)雜度將變?yōu)镺ifl2、。本實施例在利用Qhull構(gòu)建凸包多面體結(jié)構(gòu)P的過程中,利用Qhull提供的Fn參數(shù),可輸出鄰接面信息,從而實現(xiàn)以線性的復(fù)雜度來判斷P上的相鄰面。在O’ Rourke包圍盒體積計算預(yù)定義程序2中,基于O’ Rourke算法對三維物體最小包圍盒計算精確性特點,選用O’ Rourke算法中包圍盒的體積函數(shù)K(ey ek)計算凸包包圍盒的體積,其中和q表示凸包的邊,J和左為[l,n]之間的整數(shù),η為凸包的邊數(shù)。并且將O’ Rourke體積函數(shù)ek)作為遺傳算法的目標函數(shù),并由此確定遺傳算法中適應(yīng)度
函數(shù)為ΓC為當(dāng)前代中所有個體目標函數(shù)的體積
最大值?!じ鶕?jù)目標函數(shù)的形式確定采用符號編碼的方式對凸包的任意兩條邊組合進行編碼,凸包的η條邊&, &所對應(yīng)的編碼符號分別設(shè)為m2,…,,個體編碼后的基因型為~),解碼后所對應(yīng)的表現(xiàn)型為ej,且為了能夠快速查找編碼符號所對應(yīng)的邊,采用哈希表存儲兩者的對應(yīng)關(guān)系,鍵為編碼符號,鍵值為其指向相應(yīng)邊的指針,其存儲關(guān)系不意圖如圖6所7]^。在利用標準遺傳算法求解最小體積包圍盒程序3中,具體的求解步驟為①初始化種群,設(shè)置進化代數(shù)計數(shù)器t=0,最大進化代數(shù)T=50,群體規(guī)模的大小#=100,通過隨機方法產(chǎn)生個體直到滿足種群規(guī)模將其作為初始種群P(O);②個體評價,計算種群P (t)中個體的適應(yīng)度ek)并選取得到種群最優(yōu)個體及其體積值^若t=0則初始化全局最優(yōu)個體及其體積值否則比較^和全局最小體積值如果K>3,則設(shè)當(dāng)前種群P (O)中最優(yōu)個體的體積值為r = 2973. 652cm3,令全局最小體積值匕=2973. 652cm3 ; 采用比例選擇算子進行選擇運算 設(shè)定交叉概率凡=O. 8,采用單點交叉算子進行交叉運算④設(shè)定變異概率凡=O. 01,采用均勻變異算子進行變異運算,種群P(t)經(jīng)過選擇、交叉和變異之后產(chǎn)生新一代種群P (t+1) 6終止條件判斷,若t ( T,則t=t+l,轉(zhuǎn)到步驟②,否則輸出全局最優(yōu)個體及其體積值,解碼求解得到兔子模型近似最小體積包圍盒。圖7即為求解得到的兔子模型的最小體積包圍盒,根據(jù)求得的兔子模型最小包圍盒的邊界數(shù)據(jù),計算出兔子模型近似最小體積包圍盒的外形尺寸,其長、寬、高分別為
11.28cm, 12. 55cm, 16. 95cm,體積為 2399. 510cm3。其它三維物體的近似最小體積包圍盒的求解方法同上。
權(quán)利要求
1. 一種三維物體的近似最小體積包圍盒快速求解方法,其特征在于包含以下步驟1)對三維物體進行掃描采樣獲取表面點云數(shù)據(jù);2)求解表面點云數(shù)據(jù)的凸包并計算凸包所對應(yīng)的高斯球;3)確定遺傳算法的目標函數(shù),方法是基于O’ Rourke算法在求解三維物體凸包的最小包圍盒問題上的精確性特點,選取O’ Rourke算法中包圍盒的體積函數(shù)Hejr ek)作為目標函數(shù),其中~和4表示凸包的任意兩條邊,J'和々為[l,n]之間的整數(shù),η為凸包的邊數(shù);4)確定個體的編碼與解碼方式,方法是由目標函數(shù)ek)中的決策變量可知需要對凸包的任意兩條邊進行組合編碼,采用符號編碼的方式,凸包的η條邊^(qū) ^…,4所對應(yīng)的編碼符號分別用而,m2,…,%表示,個體編碼后的基因型為(^.,%),解碼后所對應(yīng)的表現(xiàn)型為4),且為了能夠快速定位個體基因型與表現(xiàn)型之間的對應(yīng)關(guān)系,以編碼符號為鍵、其所對應(yīng)的邊為鍵值建立哈希表,存儲兩者之間的關(guān)系;5)確定適應(yīng)度函數(shù),方法是由于個體對應(yīng)的包圍盒體積值越小,其適應(yīng)度應(yīng)越大,故將適應(yīng)度函數(shù)設(shè)為 t 、 fC—F(e,.,&k) , V(e,-,ek)<C” kJ ^ ^ u ,其中c為當(dāng)前代中所有個體目標函數(shù)的體積最大值;6)利用標準遺傳算法求解凸包的近似最小體積包圍盒。
全文摘要
本發(fā)明提供一種三維物體的近似最小體積包圍盒快速求解方法,其特征在于對三維物體進行掃描采樣獲取表面點云數(shù)據(jù),然后對物體表面點云數(shù)據(jù)進行計算求解其三維凸包及其對應(yīng)的高斯球,選取O’Rourke算法中包圍盒的體積函數(shù)V(ej,ek)作為遺傳算法的目標函數(shù),并根據(jù)該目標函數(shù)確定遺傳算法的適應(yīng)度函數(shù)以及個體的編碼和解碼方式,進而利用標準遺傳算法求解三維物體凸包的近似最小體積包圍盒。采用本方法能夠有效提高三維物體的最小體積包圍盒的求解效率并保證包圍盒精度符合工程需求。
文檔編號G06F17/50GK102902864SQ20121039443
公開日2013年1月30日 申請日期2012年10月17日 優(yōu)先權(quán)日2012年10月17日
發(fā)明者孫殿柱, 宋洋, 白銀來, 李延瑞 申請人:山東理工大學(xué)