使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)


Posted in Python onMay 28, 2019

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

代码:

import numpy as np
import random
import cv2

def sp_noise(image,prob):
  '''
  添加椒盐噪声
  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 = 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 gasuss_noise(image, mean=0, var=0.001):
  ''' 
    添加高斯噪声
    mean : 均值 
    var : 方差
  '''
  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)
  #cv.imshow("gasuss", out)
  return out

可见,只要我们得到满足某个分布的多维数组,就能作为噪声添加到图片中。

例如:

import cv2
import numpy as np

>>> im = np.empty((5,5), np.uint8) # needs preallocated input image
>>> im
array([[248, 168, 58,  2,  1], # uninitialized memory counts as random, too ? fun ;) 
    [ 0, 100,  2,  0, 101],
    [ 0,  0, 106,  2,  0],
    [131,  2,  0, 90,  3],
    [ 0, 100,  1,  0, 83]], dtype=uint8)
>>> im = np.zeros((5,5), np.uint8) # seriously now.
>>> im
array([[0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0]], dtype=uint8)
>>> cv2.randn(im,(0),(99))     # normal
array([[ 0, 76,  0, 129,  0],
    [ 0,  0,  0, 188, 27],
    [ 0, 152,  0,  0,  0],
    [ 0,  0, 134, 79,  0],
    [ 0, 181, 36, 128,  0]], dtype=uint8)
>>> cv2.randu(im,(0),(99))     # uniform
array([[19, 53, 2, 86, 82],
    [86, 73, 40, 64, 78],
    [34, 20, 62, 80, 7],
    [24, 92, 37, 60, 72],
    [40, 12, 27, 33, 18]], dtype=uint8)

然后再:

img = ...
noise = ...

image = img + noise

参考链接:

1、https://stackoverflow.com/questions/22937589/how-to-add-noise-gaussian-salt-and-pepper-etc-to-image-in-python-with-opencv#

2、https://stackoverflow.com/questions/14435632/impulse-gaussian-and-salt-and-pepper-noise-with-opencv#

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python下线程之间的共享和释放示例
May 04 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
Django用户认证系统 User对象解析
Aug 02 Python
python求质数列表的例子
Nov 24 Python
python numpy 反转 reverse示例
Dec 04 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 Python
python中数字是否为可变类型
Jul 08 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 Python
linux中nohup和后台运行进程查看及终止
Jun 24 Python
Python学习笔记之变量、自定义函数用法示例
May 28 #Python
Python分布式进程中你会遇到的问题解析
May 28 #Python
Python增强赋值和共享引用注意事项小结
May 28 #Python
Django框架用户注销功能实现方法分析
May 28 #Python
Django框架首页和登录页分离操作示例
May 28 #Python
Django框架封装外部函数示例
May 28 #Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 #Python
You might like
相对路径转化成绝对路径
2007/04/10 PHP
php explode函数实例代码
2012/02/27 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
js获取页面description的方法
2015/05/21 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
python计算导数并绘图的实例
2020/02/29 Python
Python count函数使用方法实例解析
2020/03/23 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
数据库面试要点基本概念
2013/10/31 面试题
元旦晚会邀请函
2014/01/27 职场文书
公司门卫岗位职责
2014/03/15 职场文书
生物工程专业求职信
2014/09/03 职场文书
房屋出售授权委托书
2014/10/12 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
中秋客户感谢信
2015/01/22 职场文书
党员评议自我评价
2015/03/03 职场文书
信访维稳承诺书
2015/05/04 职场文书
初级职称评定工作总结
2015/08/13 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android