使用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完全新手教程
Feb 08 Python
Python交换变量
Sep 06 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
python traceback捕获并打印异常的方法
Aug 31 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
django settings.py 配置文件及介绍
Jul 15 Python
django框架模型层功能、组成与用法分析
Jul 30 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
Python中os模块功能与用法详解
Feb 26 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
28个JS验证函数收集
2010/03/02 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Vue的Options用法说明
2020/08/14 Javascript
python中二维阵列的变换实例
2014/10/09 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
python加载自定义词典实例
2019/12/06 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
教师自我反思材料
2014/02/14 职场文书
商务英语专业求职信
2014/06/26 职场文书
八一建军节演讲稿
2014/09/10 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年调度员工作总结
2014/11/19 职场文书
小学四年级学生评语
2014/12/26 职场文书
演讲开场白台词大全
2015/05/29 职场文书
新课程改革心得体会
2016/01/22 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android