引言
随着Ul(超声成像)、CT(计算机断层成像)、MRI(核磁共振成像)、CR(计算机X线成像)、电子内窥镜、盯(正电子发射断层成像)和MI(分子影像)等医学影像设备不断涌现,利用计算机对医学影像设备采集到的图像进行后处理的医学图像处理与分析技术也越来越成为放射科医生和临床医生进行疾病诊断的重要辅助手段。在医学图像的处理过程中医生经常需要频繁地变换窗宽、窗位来对感兴趣的病灶部位进行细致的研究,但传统的医学图像的显示方法不能达到实时显示图像的目的,图像的显示具有明显的迟滞现象,致使医生很多的时间浪费在等待影像的显示中,工作效率比较低,为此开发新的医学图像的显示算法来满足实际医生操作的需要有着重要的实际意义。本文从讨论DICOM格式的图像显示过程人手,分析了显示过程中的关键问题,提出了统一LUT的解决方法,并对的生成算法进行了改进。
医学影像显示过程分析是美国放射学会和美国电器制造商协会组织指定的用于医学图像存储和传输的标准。目前几乎大部分的医学设备产生的医学图像都是采用这种格式。作为一种特殊的图像编码格式,通用图像浏览软件并不能直接显示,要显示DICOM格式的医学图像必须将原始图像数据经过一系列的转换才能得到可直接在显示设备上显示的数据(称之为P—Values)。DICOM医学图像显示转换过程如图1所示,需要经过Modality LUT、VOI LUT、Presentation LUT三个转换过程,最终输出的P Values才是可以直接显示的图像数据。
Modality LUT转换(数据规范化转换通常不同生产厂商的设备很难保证在一种设备上生成的图像和其他生产厂商的同类型设备上生成的图像在度量上是一致的,为此就需要将不同设备厂家产生的图像的原始数据转换到一个标准的度量空间,转换就是完成这个功能的。医疗设备的生产厂商都会在自己的图像中采用DICOM标准规定的格式说明如何将自己的数据转换为标准图像数据,中规定可以使用通过查找表(Look Up Table,简称LUn查找和通过斜率/截距(RescaIe/转换两种方法中的一种。
查找表方法(Modality LUT)是一种非线性变换算法。一个查找表由很多数据项组成,每一个数据项为相应原始数值转换后的数据值,同时还会提供一个被转换为查找表第一个数据项的原始数据的数据值。在进行数据转换时只要知道被转换为查找表第一项的原始数据,比原始数据大1的数据则转换为查找表第二项的值,比原始数据大2的数据转换后的数据则为查找表的第三项的值,依次类推直到查找表的最后一项。
大于查找表能转换的最大的原始数据则转换为查找表的最后一项的值,小于查找表能转换的最小的原始数据则转换为查找表的第一项的值。用公式表示为:其中:M:规范化后的标准图像像素值,Fp:原始像素值,Fpmin:被转换为查找表第一项的原始数据,:LUT中的第一个数据项的值,Mp—pmin:
中第Fp—Fpmin个数据项的值,Ecount:查找表的数据项个数。斜率/截足E(Rescale/Intercept)变换是一种线性变换,使用的公式是:标准图像像素值=原始图像像素值X斜率+截距,斜率和截距在DICOM文件中可以读取。通过这一步转换后图像像素就从设备有关变成设备无关了。
VOl(Value Of Interest)LUT转换(感兴趣区转换由于医学图像数据动态范围大(像素深度通常不低于4096个灰度级),因此一般显示器很难提供如此高的动态范围一次显示整幅图像的全部信息细节,在图像的处理中一般都是先选择一个操作者感兴趣的区域,然后将该区域的图像信息映射到显示器能显示的整个数据范围,这样就增加了该区域的图像信息的对比度。这个过程DICOM标准中称之为感兴趣区简称VOI)LUT(Look Up Table)转换。临床医生感兴趣的窗宽、窗位调节功能就是VOI LUT转换的一种算法实现。VOI LUT转换可以使用设置窗宽、窗位的线性转换算法和通过查找查找表(LUT)转换的非线性算法两种算法中的一种且只能使用其中的一种,具体使用哪种算法在DICOM文件中有专门的标记来设置。
窗宽、窗位线性转换算法是根据预知的窗宽和窗位值获得需要显示的窗口大小(窗宽)和中心位置(窗位),从而将窗口区域的图像数据线性地转换到显示器的最大范围内,高于或低于窗口上、下限的图像数据则分别设置为最高或最暗的显示值。用公式表示为:其中V:图像数据,G:显示器显示值,gm:显示器的最大显示值,W:窗宽,C:窗位。在这里窗宽是指需要显示图像的范围,调节窗宽主要影响对比度,窗宽越大图像灰度层次多,组织对比度减少,细节显示差,而窗位也称窗中心,表示显示区域的中心位置,例如骨骼的窗位(C)、窗宽(W)分别为C=400,,那么就可以利用调窗处理将窗宽调节到骨骼窗宽,窗位调节到骨骼的窗位,然后利用上面的公式将图像V换算成显示器显示值,最终得到的结果是只显示窗口范围内的图像,也就是骨骼。
是一种查找表算法,算法处理过程同。
Presentation LUT转换是对图像像素要做的最后一个变换,它用于特定图像的显示。这一模块转换完成后的输出值为P—Values,P-Values是独立于任何显示设备的特性曲线,与人的视觉反应近似相关的值,可直接作为已经校正的软拷贝设备或硬拷贝的输入。
转换也有两种转换方法,一种是通过Presentation LUT进行转换的非线性转换方法,一种是通过Presentation Shape的转换方法,这两种转换方法只能使用一种。Presentation LUT转换的过程基本同上面介绍的两种LUT算法。
算法使用INDENTITY和LIN OD两者中的一个。INDENTITY表示经过VOI LUT转换得来的数据值即P-Values值,不需要转换,一般图像的软拷贝使用这个值;LIN OD是实现图像的硬拷贝时使用的,在软件的开发中没有使用到就不讨论了。
算法改进在图像后处理软件的开发过程中我们发现一幅图像从调入,到显示需要的时间比较长,而且医生在利用医学图像进行疾病诊断的过程中需要频繁地变换图像的窗宽、窗位来对感兴趣的区域进行仔细的研究,每次调窗处理后图像的显示具有明显的迟滞现象,达不到医生的临床诊断要求,为了能动态、实时地对图像进行调窗必须改进图像处理算法,缩短每次图像调窗处理时间。
1使用统一的LUT算法通过分析图像显示过程,我们发现医学图像从原始数据到P—Val ues要经过Modality LUT、VOI LUT、三个处理步骤,而ModaliW LUT、又有线性变换和非线性变换两种算法,其中非线性变换算法是采用查找表的方法,这种方法相比线性变换算法来说的优点是变换效率高,而内存的占用会大些:而线性变换算法的优点是内存占用少,但算法效率不高,例以S12×512的一幅医学图像来说,每一次VOI LUT变换需要进行51 2×51 2次的浮点数乘除法运算,对实时性要求比较高的医学图像处理来说性能上是难以接受的,为此借鉴LUT的非线性处理方法考虑将线性处理算法改造成LUT算法,同时找出医生实际操作时频繁需要的调窗操作对应的窗宽、窗位提取出来,在图像装入的时候创建其相应的LUT,这样在医生进行调窗处理的时候不需要重新生成,直接从对应的LUT表中查表就可以了,这样可以大大提高图像的调窗处理时间,达到实时调窗的性能要求。在和医生沟通后我们发现这个想法是可行的,因为在进行疾病诊断中医生一般会根据医学图像的类型和检查的身体部位不同去查看几种典型的窗宽、窗位。例如在CT图像中医生频繁使用的是骨骼,W=2000),胸腔(C=50,W=350),肺部一600,W=1 500),腹部(C=45,W=250)等。而考虑到图像操作时只使用一次,可以将从原始像素规范化后的数据值保存在一个矩阵中,每次VOU LUT时只要直接使用这个矩阵中的值就可以了,不需要进行算法改造了;Presentation LUT的线性处理算法在软拷贝中只使用中的INDENTITY值也不需要算法改造:所以只需要改造VOI LUT的线性算法就可以了。
分析Modality LUT、VOI LUT和发现DICOM标准的LUT是由多个数据项组成,第一个数据项保存的是第一个被转换的原始数据在查找表的对应值,第二个数据项为第一个被转换的数据项+1的原始数据项在查找表中的对应值,依次类推,其数学表示方法为:Y[O]=F(X0),Y[1-F(×O+1),,其中i的取值范围为【0一LUT数据项个数I,×0表示第一个被转换的原始数据。结合我们要实现的算法,要将线性算法改造成LUT算法首先必须计算出第一个被映射的原始数据的值,被映射的原始数据的个数(决定了要构造的LUT中数据项的个数),然后是构造LUT。考虑到经过VOI LUT转换后的灰度值最小为0,最大为2S5,灰度间隔为1,因此第一个被映射的原始数据的值为X0=C一0.5一(W一1)/2,数据项的个数为W,其中C为窗位,W为窗宽。
LUT生成算法优化最简单的LUT生成算法是将取值范围在C—W/—C+W/2之间的的整数(DICOM中图像图像为整数使用VOI LUT转换中的线性算法公式进行计算后保存到LUT中。分析发现这个线性算法需要进行大量的浮点数的乘法和除法运算,是比较耗时间的,如果能对这个线性算法进行改进将能提高图像的处理效率。再看线性转换的公式:
画直线的过程是一样的,因此可以使用计算机图形学中的直线扫描转换算法来对线性算法进行优化。直线扫描转换算法可以将大量的浮点数乘法、除法运算转换成加法和减法运算,提高运算效率。常用的直线扫描转换算法有数值微分(Digital differential analyzer,算、中点画线算法[sl、算法16~,其中以Bresenham算法效率最高,因此考虑使用Bresenham算法来生成LUT。
改造后算法在系统设计时我们使用一个全局的链表来保存当前系统中设置了哪些窗宽、窗位的信息,链表中的每个结点保存的数据类型是—个结构体,结构体的定义如下:
结语本文在分析DICOM医学图像显示过程的基础上,使用LUT来统一DICOM医学图像的处理过程,并对的生成算法进行了改进,并给出了具体的代码实现。实验证明改进效果明显,具有很好的实用价值。