docs: def resize_by_factor(im, factor):
      """
      Resizes the image according to a factor. The image is pre-filtered
      with a Gaussian and then resampled with bilinear interpolation.
  
      This function uses scikit-image and essentially combines its
      `pyramid_reduce` with `pyramid_expand` into one function.
  
      Returns the same object if factor is 1, not a copy.
  
      Parameters
      ----------
      im : ndarray, ndim=2 or 3
          Image. Either 2D or 3D with 3 or 4 channels.
      factor : float
          Resize factor, e.g. a factor of 0.5 will halve both sides.
      """
      _import_skimage()
      from skimage.transform.pyramids import pyramid_reduce, pyramid_expand
      if factor < 1:
          return pyramid_reduce(im, downscale=1/factor)
      elif factor > 1:
          return pyramid_expand(im, upscale=factor)
      else:
          return im