Butterworth: All All 'Lena - BMP'
Butterworth: All All 'Lena - BMP'
clear all;
close all;
clc
micro = imread('lena.bmp');
micro = double(micro);
[nx ny] = size(micro);
u = micro;
micro = uint8(u);
imwrite(micro,'lena1.bmp');
fftu = fft2(u,2*nx-1,2*ny-1);
fftu = fftshift(fftu);
figure(1)
imshow(micro,[]);
figure(2)
fftshow(fftu,'log')
% Initialize filter.
filter1 = ones(2*nx-1,2*ny-1);
filter2 = ones(2*nx-1,2*ny-1);
filter3 = ones(2*nx-1,2*ny-1);
n = 4;
for i = 1:2*nx-1
for j=1:2*ny-1
dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5;
% Use Butterworth filter.
filter1(i,j)= 1/(1 + (dist/180)^(2*n));
filter2(i,j) = 1/(1 + (dist/80)^(2*n));
filter3(i,j)= 1.0 - filter2(i,j);
filter3(i,j) = filter1(i,j).*filter3(i,j);
end
end
% Update image with passed frequencies.
fil_micro = fftu + filter3.*fftu;
figure(3)
fftshow(filter3,'log')
fil_micro = ifftshift(fil_micro);
fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1);
fil_micro = real(fil_micro(1:nx,1:ny));
fil_micro = uint8(fil_micro);
figure(4)
imshow(fil_micro,[])
Gaussian
clear all;
close all;
clc
micro = imread('lena.bmp');
micro = double(micro);
[nx ny] = size(micro);
u = micro;
micro = uint8(u);
imwrite(micro,'lena1.bmp');
fftu = fft2(u,2*nx-1,2*ny-1);
fftu = fftshift(fftu);
figure(1)
imshow(micro,[]);
figure(2)
fftshow(fftu,'log')
% Initialize filter.
filter1 = ones(2*nx-1,2*ny-1);
filter2 = ones(2*nx-1,2*ny-1);
filter3 = ones(2*nx-1,2*ny-1);
n = 4;
for i = 1:2*nx-1
for j=1:2*ny-1
dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5;
% Use Gaussian filter.
filter1(i,j) = exp(-dist^2/(2*180^2));
filter2(i,j) = exp(-dist^2/(2*80^2));
filter3(i,j) = 1.0 - filter2(i,j);
filter3(i,j) = filter1(i,j).*filter3(i,j);
end
end
% Update image with passed frequencies.
fil_micro = fftu + filter3.*fftu;
figure(3)
fftshow(filter3,'log')
fil_micro = ifftshift(fil_micro);
fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1);
fil_micro = real(fil_micro(1:nx,1:ny));
fil_micro = uint8(fil_micro);
figure(4)
imshow(fil_micro,[])
Ideal
clear all;
close all;
clc
ima=imread('lena.bmp');
ima = double(ima);
figure (1)
imshow(ima,[]);
imafft = fftshift(fft2(fftshift(ima)));
% Fourier Spectrum of Image
imafft2 = fft2(ima);
imafft3 = fftshift(imafft2);
s = size(ima);
ma=max(max((imafft)));
maxr = 0.5*sqrt(s(1)^2+s(2)^2);
cutoff1 = maxr*80;
cutoff2 = maxr*180;
c=1;
for i = 1 : s(1)
for j = 1 : s(2)
r = sqrt((i-1-s(1)/2)^2+(j-1-s(2)/2)^2);
if( r < 80)
z(i,j) = 0;
else
if( r > 180)
z(i,j) = 0;
else
z(i,j) =255;
end
end
end
end
% Plots
figure (2)
imafft=imafft.*z/255;
ima_out = fftshift(ifft2(fftshift(imafft)));
ima_out =ima_out-ima;
fftshow(ima_out,'abs');
figure (3)
fftshow(imafft3,'log');
figure (4)
fftshow(z,'log');
Gaussian
low pass
clear all;
close all;
clc
micro = imread('lena.bmp');
micro = double(micro);
[nx ny] = size(micro);
u = micro;
micro = uint8(u);
imwrite(micro,'lena1.bmp');
fftu = fft2(u,2*nx-1,2*ny-1);
fftu = fftshift(fftu);
figure(1)
imshow(micro,[]);
figure(2)
fftshow(fftu,'log')
% Initialize filter.
filter1 = ones(2*nx-1,2*ny-1);
filter2 = ones(2*nx-1,2*ny-1);
filter3 = ones(2*nx-1,2*ny-1);
n = 4;
for i = 1:2*nx-1
for j=1:2*ny-1
dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5;
% Use Gaussian filter.
filter1(i,j) = exp(-dist^2/(2*80^2));
% filter2(i,j) = exp(-dist^2/(2*80^2));
%filter3(i,j) = 1.0 - filter2(i,j);
filter3(i,j) = filter1(i,j);
end
end
% Update image with passed frequencies.
fil_micro = fftu + filter3.*fftu;
figure(3)
fftshow(filter3,'log')
fil_micro = ifftshift(fil_micro);
fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1);
fil_micro = real(fil_micro(1:nx,1:ny));
fil_micro = uint8(fil_micro);
figure(4)
imshow(fil_micro,[])
Butterworth
clear all;
close all;
clc
micro = imread('lena.bmp');
micro = double(micro);
[nx ny] = size(micro);
u = micro;
micro = uint8(u);
imwrite(micro,'lena1.bmp');
fftu = fft2(u,2*nx-1,2*ny-1);
fftu = fftshift(fftu);
figure(1)
imshow(micro,[]);
figure(2)
fftshow(fftu,'log')
% Initialize filter.
filter1 = ones(2*nx-1,2*ny-1);
filter2 = ones(2*nx-1,2*ny-1);
filter3 = ones(2*nx-1,2*ny-1);
n = 2;
for i = 1:2*nx-1
for j=1:2*ny-1
dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5;
% Use Butterworth filter.
filter1(i,j)= 1/(1 + (dist/80)^(2*n));
%filter2(i,j) = 1/(1 + (dist/0)^(2*n));
% filter3(i,j)= 1.0 - filter2(i,j);
filter3(i,j) = filter1(i,j);
end
end
% Update image with passed frequencies.
fil_micro = fftu + filter3.*fftu;
figure(3)
fftshow(filter3,'log')
fil_micro = ifftshift(fil_micro);
fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1);
fil_micro = real(fil_micro(1:nx,1:ny));
fil_micro = uint8(fil_micro);
figure(4)
imshow(fil_micro,[])
lowpass
Gaussian
high pass
clear all;
close all;
clc
micro = imread('lena.bmp');
micro = double(micro);
[nx ny] = size(micro);
u = micro;
micro = uint8(u);
imwrite(micro,'lena1.bmp');
fftu = fft2(u,2*nx-1,2*ny-1);
fftu = fftshift(fftu);
figure(1)
imshow(micro,[]);
figure(2)
fftshow(fftu,'log')
% Initialize filter.
filter1 = ones(2*nx-1,2*ny-1);
filter2 = ones(2*nx-1,2*ny-1);
filter3 = ones(2*nx-1,2*ny-1);
n = 4;
for i = 1:2*nx-1
for j=1:2*ny-1
dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5;
% Use Gaussian filter.
%filter1(i,j) = exp(-dist^2/(2*0^2));
filter2(i,j) = exp(-dist^2/(2*80^2));
filter3(i,j) = 1.0 - filter2(i,j);
%filter3(i,j) = filter1(i,j).*filter3(i,j);
end
end
% Update image with passed frequencies.
fil_micro = fftu + filter3.*fftu;
figure(3)
fftshow(filter3,'log')
fil_micro = ifftshift(fil_micro);
fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1);
fil_micro = real(fil_micro(1:nx,1:ny));
fil_micro = uint8(fil_micro);
figure(4)
imshow(fil_micro,[])
Butterworth
clear all;
close all;
clc
micro = imread('lena.bmp');
micro = double(micro);
[nx ny] = size(micro);
u = micro;
micro = uint8(u);
imwrite(micro,'lena1.bmp');
fftu = fft2(u,2*nx-1,2*ny-1);
fftu = fftshift(fftu);
figure(1)
imshow(micro,[]);
figure(2)
fftshow(fftu,'log')
% Initialize filter.
filter1 = ones(2*nx-1,2*ny-1);
filter2 = ones(2*nx-1,2*ny-1);
filter3 = ones(2*nx-1,2*ny-1);
n = 2;
for i = 1:2*nx-1
for j=1:2*ny-1
dist = ((i-(nx+1))^2 + (j-(ny+1))^2)^.5;
% Use Butterworth filter.
filter1(i,j)= 1/(1 + (80/dist)^(2*n));
%filter2(i,j) = 1/(1 + (dist/0)^(2*n));
% filter3(i,j)= 1.0 - filter2(i,j);
filter3(i,j) = filter1(i,j);
end
end
% Update image with passed frequencies.
fil_micro = fftu + filter3.*fftu;
figure(3)
fftshow(filter3,'log')
fil_micro = ifftshift(fil_micro);
fil_micro = ifft2(fil_micro,2*nx-1,2*ny-1);
fil_micro = real(fil_micro(1:nx,1:ny));
fil_micro = uint8(fil_micro);
figure(4)
imshow(fil_micro,[])
high pass