一種計(jì)算三維點(diǎn)云模型骨骼的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬圖形處理技術(shù)領(lǐng)域,尤其涉及一種三維點(diǎn)云模型骨骼提取方法。
【背景技術(shù)】
[0002] 隨著三維掃描設(shè)備的普及,三維點(diǎn)云模型數(shù)量越來越多。但通過普通三維掃描設(shè) 備獲得的三維點(diǎn)云,由于硬件自身的精度、拍攝角度、光照、三維物體自身相互遮擋和用戶 使用設(shè)備不當(dāng),生成的點(diǎn)云模型包含大量的噪聲點(diǎn)、奇異點(diǎn)和大面積的點(diǎn)云缺失。模型骨骼 有眾多應(yīng)用,例如在醫(yī)學(xué)上,骨骼可以用于進(jìn)行內(nèi)窺鏡檢查,此外,在計(jì)算機(jī)圖形學(xué)方面,骨 骼可用于控制人物網(wǎng)格模型運(yùn)動(dòng),生成骨骼動(dòng)畫,也可用于驅(qū)動(dòng)點(diǎn)云模型進(jìn)行配準(zhǔn),完成點(diǎn) 云模型修復(fù)的目的。
[0003] 然而,三維模型骨骼獲取仍有很大的問題,尤其對于直接掃描獲得的,帶有大量噪 聲和大面積點(diǎn)云缺失的模型。首先,因?yàn)辄c(diǎn)云模型沒有拓?fù)溥B接信息,很難通過模型拓?fù)潢P(guān) 系提取骨骼。其次,點(diǎn)云模型質(zhì)量較差,往往有大面積點(diǎn)云缺失,大量噪聲點(diǎn)和奇異點(diǎn),增加 了骨骼提取的難度。最后骨骼提取是病態(tài)的問題,現(xiàn)存的骨骼提取方法為了計(jì)算出較好的 骨骼結(jié)果,需要調(diào)試大量參數(shù),導(dǎo)致算法實(shí)用性降低。為了滿足實(shí)際需求,當(dāng)前迫切需要一 種適用范圍廣,效果顯著的視頻背景修復(fù)方法。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明為了解決上述的技術(shù)問題,提出了一種三維點(diǎn)云模型骨骼提取方法。本發(fā) 明的技術(shù)方案是:一種三維點(diǎn)云模型骨骼提取方法,包括下述步驟:
[0005] 步驟1,用戶指定輸入三維點(diǎn)云模型0 = /e/Cf,Q為三維空間R3中模型,q j 為模型上的頂點(diǎn),J是三維點(diǎn)云模型頂點(diǎn)的索引,所述的三維點(diǎn)云模型包含噪聲點(diǎn)、奇異點(diǎn) 和點(diǎn)Ζ5Γ缺失;從二維點(diǎn)75Γ模型頂點(diǎn)上隨機(jī)選取米樣點(diǎn)集X = {xj i e P I是米樣點(diǎn)集X的索 弓丨,采樣點(diǎn)乂1最終向三維點(diǎn)云模型內(nèi)部移動(dòng),構(gòu)成三維點(diǎn)云模型骨骼;
[0006] 步驟2,將三維點(diǎn)云模型均勻體素化;
[0007] 步驟3,計(jì)算出三維點(diǎn)云模型距離域DT,三維點(diǎn)云模型體素化之后,使用快速行軍 算法,計(jì)算出模型內(nèi)部體素點(diǎn)的距離域;
[0008] 步驟4,計(jì)算三維點(diǎn)云模型初始骨骼S = 〔爐,Sk為骨骼點(diǎn),K為初始骨骼 點(diǎn)集的索引,計(jì)算出三維點(diǎn)云模型距離域后,使用三維點(diǎn)云模型距離域,計(jì)算三維點(diǎn)云模型 初始骨骼;
[0009] 步驟5,將初始骨骼點(diǎn)和1^第一范式中值骨骼提取算法進(jìn)行融合,生成基于距離域 的L1第一范式中值骨骼提取算法,通過最小化以下能量方程,計(jì)算出三維點(diǎn)云模型的完整 骨骼;
[0010]
[0011] 其中,I是采樣點(diǎn)集X的索引,J是模型Q頂點(diǎn)的索引,權(quán)重函數(shù)<r) =,/W2)2 是一個(gè)快速衰減的平滑函數(shù),r為距離值,其支持半徑為h,參數(shù)〇 1通過加權(quán)PCA主成 分分析算法計(jì)算,用于檢測骨骼段的生成,{ γ i Ε :為X的平衡常數(shù),K為初始骨骼點(diǎn)集 汶=C#的索引,權(quán)重函數(shù):轉(zhuǎn)的=:郷P,X1,為非X i的點(diǎn);對圓心為采樣點(diǎn)X i,半徑為 h的球體,球體包含所有點(diǎn)個(gè)數(shù)為n,球體包含的初始骨骼點(diǎn)個(gè)數(shù)為N ;
[0012] 步驟6,將骨骼按照規(guī)定結(jié)構(gòu),所述的規(guī)定結(jié)構(gòu)為骨骼由骨骼點(diǎn)構(gòu)成的結(jié)構(gòu),相鄰 骨骼點(diǎn)通過直線連接,計(jì)算出三維點(diǎn)云模型的一維曲線骨骼,完成骨骼提取。
[0013] 優(yōu)選的,所述的步驟2中還包括如下步驟:
[0014] 步驟2. 1,計(jì)算出三維點(diǎn)云模型的包圍盒;
[0015] 步驟2. 2,用戶指定初始分割精度和最終分割精度,將包圍盒按照用戶指定的初始 分割精度進(jìn)行均勻分割;
[0016] 步驟2. 3,標(biāo)識(shí)邊界體素;如果大體素包含三維點(diǎn)云模型頂點(diǎn),則大體素為邊界體 素,然后使用泛洪算法,標(biāo)識(shí)外部體素,選擇一個(gè)外部體素作為種子點(diǎn),判斷該體素26鄰域 中的體素是否為邊界體素,如果鄰居體素不是邊界體素,則將鄰居體素標(biāo)記為外部體素,從 鄰居體素開始繼續(xù)擴(kuò)展;如果是邊界體素,則該鄰居體素不再參加擴(kuò)展;直至所有外部體 素被標(biāo)記,最終剩下的體素為內(nèi)部體素;
[0017] 步驟2. 4,將體素進(jìn)行細(xì)分,直到分割至用戶指定精度。
[0018] 優(yōu)選的,所述的步驟2. 4中按如下方法將體素進(jìn)行細(xì)分:在每一次細(xì)分前,首先對 所有體素進(jìn)行3X3X3均勻分割,將每一個(gè)體素分割為27個(gè)小體素,重新判斷邊界體素的 類別,如果分割后的小邊界體素包含三維點(diǎn)云模型頂點(diǎn),該體素仍標(biāo)識(shí)為邊界體素;如果小 邊界體素的26鄰域中有外部體素,將該體素標(biāo)識(shí)為外部體素;否則,該體素標(biāo)識(shí)為內(nèi)部體 素,重復(fù)執(zhí)行步驟2. 4,不斷生成新的外部體素、內(nèi)部體素、邊界體素,直到分割至用戶指定 精度。
[0019] 優(yōu)選的,所述的步驟4中還包括如下步驟:
[0020] 步驟4· 1,根據(jù)三維點(diǎn)云模型內(nèi)部體素點(diǎn)P,判斷狀A(yù)T,: =Z^r, /Μ,Λ/ΛΤ;卜:Dr 是否成立,其中DTp是體素點(diǎn)ρ的距離域,ΜΚζ是點(diǎn)ρ的26鄰居的平均距離域,
巧是26鄰居的厚度參數(shù);
[0021] 步驟4. 2,根據(jù)三維點(diǎn)云模型內(nèi)部體素點(diǎn)P,判斷施《=[>1; /63,備<巧-JP2
是否成立,:是點(diǎn)P的63鄰居的平均距離域 %是63 鄰居時(shí)的厚度參數(shù);
[0022] 步驟4· 3,根據(jù)三維點(diǎn)云模型內(nèi)部體素點(diǎn)p,判斷ΜΛ.'/.'· = E>7:; . IH .IfV·/:,,/ J/., -KPi
Λ rr 是否成立,MV7;是點(diǎn)P的124鄰居的平均距離域: 了匕是 124鄰居時(shí)的骨骼厚度參數(shù);
[0023] 步驟4. 4,如果三維點(diǎn)云模型內(nèi)部體素點(diǎn)p滿足步驟4. 1,、4. 2、4. 3中的條件,則p 為初始骨骼點(diǎn);否則表明內(nèi)部體素點(diǎn)P不為初始骨骼點(diǎn)。
[0024] 優(yōu)選的,所述的步驟5中還包括如下步驟:
[0025] 步驟5. 1,使用高斯-牛頓算法最小化以下能量方程,計(jì)算出三維點(diǎn)云模型的一維 曲線骨骼; 「nn9fi1
[0027] 步驟5. 2,當(dāng)采樣點(diǎn)X1移動(dòng)時(shí),使用計(jì)算出的三維點(diǎn)云模型距離域信息;
[0028] 步驟5. 3,利用初始骨骼點(diǎn)和三維點(diǎn)云模型距離域的信息,對每一個(gè)采樣點(diǎn),計(jì) 算出其最合適的支持半徑,即如果采樣點(diǎn)位于模型中心,則支持半徑長度為模型中心到
模型邊界的距離域值。由圓心為采樣點(diǎn)X丨,半徑為 < 所構(gòu)成的球體包含N個(gè)初始骨骼點(diǎn) Sj,j e N,伸用加下公忒i+笪出初始晉骼點(diǎn)的中心:
[0029]
[0030] 其中,權(quán)重函數(shù)6^r) = e〃ViW是一個(gè)快速衰減的平滑函數(shù),如果中心center與 4間的距離小于體素邊長,表明4已經(jīng)位于三維點(diǎn)云模型中心,則下一次迭代時(shí),設(shè)置其 支持半徑#41值為包含中心center的體素的距離域值,如果兩點(diǎn)間距離大于體素邊長, 表明采樣點(diǎn)彳還需繼續(xù)收斂,向三維點(diǎn)云模型內(nèi)部移動(dòng),此時(shí)支持半徑按規(guī)定比例增大, /?廠 1 =(1 +rcW/o)/?丨,其中radio為半徑增長率;
[0031] 步驟5. 4,對采樣點(diǎn)xf向模型內(nèi)部收斂,逐漸生成的不同骨骼段進(jìn)行連接,形成完 整骨骼,
[0032] 優(yōu)選的,所述的步驟5. 4中,使用橋點(diǎn)將骨骼段進(jìn)行連接,通過三維點(diǎn)云模型體素 類別,標(biāo)記出三維點(diǎn)云模型內(nèi)部體素和外部體素,如果骨骼段端點(diǎn)與橋點(diǎn)的連線穿過三維 點(diǎn)云模型外部,則重新選擇。
[0033] 優(yōu)選的,所述的使用橋點(diǎn)將骨骼段進(jìn)行連接時(shí),判斷連線與外部體素是否相交,如 果沒有相交,將兩個(gè)骨骼段進(jìn)行連接;如果相交,橋點(diǎn)選擇錯(cuò)誤,重新選擇橋點(diǎn)。
[0034] 本發(fā)明的有益效果是:一種三維點(diǎn)云模型骨骼提取方法首先通過使用逐步細(xì)分的 策略將三維點(diǎn)云模型均勻體素化;此后,使用快速行軍算法,計(jì)算出模型內(nèi)部體素點(diǎn)的距離 域;然后,使用距離域計(jì)算出模型的初始骨骼;最后,將初始骨骼與L1中值骨骼提取算法融 合,生成基于距離域的L 1中值骨骼提取算法,快速準(zhǔn)確計(jì)算出模型骨骼;與現(xiàn)有的三維點(diǎn)云 模型骨豁提取方法相比,本發(fā)明處理帶有大量噪聲點(diǎn)、奇異點(diǎn)和大面積點(diǎn)云缺失的點(diǎn)云模 型,而且不會(huì)產(chǎn)生錯(cuò)誤的骨骼連接,同時(shí)不需要太多參數(shù)。
【附圖說明】
[0035] 圖1為本發(fā)明的流程圖。
【具體實(shí)施方式】
[0036] 下面結(jié)合實(shí)施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限 于此。
[0037] 參照圖1,本發(fā)明的流程圖,一種計(jì)算三維點(diǎn)云模型骨骼的方法,包括下述步驟:
[0038] 步驟1,用戶指定輸入三維點(diǎn)云模型ρ = d C Λ,Q為三維空間R3中模型,q j 為模型上的頂點(diǎn),J是三維點(diǎn)云模型頂點(diǎn)的索引,所述的三維點(diǎn)云模型包含噪聲點(diǎn)、奇異點(diǎn) 和點(diǎn)Ζ5Γ缺失;從二維點(diǎn)75Γ模型頂點(diǎn)上隨機(jī)選取米樣點(diǎn)集X = {xj i e p I是米樣點(diǎn)集X的索 弓丨,采樣點(diǎn)乂1最終向三維點(diǎn)云模型內(nèi)部移動(dòng),構(gòu)成三維點(diǎn)云模型骨骼;
[0039] 步驟2,將三維點(diǎn)云模型均勻體素化;所述的步驟2中還包括如下步驟:
[0040] 步驟2. 1,計(jì)算出三維點(diǎn)云模型的包圍盒。
[0041] 步驟2. 2,點(diǎn)云模型包含大量點(diǎn)云缺失,所以采用逐漸細(xì)分的策略對模型進(jìn)行體素 化,用戶指定初始分割精度和最終分割精度,將包圍盒按照用戶指定的初始分割精度進(jìn)行 均勾分割;
[0042] 步驟2. 3,標(biāo)識(shí)邊界體素;如果大體素包含三維點(diǎn)云模型頂點(diǎn),則大體素為邊界體 素,然后使用泛洪算法,標(biāo)識(shí)外部體素,選擇一個(gè)外部體素作為種子點(diǎn),判斷該體素26鄰域 中的體素是否為邊界體素,如果鄰居體素不是邊界體素,則將鄰居體素標(biāo)記為外部體素,從 鄰居體素開始繼續(xù)擴(kuò)展;如果是邊界體素,則該鄰居體素不再參加擴(kuò)展;直至所有外部體 素被標(biāo)記,最終剩下的體素為內(nèi)部體素;
[0043] 步驟2. 4,此時(shí)體素邊長較大,直接使用這種尺度的體素,計(jì)算出的距離域不會(huì)很 精確。將體素進(jìn)行細(xì)分,直到分割至用戶指定精度;