目標
本篇主要介紹了以下幾點:
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=sigma*cos(2*pi*t1)*sqrt(-2*log(t2));
z2=sigma*sin(2*pi*t1)*sqrt(-2*log(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);