Consider a
stack of images affected by speckle
noise of a same scene.

In order to reduce the speckle, the availability of the
stack of images can be utilized to obtain speckle reduced image.

In order to
understand the multilook technique, let’s first generate noisy images and then
apply speckle reduction.

**Generate stack of noisy images:**

1. Read a noise free image

2. Generate exponential noise with mean 1
and multiply it with the noise free image

3. Repeat the process of generating
exponential noise and multiplying it
with the noise free image to create stack of ‘n’ images

**MATLAB code:**

%Multilook - Speckle
reduction

%Read a noisy free Image

I = imread('cameraman.tif');

I = double(I);

figure,imagesc(I);colormap(gray);title('Original
Image');

[m, n] = size(I);

numofimg = 9;

Stack = zeros([m n numofimg]);

for i = 1:numofimg

%Generate exponential noise

noise=random('exp',1,m,n);

%Multiply Noise free Image with
noise

Stack(:,:,i)=I.*noise;

end

**Explanation:**

Random noise with exponential distribution is multiplied with the noise
free image to generate image affected by speckle.

Fig: Probability Density Function (PDF) of the noise generated for ‘n’ images that follows exponential distribution.

**Multilook(ML) Technique:**

Multilook
image is the average of the stack of images. This technique is used widely in
the field of Synthetic Aperture Radar(SAR) to reduce speckle on the same scene
but different acquisition periods.

The stack of
data is created for the same scene but with different time of acquisition and
ML is applied to reduce the speckle considerably since the noise on the single
image will be quite high.

**MATLAB code:**

ML_image = mean(Stack,3);

figure,imagesc(Stack(:,:,1));colormap(gray);title('Single Noisy
Image');

figure,imagesc(ML_image);colormap(gray);title('Multilook
Image');

**Explanation:**

For instance,
in the above shown image, consider the red dot as the pixel value of the first
pixel position of each image in the stack. Add all the pixel values represented
in red dot and divide by the number of images in the stack. Similarly, perform
the average for the second pixel position (green dot) and so on and so forth for
the whole image.

Matlab code
‘mean(Stack,3) ‘ finds the mean of the image in 3

^{rd}dimension and the final result is the Multilooked Image with reduced speckle.**Moving Average Filter:**

In order to
reduce speckle further, a moving average filter can be used.

Moving
average filter of window size 3x3 and 5x5 is applied on the multilook image and
window of size 3x3 on a single speckled image in order to appreciate the
multilook technique performance.

**MATLAB code:**

box = ones(3)/9;

ML_avg3 = conv2(ML_image,box,'same');

figure,imagesc(ML_avg3);colormap(gray);title('Moving
Average - Window 3 x 3');

box = ones(5)/25;

ML_avg5 = conv2(ML_image,box,'same');

figure,imagesc(ML_avg5);colormap(gray);title('Moving
Average - Window 5 x 5');

box = ones(3)/9;

avg_flt = conv2(Stack(:,:,1),box,'same');

figure,imagesc(avg_flt);colormap(gray);title('Moving
Average - Single Image');