如何修改高斯噪声函数,为图像添加占最大像素强度20%的噪声
实现思路
你需要把高斯噪声的标准差sigma设置为图像最大像素强度的20%即可,有两种修改方案可选:
方案1:修改函数逻辑,自动从图像读取参数(更省心,无需手动计算传参)
直接把图像数组作为入参传入函数,自动计算最大像素值和对应尺寸:
import numpy as np def white_noise_2(img, mu=0, noise_ratio=0.2): max_pixel_val = img.max() sigma = max_pixel_val * noise_ratio # 直接从图像数组读取尺寸,无需手动传n参数 noise = np.random.normal(mu, sigma, img.shape) return noise
调用方式:
# 生成噪声 noise = white_noise_2(img) # 叠加到原图后记得截断像素范围,避免超出图像合法值域 noisy_img = np.clip(img + noise, 0, img.max()).astype(img.dtype)
方案2:不修改原有函数,仅调整调用逻辑
如果不想改动你已经写好的函数定义,只需要在调用前提前计算对应sigma即可:
# 计算等效于最大像素强度20%的sigma值 custom_sigma = img.max() * 0.2 # 传入原有函数调用 noise = white_noise_2(custom_sigma, img.shape)
补充说明:如果你的图像是归一化到[0,1]区间的浮点格式,上述逻辑同样生效,不需要额外调整。
内容的提问来源于stack exchange,提问作者Razor
相关产品推荐
相关产品推荐

