高 聰,陳國(guó)棟,王 娜
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350116; 2.福州大學(xué) 計(jì)算機(jī)圖像圖形研究所,福建 福州 350116;3.福建師范大學(xué) 福清分校,福建 福州 350300)
三維肝臟模型個(gè)性化UV映射方法研究
高 聰1,2,陳國(guó)棟1,2,王 娜3
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350116; 2.福州大學(xué) 計(jì)算機(jī)圖像圖形研究所,福建 福州 350116;3.福建師范大學(xué) 福清分校,福建 福州 350300)
虛擬手術(shù)是計(jì)算機(jī)圖形學(xué)里的一個(gè)重要應(yīng)用。三維器官模型UV映射(UV貼圖)方法一直是虛擬手術(shù)領(lǐng)域里的一個(gè)研究熱點(diǎn)。UV映射就是將一個(gè)2D紋理映射到一個(gè)3D模型上,肝臟模型傳統(tǒng)的UV映射方法就是將二維紋理的坐標(biāo)位置映射到三維肝臟模型的網(wǎng)格頂點(diǎn)上。提出了一種全新的三維肝臟模型UV映射方法,該方法使UV貼圖獨(dú)立于網(wǎng)格的表面,能夠有效減少GPU運(yùn)算量,縮短渲染時(shí)間,并且同一張紋理圖像能夠應(yīng)用于多個(gè)不同分辨率的相似的三維肝臟模型,充分體現(xiàn)出肝臟的個(gè)性化,對(duì)虛擬手術(shù)中個(gè)體的研究具有重要意義。
虛擬手術(shù);計(jì)算機(jī)圖形學(xué);肝臟;UV映射;個(gè)性化
隨著計(jì)算機(jī)圖形學(xué)技術(shù)的飛速發(fā)展,如今計(jì)算機(jī)圖形學(xué)與現(xiàn)代醫(yī)學(xué)緊密結(jié)合,虛擬手術(shù)仿真系統(tǒng)應(yīng)運(yùn)而生,目前虛擬手術(shù)仿真系統(tǒng)已經(jīng)是醫(yī)學(xué)教育和術(shù)前規(guī)劃的重要工具[1]。本文所作的研究便是虛擬手術(shù)仿真系統(tǒng)中的一部分。虛擬的三維肝臟模型在虛擬手術(shù)上的應(yīng)用具有獨(dú)特的優(yōu)勢(shì),一個(gè)3D肝臟模型上良好的UV貼圖能夠更好地提升虛擬手術(shù)中的真實(shí)體驗(yàn)[2]。另外,由于每個(gè)個(gè)體的肝臟形狀都存在著微小的差異,因此,突出三維肝臟模型的個(gè)性化的UV映射方法成為了當(dāng)前虛擬手術(shù)中針對(duì)每個(gè)個(gè)體的研究熱點(diǎn),對(duì)于虛擬手術(shù)及現(xiàn)代醫(yī)學(xué)的發(fā)展也有著重要的意義。
目前,國(guó)內(nèi)外對(duì)于3D肝臟模型的UV映射方法一般采用計(jì)算機(jī)圖形學(xué)里傳統(tǒng)的2D紋理映射方法。傳統(tǒng)的UV貼圖方法的本質(zhì)就是將3D模型的每個(gè)頂點(diǎn)與2D的紋理圖像綁定在一起,然后利用插值函數(shù)讓2D紋理圖像作縮放等操作,從而能夠產(chǎn)生3D的效果[3]。但是,傳統(tǒng)的UV映射方法需要對(duì)3D模型的每個(gè)頂點(diǎn)進(jìn)行運(yùn)算,存在著GPU運(yùn)算量大、資源占用率高等缺點(diǎn),而且這種方法應(yīng)用在肝臟模型中也無(wú)法反映出不同個(gè)體中肝臟存在的微小差異,無(wú)法突出其個(gè)性化。本文提出的這種UV映射方法是一種基于立體的UV貼圖方法,該方法消除了傳統(tǒng)對(duì)于3D模型每個(gè)頂點(diǎn)上的運(yùn)算,能夠有效減少GPU運(yùn)算量與資源占用率,同時(shí)能夠應(yīng)用于多個(gè)相似的肝臟模型,高分辨率和低分辨率的肝臟模型也能共享相同的幾何紋理[4],能夠有效突出3D肝臟模型UV映射的個(gè)性化。
體素化就是將一個(gè)物體連續(xù)的幾何形式表示轉(zhuǎn)換成最接近該物體離散的體素表示形式[5],產(chǎn)生體數(shù)據(jù)集,其包含了模型的表面信息和一些內(nèi)部屬性。對(duì)于肝臟模型表面的體素化,根據(jù)三維肝臟模型分別在x、y、z三個(gè)方向上的定義域得到肝臟模型的包圍盒B,定義包圍盒B為一個(gè)邏輯空間L:
L=[0,Sx-1]×[0,Sy-1]×[0,Sz-1]
(1)
三個(gè)自然數(shù)S[x,y,z]是體素化的空間分辨率。在L的每個(gè)整數(shù)位置存儲(chǔ)UV坐標(biāo)位置(UV空間Ω=[0,1]×[0,1]),三線性插值也存儲(chǔ)在體素的角落中。在L里的一個(gè)單位大小的立方體,其在整數(shù)位置的八個(gè)角落稱為一個(gè)體素。對(duì)于三個(gè)自然數(shù)S[x,y,z]的選取,一般介于4~64之間,選取的數(shù)值越小越能減少內(nèi)存的占用,數(shù)值越大則表示UV貼圖上更大的自由度以及更高的質(zhì)量,本研究中將這三個(gè)值都取為16。
定義映射函數(shù)f:
f(p)=τ(σ(p))
(2)
(3)
在肝臟表面進(jìn)行體素化運(yùn)算可得到圖1。
圖1 肝臟表面體素化
其中顏色的深淺變化表示相鄰的不同體素。
在計(jì)算機(jī)進(jìn)行渲染時(shí),L空間中整數(shù)位置的UV坐標(biāo)值被存儲(chǔ)為一個(gè)與二通道紋理相同分辨率的三維立體紋理,片段處理器只需進(jìn)行一個(gè)簡(jiǎn)單的q=σ(p)運(yùn)算便可以解出對(duì)每個(gè)頂點(diǎn)的計(jì)算,然后在q中進(jìn)行三線性插值計(jì)算[6],并返回τ(q),返回的值直接作為最終紋理的地址。這樣便可以用這一操作代替?zhèn)鹘y(tǒng)上對(duì)于每個(gè)頂點(diǎn)進(jìn)行線性插值的UV貼圖模式,有效節(jié)省了紋理的內(nèi)存帶寬,降低了GPU的運(yùn)算量。
首先需要對(duì)肝臟模型表面S進(jìn)行采樣,每一個(gè)表面樣品用si表示,并帶有一個(gè)3D位置坐標(biāo)pi,一個(gè)法向量ni和一個(gè)區(qū)域面積ai。定義模型表面積與紋理面積之間的比值ri,ri與si相關(guān)聯(lián),標(biāo)量r隨著S的變化而變化。
(4)
(5)
(6)
(7)
(8)
另外,定義E來(lái)衡量上述向量等式,并對(duì)所有表面的樣本進(jìn)行面積加權(quán):
(9)
其中:
(10)
(11)
(12)
(13)
(14)
同一組變量在這里將產(chǎn)生一個(gè)新的二次最小二乘系統(tǒng)的下一次迭代。計(jì)算機(jī)執(zhí)行除了最后一個(gè)的所有迭代。另一個(gè)優(yōu)化則在于合并了樣本共享的相同體素。
最后階段,為了進(jìn)一步提高貼圖的幾何獨(dú)立性,非空體素的角落所產(chǎn)生的UV值將傳到所有的其他位置的整數(shù)位置。首先分配一個(gè)平均的法線向量到L中的所有體素,作為該體素內(nèi)所有樣品面積加權(quán)的平均法向量;然后,用一個(gè)簡(jiǎn)單的擴(kuò)散算法將這個(gè)法向量擴(kuò)展到空體素,將空體素的法向量歸零,再將所有近鄰的平均法向量迭代分配到每個(gè)空體素;最后,將存儲(chǔ)在L空間中的整數(shù)位置傳到未分配的位置。
切線空間法線貼圖是目前應(yīng)用較為廣泛的一種法線貼圖技術(shù)[9],其與正常空間的法線貼圖相比具有很大的優(yōu)勢(shì):法線貼圖被獨(dú)立地定義在它被應(yīng)用到的表面的方向上。這意味著相同的法線貼圖可以讓不同的模型進(jìn)行共享,或者是同一模型的不同部分也可進(jìn)行共享。
本文所述的貼圖方式與正常的切線空間的法線貼圖相似,因?yàn)樵谌S肝臟模型表面上處處都有切線方向的定義。在傳統(tǒng)的貼圖方式中,切線和雙切線方向都是預(yù)先計(jì)算好的并作為頂點(diǎn)的屬性進(jìn)行存儲(chǔ),然后在各面片上進(jìn)行插值。在本課題中,先計(jì)算三維紋理,然后將其存儲(chǔ)在三維空間中(比如L空間),然后在渲染時(shí)對(duì)其進(jìn)行插值。
構(gòu)造過(guò)程可以歸結(jié)為一個(gè)簡(jiǎn)單的算法:一個(gè)紋理元素中的t和b在x方向上的坐標(biāo)值已經(jīng)預(yù)先計(jì)算為u值(v的值)的一半差值,與在x方向上的3D紋理的之前之后都相關(guān),同理,在y和z方向上也一樣。之后每個(gè)紋理元素上的t和b向量將會(huì)進(jìn)行重新計(jì)算。
最終,選取其中一種肝臟模型為例,使用該方法進(jìn)行UV貼圖,結(jié)果如圖2所示。
圖2 肝臟表面UV貼圖
本課題使用的操作系統(tǒng)為64位Windows 7,編程環(huán)境為Visual Studio 2013,編程語(yǔ)言采用C++,并搭載Qt創(chuàng)建可視化界面。選用的三維肝臟模型為OBJ格式,紋理圖片的為PNG格式,另外還有OpenGL圖形庫(kù)及其擴(kuò)展庫(kù)GLUT和GLEW,使用著色語(yǔ)言GLSL對(duì)頂點(diǎn)著色器和片段著色器進(jìn)行編寫。
由于肝臟表面是一個(gè)盤狀表面,表面上并無(wú)缺口,因此其表面的映射函數(shù)f是一個(gè)不間斷的連續(xù)函數(shù)。這里選取以下四個(gè)三維的肝臟模型,這四個(gè)肝臟模型在形態(tài)上、頂點(diǎn)數(shù)和面片數(shù)上都不相同,具體見表1。
表1 四個(gè)三維肝臟模型對(duì)比
最后,選取同一張2D紋理圖像對(duì)這四個(gè)不同的三維肝臟模型進(jìn)行UV貼圖,結(jié)果如圖3和圖4所示。
圖3 貼圖前肝臟模型
圖4 貼圖后肝臟模型
本文針對(duì)三維肝臟模型提出了一種個(gè)性化的UV貼圖方法,該方法先將肝臟模型作體素化處理,然后將UV坐標(biāo)存儲(chǔ)在一個(gè)三維的立體空間中,形成一個(gè)三維立體紋理,之后與切線空間的法線貼圖類似,在渲染的時(shí)候?qū)ζ溥M(jìn)行三線性插值。該方法與傳統(tǒng)上對(duì)于每個(gè)頂點(diǎn)進(jìn)行線性插值的UV貼圖模式相比,有效節(jié)省了紋理的內(nèi)存帶寬,降低了GPU的運(yùn)算量,同時(shí)能使同一張二維紋理圖像應(yīng)用于多個(gè)不同分辨率的相似的三維肝臟模型,充分體現(xiàn)出三維肝臟模型的個(gè)性化,在虛擬手術(shù)中對(duì)于每個(gè)個(gè)體的肝臟的研究具有重要的意義。
由于肝臟表面紋理比較單一,因此該貼圖方法能夠發(fā)揮極大的優(yōu)勢(shì),實(shí)現(xiàn)個(gè)性化。但是對(duì)于虛擬手術(shù)中更復(fù)雜的三維器官模型、更復(fù)雜的紋理圖像的UV貼圖以及如何在實(shí)現(xiàn)肝臟模型個(gè)性化的同時(shí)進(jìn)一步提升肝臟模型的真實(shí)感等問(wèn)題,還有待進(jìn)一步研究。
[1] 賴顥升. 虛擬手術(shù)中流血效果模擬研究[D]. 濟(jì)南:山東大學(xué), 2014.
[2] 劉景豐, 林科燦. 虛擬肝技術(shù)在肝臟外科中的應(yīng)用[J]. 外科理論與實(shí)踐, 2010, 15(3): 214-216.
[3] 王波, 孫蔚. 基于OpenGL的新式OBJ文件紋理貼圖方法研究[J]. 計(jì)算機(jī)與數(shù)字工程, 2015(8):1497-1500.
[4] TARINI M. Volume-encoded UV-maps[J]. ACM Transactions on Graphics, 2016, 35(4):107.
[5] 朱曉濤. 面向正則體積顯示的三維模型體素化研究[D]. 杭州:浙江大學(xué), 2013.
[6] 諸葛斌, 馮煥清, 周荷琴. 醫(yī)學(xué)圖像體繪制中的快速三線性插值算法[J]. 航天醫(yī)學(xué)與醫(yī)學(xué)工程, 2003, 16(3):206-209.
[7] LéVY B, PETITJEAN S, RAY N, et al. Least squares conformal maps for automatic texture atlas generation[J]. ACM Transactions on Graphics, 2002, 21(3):362-371.
[8] DESBRUN M, MEYER M, ALLIEZ P. Intrinsic parameterizations of surface meshes[J]. Computer Graphics Forum, 2010, 21(21):209-218.
[9] 姚超. 淺談切線空間法線貼圖在三維建模中的應(yīng)用[J]. 大眾文藝, 2016(23): 96-97.
Research on personalized UV mapping method for 3D liver model
Gao Cong1,2, Chen Guodong1,2, Wang Na3
(1. College of Physics and Information Engineering, Fuzhou University, Fuzhou 350116, China;2. Institute of Computer Image and Graphics, Fuzhou University, Fuzhou 350116, China;3. Fuqing Branch of Fujian Normal University, Fuzhou 350300, China)
Virtual surgery is an important application in computer graphics. The UV mapping method of 3D organic model is a hot topic in the field of virtual surgery. UV mapping is to map a 2D texture to a 3D model. The traditional UV mapping method of liver model is to map the coordinates of 2D texture to the grid vertices of 3D liver model. In this paper, a new UV mapping method for 3D liver model is proposed. This method makes the UV map be independent of the surface of the mesh, which can effectively reduce the amount of GPU computation and reduce the rendering time, and the same texture image can be applied to several similar 3D liver models with different resolutions, fully reflecting the personalized liver. It is of great significance to study the individual in virtual surgery.
virtual surgery; computer graphics; liver;UV mapping; individualization
TP391.41
A
10.19358/j.issn.1674- 7720.2017.16.006
高聰,陳國(guó)棟,王娜.三維肝臟模型個(gè)性化UV映射方法研究[J].微型機(jī)與應(yīng)用,2017,36(16):19-22.
2017-02-22)
高聰(1992-),男,碩士研究生,主要研究方向:計(jì)算機(jī)圖形學(xué)、虛擬現(xiàn)實(shí)技術(shù)。
陳國(guó)棟(1979-),通信作者,男,博士,副研究員,主要研究方向:計(jì)算機(jī)圖形學(xué)、虛擬現(xiàn)實(shí)技術(shù)。E-mail: fzucgd@163.com。
王娜(1978-),女,碩士,副教授,主要研究方向:計(jì)算機(jī)圖形學(xué)、虛擬現(xiàn)實(shí)技術(shù)。