Pregunta

Quiero un promedio de unas imágenes en formato .jpg, que son corrompidos por ruido aditivo gaussiano de media cero. Después de buscar alrededor, me di cuenta de que añadir las matrices de imagen y dividir la suma por el número de matrices. Sin embargo, la imagen resultante es totalmente negro. Normalmente, cuando el número de imagen aumenta entonces la imagen resultante se pone mejor. Pero cuando se utiliza más imágenes que se vuelve más oscuro.

Estoy usando 800x600 imágenes .jpg en blanco y negro. Aquí está la escritura que utilicé:

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);
¿Fue útil?

Solución

El problema es, probablemente, que los datos de imagen es todo tipo de uint8 , por lo que añadir a todos ellos provoca una saturación en el valor de 255 para los valores de los píxeles, que le da una imagen en su mayoría blancos que luego termina buscando sobre todo negro cuando se divide por el número de imágenes. Debe convertir sus imágenes a otro tipo de datos, como double , a continuación, realizar su promedio, y luego convertir de nuevo a 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);

Nota al margen: Se debe evitar dar a sus variables de los mismos nombres que las funciones existentes, ya que esto podría causar problemas / confusión. Es por esto que he cambiado la variable sum a imageSum (hay una función integrada sum ).

Otros consejos

Una solución alternativa usando IMLINCOMB de la caja de herramientas de procesamiento de imágenes:

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

También puede utilizar imagesc (averageImage); Esta función con auto-escala de la imagen y no aparecerá sea negro

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top