本發(fā)明涉及三維模型領(lǐng)域,特別涉及一種基于概率分區(qū)合并的三維模型分割方法。
背景技術(shù):
計(jì)算機(jī)技術(shù)的飛速發(fā)展創(chuàng)造出一個(gè)對(duì)立于現(xiàn)實(shí)世界的數(shù)字化世界。在這個(gè)虛擬世界中,借助計(jì)算機(jī)圖形學(xué)(Computer Graphics,CG)技術(shù),可以創(chuàng)造出如同真實(shí)世界甚至超出真實(shí)世界的奇妙場(chǎng)景。在這樣的虛擬世界中,三維模型占有非常重要的位置。三維模型保留真實(shí)世界中物體的幾何信息,并且經(jīng)過(guò)加載光照,材質(zhì),紋理等屬性之后可以構(gòu)建出逼真的虛擬效果。近幾年來(lái),隨著三維建模技術(shù)的發(fā)展,以及三維掃描儀的普及,獲取三維模型的方式較早年間有了明顯發(fā)展。由三維掃描儀和計(jì)算機(jī)視覺(jué)技術(shù)可以從實(shí)際的模型上掃描得到點(diǎn)云數(shù)據(jù),通過(guò)點(diǎn)云重建,細(xì)節(jié)后處理等步驟獲取完整的三維網(wǎng)格模型。這些由多邊形面片組成的三維模型在模型制造,圖形顯示,模型變換等方面較曲面模型有著優(yōu)良的性能,從而在計(jì)算機(jī)輔助設(shè)計(jì)(CAD),三維動(dòng)畫(huà),幾何造型,醫(yī)學(xué)圖像等各方面工作中發(fā)揮著廣泛的作用。
隨著增長(zhǎng)的數(shù)據(jù)獲取能力以及增長(zhǎng)的應(yīng)用需求,讓三維模型的處理技術(shù)成為了日漸重要的研究課題,包括壓縮,分割,參數(shù)化,網(wǎng)格變形,識(shí)別,簡(jiǎn)化,紋理映射,去噪,修復(fù),檢索等。其中,對(duì)三維模型進(jìn)行分割是一個(gè)基本而重要的問(wèn)題。將三維模型分割為有意義的部分會(huì)給建模,紋理映射,網(wǎng)格變形,檢索等一系列應(yīng)用提供更多的發(fā)展空間。例如,對(duì)圖片進(jìn)行分析時(shí),常常會(huì)將圖片進(jìn)行分割,并且賦予不同部分語(yǔ)義上的信息,這樣就給圖 片在幾何位置,顏色,紋理之外添加了很多外部世界的先驗(yàn)信息,當(dāng)面對(duì)如識(shí)別這樣的任務(wù)時(shí),可以進(jìn)行更快速,更準(zhǔn)確,并且更復(fù)雜高級(jí)的處理。同理,對(duì)于三維網(wǎng)格,僅僅對(duì)三維模型整體進(jìn)行分析,必定會(huì)丟失局部的信息;并且越來(lái)越多的應(yīng)用要求對(duì)于三維模型的局部進(jìn)行處理,所以對(duì)三維模型的分割工作盡管處于基礎(chǔ)的地位但有著重要的作用。
三維(3D)模型的種類較多,其中很流行的是三維網(wǎng)格模型。對(duì)于三維網(wǎng)格模型來(lái)說(shuō),他們一般由三角形,四邊形或者多邊形組成。這樣的網(wǎng)格形式靈活度非常高,并且類比于二維圖形中的線段可以近似的逼近任意曲線,三維網(wǎng)格模型也能夠以任意精度逼近各類曲面,由他們構(gòu)成的三維模型能夠非常精準(zhǔn)的表示十分復(fù)雜的物體,并且在處理時(shí),由于所有表面均是多邊形,可以采取相比分析曲面更為簡(jiǎn)單的方法,給了網(wǎng)格模型非常優(yōu)秀的性質(zhì)。在這些網(wǎng)格模型中,三角網(wǎng)格(Triangular Mesh)又是其中非常重要的一種,他的表面全部由三角形構(gòu)成,各個(gè)表面的性質(zhì)相似,進(jìn)行處理更容易,并且對(duì)于其他的網(wǎng)格模型,多邊形均可以轉(zhuǎn)化成三角形,所以對(duì)三角網(wǎng)格的處理是最基本的問(wèn)題。近年來(lái)對(duì)三角網(wǎng)格的分割方法基本都是使用一個(gè)全局函數(shù),為三角網(wǎng)格的點(diǎn)或面計(jì)算一個(gè)度量值,以此作為分割依據(jù)。但是相應(yīng)的這些算法由于受到全局函數(shù)性能的影響,當(dāng)函數(shù)值無(wú)法對(duì)模型進(jìn)行判別時(shí)無(wú)法進(jìn)行有效分割。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是,提出了一種學(xué)習(xí)式的的分割算法,通過(guò)提取三角網(wǎng)格的特征,學(xué)習(xí)到合適的模型來(lái)對(duì)三角網(wǎng)格進(jìn)行分割。
解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于概率分區(qū)合并的三維模型分 割方法,包括:1)過(guò)分割形成大量區(qū)域,1-1)根據(jù)三維模型中的三角網(wǎng)格模型,建立圖G(V,E),其中,V為頂點(diǎn)、E為邊,Dist(Vi,Vj)為E上的長(zhǎng)度;1-2)基于權(quán)重計(jì)算得到所述Dist(Vi,Vj)的距離,得到每一對(duì)相鄰三角面(Vi,Vj)的距離;1-3)根據(jù)最短距離算法得到兩個(gè)不相鄰的三角面的距離進(jìn)行聚類,得到過(guò)分割的大量區(qū)域;2)對(duì)所述大量區(qū)域進(jìn)行聚合,2-1)在所述大量區(qū)域的三維模型中得到區(qū)域?qū)?p,q);2-2)在每一個(gè)區(qū)域?qū)?p,q)間通過(guò)特征向量得到相似度;2-3)通過(guò)建立概率模型判斷是否需要將所述區(qū)域?qū)?p,q)進(jìn)行合并;2-4)對(duì)于所述概率模型,將其中的所有特征對(duì)組合起來(lái),進(jìn)行訓(xùn)練帶權(quán)回歸模型;3)訓(xùn)練級(jí)聯(lián)式分類器,3-1)基于機(jī)器和人工分割邊緣,建立邊界召回函數(shù);3-2)根據(jù)用以懲罰錯(cuò)誤聚合的區(qū)域的權(quán)重值和所述邊界召回函數(shù)進(jìn)行級(jí)聯(lián)式訓(xùn)練,得到一個(gè)級(jí)聯(lián)式分類器;4)根據(jù)所述級(jí)聯(lián)式分類器對(duì)新的模型進(jìn)行分割,合并相鄰區(qū)域,得到分割結(jié)果。
更進(jìn)一步,所述
其中,α表示兩個(gè)面的二面角,定義為兩個(gè)面的中心到共有邊的中點(diǎn)的距離之和,a,b為權(quán)重用來(lái)保證Dist(Vi,Vj)處于[0,1]之間。
更進(jìn)一步,權(quán)重a,b按照如下方式建立回歸模型的目標(biāo)函數(shù):
其中,定義為所有的相鄰三角面對(duì)為P1,P2,...Pn,Pi的距離,是不同區(qū)域的概率。
更進(jìn)一步,根據(jù)最短距離算法得到兩個(gè)不相鄰的三角面的距離具體為:
更進(jìn)一步,所述聚類為K-Means聚類算法。
更進(jìn)一步,所述概率模型為:
其中,ω是的線性邏輯回歸模型的參數(shù),φp,q(I,R)表示特征向量,對(duì)于一個(gè)三維模型Ii,將其分為ki個(gè)區(qū)域,區(qū)域集合記作Ri={Ri,1,Ri,2,…Ri,ki},設(shè)N(Ri)為這個(gè)模型的所有相鄰的區(qū)域,每一個(gè)區(qū)域?qū)?p,q)∈N(Ri)都由一個(gè)特征向量φp,q(Ii,Ri)組成。
更進(jìn)一步,在所述概率模型中聚合概率最大的區(qū)域?qū)?,直到?dāng)前的模型Ii中不再存在Pg(p,q;Ii,Ri)>0.5的區(qū)域。
更進(jìn)一步,訓(xùn)練帶權(quán)回歸模型時(shí),通過(guò)修改對(duì)數(shù)損失函數(shù)來(lái)修正錯(cuò)誤得到最優(yōu)解,所述對(duì)數(shù)損失函數(shù)為:
其中,ε用來(lái)避免出現(xiàn)負(fù)無(wú)窮的情況,α表示用以懲罰錯(cuò)誤聚合的區(qū)域的權(quán)重值,L表示擦除的邊緣的長(zhǎng)度。
更進(jìn)一步,建立邊界召回函數(shù)對(duì)α進(jìn)行二分查找,所述邊界召回函數(shù)為:
其中,表示對(duì)于人工分割Gi所有的分割邊緣;表示對(duì)于機(jī)器分割Si所有的分割邊緣。
更進(jìn)一步,所述特征向量包括:自旋圖像、形狀直徑函數(shù)、曲率、區(qū)域的凹凸值以及區(qū)域?qū)傩蕴卣鳌?/p>
本發(fā)明的有益效果:
1)首先通過(guò)將三角網(wǎng)格劃分為大量的三角面片集合(即區(qū)域),并假定這些不同的區(qū)域?qū)儆趹?yīng)當(dāng)屬于不同的有意義的部分,大量的區(qū)域可以確保當(dāng)前的初始分割的邊界包含了最終理想的分割的邊界。之后,通過(guò)邏輯回歸模型,訓(xùn)練一個(gè)級(jí)聯(lián)式的二分類器,用來(lái)判斷是否將相鄰的區(qū)域合并為一個(gè)區(qū)域。通過(guò)不斷的合并這些小的區(qū)域,會(huì)得到一個(gè)對(duì)整體模型的分割。在本發(fā)明中使用了普林斯頓大學(xué)提供的三維模型庫(kù),其中包含380個(gè)三維模型,這些模型共有19種類型(人,鳥(niǎo),魚(yú)等),每一種類型中的模型均包含各種姿態(tài)。實(shí)驗(yàn)結(jié)果證實(shí)了本發(fā)明中的算法可以有效得對(duì)模型進(jìn)行分割。
2)本發(fā)明中的分割方法由一個(gè)級(jí)聯(lián)式的概率模型構(gòu)成,這個(gè)模型實(shí)質(zhì)是一個(gè)多層的線性分類器,在每一層的概率模型中能夠預(yù)測(cè)是否將相鄰的區(qū)域?qū)喜橐粋€(gè)區(qū)域。在訓(xùn)練時(shí),按照順序依次訓(xùn)練這個(gè)模型,通過(guò)二分法自動(dòng)尋找合適的權(quán)值以懲罰錯(cuò)誤的合并。當(dāng)新的三維模型需要分割時(shí),可以使用訓(xùn)練到的多層模型對(duì)其進(jìn)行處理。首先,這個(gè)三維模型被分解為大量的區(qū)域,之后,這些區(qū)域根據(jù)這個(gè)多層模型逐步將這些區(qū)域進(jìn)行合并得到最終的分割結(jié)果。在獲取結(jié)果時(shí),用戶可以查看各個(gè)階段的分割結(jié)果并且依據(jù)其需要選出合適的分割結(jié)果。
3)通過(guò)實(shí)驗(yàn)對(duì)本發(fā)明基于概率分區(qū)合并的三維模型分割方法進(jìn)行驗(yàn)證,基本能夠?qū)崿F(xiàn)對(duì)模型的分割,并且在面對(duì)幾何特征明顯的模型類型時(shí),能夠很好的完成任務(wù),而對(duì)于人工分割有一定復(fù)雜度,并且?guī)缀翁卣饔幸欢ㄆ畹哪P蜁r(shí),能夠基本精確的完成分割,僅有很少的差錯(cuò)。
附圖說(shuō)明
圖1是本發(fā)明一實(shí)施例中的一種基于概率分區(qū)合并的三維模型分割方法 流程示意圖。
圖2(a)—圖2(d)是采用本發(fā)明中的基于概率分區(qū)合并的三維模型分割方法對(duì)多個(gè)CAD模型分割結(jié)果示意圖。
圖3(a)—圖3(c)是采用本發(fā)明中的基于概率分區(qū)合并的三維模型分割方法對(duì)不同蜘蛛模型分割結(jié)果示意圖。
圖4(a)—圖4(c)是采用本發(fā)明中的基于概率分區(qū)合并的三維模型分割方法對(duì)多個(gè)椅子模型的分割結(jié)果示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
圖1是本發(fā)明一實(shí)施例中的一種基于概率分區(qū)合并的三維模型分割方法流程示意圖。
本實(shí)施例中的一種基于概率分區(qū)合并的三維模型分割方法,包括:
步驟S1過(guò)分割形成大量區(qū)域,步驟S11根據(jù)三維模型中的三角網(wǎng)格模型,建立圖G(V,E),其中,V為頂點(diǎn)、E為邊,Dist(Vi,Vj)為E上的長(zhǎng)度;步驟S12基于權(quán)重計(jì)算得到所述Dist(Vi,Vj)的距離,得到每一對(duì)相鄰三角面(Vi,Vj)的距離;步驟S13根據(jù)最短距離算法得到兩個(gè)不相鄰的三角面的距離進(jìn)行聚類,得到過(guò)分割區(qū)域;步驟2對(duì)所述過(guò)分割區(qū)域進(jìn)行聚合,步驟S21在所述過(guò)分割區(qū)域的三維模型中得到區(qū)域?qū)?p,q);步驟S22在每一個(gè)區(qū)域?qū)?p,q)間通過(guò)特征向量得到相似度;步驟S23通過(guò)建立概率模型判斷是否需要將所述區(qū)域?qū)?p,q)進(jìn)行合并;步驟S24對(duì)于所述概率模型,將其中的所有特征對(duì)組合起來(lái),進(jìn)行訓(xùn)練帶權(quán)回歸模型;步驟S3訓(xùn)練級(jí)聯(lián)式分類器,步驟 S31基于機(jī)器和人工分割邊緣,建立邊界召回函數(shù);步驟S32根據(jù)用以懲罰錯(cuò)誤聚合的區(qū)域的權(quán)重值和所述邊界召回函數(shù)進(jìn)行級(jí)聯(lián)式訓(xùn)練,得到一個(gè)級(jí)聯(lián)式分類器;步驟S4根據(jù)所述級(jí)聯(lián)式分類器對(duì)新的模型進(jìn)行分割,合并相鄰區(qū)域,得到分割結(jié)果。
本發(fā)明的原理:
將三維模型分割為有意義的部分并不是一個(gè)新問(wèn)題。由于“有意義”的部分是針對(duì)人而言的,心理物理學(xué)方面做出過(guò)這樣的解釋:人類在識(shí)別形狀時(shí),會(huì)在一定程度上對(duì)物體進(jìn)行分割,一個(gè)復(fù)雜的物件會(huì)被分割為幾個(gè)簡(jiǎn)單物件的組合。由此,Hoffman等在1984年曾經(jīng)提出人類認(rèn)知過(guò)程中組成要素的邊界線往往是最小負(fù)曲率線,通過(guò)得到模型的曲率可以實(shí)現(xiàn)有意義的分割。但是由于曲率算法不同,并且由于各種噪聲,導(dǎo)致同算法的分割結(jié)果也有較大差異。
2.1三維模型的表示
當(dāng)前流行的三維模型格式有很多,比如OBJ,OFF,PLY,STL等。相同的一點(diǎn)是,他們基本都通過(guò)描述點(diǎn),線,面,法線等信息來(lái)創(chuàng)建模型。最基本的模型中一般包含點(diǎn)的三維坐標(biāo)(x,y,z),面片信息(由組成該面點(diǎn)的索引號(hào)構(gòu)成)。由這兩個(gè)基本信息可以完整的構(gòu)建整個(gè)三維模型。不同的模型雖然會(huì)包含相同的信息,但是他們的組織方式略有不同。下面介紹本文使用的格式OFF:
OFF文件是表示模型最簡(jiǎn)單的ASCII文件,僅包含物體的幾何信息,這與我們算法的目標(biāo)符合(我們的分割僅基于幾何特征)。每個(gè)OFF文件第一行以O(shè)FF關(guān)鍵字起始,第二行包含模型的定點(diǎn)數(shù)a,面片數(shù)b,中間 以空格作為分隔符。從第三行開(kāi)始記錄頂點(diǎn)坐標(biāo),x坐標(biāo),y坐標(biāo),z坐標(biāo)。在記錄完頂點(diǎn)信息后,開(kāi)始記錄面的信息。每一行以該面的頂點(diǎn)數(shù)開(kāi)頭,在我們的工作中使用三角網(wǎng)格,故以3開(kāi)頭。之后以空格做分隔符用點(diǎn)的索引值(從0起始)記錄這個(gè)面的所有點(diǎn)。值得說(shuō)明的是,從任一點(diǎn)開(kāi)始,其余的點(diǎn)需要按照從模型外面看過(guò)去逆時(shí)針的順序進(jìn)行記錄,這樣才能保證所有面的法線是指向模型外的。
2.2三維網(wǎng)格分割定義
三維網(wǎng)格的分割是指將多面體網(wǎng)格根據(jù)其網(wǎng)格的幾何、拓?fù)?、紋理等屬性分解為一些數(shù)目有限,各自連通的子網(wǎng)格。若對(duì)于某原始網(wǎng)格S,S的分割定義如下:
假設(shè)S分為m個(gè)子分割部分,記為S1,S2,...Sm;S的所有面集合記做F{S}則他們需要滿足以下條件:
1.
2.Sk是連通的;
3.
4.
滿足以上條件的幾何分割,各個(gè)部分連通,并且每一個(gè)部分符合人類視覺(jué)中有意義的要求。
2.3國(guó)內(nèi)外研究成果
在計(jì)算機(jī)圖形學(xué)(Computer Graphics)領(lǐng)域,網(wǎng)格分割一直是一個(gè)很活躍的研究方向。絕大多數(shù)算法都致力于尋找一個(gè)基于幾何學(xué)的標(biāo)準(zhǔn)來(lái)將單一 的網(wǎng)格進(jìn)行分割。
早在1991年,Vincent等人使用分水嶺方法(watershed segmentation)來(lái)處理三維模型分割的問(wèn)題,但這種分割方法很容易出現(xiàn)過(guò)分割的情況,并且邊緣存在鋸齒;1995年,Herbert等人利用圖像分割中的的區(qū)域增長(zhǎng)算法分割三維模型,為三維網(wǎng)格的分割拓展了新的思路,其后有很多研究者利用區(qū)域增長(zhǎng)的框架進(jìn)行修改實(shí)現(xiàn)了新的算法,例如Vladislav等人針對(duì)部件的凹凸性提出的算法;同時(shí)由于自動(dòng)分割算法常常存在邊緣不精確,分割物體意義不明確,過(guò)分割等問(wèn)題,1996年,Krishnamurthy等人又提出了通過(guò)交互來(lái)進(jìn)行分割,人工參與可以使得分割邊緣更光滑,并且完全符合人類視覺(jué)的判斷標(biāo)準(zhǔn)。1997年,Wu等人通過(guò)模擬電場(chǎng)在曲面網(wǎng)格上的分布形式,基于物理意義進(jìn)行了分割2000年,Rossl等人通過(guò)分割骨架以達(dá)到分割模型的目的2002年,Werghi等人通過(guò)識(shí)別姿態(tài),根據(jù)人體局部形狀進(jìn)行了分割;2004年,G Lavoue等人提出了針對(duì)CAD模型的方法,該方法通過(guò)分析曲率張量得到了多個(gè)連續(xù)的分割區(qū)域。在三維網(wǎng)格模型的分割當(dāng)中,研究分割邊緣的屬性是一個(gè)難點(diǎn)。Tsuzuki等人在2005年提出一種方法,通過(guò)比較相鄰三角面二面角和三角面片距離,自動(dòng)地完成三維網(wǎng)格模型的分割。同樣在2005年,Sage Katz等提出使用模糊聚類的逐層分割的方法,這種方法可以較好的避免過(guò)分割以及鋸齒邊界問(wèn)題。2008年,Yu-Kun Lai等通過(guò)擴(kuò)展圖像分割中隨機(jī)游走(Random Walk)的方法得到了一種快速并且高效的分割方法,該方法受噪聲影響較小,并且提供了交互式分割和自動(dòng)分割的方式。同年,Lior Shapira等人通過(guò)形狀直徑函數(shù),將三維體積信息映射到模型表面,得到了較好的自動(dòng)分割結(jié)果。2009年,Evangelos等人使用 條件隨機(jī)場(chǎng)將之前的各種特征整理在一個(gè)學(xué)習(xí)框架下,基于機(jī)器學(xué)習(xí)的算法可以針對(duì)更廣泛的情況,并且對(duì)于新的有效特征,這樣的學(xué)習(xí)框架可以進(jìn)行更新改變以擴(kuò)充其原本的分割能力。
本發(fā)明中的算法也受到學(xué)習(xí)框架的影響,設(shè)計(jì)單一的函數(shù)來(lái)進(jìn)行分割始終會(huì)有局限性,但是設(shè)計(jì)一個(gè)基于機(jī)器學(xué)習(xí)的分割框架可以彌補(bǔ)單一度量帶來(lái)的缺點(diǎn),使用多種度量互相彌補(bǔ)。以學(xué)習(xí)的方式來(lái)確定如何合適的利用多種度量,并且受到Adaboost這樣多層的學(xué)習(xí)框架的影響,我們希望通過(guò)組合較弱的分類器使之最終能稱為有效的分類器,這樣的思路在Viola-Jones人臉識(shí)別分類器中得到了驗(yàn)證。并且我們希望我們的框架可以更容易的整合更多的特征,甚至加入紋理,色彩等信息。
3.1算法框架
現(xiàn)存的算法大多針對(duì)某一種度量對(duì)整個(gè)模型進(jìn)行分析,以度量的值來(lái)確定邊界。本發(fā)明中希望使用一種學(xué)習(xí)的辦法,來(lái)整合各種合適的度量從而吸收這些度量的優(yōu)點(diǎn)。在二維圖像分割中,有一種技術(shù)稱為超像素(Super Pixel)。對(duì)于一幅圖片,超像素算法將擁有相近顏色,位置,紋理等信息的像素點(diǎn)聚集在一起,使得處理,分析圖片更準(zhǔn)確快捷。近年來(lái)較為受歡迎的超像素算法是SLIC似的技術(shù),將特征相似位置相鄰的少量三角面進(jìn)行聚合以方便后續(xù)處理。首先,我們希望將一個(gè)模型分解成大量的區(qū)域。之后,對(duì)于已經(jīng)分解好的模型,我們希望可以逐步的合并這些區(qū)域,來(lái)形成我們最終的分割。為了聚合這些區(qū)域,很自然的我們需要將兩個(gè)相鄰的區(qū)域視作潛在的可能聚合的基本單位。在形成大量區(qū)域的過(guò)程中,每一個(gè)三維模型實(shí)際上是處于過(guò)分割的狀態(tài),每一個(gè)區(qū)域所包含的三角面非常少。而在我們最終 希望的分割結(jié)果中,每一個(gè)有意義的部分會(huì)包含大量的三角面。一個(gè)很明顯的問(wèn)題在于,一個(gè)分類器無(wú)法直接將初始擁有大量區(qū)域的模型一步聚合成為我們最終希望的分割,因?yàn)閷?duì)于相鄰的區(qū)域而言,他們的特征變化太過(guò)劇烈,當(dāng)我們合并區(qū)域之后,此時(shí)相鄰區(qū)域之間的特征分布已經(jīng)不同于分類器被訓(xùn)練時(shí)所面對(duì)的特征分布。受到級(jí)聯(lián)式分類器的啟發(fā),本發(fā)明決定使用一個(gè)級(jí)聯(lián)式的方式,使用多層參數(shù)不同的分類器逐步將區(qū)域進(jìn)行合并。首先我們將介紹如何形成在三維空間中的“超像素”。
3.2區(qū)域形成
下面介紹如何形成大量的區(qū)域。對(duì)于一個(gè)三角網(wǎng)格模型S,我們將其當(dāng)作一張圖G(V,E),將三角面f∈F{S}視為圖中的頂點(diǎn)V,三角面之間的相似度,即距離定義為邊E的長(zhǎng)度。每一條邊E上長(zhǎng)度的定義:
其中,α表示兩個(gè)面的二面角(dihedral angle);定義為兩個(gè)面的中心到共有邊的中點(diǎn)的距離之和,權(quán)重a,b用來(lái)保證Dist(Vi,Vj)處于[0,1]之間。接下來(lái)的問(wèn)題在于如何得到合適的a,b使得距離的度量可以很好的反應(yīng)真實(shí)情況。我們通過(guò)訓(xùn)練來(lái)擬合得到a,b的值。
3.2.1距離訓(xùn)練
我們的Dist(Vi,Vj)的值介于[0,1]之間,我們可以將之視為三角面(Vi,Vj)屬于不同區(qū)域的概率。之前提到對(duì)于每一個(gè)三角網(wǎng)格我們擁有若干人工分割的結(jié)果,通過(guò)這個(gè)結(jié)果我們可以知道人對(duì)于三角面(Vi,Vj)是否應(yīng)屬于同一個(gè)區(qū)域所做出的判斷,
我們希望我們的算法可以學(xué)習(xí)人類的標(biāo)記方式,以此來(lái)完成對(duì)Dist(Vi,Vj)的定義。在模型庫(kù)中,任意取得n個(gè)模型S1,S2,S3...Sn,獲得這些模型每一對(duì)相鄰的三角面。對(duì)于每一對(duì)相鄰的三角面,我們可以通過(guò)人對(duì)于這兩個(gè)三角面是否屬于同一個(gè)區(qū)域。若有k個(gè)人對(duì)相鄰面(Vi,Vj)做出了判斷。定義:
P_diff(Vi,Vj)表示了人認(rèn)為相鄰面(Vi,Vj)分屬不同區(qū)域的概率。我們的樣本就是隨機(jī)選取模型中所有相鄰的三角面對(duì)。通過(guò)一個(gè)簡(jiǎn)單的邏輯回歸模型,我們可以得到最合適的a,b權(quán)值。定義所有的相鄰三角面對(duì)為P1,P2,...Pn,Pi,的距離為屬于不同區(qū)域的概率為回歸模型的目標(biāo)函數(shù)為:
這個(gè)函數(shù)與是邏輯回歸中的對(duì)數(shù)概率的代價(jià)函數(shù),這個(gè)函數(shù)是凸的,對(duì)于這樣的函數(shù),我們可以使用梯度下降法來(lái)進(jìn)行最大值的求解。我們可以任意設(shè)定一個(gè)初始的參數(shù)值,在每次計(jì)算J(a,b)的值之后,可以計(jì)算得到當(dāng)前的梯度值,給這個(gè)梯度乘以一定的步長(zhǎng),并且去更新J(a,b)的值,這樣在一次疊代之后,J(a,b)的值會(huì)朝著梯度方向變化,經(jīng)過(guò)多次疊代,當(dāng)更新后的J(a,b)的值與原J(a,b)的值幾乎保持不變,我們認(rèn)為此時(shí)疊代已經(jīng)達(dá)到收斂狀態(tài),此時(shí)的參數(shù)a,b的值就是最終的優(yōu)化結(jié)果。得到優(yōu)化的a,b值之后,我們就可以計(jì)算得到(Vi,Vj)的距離。我們將梯度下降法總結(jié)在算法1中:
3.2.2面片聚類
現(xiàn)在我們有了每一對(duì)相鄰三角面的距離。我們接下來(lái)定義兩個(gè)不相鄰的三角面的距離:
使用最短距離算法,可以獲得一個(gè)模型中,任意兩個(gè)面的距離。在得到這些數(shù)據(jù)的情況下,可以開(kāi)始進(jìn)行面片的聚類。使用一個(gè)基于K-Means的聚類算法來(lái)形成大量的區(qū)域作為后續(xù)算法的初始部分。由于K-Means算法對(duì)聚類的初始中心比較敏感,所以使用三角面的面積作為權(quán)值,通過(guò)蒙特卡洛采樣得到模型上的初始聚類中心。由于我們實(shí)際不太關(guān)心這些聚類的實(shí)際精度,只是希望獲得一個(gè)很多的區(qū)域,使之處于過(guò)分割的狀態(tài),所以將聚類的數(shù)量定為2000。更多的聚類數(shù)量也是可以的,但是相應(yīng)的計(jì)算量會(huì)增大,并且之后聚集的階段也更多。2000個(gè)聚類在我們的實(shí)驗(yàn)中可以起到理想的結(jié)果。
3.3貪心的合并算法
現(xiàn)在,對(duì)于一個(gè)三維模型Ii,我們將其分為ki個(gè)區(qū)域,區(qū)域集合記作Ri={Ri,1,Ri,2,…Ri,ki},設(shè)N(Ri)為這個(gè)模型的所有相鄰的區(qū)域。每一個(gè)區(qū)域?qū)?p,q)∈N(Ri)都由一個(gè)特征向量φp,q(Ii,Ri)組成。這個(gè)特征向量表示了每一個(gè)區(qū)域?qū)﹂g的相似度,根據(jù)這個(gè)特征向量來(lái)確定是否將這兩個(gè)區(qū)域進(jìn)行合并。
我們使用一個(gè)概率模型來(lái)表示是否需要將區(qū)域?qū)?p,q)合并起來(lái):
其中,w是的線性邏輯回歸模型的參數(shù)。(和特征向量φp,q(I,R)的維度相同)如果Pg(p,q;I,R)的值大于0.5,那么Ri,p,Ri,q有更大的可能聚合在一起。在上文提到,會(huì)使用多級(jí)的模型來(lái)逐步合并區(qū)域。在每一個(gè)階段中,我們需要合并一定數(shù)量的區(qū)域。
一次性計(jì)算出所有需要合并的區(qū)域是可能的,但是這樣可能導(dǎo)致合并過(guò)程不連續(xù),并且需要通過(guò)一個(gè)復(fù)雜的優(yōu)化過(guò)程來(lái)得到最終的合并過(guò)程。所以采用一個(gè)較為簡(jiǎn)單的方式:貪婪的聚合概率最大的區(qū)域?qū)Γ钡疆?dāng)前的模型Ii中不再存在Pg(p,q;Ii,Ri)>0.5的區(qū)域。需要說(shuō)明的一點(diǎn),當(dāng)我們對(duì)聚合區(qū)域Rp與Rq之后,在一個(gè)階段內(nèi)我們不會(huì)再考慮。
將這兩個(gè)區(qū)域組合成的新區(qū)域作為合并區(qū)域的對(duì)象(因?yàn)樗麄兊奶卣饕呀?jīng)改變)。在剩下的所有區(qū)域?qū)χ欣^續(xù)查找合并概率最大的區(qū)域?qū)?。因?yàn)槭菑囊粋€(gè)非常粗糙的分隔開(kāi)始,當(dāng)中包含數(shù)量非常多的區(qū)域,可以確保我們?cè)诤喜^(qū)域之后依然能得到有效的分割。在一個(gè)階段的合并后,模型I會(huì)有一個(gè)新的區(qū)域分布。這個(gè)新的區(qū)域分布將會(huì)作為下一個(gè)階段的初始輸入來(lái)進(jìn)行下一步的合并。我們將算法總結(jié)在算法2中:
3.4訓(xùn)練帶權(quán)回歸模型
我們使用線性模型來(lái)表示Pg(p,q;I,R)。同時(shí),擁有人工分割的結(jié)果。由于不給這些真實(shí)的分割結(jié)果任何類別信息,他們僅僅表示兩個(gè)區(qū)域?qū)κ欠駥儆谕徊糠?。利用這些真實(shí)分割的數(shù)據(jù),可以給Ν(Ri)加上標(biāo)簽。對(duì)于任意的一個(gè)人工分割結(jié)果Gi,將Ri,p標(biāo)記為與Gi重合區(qū)域最大的標(biāo)簽。接下來(lái),對(duì)于任意一個(gè)區(qū)域?qū)i,p和PRi,q,如果他們的標(biāo)簽是相同的,那么我們定義否則將用來(lái)訓(xùn)練的模型I1,I2,…IN中的區(qū)域?qū)Φ奶卣骱退麄兊臉?biāo)簽結(jié)合起來(lái),我們得到{<φi,yi>}。對(duì)于所有模型,可以將他們的所有特征對(duì)組合起來(lái),使用這些樣本來(lái)進(jìn)行訓(xùn)練。
一般而言,邏輯回歸常用最小化對(duì)數(shù)損失來(lái)進(jìn)行訓(xùn)練,但是在現(xiàn)有情況下簡(jiǎn)單地利用對(duì)數(shù)損失卻不能得到很好的效果,因?yàn)檫@個(gè)損失函數(shù)會(huì)對(duì)稱地懲罰兩種錯(cuò)誤(即得出較大的計(jì)算值),過(guò)分和低估Pg的大小,對(duì)于2000個(gè)區(qū)域來(lái)講,他們中僅有很少部分的區(qū)域?qū)g的值是小于0.5的,其他的大多數(shù)區(qū)域?qū)?yīng)當(dāng)被合并起來(lái)。我們通過(guò)修改對(duì)數(shù)損失函數(shù)來(lái)修正錯(cuò)誤:對(duì)于錯(cuò)誤的聚合起來(lái)的區(qū)域?qū)Φ捻?xiàng)我們?cè)趽p失之前乘上系數(shù)α。進(jìn)一步地,我們還在損失函數(shù)前乘上擦除的邊緣的長(zhǎng)度L。乘上這個(gè)尺度用 來(lái)反映合并邊界較長(zhǎng)的區(qū)域?qū)?yīng)當(dāng)承受比邊界較短的區(qū)域更多的懲罰。我們定義損失函數(shù)如下:
其中,ε是一個(gè)很小的值,用來(lái)避免出現(xiàn)負(fù)無(wú)窮的情況。這個(gè)損失函數(shù)依然是凸的,所以可以使用普通的梯度下降法來(lái)得到最優(yōu)解。在訓(xùn)練過(guò)程中,還有一個(gè)很重要的參數(shù)α。選擇一個(gè)合適的α對(duì)最終的預(yù)測(cè)很關(guān)鍵。對(duì)α的選擇來(lái)源于這樣的想法:α的作用是懲罰錯(cuò)誤聚合的區(qū)域,其值越大,整個(gè)合并過(guò)程中合并的區(qū)域數(shù)量就越小,分類器傾向于不合并區(qū)域,但是我們同時(shí)卻又希望能夠在不錯(cuò)誤合并區(qū)域的條件下盡可能多的合并區(qū)域。于是這就啟發(fā)我們定義一個(gè)邊界召回函數(shù)(Boundary Recall),他能夠檢測(cè)出當(dāng)前的分割狀態(tài)下與真實(shí)分割的相似度,這樣我們就可以由這個(gè)相似度函數(shù)來(lái)對(duì)α進(jìn)行二分查找。邊界召回函數(shù)(Boundary Recall)應(yīng)當(dāng)是隨著α遞增的,這樣在進(jìn)行查找之前,先計(jì)算在當(dāng)前階段未合并之前的邊界召回值r。在尋找α的過(guò)程中,我們希望本階段合并之后邊界召回值不會(huì)低于r-p;我們將用來(lái)訓(xùn)練的模型隨機(jī)分為兩個(gè)部分,Itrain和Itrue。
我們先設(shè)置一個(gè)較大的數(shù),以保證α的值在這之間,接下來(lái)我們使用二分法來(lái)進(jìn)行查找。當(dāng)確定α,我們使用Itrain來(lái)訓(xùn)練得到當(dāng)前線性模型的參數(shù),接下來(lái)用Itrue驗(yàn)證我們的邊界召回值是否符合要求。這樣經(jīng)過(guò)多次查找,可以選取合適的α值。
3.5級(jí)聯(lián)模型訓(xùn)練和邊界召回函數(shù)
上一節(jié)提到,邊界召回函數(shù)對(duì)于選擇α很重要。我們這樣定義邊界召回函數(shù):
其中,表示對(duì)于人工分割Gi所有的分割邊緣;表示對(duì)于機(jī)器分割Si所有的分割邊緣;若對(duì)于某一條Gi中的分割邊緣,可以在Si中找到與它距離小于ε的分割邊緣,我們可以認(rèn)為這條分割邊緣可以被檢測(cè)出,并進(jìn)行記錄,最后統(tǒng)計(jì)Gi中被檢測(cè)出的邊緣所占的比例,并在所有模型中取平均可以得到邊界召回值。
有了邊界召回函數(shù)后,結(jié)合二分查找我們可以為分類器找到一個(gè)階段內(nèi)的合適的參數(shù)。但是用這樣的帶權(quán)的損失函數(shù)進(jìn)行訓(xùn)練的時(shí)候,一般來(lái)說(shuō)聚合會(huì)很早就停止了,這樣會(huì)剩下大量沒(méi)有聚合的區(qū)域。原因在于設(shè)定α的時(shí)候使用了一種非?!靶⌒摹钡牟呗裕M可能避免錯(cuò)誤的聚合區(qū)域,這樣也難免導(dǎo)致一些本該聚合的區(qū)域并沒(méi)有聚合。于是聚合過(guò)程,但是當(dāng)前區(qū)域?qū)χg的特征已經(jīng)無(wú)法再繼續(xù)使用。區(qū)域之間已經(jīng)有了合并,形成了新的區(qū)域,這樣就需要在新的區(qū)域中重新提取特征。并且值得注意的是,在小區(qū)域之間無(wú)效的特征,或許會(huì)在較大區(qū)域中起到作用。這樣重新在更大的區(qū)域上提取特征,并且用相同的步驟進(jìn)行訓(xùn)練,再次聚合得到更大的區(qū)域,不過(guò)這樣的聚合依舊會(huì)停止。則繼續(xù)訓(xùn)練第三個(gè)分類器,以此類推。
事實(shí)上,訓(xùn)練這樣一個(gè)級(jí)聯(lián)的分類器和其他的級(jí)聯(lián)分類器的過(guò)程是很相似的,比如在Viola-Jones face detector或者Adaboost。不同之處在于,在級(jí)聯(lián)式訓(xùn)練的過(guò)程中,借助權(quán)值α以及邊界召回函數(shù),算法會(huì)自動(dòng)的得到優(yōu)化的參數(shù)值,而不是通過(guò)手動(dòng)的調(diào)整閾值,這個(gè)優(yōu)勢(shì)也幫助我們的算法可以訓(xùn)練出層數(shù)更多更深的分類器。對(duì)于Adaboost這樣的級(jí)聯(lián)式分 類器,訓(xùn)練的層數(shù)越深就越能將弱分類器組合為強(qiáng)分類器。
本算法可以有效的使用訓(xùn)練樣本,在每一個(gè)階段,Itrain和Itrue交集為空,這樣可以最大限度的避免在選擇α?xí)r出現(xiàn)過(guò)擬合的情況。并且,我們?cè)诿恳粋€(gè)階段對(duì)這兩個(gè)子集的采樣都是完全獨(dú)立的,所以在每一個(gè)階段所抽取出的特征會(huì)對(duì)數(shù)據(jù)有到一個(gè)更健壯預(yù)測(cè)。并且,當(dāng)訓(xùn)練進(jìn)行了一些階段之后,由于區(qū)域數(shù)量已經(jīng)大大減少,即使我們?cè)诓蓸訒r(shí)選取的模型與之前階段中的類似,由于特征的大大變化,出現(xiàn)過(guò)擬合的風(fēng)險(xiǎn)也會(huì)相應(yīng)降低。
3.6級(jí)聯(lián)式的區(qū)域合并
當(dāng)按照之前所敘述的方法訓(xùn)練出一個(gè)級(jí)聯(lián)式的分類器之后,就可以用它來(lái)對(duì)新的模型進(jìn)行分割了。當(dāng)一個(gè)新模型需要分割,首先將其分解為大量的區(qū)域作為之后級(jí)聯(lián)式區(qū)域合并的初始分割。之后,只需要設(shè)置一個(gè)需要進(jìn)行分割的階段。在每一個(gè)階段,根據(jù)之前學(xué)習(xí)到的模型,有一些區(qū)域?qū)⒈缓喜?,下一個(gè)階段將使用上一個(gè)階段區(qū)域合并的結(jié)果作為輸入。如此進(jìn)行下去,最終會(huì)得到一個(gè)合理的分割結(jié)果。
4.1數(shù)據(jù)集
不同于圖像分割擁有眾多的數(shù)據(jù)集,在前些年沒(méi)有合適的三維模型庫(kù),更多的分割工作都是對(duì)于一些三維模型進(jìn)行的。在2009年,普林斯頓大學(xué)發(fā)布了他們的三維模型庫(kù),擁有380個(gè)模型,并且每一個(gè)模型由若干志愿者進(jìn)行了手動(dòng)分割。我們將這些手動(dòng)分割作為我們學(xué)習(xí)的目標(biāo),對(duì)每一個(gè)模型,我們?nèi)≈驹刚呤謩?dòng)分割的平均值來(lái)作為兩個(gè)三角面是否屬于同一區(qū)域的度量。這樣,可以將這個(gè)度量歸一化為[0,1]的值,并且可以視作這兩個(gè)三角面屬于同一區(qū)域的概率。在這個(gè)模型庫(kù)發(fā)布的同時(shí),還公布了一些衡量三維模型分割結(jié)果的標(biāo)準(zhǔn)。
4.2局部特征描述
在前文中,多次提到,在級(jí)聯(lián)訓(xùn)練的過(guò)程中,將會(huì)提取區(qū)域之間的特征。這些特征基于所在的區(qū)域?qū)Φ膸缀翁匦?。幾何特征的提取?huì)直接關(guān)系到我們分割是否成功,因?yàn)樵诿恳粋€(gè)階段,訓(xùn)練的分類器只是一個(gè)較為簡(jiǎn)單的線性分類器,其本身的分類能力有限,如果提取的特征不能明確的顯示出區(qū)域之間的區(qū)別,那么很有可能當(dāng)前任務(wù)就是線性不可分的,所以希望能盡可能豐富得擴(kuò)充區(qū)域?qū)χg的特征。值得說(shuō)明的是,由于使用的是一個(gè)簡(jiǎn)單的線性分類器,想要在分類器中補(bǔ)充新的特征是非常容易的,不需要對(duì)我們的算法框架做出任何改變,只需要在提取特征處加入新的特征以及計(jì)算方式即可。但是,并沒(méi)有選擇加入過(guò)多的特征,希望用一些盡可能高效的特征來(lái)進(jìn)行分類,這樣處理速度更快,并且由于使用的是一個(gè)多層的級(jí)聯(lián)式的分類器,對(duì)每一層分類器的分類效果并沒(méi)有非常高的要求(相對(duì)于單層模型)。
使用的特征更多的是基于局部信息,所以一些對(duì)整個(gè)模型進(jìn)行描述的全 局特征描述在我們的算法中是不適用的。對(duì)于模型的描述子,更多的研究工作針對(duì)的是模型檢索工作。近年來(lái),隨著模型檢索的發(fā)展,有研究者提出新的問(wèn)題,如何在模型庫(kù)中按照某個(gè)特定的部件來(lái)搜索模型。于是,大量的局部特征描述算法被提出。本發(fā)明使用了一種稱為自旋圖像的特征表示方法。自旋圖像是一種簡(jiǎn)單并且健壯的局部特征提取算法。自旋圖像(Spin Image)的想法其實(shí)非常簡(jiǎn)單,對(duì)于一個(gè)帶有法向量的頂點(diǎn),通過(guò)將模型中的點(diǎn)投射到該頂點(diǎn)切平面上的來(lái)勾勒出這個(gè)頂點(diǎn)周圍頂點(diǎn)的輪廓??梢哉{(diào)整切平面的大小來(lái)調(diào)整。
自旋圖像,以得到較小區(qū)域或較大區(qū)域的局部特征描述。位于不同位置的頂點(diǎn),如果我們的自旋圖像大小合適,能夠得到很明顯的輪廓差異。需要說(shuō)明的是,在不同的模型中也可能會(huì)得到較為相似的自旋圖像,這表明兩個(gè)不同的模型,他們的局部幾何特征也可能相似。在我們的實(shí)驗(yàn)中,對(duì)于模型It,它的初始區(qū)域?yàn)?sub>i,1,Ri,2...,Ri,n,我們?cè)趯^(qū)域的中心位置作為自選圖像的采樣點(diǎn),這樣每一個(gè)模型會(huì)得到n個(gè)(在我們的實(shí)驗(yàn)中n=2000)自旋圖像,這些自旋圖像反映了相應(yīng)區(qū)域的局部幾何特征。對(duì)于我們的模型庫(kù),一共擁有380個(gè)模型,整個(gè)模型庫(kù)會(huì)讓我們得到380*2000=7.6*105個(gè)自旋圖像。對(duì)于這些自旋圖像,我們將他們進(jìn)行聚類,聚類的個(gè)數(shù)設(shè)置為1500個(gè),盡管這是一個(gè)經(jīng)驗(yàn)性的數(shù)值,但是在一些實(shí)驗(yàn)中表明,這樣的聚類個(gè)數(shù)能合適的代表這些自選圖像。經(jīng)過(guò)聚類之后,我們可以給區(qū)域賦予自旋圖像的特征了。我們目前有1500個(gè)類型的自旋圖像,標(biāo)記為T1,T2,...,T1500,那么對(duì)于每一個(gè)模型的每一個(gè)區(qū)域,可以對(duì)他們構(gòu)造一個(gè)1500維的特征,F(xiàn)eature(t1,t1,...t1500),ti的值為該區(qū)域包含Ti種類型的自旋圖像的個(gè) 數(shù),對(duì)于一個(gè)區(qū)域?qū)?,我們可以比較他們自身Feature的相似性。在合并兩個(gè)區(qū)域的時(shí)候,在更新特征的時(shí)候,只需要簡(jiǎn)單的將他們的Feature疊加起來(lái)。這樣的結(jié)構(gòu)可以類比為文本分析中的詞袋模型,對(duì)于一個(gè)區(qū)域的描述類似對(duì)于一個(gè)段落的描述,區(qū)域的特征就是這個(gè)區(qū)域中包含的自旋圖像類型的數(shù)量,如同一個(gè)段落的特征就是包含在這個(gè)段落中的關(guān)鍵詞的數(shù)量。
4.22形狀直徑函數(shù)(Shape Diameter Function)
形狀直徑函數(shù)是又一個(gè)描述三維網(wǎng)格局部特征的方式。形狀直徑函數(shù)(SDF)針對(duì)三維網(wǎng)格模型上的一個(gè)點(diǎn)進(jìn)行計(jì)算,可以將該店所處空間的三維形狀信息很好得投影為一個(gè)特征值,對(duì)三維模型體積的描述被投射到二維的表面上。假設(shè)P是三維網(wǎng)格上的一個(gè)點(diǎn),我們沿這個(gè)點(diǎn)法線方向做一個(gè)圓錐體,圓錐體的頂角角度為可變參數(shù)。值得說(shuō)明的是,圓錐體的頂角對(duì)SDF的值有明顯的影響,如果角的值太小則對(duì)局部特征過(guò)于敏感,如果頂角值太大,例如非常接近180°,這樣計(jì)算得到的SDF值會(huì)因?yàn)檫^(guò)多的噪聲和錯(cuò)誤而無(wú)法很好的表現(xiàn)局部特征,選取一個(gè)合適的角度至關(guān)重要。在我們的實(shí)驗(yàn)中,我們統(tǒng)一選取頂角為120°,這樣能保證得到的SDF值可以有效地反映當(dāng)前三角面的幾何特征。在這個(gè)圓錐體上我們可以采樣得到一些射線,將這些射線延長(zhǎng),讓他們從網(wǎng)格內(nèi)部穿過(guò)直到與網(wǎng)格另一端相交,我們記錄下這些射線與網(wǎng)格交點(diǎn)的歐式距離,取平均就可以得到點(diǎn)P的SDF值。更進(jìn)一步,我們可以對(duì)模型I的所有SDF值進(jìn)行歸一化,歸一化值定義為:
其中,是模型中每一個(gè)點(diǎn)的SDF值,α是一個(gè)歸一化參數(shù),在我們的實(shí)驗(yàn)中都使用α=4。
我們提取所有三角面的重心,對(duì)每個(gè)重心計(jì)算它們的SDF值并進(jìn)行歸一化已作為每一個(gè)三角面的特征屬性。在對(duì)區(qū)域進(jìn)行操作時(shí),我們可以將該區(qū)域所包含的SDF值以統(tǒng)計(jì)直方圖的形式表現(xiàn)。我們?cè)O(shè)定50個(gè)區(qū)間,歸一化的SDF值可能處于這些區(qū)間內(nèi),對(duì)于一個(gè)區(qū)域,我們可以統(tǒng)計(jì)這個(gè)區(qū)域包含的三角面的SDF值。在區(qū)域?qū)χg,我們可以根據(jù)兩個(gè)區(qū)域的SDF值統(tǒng)計(jì)直方圖來(lái)進(jìn)行相似性比較。在合并區(qū)域?qū)Φ臅r(shí)候,操作也很簡(jiǎn)單,我們只需要重新統(tǒng)計(jì)來(lái)得到新區(qū)域的SDF值統(tǒng)計(jì)直方圖即可。
4.2.3曲率(curvature)
在前文已經(jīng)提到,人的認(rèn)知基于將最小負(fù)曲率線作為分割的邊界線。這一結(jié)果也啟發(fā)我們通過(guò)曲率給區(qū)域?qū)χg添加一些特征。負(fù)曲率線是一個(gè)有用的特征,常常位于兩個(gè)凸的部分中間的過(guò)度地帶。而對(duì)于大多數(shù)物體而言,凸的部分往往代表一個(gè)有不能繼續(xù)分割的整體,在兩個(gè)部分之間過(guò)度位置存在有意義分割的可能性很大。除此之外,對(duì)于頂點(diǎn)的曲率,還有另一種度量方式:高斯曲率。頂點(diǎn)的高斯曲率定義為該店主曲率的乘積,乘積的大小可以有效的反映模型表面在頂點(diǎn)處的彎曲程度,這樣對(duì)于檢測(cè)平面有很大的好處。在我們的實(shí)驗(yàn)中,對(duì)于一個(gè)區(qū)域?qū)?,我們提取他們邊界處的曲率值,分別計(jì)算最小負(fù)曲率的平均值,以及他們的高斯曲率作為特征之一。
4.2.4區(qū)域的凹凸值(convexity value)
前文提到,一個(gè)有意義的部分往往是凸的,這啟發(fā)我們?nèi)z測(cè)將兩個(gè)區(qū) 域合并后新區(qū)域是否滿足這一特性。采取在該論文中闡述的一種對(duì)于網(wǎng)格凹凸值(convexity value)的度量??蓵呵乙?維平面上為例來(lái)講解,對(duì)于一個(gè)多邊形,首先計(jì)算多邊形所有頂點(diǎn)構(gòu)成的凸包,之后對(duì)于構(gòu)成多邊形的每個(gè)邊,我們可以計(jì)算這條邊的中點(diǎn)到凸包的距離,將這些距離按照邊的長(zhǎng)度求加權(quán)平均就是這個(gè)多邊形的凹凸值。將二維的結(jié)果延伸到三維上,對(duì)于區(qū)域R,區(qū)域R內(nèi)的三角面集合為F{R},R的頂點(diǎn)集合為P{R},由P{R}可以求得區(qū)域R的凸包CR,則區(qū)域R的凹凸值定義如下:
其中,area(f)為面f的面積,dist(f,CR)為面f的中心到沿該面的法線延長(zhǎng)與凸包交點(diǎn)的距離。經(jīng)過(guò)凹凸值的計(jì)算,可以有效防止出現(xiàn)非凸的部分出現(xiàn)。
4.2.5區(qū)域?qū)傩蕴卣?/p>
經(jīng)過(guò)以上的特征,基本可以在訓(xùn)練過(guò)程中得到較好的效果,但是在實(shí)際測(cè)試中,發(fā)現(xiàn)會(huì)出現(xiàn)一種情況:會(huì)有一些很小的區(qū)域無(wú)法被聚合,盡管與他們相鄰的區(qū)域已經(jīng)將他們完全包裹住。原因在于并沒(méi)有對(duì)區(qū)域?qū)χ袃蓚€(gè)區(qū)域的大小做出約束。如果兩個(gè)區(qū)域中一個(gè)區(qū)域完全包裹住另一個(gè)區(qū)域,那么較小的區(qū)域?qū)嶋H應(yīng)該歸屬較大的區(qū)域。所以在添加特征的過(guò)程中,不僅僅應(yīng)當(dāng)局限于區(qū)域邊界上的特性,還應(yīng)該關(guān)注區(qū)域本身的幾何特性,比如區(qū)域的面積大小,區(qū)域邊界的周長(zhǎng),凸包體積等。
在實(shí)施例中,采用200個(gè)模型進(jìn)行訓(xùn)練,并且在剩下的模型上進(jìn)行了訓(xùn)練,絕大多數(shù)情況下,本分割方法的都能得到不錯(cuò)的結(jié)果,如圖2(a)—圖2(d)所示是采用本發(fā)明中的基于概率分區(qū)合并的三維模型分割方法對(duì)多 個(gè)CAD模型分割結(jié)果示意圖。圖3(a)—圖3(c)所示是采用本發(fā)明中的基于概率分區(qū)合并的三維模型分割方法對(duì)不同蜘蛛模型分割結(jié)果示意圖。圖4(a)—圖4(c)所示是采用本發(fā)明中的基于概率分區(qū)合并的三維模型分割方法對(duì)多個(gè)椅子模型的分割結(jié)果示意圖。
所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上,所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。