产生加性零均值高斯噪声

目标

本篇主要介绍了以下几点:

1.了解图像噪声,何为图像中的噪声。
2.何为加性均值高斯噪声。加性为什么意思?均值又表示了什么?高斯噪声有何特点?
3.如何产生加性零均值高斯噪声。如何产生正太分布?Box-Muller变换又是什么?
4.如何编程实现?

噪声

实际的图像经常会受到一些随机的影响而退化,可以理解为原图受到干扰和污染。通常就就把这个退化成为噪声(noise)。在我们采集、传输或者处理的过程中都有可能产生噪声,因此噪声的出现是多方面的原因。

在信号处理中我们用概率特征来描述噪声,即噪声出现的概率呈现为什么样子就为什么样子的噪声。就比如本篇的主角高斯噪声,其在信号中出现、分布的概率成高斯分布(正态分布)。也许你会疑问噪声概率分布应是无规律的,现实中也确实噪声严格上是不规律的分布,但是为了简化计算,人们常将噪声理想化,这种理想型的概率分布模型来描述的噪声称为白噪声。白噪声在信号中是典型的,其特点是具有常量功率谱。而高斯噪声属于白噪声的一个特例。

加性零均值高斯噪声

  • 加性
    加性噪声的表示为以下表达式
    f(x,y)=g(x,y)+v(x,y)
    g为原图像信号,v为噪声信号,两者关系是独立的,这表示原图信号如何变化与噪声无光,噪声不依赖于图像信号,这种独立与信号的噪声便称为加性噪(additive noise)。
  • 零均值
    均值为零,即噪声为高斯分布,高斯分公式中的均值为0,即高斯分布的对称轴为0。

产生原理步骤

代码实现

close all;
clear all;
clc;

I=imread('C:\Users\luoqi\Desktop\图片\影院\file.jpg');
[m,n,d]=size(I);
I_od=I;
if ndims(I)==3 %ndims 计算矩阵的维度
I=rgb2gray(I);
end
%% 计算图像的熵
h=zeros(256,1);
for i=1:m
for j=1:n
value=I(i,j);
h(value+1,1)=h(value+1,1)+1;
end
end
h=h./sum(h);%每个像素点的概率
figure
bar(h);%图像的亮度直方图
axis([0,255,0,max(h)*1.1]);

Entropy=0;
for i=1:255
if h(i)~=0
Entropy=Entropy-(h(i)log2(h(i)));
end
end
disp(Entropy);
%% 加入高斯噪声
J=zeros(m,n,d);
sigma=10
rand(1);
for i=1:m
for j=1:2:n
t1=rand(1);
t2=rand(1);
z1=sigmacos(2pit1)sqrt(-2log(t2));
z2=sigma
sin(2pit1)sqrt(-2log(t2));
for k=1:d
J(i,j,k)=I_od(i,j,k)+z1;
if j+1<=n
J(i,j+1,k)=I_od(i,j+1,k)+z2;
end
end
end
end

for i=1:m
for j=1:n
for k=1:d
if J(i,j,k)>255
J(i,j,k)=255;
elseif J(i,j,k)<0
J(i,j,k)=0;
end
end
end
end

J=uint8(J);
figure
subplot(121),imshow(I_od)
subplot(122),imshow(J);

%% 计算信噪比
V=J-I_od;%噪声矩阵
E=sum(sum(sum(V.^2)));
F=sum(sum(sum(J.^2)));
SNR=F/E;
SNR10dB=10*log10(SNR);

posted @ 2020-07-28 10:11  luoqi123456  阅读(3035)  评论(0)    收藏  举报