我正在开发一个C#WPF应用程序,它使用来自许多图像的像素数据来处理一个图像。
问题在于,使用上述方法,所有打开的图像必须保留在存储器中,直到整个操作完成 例如,如果我打开分辨率为4160x3120的50张图像,则需要4160 * 3120 * 3 * 50字节:大约1857兆字节的内存。
是否有任何可能的解决方案不需要所有图像都在内存中,或任何其他解决方案来减少内存使用?
答案 0 :(得分:1)
我正在开发一个C#WPF应用程序,它使用来自许多图像的像素数据来处理一个图像。
如果您需要来自许多图像的像素数据,那么您需要它们在内存中。您无法直接从磁盘处理像素或从磁盘处理像素。您的方法应该是尽量减少所需的图像。
如果像素处理来自相同的相对位置,则可能将图像分成多个部分(例如四分之一)。
答案 1 :(得分:0)
很抱歉,但我认为你问题的直接答案是否定的。
如果您需要在运行时处理所有图像数据,则需要将所有图像数据都存储在内存中。在使用医学图像或图像处理算法进行3D渲染,模式识别等的某些应用中,这种情况非常普遍,这就是为什么这种系统通常需要很好的硬件才能运行的原因。
你在不安全的环境中做正确的事情,你应该尽可能多地使用TPL(任务并行库)。
更高的性能取决于您的算法允许您做什么。