添加高斯噪聲
概念
高斯噪聲是指它的概率密度函數服從高斯分佈(即正態分佈)的一類噪聲。如果一個噪聲,它的幅度分佈服從高斯分佈,而它的功率譜密度又是均勻分佈的,則稱它爲高斯白噪聲。高斯白噪聲的二階矩不相關,一階矩爲常數,是指先後信號在時間上的相關性。高斯白噪聲包括熱噪聲和散粒噪聲。在通信信道測試和建模中,高斯噪聲被用作加性白噪聲以產生加性白高斯噪聲。
我的理解:高斯噪聲就是符合高斯分佈的噪聲,在數字圖像處理這塊就是二維的高斯分佈(正態分佈)。那麼怎麼添加高斯噪聲呢?首先我們肯定要得到一個二維的、符合高斯分佈的噪聲矩陣,最後將其添加到原圖像上。這樣高斯噪聲就添加成功了。
方法一:利用randn()函數生成高斯噪聲
這裏需要用到randn()函數,該函數就專門用來生成正態分佈數據的一個函數。
比如 randn(10,10),然後這個矩陣和原圖像矩陣相加即可(注意縮放灰度範圍)
randn(10,10)
ans =
-0.3587 0.6694 0.2922 0.4127 -0.4399 -0.2027 1.2917 -1.2807 0.0522 -0.2097
1.4851 -0.2349 -0.0809 -1.0475 0.4734 -0.8012 -1.3658 -2.4489 1.2525 -0.0725
0.1214 0.2553 0.2774 -0.9508 -0.3378 -1.1350 0.7951 -0.6749 -0.1797 -0.5646
-0.7056 1.5769 -0.8234 1.5896 1.5743 0.1304 -0.3575 -1.0971 -0.2286 -1.5035
1.4605 0.6227 -0.6059 1.5939 0.0120 -0.1012 -0.9397 -1.6988 -2.3375 1.0503
-0.2038 0.7016 0.7310 -0.4053 -0.0419 -0.3276 -0.7675 0.6319 0.3662 -1.0595
-1.3164 0.1579 0.3200 -0.2055 0.5508 -0.6350 0.7769 1.1788 1.1854 -1.0070
0.1054 1.0071 0.4267 0.6462 -1.1893 -1.8829 -1.2166 -0.2838 1.0378 0.8280
0.9141 -1.5962 -0.0540 1.5489 1.0449 0.6155 -0.6227 0.2447 0.2955 -0.7770
-0.7474 0.6233 1.3306 -0.2167 -0.2423 1.3778 -1.0203 -1.1946 0.4893 0.0451
代碼:
t=imread('a1.jpg');
[m,n,z]=size(t);
y=0+0.1*randn(m,n);%二維高斯分佈矩陣 0是均值 0.1是標準差
%先將其double化,再除以255 便於後面計算
t1=double(t)/255;
%加上噪聲
t1=t1+y;
%將像素範圍擴大至0--255
t1=t1*255;
%轉換爲uint8類型
t1=uint8(t1);
subplot(1,2,1),imshow(t),title('原圖');
subplot(1,2,2),imshow(t1),title('加入均值爲0,標準差爲0.1的高斯噪聲後');
效果圖:
方法二:隨機生成高斯噪聲(這個我還沒有懂那個隨機生成高斯噪聲函數怎麼來的!)
代碼:
image=imread('a1.jpg');
[width,height,z]=size(image);
subplot(1,2,1);
imshow(image);
title('原圖');
av=0;
std=0.1;
u1=rand(width,height);
u2=rand(width,height);
x=std*sqrt(-2*log(u1)).*cos(2*pi*u2)+av;
result1=double(image)/255+x;
result1=uint8(255*result1);
subplot(1,2,2);
imshow(result1);
title('加入均值爲0,標準差爲0.1的高斯噪聲後');
效果圖:
方法三:利用imnoise()函數
代碼
t=imread('a1.jpg');
imshow(t),title('原圖');
t1=imnoise(t,'gaussian',0,0.01);
figure,imshow(t1),title('添加均值爲0,方差爲0.01的高斯噪聲');
t2=imnoise(t,'gaussian',0,0.02);
figure,imshow(t2),title('添加均值爲0,方差爲0.02的高斯噪聲');
t3=imnoise(t,'gaussian',0,0.03);
figure,imshow(t3),title('添加均值爲0,方差爲0.03的高斯噪聲');
t4=imnoise(t,'gaussian',0.2,0.01);
figure,imshow(t4),title('添加均值爲0.2,方差爲0.01的高斯噪聲');
t5=imnoise(t,'gaussian',0.4,0.01);
figure,imshow(t5),title('添加均值爲0.4,方差爲0.01的高斯噪聲');
效果圖:
注意:imnoise()中參數寫的是方差,而方法一、二中是標準差。
更多
獲取更多資料、代碼,微信公衆號:海轟Pro
回覆 海轟 即可