Я пытаюсь масштабировать 3D-массив размером 64x64x64 (с большим размером без куба), сохраняя соотношение сторон.Массив 3D-массива
Я сделал то же самое в 2D массив как это:
pad = Input.size[1]-Input.size[0]
padLeft = math.ceil(pad/2)
padRight = math.floor(pad/2)
if(pad > 0):
paddedInput = np.pad(Input, ((0,0), (padLeft,padRight)), 'constant', constant_values=(0,0))
else:
paddedInput = np.pad(Input, ((math.fabs(padLeft),math.fabs(padRight)), (0,0)), 'constant', constant_values=(0,0))
Output = misc.imresize(paddedInput,(InputHeight,InputHeight))
Есть ли способ, чтобы достичь того же в N (= 3) размеры?
Edit: Моя попытка преобразования в 3D:
pad = np.zeros((3,1))
pad[0,0] = max(Input.shape) - Input.shape[0]
pad[1,0] = max(Input.shape) - Input.shape[1]
pad[2,0] = max(Input.shape) - Input.shape[2]
paddedInput = np.zeros((max(Input.shape),max(Input.shape),max(Input.shape)))
print(paddedInput.shape)
for dimension in range(0,3):
padLeft = math.ceil(pad[dimension,0]/2)
padRight = math.floor(pad[dimension,0]/2)
if((padLeft > 0) or (padRight > 0)):
if dimension == 0:
paddedInput = np.pad(Input, ((padLeft,padRight),(0,0),(0,0)), 'constant', constant_values=0)
elif dimension == 1:
paddedInput = np.pad(paddedInput, ((0,0), (padLeft,padRight),(0,0)), 'constant', constant_values=0)
elif dimension == 2:
paddedInput = np.pad(paddedInput, ((0,0),(0,0), (padLeft,padRight)), 'constant', constant_values=0)
print(paddedInput.shape)
Это работает, но размеры, которые получают мягкие обиты с двойным количеством, они должны быть ...
Какие оси вы хотите расширить? – wwii