廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!

文章目录
  1. 1. 前言
  2. 2. GPU用于基本的图像处理操作
    1. 2.1. 滤波
    2. 2.2. 插值
    3. 2.3. 距离变换
  3. 3. GPU用于算法
    1. 3.1. 图像配准
    2. 3.2. 图像分割
  4. 4. GPU讨论
    1. 4.1. 编程语言和库

前言

  • 通常情况下GPU(图像处理单元)与CPU(中央处理单元)的理论性能相差10倍,GPU强于CPU。
  • GPU是多数据并行设计,性能取决于给定算法的并行化成程度。它主要用于苛刻的重建算法、医学图像、超声波、光学成像、显微技术。
  • 本文主要介绍GPU用于医学图像处理的4个方面:
    1. 基本的图像处理操作,如滤波和插值
    2. 医学成像中最常用的算法: 图像配准,图像分割和图像去噪
    3. 讨论特定于不同形式(例如,CT,MRI和超声波)的算法和实现
    4. GPU加速医学成像的未来挑战和可能性的讨论

GPU用于基本的图像处理操作

  • CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

    滤波

  • 由滤波卷积公式可知,卷积非常适合并行处。
  • GPU可以高效地加速多维FFT,因为每个GPU线程可以独立处理沿着2D或3D图像的每个单独行的数据。相比之下,基于GPU的一维FFT通常需要非常大量的样本才能提高速度。
  • 通过应用和组合许多小的可分离滤波器而不是一个大的不可分离滤波器来加速卷积。理论上,这可以将2D所需乘法次数减少5倍,3D减少25次,4D减少300次。
  • 基于GPU的过滤已经完成了大量的工作。 但是,在2,3和4维中仍然不存在可分离和不可分离卷积的免费库。

插值

  • 插值是GPU实现最大优势的应用程序。 由于计算机图形很大程度上依赖于插值计算,GPU已经被赋予了特殊的专用硬件支持(纹理存储器)来加速这些操作。 在医学成像中,对于从图像配准到重建CT数据的算法,插值是一个重要的处理步骤。
  • Ljung等人(2006)因此在GPU上执行了块间插值以提高可视化的质量。 Kraus等人(2007)使用GPU加速实现了边缘定向图像插值,以实现实时升频采样而不会产生振动伪像。

距离变换

  • 距离计算可以针对每个元素独立执行,因此非常适合GPU实现。

GPU用于算法

图像配准

  • 图像配准是医学成像中最常见的算法之一,也是GPU实现最多的算法之一。 其中一个原因是GPU对线性插值的硬件支持,从而可以非常高效地转换图像和体积。

图像分割

  • 分割仍然是一个活跃的研究领域,目前还没有发现可以解决所有问题的单一分割算法。
  • 基于GPU的图像分割可以用于三个目的:

    1. 快速比较多个候选分割算法。
    2. 一旦建立了工作分割算法,GPU可以加速大数据集的自动分割。
    3. GPU还可以执行交互式分割和可视化,用户可以帮助算法提供令人满意的结果。
  • 组合的交互式分割和可视化非常适合GPU,因为已经在GPU内存中的数据可以非常高效地渲染。

GPU讨论

  • 全球显存的尺寸目前为1GB(例如Nvidia GTX 285)至6GB(例如Nvidia GTX Titan)用于消费者显卡,4-8GB用于专业显卡。
  • 对于工作站,CPU内存容量可以很容易地从4 GB到128 GB不等。对于2D图像处理来说,6GB的全局内存通常就足够了,但对于3D图像处理而言,它可能太少。

编程语言和库

  • CUDA编程语言显然使得为通用计算编程GPU变得更加容易。 CUDA的主要缺点是它只支持Nvidia GPU。
  • OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准。
  • 使用CUDA和OpenCL编写的代码可以产生不同的性能。 CUDA目前提供的更大优势是Nvidia致力于为其专有平台提供高度优化的库。

科学上网(翻墙)教程!

更多精彩内容,请扫描二维码关注公众号:轮子工厂,公众号内回复:

1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本计算机类经典书籍;
3.回复【开发工具】:获取几大主流编程语言的开发工具~
4.回复【内推】:可帮你内推到大厂工作。
文章目录
  1. 1. 前言
  2. 2. GPU用于基本的图像处理操作
    1. 2.1. 滤波
    2. 2.2. 插值
    3. 2.3. 距离变换
  3. 3. GPU用于算法
    1. 3.1. 图像配准
    2. 3.2. 图像分割
  4. 4. GPU讨论
    1. 4.1. 编程语言和库