.net 使用图形卡代替GDI+;用于图像处理

.net 使用图形卡代替GDI+;用于图像处理,.net,graphics,.net,Graphics,我有一个问题,这可能是一个白日梦,但我想知道我的同事们是否能帮我解决这个问题 在我工作的公司里,我们每个月进行数十亿次图像处理。基本上,我们拍摄一幅巨大的图像,将其分割成256像素的正方形图像,对其进行颜色量化,并将其保存为PNG,然后移动到下一幅猛犸象图像。我们采用了很多技术来尽快做到这一点,目前速度非常快,但我认为我们有机会让它在速度上成为明星 应用程序本身是.NET2.0,循环遍历大图像中的各个字节,读取每个较小图像的字节,并在运行量化算法后使用GDI保存图像。我们有几十台运行此应用程序的

我有一个问题,这可能是一个白日梦,但我想知道我的同事们是否能帮我解决这个问题

在我工作的公司里,我们每个月进行数十亿次图像处理。基本上,我们拍摄一幅巨大的图像,将其分割成256像素的正方形图像,对其进行颜色量化,并将其保存为PNG,然后移动到下一幅猛犸象图像。我们采用了很多技术来尽快做到这一点,目前速度非常快,但我认为我们有机会让它在速度上成为明星

应用程序本身是.NET2.0,循环遍历大图像中的各个字节,读取每个较小图像的字节,并在运行量化算法后使用GDI保存图像。我们有几十台运行此应用程序的机器,它们都有Nvidia Geforce 8视频卡(或更好)

有没有一种方法,我可以使用GPU而不是CPU来执行上述任何或所有任务?如果是,我该怎么做?不幸的是,我以前从未编写过类似的代码,所以如果有人能帮助我,我可能需要对它进行彻底的解释(而且要慢慢解释)。

定义大规模?(换句话说,质量是相对的。)

可以使用CUDA-NVIDIA GPU-


需要研究的一些技术:

  • 。这并不是你想要的,因为我不认为它使用GPU(虽然我可以是wong),但它应该比GDI+快很多

  • 。这确实使用GPU进行许多绘图操作,并与Windows图像组件很好地集成。但从您的描述来看,还不清楚GPU优化的绘图操作是否完全符合您的需要

  • 除此之外,您还可以尝试使用像素着色器进行图像处理。这是一个我还没有深入研究的领域,所以我将把它留给其他人评论


    换句话说,Windows图像组件应该可以显著减少PNG加载/保存瓶颈。它提供的操作可能也会帮助以比GDI+更优化的方式分割图像。Direct2D和/或像素着色器应有助于像素级操作。只有在没有更直接的方法对图像执行所需的颜色量化操作时,才需要使用像素着色器。

    看起来CUDA更多的是对图像进行压缩,而不是对图像进行切片。虽然压缩很酷(也是问题的一部分),但在过程结束时,我仍然需要输出PNG。至于大规模,我正在剪切的图像是8192px 1024px。你不是在处理卫星图像吗?事实上不是,但原理是一样的。