文章目录

  • 椒盐噪声概念
  • 椒盐噪声数学定义
  • 椒盐噪声代码实现

最近碰到一个过拟合问题(感觉在工程里大部分时间都在解决过拟合,只要选正确模型~),想通过增加椒盐噪声来增加训练样本的多样性,对椒盐噪声有了新的认识——原来 椒盐噪声 = 椒噪声 + 盐噪声

椒盐噪声概念

椒盐噪声又称为脉冲噪声,它是一种随机出现的白点或者黑点,如下图。
在机器学习的图像分类任务中,为图像增加椒盐噪声是一种常用的数据增强方法,这里就介绍添加椒盐噪声的函数(基于python)。

椒盐噪声数学定义

信噪比
在噪声的概念中,通常采用信噪比(Signal-Noise Rate, SNR)衡量图像噪声。通俗的讲就是信号占多少,噪声占多少,SNR越小,噪声占比越大。
在信号系统中,计量单位为dB,为10lg(PS/PN), PS和PN分别代表信号和噪声的有效功率。

在这里,采用信号像素点的占比充当SNR,以衡量所添加噪声的多少。
举个例,假设一张图像的宽x高 = 10x10 ,共计100个像素,想让其中20个像素点变为噪声,其余80个像素点保留原值,则这里定义的SNR=80/100 = 0.8 。

一开始也说了,椒盐噪声 = 椒噪声 + 盐噪声 ,椒盐噪声的值为0(黑色)或者255(白色),这里假设为等概率的出现0或者255。

为图像添加椒盐噪声的的步骤如下:

  1. 依SNR制作mask,用于判断像素点是原始信号,还是噪声
  2. 依mask给原图像赋噪声值

椒盐噪声代码实现

def addsalt_pepper(img, SNR):img_ = img.copy()c, h, w = img_.shapemask = np.random.choice((0, 1, 2), size=(1, h, w), p=[SNR, (1 - SNR) / 2., (1 - SNR) / 2.])mask = np.repeat(mask, c, axis=0)     # 按channel 复制到 与img具有相同的shapeimg_[mask == 1] = 255    # 盐噪声img_[mask == 2] = 0      # 椒噪声return img_

注意事项,输入的img的shape有规定,需要是 c,h,w。可自行修改

执行以下脚本,可以查看不同SNR下添加椒盐噪声的效果。

# coding: utf-8import numpy as np
import cv2
from matplotlib import pyplot as pltdef addsalt_pepper(img, SNR):img_ = img.copy()c, h, w = img_.shapemask = np.random.choice((0, 1, 2), size=(1, h, w), p=[SNR, (1 - SNR) / 2., (1 - SNR) / 2.])mask = np.repeat(mask, c, axis=0)     # 按channel 复制到 与img具有相同的shapeimg_[mask == 1] = 255    # 盐噪声img_[mask == 2] = 0      # 椒噪声return img_img = cv2.imread('your_path.jpg')SNR_list = [0.9, 0.7, 0.5, 0.3]
sub_plot = [221, 222, 223, 224]plt.figure(1)
for i in range(len(SNR_list)):plt.subplot(sub_plot[i])img_s = addsalt_pepper(img.transpose(2, 1, 0), SNR_list[i])     # c,img_s = img_s.transpose(2, 1, 0)cv2.imshow('PepperandSalt', img_s)cv2.waitKey(0)plt.imshow(img_s[:,:,::-1])     # bgr --> rgbplt.title('add salt pepper noise(SNR={})'.format(SNR_list[i]))  plt.show()

最终得到小猫图像如下:

椒盐噪声 Python实现相关推荐

  1. 图片添加高斯噪声和椒盐噪声python

    使用Python给图片添加高斯噪声和椒盐噪声,在研究图像降噪算法时,经常会使用到,简单的写了几行代码. import cv2 import os import numpy as npdef Expan ...

  2. 高斯噪声和椒盐噪声python

    高斯噪声的代码如下: def GaussianNoise(src,means,sigma):NoiseImg=srcrows=NoiseImg.shape[0]cols=NoiseImg.shape[ ...

  3. [转载] opencv-python:13_图像噪声(噪声的概念、椒盐噪声、高斯噪声、使用python给图像添加噪声)

    参考链接: Python OpenCV 基础 0: imshow 显示图像 图像噪声 学习两种图像噪声,即椒盐噪声和高斯噪声.使用python实现给图像添加椒盐噪声和高斯噪声 一.噪声的概念 在噪声的 ...

  4. python添加高斯噪声_使用Python-OpenCV向图片添加噪声(高斯噪声、椒盐噪声)

    在matlab中,存在执行直接得函数来添加高斯噪声和椒盐噪声.Python-OpenCV中虽然不存在直接得函数,但是很容易使用相关的函数来实现. 代码: import numpy as np impo ...

  5. 椒盐噪声及高斯噪声图片加噪python实现(附代码)

    椒盐噪声及高斯噪声图片加噪python实现(附代码) 写在前面 这个博客会记录我最近学习的笔记,算是成长记录啦,如果有错误的地方还请指出,这也是学习的过程呀! 椒盐噪声 椒盐噪声又称为脉冲噪声,它是一 ...

  6. 图像处理:随机添加椒盐噪声和高斯噪声Python

    图像处理:随机添加椒盐噪声和高斯噪声Python 目录 图像处理:随机添加椒盐噪声和高斯噪声Python 1.常见的图像噪声 (1)高斯噪声 (2) 椒盐噪声 2.生成图像噪声 (1)高斯噪声 (2) ...

  7. python高斯滤波和降噪_python添加高斯噪声和椒盐噪声,实现中值滤波和均值滤波,实现Roberts算子和Sobel算子...

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验一,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验一. 由于时间紧张,代码没有进行任何优化, ...

  8. 【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)

    目录 1.随机噪声 2.椒盐噪声 3.高斯噪声 补充:numpy.clip函数 4.其他噪声 1.随机噪声 随机噪声就是通过随机函数在图像上随机地添加噪声点 随机函数random模块参考:https: ...

  9. 第5章 Python 数字图像处理(DIP) - 图像复原与重建6 - 椒盐噪声

    标题 椒盐噪声 椒盐噪声 如果kkk是一幅数字图像中表示灰度值的比特数,则灰度值可能是[0,2k−1][0, 2^k -1][0,2k−1].椒盐噪声的PDF为: P(z)={Ps,z=2k−1Pp, ...

最新文章

  1. UITableViewCell中cell重用机制导致内容重复的方法
  2. python 时间序列预测_使用Python进行动手时间序列预测
  3. 七、matplotlib的使用
  4. dede plus ad js.php,织梦程序中plus文件作用介绍及安全设置
  5. 通信学会学术年会感受
  6. 几款软件需求分析工具
  7. 详解YUV数据格式(YUV444,YUV422,YUV420,YV12,YU12,NV12,NV21)
  8. Mysql索引优化及面试题
  9. 第十六届—振兴杯计算机网络管理员决赛模拟题
  10. destoon ajax调用,destoon if else 的常见使用方法
  11. C++学习之boost安装及thread使用
  12. 系统移植(系统移植环境搭建及简单概念)
  13. 自考计算机应用技术题,4月全国自考计算机应用技术试题及答案解析
  14. Unity3d--基于对象池优化思想的音频管理系统
  15. 基于Jetson NX的模型部署
  16. springBoot 项目自定义命名application.properties配置文件名称
  17. 计算机实习报告6000字,实习报告6000
  18. 人眼识别与机器识别的联系_机器可以识别笑话吗
  19. 怎么利用NTFS文件权限打造安全u盘
  20. 平衡膳食,健康忠告 02

热门文章

  1. 【转】Apache配置正向代理与反向代理
  2. MooFest POJ - 1990
  3. python collections,函数等笔记
  4. 作业8 单元测试练习
  5. C#操作数据库,将其查查出来的记录条数显示在winform窗体中的方法之一
  6. 1199: [HNOI2005]汤姆的游戏 - BZOJ
  7. [Z]四种浏览器对 clientHeight、offsetHeight、scrollHeight、clientWidth、offsetWidth 和 scrollWidth 的解释...
  8. 一步步构建大型网站架构(转载)
  9. 《设计模式详解》行为型模式 - 备忘录模式
  10. 【Java从0到架构师】RocketMQ 使用 - 集成 SpringBoot