J'ai une image sans bruit I
. Je veux simuler le bruit gaussien additif (zéro moyen, et variation v
) n
ajouté à l'image. La sortie du model est:Lequel est la façon correcte de simuler le bruit gaussien additif
Z = I + n
Pour simuler, nous avons deux façons:
- DEVENEZ bruit gaussien et l'ajouter à l'image,
- utilisation de la fonction
imnoise
dans Matlab.
J'ai utilisé les deux méthodes, mais elles ont donné des résultats différents. Pourriez-vous déterminer lequel est correct? Pourquoi ne sont-ils pas équivalents? À ma connaissance, je pense que imnoise
est correcte.
Dans ma simulation, j'utilise une définition pour cent de bruit
Le nombre « pour cent du bruit » représente le rapport pour cent de l'écart-type du bruit gaussien par rapport au signal pour l'image entière.
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');
J'ai testé votre code et a une erreur dans la ligne "I_noise1 = I + n;". Il dit que les dimensions de Matrix doivent être d'accord. Je n'ai pas l'original "eight.tif" donc j'ai dû utiliser une autre image – VMMF
@VMMF: code ci-dessus suppose une image en niveaux de gris (mauvaise taille calculée si l'image était RGB) – Amro