我試圖運行Mort Canty的http://mcanty.homepage.t-online.de/在雙時相RapidEye多光譜圖像上實現Python iMAD。它基本上計算兩幅圖像的典型相關性,然後將它們相減。我遇到的問題是 圖像是5000 x 5000 x 5(帶)像素。如果我嘗試在 上運行此圖像,則會出現內存錯誤。大衛星圖像處理
會使用像pyTables這樣的東西幫助我嗎?
Mort Canty的代碼試圖做的是使用gdal加載圖像,然後將它們存儲在10 x 25,000,000的數組中。
# initial weights
wt = ones(cols*rows)
# data array (transposed so observations are columns)
dm = zeros((2*bands,cols*rows))
k = 0
for b in pos:
band1 = inDataset1.GetRasterBand(b+1)
band1 = band1.ReadAsArray(x0,y0,cols,rows).astype(float)
dm[k,:] = ravel(band1)
band2 = inDataset2.GetRasterBand(b+1)
band2 = band2.ReadAsArray(x0,y0,cols,rows).astype(float)
dm[bands+k,:] = ravel(band2)
k += 1
即使只是創建一個10 x 25,000,000 numpy浮點陣列拋出一個內存錯誤。任何人都有如何解決這個問題的好主意?這是我的第一篇文章,因此任何有關如何發佈的建議都會受到歡迎。
問候
我仍然得到內存不足的錯誤,如果我指定的D型到 'F':回溯(最近通話最後一個): 文件 「C:\ pythonxy \ iMad.py」,線路172,在 的main() 文件「C:\ pythonxy \ iMad.py」,第79行,主 dm =零((2 *條帶,列*行),dtype ='f') MemoryError順便提一句,我有8克的內存。是否有任何簡單的方法,例如使用pytables將這些大數組寫入hdf5文件,並像通常的numpy數組一樣操作它們? –
JEquihua