我有一個無噪聲圖像I
。我想模擬添加到圖像中的加性高斯噪聲(零均值,並且變化v
)n
。該model的輸出是:哪一個是模擬附加高斯噪聲的正確方法
Z = I + n
模擬它,我們有兩種方式:
- 創建一個高斯噪聲,並將其添加到圖像,
- 使用
imnoise
功能的MATLAB。
我使用了兩種方式,但他們給出了不同的結果。你能確定哪一個是正確的?他們爲什麼不等同?據我所知,我認爲imnoise
是正確的。
在我的模擬中,我使用的噪聲%的定義
「百分比噪聲」號表示高斯噪聲對用於整個圖像的信號的標準偏差的百分比率。
I = imread('eight.tif');
[rows cols]=size(I);
I = double(I);
I = I - min(I(:));
I = I/max(I(:));
%% Percentage ratio
noise_per=0.4; %40 percent noise
%% Add noise to image
v = (noise_per*std(I(:)))^2 %// Option #2
%% Add noise by manual way
n=normrnd(0,v,[rows cols]);
I_noise1=I+n;
%% Add noise by imnoise func.
I_noise2 = imnoise(I, 'gaussian', 0, v);
subplot(131);imshow(n,[]);title('Gaussian noise');
subplot(132);imshow(I_noise1,[]);title('Add Gaussian noise #1');
subplot(133);imshow(I_noise2,[]);title('Add Gaussian noise #2');
我測試代碼,並得到了在線路錯誤 「I_noise1 = I + N;」。它說Matrix的尺寸必須一致。我沒有原始的「eight.tif」,所以我不得不使用另一個圖像 – VMMF
@VMMF:上面的代碼假設灰度圖像(如果圖像是RGB,則計算錯誤的尺寸) – Amro