簡體   English   中英

使用EvilDICOM的錯誤輸出像素顏色(灰度)

[英]Wrong output pixel colors (grayscale) using EvilDICOM

我正在使用Evil-DICOM來統一構造2d圖像(即texture2d)。 與我從其他DICOM觀看者那里得到的相比,輸出像素值是錯誤的。 我是DICOM開發的新手,無法弄清楚我做錯了什么。 我已經堅持了好幾個星期。 任何幫助表示贊賞。

我正在使用以下公式:
https://www.dabsoft.ch/dicom/3/C.11.2.1.2/

我也從以下閱讀此答案:
如何在C#中使用EvilDICOM顯示DICOM圖像?

有關我正在使用的DICOM文件的已知信息:

分配位數:16
數位存儲:16
高位:15
行,列:512
像素表示形式:0(即未壓縮)
窗口中心:40
窗寬:350
重新縮放攔截:-1024
重新調整坡度:1

//Convert pixel data to 8 bit grayscale
for (int i = 0; i < pixelData.Count; i += 2)
{
    //original data - 16 bits unsigned
    ushort pixel = (ushort)(pixelData[i] * 0xFF + pixelData[i + 1]);

    double valgray = pixel;
    valgray = slope * valgray + intercept;    //modality lut

    if (valgray <= level - 0.5 - (window - 1)/2)
    {
        valgray = 0;
    }
    else if (valgray > level - 0.5 + (window - 1)/2)
    {
        valgray = 255;
    }
    else
    {
        valgray = ((valgray - (level - 0.5)) / (window - 1) + 0.5);
    }

    //Assign valgray to RGBA
    colors[i / 2].r = (byte)(valgray);
    colors[i / 2].g = (byte)(valgray);
    colors[i / 2].b = (byte)(valgray);
    colors[i / 2].a = 0xFF    //Alpha = max
}

左邊是我的輸出,右邊是其他DICOM查看器的輸出https://drive.google.com/file/d/1IjL48_iZDXAVi4_gzG6fLN3A2td2rwfS/view?usp=sharing

我得到了pixeldata中字節的順序倒置了。 像素值應為:

ushort pixel = (ushort)(pixelData[i + 1] * 256 + pixelData[i]);

暫無
暫無

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

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