new_contents: """
  =====================
  Image Deconvolution
  =====================
  In this example, we deconvolve an image using Richardson-Lucy
  deconvolution algorithm.
  
  The algorithm is based on a PSF (Point Spread Function),
  where PSF is described as the impulse response of the 
  optical system. The blurred image is sharpened through a number of 
  iterations, which needs to be hand-tuned.
  
  .. [1] William Hadley Richardson, "Bayesian-Based Iterative 
         Method of Image Restoration",
         J. Opt. Soc. Am. A 27, 1593-1607 (1972), DOI:10.1364/JOSA.62.000055
  
  .. [2] http://en.wikipedia.org/wiki/Richardson%E2%80%93Lucy_deconvolution
  """
  import numpy as np
  import matplotlib.pyplot as plt
  
  from scipy.signal import convolve2d as conv2
  
  from skimage import color, data, restoration
  
  astro = color.rgb2gray(data.astronaut())
  
  psf = np.ones((5, 5)) / 25
  astro = conv2(astro, psf, 'same')
  # Add Noise to Image 
  astro_noisy = astro.copy()
  astro_noisy += (np.random.poisson(lam=25, size=astro.shape) - 10) / 255.
  
  # Restore Image using Richardson-Lucy algorithm
  deconvolved_RL = restoration.richardson_lucy(astro_noisy, psf, iterations=30)
  
  fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(8, 5))
  plt.gray()
  
  for a in (ax[0], ax[1], ax[2]):
         a.axis('off')
  
  ax[0].imshow(astro)
  ax[0].set_title('Original Data')
  
  ax[1].imshow(astro_noisy)
  ax[1].set_title('Noisy data')
  
  ax[2].imshow(deconvolved_RL, vmin=astro_noisy.min(), vmax=astro_noisy.max())
  ax[2].set_title('Restoration using\nRichardson-Lucy')
  
  
  fig.subplots_adjust(wspace=0.02, hspace=0.2,
                      top=0.9, bottom=0.05, left=0, right=1)
  plt.show()
  
subject: Add Richardson-Lucy Deconvolution Example