图像噪声模型(matlab)

概述

在图像的采集、传送和转换过程中,会添加一些噪声,表现为图像模糊、失真和有噪声等。图像复原就是尽可能恢复退化图像的本来面目,沿用图像退化的逆过程进行处理。图像复原技术是根据图像退化的先验知识建立一个退化模型,以此模型为基础,采用各种逆退化处理方法进行恢复,得到质量改善的图像。图像复原技术主要包括图像的噪声模型、图像的滤波模型及常用的图形复原方法。

图形复原最基本的任务是在去除图像中的噪声同时,不丢失图像中的细节信息,假设成像系统是在位移不变系统,则获取图像g(x,y) = f(x,y)h(x,y) + n(x,y),f(x,y)表示理想的、没有退化的图像,g(x,y)是退化后观察得到的图像,n(x,y)为加性噪声。图像复原是在已知g(x,y)、h(x,y)和n(x,y)的一些先验知识的条件下,求解f(x,y)的过程。
在这里插入图片描述
图像复原是根据图像退化的原因建立相对应的数学模型,从退化图像中提取所需要的信息,沿着图像退化的逆过程来恢复图像的本来面目。实际图像复原是设计一个滤波器,从降质图像g(x,y)中计算得到真实图像的估计值,最大程度的接近真实图像f(x,y)。图像复原是一个求逆的问题。
在这里插入图片描述
图像的噪声按照噪声和信号之间的关系可分为加性噪声和乘性噪声,假设图像的像素值为F(x,y),噪声信号为N(x,y)。如果混合叠加信号为F(x,y)+N(x,y),则这种噪声为加性噪声;如果叠加后信号为F(x,y)×[1+N(x,y)]的形式,则这种噪声为乘性噪声。

噪声概述

高斯噪声

高斯噪声是一种源于电子电路噪声和由低照明度或高温带来的传感器噪声。高斯噪声也成为正态噪声。高斯噪声可以通过空域滤波的平滑或图像修复原技术来消除。
随机变量z表示灰度值,μ为噪声的期望,σ为噪声的标准差,σ^2为噪声的方差。
在这里插入图片描述

椒盐噪声

椒盐噪声又称为双极脉冲噪声,其概率密度函数为:
在这里插入图片描述
椒盐噪声是指在图像中出现的噪声只有两种灰度值,分别为a和b,改噪声的均值和方差分别为:m = aPa+bPb,σ^2 = (a-m)2*Pa+(b-m)2*Pb,通常情况下脉冲噪声总是数字化为允许的最大值和最小值,所以,负脉冲以黑色(胡椒点)出现在图像中,正脉冲以白点(盐点)出现在图像中,去除椒盐噪声的较好办法是中值滤波。

均匀分布噪声

均匀分布噪声的概率密度函数为:
在这里插入图片描述
均匀分布噪声的期望和方差分别为:m = (a+b)/2;σ^2 = (b-a)^2/12

指数分布噪声

指数分布噪声的概率密度函数为:
在这里插入图片描述
指数分布噪声的期望和方差为:m = 1/a;σ^2 = 1/a^2

伽马分布噪声

伽马分布噪声的概率密度函数为:
在这里插入图片描述
伽马分布噪声的期望和方差为:m = b/a;σ^2 = b/a^2

代码实现

J = imnoise(I,type,parameters)
type:高斯噪声:gaussian、0均值白噪声:localvar、泊松噪声:poisson、椒盐噪声:salt&peper、乘性噪声:speckle
parameters:对应噪声的参数

#通过均值和方差产生高斯噪声
>> I = uint8(100*ones(256,256));
>> J = imnoise(I,'gaussian',0,0.01);#高斯噪声方差为0.01
>> K = imnoise(I,'gaussian',0,0.03);
>> figure,
>> subplot(221),imshow(J)
>> subplot(222),imhist(J)
>> subplot(223),imshow(K)
>> subplot(224),imhist(K)

在这里插入图片描述

#通过位置信息产生高斯噪声
>> I = imread('E:\persional\matlab\images\ba.tif');
>> I = im2double(I);
>> V = zeros(size(I));#建立矩阵V
>> for i=1:size(V,1)
		V(i,:) = 0.02*i/size(V,1);
   end
>> J = imnoise(I,'localvar',V);
>> figure,
>> subplot(121),imshow(I);
>> subplot(122),imshow(J);

在这里插入图片描述

#通过亮度来产生高斯噪声
>> I = imread('E:\persional\matlab\images\lena.bmp');
>> I = im2double(I);
>> h = 0:0.1:1;
>> v = 0.01:-0.001:0;
>> J = imnoise(I,'localvar',h,v);
>> figure,
>> subplot(121),imshow(I);
>> subplot(122),imshow(J);

在这里插入图片描述
添加椒盐噪声:

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> I = im2double(I);
>> J = imnoise(I,'salt & pepper',0.01);
>> K = imnoise(I,'salt & pepper',0.03);
>> figure,
>> subplot(131),imshow(I);
>> subplot(132),imshow(J);
>> subplot(133),imshow(K);

在这里插入图片描述
给图像添加椒盐噪声和盐噪声:

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> I = im2double(I);
>> R = rand(size(I));
>> J = I;
>> J(R<=0.02)=0;#添加椒噪声
>> K = I;
>> K(R<=0.03)=1;#添加盐噪声
>> figure,
>> subplot(131),imshow(I);
>> subplot(132),imshow(J);
>> subplot(133),imshow(K);

在这里插入图片描述
给图像添加泊松噪声:

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> J = imnoise(I,'poisson');
>> figure,
>> subplot(121),imshow(I);
>> subplot(122),imshow(J);

在这里插入图片描述

给图像添加乘性噪声:

>> I = imread('E:\persional\matlab\images\lena.bmp');
>> J = imnoise(I,'speckle');%添加乘性噪声,方差默认
>> K = imnoise(I,'speckle',0.2);%方差为0.2
>> figure,
>> subplot(131),imshow(I);
>> subplot(132),imshow(J);
>> subplot(133),imshow(K);

在这里插入图片描述
均匀分布的噪声:

>> m=256;n=256;
>> b=160;
>> a=40;
>> I = (b-a)*rand(m,n);
>> subplot(121),imshow(I);
>> subplot(122),imhist(I);

在这里插入图片描述

指数分布的噪声:

>> m=256;n=256;
>> a = 0.04;
>> k = -1/a;
>> I = k*log(I);
>> figure,
>> subplot(121),imshow(uint8(I));
>> subplot(122),imhist(uint8(I));

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_56260304/article/details/127449405