首页 > 解决方案 > python scikit-learn extract_patches_2d 有跨步选项吗?

问题描述

我在使用 512x512 图像制作补丁时遇到问题。我正在尝试提取步幅为 32 的 64x64 补丁,这是补丁宽度大小的一半。

我发现 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])

标签: pythonscikit-learnpatchunity3d-unet

解决方案


extract_patches_2d 没有 stride 参数(也许您可以将其作为功能请求添加到他们的 github)。

我看到了两种可能的解决方法,您可以编写自己的函数(这很简单),或者您可以在使用该函数后选择所需的补丁。

我会去第一个。


推荐阅读