| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| |
|
| | import matplotlib |
| | import matplotlib.cm |
| | import numpy as np |
| | import torch |
| |
|
| | def colorize(value, vmin=None, vmax=None, cmap='magma_r', invalid_val=-99, invalid_mask=None, background_color=(128, 128, 128, 255), gamma_corrected=False, value_transform=None): |
| | """Converts a depth map to a color image. |
| | |
| | Args: |
| | value (torch.Tensor, numpy.ndarry): Input depth map. Shape: (H, W) or (1, H, W) or (1, 1, H, W). All singular dimensions are squeezed |
| | vmin (float, optional): vmin-valued entries are mapped to start color of cmap. If None, value.min() is used. Defaults to None. |
| | vmax (float, optional): vmax-valued entries are mapped to end color of cmap. If None, value.max() is used. Defaults to None. |
| | cmap (str, optional): matplotlib colormap to use. Defaults to 'magma_r'. |
| | invalid_val (int, optional): Specifies value of invalid pixels that should be colored as 'background_color'. Defaults to -99. |
| | invalid_mask (numpy.ndarray, optional): Boolean mask for invalid regions. Defaults to None. |
| | background_color (tuple[int], optional): 4-tuple RGB color to give to invalid pixels. Defaults to (128, 128, 128, 255). |
| | gamma_corrected (bool, optional): Apply gamma correction to colored image. Defaults to False. |
| | value_transform (Callable, optional): Apply transform function to valid pixels before coloring. Defaults to None. |
| | |
| | Returns: |
| | numpy.ndarray, dtype - uint8: Colored depth map. Shape: (H, W, 4) |
| | """ |
| | if isinstance(value, torch.Tensor): |
| | value = value.detach().cpu().numpy() |
| |
|
| | value = value.squeeze() |
| | if invalid_mask is None: |
| | invalid_mask = value == invalid_val |
| | mask = np.logical_not(invalid_mask) |
| |
|
| | |
| | vmin = np.percentile(value[mask],2) if vmin is None else vmin |
| | vmax = np.percentile(value[mask],85) if vmax is None else vmax |
| | if vmin != vmax: |
| | value = (value - vmin) / (vmax - vmin) |
| | else: |
| | |
| | value = value * 0. |
| |
|
| | |
| | |
| |
|
| | value[invalid_mask] = np.nan |
| | cmapper = matplotlib.cm.get_cmap(cmap) |
| | if value_transform: |
| | value = value_transform(value) |
| | |
| | value = cmapper(value, bytes=True) |
| |
|
| | |
| | img = value[...] |
| | img[invalid_mask] = background_color |
| |
|
| | |
| | if gamma_corrected: |
| | |
| | img = img / 255 |
| | img = np.power(img, 2.2) |
| | img = img * 255 |
| | img = img.astype(np.uint8) |
| | return img |
| |
|
| |
|