码迷,mamicode.com
首页 > 其他好文 > 详细

椒盐噪声

时间:2017-07-23 12:31:51      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:博客   gray   post   number   .text   app   art   数组   keyword   

椒盐噪声

图像噪声之椒盐噪声(Salt And Pepper Noise)

概述:

椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐。椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种由于信号脉冲强度引起的噪声,产生该噪声的算法也比較简单。

算法步骤:

我们使用信噪比(Signal NoiseRate)衡量图像噪声。

图象的信噪比应该等于信号与噪声的功率谱之比,但通常功率谱难以计算,有一种方法能够近似预计图象信噪比,即信号与噪声的方差之比。首先计算图象全部象素的局部方差。将局部方差的最大值觉得是信号方差,最小值是噪声方差。求出它们的比值,再转成dB数。最后用经验公式修正。

假设是灰度图像的话,SNR=(洁净图片中的像素点的灰度值之和)/abs(噪声图片的灰度值之和-洁净图片中的灰度值之和)为该图像的信噪比。

给一副数字图像加上椒盐噪声的过程例如以下:

  • (1)指定信噪比 SNR (其取值范围在[0, 1]之间)
  • (2)计算总像素数目 SP。 得到要加噪的像素数目 NP = SP * (1-SNR)
  • (3)随机获取要加噪的每一个像素位置P(i, j)
  • (4)指定像素值为255或者0。

  • (5)反复3,4两个步骤完毕全部像素的NP个像素
  • (6)输出加噪以后的图像

编程实例:

为简单起见,直接使用灰度图进行測试。彩色图的原理是同样的。

# -*- coding: utf-8 -*-

from PIL import Image

from pylab import *

from numpy import*

#读取图片,灰度化,并转为数组
img = im = array(Image.open(‘./source/test.jpg‘).convert(‘L‘))

#信噪比
SNR = 0.6

#计算总像素数目 SP, 得到要加噪的像素数目 NP = SP * (1-SNR)
noiseNum=int((1- SNR)*img.shape[0]*img.shape[1])

#于随机位置将像素值随机指定为0或者255
for i in range(noiseNum):

    randX=random.random_integers(0,img.shape[0]-1)  

    randY=random.random_integers(0,img.shape[1]-1)  

    if random.random_integers(0,1)==0:  

        img[randX,randY]=0  

    else:  

        img[randX,randY]=255   

#显示图像
gray()

imshow(img)

show()         

执行结果:

原图

技术分享

SNR = 0.8

技术分享

SNR = 0.6

技术分享

SNR = 0.4

技术分享

结语:

本篇博客主要介绍了椒盐噪声这样的常见的图像噪声。希望对大家有所帮助~

椒盐噪声

标签:博客   gray   post   number   .text   app   art   数组   keyword   

原文地址:http://www.cnblogs.com/yfceshi/p/7224115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!