簡體   English   中英

給圖像增加高斯噪聲

[英]adding gaussian noise to image

我正在嘗試使用以下代碼向一些圖像添加高斯噪聲

import numpy as np
import cv2
import glob 
mean = 0
var = 10
sigma = var ** 0.5
gaussian = np.random.normal(mean, sigma, (224, 224)) 



for image in glob.glob('/home/aub/myflower/flower_photos/dandelion/*.jpg'):
    img = cv2.imread(image)
    noisy_image = np.zeros(img.shape, np.float32)

    if len(img.shape) == 2:
        noisy_image = img + gaussian
    else:
        noisy_image[:, :, 0] = img[:, :, 0] + gaussian
        noisy_image[:, :, 1] = img[:, :, 1] + gaussian
        noisy_image[:, :, 2] = img[:, :, 2] + gaussian

        cv2.normalize(noisy_image, noisy_image, 0, 255, cv2.NORM_MINMAX, dtype=-1)
noisy_image = noisy_image.astype(np.uint8)

       cv2.imshow("img", img)
       cv2.imshow("gaussian", gaussian)
       cv2.imshow("noisy", noisy_image)
cv2.waitKey(0)

但它不起作用,它給我以下錯誤

noisy_image [:,:,0] = img [:,:,0] +高斯ValueError:操作數不能與形狀一起廣播(315,500)(224,224)

請檢查並提供反饋。

看起來您的圖像形狀為(315,500) ,而gaussian形狀為(224,224) 嘗試將您的高斯初始化更改為

gaussian = np.random.normal(mean, sigma, (img.shape[0],img.shape[1])) 

順便說一句:您可以替換這些行

noisy_image[:, :, 0] = img[:, :, 0] + gaussian
noisy_image[:, :, 1] = img[:, :, 1] + gaussian
noisy_image[:, :, 2] = img[:, :, 2] + gaussian

noisy_image = img + gaussian

效果相同:將gaussian添加到每個通道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM