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

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

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

张尤赛 ,陈福民

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

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

E_mail:[email protected]

 

摘 要:研究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)

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

时间: 2024-07-30 07:10:30

DICOM医学图像窗口变换的加速算法的相关文章

ARCore中Pose类变换点的算法实现

ARCore中Pose类变换点的算法实现,主要分为两步,分别是平移和旋转. 1. 旋转向量:通过四元数计算旋转后的向量 参数列表:q表示四元数, v是长度为4的float数组,表示待旋转的向量,   offsetIn表示第一个坐标值的起始索引, out代表结果向量, offsetOut表示结果向量的三个坐标值在out数组中的起始索引. 1 public static void rotateVector(Quaternion q, float[] v, int offsetIn, float[]

T型加速算法fpga实现思想研究

用加法器实现T型曲线的理论分析 //  2017年12月28日     建立 by cofin T型加速曲线公式:如下所示: Vt = v0+at                (1) S = 1/2at2 + v0*t              (2) 举例,如果我们要在5MHz下产生一个1Khz的方波,那么我们需要用5M/1K = 5000 来得到计数数值,然后用计数器设计,当计数到5000-1时即完成了发送一个脉冲的任务,这样的设计肯定需要用除法, 就算不会综合成除法器,但是当我们的1K改

Bzoj 1562: [NOI2009]变换序列 匈牙利算法,二分图匹配

题目: http://cojs.tk/cogs/problem/problem.php?pid=409 409. [NOI2009]变换序列 ★★☆   输入文件:transform.in   输出文件:transform.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] 对于N个整数0, 1, ……, N-1,一个变换序列T可以将i变成Ti,其中 定义x和y之间的距离.给定每个i和Ti之间的距离D(i,Ti), 你需要求出一个满足要求的变换序列T.如果有多个满足条

【C/C++学院】0723-32位与64位/调戏窗口程序/数据分离算法/内存检索/二分查找法/myVC

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并阿赫利运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. 32位与64位 地址与内存的关系 4G = 4*1024M = 4*1024*1024k = 4*1024*1024*1024 Byte字节 =

独立双(N)拥塞窗口的TCP单边加速思想

让TCP以流水线方式工作靠谱吗?也许你听说过MPTCP,也许你听过P2P下载是多么的天下人为我而我负天下人.        如果我能将一个TCP流拆分成多个TCP流,理论上来讲传输速度会有很大的提升,因为TCP拥塞控制算法是必须携带公平性收敛特征的(不然paper不会通过...),TCP反馈系统会为每一个加入的流分配一张船票,反馈系统不会管你们几个是不是一伙儿的,它只按人头计数,不会分组,这样就有很多好玩的事情可以做了.        我平时比较喜欢跟一些非工作关系的同行做技术交流,随便找个地方

TCP数据量--滑动窗口、拥塞窗口、慢启动、Negle算法 经受时延的确认等

TCP的数据流大致可以分为两类,交互数据流与成块的数据流.交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等:成块数据流是用来发送数据的包,网络上大部分的TCP包都是这种包. 很明显,TCP在传输这两种类型的包时的效率是不一样的,因此为了提高TCP的传输效率,应该对这两种类型的包采用不同的算法. 总之,TCP的传输原则是尽量减少小分组传输的数量. TCP的交互式数据流 ?         经受时延的确认技术 TCP的交互式数据流通常使用"经过时延的确认"

快速傅立叶变换算法FFT——图像处理中的数学原理详解22

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 交流学习可加图像处理研究学习QQ群(529549320) 傅立叶变换以高等数学(微积分)中的傅立叶级数为基

查找有向图中所有圈的算法加速策略

简介 有向图G(V,E),圈是一个起始节点与终止节点相同的路径,即 a->….->a.找到所有的圈可能要遍历所有的路径,这就涉及到算法性能的考虑.本文基于深度优先搜索,讨论查找所有圈的算法加速策略. 无向图的查圈算法 深度优先搜索算法是从已知节点出发,图的一种遍历算法.只要一个节点被同源两个路径访问,这两个路径则形成一个圈.因为每个节点只处理一次,所以时间与空间复杂度都是O(N).其算法如下: DFS(a) for undirected graph stack.push(a) while no

医学图像存储与传输系统(PACS)

第十一章 医学图像存储与传输系统(PACS) 第一节 绪论 随着现代医学科技的迅速发展,计算机信息技术已越来越广泛地渗入到医学领域.在影像医学方面,突出表现为越来越多的成像方式在向数字化技术转化,数字化放射学.数字化影像科室乃至数字化医院已成为医疗卫生信息化的发展方向. 图像存储与传输系统(Picture Archiving and Communication System, PACS)是专门为医学图像管理而设计的包括图像存储.检索.传输.显示.处理和打印的硬件和软件系统.其目标是为了有效地管理