CUDA 医学成像是最早利用 GPU计算加快性能的应用之一

信号与图像处理

很多信号与图像处理算法的计算密度非常高,随着GPU通用计算的快速发展,越来越多的算法实现了在GPU上运行,获得令人满意的加速。在NVIDIA推出CUDA技术之前,尽管开发不方便,不少研究者利用图形API和各种Shader语言(HLSL、GLSL、Cg等)实现了一些图像分割、CT图像重建、快速傅立叶变换、图像以及音视频编解码等算法。AMD的Brook+尤其是CUDA技术的推出极大地方便了在GPU上开发信号与图像处理并行算法。

AMD的Stream SDK和NVIDIA 的CUDA SDK发布时就包含了各自经优化后的基本线性代数例程(BLAS)和快速傅立叶变换库(FFT)。2008年Georgia Tech的Andrew Kerr等开发了基于CUDA平台的VSIPL(Vector Signal Image Processing Library)[19],支持向量和矩阵运算,快速FIR(Finite Impulse Response,有限冲击响应)滤波,矩阵的QR分解等;2009年6月,NVIDIA又发布了专注于图像和视频处理的库NPP(NVIDIA Performing Primitives),对一些统计函数、JPEG编解码、滤波函数、边缘检测算法进行了封装[20];2010年8月,TunaCode宣布对NPP库进行扩展,推出了CUVI Lib(CUDA for Vision and Imaging Lib),增加了NPP中不包含的一些高级计算机视觉和图像处理算法,如光流法、离散小波变换、Hough变换、颜色空间转换等[21]。另外,2010年9月,Graz大学的研究人员发布了专用于图像边缘分割的GPU4Vision库,用GPU实现图像分割算法的加速[22]。NVIDIA主导的OpenVIDIA项目在2010年6月发布了CUDA VisionWorkbench v 1.3.1.0,里面使用OpenGL,Cg,CUDA-C等语言,而且支持OpenCL和DirectCompute的例子会于近期添加,该项目实现了立体视觉、光流法、特征跟踪的一些算法[23]。

在特征提取领域,瑞典的Marten Bjorkman和美国北卡罗来纳大学的Wu等实现了基于CUDA的SIFT(Lowe's Scale Invariant Feature Transform,尺度不变特征)的提取[24];北卡罗来纳州立大学的Christopher Zach等则在GPU上实现KLT算法用于视频中的特征跟踪。在机器学习领域,斯坦福大学的Rajat Raina等在GPU上实现了大规模深度无监督算法DBNs(Deep Belief Networks)和稀疏编码(Sparse Coding)算法;谷歌上的开源项目multisvm则基于CUDA实现了SVM(Support Vector Machine,支持向量机)的多分类器,实验表明加速效果明显[25]。

另外值得一提的是,医学成像是最早利用 GPU计算加快性能的应用之一,GPU通用计算在这一领域的应用日趋成熟,当前许多医学成像领域的算法已在GPU上实现。Digisens和Acceleware AxRecon已经分别开发出能够利用GPU进行计算的用于X线CT和电子断层摄影术的3D成像软件和在无损图像质量的情况下可实时重建图像的软件。Techniscan的开发人员在其新一代全乳房超声波成像系统中将其专有的逆向散射算法在CUDA平台上实现,获得很高的加速比。东京大学Takeyoshi Dohi教授与他的同事则在其实时医疗成像的裸眼立体成像系统中使用GPU加速体绘制过程和后期文件格式转换。另外,比利时安特卫普大学,通用电气医疗集团,西门子医疗,东芝中风研究中心和纽约州立大学水牛城分校的都针对GPU加速CT重建进行了各自的研究,不仅如此,西门子医疗用GPU实现了加速MRI中的GRAPPA自动校准,完成MR重建,快速MRI网格化,随机扩散张量磁共振图像(DT-MRI)连通绘图等算法。其他的一些研究者则把医学成像中非常重要的二维与三维图像中器官分割(如Level Set算法),不同来源图像的配准,重建体积图像的渲染等也移植到GPU上进行计算。

posted @ 2012-03-16 16:06 xin Tech 阅读(...) 评论(...) 编辑 收藏