def __getitem__(self, index):
    left_img = self.load_image(os.path.join(self.datapath, self.left_filenames[index]))
    right_img = self.load_image(os.path.join(self.datapath, self.right_filenames[index]))
    if self.disp_filenames:
        disparity = self.load_disp(os.path.join(self.datapath, self.disp_filenames[index]))
    else:
        disparity = None
    if self.training:
        (w, h) = left_img.size
        (crop_w, crop_h) = (512, 256)
        x1 = random.randint(0, (w - crop_w))
        y1 = random.randint(0, (h - crop_h))
        left_img = left_img.crop((x1, y1, (x1 + crop_w), (y1 + crop_h)))
        right_img = right_img.crop((x1, y1, (x1 + crop_w), (y1 + crop_h)))
        disparity = disparity[y1:(y1 + crop_h), x1:(x1 + crop_w)]
        processed = get_transform()
        left_img = processed(left_img)
        right_img = processed(right_img)
        return {'left': left_img, 'right': right_img, 'disparity': disparity}
    else:
        (w, h) = left_img.size
        processed = get_transform()
        left_img = processed(left_img).numpy()
        right_img = processed(right_img).numpy()
        top_pad = (384 - h)
        right_pad = (1248 - w)
        assert ((top_pad > 0) and (right_pad > 0))
        left_img = np.lib.pad(left_img, ((0, 0), (top_pad, 0), (0, right_pad)), mode='constant', constant_values=0)
        right_img = np.lib.pad(right_img, ((0, 0), (top_pad, 0), (0, right_pad)), mode='constant', constant_values=0)
        if (disparity is not None):
            assert (len(disparity.shape) == 2)
            disparity = np.lib.pad(disparity, ((top_pad, 0), (0, right_pad)), mode='constant', constant_values=0)
        if (disparity is not None):
            return {'left': left_img, 'right': right_img, 'disparity': disparity, 'top_pad': top_pad, 'right_pad': right_pad, 'left_filename': self.left_filenames[index]}
        else:
            return {'left': left_img, 'right': right_img, 'top_pad': top_pad, 'right_pad': right_pad, 'left_filename': self.left_filenames[index], 'right_filename': self.right_filenames[index]}
def __getitem__(self, index):
    left_img = self.load_image(os.path.join(self.datapath, self.left_filenames[index]))
    right_img = self.load_image(os.path.join(self.datapath, self.right_filenames[index]))
    if self.disp_filenames:
        disparity = self.load_disp(os.path.join(self.datapath, self.disp_filenames[index]))
    else:
        disparity = None
    if self.training:
        (w, h) = left_img.size
        (crop_w, crop_h) = (512, 256)
        x1 = random.randint(0, (w - crop_w))
        y1 = random.randint(0, (h - crop_h))
        left_img = left_img.crop((x1, y1, (x1 + crop_w), (y1 + crop_h)))
        right_img = right_img.crop((x1, y1, (x1 + crop_w), (y1 + crop_h)))
        disparity = disparity[y1:(y1 + crop_h), x1:(x1 + crop_w)]
        processed = get_transform()
        left_img = processed(left_img)
        right_img = processed(right_img)
        return {'left': left_img, 'right': right_img, 'disparity': disparity}
    else:
        (w, h) = left_img.size
        processed = get_transform()
        left_img = processed(left_img).numpy()
        right_img = processed(right_img).numpy()
        top_pad = (384 - h)
        right_pad = (1248 - w)
        assert ((top_pad > 0) and (right_pad > 0))
        left_img = np.lib.pad(left_img, ((0, 0), (top_pad, 0), (0, right_pad)), mode='constant', constant_values=0)
        right_img = np.lib.pad(right_img, ((0, 0), (top_pad, 0), (0, right_pad)), mode='constant', constant_values=0)
        if (disparity is not None):
            assert (len(disparity.shape) == 2)
            disparity = np.lib.pad(disparity, ((top_pad, 0), (0, right_pad)), mode='constant', constant_values=0)
        if (disparity is not None):
            return {'left': left_img, 'right': right_img, 'disparity': disparity, 'top_pad': top_pad, 'right_pad': right_pad, 'left_filename': self.left_filenames[index]}
        else:
            return {'left': left_img, 'right': right_img, 'top_pad': top_pad, 'right_pad': right_pad, 'left_filename': self.left_filenames[index], 'right_filename': self.right_filenames[index]}