def to_display(self, equalize: bool = True) -> Image.Image:
if self.bands >= 3:
display_bands = self._array[:, :, self.default_bands]
else:
display_bands = np.stack([self._array[:, :, 0]] * 3, axis=2)
if equalize:
for i in range(display_bands.shape[2]):
band = display_bands[:, :, i]
non_nan = ~np.isnan(band)
if np.any(non_nan):
min_val = np.nanmin(band)
max_val = np.nanmax(band)
if max_val > min_val:
band = (band - min_val) / (max_val - min_val) * 255
display_bands[:, :, i] = band
display_array = np.nan_to_num(display_bands).astype(np.uint8)
return Image.fromarray(display_array)