基于Android平台医学图像处理系统
2013-10-15刘在英
杨 平,倪 军,刘在英
(上海杉达学院信息科学与技术学院,上海 201209)
0 引言
DICOM(Digital Imaging and Communications in Medicine)是医学图像文件存储与通信的国际标准。DICOM医学图像是一个关于信息体实例的数据集,这个数据集由很多数据元素组成,包含患者、研究、序列和图像等4层信息,医疗影像除了图像以外有许多其它参数,大多数图像处理软件都不支持DICOM图像文件格式。
本文在Android系统平台上将DICOM标准图像的文字信息进行提取,显示医生、病人、医院、设备、图像等基本文字信息;将像素信息转换为Bitmap对象进行显示和图像处理。目前尚未发现基于Android系统移动终端的此类医学图像处理软件[1]。
1 DICOM格式解析
1.1 DICOM文件结构
图1 DICOM图像的结构
基于DICOM标准的医学图像文件由文件头信息和像素数据组成。文件分单帧图像文件和多帧图像文件,整个文件称之为数据集,文件的整体结构如图1所示[2]。整个图像文件是由一个一个的数据元素组合而成的,而每个数据元素又包括如下几部分:
(1)Tag(group,element):一对有序16位无符号整数,前16位表示组号,后16位表示元素号。
(2)VR(Value Representation):2个字节的字符串,表示数据元素值的类型,例如OB、OW、DA、PN、SH等。
(3)Len:数据长度。指的是读后面数据的字节数。
(4)VF:数据元素值。读取的长度由前面的Len决定。
表1~表3列出了部分元素结构。
表1 VR为OB OW OF UT SQ UN的元素结构
表2 VR为普通类型时元素结构
表3 隐式VR的元素结构
DICOM定义了一些数据元素来规定这些像素单元的结构数据元素及释义,部分如表4所示[3]。
表4 部分VR值列表
1.2 DICOM医学图像解析
DICOM文件整体结构先是128字节的导言部分,然后是数据元素依次排列。排列的方式就是一个数据元素接一个数据元素的方式排到文件结尾。下面以一个DICOM图像文件在十六进制编辑器Uedit32软件中进行数据分析。
(1)跳过128字节导言部分(一般都为0),读取“DICM”4个字符以确认是DICOM格式文件。
(2)随后读取的数据元素是“02000000554C 040000 A60000”。“02000000”表示组号和元素号;“554C”意思是 VR 为“UL”,由表1查出没有预留位,“0400”即值长度为4,所以后面读4个字节“A6000000”,即是“00 A60000”,值为 10878976,指文件元信息长度。
(3)又一个数据元素“02001000554914003121000000010200”。“00020010”表示组号和元素号,该值确定传输语法;“5549”意思是 VR为“UI”,由表1查出没有预留;“1400”即值长度为20,所以后面读20 个字节,值为“1.2.840.10008.1.2.1”,该传输语法是little字节序。例如十进制数35280用十六进制表示是0xff00,但是存储到文件中用十六进制编辑器打开看到的是00ff,这就是 little字节序[4]。0002,0010的值有如下3种:
显示情况下根据VR和Len确定数据类型,根据数据长度直接读取就可以了。隐式情况只能根据tag字典确定它是什么VR才能读取。
(4)tag为“E07F 1000”,即是“7F E00010”表示像素数据开始处。后面读取具体像素便可以进行向常用图像格式转换。
2 DICOM图像的处理
2.1 系统的功能
(1)打开DICOM图像并显示;
(2)具有窗宽/窗位调节功能;
(3)局部放大和全部放大显示功能;
(4)水平/垂直方向镜像处理。
2.2 调窗技术
DICOM图像直接按像素从左到右、从上到下,逐行依次扫描。2个字节表示一个像素,普通DICOM格式存储的是16位的灰度图像,其实有效数据只有12位,除去0所以最高值是2047。而系统调色板只能显示256灰度等级,而且由于人眼的分辨率有限,256灰度级已完全能满足人眼的辨别极限了。需要将DICOM图像灰度映射到0~255之间,把12位灰度影射到8位灰度显示出来。已知的12位灰度值为y,设要求的8位灰度值为 x,那么,x/255=y/2047,或者,x=255y/2047。
为了较逼真地显示医学图像的全部信息,必须对图像数据进行窗宽、窗位的调整,把窗口区域的图像数据线性地转换到显示器的最大显示范围内,这样就可以动态调整窗宽和窗位,观察医学图像的全部信息。在大多数情况下,窗宽值都大于图像数据的最大值,图像的所有灰度信息都落入窗口范围内。采用了线性加窗处理使用公式(1)[5]:
其中:V为原始图像数据,W为窗宽,C为窗位,G(V)为转换后的像素值。
2.3 图像几何处理算法
2.3.1 图像镜像变换
图像的镜像变换分为2种:水平镜像和垂直镜像。图像的水平镜像操作是将图像的左半部分和右半部分以图像垂直中轴线为中心镜像进行对换;图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心镜像进行对换[6]。
设图像高度为mHeight,宽度为mWidth,原图中(x0,y0)经过水平镜像后坐标将变为(mWidth-x0,y0),其矩阵表达式为:
同样,(x0,y0)经过垂直镜像后坐标将变为(x0,mHeight-y0),其矩阵表达式为:
2.3.2 缩放变换
图像的缩放操作将会改变图像的大小,产生的图像中的像素可能在原图中找不到相应的像素点,这样就必须进行近似处理。一般的方法是直接赋值为和它最相近的像素值,也可以通过一些插值算法来计算。
假设图像x轴方向缩放比率为fx,y轴方向缩放比率为fy,那么原图中点(x0,y0)对应于新图中的点(x1,y1)的转换矩阵为:
其逆运算如下:
即:
例如,当fx=fy=0.5时,图像被缩放到一半大小,此时缩小后图像中的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应于原图中的(0,2)像素;(1,0)像素对应于原图中的(2,0)像素,以此类推。在原图基础上,每行隔一个像素取一点,每隔一行进行操作。其实是将原图每行中的像素重复取值一遍,然后每行重复一次。
3 系统实现
3.1 读取DICOM文件
读DICOM文件的流程图如图2所示。
图2 读取DICOM文件的流程图
灰度图像像素的转换以及显示,部分核心代码如下:
显示DICOM文件的文本信息和图像信息的运行界面分别如图3和图4所示。
图3 DICOM图像的部分文字信息显示
图4 DICOM图像分别在不同宽窗窗位的显示
3.2 图像处理
3.2.1 缩放图像处理
实现图像缩放是在创建Bitmap图像时用如下方法创建:createScaledBitmap(Bitmap src,int dstWidth,int dstHeight,Boolean filter):对源位图src进行缩放,缩放成宽dstWidth、高dstHeight的新位图。如果对局部放大用如下方法创建:createScaledBitmap(Bitmap src,int x,int y,int width,int height):对源位图 source的指定坐标点(给定x,y)开始,从中“挖取”width、height的一块出来,创建新的Bitmap对象。运行的效果如图5所示。
图5 全部放大图和局部放大图
3.2.2 水平/垂直镜像图像处理
水平/垂直镜像图像处理的部分核心代码如下:
垂直镜像和水平镜像运行的效果如图6所示。
图6 图像的垂直镜像和水平镜像
4 结束语
本文分析DICOM医学图像的格式,提取图像的文本信息,实现了对单帧的图像灰度转换并显示,在转换过程中采用了调窗技术进行其灰度的变换。实现了图像的局部以及全局的缩放,水平和垂直镜像图像处理。该实验在三星N7100 GALAXY Note2手机,Android 4.1系统上进行。对于1M的DICOM灰度图像文件显示的耗时平均约900ms,图像处理耗时平均约600ms,处理速度快,显示效果良好。
目前,本系统只能显示DICOM格式的灰度图像文件,还不能显示DICOM的彩色图像。实现的图像处理只是几何图像处理,针对具体临床使用的图像处理有待研究和开发。
该实验在移动终端上实现,能更方便医生进行会诊和医学分析。后续工作是希望充分利用平板电脑触摸屏操作的优势,实现更多的医学图像处理。
[1]杨博菲,吕卫,褚晶辉,等.基于Android平台的医学图像显示软件设计[J].中国医学物理学杂志,2012,29(3):3375-3379.
[2]邱明辉,张纪国.基于DICOM标准的医学图像显示与处理系统的研究与实现[J].医院数字化,2004,19(11):18-20.
[3]ISO 12052:2006,Digital Imaging and Communications in Medicine(DICOM)[S].
[4]Assassinx.Dicom格式文件解析器[EB/OL].http://www.cnblogs.com/assassinx/archive/2013/01/09/dicom-Viewer.html,2013-01-09.
[5]孙亦博,朱玲利.DICOM医学图像与BMP格式的转换研究[J].现代计算机,2010(8):121-124.
[6]詹青龙,卢爱芹.数字图像处理技术[M].北京:清华大学出版社,2010.
[7]徐潘辉,林峰.DICOM医学数字图像格式与BMP通用图像格式转换软件的设计与实现[J].医疗设备信息,2006,21(3):1-5.
[8]李刚.疯狂Android讲义[M].北京:电子工业出版社,2012.
[9]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2011.
[10]Gonzalez R C,Woods R E.Digital Image Processing(3rd Edition)[M].北京:电子工业出版社,2010.
[11]章毓晋.图像处理和分析[M].北京:清华大学出版社,1999.
[12]吴志福.基于DICOM标准的医疗影像管理系统的研究[D],西安:西安电子科技大学,2012.
[13]林红利,陈真诚,王伟胜.DICOM医学图像显示算法改进与实现[J].计算机系统应用,2010,19(6):204-207.
[14]杨文君,宋晓梅.基于Android平台的图像采集系统[J].西安工程大学学报,2012,26(4):494-496.