Python-图像加噪实现(Gaussian noise+salt and pepper noise)

Python-图像加噪

高斯噪声

高斯噪声(Gaussian noise)是指它的概率密度函数服从高斯分布的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。
注意:“高斯白噪声的幅度服从高斯分布”的说法是错误的,高斯噪声的幅度服从瑞利分布。即使是一维的高斯白噪声,其幅度也不会服从高斯分布,而应该服从瑞利分布。二维不相关的复高斯白噪声包络服从指数分布(x2分布的自由度为2的特例)。n个不相关的复高斯白噪声序列叠加后的复信号包络服从自由度为2n的x2分 布。
必须区分高斯噪声和白噪声两个不同的概念。高斯噪声是指噪声的概率密度函数服从高斯分布,白噪声是指噪声的任意两个采样样本之间不相关,两者描述的角度不同。白噪声不必服从高斯分布,高斯分布的噪声不一定是白噪声。当然,实际系统中的热噪声是我们一般所说的白噪声的主要来源,它是服从高斯分布的,但一般具有有限的带宽,即常说的窄带白噪声,严格意义上它不是白噪声。

椒盐噪声

椒盐噪声(salt-and-pepper noise)是指两种噪声,一种是盐噪声(salt noise),另一种是胡椒噪声(pepper noise)。盐=白色(0),椒=黑色(255)。前者是高灰度噪声,后者属于低灰度噪声。一般两种噪声同时出现,呈现在图像上就是黑白杂点。

添加噪声的实现

以上两种噪声,均可通过Python库:skimage实现。

安装skimage库

必须的依赖:

//  python-numpy  
//  python-scipy  
//  python-matplotlib  
$  sudo apt-get install python-numpy  
$  sudo apt-get install python
可以使用Python中的PIL库(Python Imaging Library)来进行RGB三通道彩色图像。 首先,需要安装PIL库,可以使用以下命令进行安装: ``` pip install Pillow ``` 然后,可以使用以下代码将数据集中多个子文件夹中的RGB三通道彩色图像: ```python from PIL import Image import os import random # 噪声类型:高斯噪声、椒盐噪声 NOISE_TYPES = ['gaussian', 'salt_and_pepper'] # 高斯噪声参数 GAUSSIAN_MEAN = 0 GAUSSIAN_VAR = 0.001 # 椒盐噪声参数 SALT_AND_PEPPER_RATIO = 0.05 # 数据集路径 DATASET_PATH = 'path/to/dataset' # 后保存的路径 NOISY_DATASET_PATH = 'path/to/noisy/dataset' # 遍历子文件夹 for root, dirs, files in os.walk(DATASET_PATH): for file in files: # 只处理jpg和png格式的图像 if file.endswith('.jpg') or file.endswith('.png'): # 打开图像 image_path = os.path.join(root, file) image = Image.open(image_path) # 随机选择一种噪声类型 noise_type = random.choice(NOISE_TYPES) # if noise_type == 'gaussian': # 高斯噪声 noise = Image.fromarray( (np.random.normal(GAUSSIAN_MEAN, GAUSSIAN_VAR, size=image.size) * 255).astype(np.uint8)) noisy_image = Image.blend(image, noise, 0.5) elif noise_type == 'salt_and_pepper': # 椒盐噪声 noise = np.random.choice((0, 1, 2), size=image.size, p=[1 - SALT_AND_PEPPER_RATIO / 2, SALT_AND_PEPPER_RATIO / 2, SALT_AND_PEPPER_RATIO / 2]) noise = np.repeat(noise[:, :, np.newaxis], 3, axis=2) noisy_image = Image.fromarray(np.uint8(image * noise)) # 保存后的图像 noisy_image.save(os.path.join(NOISY_DATASET_PATH, file)) ``` 其中,`NOISE_TYPES`定义了两种噪声类型:高斯噪声和椒盐噪声。`GAUSSIAN_MEAN`和`GAUSSIAN_VAR`为高斯噪声的参数。`SALT_AND_PEPPER_RATIO`为椒盐噪声的参数。`DATASET_PATH`为数据集路径,`NOISY_DATASET_PATH`为后保存的路径。 代码中使用了`np.random.normal`生成高斯噪声,使用了`np.random.choice`生成椒盐噪声。需要注意的是,在生成椒盐噪声时,使用了`np.repeat`将单通道图像复制成三通道。 运行以上代码后,会在`NOISY_DATASET_PATH`路径下生成后的图像
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值