摘 要:針對三維重建表面模型的任意切面紋理顯示,分為3D紋理采樣和切面紋理映射兩階段。前者通過模型包圍盒及模型橫斷面輪廓定位紋理部位并去掉圖像背景,經采樣形成多精度3D紋理;后者先計算剖切平面和模型及紋理空間中包圍盒交面,然后利用向量疊加原理及立方體線性插值方法快速提取紋理空間的交面圖像,經Alpha測試后映射到模型空間相應切面上,形成具有切面紋理的剖切模型。實驗表明,該方法克服了面繪制技術不能體現內部數據的缺點,有效地提高了大數據量模型任意剖切面紋理繪制速度。
關鍵詞:三維重建; 面繪制; 3D紋理; 任意剖切; 紋理映射
中圖分類號:TP391.41文獻標志碼:A
文章編號:1001-3695(2009)09-3548-02
doi:10.3969/j.issn.1001-3695.2009.09.100
Effective method for arbitrary image of clip plane extraction and mapping on 3D reconstructed surface
FU You-jia1,2, HONG Xiong1, ZHANG Jian-xun1, YANG Chang-hui1
(1 .School of Computer Science Technology, Chongqing University of Technology, Chongqing 400050, China;2 .College of Optoelectronic Engineering, Chongqing University, Chongqing 400038, China)
Abstract:Focused on the display of the texture on the arbitrary clip plane of 3D reconstructed surface model, this paper presented a two-phase approach to solve the issue, namely, the 3D texture sampling phase and the section texture mapping phase. In the first phase, determined the 3D texture’s position and removed its background by the bounding box and the transect outline of the cutting model, then weaved the multi-precision 3D texture by sampling. In the second phase, computed the intersecting polygons of cutting plane and the bounding boxes in the model and texture spaces, and the fast abstracted image of the texture space on it using vector superposition principle and cubic linear interpolation. Then mapped the section texture to the clip section in the model space after Alpha testing, thus formed the cutting model with section texture. Experiments show that the proposed method solves the problem that inner data is invisible in surface rendering, and effectively improves the texture rendering speed of arbitrary clip plane.
Key words:3D reconstruction; surface rendering; 3D texture; arbitrary cutting; texture mapping
根據圖像進行三維重建是科學計算可視化的一個重要研究和應用領域。三維重建的方法大體可分為體繪制和表面繪制兩類。體繪制方法由于直接基于體數據進行顯示,可以方便地進行物體中任意剖面圖像的提取,如文獻[1],但受到顯卡硬件、圖像數據大小的約束,其發展和應用受到限制;面繪制方法由于只能表現物體的表面,對于涉及到生物體內部器官的任意剖切,其圖像的生成往往要通過大量插值運算,因而存在速度慢、精度低、實現困難等缺點,目前以三個正交醫學切面進行剖切居多,如文獻[2]。本文利用三維重建后的表面模型橫斷面剖切輪廓,提出了一種可以進行任意切面圖像多精度紋理提取及映射的有效方法,在計算機上實現了經表面繪制而成的中國高清數字豬內部器官的任意快速切面觀察。
1 材料
數字化豬研究是畜牧科學、生命科學和信息科學的交叉領域,豬種標本及各器官序列輪廓由重慶市畜牧科學研究院提供,標本原始切片數據由第三軍醫大學提供。本研究所用原始數據由高精度數碼相機采集橫斷面圖像而成,切片間距為0.5 mm,片內像素數目為4064×2704,色深24 bit,總片數為2 315片,文件格式為TIFF,數據量約為70 GB。
2 器官多精度3D紋理提取原理
2.1 多精度3D紋理提取流程
為了能在計算機上實現數字化豬內部器官的任意剖切紋理快速顯示,整個剖切過程分為器官3D紋理提取和器官快速剖分兩個階段。圖像精度高,可以細致地觀察數字化豬內部結構,但數據量大的特點又使剖分時無法全部加載到內存。針對以上矛盾,在保證顯示質量及存儲空間的條件下,對配準后的原始圖像首先根據模型AABB(axis aligned bounding box)去掉多余部分,再按不同器官的大小進行相應比例縮小,采樣形成合適的多精度3D紋理。表面模型采用NMC算法[3]生成,模型與原始切片圖像坐標一致,保證了模型空間和圖像空間的數據相互匹配。器官多精度3D紋理提取流程如圖1所示,圖中細箭頭代表數據流向,粗箭頭代表處理流向。
2.2 器官橫斷面輪廓提取及內外部標志
器官橫斷面圖像精度很高,分辨率為8 pixel/mm,切片間距0.5 mm合4 pixel,如果縱向采用與斷面相同精度的分辨率,則切片之間需插值生成中間切片。考慮到器官輪廓斷面復雜,如果直接用分割的輪廓插值生成中間切片輪廓,不僅算法復雜,而且容易出錯。本文用橫斷面平面剖切模型得到需要的器官斷面輪廓,保證輪廓的正確性。
根據剖切對象的表面數據建立模型空間的AABB樹。AABB樹是利用AABB構建的層次結構二叉樹[4],其目的在于減少需要檢測的對象三角面數量。利用AABB樹及文獻[5]的剖切平面與三角形面片求交方法快速求出橫切面和表面模型三角面網格的交線段,得到輪廓的離散線段。由于橫斷面是實物的實際剖切面,橫斷面上的輪廓一定是簡單的多連通多邊形,將這些線段按照相對位置關系進行排序,然后將其首尾連接并去掉共線的中間頂點得到封閉的二維平面多邊形鏈,采用改進的有效邊表掃描線算法[6]識別填充多邊形內部,該算法同時能自動識別多邊形內部的孔洞。
2.3 器官多精度3D紋理提取及采樣
剖切對象AABB樹的根包圍盒可以定位其在連續切片集中的位置,從而去掉圖像集中與該器官無關部分,結合紋理采樣比例確定需提取的器官橫切面圖像片數。圖像提取時,中間切片的圖像根據其距前后切片的距離經線性插值生成;將提取后的圖像與相應的橫斷面輪廓進行比較,過濾掉背景,其RGB值置0;最后根據采樣比例采樣,形成相應的3D紋理數據。
3 模型剖切面紋理映射實現原理
3.1 器官剖切面紋理提取及映射流程
器官模型切面紋理快速提取及映射流程如圖2所示。器官3D紋理由整體采樣比例提取,故器官紋理空間和模型空間的AABB具有相似性,與切平面的交面為相似多邊形。計算紋理坐標既可以在紋理空間,也可以在模型空間中進行。考慮到頂點紋理坐標和空間坐標的一致性,本文在模型空間計算紋理坐標。
3.2 切平面多邊形的生成
3.2.1 切平面多邊形頂點的生成
本文把剖切平面和模型及紋理的AABB交線構成的多邊形稱為切平面多邊形。切平面多邊形頂點生成方法如下:將包圍盒的每個面分成兩個三角形,用前面所述方法求出切平面和三角面片的交線段,將這些線段按照相對位置關系進行排序,然后將其首尾連接并去掉共線的中間頂點得到切平面多邊形,將其頂點順次記錄進頂點表。
3.2.2 切平面多邊形方向的確定
規定切平面法線n的方向為切平面多邊形方向,切平面多邊形頂點順序采用右手螺旋法則,當其方向與切平面法線方向不一致時,需將頂點表逆序。由于平面和AABB的相交面一定是凸多邊形,采用向量法即可判斷切平面頂點順序與切平面法線的關系:從頂點表中順序取三個頂點v0、v1和v2,設d1=v1-v0,d2=v2-v1,則當d1×d2×n>0時,多邊形方向和剖切面法線方向相同,反之則相反。
3.3 生成切平面多邊形外接矩形
由于二維圖像尺寸為矩形,必須根據3D紋理空間的切平面多邊形計算其外接矩形,在此基礎上提取剖面紋理圖像和計算紋理坐標。將剖切面法線作為新坐標系X′Y′Z′的Z′軸,新坐標原點與原坐標系XYZ原點重合。根據歐拉定理,原坐標系繞剖切面法線及原Z軸所成平面的垂線旋轉θ角度后與新坐標系重合(θ為Z與Z′的夾角),設原坐標系到新坐標系的轉換矩陣為R,逆陣為R-1。將切平面多邊形各頂點vi分別乘以矩陣R-1,轉換到新坐標系X′Y′Z′中,各頂點z′的坐標相同,作其在X′Y′平面的外接矩形作為切面紋理圖像尺寸。
3.4 切平面多邊形紋理坐標的計算
設切平面多邊形頂點vi在新坐標系X′Y′Z′中的坐標為(x′,y′,z′),切面紋理圖像寬為width,高為hight,則與vi相對應的頂點紋理坐標(s,t)為
s=x′/(width-1)(1)
t=y′/(hight-1)(2)
3.5 剖切面圖像的提取
設新坐標系X′Y′Z′中紋理圖像的左下角及右上角坐標分別為P′(x′1,y′1,z′)和 Q′(x′2,y′2,z′),則圖像寬高方向單位向量分別為d′w=normalize((x′2,y′1,z′)-P′),d′h=normalize((x′1,y′2,z′)-P′);在原坐標系XYZ中,紋理圖像左下角坐標P=R×P′,寬高方向單位向量dw=R×d′w,dh=R×d′h。剖面紋理圖像采用RGBA形式,A為透明度,像素RGB值采用立方體線性插值方法提取。當插值得到的RGB不全為0時,A=255,否則A=0。剖面紋理提取偽碼如下:
for (int j=0; j for (int i=0; i {//計算圖像中像素S(i, j)在坐標系XYZ中的坐標 S(x,y,z)=P+dw*i+dh* j; if 坐標S(x,y,z)不在剖切對象3D紋理包圍盒內 像素S(i, j)的RGB的值置0; else 用立方體線性插值法計算S(i, j)的RGB值; if 像素S(i, j)的RGB值為0 S(i, j)的A=255; else S(i, j)的A=0; } 3.6 模型裁剪、剖面紋理映射及Alpha測試 筆者用VC++在OpenGL平臺上進行模型剖切部分裁剪、紋理映射及Alpha測試,調用glClipPlane函數進行模型裁剪。剖面紋理映射包括紋理創建、紋理綁定、mipmaps設置。紋理渲染包括激活紋理映射、打開混合模式、指定混合方式、激活Alpha測試、指定Alpha測試方式。粘貼紋理前需說明紋理相對于片元如何排列,即指定切平面多邊形的紋理坐標和幾何坐標。由于剖切面是凸多邊形,無須進行三角剖分,用GL_POLYGON模式順序繪制多邊形各頂點即可。 4 實驗結果與分析 對整豬和心臟分別進行剖切實驗。整豬剖切時,采樣讀取整豬1 100張RGB橫斷面切片(位于原始切片1~2200),提取縮小8倍比例后的3D紋理圖像片內像素為428×320,色深24 bit,文件大小約430 MB;心臟剖切時,讀取心臟251張RGB橫斷面切片(位于原始切片683~933),提取縮小2倍比例后的3D紋理圖像片內像素為459×396,色深24 bit,插值后共501片,文件大小約260 MB。操作者通過切平面控制面板調整切平面的方向和位置,實現對相應對象的任意切割和連續切割。任意切割采用高精度的立方體三線性插值抽取剖切面紋理保證顯示效果;任意連續切割采用速度較快、精度略低的立方體鄰近插值抽取切面紋理,從而在顯示速度和精度上達到平衡。圖3是采用本文方法剖切的整豬及心臟部分,圖中實線框為剖切對象模型AABB,虛線框為切平面多邊形。 5 結束語 本文為基于三維重建表面的任意切面紋理提取及映射提供了有效的方法,創新點為: a)通過多精度紋理采樣為解決大數據量3D紋理顯示質量和內存空間的矛盾提供一種簡單有效的方法; b)通過將紋理貼在切平面多邊形上而不是在斷面輪廓復雜的模型剖面上,避免了復雜輪廓剖面的多邊形鏈化、三角化等大量運算,從而較大幅度地提高了運行速度。 實踐證明,該方法能準確、快速地對數字化豬各器官進行任意剖切面的紋理顯示。 參考文獻: [1]潘群娜, 熊小飛. 基于人腦部體數據的任意切面研究[J]. 微計算機信息, 2007, 23(19):269-273. [2]徐鵬, 堯德中. 一種在三個醫學剖面上任意切面圖像提取的有效方法[J]. 計算機應用, 2005, 25(2):320-325. [3]何暉光, 田捷, 趙明昌,等. 基于分割的三維醫學圖像表面重建算法[J]. 軟件學報, 2002, 13(2): 219-226. [4]GABRIEL Z. Real-time and exact collision detection for interactive virtual prototyping[C]//Proc of ASME Design Engineering Technical Conferences. New York:ASME,1997: 14-17. [5]張艷君, 葉伯生, 曾理湛. 基于醫學圖像序列輪廓線重建三維表面的改進算法[J].計算機工程與應用, 2004,40(13):215-218. [6]陳傳波, 陸楓. 計算機圖形學基礎[M]. 北京: 電子工業出版社, 2005: 125-127.