我在从 512x512 图像制作补丁时遇到问题。 我正在尝试以 64 步幅提取 64x32 补丁,这是补丁大小的一半。
我发现scikit-learn extract_patches_2d功能可以从原始图像中提取2d补丁。
当我使用此功能时,似乎该函数提取补丁了 1。
有什么方法可以提取步幅 32 的补丁吗?
def load_train_data(self):
imgs_row, imgs_col = 512,512
train_list = []
train_img = []
label_list = []
label_img = []
train_path = 'C:\Users\Lee Doyle\unet\data\Train'
label_path = 'C:\Users\Lee Doyle\unet\data\Label'
######################Traindata################################
print('-' * 30)
print('load train images...')
print('-' * 30)
for i in glob.glob(train_path + '/*.[tT][iI][fF]'):
train_list.append(abspath(i))
print(len(train_list))
for i in train_list:
# print(i)
img = cv2.imread(i, cv2.IMREAD_GRAYSCALE)
# img=cv2.resize(img,(512,512))
#train_img = image.extract_patches_2d(img, (64,64))
train_img.append(img.astype(np.float32)/255.0)
#train_img.append(img.astype(np.float32)/255.0)
train_img = image.extract_patches_2d(img, (64,64))
train_img = np.array(train_img[i])
extract_patches_2d没有步幅参数(也许你可以作为功能请求添加到他们的 github(。
我看到了两种可能的解决方法,您可以编写自己的函数(非常简单(,也可以在使用该功能后选择所需的补丁。
我会选择第一个。