欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2019100101467
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于GPU的三维医学图像配准相似度计算方法,其特征在于,所述方法包括以下步骤:

步骤一,读取数据,在CPU内存中开辟内存空间,读入两幅相同分辨率的三维医学图像数据,两幅图像分别记为参考图像R和浮动图像F,对三维医学图像进行标记,由于医学图像中的图像主要信息均位于图像中心,忽略图像边缘体素点对最终信息熵的影响,三维图像的总体素个数N=(x-2r)(y-2r)(z-2r),其中x,y,z为三维图像分辨率,r为邻近点半径;

在CPU内存中创建基于邻域空间信息的列向量数组,每个列向量数组包含d=2(2r+1)3=54个元素,参考图像R和浮动图像F的体素分别为Ri,j,k和Fi,j,k,将两幅图像每个对应的体素点与其邻域体素点信息连列,获得联合体素Vi,j,k,代表d维空间点Pi,所有Pi组成联合分布,即d×N大小的矩阵P,表示为P=[P1,…,PN];

步骤二,在显存中开辟空间,传输数据到显存;

在显存中为待运算的数据以及需要存放结果的变量开辟显存空间,CPU将图像数据读入系统内存后,获得图像大小,使用cudaMalloc函数在GPU上开辟相同大小的内存空间并初始化,并开辟两个d×N大小的显存空间用于保存联合灰度直方矩阵P和平均值 以及一个d×d大小的空间用于保存协方差矩阵C,用cudaMemcpy函数将CPU内存中待运算的图像信息数据拷贝到GPU显存中;

步骤三,计算联合体素的平均值 使用GPU中的原子操作,统计 求得

步骤四,分配线程,执行核函数,计算联合体素的平均值 与联合分布P之差P0;

每个线程块分配nthreadsPerBlock=16×16=256个线程,每个线程格分配个线程块,线程块中的线程索引为threadIndex=threadIdx.x+threadIdx.y*blockDim.x,线程格中的线程块索引为blockIndex=blockIdx.x+blockIdx.y*gridDim.x,线程索引为i=threadIndex+blockIndex*blockDim.x*blockDim.y,每个线程i负责计算: 全部线程计算完毕后,Ki组成d×N矩阵P0;

步骤五,计算邻域每个点的协方差:

协方差计算是矩阵乘法运算,通过引入共享内存和矩阵分块概念,将大矩阵分解成若干子矩阵,每个线程块只读取块内共享内存中的子矩阵进行计算,再将共享内存中的矩阵合并得到最终结果,求得协方差C,其中C为d×d矩阵;

步骤六,用cudaMemcpy函数将计算结果传输到CPU内存中,基于CPU计算联合熵;

d

R空间内一组正太分布点的协方差矩阵的信息熵计算如下:

将步骤五求得的协方差C代入上述公式中,求得联合信息熵H(R,F);

步骤七,求参考图像和浮动图像的信息熵H(R)、H(F);

取CR为参考图像的协方差矩阵,CF为浮动图像的协方差矩阵,同样代入公式,求得两幅图像各自的信息熵H(R)、H(F),其中CR为协方差矩阵C左上部分 大小的子矩阵,CF为协方差矩阵C的右下部分 大小的子矩阵;

步骤八,计算区域互信息RMI;

最终区域互信息为RMI(R,F)=H(R)+H(F)-H(R,F),通过区域互信息RMI值可以定量分析判断两幅三维医学图像的相似程度,即参考图像和浮动图像的相似度。

2.如权利要求1所述的一种基于GPU的三维医学图像配准相似度计算方法,其特征在于,所述步骤三中,原子操作的核函数线程索引为index=(threadIdx.x+threadIdx.y×blockDim.x)+(blockIdx.x+blockIdx.y×gridDim.x)×blockDim.x×blockDim.y,其中threadIdx.x和threadIdx.y分别为线程块中x,y维度上的线程索引,blockIdx.x和blockIdx.y分别为线程格中x,y维度上的线程块索引,blockDim.x和blockDim.y分别为线程块x,y维度上的线程数量,gridDim.x和gridDim.y分别为x,y维度上的线程块数量;首先,线程并行读取数据,然后使用原子操作中atomicAdd函数对第d个维度的值进行累加求平均值,此过程循环执行54次,直至求出所有维度的联合体素的平均值

3.如权利要求1或2所述的一种基于GPU的三维医学图像配准相似度计算方法,其特征在于,所述步骤四中,设置dim3类型线程块,每个线程块选择维度为16×16的大小,即共256个线程,为保证总体素数与分配的线程数是整数倍关系,且分配的线程大于或等于总体素数,以向上取整的策略求出分配线程需要的总线程块数为 保证每个体素点都有唯一对应的线程和内核函数参数与计算,每个线程进行独立且相同的操作,根据线程索引i来获取数据和处理数据完成计算。