Python实现图像随机添加椒盐噪声和高斯噪声

yizhihongxing

针对题目“Python实现图像随机添加椒盐噪声和高斯噪声”的完整攻略,可以分为以下步骤:

第一步:读取图像并进行预处理

在Python中,可以使用OpenCV库来读取图像,并对图像进行预处理,如调整图像大小、改变图像颜色空间等。在读取图像时,建议采用灰度图像读取方式,便于后续噪声生成和处理。示例代码如下:

import cv2

# 读取灰度图像
img = cv2.imread("test_img.jpg", 0)

第二步:随机噪声生成

Python中可以使用numpy库中的random模块来生成随机噪声。这里需要分别生成椒盐噪声和高斯噪声。其中椒盐噪声的生成方式是将图像中的某些像素点设为最大值或最小值,模拟出“盐”和“椒”的形态。高斯噪声则是在图像中添加符合高斯分布的随机噪声。示例代码如下:

import numpy as np

# 添加椒盐噪声
def add_salt_pepper_noise(image, prob):
    output = np.zeros(image.shape, np.uint8)
    thres = 1 - prob
    for i in range(image.shape[0]):
        for j in range(image.shape[1]):
            rdn = np.random.random()
            if rdn < prob:
                output[i][j] = 0
            elif rdn > thres:
                output[i][j] = 255
            else:
                output[i][j] = image[i][j]
    return output

# 添加高斯噪声
def add_gaussian_noise(image, mean=0, var=0.1):
    image = np.array(image / 255, dtype=float)
    noise = np.random.normal(mean, var ** 0.5, image.shape)
    out = image + noise
    if out.min() < 0:
        low_clip = -1.
    else:
        low_clip = 0.
    out = np.clip(out, low_clip, 1.0)
    out = np.uint8(out * 255)
    return out

第三步:噪声添加

将生成的噪声随机添加到原始图像中。示例代码如下:

# 随机添加椒盐噪声
img_salt_pepper = add_salt_pepper_noise(img, 0.01)

# 随机添加高斯噪声
img_gaussian = add_gaussian_noise(img)

第四步:结果对比

将添加噪声后的图像与原始图像进行对比,可以发现噪声的效果。示例代码如下:

# 显示原始图像和添加噪声后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Salt and Pepper Noise", img_salt_pepper)
cv2.imshow("Gaussian Noise", img_gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()

综上所述,以上就是Python实现图像随机添加椒盐噪声和高斯噪声的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现图像随机添加椒盐噪声和高斯噪声 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 详解Python中!=和is not操作符的区别

    在 Python 中,!= 和 is not 是两个不同的操作符,用于比较两个值是否不相等。它们的不同之处在于其比较的对象类型和比较方式的不同。 != 操作符 != 操作符是 Python 中用于判断两个对象是否不相等的操作符,其表达式形式为: a != b 其中,a 和 b 为需要比较的两个对象,如果它们的值不相等,则返回 True,否则返回 False。…

    python-answer 2023年3月25日
    00
  • python根据json数据画疫情分布地图的详细代码

    接下来我将为您讲解“python根据json数据画疫情分布地图的详细代码”的完整攻略。 准备工作 首先,需要确保你安装了以下三个库: folium: 用于生成地图 pandas: 用于数据处理 requests: 用于获取网络数据 代码如下: !pip install folium pandas requests 获取数据 获取数据是画疫情分布地图的第一步。…

    python 2023年6月3日
    00
  • Python入门篇之正则表达式

    Python入门篇之正则表达式 正则表达式是一种强大的文本处理工具,它可以用来完成各种复杂的文本匹配操作。本篇教程将介绍Python中如何使用正则表达式进行文本匹配。 基本语法 正则表达式由各种特殊字符和普通字符组成,它们可以被组合成一些模式,用于匹配目标字符串中的文本。 以下是一些常用的正则表达式特殊字符: . 匹配任意一个字符 + 匹配一个或多个前一个字…

    python 2023年5月13日
    00
  • python路径的写法及目录的获取方式

    下面是关于Python路径的写法及目录的获取方式的攻略。 Python路径的写法 在Python中,常用的路径写法有两种,分别是绝对路径和相对路径。 绝对路径 绝对路径是指从根目录开始的完整路径,因此它具有确定性和精准性,但是它往往很长,有时不方便使用。 在Linux或Mac系统中,绝对路径通常以”/”开头,例如: /home/user/workplace/…

    python 2023年6月2日
    00
  • Python 正则 re.compile 真的必需吗

    当使用Python的正则模块re进行字符串操作时,一般需要使用re.compile方法将正则表达式编译成一个正则对象,然后才能进行匹配等操作。但是,是否真的必需使用re.compile呢?下面我们来一步步探讨。 什么是re.compile 在介绍是否必须使用re.compile之前,先来了解一下re.compile的具体作用。re.compile就是将一个正…

    python 2023年6月3日
    00
  • Python基于pip实现离线打包过程详解

    Python基于pip实现离线打包过程详解 一、背景 在Python开发过程中,我们经常需要使用第三方库,比如numpy、pandas、matplotlib等,而这些库需要从网上下载才能使用。但是,有些情况下我们不能联网,或者我们的机器在一个内网环境中,这时候我们就需要进行离线打包。 二、离线打包过程 Python提供了pip命令来管理第三方库,我们可以使用…

    python 2023年5月14日
    00
  • 详解Python字典的运算

    详解Python字典的运算 Python中字典(dict)是一种映射类型,它存储的是键-值(key-value)对。字典的键必须是唯一不可重复的,而值可以重复。字典是无序的,即不支持索引和切片。在Python中,字典的运算非常灵活,它包括添加元素、删除元素、修改元素、查找元素,以及对多个字典进行合并、取交集、取差集等操作。本篇攻略将详细讲解Python字典的…

    python 2023年5月13日
    00
  • 通过实例解析Python文件操作实现步骤

    下面我会详细讲解“通过实例解析Python文件操作实现步骤”的完整攻略,过程中会包含两条示例说明。 Python文件操作实现步骤 Python文件操作可以分为以下几个步骤: 打开文件 读写文件 关闭文件 1. 打开文件 在Python中,你可以使用内置的open函数来打开文件。open函数有两个参数:文件名和模式。文件名可以是文件的绝对路径、相对路径或者文件…

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部