使用C#中的GPU*比较两个图像

本文关键字:两个 图像 比较 中的 GPU 使用 | 更新日期: 2023-09-27 18:22:11

无论是使用OpenCV(不喜欢)、DirectX、Direct3D、OpenGL等,我都想知道是否可以使用GPU来获得两个图像的差异。因此,无论目标机器是否安装了Nvidia CUDA卡,该库都只需利用现有的任何GPU对图像执行操作。我已经看了,也看了,但找不到一个为C#做这件事的库。

这个问题非常简单和具体:哪个C#库有一个函数/API-call,可以使用GPU比较两个图像?

(我已经可以在C#中使用指针和不安全的代码快速完成这项工作,但如果在GPU上以某种方式完成,速度会快得多)

使用C#中的GPU*比较两个图像

如果你想在GPU上解决这个问题,请仔细考虑。您必须将数据传输到GPU,然后配置并启动GPU程序。这需要一些时间。由于GPU程序将非常小,因此开销可能大于性能增益。因此,首先尝试在CPU上并行化比较。GPU实现可能更慢(但也可能更快)。

有很多API可以让你对GPU进行编程。据我所知,它们中没有一个包含直接可用的C#代码。

首先是图形库(DirectX、OpenGL)。它们允许您通过计算着色器对GPU进行编程。这些API有C#绑定,例如SharpDX、SlimDX、OpenTK。但是,计算着色器需要能够执行这些着色器阶段的图形卡。

还有纯计算API,比如CUDA或OpenCL。CUDA仅限于nVidia GPU。OpenCL应该在大多数硬件上运行。但图形设备也有一些限制。不过,它们通常低于计算着色器。OpenTK也是OpenCL的C#包装器。