0

我正在 c#.net 中开发一个 dicom 查看器。我需要一点帮助来计算 Pixel 的 HU 值。我知道计算 HU 的公式是

  HU = Pixel Value * Rescale Slope + Rescale Intercept 

我做了一些计算并从我原来的 dicom 像素值中检索出来,但这并没有给我正确的 HU 值。我的问题是像素值到底是什么。任何人都可以帮我解决这个问题。

这是我的代码

 public void calculateHU(string x,string y)
        {
            Int32 intercept, slope,pix;
            intercept = -1024;
            slope = 1;
            int xx, yy;
            xx = Convert.ToInt32(x);
            yy = Convert.ToInt32(y);
            xx = xx +Convert.ToInt32( imagerect.X);
            yy = yy + Convert.ToInt32( imagerect.Y);
            pix =  getpixelvalue(xx,yy);
            double hu = pix * slope + intercept;

        }

        public Int32 getpixelvalue(int x, int y)
        {
            string c;
            c = pix16[imgno][y * bmd.width + x].ToString();
            return Convert.ToInt32(c);
        }
4

1 回答 1

2

如果像素表示 (0028,0103) 设置为 0(无符号),则像素数据值应为非负数。根据您的示例,截距和斜率分别为 -1024 和 1,原始像素值必须为 -4 才能产生 HU 值 -1028。

如果您期望获得低至 -1028 的结果 HU 值,则很可能通过一个足够负的 Rescale Intercept 值(以及可能的 Rescale Slope)值来管理。

不是硬编码 Rescale Intercept 和 Slope,而是从图像中获取这些值,分别标记 (0028,1052) 和 (0028,1053),并应用于 HU 计算。

于 2012-05-23T11:57:17.103 回答