lyimo commited on
Commit
adc9214
·
verified ·
1 Parent(s): 2b3361e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -18
app.py CHANGED
@@ -5,37 +5,28 @@ from skimage.util import random_noise
5
  from skimage.restoration import denoise_nl_means, estimate_sigma
6
 
7
  def add_noise(image, mean, var):
8
- # Convert variance to noise standard deviation
9
  sigma = var ** 0.5
10
- # Add Gaussian noise to the image
11
- noisy_image = random_noise(image, mode='gaussian', mean=mean, var=var)
12
- noisy_image = np.array(255 * noisy_image, dtype=np.uint8) # Scale back to 0-255
13
  return Image.fromarray(noisy_image)
14
 
15
  def remove_noise(image):
16
- # Convert image to grayscale for denoising (optional depending on need)
17
  image = image.convert('L')
18
  image_np = np.array(image)
19
- # Estimate noise sigma from image
20
  sigma_est = np.mean(estimate_sigma(image_np, multichannel=False))
21
- # Apply Non-Local Means Denoising
22
  denoised_image = denoise_nl_means(image_np, h=1.15 * sigma_est, fast_mode=True,
23
  patch_size=5, patch_distance=6, multichannel=False)
24
- denoised_image = np.array(255 * denoised_image, dtype=np.uint8) # Scale back to 0-255
25
  return Image.fromarray(denoised_image)
26
 
27
- # Define Gradio interface
28
  interface = gr.Interface(
29
- fn=[add_noise, remove_noise],
30
- inputs=[
31
- gr.Image(shape=None, label="Original Image"),
32
- gr.Slider(0, 0.05, step=0.001, default=0, label="Mean of Gaussian Noise"),
33
- gr.Slider(0, 0.01, step=0.0001, default=0.001, label="Variance of Gaussian Noise")
34
- ],
35
- outputs=[gr.Image(label="Processed Image")],
36
  title="Image Noise Addition and Removal",
37
  description="Add Gaussian noise to an image and attempt to remove it. Adjust the mean and variance for different effects."
38
  )
39
 
40
- # Launch the app
41
- interface.launch()
 
5
  from skimage.restoration import denoise_nl_means, estimate_sigma
6
 
7
  def add_noise(image, mean, var):
 
8
  sigma = var ** 0.5
9
+ noisy_image = random_noise(np.array(image), mode='gaussian', mean=mean, var=var)
10
+ noisy_image = (255 * noisy_image).astype(np.uint8)
 
11
  return Image.fromarray(noisy_image)
12
 
13
  def remove_noise(image):
 
14
  image = image.convert('L')
15
  image_np = np.array(image)
 
16
  sigma_est = np.mean(estimate_sigma(image_np, multichannel=False))
 
17
  denoised_image = denoise_nl_means(image_np, h=1.15 * sigma_est, fast_mode=True,
18
  patch_size=5, patch_distance=6, multichannel=False)
19
+ denoised_image = (255 * denoised_image).astype(np.uint8)
20
  return Image.fromarray(denoised_image)
21
 
 
22
  interface = gr.Interface(
23
+ fn=add_noise,
24
+ inputs=[gr.Image(label="Original Image"),
25
+ gr.Slider(0, 0.05, step=0.001, default=0, label="Mean of Gaussian Noise"),
26
+ gr.Slider(0, 0.01, step=0.0001, default=0.001, label="Variance of Gaussian Noise")],
27
+ outputs=gr.Image(label="Processed Image"),
 
 
28
  title="Image Noise Addition and Removal",
29
  description="Add Gaussian noise to an image and attempt to remove it. Adjust the mean and variance for different effects."
30
  )
31
 
32
+ interface.launch()