4
clc; clear all; close all; OriginalImage = '1.jpg'; noiseLvl = input('Enter The Value'); % [InputImage Noise_Image] = noiseGen( OriginalImage, noiseLvl); filename=OriginalImage; Noise=noiseLvl; switch Noise case 1 noiseLevel=0.01; case 2 noiseLevel=0.02; case 3 noiseLevel=0.03; case 4 noiseLevel=0.04; case 5 noiseLevel=0.05; case 6 noiseLevel=0.06; case 7 noiseLevel=0.07; case 8 noiseLevel=0.08; case 9 noiseLevel=0.09; case 10 noiseLevel=0.1; otherwise noiseLevel=0.0; end % filename= handles.filename; InputImage = imread(filename); if (noiseLevel < 1) && (noiseLevel >=0) NoisyImage = imnoise(InputImage,'salt & pepper', noiseLevel);

Denoising Code

Embed Size (px)

DESCRIPTION

Matlab Code for denoising

Citation preview

Page 1: Denoising Code

clc;clear all;close all;OriginalImage = '1.jpg';noiseLvl = input('Enter The Value');% [InputImage Noise_Image] = noiseGen( OriginalImage, noiseLvl);

filename=OriginalImage;

Noise=noiseLvl;

switch Noise

case 1 noiseLevel=0.01;

case 2 noiseLevel=0.02; case 3 noiseLevel=0.03; case 4 noiseLevel=0.04; case 5 noiseLevel=0.05; case 6 noiseLevel=0.06; case 7 noiseLevel=0.07; case 8 noiseLevel=0.08; case 9 noiseLevel=0.09; case 10 noiseLevel=0.1; otherwise noiseLevel=0.0;end

% filename= handles.filename;

InputImage = imread(filename);

if (noiseLevel < 1) && (noiseLevel >=0) NoisyImage = imnoise(InputImage,'salt & pepper', noiseLevel);

% axes(handles.noise); figure;imshow(NoisyImage);title('Salt & Pepper Noise Added Image');

% figure(1); % subplot(4,3,3); % imshow(J); % % title('Salt & Pepper Noise Added Image');

Page 2: Denoising Code

% imwrite(J,'noisyImage.bmp');else msgbox('Noise variance should be less than 1 and more than zero for example 0.01');end

% [Restored,MSE,PSNR]=medianfilter(InputImage,Noise_Image);

MSE=[];PSNR=[];original=InputImage;

input1=original(:,:,1);input2=original(:,:,2);input3=original(:,:,3);

Restored=InputImage;noise=NoisyImage;

plane1=noise(:,:,1);plane2=noise(:,:,2);plane3=noise(:,:,3);

pad2=padarray(plane1,[1 1],'both');

c=pad2;c=double(c);[m n]=size(pad2);

% c=[123 125 124;128 129 120;127 126 121];% m=3;n=3;for i=2:m-1 for j=2:n-1 out1(i-1,j-1)=median([(abs(sqrt(c(i-1,j-1))^2)),(abs(sqrt(c(i-1,j))^2)),(abs(sqrt(c(i-1,j+1))^2)),(abs(sqrt(c(i,j-1))^2)),(abs(sqrt(c(i,j))^2)),(abs(sqrt(c(i,j+1))^2)),(abs(sqrt(c(i+1,j-1))^2)),(abs(sqrt(c(i+1,j))^2)),(abs(sqrt(c(i+1,j+1))^2))]);

end

end

[M N P]=size(input1);A=double(input1);f=double(out1);

MSEr = sum(sum((A-f).^2))/(M*N);PSNRr =abs(10*log10(255*255/MSEr));

pad3=padarray(plane2,[1 1],'both');

c=pad3;c=double(c);

Page 3: Denoising Code

[m n]=size(pad3);

for i=2:m-1 for j=2:n-1 out2(i-1,j-1)=median([(abs(sqrt(c(i-1,j-1))^2)),(abs(sqrt(c(i-1,j))^2)),(abs(sqrt(c(i-1,j+1))^2)),(abs(sqrt(c(i,j-1))^2)),(abs(sqrt(c(i,j))^2)),(abs(sqrt(c(i,j+1))^2)),(abs(sqrt(c(i+1,j-1))^2)),(abs(sqrt(c(i+1,j))^2)),(abs(sqrt(c(i+1,j+1))^2))]);

end

end

[M N P]=size(input2);A=double(input2);f=double(out2);

MSEg = sum(sum((A-f).^2))/(M*N);PSNRg = abs(10*log10(255*255/MSEg));

pad4=padarray(plane3,[1 1],'both');

c=pad4;c=double(c);[m n]=size(pad4);

for i=2:m-1 for j=2:n-1 out3(i-1,j-1)=median([(abs(sqrt(c(i-1,j-1))^2)),(abs(sqrt(c(i-1,j))^2)),(abs(sqrt(c(i-1,j+1))^2)),(abs(sqrt(c(i,j-1))^2)),(abs(sqrt(c(i,j))^2)),(abs(sqrt(c(i,j+1))^2)),(abs(sqrt(c(i+1,j-1))^2)),(abs(sqrt(c(i+1,j))^2)),(abs(sqrt(c(i+1,j+1))^2))]);

end

end

input=double(input3);output=double(out3);[M N P]=size(A);A=double(A);f=double(f);

MSEb = sum(sum((A-f).^2))/(M*N);PSNRb = abs(10*log10(255*255/MSEb));MSE=(MSEr+MSEg+MSEb)/3;PSNR=(PSNRr+PSNRg+PSNRb)/3;

output(:,:,1)=out1;output(:,:,2)=out2;

Page 4: Denoising Code

output(:,:,3)=out3;

Restored=uint8(output);% axes(handles.filter);figure;imshow(Restored,[]);title('Weight median filter ');