English 中文(简体)
Problem with averaging corrupted images to eliminate the noise in MATLAB
原标题:

I want to average some .jpg images which are corrupted by zero-mean Gaussian additive noise. After searching around, I figured out to add the image matrices and divide the sum by the number of matrices. However, the resultant image is totally black. Normally when the number of image increases then the resultant image gets better. But when I use more images it gets darker.

I am using 800x600 black and white .jpg images. Here is the script I used:

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);
最佳回答

The problem is probably that the image data is all of type uint8, so adding them all up causes a saturation at the value of 255 for the pixel values, giving you a mostly white image which then ends up looking mostly black when you then divide by the number of images. You should convert your images to another data type, like double, then perform your averaging, and then convert back to 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: You should avoid giving your variables the same names as any existing functions, since this could cause problems/confusion. This is why I changed the variable sum to imageSum (there is a built-in function sum).

问题回答

An alternative solution using IMLINCOMB from the image processing toolbox:

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

You can also use imagesc(averageImage); This function with auto-scale the image and will not appear to be black





相关问题
Using QCView and iSight to capture image

I have a QCView that loads a Quartz file which gives you iSights feedback (basically like a QTCaptureView) Everything displays fine The button simply takes a snapshot using the following simple ...

Taking picture with QTCaptureView

Is it possible to simply take a picture and save it somewhere using a QTCaptureView and Apple s built-in iSight? I ve seen lots of tutorials on recording video but none on simply taking a picture. Any ...

Transform rectangular image into trapezoid

In .NET how can I transform an image into a trapezoid. The Matrix class supports rotation, shear, etc, but I can t see a trapezoidal transformation. I m using the usual System.Drawing.* API, but I m ...

Rotate image through Y-axis on web page

What are my options for rotating an image on a web page through the Y-axis? I m not sure if I even have the terminology right. Is this called a rotate or a transform. Most of the searches that I ve ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

Editing a xaml icons or images

Is it possible to edit a xaml icons or images in the expression design or using other tools? Is it possible to import a xaml images (that e.g you have exported) in the expression designer for editing?...

Convert from 32-BPP to 8-BPP Indexed (C#)

I need to take a full color JPG Image and remap it s colors to a Indexed palette. The palette will consist of specific colors populated from a database. I need to map each color of the image to it s "...

热门标签