Как восстановить изображение / массив из списка извлеченных патчей в Python? - PullRequest
0 голосов
/ 19 ноября 2018

У меня размер изображения 256x256. Я извлечу изображение в патчи размером 32x32, а центр патча будет скользить с шагом окна 20. Если извлеченный размер патча меньше 32x32. Затем добавьте нулевое заполнение, чтобы получить 32x32. Код для извлечения патча:

import numpy as np
image = np.random.randn(256,256)
patch_H, patch_W = 32, 32
step_H, step_W = 20, 20

lst_H = np.arange(0, image.shape[0] + patch_H, step_H)
lst_W = np.arange(0, image.shape[1] + patch_W, step_W)
image_patches =[]
for i in range(len(lst_H)):
  for j in range(len(lst_W)):
    h= lst_H[i]
    w= lst_W[j]
    patch = image[h : h + patch_H, w : w + patch_W]
    # Zero padding
    if (patch.shape[0]!= patch_H or patch.shape[1]!= patch_W):
      patch = np.pad(patch,[(0, patch_H- patch.shape[0]), (0, patch_W- patch.shape[1])], mode='constant')
    patch =patch[None,:,:]
    image_patches.append(patch)
image_patches = np.vstack(image_patches) # (225, 32, 32)

Используя приведенный выше код, я получаю 225 патчей размером 32x32. Из image_patches я хочу создать новое изображение того же размера, что и исходное изображение (256x256), и значения суммируются между перекрывающимися патчами.

Сложность в том, что на первом шаге мне нужно распаковать патчи с нулевым заполнением. Таким образом, я не могу назначить image_rec[h : h + patch_H, w : w + patch_W]+=image_patches[num_patches,:,:] в приведенном ниже коде, если я не распаковал их. Как я мог решить проблему? На мой взгляд, я думаю, что мы должны сохранить словарь, чтобы сохранить другие ключи, такие как нулевой флаг, позиция ... Это то, что я сделал

# Recover the image
image_rec = np.zeros (image.shape)
num_patches=0
for i in range(len(lst_H)):
  for j in range(len(lst_W)):
    h= lst_H[i]
    w= lst_W[j]
    image_rec[h : h + patch_H, w : w + patch_W]+=image_patches[num_patches,:,:]
    num_patches +=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...