Python图像增强之椒盐噪声、高斯噪声

本文探讨了Python中图像增强的一种常见技术——椒盐噪声和高斯噪声的添加。通过实例展示了如何在原始图片上应用椒噪声和盐噪声,以及高斯噪声,以改善图像质量或进行图像分析前的数据预处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

椒盐噪声(包含椒噪声和盐噪声)

import random
import numpy as np

def sp_noise(img, prob, sp):
    '''
    添加椒盐噪声
    :param img: 原始图片
    :param prob: 噪声比例
    :param sp: 0: 椒噪声, 1: 盐噪声, 2: 椒盐噪声
    :return: resultImg
    '''
    resultImg = np.zeros(img.shape, np.uint8)
    thres = 1 - prob
    for i in range(img.shape[0]):
        for j in range(img.shape[1]):
            rdn = random.random()  # 随机生成0-1之间的数字
            if sp == 0:
                if rdn < prob:  # 如果生成的随机数小于噪声比例则将该像素点添加黑点,即椒噪声
                    resultImg[i][j] = 0
                else:
                    resultImg[i][j] = img[i][j]  # 其他情况像素点不变
            if sp == 1:
                if rdn > thres:  # 如果生成的随机数大于(1-噪声比例)则将该像素点添加白点,即盐噪声
                    resultImg[i][j] = 255
                else:
                    resultImg[i][j] = img[i][j]  # 其他情况像素点不变
            if sp == 2:
                if rdn < prob:  # 如果生成的随机数小于噪声比例则将该像素点添加黑点,即椒噪声
                    resultImg
### 使用 OpenCV Python 给图片添加椒盐噪声 为了在图像中添加椒盐噪声,可以按照如下方式操作: 对于每一对像素位置 (i, j),随机决定该位置是否要被替换为白色或黑色。这通过两个独立的概率 p 和 q 来控制,p 表示变为黑点的概率而 q 则表示白点概率。 ```python import numpy as np import cv2 def add_salt_and_pepper_noise(image, salt_prob=0.01, pepper_prob=0.01): noisy_image = image.copy() # Adding Salt noise num_salt = int(salt_prob * image.size) coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape[:2]] noisy_image[coords[0], coords[1]] = 255 # Adding Pepper noise num_pepper = int(pepper_prob * image.size) coords = [np.random.randint(0, i - 1, int(num_pepper)) for i in image.shape[:2]] noisy_image[coords[0], coords[1]] = 0 return noisy_image ``` 此函数接受一张输入图像以及两个可选参数来指定加入多少比例的黑白噪点,默认情况下各占总像素数目的百分之一[^2]。 ### 使用 OpenCV Python 给图片添加高斯噪声 当涉及到向图像添加高斯噪声时,则是在原始像素值基础上加上服从正态分布的小扰动量。具体做法如下所示: ```python def add_gaussian_noise(image, mean=0, sigma=25): gaussian_noise = np.random.normal(mean, sigma, image.shape).astype(np.uint8) noisy_image = cv2.add(image, gaussian_noise) return noisy_image ``` 这里定义了一个 `add_gaussian_noise` 函数用于接收待处理图像并返回带有高斯噪音的新图。其中均值设定了所加噪声平均强度;标准差决定了变化范围大小,在实际应用中可以根据需求调整这两个参数取值[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值