【问题标题】:Real Time Cuda Image Processing advice实时 Cuda 图像处理建议
【发布时间】:2012-05-06 01:48:18
【问题描述】:

我正在尝试为相机获得 1000fps 的系统实现算法,我需要获取所有图像中每个像素的值,并对 N 中像素 [i] [j] 的演变进行不同的计算图像的数量,用于图像中的所有像素。我有 (unsigned char *ptr) 我想将它们传输到 GPU 并开始实施算法。但我不确定实时处理的最佳选择是什么。 我的系统: CPU Intel Xeon x5660 2.8Ghz(2 个处理器) GPU NVIDIA Quadro 5000

我有以下问题:

  1. 我是否需要向 CUDA 添加任何图像处理库?如果是,你有什么建议?

  2. 我可以为像素 [i,j] 创建一个矩阵,其中包含图像大小中每个像素的图像 [1:n] 的值吗?例如对于 1000 个 200x200 大小的图像,我最终将得到 40000 个矩阵 一个像素包含 1000 个值? CUDA 是否为我提供了一些选项,例如 OpenCV 以获得矩阵?还是向量?

【问题讨论】:

  • 该操作是否将“面向流”,您将不断删除 1000 个帧中最旧的帧并添加最新帧?或者它更像是一个批处理操作,你处理 1000 个帧,然后将它们扔掉并做 1000 个新帧?
  • 我认为应该是“面向流媒体”。
  • 既然您提到了 OpenCV,您可能希望将其作为标签添加到您的问题中。

标签: image-processing opencv matrix cuda gpu


【解决方案1】:

1 - 我需要向 CUDA 添加任何图像处理库吗?

苹果和橙子。每个都有不同的目的。像 OpenCV 这样的图像处理库提供的不仅仅是简单的加速矩阵计算。也许您不需要 OpenCV 在这个项目中进行处理,因为您似乎更愿意直接使用 CUDA。但是您仍然可以使用 OpenCV,以便更轻松地从磁盘加载和写入不同的图像格式。

2 - CUDA 是否为我提供了一些选项,例如 OpenCV 来拥有矩阵?

当然。前段时间我写了一个简单的(教育)应用程序,它使用 OpenCV 从磁盘加载图像并使用 CUDA 将其转换为灰度版本。该项目名为cuda-grayscale。我还没有使用 CUDA 4.x 对其进行测试,但代码显示了在结合 OpenCV 和 CUDA 时如何进行基本操作。

【讨论】:

  • 此外,openCV 使加载/保存/查看图像变得非常容易 - 有助于测试!
【解决方案2】:

听起来您将有 40000 次独立计算,其中每个计算仅在一个(时间)像素内起作用。如果是这样,这对 GPU 来说应该是一个很好的任务。您的 352 核 Fermi GPU 应该能够击败您的 12 个超线程 Xeon 内核。

您计划运行的算法是通用操作吗?听起来可能不是,在这种情况下,您可能必须编写自己的内核。

是的,您可以在 CUDA 中拥有任何类型的元素数组。

这种“面向流”的方法有利于 GPU 实现,因为与通过 PCIe 总线的传输相比,它最大限度地提高了计算数量。它也可能会带来困难,如果您想以特定顺序(例如,从最旧到最新)处理给定像素的 1000 个值,您可能希望避免连续移动内存中的所有帧(以使最新框架的空间)。这会使您对像素值的寻址稍微复杂化,但为了避免移动帧,最好的方法可能是每次添加新帧时用最新帧覆盖最旧的帧。这样一来,您最终会得到一个“帧堆栈”,它的顺序相当好,但在其中某处的旧帧和新帧之间存在不连续性。

【讨论】:

    【解决方案3】:

    我是否需要向 CUDA 添加任何图像处理库? 如果是,你有什么建议?

    披露:我公司开发和营销 CUVILib

    对于同时提供通用功能的 GPU 加速成像库而言,选择很少。 CUVILib 是提供以下选项的选项之一,非常适合您的特定需求:

    1. CuviImage 对象将您的图像数据和图像保存为 2D 矩阵
    2. 您可以编写自己的 GPU 函数并将 CuviImage 用作 2D GPU 矩阵。
    3. CUVILib 已经提供了一组丰富的成像功能,例如颜色操作、图像统计、特征检测、运动估计、FFT、图像变换等,因此您很有可能会找到所需的功能。

    至于 GPU 是否适合您的应用程序的问题:是的!成像是非常适合并行计算的领域之一。

    链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 2014-05-15
      • 2016-08-20
      • 2016-07-20
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多