使用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 数据加密代码
Dec 24 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
Python运算符重载详解及实例代码
Mar 07 Python
python 专题九 Mysql数据库编程基础知识
Mar 16 Python
python 对key为时间的dict排序方法
Oct 17 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
Python shelve模块实现解析
Aug 28 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
python 瀑布线指标编写实例
Jun 03 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
Python中X[:,0]和X[:,1]的用法
May 10 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
session在PHP大型web应用中的使用
2011/06/25 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
实例讲解python函数式编程
2014/06/09 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
大学生最新职业生涯规划书范文
2014/01/12 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
质量保证书范本
2014/04/29 职场文书
詹天佑教学反思
2014/04/30 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
学生会个人总结范文
2015/02/15 职场文书
初中语文教学反思范文
2016/03/03 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫