text: Title: Error in saving the resulting image of denoise wavelet 
  Body: ### Description:
  
  I wrote the following code to apply wavelet denoise function and save the result. However it encountered a value error. 
  
  ```
  wavelet_img = denoise_wavelet(original, channel_axis=-1, rescale_sigma=True)
  ax[3, 0].imshow(wavelet_img)
  ax[3, 0].axis('off')
  ax[3, 0].set_title('Wavelet denoising')
  img_ubyte = img_as_ubyte(wavelet_img)
  skimage.io.imsave("/content/output/wavelet_img.jpg", img_ubyte)
  ```
  
  However it encountered a value error as follows
  
  > ---------------------------------------------------------------------------
  > ValueError                                Traceback (most recent call last)
  > [<ipython-input-82-26a3300acb88>](https://localhost:8080/#) in <cell line: 5>()
  >       3 ax[3, 0].axis('off')
  >       4 ax[3, 0].set_title('Wavelet denoising')
  > ----> 5 img_ubyte = img_as_ubyte(wavelet_img)
  >       6 skimage.io.imsave("/content/output/wavelet_img.jpg", img_ubyte)
  >       7 wavelet_text = pytesseract.image_to_string(img_ubyte, lang="tur+eng", config=options)
  > 
  > 1 frames
  > [/usr/local/lib/python3.10/dist-packages/skimage/util/dtype.py](https://localhost:8080/#) in _convert(image, dtype, force_copy, uniform)
  >     310 
  >     311         if np.min(image) < -1.0 or np.max(image) > 1.0:
  > --> 312             raise ValueError("Images of type float must be between -1 and 1.")
  >     313         # floating point -> integer
  >     314         # use float type that can represent output integer type
  > 
  > ValueError: Images of type float must be between -1 and 1.
  
  When I checked the values of wavelet result, I see it is actually out of range with a small amount.
  
  `np.min(wavelet_img), np.max(wavelet_i` gives `(-0.005789201644540776, 1.0061716474808797)`
  
  There is no problem with plotting its figure, but it returns the above error when trying to convert it to ubyte to save it into a file.
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  ### Way to reproduce:
  
  ```
  import numpy as np
  import matplotlib.pyplot as plt
  from skimage import img_as_float, img_as_ubyte
  from skimage.restoration import (
      denoise_tv_chambolle,
      denoise_bilateral,
      denoise_wavelet,
      estimate_sigma,
  )
  
  img_path="..."
  image = skimage.io.imread(img_path)
  original = img_as_float(image[:250, :])
  wavelet_img = denoise_wavelet(original, channel_axis=-1, rescale_sigma=True)
  
  fig, ax = plt.subplots(nrows=4, ncols=2, figsize=(8, 5), sharex=True, sharey=True)
  plt.gray()
  ax[3, 0].imshow(wavelet_img)
  ax[3, 0].axis('off')
  ax[3, 0].set_title('Wavelet denoising')
  
  img_ubyte = img_as_ubyte(wavelet_img)
  skimage.io.imsave("/content/output/wavelet_img.jpg", img_ubyte)
  
  ```
  
  ### Version information:
  
  ```Shell
  3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]
  Linux-6.1.85+-x86_64-with-glibc2.35
  scikit-image version: 0.23.2
  numpy version: 1.26.4
  ```
  