最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

移動(dòng)立方體算法原理

2022-09-17 15:41 作者:生醫(yī)小王子  | 我要投稿

移動(dòng)立方體(Marching Cube,MC)算法是一種面繪制算法,該算法也被稱為等值面提?。↖sosurface Extration)算法。該算法于1987年被W. E. Lorensen提出,主要用于3D醫(yī)學(xué)圖像的面繪制[1];Hoppe[2]和J. C. Carr[3]等人分別于1992年和2001年提出了不同的改進(jìn)方法,以將其用于點(diǎn)云表面重建。PCL基于1987年的文章實(shí)現(xiàn)了marching_cubes抽象類,并進(jìn)一步根據(jù)1992和2001年的文章分別實(shí)現(xiàn)了marching_cubes_hoppe和marching_cubes_rbf算法。下面根據(jù)上述3篇文章,分別介紹MC算法的原理和相應(yīng)的改進(jìn)方法。

首先介紹MC方法的基本原理。在1987年的論文中,3D醫(yī)學(xué)圖像被分解為多個(gè)體元(Cube),每個(gè)Cube包含8個(gè)頂點(diǎn),如下圖1所示。具體操作過(guò)程如圖2所示。

  1. 設(shè)置表面(surface)對(duì)應(yīng)的數(shù)據(jù)值iso_level。算法假設(shè)表面的數(shù)據(jù)值是一個(gè)常數(shù)。

  2. 比較iso_level與8個(gè)頂點(diǎn)的數(shù)據(jù)值,大于等于iso_level的設(shè)置為1,表示頂點(diǎn)在表面內(nèi)部;小于iso_level的頂點(diǎn)設(shè)置為0,表示頂點(diǎn)在表面內(nèi)部。若一條邊的2個(gè)頂點(diǎn)分別為0和1,那么認(rèn)為表面會(huì)通過(guò)這條邊。因?yàn)?個(gè)頂點(diǎn)共有0和1兩種狀態(tài),所以Cube會(huì)有2^8=256種情況,論文作者根據(jù)對(duì)稱等方法將這256種情況總結(jié)為15種,如圖3所示。

  3. 查表確定表面會(huì)穿過(guò)哪些邊,并插值計(jì)算表面在Cube邊上的具體位置。作者提供了邊查找表以確定哪些邊需要插值,查找表的輸入為頂點(diǎn)狀態(tài)組成的8bit索引,如圖4(a)所示;輸出為Cube的12條邊的狀態(tài)(表面是否穿過(guò)該邊)組成的12bit數(shù)據(jù),如圖4(b)所示。隨后使用線性插值方法確定表面在Cube邊上的具體位置。

  4. 查表確定哪些頂點(diǎn)會(huì)形成三角形。作者也提供了三角形查找表以確定哪些頂點(diǎn)會(huì)連接成三角形,如圖5所示。查找表輸入仍為頂點(diǎn)狀態(tài)組成的8bit索引,輸出為構(gòu)成三角形3條邊的索引,其中每種情況最多形成4個(gè)三角形。

圖1? Cube示意圖(Cube中的頂點(diǎn)可用3D醫(yī)學(xué)圖像中的體素中心表示)[1]
圖2? MC算法的具體操作過(guò)程[4]
圖3? Cube的15種基本構(gòu)型[1]
圖4? (a)查找表的索引設(shè)置[1];(b)邊查找表
圖5? (a)三角形查找表查找方式;(b)三角形查找表

然后介紹Hoppe等人在1992年對(duì)MC算法的改進(jìn)。在點(diǎn)云表面重建中,無(wú)法像3D醫(yī)學(xué)圖像那樣直接獲取Cube頂點(diǎn)的數(shù)據(jù)值,Hoppe等人使用Cube頂點(diǎn)到點(diǎn)云的有符號(hào)距離(signed distance function)來(lái)表示該數(shù)據(jù)值。

  1. 設(shè)置表面對(duì)應(yīng)的數(shù)據(jù)值iso_level,一般為0。

  2. 計(jì)算Cube頂點(diǎn)到點(diǎn)云的有符號(hào)距離。首先找到距離Cube頂點(diǎn)最近的數(shù)據(jù)點(diǎn)n,然后計(jì)算Cube頂點(diǎn)到表面在點(diǎn)n處的切平面的距離。實(shí)際是計(jì)算Cube頂點(diǎn)到點(diǎn)n的向量與切平面法向量的點(diǎn)乘,計(jì)算結(jié)果保留符號(hào)。如圖6所示。

  3. 使用MC方法確定三角面。

圖6? 有符號(hào)距離示意圖[5]

最后介紹J. C. Carr等人在2001年對(duì)MC算法的改進(jìn)。他們使用徑向基函數(shù)(Radial Basis Function,RBF)生成函數(shù)空間,其中在表面處的函數(shù)值為0.

要成為RBF函數(shù)φ(x),需要滿足條件:對(duì)于某一個(gè)固定點(diǎn)c,滿足%5Cvarphi%20(x)%3D%5Cvarphi%20(%7C%7Cx-c%7C%7C),即對(duì)于圍繞著某固定點(diǎn)c的等距的x,函數(shù)值相同[6]。常用的徑向函數(shù)有高斯函數(shù)%5Cvarphi%20(r)%3Dexp(-cr%5E2),二次函數(shù)%5Cvarphi(r)%3D%20%5Csqrt%7Br%5E2%2Bc%5E2%20%7D%20等,其中PCL使用的是%5Cvarphi%20(r)%3Dr%5E3%20

我們希望找到一個(gè)函數(shù)f,對(duì)于表面上點(diǎn)x,有f(x)=0。這篇文章使用RBF函數(shù)的線性組合來(lái)表示函數(shù)f:[7]

f(x)%3Dp(x)%2B%5Csum_%7Bi%3D1%7D%5EN%20%5Clambda%20_%7Bi%7D(%7Cx-x_%7Bi%7D%7C)%20%20

p(x)%3Dc_%7B1%7D%2Bc_%7B2%7Dx%2Bc_%7B3%7Dy%2Bc_%7B4%7Dz%20

另外為避免在不相關(guān)的地方產(chǎn)生f(x)=0,作者沿表面點(diǎn)的曲面法向量生成了一對(duì)離面約束點(diǎn),一個(gè)在表面外,一個(gè)在表面內(nèi),他們距表面的距離為d,從而可以得到另外2組方程f(x)=d和f(x)=-d。其中距離d不能設(shè)置的過(guò)大,要保證離面約束點(diǎn)到生成他的點(diǎn)的距離是最近的。如圖7所示,4個(gè)手指處生成的離面約束點(diǎn)不能交疊。

圖7? (a)手部模型;(b)手指處表面和2組離面約束點(diǎn)形成表面的示意圖

最后上述方程可以組合形成一個(gè)線性方程組,求解后即可得到f(x)。然后使用MC方法就可以得到三角化的表面。

算法流程如下:

  1. 設(shè)置離面約束點(diǎn)距離d

  2. 根據(jù)現(xiàn)有點(diǎn)云數(shù)據(jù),求解線性方程組,得到函數(shù)f(x)的參數(shù)

  3. 使用MC方法確定三角面,其中Cube頂點(diǎn)數(shù)據(jù)值由f(x)定義

參考文獻(xiàn)

  1. W. E. Lorensen, H. E. Cline. Marching Cubes: A High Resolution 3D Surface Construction Algorithm. Computer Graphics. 1987. 21(4): 163-169

  2. H. Hoppe, T. DeRose, T. Duchamp, J. McDonald, W. Stuetzle. Surface Reconstruction from Unorganized Points. Proceedings of the 19th Annual Conference on Computer? Graphics and Interactive Techniques. 1992: 71-78

  3. J. C. Carr, R. K. Beatson, J. B. Cherrie, T. J. Mitchell, W. R. Fright, B. C. McCallum, T. R. Evans. Reconstruction and Representation of 3D Objects with Radial Basis Functions.?Proceedings of the 28th Annual Conference on Computer? Graphics and Interactive Techniques. 2001: 67-76

  4. MC(移動(dòng)立方體)算法_LV小豬精的博客-CSDN博客_mc算法

  5. PCL庫(kù)中Marching Cubes(移動(dòng)立方體)算法的解析_y=520(2sinM-sin2M)的博客-CSDN博客_marchingcube

  6. 從零開(kāi)始幾何處理:RBF函數(shù) - 知乎 (zhihu.com)

  7. 三維重建 - 基于RBF的三維網(wǎng)格重建 - StubbornHuang Blog


移動(dòng)立方體算法原理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
六盘水市| 霍林郭勒市| 称多县| 湘乡市| 松江区| 且末县| 清流县| 康定县| 崇礼县| 新郑市| 开远市| 新昌县| 阿瓦提县| 白城市| 台南县| 斗六市| 阿图什市| 萨嘎县| 东乌| 阿尔山市| 遵义市| 高陵县| 延津县| 樟树市| 永嘉县| 阿鲁科尔沁旗| 清水县| 平凉市| 雷波县| 都匀市| 桂阳县| 洪江市| 吉首市| 宁化县| 奈曼旗| 恩平市| 岑溪市| 龙游县| 九江市| 克东县| 岳阳县|