| import torch | |
| import torch.utils.data | |
| import numpy as np | |
| import torchvision.utils as vutils | |
| import cv2 | |
| from matplotlib.cm import get_cmap | |
| import matplotlib as mpl | |
| import matplotlib.cm as cm | |
| # https://github.com/autonomousvision/unimatch/blob/master/utils/visualization.py | |
| def vis_disparity(disp): | |
| disp_vis = (disp - disp.min()) / (disp.max() - disp.min()) * 255.0 | |
| disp_vis = disp_vis.astype("uint8") | |
| disp_vis = cv2.applyColorMap(disp_vis, cv2.COLORMAP_INFERNO) | |
| return disp_vis | |
| def viz_depth_tensor(disp, return_numpy=False, colormap="plasma"): | |
| # visualize inverse depth | |
| assert isinstance(disp, torch.Tensor) | |
| disp = disp.numpy() | |
| vmax = np.percentile(disp, 95) | |
| normalizer = mpl.colors.Normalize(vmin=disp.min(), vmax=vmax) | |
| mapper = cm.ScalarMappable(norm=normalizer, cmap=colormap) | |
| colormapped_im = (mapper.to_rgba(disp)[:, :, :3] * 255).astype( | |
| np.uint8 | |
| ) # [H, W, 3] | |
| if return_numpy: | |
| return colormapped_im | |
| viz = torch.from_numpy(colormapped_im).permute(2, 0, 1) # [3, H, W] | |
| return viz | |