我正在编写一个可以帮助我校准和堆叠图像的软件 - 这种技术通常用于天文学/天文摄影,以减少噪音并消除光学问题,如渐晕。我将首先详细解释一下:
校准由3个文件组成 - 偏置,暗和平场。从主图像中减去偏差和暗,然后将主图像除以平场。所有这些操作都是逐像素的,你可以想象。所有这一切都不是问题,我已经编程了它并且工作得很好。我一次打开一张图像,校准它然后关闭它。在我走的时候释放内存。
然而,我还需要能够堆叠图像,即平均它们,或取中位数。
我的问题是,我应该首先校准每个图像,将其保存在临时目录中,然后逐行读取每个图像并平均结果吗?在我继续写下每个平均行。
或者
我应该将每张图像保存在内存中(可能会变得非常大),校准原始像素然后保存堆叠图像吗?
在这种情况下,最佳做法是什么?
当我操作它们时,像素数组存储为(double*)rawPixels
。
答案 0 :(得分:2)
您还可以预先为平均/中值图像(结果)分配空间,并在迭代图像时计算它。在伪代码中:
Image average;
foreach( Image i in Images){
Calibrate(i);
UpdateAverage( average, i );
}
嗯,不是那么简单,但你明白了