一、原理
圖像相加可以對同一場景的多幅圖像求平均值,以降低加性(additive)隨機噪聲。
二、實驗
I= imread('E:\matlab\work\lenna.bmp'); %讀取圖片 [L H]=size(I) %獲取大小 K=zeros(L,H) for i=1:100 J=imnoise(I,'gaussian',0,0.02); %隨機加噪 J1=im2double(J); %轉成double型進行相加 K=K+J1; end K=K/100; subplot(2,2,1),imshow(I),title('原圖像'); subplot(2,2,2),imshow(J),title('加噪聲後圖像');subplot(2,2,3),imshow(K),title('處理後圖像');
效果:
三、對代碼的一些關鍵點的說明
1.im2double
因爲圖像默認是uint8或bool型(二值圖)的。uint8型的計算結果會默認保存爲uint8型,超出範圍會強制轉換,所以要先轉成double型。
2.imnoise
參考百度百科:
MATLAB中函數imnoise 是表示添加噪聲污染一幅圖像,叫做噪聲污染圖像函數。
g=imnoise(f,'localvar',V)將均值爲0,局部方差爲V的高斯噪聲添加到圖像f上,其中V是與f大小相同的一個數組,它包含了每一個點的理想方差值。
g=imnoise(f,'localvar',image_intensity,var)將均值爲0的高斯噪聲添加到圖像f中,其中噪聲的局部方差var是圖像f的亮度值的函數。參量image_intensity和var是大小相同的向量,plot(image_intensity,var)繪製出噪聲方差和圖像亮度的函數關係。向量image_intensity必須包含範圍在[0,1]內的歸一化亮度值。
g=imnoise(f,'salt&pepper',d)用椒鹽噪聲污染圖像f,其中d是噪聲密度(即包括噪聲值的圖像區域的百分比)。因此,大約有d*numel(f)個像素受到影響。默認的噪聲密度爲0.05。
g=imnoise(f,'speckle',var)用方程g=f+n*f)將乘性噪聲添加到圖像f上,其中n是均值爲0,方差爲var的均勻分佈的隨機噪聲,var的默認值是0.04。
g=imnoise(f,'poisson')從數據中生成泊松噪聲,而不是將人工的噪聲添加到數據中,爲了遵守泊松統計,unit8和unit16類圖像的亮度必須和光子的數量相符合。當每個像素的光子數量大於65535時,就要使用雙精度圖像。亮度值在0到1之間變化,並且對應於光子的數量除以10e12。