code: def crude_stretch(self, min_stretch=None, max_stretch=None):
          
          if min_stretch is None:
              non_band_dims = tuple(x for x in self.data.dims if x != 'bands')
              min_stretch = self.data.min(dim=non_band_dims)
          if max_stretch is None:
              non_band_dims = tuple(x for x in self.data.dims if x != 'bands')
              max_stretch = self.data.max(dim=non_band_dims)
  
          if isinstance(min_stretch, (list, tuple)):
              min_stretch = self.xrify_tuples(min_stretch)
          if isinstance(max_stretch, (list, tuple)):
              max_stretch = self.xrify_tuples(max_stretch)
  
          delta = (max_stretch - min_stretch)
          if isinstance(delta, xr.DataArray):
              # fillna if delta is NaN
              scale_factor = (1.0 / delta).fillna(0)
          else:
              scale_factor = 1.0 / delta
          attrs = self.data.attrs
          self.data -= min_stretch
          self.data *= scale_factor
          self.data.attrs = attrs
docs: Perform simple linear stretching.
  
          This is done without any cutoff on the current image and normalizes to
          the [0,1] range.