必威电竞|足球世界杯竞猜平台

立體渲染
來源:互聯網

立體渲染(Volume rendering),又稱為立體繪制,是一種用于顯示離散三維采樣數據集的二維投影的技術。

簡介

一個典型的三維數據集是 CT或者MRI采集的一組二維切面圖像。通常這些數據是按照一定規則如每毫米一個切面,并且通常有一定數目的圖像像素。這是一個常見的立體晶格的例子,每個體素用當前體素附近區域的采樣值表示。

為了渲染三維數據集的二維投影,首先需要定義相機相對于立體的空間位置。另外,需要定義每個點即體素的不透明性以及顏色,這通常使用RGBA(紅色, green, 藍色, alpha)傳遞函數定義每個體素可能值對應的 RGBA 值。

通過提取立體中等值的曲面并且將它們作為多邊形進行渲染,或者直接將立體作為數據塊進行渲染,這兩種方法都可以使立體可見。Marching Cubes 算法是從立體數據中提取曲面的常用技術。直接立體渲染是一件計算量很大的工作,可以用幾種不同的方法來實現。

直接立體渲染

直接立體渲染要求每個采樣值都必須映射到對應的不透明性以及顏色,這是通過一個“傳遞函數”實現的,這個傳遞函數可能是簡單的斜面、也可能是分段線性函數或這是任意的表格。一旦轉換到RGBA值之后,對應的 RGBA 結果就會映射到幀緩沖中對應的像素。根據渲染技術的不同這個做法也有所不同。

使用多種技術的組合也是可行的。例如去除扭曲的實現可以用紋理硬件在屏幕外的緩存中繪制排列好的片斷。

立體光線投射

投影圖像最簡單的方法就是立體光線投射。在這種方法中,每個圖像點都生成對應的光線。按照一個簡單的照相機模型,光線從照相機(通常是眼睛位置)中心開始投射,經過照相機與需要渲染的立體之間的假象平面上的圖像。光線在立體的邊界進行剪切以節約處理時間,然后在整個立體空間上按照一定規則對光線進行采樣。在每個采樣點數據進行插值計算,經過傳遞函數變換成 RGBA 采樣值,這個采樣添加到光線的 RGBA 數據集中,然后重復這個過程直到光線抵達立體內部。RGBA 顏色轉換到 RGB 顏色并且放到對應的圖像像素上。屏幕上的每個像素都重復這個過程直到形成完整的圖像。

Splatting

這是一個通過犧牲質量換取速度的方法。每個立體元素都象雪球那樣按照從后到前的順序 splatted 到觀察表面。這些 splats 按照顏色與透明度特性在直徑方向正態即高斯變化渲染成圓盤。平盤與其它特性也根據應用的不同而不同。

Shear Warp

一個新的立體渲染實現方法是 Philippe Lacroute 與 Marc Levoy 一起開發的在論文“使用 Shear-Warp 分解觀察角度變換的快速立體渲染”中描述的方法。在這種技術中,觀察角度進行變換使得最近的立體表面成為后臺圖像緩沖區按照體素到像素的固定尺度排列的軸,然后渲染的立體按照方便的內存排列、固定的縮放及過渡因子放到這個緩沖區中。一旦立體的所有的切片已經渲染完畢,緩沖數據就會轉換到在前臺顯示圖像中所要的方向及尺度。

這種方法通過犧牲采樣精度得到了相對較快的處理速度,但是這種方法生成的圖像潛在質量要比光線投射方法生成的圖像質量差。

紋理映射

許多3D軟件系統都通過紋理映射將圖像、紋理用于幾何物體。日常所用 PC 的圖形處理卡處理紋理非常快速并且能夠高效地渲染三維立體切片,并且具有實時的交互能力。

這些切片可以根據立體進行排列然后按照觀察者的角度進行渲染,也可以根據觀察平面進行排列然后從立體中未經排列的切片進行采樣。對于第二種技術來說需要圖形硬件支持三維紋理處理。

根據立體排列紋理的方式能夠生成合理的圖像質量,但是當立體旋轉的時候經常會產生明顯的過渡。根據視角排列紋理的方式可以得到類似于光線投射的高質量圖像,并且采樣圖案也是相同的。

硬件加速立體渲染

最近出現的一項加速渲染的技術是使用圖形處理卡加速如光線投射這樣的傳統立體渲染算法。從 2000年左右開始出現的可編程Pixel shaders開始,人們逐漸認識到多點并行運算的威力并且開始在圖形芯片上執行更加普通的計算。曾經一度叫作“寄存器組合器”的 pixel shaders 能夠隨機地讀寫紋理內存并且執行一些基本的算術與邏輯計算。這些現在稱為GPU 的單指令流多數據流處理器用于如光線跟蹤多邊形以及信號處理中的普通計算。在 OpenGL2.0 版上,pixel shaders 現在能夠作為多指令流多數據流處理器使用并且能夠獨立進行分支切換,能夠使用高達 48 個并行處理單元,并且能夠使用高達 1 GB 的紋理內存以及 high bit depth 數字格式。通過這樣的能力,理論上象立體光線投射或者 CT 重建這樣的算法都能夠得到極大的加速。

優化技術

跳過空閑空間

立體渲染系統經常帶有一個識別立體區域是否包含可見物體的部分,這個信息可以用于避免在這些透明區域進行渲染。

光線提前終止

這是按照從前到后順序渲染立體的時候所用的一項技術。對于穿過一個像素的光線,一旦達到一定程度的濃度,那么后面的采樣點對于這點來說就起不到多大作用,因此可以忽略。

八叉樹及二元空間分割

使用如八叉樹或者二元空間分割樹的層次結構對于立體數據壓縮以及優化立體光線投影過程來說都非常有用。

立體分割

通過分割出渲染前不需要關心的部分,就可以大幅度地減少光線投影或者紋理混合所需要的計算量。

參考資料 >

生活家百科家居網