zoukankan      html  css  js  c++  java
  • DICOM医学图像窗口变换的加速算法

    详见:http://pan.baidu.com/s/1gfFLbJ9

    DICOM医学图像窗口变换的加速算法*

    张尤赛 ,陈福民

     ( 同济大学计算中心, 上海 200092 )

    (华东船舶工业学院电子与信息系,江苏 镇江 212003)

    E_mail:yszhang100@sina.com

     

    摘 要:研究DICOM医学图像的显示技术,提出了一种图象窗口变换的加速算法,该算法简洁、实用、加速效果理想, 可以在动态连续调节图像窗值的情况下实时地显示DICOM医学图像。

    关键词: DICOM; 医学图像;DIB;窗口变换

    中图分类号: TP391  TP445-39        文献标识码:A

     

    A Fast Algorithm of the Window Transformation for DICOM Medical Images

    Zhang Yousai  Chen Fumin 

     ( Center of Computer, Tongji University,  Shanghai  200092  )

    ( Dept. of Electronics and Information, East China Shipbuilding Institute, Zhenjiang Jiangsu, 212003 )

    Abstract:  This paper introduces the display approach of DICOM medical images, and presents a fast algorithm of the window transformation of images, which is able to realtimely display DICOM medical images under the condition of continuously adjusting window values of them.

    Key words:  DICOM; medical image; DIB; window transformation

     


    1         引言

    90年代中期,美国放射学会(American College of Radiology,ACR)和美国国家电器制造协会(National Electrical Manufactures Association,NEMA)制定了医学数字影像存档和传输标准DICOM(Digital Imaging and Communication in Medicine)3.0[1],为不同厂家所生产的各种医疗影像设备(如CT、核磁共振、内窥镜、超声波等)提供了接口标准和交互协议,大力推动了PACS (Picture Archiving and Communication System)的发展及应用。由于通用计算机并不直接支持DICOM医学图像的显示,因此DICOM医学图像的计算机实时显示技术是PACS系统的关键技术之一[2]。

    本文在简单介绍DICOM文件基本格式的基础上,研究了基于DICOM医学图像的显示技术,重点讨论了DICOM医学图像窗口变换的加速算法,实现了动态连续调节(如利用鼠标拖动)图像窗值时DICOM医学图像的实时显示。

    2   DICOM文件的基本格式

    DICOM 3.0标准以信息对象、业务类描述的形式,采用规定的数据结构对各种医学信息和图像数据进行编码,形成标准的DICOM文件格式。其数据结构采用数据元素(Data Element)的存储方式,每个数据元素均由标签(Tag)、值的类型(Value Representation,VR)、值域的长度 (Value Length) 和值域(Value Field)四个基本单元组成,如图1所示。其中,“标签”作为数据元素的标识符唯一地定义数据元素的物理意义(如病人姓名、年龄、设备、图像类型、图像窗值、图像数据等);“值的类型”是取决于DICOM语义的可选项,它描述了数据元素值域的数据类型(如字符串、整型数、浮点数等);“值域的长度”定义了“值域”的字节数;“值域”则含有该数据元素的值。

     DICOM提供了三种语义:IMPLICIT VR、BIG ENDIAN和LITTLE ENDIAN。这些语义规定了数据元素的“值的类型”项是否出现、“值域的长度”项的字节数以及字节在内存中的存储次序等。

    目前各种医学影像设备(如CT、MRI等)通常都带有DICOM标准数字接口,可以方便地获得DICOM文件,对于其它非标准的医学图像文件也可以通过计算机处理转换为DICOM的格式。

    3   DICOM医学图像的显示方法

    由于在通用计算机中不能直接支持DICOM医学图像的显示,因此需将DICOM文件转换为其它计算机所支持的文件格式,如设备无关位图(Device Independent Bitmap, DIB)等。

    3.1 DIB位图

    DIB位图[3]是计算机中普遍应用的位图文件格式,如图2所示。位图文件头说明了文件的组成信息;位图信息头说明了图像数据的基本信息;颜色表则描述了图像显示的色彩信息,即红、绿、蓝三颜色分量。

    由于在内存中,只需要位图信息头、颜色表和图像数据即可以显示位图,因此在将DICOM医学图像转换为DIB位图时,只需要根据DICOM文件的相关数据元素完成上述的数据结构和图像数据的转换。由于医学影像一般为灰度图像,因此颜色表中每一个像素的三个颜色分量rgbBlue = rgbGreen = rgbRed。由此可见,采用 DIB位图显示灰度图像的最大灰度级为256级。

    3.2  图象数据的窗口变换

    由于医学图像数据动态范围大(像素深度通常不低于4096灰度级),因此,一般显示器很难提供如此高的动态范围一次显示整幅图像的全部信息细节。为了逼真地显示出医学图像的全部信息,可以采用下述图象数据窗口变换的方法[4]。

    所谓图象数据的窗口变换是指通过限定一个数据观察窗口,将窗口区域的图像数据线性地转换到显示器的最大显示范围内,高于或低于窗口上下限的图像数据则分别设置为最亮或最暗的显示值。这样通过动态地调节窗口的窗宽(图像数据的显示范围)和窗位(显示的图像数据的中心值),可以依次观察到医学图像的全部信息细节。图3为窗口变换图像数据与显示值的关系图,图中V为图像数据,G为显示器显示值,gm为显示器的最大显示值(对应于DIB位图rgbBlue = rgbGreen = rgbRed = 255),为窗宽,为窗位,(1)式为转换公式。

    3.3 窗口变换的加速算法

    在利用图像窗值对DICOM医学图像数据作窗口变换时,如果直接用(1)式对所有图像数据(每个像素点)进行变换,则会明显影响图像的显示速度,在视觉上产生延迟。为此,我们提出了下述快速查表的加速算法,以满足动态连续调节图像窗值(如利用鼠标拖动)下实时显示图像的要求。

    首先,在打开DICOM医学图像时,根据DICOM数据元素得到图像数据的最大值和最小值以及图像窗值,获得图像数据的分布和对应于(1)式的转换区域(如图4所示),然后根据(1)式在内存中建立一张图像数据转换表,最后采用查表的方法将DICOM图像数据转换为显示数值。这里假设图像显示数值为{0,1,2,…,255}共256级。

    图4窗口变换的加速算法的原理图

    从图中可以看出,在形成图像数据转换表时,只需在DICOM图像数据的值域内(而不是对所有的像素)按(1)式进行一次计算,然后再利用图像数据指针查表的方法即可实现DICOM图像数据的窗口变换。而且,在动态调节窗值时,无须重新计算整个转换表,只要对窗宽变化范围内的表数据作局部调整。下面是用Visual C++编写的快速查表算法原理程序。程序中采用循环叠加窗口变换斜率Ratio的方法,将(1)式中的乘法全部转换为加法,进一步提高转换速度。

    float Wmin = c – w/2;   // c:窗位

    float Wmax = c + w/2;  //w:窗宽

    float Ratio = 255/w;      //窗口变换的斜率

    float TableData = 0;   //窗口下沿数据归零

    /*形成图像数据转换表*/

    // Pixelmin、Pixelmax:DICOM图像数据的极值

    //pTable:转换表的数据指针

    int i;

    for ( i = Pixelmin; i <= Pixelmax; i++, pTable++ )

    {

    if ( i < Wmin )

          *pTable = 0;

    else if ( I < Wmax )

    {

    *pTable = TableData;

    TableData = TableData + Ratio;

    }

        else

              *pTable = 255;

    /*调整转换表数据指针到Pixel = 0 处*/

    pTable = pTable – ( Pixelmax + 1 );

    /*图像数据窗口变换*/

    //AllPixels:图像像素总数;pDICOMData、pDIBData://DICOM、DIB图像的数据指针

    unsigned int j;

    for ( j=0; j<AllPixels;

    j++, pDIBData++, pDICOMData++ )

    *pDIBData = *( pTable + *pDICOMData );

    图5是利用该算法所得到的不同窗值下的腹腔CT断层图像。图6就是采用图7所示的窗口曲线所得到图5(b)的反白图像(负片)。

    (a) w:342 c:28           (b) w:65 c:20      

    图5 不同窗值下的腹腔CT图像

    图6 图4 (b)的负片   图7 图像反白窗口曲线

    4   结果分析

    窗口加速算法将数据处理范围从图像的全部像素缩小到图像数据的值域内,对于512×512像素、4096灰度级的图像,数据量减少了64倍;程序中采用循环叠加窗口变换斜率,将(1)式中的乘法运算转换为加法运算,窗宽愈宽加速效果愈明显,如窗宽为500时,可以减少500次乘法。

    5   结束语

    本文基于DICOM 3.0标准,采用加窗显示技术在通用计算机中实现了DICOM医学图像的实时显示。文中提出的图像窗口变换的加速算法缩小了图像数据的处理范围,采用循环叠加代替乘法运算,从两个方面大大减少了图像数据转换的计算量,明显提高了显示速度,达到了窗值动态连续调节下实时显示的要求。该算法简洁、实用、加速效果理想,可推广应用到其它类似场合。

    参考文献

    [1] National Electrical Manufacturers Association, Digital Imaging and Communications in Medicine, PS 3.5-1998: 9-34.

    [2] 贾克斌、沈波,实现医学影象存档和传输系统中的若干关键技术,中国图象图形学报,2000.7

    [3]王华, 等. Visual C++ 6.0 编程实例与技巧. 机械工业出版社, 1999. 223-231.

    [4] 康晓东, 现代医学影像技术. 天津科技翻译出版公司, 2000. 198-199.



    *基金项目:上海市科学技术发展基金项目资助(编号:015115045)

    作者简介:张尤赛,副教授,博士生,主要研究方向为图象处理和三维可视化。陈福民,教授,博士生导师,主要研究方向为虚拟现实、网络多媒体、图象处理。

  • 相关阅读:
    WCF和SOA的简介
    .NET 反射应用
    ASP.NET---如何使用web api创建web服务
    获得N位数字字母随机组合
    git的初步使用
    js贪吃蛇
    python多线程
    2013-12-13
    2012-12-12
    2013-12-5
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/5728486.html
Copyright © 2011-2022 走看看