C'est possible, mais cela demande un peu d'astuce. Aussi parce que c'est un bruit impulsif, c'est un problème beaucoup plus simple. Ce que vous devez faire est graine le générateur aléatoire d'abord, puis corrompez votre image avec le bruit. Après cela, reseed le générateur aléatoire, et corrompre une image grise avec le même type de bruit. Vous utilisez une image grise parce que le bruit impulsif ou sel et poivre corrompt votre image avec des pixels noirs et blancs et donc tout ce qui n'est pas gris serait du bruit. Vous trouverez alors l'histogramme de cette image, puis réglez la fréquence de la valeur de gris sur 0. Ce qui reste est le bruit que vous désirez. En ensemençant le générateur aléatoire et parce que la génération de bruit est aléatoire, vous garantissez que la même séquence de bruit est produite après la mise en graine.
Prenons l'image cameraman par exemple:
O = im2double(imread('cameraman.tif'));
Il ressemble à:
imshow(O);
Maintenant, interroger le générateur aléatoire, corrompre l'image, réensemencer le hasard générateur et corrompre une image grise:
rng(123); % Seed random generator
G = imnoise(O, 'salt & pepper', 0.1); % Corrupt image
rng(123); % Reseed random generator
H = imnoise(0.5*size(O), 'salt & pepper', 0.1); % Corrupt gray image
Voyons voir ce que l'image corrompue et le bruit sur l'image gris ressemble à:
figure;
imshow(G);
figure;
imshow(H);
Si vous les comparer côte à côte, vous verrez que les profils de bruit sont exactement les mêmes entre les deux images. Maintenant, faire un histogramme de l'image bruitée gris, puis retirez le bac à 128, 0,5 ou gris:
h = imhist(H);
h(129) = 0;
bar(h);
Nous obtenons maintenant:
Qu'avez-vous essayé? Jouer avec Matlab est la moitié du plaisir. Avez-vous soustrait les 2 images ou histogrammes? Avez-vous divisé les 2 images? Qu'en est-il de prendre les valeurs propres des inverses des images? Qu'en est-il de l'application du bruit à une image vide? Toutes sortes de choses loufoques peuvent être tentées. – Matt