Beispiel #1
0
    def __init__(self, train_file, mode='train', n_samples=None):
        self.mode = mode
        self.train_file = open(train_file,'r')
        self.image_lists = []
        for line in self.train_file:
            line = line.strip('\n')
            self.image_lists.append(line)
        self.data_root = 'data/kitti'
        #left image        
        self.left_image = cv2.imread('data/driving/left/0350.png',0)
        self.left_image = self.left_image.astype(np.float32)
        self.max_pixel = np.max(self.left_image)
        #use disp image .pfm          
        self.disp_image, _ = readPFM('data/driving/disp/0350.pfm')
        self.disp_image = self.disp_image.astype(np.int32)
#        #use disp image .png          
#        disp_path = self.data_root + '/disp_occ_0/' + image_name + '.png'
#        disp_image = cv2.imread(disp_path,0)
        
        # use the ct_cost from calculate_ct_cost in local file
        self.d_cost = np.load('data/driving/disp/0350.npy')
        self.d_cost = np.array(self.d_cost)
        self.d_cost = torch.tensor(self.d_cost)
        self.d_cost = self.d_cost.type(torch.FloatTensor)
        
        #use the cost volume geted from mc-cnn https://github.com/jzbontar/mc-cnn        
#        cost_path = self.data_root + '/leftbin/' + image_name + '.bin'
#        d_cost = np.memmap(cost_path, dtype=np.float32, shape=(1, 70, img_h, img_w))
#        p = np.isnan(d_cost)
#        d_cost[p] = 0.0  
#        d_cost = torch.tensor(d_cost)
#        d_cost = d_cost.squeeze(0)
#        d_cost = d_cost.type(torch.FloatTensor)  # [70,h,w]
        
        
        self.img_h , self.img_w = self.left_image.shape
        self.valid_points = []
        #get the valid points list
        for i in range(300, self.img_w-200):
            for j in range(150, self.img_h -150):
                disp_val = self.disp_image[j,i]
                if(disp_val>5 and disp_val < 69):
                    self.valid_points.append([i,j,disp_val])
                   
        random.shuffle(self.valid_points)
        self.valid_points = random.sample(self.valid_points, int(len(self.valid_points)/20))
        
        print(self.d_cost.size())
        print(self.img_h,self.img_w)
def disparity_loader(path):
    path_prefix = path.split('.')[0]
    # print(path_prefix)
    path1 = path_prefix + '_exception_assign_minus_1.npy'
    path2 = path_prefix + '.npy'
    path3 = path_prefix + '.pfm'
    import os.path as ospath
    if ospath.exists(path1):
        return np.load(path1)
    else:

        # from readpfm import readPFMreadPFM
        from readpfm import readPFM
        data, _ = readPFM(path3)
        np.save(path2, data)
        #for i in range(data.shape[0]):
        #    for j in range(data.shape[1]):
        #        if j - data[i][j] < 0:
        #            data[i][j] = -1
        np.save(path1, data)
        return data
def disparity_loader(path):
    return rp.readPFM(path)
Beispiel #4
0
 def disp_loader(self, path):
     disp, scale = readPFM(path)
     disp = np.ascontiguousarray(disp, dtype=np.float32)
     disp[np.inf == disp] = np.nan
     return disp
Beispiel #5
0
import argparse

parser = argparse.ArgumentParser(description='pfm visualization')

parser.add_argument('--input_dir',
                    type=str,
                    default='./dataset/lr_disp',
                    help='depth_path')
parser.add_argument('--output_dir',
                    type=str,
                    default='./result',
                    help='outputdir')
args = parser.parse_args()

if os.path.isdir(args.input_dir):
    test_pfm = os.listdir(args.input_dir)
    test_pfm.sort()
    pfm_path = [os.path.join(args.input_dir, d) for d in test_pfm]
else:
    pfm_path = [args.input_dir]
print("there are %d files" % (len(pfm_path)))
basenames = [os.path.basename(f) for f in pfm_path]
basenames = [os.path.splitext(f)[0] for f in basenames]

for num, path in enumerate(pfm_path):
    output = readPFM(path)
    plt.imsave(str(os.path.join(args.output_dir, basenames[num]) + "_vis.png"),
               output,
               cmap='plasma')
    print("finished %d" % (num + 1))