因此,Im試圖主要針對使用CT射線掃描的醫學圖像(例如CT掃描和MRI圖像)實現體積渲染器。我正在使用《實時體積圖形》這本書和this教程作為參考。
我正在嘗試僅渲染灰度圖像。我知道pvm2raw
部分為我們提供了8位原始文件,因此每個體素的等值都在[0-255]範圍內。因此,我決定在採樣時將此單一值映射到所有顏色通道rgba
上。
我正在獲取here的數據集。您可以在this視頻中看到我的渲染器的結果(請檢查我的帖子的結尾,對不起,因為我已經在我的reddit帖子中上傳了,所以沒有提供直接鏈接)
從側面可以看到,龍蝦數據集會拉伸。我的第一個猜測是我沒有正確考慮縱橫比。我嘗試縮放"邊界"框以解決寬高比,然後根據該比例調整步長。我也嘗試過完全忽略長寬比。兩者都給出相似的圖像。
我嘗試渲染更多的數據集,例如"膝蓋","布魯斯的頭"," DTI掃描"等,但是這些數據集甚至都沒有提供圖像。到處只有隨機的聲音。這是"布魯斯的頭"的一個例子
統一數據集和非統一數據集都會發生這種情況。如果某些數據集已像我的視頻中的"腳"一樣正確渲染,這應該意味著該特定數據集本身而不是核心算法。儘管如此,還是提供了代碼鏈接。如果有人可以指出一些錯誤,我將不勝感激。
計算著色器的鏈接是here。主要功能是rayMarchVolume
。我沒有將根邊界框縮放到體積的尺寸,而是將其標準化為(0-1)
,考慮了長寬比(0, ar)
並進行了調整,使其位於中心(-ar/2, ar/2)
中。函數cartesianToTextureCoord(vec4 point)
解釋了這一事實,並返回了0-1範圍內的紋理坐標
編輯:-如果您只是因為在建議中而在此處發布答案,可以在Reddit上發布,然後在解決問題後可以在此處發布答案
更新:-我在github上為該項目提供了一個發行版。如果有人願意幫助我,他可以下載發行版並運行程序。由於該算法完全基於計算著色器內部,因此您可以輕鬆更改文件並當場測試您的發現。謝謝。