# IMAGE PROCESSING

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

Adaptive filter is performed on the degraded image that contains original image and noise. The mean and variance are the two statistical measures that a local adaptive filter depends with a defined mxn window region.

B=rgb2gray(A);
sz=size(B,1)*size(B,2);

%Add gaussian noise with mean 0 and variance 0.005
B = imnoise(B,'gaussian',0,0.005);
figure,imshow(B); title('Image with gaussian noise');

B= double(B);

%Define the window size mxn
M=5;
N=5;

%Pad the matrix with zeros on all sides

lvar=zeros([size(B,1) size(B,2)]);
lmean=zeros([size(B,1) size(B,2)]);
temp=zeros([size(B,1) size(B,2)]);
NewImg=zeros([size(B,1) size(B,2)]);

for i=1:size(C,1)-M-1
for j=1:size(C,2)-N-1

temp=C(i:i+(M-1),j:j+(N-1));
tmp=reshape(temp,[1,(M*N)]);
%Find the local mean and local variance for the local region
lmean(i,j)=mean(tmp);
lvar(i,j)=mean(tmp.^2)-mean(tmp).^2;

end
end

%Noise variance and average of the local variance
nvar=sum(lvar(:))/sz;

%If noise_variance > local_variance then local_variance=noise_variance
lvar=max(lvar,nvar);

%Final_Image=B- (noise variance/local variance)*(B-local_mean);
NewImg=nvar./lvar;
NewImg=NewImg.*(B-lmean);
NewImg=B-NewImg;

%Convert the image to uint8 format.
NewImg=uint8(NewImg);
figure,imshow(NewImg);title('Restored Image using Adaptive Local filter');

Like "IMAGE PROCESSING" page

achu said...

Your site has been really useful to me for my project especially these posts but it would be really helpful if i'm cleared up with finding the Local Variance as you have given. I'm getting stuck there!
Thank you!

coJetty said...

This is fake! The alogrithem convolves over the wrong indices and the so-called output image is not the one you get from copying the code 1:1. More likely it is the input image...mathematical background seems to be fine though. Some of the code is usable, but one has to correct it.

Aaron Angel said...

@coJetty
The code which I have provided here is for local noise. I have posted whatever result I obtained by executing the code, including the images. Kindly mail me your point of view more clearly. Happy Reading!

Sri said...

super

Unknown said...

Why is it necessary to do a 2 boarder zero padding for a 3X3 window? Shouldn't you have done just one layer of zero padding?

Benjamin Thornton said...

For your example above, why is it necessary to do a two layer zero padding if you are using a 3X3 window?