资讯专栏INFORMATION COLUMN

图像加高斯噪声或椒盐噪声(python)

tinyq / 1295人阅读

摘要:作者介绍内容简介加噪声的代码高斯噪声,椒盐噪声在中如何使用作者介绍张伟伟,男,西安工程大学电子信息学院,级硕士研究生,张宏伟人工智能课题组。

作者介绍

张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。
研究方向:机器视觉与人工智能。
电子邮件:zhangweiweicpp@163.com

内容简介

展示如何给图像叠加不同等级的椒盐噪声和高斯噪声的代码,相应的叠加噪声的已编为对应的类,可实例化使用。以下主要展示自己编写的:

加噪声的代码(高斯噪声,椒盐噪声…)

后续会补充加随机像素缺失、加大的mask的代码
add_noise.py

#代码中的noisef为信号等级,例如我需要0.7的噪声,传入参数我传入的是1-0.7from PIL import Imageimport numpy as npimport randomimport torchvision.transforms as transformsnorm_mean = (0.5, 0.5, 0.5)norm_std = (0.5, 0.5, 0.5)class AddPepperNoise(object):    """增加椒盐噪声    Args:        snr (float): Signal Noise Rate        p (float): 概率值,依概率执行该操作    """    def __init__(self, snr, p=0.9):        assert isinstance(snr, float) and (isinstance(p, float))    # 2020 07 26 or --> and        self.snr = snr        self.p = p    def __call__(self, img):        """        Args:            img (PIL Image): PIL Image        Returns:            PIL Image: PIL image.        """        if random.uniform(0, 1) < self.p:            img_ = np.array(img).copy()            h, w, c = img_.shape            signal_pct = self.snr            noise_pct = (1 - self.snr)            mask = np.random.choice((0, 1, 2), size=(h, w, 1), p=[signal_pct, noise_pct/2., noise_pct/2.])            mask = np.repeat(mask, c, axis=2)            img_[mask == 1] = 255   # 盐噪声            img_[mask == 2] = 0     # 椒噪声            return Image.fromarray(img_.astype("uint8")).convert("RGB")        else:            return imgclass Gaussian_noise(object):    """增加高斯噪声    此函数用将产生的高斯噪声加到图片上    传入:        img   :  原图        mean  :  均值        sigma :  标准差    返回:        gaussian_out : 噪声处理后的图片    """    def __init__(self, mean, sigma):        self.mean = mean        self.sigma = sigma    def __call__(self, img):        """        Args:            img (PIL Image): PIL Image        Returns:            PIL Image: PIL image.        """        # 将图片灰度标准化        img_ = np.array(img).copy()        img_ = img_ / 255.0        # 产生高斯 noise        noise = np.random.normal(self.mean, self.sigma, img_.shape)        # 将噪声和图片叠加        gaussian_out = img_ + noise        # 将超过 1 的置 1,低于 0 的置 0        gaussian_out = np.clip(gaussian_out, 0, 1)        # 将图片灰度范围的恢复为 0-255        gaussian_out = np.uint8(gaussian_out*255)        # 将噪声范围搞为 0-255        # noise = np.uint8(noise*255)        return Image.fromarray(gaussian_out).convert("RGB")def image_transform(noisef):    """对训练集和测试集的图片作预处理转换        train_transform:加噪图        _train_transform:原图(不加噪)        test_transform:测试图(不加噪)    """    train_transform = transforms.Compose([        transforms.Resize((256, 256)),  # 重设大小        #transforms.RandomCrop(32,padding=4),        AddPepperNoise(noisef, p=0.9),                 #加椒盐噪声        #Gaussian_noise(0, noisef),  # 加高斯噪声        transforms.ToTensor(),  # 转换为张量        # transforms.Normalize(norm_mean,norm_std),    ])    _train_transform = transforms.Compose([        transforms.Resize((256, 256)),        #transforms.RandomCrop(32,padding=4),        transforms.ToTensor(),        # transforms.Normalize(norm_mean,norm_std),    ])    test_transform = transforms.Compose([        transforms.Resize((256, 256)),        #transforms.RandomCrop(32,padding=4),        transforms.ToTensor(),        # transforms.Normalize(norm_mean,norm_std),    ])    return train_transform, _train_transform, test_transform

在pytorch中如何使用

# 图像变换和加噪声train_transform为加噪图,_train_transform为原图,test_transform为测试图   noisef为传入的噪声等级train_transform,_train_transform,test_transform = image_transform(noisef)training_data=FabricDataset_file(data_dir=train_dir,transform=train_transform)_training_data=FabricDataset_file(data_dir=_train_dir,transform=_train_transform)testing_data=FabricDataset_file(data_dir=test_dir,transform=test_transform)

欢迎点赞收藏和关注哈!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124747.html

相关文章

  • 学习笔记-使用Python对含有椒盐噪声图像进行均值滤波,高斯滤波和中值滤波

    摘要:我是分界线第一个参量为输入的图片,第二个是噪声占图片像素的百分比计算椒盐噪声点数量参数参数必须是整数函数返回值是参数和参数之间的任意整数生成随机位置浅度复制,复制的数不会随着被复制数的嵌套序列的元素的改变而改变从到图像长度之间的一个随机 import cv2 as cvfrom pylab ...

    Clect 评论0 收藏0
  • 图像增强——空间域滤波

    摘要:能够有效去除椒盐噪声黑白点叠加在图像上去除噪声的同时,比较好地保留边缘空间域锐化滤波器高通滤波器锐化处理的主要目的是为了突出图像的边缘信息,增强图像的轮廓特征,以便于人眼的观察和机器的识别。 ...

    Cheriselalala 评论0 收藏1
  • opencv python 图像平滑/2D卷积/图像平滑/平均值法/高斯模糊/中值模糊/双边滤波

    摘要:卷积与一维信号一样,图像也可以使用各种低通滤波器,高通滤波器等进行滤波有助于消除噪声,模糊图像等滤波器有助于找到边缘图片将内核与图像进行卷积应用对图像进行平均过滤。它只取内核区域下所有像素的平均值并替换中心元素。 Smoothing Images 1 2D卷积 与一维信号一样,图像也可以使用各种低通滤波器(LPF),高通滤波器(HPF)等进行滤波.LPF有助于消除噪声,模糊图像等.H...

    Little_XM 评论0 收藏0
  • OpenCV-Python计算机视觉函数

    摘要:如果不设置这个,图片只会一瞬间显示,就消失了。括号里面也可以设置显示时长。 目录 1、概述 2、OpenCV基础 读取图片 imread 调整显示窗口大小 resizeWindow 调整图像尺寸大小 resize 色彩空间进行转换 cvtColor 绘制线段 line 绘制矩形框 recta...

    levius 评论0 收藏0
  • Programming Computer Vision with Python (学习笔记八)

    摘要:简称库是从扩展下来的,提供了更丰富的图像处理函数,去噪函数除了还有算法,比如边缘检测还有以前简单提过的算子滤波器。下面我用看具体的例子,将和高斯平滑进行对比效果对比如下明显感觉使用的效果要比高斯平滑好很多。 图像去噪(Image Denoising)的过程就是将噪点从图像中去除的同时尽可能的保留原图像的细节和结构。这里讲的去噪跟前面笔记提过的去噪不一样,这里是指高级去噪技术,前面提过的...

    FleyX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<