????????脊線(Ridges):在光滑曲面上,脊線是一種特殊的曲線。沿著這條曲線,曲面的一個(gè)主曲率在其曲率線上達(dá)到極值(最大或最?。_@意味著脊線是那些曲率發(fā)生突變的區(qū)域,它們?cè)谛螤罡兄?、物體識(shí)別和計(jì)算機(jī)圖形學(xué)中都有重要的應(yīng)用。
????????臍點(diǎn)(Umbilics):臍點(diǎn)是光滑曲面上的一個(gè)特殊點(diǎn),在該點(diǎn)上,曲面的兩個(gè)主曲率相等。在臍點(diǎn)處,曲面的形狀局部類似于一個(gè)球體或鞍點(diǎn)。臍點(diǎn)在曲面分析和計(jì)算機(jī)圖形學(xué)中也很重要,因?yàn)樗鼈兇砹饲嫘螤畹木植孔兓?/p>
? ? ? ? 模型的山脊線,由數(shù)字米開(kāi)朗基羅項(xiàng)目提供的模型。?
????????本章描述了用于近似由三角形網(wǎng)格離散化的光滑曲面的脊線和臍點(diǎn)的CGAL包。給定一個(gè)光滑曲面,脊是一條曲線,沿著這條曲線,其中一個(gè)主曲率沿著其曲率線具有極值。臍是一個(gè)點(diǎn),兩個(gè)主曲率相等。脊定義了一條奇異曲線,即一條自交曲線,臍是這條曲線上的特殊點(diǎn)。脊是極值曲線的曲線,因此編碼了分割、配準(zhǔn)、匹配和表面分析中使用的的重要信息。基于文章[2]的結(jié)果,我們提出了算法,以識(shí)別和提取三角網(wǎng)格曲面上的奇異脊曲線和臍的不同部分。與網(wǎng)格頂點(diǎn)相關(guān)的微分量被假設(shè)為這些算法的給定值;這些量可以通過(guò)點(diǎn)采樣曲面的局部微分特性估計(jì)包來(lái)計(jì)算。
????????注意,此軟件包需要第三方庫(kù)Eigen進(jìn)行線性代數(shù)運(yùn)算。?
1、總覽
????????光滑表面的脊和臍部分介紹了光滑表面上脊和臍理論的基礎(chǔ)。
? ? ? ?近似三角形曲面網(wǎng)格上的脊和近似三角形曲面網(wǎng)絡(luò)上的臍提供了從三角形網(wǎng)格近似(平滑曲面的)脊和臍的算法。
????????“軟件設(shè)計(jì)”一節(jié)給出了軟件包規(guī)范,而對(duì)軟件包功能的示例調(diào)用在“示例”一節(jié)中提供。
2、光滑曲面的脊線和臍點(diǎn)
????????關(guān)于脊和相關(guān)主題的詳細(xì)介紹,讀者可以參考[3]、cgal:p-gd-01以及以下綜述文章[1]。在接下來(lái)的內(nèi)容中,我們只介紹基本概念,以解釋我們的算法??紤]一個(gè)光滑的嵌入曲面,用k1和k2表示主曲率,k1≥k2。臍點(diǎn)是k1=k2的點(diǎn)。對(duì)于任何非臍點(diǎn),相應(yīng)的主曲率方向是明確的,我們將其表示為d1和d2。在局部坐標(biāo)系中,我們用?,?表示由歐幾里得空間誘導(dǎo)的內(nèi)積,dk1和dk2表示主曲率的梯度。如圖所示,標(biāo)準(zhǔn)橢球面的脊由以下公式定義:
????????釋義非臍點(diǎn)被稱為
????????如果極值系數(shù)b0=?dk1,d1?為零,即b0=0,則存在最大脊點(diǎn)。
????????如果極值系數(shù)b3=?dk2,d2?為零,則存在最小嶺點(diǎn),即b3=0;
????????之前對(duì)脊的特征描述涉及三階微分性質(zhì)。使用四階微分量,如果脊點(diǎn)對(duì)應(yīng)于k1的最大值或k2的最小值,則可以進(jìn)一步將其定性為橢圓,否則為雙曲線。因此,我們最終得到四種脊,即:MAX_ELLIPTIC_RIDGE、MAX_HYPERBOLIC_RIDGE、MIN_ELLIPTIC_RIDGE、MIN_HYPERBOLIC_RIDGE,如圖所示。
????????同樣有趣的是脊線,脊線是橢圓脊,是max(|k1|,|k2|)的最大值。脊線形成橢圓脊的子集,可以看作是表面上視覺(jué)上最突出的曲線。因此,我們提供了兩種額外的脊類型MAX_CREST_RIDGE和MIN_CREST_RIDGE,如圖1所示。
?
????????橢球上的脊,法線指向外部。顏色編碼:MAX_ELLIPTIC_RIDGE為藍(lán)色,MAX_HYPERBOLIC_RIDGE為綠色,MIN_ELLIPTIC_RIDGE為紅色,MIN_HYPERBOLIC_RIDGE為黃色。紅線也是MIN_CREST_RIDGE,這是橢球上唯一的峰脊。
????????在非臍點(diǎn)的曲面的任何點(diǎn)上,主方向d1、d2方向明確,這些(非定向)方向與法向量 n
定義兩個(gè)直接正交坐標(biāo)系。如果 v1 是方向 d1 的單位向量,則存在唯一的單位向量 v2,使得 (v1,v2,n) 是直接的,即與環(huán)境三維空間的規(guī)范基具有相同的方向(另一個(gè)可能的坐標(biāo)系是 (?v1,?v2,n))。在坐標(biāo)系 (v1,v2,n) 中,曲面具有以下規(guī)范形式,稱為蒙日形式
????????k1(resp.k2)沿著穿過(guò)原點(diǎn)并由x(resp.y)參數(shù)化的最大(resp.min)曲率線的泰勒展開(kāi)式為:?
????????還要注意,從上述兩個(gè)坐標(biāo)系中的一個(gè)切換到另一個(gè),會(huì)恢復(fù)曲面Monge形式上所有奇數(shù)系數(shù)的符號(hào)。
????????因此山脊類型的特點(diǎn)是:
????????b0=0時(shí)的最大山脊
????????如果b0=0,則最大_ LLITIC_RIDGE且P1<0
????????如果b0=0,則最大_HYPERBOLIC_RIDGE且P1>0
????????最小山脊,如果b3=0
????????如果b3=0,則最小_ LLITIC_RIDGE且P2<0
????????如果b3=0,則為MIN_HYPERBOLIC_RIDGE且P2>0
????????如果b0=0,則最大_CREST_RIDGE且P1<0和|k1|>|k2|
????????如果b3=0,則MIN_CREST_RIDGE且P2<0和|k2|>|k1|
????????如圖所示,圍繞臍線的曲率線形成的圖案可以用與主方向相關(guān)的指數(shù)的概念來(lái)表征。
????????如圖3所示,考慮圍繞臍線的一個(gè)小回路C,以及點(diǎn)p∈C。從通過(guò)點(diǎn)p的曲率線的切向量的初始方向u開(kāi)始,通過(guò)連續(xù)性沿電路傳播該方向。該指數(shù)由u圍繞該旋轉(zhuǎn)掃過(guò)的角度定義,歸一化為2π。在我們的例子中,該指數(shù)為1/2。如果主方向場(chǎng)的索引為 1/2,則稱為 ELLIPTIC_UMBILIC,如果為 -1/2它被稱為HYPERBOLIC_UMBILIC。否則,臍點(diǎn)被定義為NON_GENERIC_UMBILIC。
索引1/2臍或橢圓形臍。?
?橢圓和雙曲臍。
3、三角形曲面網(wǎng)格上脊線的近似
????????我們的方法旨在將脊線報(bào)告為網(wǎng)格上的多邊形線。它假設(shè)網(wǎng)格的每個(gè)頂點(diǎn)都有微分量(主曲率和方向以及三階量b0、b3和可選的四階量P1、P2)。這些微分量可以針對(duì)網(wǎng)格內(nèi)切的平滑曲面進(jìn)行計(jì)算(分析或使用近似方法),也可以在不參考底層平滑曲面的情況下對(duì)給定的網(wǎng)格進(jìn)行估計(jì)。雖然脊線近似算法在這兩種情況下都是相同的,但人們不能要求相同的證書。這種區(qū)別需要符合網(wǎng)格的概念。
????????光滑表面的脊是具有規(guī)定微分性質(zhì)的點(diǎn),從內(nèi)接于該表面的網(wǎng)格報(bào)告它們需要對(duì)網(wǎng)格的幾何形狀進(jìn)行精細(xì)的假設(shè),以便得到經(jīng)過(guò)認(rèn)證的結(jié)果。
????????在本段中,我們假設(shè)提供的網(wǎng)格符合一系列假設(shè),這些假設(shè)保證報(bào)告的脊的拓?fù)浣Y(jié)構(gòu)與光滑表面上的脊的拓?fù)浣Y(jié)構(gòu)相匹配。概括地說(shuō),一個(gè)兼容的網(wǎng)格是一個(gè)足夠密集的網(wǎng)格,使得(i)臍點(diǎn)被正確隔離(ii)相互鄰近的脊也被正確分離。
????????作為極值系數(shù)b0的0級(jí)集合和b3,通過(guò)行進(jìn)三角形算法提取脊線。
????????由于這些極值系數(shù)的符號(hào)取決于主方向的取向,我們期望在網(wǎng)格的每個(gè)點(diǎn)頂點(diǎn)處給出極值和指向主方向的向量。除了在臍點(diǎn)附近,如果網(wǎng)格足夠密集,則選擇在邊緣的兩個(gè)端點(diǎn)處一致的主方向取向,使得兩個(gè)向量之間的角度為銳角。這條規(guī)則,即銳角規(guī)則。此外,我們只尋找三角形中的脊,其中可以找到其三個(gè)頂點(diǎn)的取向,使得三條邊通過(guò)銳角規(guī)則一致地取向。這樣的三角形稱為正三角形。這就是說(shuō),有兩點(diǎn)要說(shuō)明。
????????正三角形和脊線段。正三角形有0或2條邊被最大(最?。┘咕€穿過(guò),這相當(dāng)于b0的符號(hào)變化(分別為b3)沿著相應(yīng)的邊緣。在后一種情況下,我們說(shuō)三角形包含脊線段。提供了兩種方法來(lái)計(jì)算其類型,無(wú)論是橢圓還是雙曲線。首先,如果提供了四階微分量,可以使用P1(P2) 值在?eqtaylor_along_line ( eqtaylor_along_red_line) 的方程,用于求最大(最?。┘埂i 的值脊段Pi的平均值定義為邊緣上的兩個(gè)交叉點(diǎn)的值(而邊緣上的交叉點(diǎn)的值是雙端點(diǎn)處值的加權(quán)平均值)。或者,如果只有三階微分量可用,可以使用[2]中開(kāi)發(fā)的幾何方法。
????????使用脊線段的概念,脊線被定義為相同類型且連接在一起的脊線段的最大連接序列。請(qǐng)注意,脊線的拓?fù)浣Y(jié)構(gòu)可以是區(qū)間或圓。
????????非規(guī)則三角形。在臍點(diǎn)附近,三角形不太可能是規(guī)則的,并且這種方法不能檢測(cè)到脊。這就是為什么我們提出另一種方法來(lái)獨(dú)立檢測(cè)臍點(diǎn)的原因。
????????非符合性網(wǎng)格:對(duì)強(qiáng)度和銳度的脊線進(jìn)行濾波???????。
????????對(duì)于處理粗網(wǎng)格、具有退化區(qū)域或尖銳特征的網(wǎng)格或帶有一定量噪聲的實(shí)際應(yīng)用,合規(guī)假設(shè)無(wú)法滿足。在這種情況下,仍然可以尋求具有估計(jì)主曲率極值的點(diǎn)的位置,但報(bào)告的脊線可能需要濾波。例如,如果主曲率是常數(shù)
????????這適用于平面或圓柱體的情況,則所有點(diǎn)都是脊點(diǎn)。在這種情況下,一個(gè)有吸引力的概念是尖銳脊或突出脊。由于脊線由b0和b3的零交叉見(jiàn)證,只要這些系數(shù)保持較小,就可以預(yù)期存在錯(cuò)誤的檢測(cè)。為了選擇最突出的脊點(diǎn),我們專注于沿著曲率線曲率變化迅速的點(diǎn)。可以觀察到,在脊點(diǎn)處,根據(jù)方程eqtaylor_along_line,沿其曲率線的k1的二階導(dǎo)數(shù)滿足k′′1(0)=P1/(k1?k2)。利用這一觀察結(jié)果,可以將脊線的銳度定義為沿脊線的P1/(k1?k2)的絕對(duì)值之和。由于曲率的二階導(dǎo)數(shù)與長(zhǎng)度立方倒數(shù)成正比,銳度與長(zhǎng)度平方倒數(shù)成正比。將銳度乘以模型尺寸的平方可以得到一個(gè)閾值和一個(gè)與尺度無(wú)關(guān)的銳度過(guò)濾器。另一個(gè)濾波器與強(qiáng)度有關(guān),強(qiáng)度是沿脊線的曲率積分。
4、三角形曲面網(wǎng)格上臍點(diǎn)的近似
????????該方法旨在將網(wǎng)格的某些頂點(diǎn)識(shí)別為臍點(diǎn)。它假設(shè)主曲率和方向在網(wǎng)格上的每個(gè)頂點(diǎn)都給定。
????????假設(shè)網(wǎng)格的每個(gè)頂點(diǎn)v周圍都有一個(gè)補(bǔ)?。ㄍ?fù)鋱A盤)。檢查頂點(diǎn)v是否是臍點(diǎn)是一個(gè)兩階段的過(guò)程,分別涉及補(bǔ)丁上函數(shù)k1-k2的變化,以及根據(jù)補(bǔ)丁邊界計(jì)算的頂點(diǎn)的索引。更確切地說(shuō),如果滿足以下兩個(gè)條件,則將頂點(diǎn)v聲明為臍點(diǎn):
????????函數(shù) k1?k2 在補(bǔ)丁的所有頂點(diǎn)中在 v 處具有最小值;
????????沿補(bǔ)丁邊界逆時(shí)針(CCW)方向任何主方向的偏差δ具有規(guī)定的性質(zhì):
? ? ? ? δ∈]π/2,3π/2[,則該臍稱為橢圓臍,
????????δ ∈ ]?3π/2,?π/2[, 則該臍點(diǎn)稱為雙曲臍點(diǎn),
? ? ? ? 否則,臍帶被稱為非通用。
????????在頂點(diǎn)周圍找到補(bǔ)丁。給定一個(gè)頂點(diǎn)v和一個(gè)參數(shù)t,我們的目標(biāo)是定義一個(gè)圍繞v的三角形集合,使得(i)這個(gè)集合在三角剖分T上定義了一個(gè)拓?fù)鋱A盤,并且(ii)它的尺寸取決于t。首先,我們收集1-環(huán)三角形。我們定義這個(gè)1-環(huán)補(bǔ)丁的尺寸s為從v到其最遠(yuǎn)的1-環(huán)頂點(diǎn)鄰居的(歐幾里得)距離。然后我們遞歸收集相鄰三角形,使補(bǔ)丁保持為拓?fù)鋱A盤,并且這些三角形的距離小于s×t參數(shù)t是該算法的唯一參數(shù)。
????????臍帶貼片與臍嵴。在一般的表面上,一般的臍被一個(gè)或三個(gè)脊穿過(guò)。對(duì)于柔順網(wǎng)格,臍可以連接到位于其面片邊界上的脊點(diǎn)。
5、軟件設(shè)計(jì)
????????此包中的所有類都由參數(shù)TriangleMesh模板化,該參數(shù)定義了近似算法所操作的網(wǎng)格類型。
????????差分量通過(guò)屬性映射在這個(gè)網(wǎng)格的頂點(diǎn)處提供,屬性映射是 Boost 庫(kù)中常用的概念。屬性映射使用戶能夠在擴(kuò)展的頂點(diǎn)內(nèi)部或外部使用 std::map 結(jié)合 boost::associative_property_map 存儲(chǔ)與頂點(diǎn)相關(guān)的標(biāo)量和向量。
????????脊或臍的輸出是通過(guò)輸出迭代器提供的。
????????脊線和臍線的近似是通過(guò)兩個(gè)獨(dú)立的類來(lái)完成的,我們現(xiàn)在進(jìn)一步描述。
5.1、脊線近似
????????主要類是 Ridge_approximation<TriangleMesh,VertexFTMap,VertexVectorMap>。它的構(gòu)造需要網(wǎng)格和屬性映射,定義主曲率 k1 和 k2 的微分量、三階極值 b0 和 b3、主曲率方向 d1 和 d2,以及四階量 P1 和 P2(如果使用多項(xiàng)式 P1 和 P2 將脊標(biāo)記為橢圓或雙曲線).
????????三個(gè)函數(shù)(作為成員函數(shù)和全局函數(shù)提供)支持不同類型的脊線計(jì)算:
????????compute_max_ridges() (resp. compute_min_ridges()) 輸出 MAX_ELLIPTIC_RIDGE 和 MAX_HYPERBOLIC_RIDGE (resp. MIN_ELLIPTIC_RIDGE 和 MIN_HYPERBOLIC_RIDGE) 類型的脊線。
????????compute_crest_ridges() 輸出 MAX_CREST_RIDGE 和 MIN_CREST_RIDGE 類型的脊。
????????這些函數(shù)允許用戶指定橢圓/雙曲線標(biāo)記是如何執(zhí)行的。請(qǐng)注意,選擇這三個(gè)函數(shù)的基本原理很簡(jiǎn)單:每個(gè)計(jì)算都需要在網(wǎng)格的三角形上單次通過(guò)。對(duì)于最小和最大脊,這一點(diǎn)應(yīng)該是清楚的。對(duì)于峰,只需注意最大和最小峰不能在三角形上相交。
????????脊線存儲(chǔ)在 Ridge_line 對(duì)象中,并通過(guò)迭代器輸出。每條脊線表示為網(wǎng)格的半邊列表,其中包含一個(gè)標(biāo)量,該標(biāo)量定義了交叉點(diǎn)相對(duì)于半邊端點(diǎn)的重心坐標(biāo)。每條脊線都有其類型 Ridge_type、強(qiáng)度和銳度。如果選擇僅使用三階量,則量Pi銳度將無(wú)法定義。
5.2、臍點(diǎn)近似
????????主類是Umbilic_approximation<TriangleMesh,VertexFTMap,VertexVectorMap>。它的構(gòu)造需要網(wǎng)格和屬性映射,定義主曲率k1和k2的微分量,以及主曲率方向d1和d2。成員函數(shù)compute()(或全局函數(shù)compute_umbilics())有一個(gè)參數(shù),用于定義臍點(diǎn)鄰域的大小。
????????臍點(diǎn)存儲(chǔ)在臍點(diǎn)對(duì)象中,它們具有自己的類型:ELLIPTIC_UMBILIC、HYPERBOLIC_UMBILIC 或 NON_ GENERIC_UMBILIC;它們關(guān)聯(lián)到的網(wǎng)格頂點(diǎn)以及表示鄰域輪廓的半邊列表。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-777323.html
CGAL 5.6 - Approximation of Ridges and Umbilics on Triangulated Surface Meshes: User Manual文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-777323.html
到了這里,關(guān)于CGAL的三角網(wǎng)格曲面脊線和臍點(diǎn)的近似計(jì)算(需要微分幾何學(xué)的知識(shí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!