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

针对题目“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日

相关文章

  • python3 assert 断言的使用详解 (区别于python2)

    以下是关于“python3 assert断言的使用详解(区别于python2)”的完整攻略: 问题描述 在 Python 3 中,assert 断言的使用方式与 Python 2所不同。在 3 中,assert 断言的语法更加简洁,同时也持更多的用法。下面是一个例: assert x >0, "x must be positive"…

    python 2023年5月13日
    00
  • python中time模块指定格式时间字符串转为时间戳

    下面是详细讲解“python中time模块指定格式时间字符串转为时间戳”的完整攻略。 确定时间字符串格式 在进行时间字符串转换的过程中,首先需要确定时间字符串的格式。假设我们有一个时间字符串为”2021-12-31 12:30:00″,那么该字符串的格式为”%Y-%m-%d %H:%M:%S”。其中,各个字符的含义如下: %Y:年份,四位数字; %m:月份,…

    python 2023年6月2日
    00
  • python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)

    Python微信聊天机器人改进版攻略 项目概述 本项目是使用Python实现的微信聊天机器人,可以实现根据定时或触发条件抓取天气预报、励志语录等并向好友推送的功能。 技术方案 开发环境 Python 3.x itchat:一个开源的微信个人号接口; BeautifulSoup:一个可以从HTML或XML文件中提取数据的Python库; requests:一个…

    python 2023年5月23日
    00
  • 面向初学者的Python编辑器Mu

    下面详细介绍“面向初学者的Python编辑器Mu”的完整攻略。 什么是Mu? Mu是面向初学者的Python编辑器,它的最大特点就是简单易用,非常适合Python初学者入门学习。一般来说,Python初学者使用的编辑器都有一些功能比较复杂,而Mu则是专门针对初学者设计的。 Mu的使用方法 Mu的使用非常简单,只需要下载安装就可以直接使用。 下载安装 Mu有多…

    python 2023年6月2日
    00
  • python生成13位或16位时间戳以及反向解析时间戳的实例

    以下是详细的攻略。 生成13位时间戳 Python中生成13位时间戳可以通过time模块中的time()方法和datetime模块中的now()方法来实现。 import time from datetime import datetime # 获取当前13位时间戳 timestamp = int(time.time() * 1000) print(time…

    python 2023年6月2日
    00
  • python append、extend与insert的区别

    Python中的列表(list)是一种可变(mutable)的数据类型,可以在其中动态地添加、删除和修改元素。在处理列表元素时,我们常常需要涉及到添加操作,其中比较常用的方法包括append、extend和insert。这三种方法的主要区别如下: 1. append方法 在Python中,append()是列表对象提供的方法之一,用于在列表的末尾添加一个元素…

    python 2023年5月14日
    00
  • Python创建xml的方法

    标题:Python创建XML的方法 在Python中,有多种方式可以创建XML文档: 1. 使用xml.etree.ElementTree模块 xml.etree.ElementTree模块提供了创建、解析和操作XML文档的常用工具。具体步骤如下: 创建根节点对象并设定根节点名称和属性; 创建子节点并设定节点属性; 将子节点添加到根节点下; 将结果写入文件。…

    python 2023年6月3日
    00
  • 不到40行代码用Python实现一个简单的推荐系统

    不到40行代码用Python实现一个简单的推荐系统 推荐系统是一种常见的人工智能应用,它可以根据用户的历史行为和偏好向用户推荐可能感兴趣的品。本文将介绍如何使用Python实现一个简单的推荐系统,该系统基于用户-物品评分矩阵,使用协同过滤算法进行推荐。 1. 数据集 我们将使用MovieLens数据集来演示如何使用协同过滤算法进行推荐。数据集包含多个用户对多…

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