Im пытается запустить Mort Canty's http://mcanty.homepage.t-online.de/ Реализация iMAD на Python на bitemporal RapidEye Мультиспектральные изображения. Что в основном вычисляет каноническую корреляцию для двух изображений, а затем вычитает их. Проблема, с которой я сталкиваюсь, - это , что изображения имеют размер 5000 х 5000 х 5 (диапазонов) пикселей. Если я попытаюсь запустить это на , все изображение получит ошибку памяти.Обработка большого спутникового изображения
Будет ли использование чего-то типа pyTables помочь мне в этом?
Какой код Морта Кэнти пытается сделать, так это то, что он загружает изображения с помощью gdal, а затем сохраняет их в массиве размером 10 х 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 вызывает ошибку памяти. У кого-нибудь есть хорошая идея, как обойти это? Это мой первый пост, поэтому любые советы о том, как публиковать сообщения, также приветствуются.
Приветствия
я все еще получаю ошибку памяти, если я указать DTYPE к 'е': TraceBack (самый последний вызов последнего): Файл "C: \ PythonXY \ iMad.py", строка 172, в основной() File «C: \ pythonxy \ iMad.py», строка 79, в основном dm = zeros ((2 * полосы, cols * rows), dtype = 'f') MemoryError Кстати, у меня есть 8 гб баранов. Есть ли простой способ, например, записать эти большие массивы в файл hdf5 с помощью pytables и работать с ними, как обычные массивы numpy? –
JEquihua