微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
本节目录
一、图像复原的模型
二、噪声模型
1、高斯噪声
2、瑞利噪声
3、伽玛噪声
4、指数噪声
5、均匀分布噪声
6、脉冲噪声(椒盐噪声)
三、噪声模型的Matlab仿真
四、Matlab源码
1、show_noise函数源码
2、add_noise函数源码
3、噪声模型的Matlab仿真源码一
4、噪声模型的Matlab仿真源码二
本节内容
图像在形成、传播和保存过程中使图像质量下降的过程,称为图像退化。图像复原是重建退化的图像,使其最大限度恢复景物原貌的处理。图像复原的目的是改善图像质量,更偏向于利用退化过程的经验知识使已被退化的图像恢复本来的面目。引起图像退化的因素包括由光学系统、运动等造成的图像模糊,以及源自电路和光学因素的噪声等。图像复原是基于图像退化的数学模型,复原的方法也是建立在比较严格的数学推导上。
一、图像复原的模型
图像复原就是对退化过程建模,并采用相反的过程进行处理,以便恢复原图像。
图像复原一般可采用两种方法。一种是适用于对图像缺乏已知信息的情况。这种方法试图估计图像被一些相对良性的退化过程影响以前的情况。另一种是给出一幅退化图像,并且已知其退化的过程信息,对图像执行该过程的逆操作即可恢复图像。
一般将图像的退化过程模型化为一个退化函数和一个加性噪声项。
f(x,y)——原始输入图像;
h(x,y)——退化函数;
n(x,y)——加性噪声;
g(x,y)——退化图像;
以及复原滤波复原图像。
空间域的表达式:g(x,y)=h(x,y)*f(x,y)+n(x,y),*代表卷积。
频域的表达式:G(u,v)=H(u,v)×F(u,v)+N(u,v)。
二、噪声模型
噪声主要来源于图像的获取和传输过程。
①图像传感器的工作情况受各种因素的影响,比如图像获取的环境条件和传感元器件自身质量。
②图像在传输过程中主要由于所用传输信道被干扰而受到噪声污染。
高斯噪声的产生源于电子电路噪声和由低照明或高温带来的传感器噪声。
瑞利密度分布在图像范围内特征化噪声现象时非常有用。
指数密度分布和伽玛密度分布在激光成像中有应用。
椒盐噪声主要表现在成像中的短暂停留。
均匀分布是实践中最少出现的噪声。
1、高斯噪声
高斯随机变量的概率密度函数:
Ζ表示灰度值;
μ表示Ζ的平均值或期望值;
σ表示Ζ的标准差;
标准差的平方σ^2表示Ζ的方差。
2、瑞利噪声
当一个随机二维向量的两个分量呈独立的、有着相同的方差的正态分布时,这个向量的模呈瑞利分布。服从这种分布的噪声称为瑞利噪声。
概率密度函数:
概率密度的均值:
方差:
3、伽玛噪声
服从伽玛分布的噪声称为伽玛分布,由形状参数和尺度参数控制。
概率密度函数:
概率密度的均值:
方差:
4、指数噪声
概率密度函数:
概率密度的均值:
方差:
5、均匀分布噪声
概率密度函数:
概率密度的均值:
方差:
6、脉冲噪声(椒盐噪声)
概率密度函数:
若b>a,则灰度值b在图像中将显示为一个亮点,反之为一个暗点。
若Pa或Pb其中之一为零,则脉冲噪声称为单极脉冲。
若Pa和Pb均不为零,尤其是近似相等,则脉冲噪声将类似于随机分布在图像上的胡椒和盐粉微粒,称为椒盐噪声。
三、噪声模型的Matlab仿真
①自定义show_noise函数,实现高斯噪声、瑞利噪声、伽玛噪声、指数噪声、椒盐噪声和均匀分布噪声的显示。
②自定义add_noise函数,为图像添加高斯噪声、瑞利噪声、伽玛噪声、指数噪声、椒盐噪声和均匀分布噪声。
四、Matlab源码
1、show_noise函数源码
function y=show_noise(type,x,a,b)
%show_noise 显示不同噪声的概率密度函数
%type 噪声种类
%高斯噪声 gaussian
%瑞利噪声 rayleigh
%伽玛噪声 gamma
%指数噪声 exp
%均匀分布噪声 uniform
%椒盐噪声 salt & pepper
%设置默认噪声类型
if nargin==1
type='gaussian';
end
switch lower(type)
%高斯噪声
case 'gaussian'
if nargin<4
b=10;
end
if nargin<3
a=0;
end
y=normpdf(x,a,b);
%均匀分布噪声
case 'uniform'
if nargin<4
b=20;
end
if nargin<3
a=-20;
end
y=unifpdf(x,a,b);
%椒盐噪声
case 'salt & pepper'
y=zeros(size(x));
y(1)=0.5;
y(end)=0.5;
%瑞利噪声
case 'rayleigh'
if nargin<3
a=30;
end
y=raylpdf(x,a);
%指数噪声
case 'exp'
if nargin<3
a=15;
end
y=exppdf(x,a);
%伽玛噪声
case 'gamma'
if nargin<4
b=10;
end
if nargin<3
a=2;
end
y=normpdf(x,a,b);
otherwise
error('Unknown distribution type.')
end
2、add_noise函数源码
function out=add_noise(I,type,x,y)
%add_noise 添加噪声
%I 输入灰度图像
%type 噪声种类
%高斯噪声 gaussian
%瑞利噪声 rayleigh
%伽玛噪声 gamma
%指数噪声 exp
%均匀分布噪声 uniform
%椒盐噪声 salt & pepper
%预处理
if ndims(I)>=3
I=rgb2gray(I);
end
[M,N]=size(I);
%设置默认噪声类型
if nargin==1
type='gaussian';
end
switch lower(type)
%高斯噪声
case 'gaussian'
if nargin<4
y=10;
end
if nargin<3
x=0;
end
R=normrnd(x,y,M,N);
out=double(I)+R;
out=uint8(round(out));
%均匀分布噪声
case 'uniform'
if nargin<4
y=20;
end
if nargin<3
x=-20;
end
R=unifrnd(x,y,M,N);
out=double(I)+R;
out=uint8(round(out));
%椒盐噪声
case 'salt & pepper'
if nargin<3
x=0.02;
end
out=imnoise(I,'salt & pepper',x);
%瑞利噪声
case 'rayleigh'
if nargin<3
x=30;
end
R=raylrnd(x,M,N);
out=double(I)+R;
out=uint8(round(out));
%指数噪声
case 'exp'
if nargin<3
x=15;
end
R=exprnd(x,M,N);
out=double(I)+R;
out=uint8(round(out));
%伽玛噪声
case 'gamma'
if nargin<4
y=10;
end
if nargin<3
x=2;
end
R=gamrnd(x,y,M,N);
out=double(I)+R;
out=uint8(round(out));
otherwise
error('Unknown distribution type.')
end
3、噪声模型的Matlab仿真源码一
x=-4:0.1:4;
y1=show_noise('gaussian',x,0,1);
y2=show_noise('uniform',x,-3,3);
y3=show_noise('salt & pepper',x);
y4=show_noise('rayleigh',x,1);
y5=show_noise('exp',x,1);
y6=show_noise('gamma',x,2,5);
subplot(3,2,1);
plot(x,y1);
title('高斯 gaussian');
subplot(3,2,2);
plot(x,y2);
title('均匀分布噪声 uniform');
subplot(3,2,3);
plot(x,y3);
title('椒盐噪声 salt & pepper');
subplot(3,2,4);
plot(x,y4);
title('瑞利噪声 rayleigh');
subplot(3,2,5);
plot(x,y5);
title('指数噪声 exp');
subplot(3,2,6);
plot(x,y6);
title('伽玛噪声 gamma');
4、噪声模型的Matlab仿真源码二
clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
I1=rgb2gray(I);
y1=add_noise(I1,'gaussian',0,10);
y2=add_noise(I1,'uniform',-20,20);
y3=add_noise(I1,'salt & pepper',0.02);
y4=add_noise(I1,'rayleigh',30);
y5=add_noise(I1,'exp',15);
y6=add_noise(I1,'gamma',2,10);
subplot(3,2,1);
imshow(y1);
title('高斯 gaussian');
subplot(3,2,2);
imshow(y2);
title('均匀分布噪声 uniform');
subplot(3,2,3);
imshow(y3);
title('椒盐噪声 salt & pepper');
subplot(3,2,4);
imshow(y4);
title('瑞利噪声 rayleigh');
subplot(3,2,5);
imshow(y5);
title('指数噪声 exp');
subplot(3,2,6);
imshow(y6);
title('伽玛噪声 gamma');