I have 20 3D nifty images which sizes are 172x220x156. I want to create a Dataset class and then a DataLoader made of patches of size 32x32x32 cropped from the images.
Each image will have 500 patches like that. so the total number of patches should be 18x500. I have worked with the 2D silces like that before(please see the codes below I used for 2D)
Is there any way to create similar Dataset class with patches from the 18 images??
class Dataset(data.Dataset):
    'characterizes a dataset for pytorch'
    def __init__(self, dir_data, list_IDs):
        self.dir_data = dir_data
        self.list_IDs = list_IDs

    def __len__(self):
        'denotes the total number of samples'
        return len(self.list_IDs)

    def __getitem__(self, item):
        'Generates one sample of data'
        #select sample
        path_mr = os.path.join(self.dir_data, 'mr', self.list_IDs[item])
        path_ct = os.path.join(self.dir_data, 'ct', self.list_IDs[item])

        X = Image.open(path_mr)
        X = np.array(X)  #np.shape(X) = (256,256)
        X = X[:,:,np.newaxis]  #np.shape(X) = (256,256,1)
        X = ToTensor()(X)
        y = Image.open(path_ct)
        y = np.array(y)[:,:,np.newaxis]
        y = ToTensor()(y)
        return X, y