【发布时间】:2011-06-08 20:46:39
【问题描述】:
我正在编写一个可以帮助我校准和堆叠图像的软件 - 这种技术通常用于天文学/天文摄影中,以减少噪音并消除光学问题,例如渐晕。我将开始更详细地解释:
校准包含 3 个文件 - 偏置、暗场和平场。从主图像中减去偏差和暗,然后将主图像除以平场。正如您可以想象的那样,所有这些操作都是逐像素的。所有这些都不是问题,我已经对其进行了编程,并且效果很好。我一次打开一张图像,校准它然后关闭它。一边走一边释放记忆。
但是,我还需要能够堆叠图像,即平均它们,或取中值。
我的问题是,我应该先校准每个图像,将其保存在临时目录中,然后逐行读取每个图像并平均结果吗?继续写下每个平均行。
或者
我是否应该将每张图像都保存在内存中(可能会变得非常大),校准原始像素,然后保存堆叠的图像?
在这种情况下最好的行动方案是什么?
像素数组在我操作它们时存储为(double*)rawPixels。
【问题讨论】:
-
尝试两种方案并评估结果,然后选择一个 :-) 如果遇到问题,请在此处发布代码...
-
所有图像是否同时适合 1:物理内存 2:虚拟内存地址空间?你能只为这个应用程序耗尽所有内存吗?
-
@Frederik:你比我快一分钟;-)。另一个想法:让用户决定(例如,通过某种选项)他/她更喜欢快速解决方案还是节省内存的解决方案。
-
您也可以采用混合方法:在内存中分配一些图像,在磁盘中分配一些图像。创建一个“图像缓冲区”:当它填满时,开始写入磁盘。使用缓冲区大小来查看哪个大小表现最好,或者让用户决定
标签: performance optimization batch-processing