基于Spark的CT并行图像处理技术研究
2019-09-10王恒郑笔耕
王恒 郑笔耕
摘要:为解决图像的高效处理问题,将适用于CT图像重建的SPIHT算法与大数据Spark框架相结合,以提高医学图像重建批量处理的效率,降低重建所需时间成本。该方法考虑到了医学CT图像的实际需求,对于SPIHT算法进行了改进,通过图像处理接口接入Spark平台,灵活性高,可靠性强。实验表明,该方法在不同处理环境下,能够有效地提升图像处理的加速比和效率。
关键词:大数据;医学图像处理;CT;图像重建
中图分类号:TP391.41 文献标志码:A 文章编号:1008-4657(2019)05-0005-04
0 引言
电子计算机断层扫描(Computed Tomography,CT)是运用精准的X射线、超声波等射线,协同高灵敏度的探测器对人体某一部位一定厚度的层面进行一系列断层扫描的技术[1],当探测器收到透过该层面的X射线,转变成可见光之后,光信号经过光电转换变成了电信号,在经过过模数转换,变成数字信号交由计算机处理。CT技术在医学诊断上得到了广泛的应用,在现今大数据背景下,医院诊疗过程中所需的医学图像在数量、大小上呈规模式增长,提高图像重构的效率已经成为急需解决的重要问题。
面对超大规模图像重建的现状,前人提出了基于消息传递接口[2]、图形处理器[3-5]等图像的并行处理算法。利用基于统一计算设备架构(Compute Unified Device Architecture,CUDA)的图形处理器完成了CT图像的重建,有效的缩短了图像重建耗时,提高了重建的效率,但是图形处理器架构所需的较高的构造成本阻碍了其进一步发展。文献[6-7]提出了基于信息传递接口的并行CT图像重建方法,该方法相比于串行方法,工作效率得到极大提升,但是信息传递接口的编程过程比较复杂,增加了其应用的难度。
随着大数据时代的来临,各类大数据处理技术已经应用于网络流量分析、用户行为分析等方面,其中又以Spark和Hadoop两种架构最为活跃。因此,将当下比较成熟的大数据技术与医学图像处理、医学数据存储等应用相结合,成为了众多学者的研究方向:文献[8]运用MapReduce模型,基于Hadoop架构实现了对大规模医学图像的并行处理;文献[9]利用Spark并行实现了较大规模的肺叶DR图像分割。在与Hadoop架构的比较中,Spark架构具有低延时、编程工具丰富、数据重用机制优异、多种API实现整合以及图像处理效率高等一系列特点。
本文提出将Spark与改进的多级树集合分裂(Set Partitioning In Hierarchical Tree,SPIHT)算法相结合,将CT图像处理算法设计成并行模式。利用图像接口对于CT图像进行预处理,经过Spark集群后存入HDFS。在图像处理接口处,可以随意添加图像处理所需要的传递函数,以达到用户对于图像的各类需求。
1 方法
1.1 运行环境
硬件环境是内置Intel Core i5四核处理器的PC,软件环境是Windows7的操作系统,采用信息传递接口并行编程。
1.2 改进的SPIHT算法
SPIHT算法是通过在算法执行过程中,计入对有效系数位置大的传输,以此来提高算法运行的速度[10]。
SPIHT算法的编码过程可以分成排序、量化两个部分:
(1)把方向树分解为头节点C(i,j)和其他集合D(i,j)。
(2)对两种集合进行判断。若头节点为重要,则将C(i,j)转入LSP链表;若其他集合为重要,则D(i,j)继续分解为集合L(i,j)和O(i,j)。
(3)对集合L(i,j)和O(i,j)进行重要性判断;若O(i,j)重要,将O(i,j)重要元素转入LSP;若L(i,j)重要,则将L(i,j)分裂成4个集合。
(4)重复以上判断步骤,对所有集合进行重要性判断,直至所有重要元素被转入LSP链表。
在扫描过程中,SPIHT算法极大的提高了其压缩效率。但是,在编码时算法需要占據大量的内存,同时将图像中所有频域部分采用同重要度的统一编码,算法存在可提升的空间。改进的SPIHT算法流程如图1所示。
(1)采用N层快速小波变换。
(2)为了介于存储空间,提出最小输出位、最小阈值,在每一次扫描之后输出被判断为重要的系数的二进制位,阈值减小到时停止压缩编码。
(3)加入最大值表。在逐一的元素比较式,建立最大值表,将被判断为不重要的元素的子节点的系数最大值存入其中。
1.3 基于Spark的CT并行图像处理架构
基于Spark的CT并行图像处理架构如图2所示。
其中,图像处理接口主要用于对输入的医学图像进行预处理,将Spark驱动程序和改进的SPIHT算法相结合;Spark集群管理节点主要作用是负责业务调度和资源分配,对图像进行并行处理;分布式文件系统[11]主要作用是对处理之后的图像资料及其他数据进行及时的存储,保证系统的存储和读取速度。实验的并行环境主要采用片间并行的方式对图像进行重建。
Spark应用程序的运行机制简述如下:Master负责接收开发者编写的应用程序和资源请求,根据应用程序的大小和请求划分部分资源(CPU和内存)用于启动应用程序的管理进程Driver,同时Driver向Master申请在Woker中用于计算的资源Executor,Driver将细化后的应用程序任务分派给Executor,Executor执行完毕后将结果返回给Driver,最终结果返回给开发者。
2 设计
基于Spark的CT并行图像处理流程如图3所示。
首先,由于Spark无法直接识别JPG等日常生活中常用的图片格式,我们需要将图像进行预处理。将患者的病灶图像进行队列化,通过Spark Streaming[12]在图像处理接口处对图像队列进行转换操作,将图像转化为对应的二进制文件之后进行存储。
Spark对该二级制文件提供文本接口,将其读入成一个分布式数据集(Resiliennt Distributed Datasets,RDD),即每一个图像恰好对应一个RDD,对于图像的处理就简单的变为RDD的转化工作。将改进的SPIHT算法导入Spark的图像处理接口,实现对于RDD实例的转化,为每一幅图像生成新的RDD,实现了不同医学图像算法在大数据平台上的应用。
3 实验分析
将3幅图像置于四核的处理器下进行处理,得到了处理时间、加速比和效率等参数。所处理的图像分别为Fig1(128×128)、Fig2(256×256)和Fig3(512×512)。
其中对于算法的评价标准主要为加速比和效率。其中,加速比的定义为
效率的定义为
公式表示p台计算机同时进行处理。
不同环境下图像处理指标如表1所示。
4 结论
本文基于分布式计算框架的Spark平台,通过加入图像处理接口,实现了改进的SPIHT算法在医学图像上的并行处理应用,其中考虑到了医学CT图像的实际需求,提高了医学图像重建批量处理的效率,降低了重建所需時间成本。实验表明,该方法在不同处理环境下,能够有效地提升图像处理的加速比和效率。
参考文献:
[1]袁翠云,齐宏亮,陈梓嘉,等.基于投影域校正的CT图像环形伪影去除方法[J].计算机工程与设计,2017(3):735-738.
[2]Forum M P.MPI:A Message-passing Interface Standard[S].University of Tennessee,1994.
[3]Saxena N,Baheti G L,Tripathi D K,et al.CUDA-based GPU Computing for Fast Tomography Visualisations[J].Insight-non-destructive Testing and Condition Monitoring,2010,52(5):262-264.
[4]石本义.基于GPU的计算机断层成像技术研究[D].武汉:华中科技大学,2010.
[5]张伟.基于GPU加速的锥束CT重建算法研究[D].重庆:重庆大学,2016.
[6]曾有灵,陈耿铎,熊威,等.基于Spark的CT图像FBP重建算法程序并行设计[J].计算机工程与应用,2019,55(10):223-229.
[7]Yang J,Guo X,Kong Q,et al.Parallel Implementation of Katsevich's FBP Algorithm[J].International Journal of Biomedical Imaging,2006(3):1-8.
[8]张育瑛.基于流形的彩色医学图像增强算法实现[J].信息与电脑(理论版),2018,408(14):53-55.
[9]兰云旭,王俊峰,唐鹏.基于Spark的并行医学图像处理研究[J].四川大学学报(自然科学版),2017,54(1):65-70.
[10]吴银芳.基于模糊变换耦合最大熵的医学图像融合算法[J].西南师范大学学报(自然科学版),2018,43(11):55-62.
[11]Shvachko K,Kuang H,Radia S,et al.The Hadoop Distributed File System[C]//Piscataway:IEEE,2010:1-10.
[12]黄文辉,冯瑞.基于Spark Streaming的视频/图像流处理与新的性能评估方法[J].计算机工程与科学,2015,37(11):71-76.
[责任编辑:许立群]