Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Dicom输出像素颜色(灰度)错误_C#_Evil Dicom - Fatal编程技术网

C# 使用Dicom输出像素颜色(灰度)错误

C# 使用Dicom输出像素颜色(灰度)错误,c#,evil-dicom,C#,Evil Dicom,我正在使用邪恶的DICOM构建统一的2d图像(即纹理2d)。与我从其他DICOM查看器获得的结果相比,输出像素值是错误的。我是DICOM开发新手,不知道自己做错了什么。我已经被困在这几个星期了。感谢您的帮助 我使用以下公式: 我还从以下地方读到了这个答案: 关于我正在使用的DICOM文件的已知信息: 分配的位:16 存储位:16 高位:15 行、列:512 像素表示:0(即未压缩) 窗口中心:40 窗宽:350 重缩放截距:-1024 重新缩放坡度:1 //Convert pixel dat

我正在使用邪恶的DICOM构建统一的2d图像(即纹理2d)。与我从其他DICOM查看器获得的结果相比,输出像素值是错误的。我是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
}
//将像素数据转换为8位灰度
对于(int i=0;i
左边是我的输出,右边是其他DICOM查看器的输出

我将像素数据中的字节顺序颠倒过来。像素值应为:

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