2016-12-01 1 views
-1

J'ai un code MATLAB qui ajoute du bruit à l'image. Maintenant, je veux montrer l'histogramme du bruit. Je peux effectuer un histogramme de l'image originale et de l'image bruyante et ensuite je peux trouver la différence entre eux mais je ne suis pas sûr que ce soit correct.Histogramme de bruit dans une image dans MATLAB

Voici mon code:

O=im2double(rgb2gray(imread('image2.jpg'))); 
G=imnoise(O,'salt & pepper',0.1); 
%imshow([O G]); 
%imhist(O); 
imhist(G); 

Comment puis-je montrer juste le bruit que j'ajouté à l'image?

+1

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

Répondre

0

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); 

enter image description here

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); 

enter image description here

enter image description here

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:

enter image description here