我试图在双时相 RapidEye 多光谱图像上运行 Mort Canty 的http://mcanty.homepage.t-online.de/ 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 浮点数组也会引发内存错误。任何人都知道如何解决这个问题?这是我的第一篇文章,所以任何关于如何发布的建议也将受到欢迎。
问候