2011-06-08 51 views
2

我正在寫一個軟件,可以幫助我校準和堆疊圖像 - 這種技術通常用於天文/天文攝影,以減少噪音並擺脫光學問題,如漸暈。我將從更詳細的解釋開始:批量處理大量文件 - 存儲在內存中或首先寫入磁盤?

校準包含3個文件 - 偏移,黑色和平坦字段。從主圖像中減去偏移和黑暗,然後主圖像被平場分割。你可以想象,所有這些操作都是逐個像素的。所有這些都不是問題,我已經編程,它工作得很好。我一次打開一個圖像,校準並關閉它。隨我去發佈內存。

但是,我也需要能夠堆疊圖像,即平均他們,或採取中位數。

我的問題是,我應該先校準每個圖像,將其保存在臨時目錄中,然後逐行讀取每個圖像並對結果取平均值?在我繼續寫下每個平均排。

或者

我要保持在內存中的圖像(這可以得到非常大),校準原始像素,然後保存堆放圖像?

這種情況下最佳的行動方案是什麼?

像素數組存儲爲(double*)rawPixels當我操縱它們。

+2

嘗試這兩種情況下,評估的結果,然後選擇一個:-)這裏郵編,如果你遇到問題... – 2011-06-08 20:50:03

+0

物理內存2:虛擬內存地址空間是否同時滿足?你可以耗盡所有的內存只是這個應用程序? – 2011-06-08 20:51:16

+0

@弗雷德裏克:你比我快了一分鐘;-)。另一個想法是:如果用戶喜歡快速解決方案或節省內存的解決方案,讓用戶決定(例如,用某種選項)。 – 2011-06-08 20:54:23

回答

2

您也可以預先爲平均/中值圖像(結果)分配空間,並在迭代圖像時計算它。在僞代碼:

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

嘛,不就是簡單,但你的想法