CN102163319A - 一种实现迭代重构图像的方法及系统 - Google Patents
一种实现迭代重构图像的方法及系统 Download PDFInfo
- Publication number
- CN102163319A CN102163319A CN 201110050568 CN201110050568A CN102163319A CN 102163319 A CN102163319 A CN 102163319A CN 201110050568 CN201110050568 CN 201110050568 CN 201110050568 A CN201110050568 A CN 201110050568A CN 102163319 A CN102163319 A CN 102163319A
- Authority
- CN
- China
- Prior art keywords
- reconstructed image
- section
- value
- module
- projection algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 76
- 238000003556 assay Methods 0.000 claims description 20
- 238000007689 inspection Methods 0.000 claims description 12
- 238000005259 measurement Methods 0.000 claims description 10
- 238000013459 approach Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 8
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000012360 testing method Methods 0.000 description 11
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012804 iterative process Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 102000011990 Sirtuin Human genes 0.000 description 1
- 108050002485 Sirtuin Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000012472 biological sample Substances 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003325 tomography Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Apparatus For Radiation Diagnosis (AREA)
Abstract
本发明披露了一种实现迭代重构图像的方法及系统,涉及CPU的主机端和GPU的设备端,该方法包括:主机端将要进行迭代重构图像中的物体分成切片,根据切片上的元素数设置并行执行迭代重构图像的线程数;设备端根据线程数使用相应的多线程并行地根据切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取切片的重构图像值。本发明利用GPU设备端快速计算的特点参与对迭代重构图像中的重投影和背投影进行计算,通过CPU主机端和GPU设备端的协调运作加速图像的迭代重构。
Description
技术领域
本专利涉及图形图像处理技术,尤其涉及采用迭代法实现图像重构的方法及系统。
背景技术
图像重构无论是在医学诊断,还是在生物样品的成像,以及在地表层析成像等诸多领域中都有着广泛的应用。迭代重构图像方法是20世纪70年代初发表的一种图像重构方法,它可以重构出较清晰的图像,并且其应用正在逐步扩展。迭代法可以表述成:Ax=p,其中A为非奇异矩阵,x为未知数向量,p为已知向量,迭代法求解目标在于确定x的数值。在迭代重构图像方法中,A为加权因子,p为投影得到的图像像素值,x则为需要重构的图像的像素值。
图1说明了采用迭代重构图像方法实现图像重构的过程。该方法通过赋0值或随机值或背投影方法获取用于迭代过程中的初值X(0),然后经过多次的重投影和背投影的迭代过程,来求得最后满足精度要求的重构图像的像素值。
自从2006年英伟达(NVIDIA)公司推出图形处理器G80(包含了128个流式多处理器,最新的G200包含了240个多处理器)以来,图形处理器(GPU,Graphic Processing Unit)在某些大规模并行计算的应用上,相对于CPU来说性能提高可达100倍以上。尤其从2008年5月,NVIDIA公司推出用于GPU的开发平台统一计算设备架构(CUDA,Compute Unified DeviceArchitecture)软件开发工具包(SDK,Software Development Kit)1.1以来,基于GPU平台的并行计算便得到了大规模的推广。CUDA为GPU计算提供了统一计算设备架构,使用户很容易地将GPU编程融于传统的编程工具(例如Visual Studio、Gcc等)和语言(例如C、C++及FORTRAN等)中。在短短的一年以来,CUDA被应用于加速大规模并行计算领域的许多方面,如在图像处理,物理模型模拟(如计算流体力学),工程和金融模拟与分析,生物医药工程,数据库及数据挖掘,搜索,排序等诸多方面都有很好的应用,在很多应用中取得了1至2个几何数量级的加速。
GPU拥有更多的晶体管,用于数据处理而不是像CPU那样去处理数据cache和指令控制,这意味着GPU具有巨大的并行计算能力。在GPU中,单一的数据处理单元为流处理器(SP),8个SP组成一个流处理器组(SM),一个GPU具有多个SM,每个SM除了有8个SP,还有一些高速缓存器(caches,包括纹理存储器、常量存储器及共享存储器)和两个特殊功能单元(SFU)。片外全局存储器(即显卡上的显存)用来存储数据并实现CPU和GPU之间的数据传递。
CUDA C作为GPU的并行编程语言。CUDA C编程将CPU称之为主机,将GPU作为一个协处理器称为设备。在CUDA编程中,多个线程同时执行在一个GPU上,并由多个线程组成一个线程块(Block),多个线程块又组织成网格(Grid);另外,每32个线程组成一个束(warp)。CUDA编程中常用到的优化技术有合理的网格配置,每个SM上有足够多的warp可隐藏访问延迟,并进行全局存储器的合并访问,共享存储器的使用,纹理存储器和常量存储器的使用,寄存器的合理使用等等。
迭代重构算法在所有图像重构算法中重构效果较好,但其运算量巨大,因此需要提高运算效率,来满足快速图像重构的需求。可见,目前需要针对基于GPU平台设计一种迭代重构图像的方法,通过GPU高效快速的计算特性,能够极大地加速迭代重构方法的执行,从而快速地完成图像重构任务。
发明内容
本发明所要解决的技术问题是提供一种实现迭代重构图像的系统及方法,能够基于GPU平台实现快速迭代重构图像。
为了解决上述技术问题,本发明提供了一种实现迭代重构图像的方法,涉及CPU的主机端,其特征在于,还涉及图像处理器GPU的设备端,该方法包括:
主机端将要进行迭代重构图像中的物体分成切片,根据切片上的元素数设置并行执行迭代重构图像的线程数;
设备端根据线程数使用相应的多线程并行地根据切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取切片的重构图像值。
进一步地,主机端将要进行迭代重构图像中的物体分成切片,根据切片上的元素数设置并行执行迭代重构图像的线程数,具体包括:
根据物体的大小将该物体分成切片,切片的数目为该物体宽度的像素值SY,切片在投影图像上的元素数为N=SX*ANG_NUM,SX为该物体长度的像素值,ANG_NUM为该物体旋转角度的总数;切片在重构图像上的元素数为M=SX*SZ,SZ为该物体高度的像素值;
将切片在投影图像上的元素数N设置为并行执行重投影算法的线程数;将切片在重构图像上的元素数M设置为并行执行背投影算法的线程数。
进一步地,在设备端通过重投影算法和背投影算法计算获取切片的重构图像值之前,还包括:
主机端通过赋0值或随机值或背投影方法获取切片的初始的重构图像值X(0),并传递到设备端的显存中。
进一步地,设备端根据线程数使用相应的多线程并行地根据切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取切片的重构图像值,具体包括:
设备端使用N个线程并行地对切片的投影图像中N个元素根据初始的重构图像值X(0)或计算获取的重构图像值X(k)执行重投影算法,计算获取切片的投影图像值P计;使用M个线程并行对切片的P计和测量获取的该切片的投影图像值P测执行背投影算法,计算获取切片的重构图像值X(k),k为等于1或大于1的整数。
进一步地,主机端在将N设置为并行执行重投影算法的线程数以及将M设置为并行执行背投影算法的线程数的同时,还包括:
根据GPU线程块中的线程数BLOCKDIM,设置并行执行所述重投影算法的第一GPU线程块的块数为(SX*ANG_NUM+BLOCKDIM-1)/BLOCKDIM,该第一GPU线程块中每一线程用于计算获取投影图像值P计的一个元素;设置并行执行背投影算法的第二GPU线程块的块数为(SX*SZ+BLOCKDIM-1)/BLOCKDIM,该第二GPU线程块中每一线程用于计算获取重构图像值X(k)的一个元素。
进一步地,该方法还包括:
主机端检验切片的重构图像值X(k)是否满足迭代精度;
若检验结果为不满足迭代精度,则命令设备端针对该切片依次通过重投影算法和背投影算法重新计算获取该切片的重构图像值,直至满足迭代精度;若检验结果为满足迭代精度,将从内存读取的下一切片初始的重构图像值X(0)传递到显存中,待设备端依次通过重投影算法和背投影算法计算获取切片的重构图像值。
进一步地,该方法还包括:
主机端在判断设备端完成对物体的所有切片的迭代重构图像处理后,从显存中读取所有切片的迭代重构图像值,并作为物体的重构图像值写回内存。
为了解决上述技术问题,本发明提供了一种实现迭代重构图像的系统,包括依次连接的内存模块、重构图像读取模块、重构图像迭代模块以及显存模块,其中:
重构图像读取模块,用于将要进行迭代重构图像中的物体分成切片,根据切片上的元素数设置并行执行迭代重构图像的线程数,并传递给重构图像迭代模块;将存储模块中的切片的重构图像值传递到显存模块后,向重构图像迭代模块发出迭代指令;
重构图像迭代模块,用于根据该迭代命令和线程数使用相应的多线程并行地根据切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取切片的重构图像值。
进一步地,
重构图像读取模块将该物体分成数目为该物体宽度像素值SY的切片,每一切片在投影图像上的元素数为N=SX*ANG_NUM,该SX为该物体长度的像素值,该ANG_NUM为该物体旋转角度的总数;切片在重构图像上的元素数为M=SX*SZ,该SZ为该物体高度的像素值;将切片在投影图像上的元素数N设置为并行执行重投影算法的线程数,将切片在重构图像上的元素数M设置为并行执行背投影算法的线程数;将设置的线程数N和线程数M传递给重构图像迭代模块。
进一步地,
重构图像读取模块获取切片的初始的重构图像值X(0),并在传递到显存模块后发出迭代指令;
重构图像迭代模块根据该迭代命令使用N个线程并行地对切片的投影图像中N个元素根据初始的重构图像值X(0)或从显存模块读取的重构图像值X(k)执行重投影算法,计算获取切片的投影图像值P计;使用M个线程并行地对切片的P计和测量获取的该切片的投影图像值P测执行背投影算法,计算获取切片的重构图像值X(k),k为等于1或大于1的整数。
进一步地,该系统还包括分别连接重构图像迭代模块、显存模块以及重构图像读取模块的重构重构图像检验模块,其中:
重构图像迭代模块将并行获取的切片上各元素的重构图像值X(k)存储在显存模块中,并向重构图像检验模块发出检验指令;
重构图像检验模块,用于根据该检验指令对显存模块中相应切片上各元素的重构图像值X(k)进行迭代精度的检验,并将检验结果传递给重构图像读取模块;
重构图像读取模块根据该检验结果向重构图像迭代模块发出针对当前切片的迭代指令或针对下一切片的迭代指令。
进一步地,
重构图像读取模块若判断该检验结果为不满足迭代精度,则向重构图像迭代模块发出针对当前切片的第一迭代指令;若判断该检验结果为满足迭代精度,则将从内存模块读取的下一切片初始的重构图像值X(0)传递到显存模块中,并向重构图像迭代模块发出针对下一切片的第二迭代指令;
重构图像迭代模块根据第一迭代指令依次通过重投影算法和背投影算法重新计算获取当前切片的重构图像值,直至满足迭代精度;或者,根据第二迭代指令依次通过重投影算法和背投影算法计算获取下一切片的重构图像值。
进一步地,
重构图像读取模块在判断重构图像迭代模块完成对物体的所有切片的迭代重构图像处理后,从显存模块中读取所有切片的迭代重构图像值,并作为物体的重构图像值写回内存模块。
在本发明部署的方法中,CPU主机端只负责一些数组的分配和初始化,而利用GPU设备端快速计算的特点参与对迭代重构图像中的重投影和背投影进行计算,通过CPU主机端和GPU设备端的协调运作来加速图像的迭代重构。
附图说明
图1为现有的迭代重构图像方法的流程示意图;
图2为对物体进行投影过程的示意图;
图3为本发明的实现迭代重构图像的方法实施例的流程图;
图4为本发明的实现迭代重构图像的系统实施例的结构框图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。以下例举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
本发明首先分析用串行迭代法进行图像重构中的性能瓶颈,找到耗时的过程的代码,测试其在整个图像重构过程中所占的时间比例。测试结果表明在采用迭代法进行图像重构时,大部分的时间均消耗在重投影和背投影两步骤中,这两个步骤不仅执行次数多,而且要计算的数据量大,同时,数据的计算要满足单指令多数据(SIMD,Single Instruction Multiple Data)的特点。因此,本发明将这两步骤作为加入GPU进行并行改进的重点。
在图像重构中,测量获取物体的投影图像像素值P测的过程如图2所示,记物体的长为SX像素,宽为SY像素,高为SZ像素,旋转角度的总数(即旋转次数)为ANG_NUM,垂直于Y方向的每一个面为切片,共有SY个切片。图像重构的过程是以切片为单位进行的,其过程如图1所示,即对每一切片通过迭代多次计算和测量获取切片的投影图像像素值来重构;重构了SY个切片便重构出该物体模型。
本发明针对上述分析,提供了一种实现迭代重构图像的方法实施例,其流程如图3所示,包括如下步骤:
300:将要迭代重构图像中的物体分成切片,根据切片上元素数设置并行执行迭代重构图像的线程数;
在投影图像值P计中共有N=SX*ANG_NUM个元素,由于在对这N个元素的求解中没有任何数据的依赖性,即对各个元素的求解无需按顺序进行,因此本发明以并行度为N(=SX*ANG_NUM)来并行地针对每一元素分别进行重投影算法的操作。如果设计GPU每个线程块中的线程数为BLOCKDIM,那么共需要(SX*ANG_NUM+BLOCKDIM-1)/BLOCKDIM个线程块进行重投影计算,在GPU内核中,线程块中的每个线程负责计算获取P计中的一个元素。
对于重构图像值X(k)中共有M=SX*SZ个元素,由于在对这M个元素的求解中没有任何的数据依赖性,因此本发明以并行度为M(=SX*SZ)并行地对每一元素进行背投影算法的操作。如果设计GPU每个线程块中的线程数为BLOCKDIM,则共需要(SX*SZ+BLOCKDIM-1)/BLOCKDIM个线程块进行背投影计算,在GPU内核中,线程块中的每个线程负责计算获取X(k)中的一个元素。
310:获取切片初始的重构图像值X(0);
由主机端(CPU)根据物体的大小、旋转角度的总数确定重构过程的切片数和每一切片上的元素数,并进行相应数组的分配和初始化。假设物体大小,SX=2048,SY=2048,SZ=400,旋转角度的总数ANG_NUM=114;重构过程共需重构2048(SY)个切片,每个切片的元素数N=2048*400(即SX*SZ)。
主机端通过赋0值或随机值或背投影方法获取用于迭代过程中的初始的重构图像像素值X(0)。
320:GPU通过多个线程并行地对每一切片上的投影图像上的N个元素执行重投影计算,获取该切片的投影图像值P计;
在对每个切片进行重构的过程中,根据切片初始的或重构的图像值通过重投影算法计算得到的投影图像像素值P计。
330:GPU通过多个线程并行地对每一切片重构图像上M个元素执行背投影计算,根据P计和测量获取的投影图像值P测获取该切片的重构图像值X(k);
在每个切片的重构过程中,根据P计和P测经背投影算法求取重构图像像素值X(k)。
在通过上述步骤320、330进行Ax=p的迭代过程中,对于矩阵A(加权因子)的计算,可根据投影图像的中心点、偏移角度以及旋转角度等参数来确定;对于通过GPU的多个线程执行的并行程序部分,在主机端(CPU)进行数组的分配和初始化,在设备端(GPU)假设采用迭代法中的联合迭代重建算法(SIRT,Simultaneous Iterative Reconstruction Technique)进行图像重构;在设计GPU的线程块时,通过线程号和数组下标的对应关系来满足合并访问,通过将存放角度的数组分配到常量存储器中来减少对全局存储器的访问。另外,根据具体的投影示例来采用共享存储器和纹理存储器来更进一步地提高性能。
在GPU内核进行背投影计算前,由CPU将投影得到的投影像素值P测从内存传递到显存中;在之后的迭代的过程中,所有的数据都是在显存中处理,待最后一次迭代操作完成后,再由CPU将GPU计算得到的重构图像像素值从显存回传到内存,然后写到mrc或st文件中供观看。
340:判断是否满足重构精度,是则执行步骤360,否则执行步骤350;
350:读取切片的重构图像值,返回步骤320执行;
360:输出切片重构的图像像素值X(k);
370:判断是否完成所有切片的图像重构,是则执行步骤380,否则返回步骤310执行;
380:输出物体的重构图像,结束流程。
通过图3可以看出,本发明着重于对重投影和背投影这两个原本耗时的过程进行改进,利用GPU的成本低、速度快以及计算能力强的特点,采用CPU与GPU协调运算的方式,开发出基于GPU的迭代重构图像的并行算法,由主机端(CPU)分配和初始化数组以及一些读写操作,由设备端(GPU)并行进行迭代中要运算处理的数据,由此实现图像重构的加速。
例如,对于重投影过程,GPU并行处理切片重投影的并行度N=2048*114=233472,即使用233472个线程,若每个线程块有256个线程,则共需(2048*114+255)/256≈912个线程块。
GPU内核执行的重投影伪代码如下:
_global_static void reproject_cu(P测,X)
1)begin
2)index=(blockIdx.x*blockDim.x)+threadIdx.x;//确定要计算的P测中的下标
3)根据旋转角度、平移角度和一些其它参数以及X计算P测[index]
4)end
对于背投影过程,GPU并行处理切片背投影的并行度M=2048*400=819200,即采用819200个线程,若每个线程块有256个线程,则共需2048*400+255/256≈3200个线程块。
GPU内核执行的背投影伪代码如下:
_global_static void backproject_cu(P计,P测,X)
1)begin
2)index=(blockIdx.x*blockDim.x)+threadIdx.x;
//确定要计算的X中的下标
3)根据角度和一些其它参数以及P计、P测计算X[index]
4)end
本发明针对上述方法实施例,相应地还提供了实现迭代重构图像的系统实施例,其结构如图4所示,包括依次连接的内存模块400、重构图像读取模块410、重构图像迭代模块420以及显存模块430,其中:
内存模块400,至少存储切片的重构图像值X(0);
重构图像读取模块410,用于将要进行迭代重构图像中的物体分成切片,根据切片上的元素数设置并行执行迭代重构图像的线程数,并传递给重构图像迭代模块420;将存储模块400中的切片的重构图像值传递到显存模块430后,向重构图像迭代模块420发出迭代指令;
重构图像迭代模块420,用于根据该迭代命令和线程数使用相应的多线程并行地根据切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取切片的重构图像值,并存储在显存模块430中。
显存模块430,用于存储重构图像迭代模块420获取的切片的重构图像值X(k)。
重构图像读取模块410将该物体分成数目为该物体宽度像素值SY的切片,切片在投影图像上的元素数为N=SX*ANG_NUM,SX为该物体长度的像素值,ANG_NUM为该物体旋转角度的总数;切片在重构图像上的元素数为M=SX*SZ,SZ为该物体高度的像素值;将切片在投影图像上的元素数N设置为并行执行重投影算法的线程数,将切片在重构图像上的元素数M设置为并行执行背投影算法的线程数;将设置的线程数N和线程数M传递给重构图像迭代模块。
上述系统实施例还包括分别连接重构图像迭代模块420、显存模块430以及重构图像读取模块410的重构重构图像检验模块440,其中:
重构图像读取模块410根据物体的大小、旋转角度的总数确定投影图像值P计的切片数、每一切片上的元素数,分别设置重投影并行操作和背投影并行操作相应的线程数及线程块,并传递给重构图像迭代模块420;在内存模块400中以切片为单位进行相应数组的分配重构图像数据的初始化;
重构图像迭代模块420根据重投影的线程数及线程块将并行获取的投影图像值P计存储显存模块430中,根据背投影的线程数及线程块将并行获取的切片上各元素的重构图像值X(k)存储在显存模块430中,向重构图像检验模块440发出检验指令;
重构图像检验模块440,用于根据该检验指令对显存模块430中相应切片上各元素的重构图像值X(k)进行精度检验,并将检验结果传递给重构图像读取模块410;
重构图像读取模块410根据该检验结果向重构图像迭代模块420发出针对当前切片的迭代指令或针对下一切片的迭代指令。
重构图像读取模块410若判断检验结果为未满足要求,则向重构图像迭代模块420发出针对当前切片的迭代指令;若判断检验结果为满足要求,且判断未完成所有切片的图像重构操作,则在将内存模块400中下一切片初始的重构图像值X(0)和投影图像值P测传递到显存模块430后,向重构图像迭代模块420发出针对下一切片的迭代指令。
重构图像读取模块410在判断已完成所有切片的图像重构操作后,从显存模块430中读取所有切片上各元素的重构图像值X(k),并作为物体的重构图像值存储到内存模块中。
重构图像读取模块410获取切片的初始的重构图像值X(0),并在传递到显存模块430后发出迭代指令;
重构图像迭代模块420根据该迭代命令,使用N个线程并行地对切片的投影图像中N个元素根据初始的重构图像值X(0)或从显存模块430读取的重构图像值X(k)执行重投影算法,计算获取切片的投影图像值P计;使用M个线程并行地对切片的P计和测量获取的该切片的投影图像值P测执行背投影算法,计算获取切片的重构图像值X(k),k为等于1或大于1的整数。
上述系统实施例还包括分别连接重构图像迭代模块420、显存模块430以及重构图像读取模块410的重构重构图像检验模块440,其中:
重构图像迭代模块420将并行获取的切片上各元素的重构图像值X(k)存储在显存模块430中,并向重构图像检验模块440发出检验指令;
重构图像检验模块,用于根据该检验指令对显存模块430中相应切片上各元素的重构图像值X(k)进行精度检验,并将检验结果传递给重构图像读取模块410;
重构图像读取模块410根据该检验结果向重构图像迭代模块420发出针对当前切片的迭代指令或针对下一切片的迭代指令。
重构图像读取模块410若判断检验结果为不满足迭代精度,则向重构图像迭代模块420发出针对当前切片的第一迭代指令;若判断该检验结果为满足迭代精度,则将从内存模块400读取的下一切片初始的重构图像值X(0)传递到显存模块430中,并向重构图像迭代模块420发出针对下一切片的第二迭代指令;
重构图像迭代模块420根据第一迭代指令依次通过重投影算法和背投影算法重新计算获取当前切片的重构图像值,直至满足迭代精度;或者,根据第二迭代指令依次通过重投影算法和背投影算法计算获取下一切片的重构图像值。
重构图像读取模块410在判断重构图像迭代模块420完成对物体的所有切片的迭代重构图像处理后,从显存模块430中读取所有切片的迭代重构图像值,并作为物体的重构图像值写回内存模块400;
内存模块400还存储物体的重构图像值。
本发明在提供了上述方法实施例和系统实施例后,根据重构的数据规模,选取合适的CPU和GPU分别进行迭代重构图像的运算测试,其中CPU采用了Intel公司的i7920,GPU采用Tesla公司的C1060,其详细参数见表1。
表1测试环境
通过采用上面的测试环境进行测试,测试结果如表2,从中可以看出,原本在CPU上需要2天半(3623分钟)才可以重构出来的图像,在GPU上只需要花费75分钟的时间,GPU执行速度是CPU执行速度的48倍以上。
表2测试结果
由本发明给出的上述测试结果可以看出,利用GPU强大的并行计算能力,可以数十倍甚至上百倍地加速迭代重构图像的运算,同时,由于GPU的成本比较低,因此,具有低成本、高并行度以及高速的运算性能。
以上说明仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权力要求书的保护范围为准。
Claims (13)
1.一种实现迭代重构图像的方法,涉及CPU的主机端,其特征在于,还涉及图像处理器GPU的设备端,该方法包括:
所述主机端将要进行迭代重构图像中的物体分成切片,根据所述切片上的元素数设置并行执行所述迭代重构图像的线程数;
所述设备端根据所述线程数使用相应的多线程并行地根据所述切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取所述切片的重构图像值。
2.按照权利要求1所述的方法,其特征在于,所述主机端将要进行迭代重构图像中的物体分成切片,根据所述切片上的元素数设置并行执行所述迭代重构图像的线程数,具体包括:
根据所述物体的大小将该物体分成切片,所述切片的数目为该物体宽度的像素值SY,所述切片在投影图像上的元素数为N=SX*ANG_NUM,所述SX为该物体长度的像素值,所述ANG_NUM为该物体旋转角度的总数;所述切片在重构图像上的元素数为M=SX*SZ,所述SZ为该物体高度的像素值;
将所述切片在所述投影图像上的元素数N设置为并行执行所述重投影算法的线程数;将所述切片在所述重构图像上的元素数M设置为并行执行所述背投影算法的线程数。
3.按照权利要求2所述的方法,其特征在于,在所述设备端通过重投影算法和背投影算法计算获取所述切片的重构图像值之前,还包括:
所述主机端通过赋0值或随机值或背投影方法获取所述切片的初始的重构图像值X(0),并传递到所述设备端的显存中。
4.按照权利要求3所述的方法,其特征在于,所述设备端根据所述线程数使用相应的多线程并行地根据所述切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取所述切片的重构图像值,具体包括:
所述设备端使用N个线程并行地对所述切片的投影图像中N个元素根据初始的重构图像值X(0)或计算获取的重构图像值X(k)执行所述重投影算法,计算获取所述切片的投影图像值P计;使用M个线程并行对所述切片的P计和测量获取的该切片的投影图像值P测执行背投影算法,计算获取所述切片的重构图像值X(k),所述k为等于1或大于1的整数。
5.按照权利要求4所述的方法,其特征在于,所述主机端在将所述N设置为并行执行所述重投影算法的线程数以及将所述M设置为并行执行所述背投影算法的线程数的同时,还包括:
根据GPU线程块中的线程数BLOCKDIM,设置并行执行所述重投影算法的第一GPU线程块的块数为(SX*ANG_NUM+BLOCKDIM-1)/BLOCKDIM,该第一GPU线程块中每一线程用于计算获取所述投影图像值P计的一个元素;设置并行执行所述背投影算法的第二GPU线程块的块数为(SX*SZ+BLOCKDIM-1)/BLOCKDIM,该第二GPU线程块中每一线程用于计算获取所述重构图像值X(k)的一个元素。
6.按照权利要求4或5所述的方法,其特征在于,还包括:
所述主机端检验所述切片的重构图像值X(k)是否满足迭代精度;
若检验结果为不满足所述迭代精度,则命令所述设备端针对该切片依次通过所述重投影算法和所述背投影算法重新计算获取所述切片的重构图像值,直至满足所述迭代精度;若检验结果为满足所述迭代精度,将从所述内存读取的下一切片初始的重构图像值X(0)传递到所述显存中,待所述设备端依次通过所述重投影算法和所述背投影算法计算获取所述切片的重构图像值。
7.按照权利要求6所述的方法,其特征在于,还包括:
所述主机端在判断所述设备端完成对所述物体的所有切片的迭代重构图像处理后,从所述显存中读取所有切片的迭代重构图像值,并作为所述物体的重构图像值写回所述内存。
8.一种实现迭代重构图像的系统,其特征在于,包括依次连接的内存模块、重构图像读取模块、重构图像迭代模块以及显存模块,其中:
重构图像读取模块,用于将要进行迭代重构图像中的物体分成切片,根据所述切片上的元素数设置并行执行所述迭代重构图像的线程数,并传递给重构图像迭代模块;将存储模块中的所述切片的重构图像值传递到显存模块后,向重构图像迭代模块发出迭代指令;
重构图像迭代模块,用于根据所述迭代命令和所述线程数使用相应的多线程并行地根据所述切片的重构图像值和测量获取的该切片投影图像值,依次通过重投影算法和背投影算法计算获取所述切片的重构图像值。
9.按照权利要求8所述的系统,其特征在于,
所述重构图像读取模块将该物体分成数目为该物体宽度像素值SY的切片,所述切片在投影图像上的元素数为N=SX*ANG_NUM,所述SX为该物体长度的像素值,所述ANG_NUM为该物体旋转角度的总数;所述切片在重构图像上的元素数为M=SX*SZ,所述SZ为该物体高度的像素值;将所述切片在所述投影图像上的元素数N设置为并行执行所述重投影算法的线程数,将所述切片在所述重构图像上的元素数M设置为并行执行所述背投影算法的线程数;将设置的线程数N和线程数M传递给所述重构图像迭代模块。
10.按照权利要求9所述的系统,其特征在于,
所述重构图像读取模块获取所述切片的初始的重构图像值X(0),并在传递到所述显存模块后发出所述迭代指令;
所述重构图像迭代模块根据该迭代命令使用N个线程并行地对所述切片的投影图像中N个元素根据初始的重构图像值X(0)或从所述显存模块读取的重构图像值X(k)执行所述重投影算法,计算获取所述切片的投影图像值P计;使用M个线程并行对所述切片的P计和测量获取的该切片的投影图像值P测执行背投影算法,计算获取所述切片的重构图像值X(k),所述k为等于1或大于1的整数。
11.按照权利要求10所述的系统,其特征在于,还包括分别连接重构图像迭代模块、所述显存模块以及所述重构图像读取模块的重构重构图像检验模块,其中:
所述重构图像迭代模块将并行获取的切片上各元素的重构图像值X(k)存储在显存模块中,并向重构图像检验模块发出检验指令;
重构图像检验模块,用于根据该检验指令对所述显存模块中相应切片上各元素的重构图像值X(k)进行迭代精度的检验,并将检验结果传递给所述重构图像读取模块;
所述重构图像读取模块根据该检验结果向所述重构图像迭代模块发出针对当前切片的迭代指令或针对下一切片的迭代指令。
12.按照权利要求11所述的系统,其特征在于,
所述重构图像读取模块若判断该检验结果为不满足所述迭代精度,则向所述重构图像迭代模块发出针对当前切片的第一迭代指令;若判断该检验结果为满足所述迭代精度,则将从所述内存模块读取的下一切片初始的重构图像值X(0)传递到所述显存模块中,并向所述重构图像迭代模块发出针对下一切片的第二迭代指令;
所述重构图像迭代模块根据第一迭代指令依次通过所述重投影算法和所述背投影算法重新计算获取所述当前切片的重构图像值,直至满足所述迭代精度;或者,根据第二迭代指令依次通过所述重投影算法和所述背投影算法计算获取所述下一切片的重构图像值。
13.按照权利要求12所述的系统,其特征在于,
所述重构图像读取模块在判断所述重构图像迭代模块完成对所述物体的所有切片的迭代重构图像处理后,从所述显存模块中读取所有切片的迭代重构图像值,并作为所述物体的重构图像值写回所述内存模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100505680A CN102163319B (zh) | 2011-03-02 | 2011-03-02 | 一种实现迭代重构图像的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100505680A CN102163319B (zh) | 2011-03-02 | 2011-03-02 | 一种实现迭代重构图像的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102163319A true CN102163319A (zh) | 2011-08-24 |
CN102163319B CN102163319B (zh) | 2012-10-31 |
Family
ID=44464531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100505680A Active CN102163319B (zh) | 2011-03-02 | 2011-03-02 | 一种实现迭代重构图像的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102163319B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631568A (zh) * | 2013-12-20 | 2014-03-12 | 厦门大学 | 面向医学图像的多线程并行计算方法 |
CN109740549A (zh) * | 2019-01-08 | 2019-05-10 | 西安电子科技大学 | 基于半监督cnn的sar图像目标检测系统和方法 |
CN109902059A (zh) * | 2019-02-28 | 2019-06-18 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
CN109959887A (zh) * | 2017-12-26 | 2019-07-02 | 深圳先进技术研究院 | 一种三维磁共振成像重建方法、装置、应用及可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101283913A (zh) * | 2008-05-30 | 2008-10-15 | 首都师范大学 | Ct图像重建的gpu加速方法 |
US20080267480A1 (en) * | 2005-12-19 | 2008-10-30 | Koninklijke Philips Electronics N. V. | Iterative Image Reconstruction of a Moving Object From Projection Data |
CN101596113A (zh) * | 2008-06-06 | 2009-12-09 | 中国科学院过程工程研究所 | 一种ct并行重建系统及成像方法 |
-
2011
- 2011-03-02 CN CN2011100505680A patent/CN102163319B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080267480A1 (en) * | 2005-12-19 | 2008-10-30 | Koninklijke Philips Electronics N. V. | Iterative Image Reconstruction of a Moving Object From Projection Data |
CN101283913A (zh) * | 2008-05-30 | 2008-10-15 | 首都师范大学 | Ct图像重建的gpu加速方法 |
CN101596113A (zh) * | 2008-06-06 | 2009-12-09 | 中国科学院过程工程研究所 | 一种ct并行重建系统及成像方法 |
Non-Patent Citations (1)
Title |
---|
《微电子学与计算机》 20090831 万晓华 等 一种冷冻电子断层三维重构的并行迭代算法 全文 1-13 第26卷, 第8期 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631568A (zh) * | 2013-12-20 | 2014-03-12 | 厦门大学 | 面向医学图像的多线程并行计算方法 |
CN109959887A (zh) * | 2017-12-26 | 2019-07-02 | 深圳先进技术研究院 | 一种三维磁共振成像重建方法、装置、应用及可读介质 |
CN109740549A (zh) * | 2019-01-08 | 2019-05-10 | 西安电子科技大学 | 基于半监督cnn的sar图像目标检测系统和方法 |
CN109740549B (zh) * | 2019-01-08 | 2022-12-27 | 西安电子科技大学 | 基于半监督cnn的sar图像目标检测系统和方法 |
CN109902059A (zh) * | 2019-02-28 | 2019-06-18 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
CN109902059B (zh) * | 2019-02-28 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种cpu与gpu之间的数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102163319B (zh) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tang et al. | Collision-streams: Fast GPU-based collision detection for deformable models | |
Zaspel et al. | Solving incompressible two-phase flows on multi-GPU clusters | |
CN102609978B (zh) | 基于cuda架构的gpu加速锥束ct图像重建的方法 | |
Rodrigues et al. | GPU acceleration of cutoff pair potentials for molecular modeling applications | |
Fan et al. | GPU cluster for high performance computing | |
Gorbunov et al. | ALICE HLT high speed tracking on GPU | |
CN113016009A (zh) | 使用一个或更多个神经网络的多级图像重建 | |
CN102163319B (zh) | 一种实现迭代重构图像的方法及系统 | |
Avril et al. | Fast collision culling in large-scale environments using GPU mapping function | |
Gao et al. | gHull: A GPU algorithm for 3D convex hull | |
Hasan et al. | Performance prediction model and analysis for compute-intensive tasks on GPUs | |
Chen et al. | Simple models of the impact of overlap in bucket rendering | |
Zhang et al. | Gpu-based implementation of finite element method for elasticity using cuda | |
Liu et al. | Parallel reconstruction of neighbor-joining trees for large multiple sequence alignments using CUDA | |
Zheng et al. | A distributed multi-GPU system for high speed electron microscopic tomographic reconstruction | |
Boratto et al. | Heterogeneous computational model for landform attributes representation on multicore and multi-GPU systems | |
Huynh et al. | TP-PARSEC: A task parallel PARSEC benchmark suite | |
Salinas et al. | A fast and efficient integration of boundary conditions into a unified CUDA Kernel for a shallow water solver lattice Boltzmann Method | |
Ding et al. | An automatic performance model-based scheduling tool for coupled climate system models | |
Yong et al. | Parallel GPU-based collision detection of irregular vessel wall for massive particles | |
Avril et al. | Collision detection: Broad phase adaptation from multi-core to multi-GPU architecture | |
Frolov et al. | An auto-programming approach to Vulkan | |
Bäckman | Collision Detection of TriangleMeshes Using GPU | |
Garcia et al. | Fast Data Parallel Radix Sort Implementation in DirectX 11 Compute Shader to Accelerate Ray Tracing Algorithms | |
Li et al. | Implementing high-performance intensity model with blur effect on gpus for large-scale star image simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20201116 Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province Patentee after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: 100085 Beijing, Haidian District on the road to information on the ground floor, building 2-1, No. 1, C Patentee before: Inspur (Beijing) Electronic Information Industry Co.,Ltd. |