Извлечение патчей из больших растров: ошибка памяти и слияние нескольких полос? - PullRequest
0 голосов
/ 06 ноября 2019

Я все еще очень плохо знаком с Python, поэтому, пожалуйста, простите, что, вероятно, является основным вопросом.

Поэтому я пытаюсь создать набор обучающих данных с файлом для исправлений изображений и другим для масок. На данный момент они являются большими растрами, из которых я извлекаю патчи. изображение имеет 3 полосы, в то время как маска имеет 1

ds = gdal.Open(A_Clipped, gdal.GA_ReadOnly)
es = gdal.Open(Mask_Clipped, gdal.GA_ReadOnly)

#Raster Info
#print (ds.GetMetadata(),ds.RasterXSize, ds.RasterYSize)
#print (ds.GetProjection())
#print ("Number of raster bands", ds.RasterCount)


band1 = ds.GetRasterBand(1)
band2 = ds.GetRasterBand(2)
band3 = ds.GetRasterBand(3)

mask = es.GetRasterBand(1)

ar1 = band1.ReadAsArray()
ar2 = band2.ReadAsArray()
ar3 = band3.ReadAsArray()

mask_ar= mask.ReadAsArray()

При извлечении патчей я столкнулся с ошибкой памяти и поэтому указал значения max_patches меньше, чем хотелось бы:

###Extract Patches###

A1_image = ar1
print('A1 Image shape: {}'.format(A1_image.shape))

patches1 = image.extract_patches_2d(A1_image, (64, 64), max_patches=100)
print('A1Patches shape: {}'.format(patches1.shape))

.
.
.

Mask_image = mask_ar
print('M Image shape: {}'.format(Mask_image.shape))

Mask_patches = image.extract_patches_2d(Mask_image, (64, 64), max_patches=100)
print('M Patches shape: {}'.format(Mask_patches.shape))

ТакМои два вопроса: 1. Есть ли другие способы обойти эту ошибку памяти (возможно, сохранение параметров?), чтобы я мог указать большее количество исправлений? Для справки, мои формы изображения: Форма изображения: (8964, 8180). 2. Необходимо ли теперь объединить 3 массива из 3-полосного изображения вместе?

...