使用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爬虫之HTTP异常处理
Nov 05 Python
Python二分法搜索算法实例分析
May 11 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
浅谈Python大神都是这样处理XML文件的
May 31 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Python3并发写文件与Python对比
Nov 20 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
用PHP+MySql编写聊天室
2006/10/09 PHP
优化PHP代码的53条建议
2008/03/27 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
实例讲解php数据访问
2016/05/09 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
PHP 实现缩略图
2021/03/09 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python实现的矩阵类实例
2017/08/22 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
护理自我鉴定范文
2013/10/06 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
小学德育工作总结2015
2015/05/12 职场文书
小学作文之描写天气
2019/08/15 职场文书
python中if和elif的区别介绍
2021/11/07 Python
解决xampp安装后Apache无法启动
2022/03/21 Servers
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫