簡體   English   中英

光線投射體積渲染中的不透明度校正

[英]Opacity correction in Raycasting Volume Rendering

我想使用OpenGL、GLSL和C++實現高質量的光線投射體渲染 我使用圖像順序體積渲染。 在稱為compositing的光線投射體渲染步驟中,我使用以下公式(前后順序):

在此處輸入圖片說明

當我閱讀《實時體積圖形》一書第16頁時,我看到如果采樣率發生變化,我們需要進行不透明度校正:

在此處輸入圖片說明

並使用此不透明度值替換舊的不透明度值。在此公式中,在此處輸入圖片說明 是新的樣本距離,△x是舊的樣本距離。

我的問題是:如何在我的程序中確定△x

假設您的原始體積的分辨率為 V=(512, 256, 127) 然后當在 (rx, ry, rz) 的方向上投射光線時,樣本距離為 1/|r·V|。 但是,在您的 raycaster 中,您主要是過采樣,假設您以 3 倍的采樣距離 V'=(1526, 768, 384) 對體積進行采樣,過采樣的采樣距離為 1/|r·V'|,因此采樣率之比為1/3。 這是要添加的指數。

請注意,指數僅在低密度體積時才明顯,即在醫學圖像低對比度軟組織的情況下。 如果您正在對骨骼或致密組織進行成像,那么它幾乎沒有區別 (BTDT)。

datenwolf 是正確的,但缺少一條信息。 傳遞函數是標量值和顏色之間的映射。 在 RGBA 中,值的范圍在 0 和 1 之間。作為實現者,您可以選擇不透明度的實際值轉換為什么,這就是原始樣本距離的來源。

假設您有單位立方體,並且您選擇 2 個樣本,這些樣本轉換為 0.5 的樣本距離,如果您在與面正交的方向上跟蹤光線。 如果體積中各處的 alpha 值都是 0.1,則生成的 alpha 為 0.1 + 0.1 * (1.0 -0.1) = 0.19。 如果您選擇了 3 個樣本,則生成的 alpha 是上一個選擇的另一個組合:0.19 + 0.1 * (1-0.19) = 0.271。 因此,您對原始樣本距離的選擇會影響結果。 明智地選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM