體積渲染-數據集無法正確渲染


1

因此,Im試圖主要針對使用CT射線掃描的醫學圖像(例如CT掃描和MRI圖像)實現體積渲染器。我正在使用《實時體積圖形》這本書和this教程作為參考。

我正在嘗試僅渲染灰度圖像。我知道pvm2raw部分為我們提供了8位原始文件,因此每個體素的等值都在[0-255]範圍內。因此,我決定在採樣時將此單一值映射到所有顏色通道rgba上。

我正在獲取here的數據集。您可以在this視頻中看到我的渲染器的結果(請檢查我的帖子的結尾,對不起,因為我已經在我的reddit帖子中上傳了,所以沒有提供直接鏈接)

從側面可以看到,龍蝦數據集會拉伸。我的第一個猜測是我沒有正確考慮縱橫比。我嘗試縮放"邊界"框以解決寬高比,然後根據該比例調整步長。我也嘗試過完全忽略長寬比。兩者都給出相似的圖像。

我嘗試渲染更多的數據集,例如"膝蓋","布魯斯的頭"," DTI掃描"等,但是這些數據集甚至都沒有提供圖像。到處只有隨機的聲音。這是"布魯斯的頭"的一個例子

enter image description here

統一數據集和非統一數據集都會發生這種情況。如果某些數據集已像我的視頻中的"腳"一樣正確渲染,這應該意味著該特定數據集本身而不是核心算法。儘管如此,還是提供了代碼鏈接。如果有人可以指出一些錯誤,我將不勝感激。

計算著色器的鏈接是here。主要功能是rayMarchVolume。我沒有將根邊界框縮放到體積的尺寸,而是將其標準化為(0-1),考慮了長寬比(0, ar)並進行了調整,使其位於中心(-ar/2, ar/2)中。函數cartesianToTextureCoord(vec4 point)解釋了這一事實,並返回了0-1範圍內的紋理坐標

編輯:-如果您只是因為在建議中而在此處發布答案,可以在Reddit上發布,然後在解決問題後可以在此處發布答案

更新:-我在github上為該項目提供了一個發行版。如果有人願意幫助我,他可以下載發行版並運行程序。由於該算法完全基於計算著色器內部,因此您可以輕鬆更改文件並當場測試您的發現。謝謝。

0

Sorry to post such a silly solution but apparently the problem was reading 16 bit uint data into 8bit uint array. This was the reason for inexplainable noise, interleaving and other artifacts.

After I explored more about what the medical datasets actually represent and what flavors they come in (8,16,32bit) I managed to solve the problem.