Skip to content

Instantly share code, notes, and snippets.

@Prasad9
Last active March 14, 2024 10:28
Show Gist options
  • Star 35 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save Prasad9/28f6a2df8e8d463c6ddd040f4f6a028a to your computer and use it in GitHub Desktop.
Save Prasad9/28f6a2df8e8d463c6ddd040f4f6a028a to your computer and use it in GitHub Desktop.
Python code to add random Gaussian noise on images
import cv2
def add_gaussian_noise(X_imgs):
gaussian_noise_imgs = []
row, col, _ = X_imgs[0].shape
# Gaussian distribution parameters
mean = 0
var = 0.1
sigma = var ** 0.5
for X_img in X_imgs:
gaussian = np.random.random((row, col, 1)).astype(np.float32)
gaussian = np.concatenate((gaussian, gaussian, gaussian), axis = 2)
gaussian_img = cv2.addWeighted(X_img, 0.75, 0.25 * gaussian, 0.25, 0)
gaussian_noise_imgs.append(gaussian_img)
gaussian_noise_imgs = np.array(gaussian_noise_imgs, dtype = np.float32)
return gaussian_noise_imgs
gaussian_noise_imgs = add_gaussian_noise(X_imgs)
@victorhugomarianont
Copy link

victorhugomarianont commented Jun 1, 2022

Having a hard time trying to adapt it to a similar problem. I'm firstly testing this noise function to add later a sepia effect, so this looks more like a vintage image, but did not manage to plot it properly yet. Code goes as follows

def old_photo(file_nm):
    img = cv2.imread("HT.jpg")[...,::-1]/255.0
    noise =  np.random.normal(loc=0, scale=1, size=img.shape)
    
    noised_img = np.clip((img*(1 + noise*0.4)),0,1)
    plt.imshow(noised_img)
       
if __name__ == "__main__":
    print(old_photo("HT.jpg"))

Do you know what can be going wrong here? I'm missing a point I guess

@deshwalmahesh
Copy link

Having a hard time trying to adapt it to a similar problem. I'm firstly testing this noise function to add later a sepia effect, so this looks more like a vintage image, but did not manage to plot it properly yet. Code goes as follows

def old_photo(file_nm):
    img = cv2.imread("HT.jpg")[...,::-1]/255.0
    noise =  np.random.normal(loc=0, scale=1, size=img.shape)
    
    noised_img = np.clip((img*(1 + noise*0.4)),0,1)
    plt.imshow(noised_img)
       
if __name__ == "__main__":
    print(old_photo("HT.jpg"))

Do you know what can be going wrong here? I'm missing a point I guess

Your old_photo function is returning None. You need to do it in a jupyter notebook. Or you can save the noised_image. How come you're trying to print it? Even if you output the results, it'll be a numpy array.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment