椒盐噪声

椒盐噪声

图像噪声之椒盐噪声(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

结语:

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

时间: 2024-12-11 16:26:03

椒盐噪声的相关文章

opencv中值滤波和低通滤波器对椒盐噪声处理的效果比较

opencv中值滤波和低通滤波器对椒盐噪声处理的效果比较 效果: 通过比较我们可以看出,中值滤波器有很好的保留了图像的边界信息 代码: void showimage(const std::string &str,const cv::Mat &image){ namedWindow(str,CV_WINDOW_AUTOSIZE); imshow(str,image); } Mat salt(const cv::Mat &image,int n){ Mat result = image

opencv初学习-椒盐噪声-中值滤波-均值滤波-腐蚀膨胀

#include <opencv2\opencv.hpp>#include <opencv2\highgui\highgui.hpp>#include <opencv2\imgcodecs\imgcodecs.hpp>#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<iomanip>void salt(cv

图像处理---椒盐噪声(杂点效果)

转自:图像处理:椒盐噪声(杂点) Posted on 2008-10-28 16:07 parker 阅读(2794) 评论(0) 编辑 收藏 1.效果图:            2.实现原理:           在处理每一个像素点时,取得一个随机值与指定的杂点出现概率的值进行判断,以决定是否修改当前像素点的颜色值,如果需要修改,则设定一个随机的颜色值. 3.实现代码:  1        /// <summary> 2        /// 添加杂点 3         /// </

给一幅图像添加椒盐噪声

2015-06-05 知识点: (1)像素值的存储 (2)引用的参数传递方式 (3)单通道和三通道图像像素访问的区别 代码如下: 1 #include "highgui.h" 2 #include "cxcore.h" 3 #include "cv.h" 4 #include "cmath" 5 6 void salt(cv::Mat &, int ); 7 8 9 int main() 10 { 11 cv::Mat

matlab在空域与频域中去除周期噪声、椒盐噪声的简单应用

前言 去年图像处理的DLL,有学弟问我做的思路,便放到博客里 github地址,欢迎star 图像增强处理:设计一套空间域与频率域结合的图像增强算法,处理以下任一组图片中的带噪声图像,去除噪声,提高图像质量. (1)已知:噪声为随机噪声和周期噪声混合噪声: (2)要求: a)去噪处理后,计算均方误差评估去噪处理后图像的去噪效果 b)撰写完整的科技报告(形式类似科技论文)表述自己的算法设计,算法实现与算法评估过程. 对 swanNoise 图像去噪 空域去噪 根据老师讲解,swanNoise.bm

opencv加椒盐噪声

void salt(IplImage *img, int saltNum) { int x,y; int i ; unsigned char *src = NULL; src = (unsigned char*)img->imageData; for(i = 0; i < saltNum; i++) { x = rand() % img->width; y = rand() % img->height; if(img->nChannels == 1) { src[y * im

图像处理之噪声---椒盐,白噪声,高斯噪声三种不同噪声的区别

白噪声是指功率谱密度在整个频域内均匀分布的噪声. 所有频率具有相同能量的随机噪声称为白噪声.白噪声或白杂讯,是一种功率频谱密度为常数的随机信号或随机过程.换句话说,此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声.相对的,其他不具有这一性质的噪声信号被称为有色噪声. 而理想的白噪声具有无限带宽,因而其能量是无限大,这在现实世界是不可能存在的.实际上,我们常常将有限带宽的平整讯号视为白噪

视频质量诊断----雪花噪声检测

雪花噪声即椒盐噪声,以前黑白电视常见的噪声现象. 原理 准备0°,45°,90°,135°4个方向的卷积模板. 用图像先和四个模板做卷积,用四个卷积绝对值最小值Min来检测噪声点. 求灰度图gray与其中值滤波图median. 判断噪声点:fabs(median-gray)>10 && min>0.1. 噪声点占整幅图像的比较即为雪花噪声率. 三.结果演示 雪花噪声率:0.67 0.63 0.15 1.0 雪花噪声率:0.65 1.0 Demo演示下载地址:http://fil

[数字图像处理]常见噪声的分类与Matlab实现

1.研究噪声特性的必要性 本文的内容主要介绍了常见噪声的分类与其特性.将噪声建模,然后用模型去实现各式各样的噪声. 实际生活中的各种照片的老化,都可以归结为以下老化模型. 这个模型很简单,也可以直接用以下公式来表达. 在频域内,用以下公式区表示. 根据以上式子,可以看出,老旧照片的复原,主要分为两个任务,一个是去噪:另一个是去卷积,或者称为逆滤波,也就是将老化滤波器做反处理. 本文首先由噪声类型与其建模.随后的博文,会介绍几种基础的去噪方法和基础的逆滤波方法. 2.噪声的实现 2.1    评价