MATLAB--數字圖像處理 添加椒鹽噪聲

添加椒鹽噪聲
    椒鹽噪聲也稱爲脈衝噪聲,是圖像中經常見到的一種噪聲,它是一種隨機出現的白點或者黑點,可能是亮的區域有黑色像素或是在暗的區域有白色像素(或是兩者皆有)。鹽和胡椒噪聲的成因可能是影像訊號受到突如其來的強烈干擾而產生、類比數位轉換器或位元傳輸錯誤等。例如失效的感應器導致像素值爲最小值,飽和的感應器導致像素值爲最大值。

方法一:利用imnoise()函數

t=imread('a1.jpg');
subplot(1,2,1),imshow(t),title('原圖');
t1=imnoise(t,'salt & pepper',0.1);
subplot(1,2,2),imshow(t1),title('加入噪聲密度:0.1的椒鹽噪聲');
t2=imnoise(t,'salt & pepper',0.2);
figure,subplot(1,2,1),imshow(t2),title('加入噪聲密度:0.2的椒鹽噪聲');
t3=imnoise(t,'salt & pepper',0.3);
subplot(1,2,2),imshow(t3),title('加入噪聲密度:0.3的椒鹽噪聲');

效果圖:
在這裏插入圖片描述
在這裏插入圖片描述
注意:

  • 噪聲類型是 ‘salt & pepper’ 一定注意空格的位置 這裏比較嚴格
  • 當噪聲類型是’salt & pepper’的時候,第三個參數的意思是噪聲密度,比如0.1,那麼總像素個數的10%爲黑白點,當然是黑點還是白點都是隨機的。

方法二:自己構造隨機點

image=imread('a1.jpg');
[width,height,z]=size(image);

result2=image;
subplot(1,2,1)
imshow(image);
title('原圖');

%k1、k2作爲判斷臨界點
k1=0.2;
k2=0.2;
%rand(m,n)是隨機生成m行n列的矩陣,每個矩陣元素都在0-1之間
%這裏k都是0.2,所以小於k的元素在矩陣中爲1,反之爲0
a1=rand(width,height)<k1;
a2=rand(width,height)<k2;
%合成彩色圖像
t1=result2(:,:,1);
t2=result2(:,:,2);
t3=result2(:,:,3);
%分成黑點 白點 隨機
t1(a1&a2)=0;
t2(a1&a2)=0;
t3(a1&a2)=0;
t1(a1& ~a2)=255;
t2(a1& ~a2)=255;
t3(a1& ~a2)=255;
result2(:,:,1)=t1;
result2(:,:,2)=t2;
result2(:,:,3)=t3;
subplot(1,2,2)
imshow(result2);
title('加椒鹽噪聲後');

效果圖:
在這裏插入圖片描述

代碼說明:
1.c=rand(10,10)
在這裏插入圖片描述
2.a=c<0.2
凡是第一步生成的10*10矩陣中元素小於0.2的元素都變成1,其餘爲0(和c++的0假1真差不多),這一步就是模擬噪聲密度,小於0.2相當於有20%的像素點。
在這裏插入圖片描述
3.b=rand(10,10)<0.2
在這裏插入圖片描述
4.在分別a&b a&~b
a&b:a和b隊員元素都爲1的時候,則結果爲1,反正爲0. 顯示白點或者黑點
a&~b:a爲1 b爲0時,結果爲1 顯示黑點或者白點
這裏都是以a爲基準,只有a爲1的點纔可能成爲黑白點,而a爲1的點就是通過限制臨界值獲得的,其實就是imnoise中的噪聲密度值。

更多

獲取更多資料、代碼,微信公衆號:海轟Pro
回覆 海轟 即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章