def disparity_to_height(tile, i): """ Compute a height map from the disparity map of a pair of image tiles. Args: tile: dictionary containing the information needed to process a tile. i: index of the processed pair. """ out_dir = os.path.join(tile['dir'], 'pair_{}'.format(i)) height_map = os.path.join(out_dir, 'height_map.tif') x, y, w, h = tile['coordinates'] if os.path.exists(os.path.join(out_dir, 'stderr.log')): print('triangulation: stderr.log exists') print('pair_{} not processed on tile {} {}'.format(i, x, y)) return print('triangulating tile {} {} pair {}...'.format(x, y, i)) rpc1 = cfg['images'][0]['rpc'] rpc2 = cfg['images'][i]['rpc'] H_ref = os.path.join(out_dir, 'H_ref.txt') H_sec = os.path.join(out_dir, 'H_sec.txt') disp = os.path.join(out_dir, 'rectified_disp.tif') mask = os.path.join(out_dir, 'rectified_mask.png') rpc_err = os.path.join(out_dir, 'rpc_err.tif') out_mask = os.path.join(tile['dir'], 'cloud_water_image_domain_mask.png') pointing = os.path.join(cfg['out_dir'], 'global_pointing_pair_{}.txt'.format(i)) triangulation.height_map(height_map, x, y, w, h, rpc1, rpc2, H_ref, H_sec, disp, mask, rpc_err, out_mask, pointing) if cfg['clean_intermediate']: common.remove(H_ref) common.remove(H_sec) common.remove(disp) common.remove(mask) common.remove(rpc_err)
def disparity_to_height(tile, i): """ Compute a height map from the disparity map of a pair of image tiles. Args: tile: dictionary containing the information needed to process a tile. i: index of the processed pair. """ out_dir = os.path.join(tile['dir'], 'pair_{}'.format(i)) x, y, w, h = tile['coordinates'] print('triangulating tile {} {} pair {}...'.format(x, y, i)) rpc1 = cfg['images'][0]['rpcm'] rpc2 = cfg['images'][i]['rpcm'] H_ref = np.loadtxt(os.path.join(out_dir, 'H_ref.txt')) H_sec = np.loadtxt(os.path.join(out_dir, 'H_sec.txt')) disp = os.path.join(out_dir, 'rectified_disp.tif') mask = os.path.join(out_dir, 'rectified_mask.png') pointing = os.path.join(cfg['out_dir'], 'global_pointing_pair_{}.txt'.format(i)) with rasterio.open(disp, 'r') as f: disp_img = f.read().squeeze() with rasterio.open(mask, 'r') as f: mask_rect_img = f.read().squeeze() height_map = triangulation.height_map(x, y, w, h, rpc1, rpc2, H_ref, H_sec, disp_img, mask_rect_img, A=np.loadtxt(pointing)) # write height map to a file common.rasterio_write(os.path.join(out_dir, 'height_map.tif'), height_map) if cfg['clean_intermediate']: common.remove(H_ref) common.remove(H_sec) common.remove(disp) common.remove(mask)