Question

Je veux en moyenne quelques images .jpg qui sont corrompus par le bruit additif gaussien moyenne zéro. Après avoir cherché autour, j'ai compris ajouter les matrices d'image et diviser la somme par le nombre de matrices. Cependant, l'image résultante est totalement noir. Normalement, lorsque le nombre d'image augmente alors l'image résultante obtient mieux. Mais quand je l'utilise plus d'images, il devient plus sombre.

J'utilise des images .jpg 800x600 en noir et blanc. Voici le script je:

image1 = imread ('PIC1.jpg');
image2 = imread ('PIC2.jpg');
image3 = imread ('PIC3.jpg');
image4 = imread ('PIC4.jpg');

sum = image1 + image2 + image3 + image4; 
av = sum / 4; 
imshow(av);
Était-ce utile?

La solution

Le problème est probablement que les données d'image est tout de type uint8 , afin de les ajouter tout provoque une saturation à la valeur de 255 pour les valeurs de pixels, vous donnant une image principalement blanche qui se termine ensuite en regardant la plupart du temps noir lorsque vous puis diviser par le nombre d'images. Vous devez convertir vos images à un autre type de données, comme double , puis effectuer votre moyenne, puis reconvertir uint8:

% Load your images:
image1 = imread('PIC1.jpg');
image2 = imread('PIC2.jpg');
image3 = imread('PIC3.jpg');
image4 = imread('PIC4.jpg');

% Convert the images to type double and sum them:
imageSum = double(image1) + double(image2) + double(image3) + double(image4);

% Divide by the number of images and convert back to type uint8:
averageImage = uint8(imageSum./4);

% Display the averaged image:
imshow(averageImage);

SIDE NOTE: Vous devez éviter de donner vos variables les mêmes noms que toutes les fonctions existantes, car cela pourrait causer des problèmes / confusion. Voilà pourquoi je l'ai changé la sum variable imageSum (il y a une fonction intégrée sum ).

Autres conseils

Une solution alternative en utilisant IMLINCOMB de la boîte à outils de traitement d'image:

I = imlincomb(0.25,I1, 0.25,I2, 0.25,I3, 0.25,I4);

Vous pouvez également utiliser imagesc (averageImage); Cette fonction avec auto-échelle l'image et ne semble être noir

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top