批量处理大量文件 - 存储在内存中还是先写入磁盘?

时间:2011-06-08 20:46:40

标签: performance optimization batch-processing

我正在编写一个可以帮助我校准和堆叠图像的软件 - 这种技术通常用于天文学/天文摄影,以减少噪音并消除光学问题,如渐晕。我将首先详细解释一下:

校准由3个文件组成 - 偏置,暗和平场。从主图像中减去偏差和暗,然后将主图像除以平场。所有这些操作都是逐像素的,你可以想象。所有这一切都不是问题,我已经编程了它并且工作得很好。我一次打开一张图像,校准它然后关闭它。在我走的时候释放内存。

然而,我还需要能够堆叠图像,即平均它们,或取中位数。

我的问题是,我应该首先校准每个图像,将其保存在临时目录中,然后逐行读取每个图像并平均结果吗?在我继续写下每个平均行。

或者

我应该将每张图像保存在内存中(可能会变得非常大),校准原始像素然后保存堆叠图像吗?

在这种情况下,最佳做法是什么?

当我操作它们时,像素数组存储为(double*)rawPixels

1 个答案:

答案 0 :(得分:2)

您还可以预先为平均/中值图像(结果)分配空间,并在迭代图像时计算它。在伪代码中:

Image average;
foreach( Image i in Images){
    Calibrate(i);
    UpdateAverage( average, i );
}

嗯,不是那么简单,但你明白了