Hu Calculation DICOM中的像素值是多少

时间:2012-05-21 13:44:42

标签: c# winforms dicom

我正在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);
        }

1 个答案:

答案 0 :(得分:2)

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

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

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