Matlab实现 理想低通、巴特沃斯低通、高斯低通、理想高通、巴特沃斯高通、高斯高通(d=10,50,150)

数字图像处理第二次编程课后作业

理想低通(d=10,50,150):

close all;
clear all;

%% ---------Ideal Lowpass Filters (Fre. Domain)------------
f = imread('D:/testData/cameraman.tif');
f = mat2gray(f,[0 255]);

[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F = fft2(fc,P,Q);

H_0 = zeros(P,Q);
H_1 = zeros(P,Q);
H_2 = zeros(P,Q);

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        if(D <= 10)  H_0(x+(P/2)+1,y+(Q/2)+1) = 1; end    
        if(D <= 50)  H_1(x+(P/2)+1,y+(Q/2)+1) = 1; end    
        if(D <= 150)  H_2(x+(P/2)+1,y+(Q/2)+1) = 1; end
     end
end

G_0 = H_0 .* F;
G_1 = H_1 .* F;
G_2 = H_2 .* F;

g_0 = real(ifft2(G_0));
g_0 = g_0(1:1:M,1:1:N);

g_1 = real(ifft2(G_1));
g_1 = g_1(1:1:M,1:1:N);

g_2 = real(ifft2(G_2));
g_2 = g_2(1:1:M,1:1:N);         

for x = 1:1:M
    for y = 1:1:N
        g_0(x,y) = g_0(x,y) * (-1)^(x+y);
        g_1(x,y) = g_1(x,y) * (-1)^(x+y);
        g_2(x,y) = g_2(x,y) * (-1)^(x+y);
    end
end

%% -----show-------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('1).原图');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('2).1图的傅里叶光谱');



figure();
subplot(1,2,1);
imshow(H_0,[0 1]);
xlabel('3).理想低通滤波(D=10)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_0(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_0)),[ ]);
xlabel('4).3得到的滤波结果');

subplot(1,2,2);
imshow(g_0,[0 1]);
xlabel('5).效果图(D=10)');



figure();
subplot(1,2,1);
imshow(H_1,[0 1]);
xlabel('6).理想低通滤波(D=50)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_1(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_1)),[ ]);
xlabel('7).6得到的滤波结果');

subplot(1,2,2);
imshow(g_1,[0 1]);
xlabel('8).效果图(D=50)');



figure();
subplot(1,2,1);
imshow(H_2,[0 1]);
xlabel('9).理想低通滤波(D=150)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_2(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_2)),[ ]);
xlabel('10).9得到的滤波结果');

subplot(1,2,2);
imshow(g_2,[0 1]);
xlabel('11).效果图(D=150)');

巴特沃斯低通(d=10,50,150):

close all;
clear all;

%% ---------Butterworth Lowpass Filters (Fre. Domain)------------
f = imread('D:/testData/cameraman.tif');
f = mat2gray(f,[0 255]);

[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F = fft2(fc,P,Q);

H_0 = zeros(P,Q);
H_1 = zeros(P,Q);
H_2 = zeros(P,Q);

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        %n=1
        D_0 = 10;
        H_0(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^2);
        D_0 = 50;
        H_1(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^2);   
        D_0 = 150;
        H_2(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^2);
        %H_2(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^6);
     end
end

G_0 = H_0 .* F;
G_1 = H_1 .* F;
G_2 = H_2 .* F;

g_0 = real(ifft2(G_0));
g_0 = g_0(1:1:M,1:1:N);

g_1 = real(ifft2(G_1));
g_1 = g_1(1:1:M,1:1:N);

g_2 = real(ifft2(G_2));
g_2 = g_2(1:1:M,1:1:N);         

for x = 1:1:M
    for y = 1:1:N
        g_0(x,y) = g_0(x,y) * (-1)^(x+y);
        g_1(x,y) = g_1(x,y) * (-1)^(x+y);
        g_2(x,y) = g_2(x,y) * (-1)^(x+y);
    end
end

%% -----show-------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('1).原图');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('2).1图的傅里叶光谱');



figure();
subplot(1,2,1);
imshow(H_0,[0 1]);
xlabel('3).巴特沃斯低通滤波(D=10)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_0(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_0)),[ ]);
xlabel('4).3得到的滤波结果');

subplot(1,2,2);
imshow(g_0,[0 1]);
xlabel('5).效果图(D=10)');



figure();
subplot(1,2,1);
imshow(H_1,[0 1]);
xlabel('6).巴特沃斯低通滤波(D=50)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_1(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_1)),[ ]);
xlabel('7).6得到的滤波结果');

subplot(1,2,2);
imshow(g_1,[0 1]);
xlabel('8).效果图(D=50)');



figure();
subplot(1,2,1);
imshow(H_2,[0 1]);
xlabel('9).巴特沃斯低通滤波(D=150)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_2(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_2)),[ ]);
xlabel('10).9得到的滤波结果');

subplot(1,2,2);
imshow(g_2,[0 1]);
xlabel('11).效果图(D=150)');

高斯低通(d=10,50,150):

close all;
clear all;
clc;
%% ---------Gaussian Lowpass Filters (Fre. Domain)------------
f = imread('D:/testData/cameraman.tif');
f = mat2gray(f,[0 255]);

[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F = fft2(fc,P,Q);

H_0 = zeros(P,Q);
H_1 = zeros(P,Q);
H_2 = zeros(P,Q);

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        D_0 = 10;
        H_0(x+(P/2)+1,y+(Q/2)+1) = exp(-(D*D)/(2*D_0*D_0)); 
        D_0 = 50;
        H_1(x+(P/2)+1,y+(Q/2)+1) = exp(-(D*D)/(2*D_0*D_0));   
        D_0 = 150;
        H_2(x+(P/2)+1,y+(Q/2)+1) = exp(-(D*D)/(2*D_0*D_0));
     end
end

G_0 = H_0 .* F;
G_1 = H_1 .* F;
G_2 = H_2 .* F;

g_0 = real(ifft2(G_0));
g_0 = g_0(1:1:M,1:1:N);

g_1 = real(ifft2(G_1));
g_1 = g_1(1:1:M,1:1:N);

g_2 = real(ifft2(G_2));
g_2 = g_2(1:1:M,1:1:N);         

for x = 1:1:M
    for y = 1:1:N
        g_0(x,y) = g_0(x,y) * (-1)^(x+y);
        g_1(x,y) = g_1(x,y) * (-1)^(x+y);
        g_2(x,y) = g_2(x,y) * (-1)^(x+y);
    end
end


%% -----show-------
close all;

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('1).原图');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('2).1图的傅里叶光谱');



figure();
subplot(1,2,1);
imshow(H_0,[0 1]);
xlabel('3).高斯低通滤波(D=10)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_0(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_0)),[ ]);
xlabel('4).3得到的滤波结果');

subplot(1,2,2);
imshow(g_0,[0 1]);
xlabel('5).效果图(D=10)');



figure();
subplot(1,2,1);
imshow(H_1,[0 1]);
xlabel('6).高斯低通滤波(D=50)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_1(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_1)),[ ]);
xlabel('7).6得到的滤波结果');

subplot(1,2,2);
imshow(g_1,[0 1]);
xlabel('8).效果图(D=50)');



figure();
subplot(1,2,1);
imshow(H_2,[0 1]);
xlabel('9).高斯低通滤波(D=150)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_2(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_2)),[ ]);
xlabel('10).9得到的滤波结果');

subplot(1,2,2);
imshow(g_2,[0 1]);
xlabel('11).效果图(D=150)');

理想高通(d=10,50,150):

close all;
clear all;

%% ---------Ideal Lowpass Filters (Fre. Domain)------------
f = imread('D:/testData/cameraman.tif');
f = mat2gray(f,[0 255]);

[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F = fft2(fc,P,Q);

H_0 = zeros(P,Q);
H_1 = zeros(P,Q);
H_2 = zeros(P,Q);

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        if(D > 10)  H_0(x+(P/2)+1,y+(Q/2)+1) = 1; end    
        if(D > 50)  H_1(x+(P/2)+1,y+(Q/2)+1) = 1; end    
        if(D > 150)  H_2(x+(P/2)+1,y+(Q/2)+1) = 1; end
     end
end

G_0 = H_0 .* F;
G_1 = H_1 .* F;
G_2 = H_2 .* F;

g_0 = real(ifft2(G_0));
g_0 = g_0(1:1:M,1:1:N);

g_1 = real(ifft2(G_1));
g_1 = g_1(1:1:M,1:1:N);

g_2 = real(ifft2(G_2));
g_2 = g_2(1:1:M,1:1:N);         

for x = 1:1:M
    for y = 1:1:N
        g_0(x,y) = g_0(x,y) * (-1)^(x+y);
        g_1(x,y) = g_1(x,y) * (-1)^(x+y);
        g_2(x,y) = g_2(x,y) * (-1)^(x+y);
    end
end

%% -----show-------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('1).原图');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('2).1图的傅里叶光谱');



figure();
subplot(1,2,1);
imshow(H_0,[0 1]);
xlabel('3).理想高通滤波(D=10)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_0(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_0)),[ ]);
xlabel('4).3得到的滤波结果');

subplot(1,2,2);
imshow(g_0,[0 1]);
xlabel('5).效果图(D=10)');



figure();
subplot(1,2,1);
imshow(H_1,[0 1]);
xlabel('6).理想高通滤波(D=50)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_1(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_1)),[ ]);
xlabel('7).6得到的滤波结果');

subplot(1,2,2);
imshow(g_1,[0 1]);
xlabel('8).效果图(D=50)');



figure();
subplot(1,2,1);
imshow(H_2,[0 1]);
xlabel('9).理想高通滤波(D=150)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_2(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_2)),[ ]);
xlabel('10).9得到的滤波结果');

subplot(1,2,2);
imshow(g_2,[0 1]);
xlabel('11).效果图(D=150)');

巴特沃斯高通(d=10,50,150):

close all;
clear all;

%% ---------Butterworth Lowpass Filters (Fre. Domain)------------
f = imread('D:/testData/cameraman.tif');
f = mat2gray(f,[0 255]);

[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F = fft2(fc,P,Q);

H_0 = zeros(P,Q);
H_1 = zeros(P,Q);
H_2 = zeros(P,Q);

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        %n=1
        D_0 = 10;
        H_0(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D_0/D)^2);
        D_0 = 50;
        H_1(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D_0/D)^2);   
        D_0 = 150;
        H_2(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D_0/D)^2);
        %H_2(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^6);
     end
end

G_0 = H_0 .* F;
G_1 = H_1 .* F;
G_2 = H_2 .* F;

g_0 = real(ifft2(G_0));
g_0 = g_0(1:1:M,1:1:N);

g_1 = real(ifft2(G_1));
g_1 = g_1(1:1:M,1:1:N);

g_2 = real(ifft2(G_2));
g_2 = g_2(1:1:M,1:1:N);         

for x = 1:1:M
    for y = 1:1:N
        g_0(x,y) = g_0(x,y) * (-1)^(x+y);
        g_1(x,y) = g_1(x,y) * (-1)^(x+y);
        g_2(x,y) = g_2(x,y) * (-1)^(x+y);
    end
end

%% -----show-------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('1).原图');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('2).1图的傅里叶光谱');



figure();
subplot(1,2,1);
imshow(H_0,[0 1]);
xlabel('3).巴特沃斯高通滤波(D=10)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_0(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_0)),[ ]);
xlabel('4).3得到的滤波结果');

subplot(1,2,2);
imshow(g_0,[0 1]);
xlabel('5).效果图(D=10)');



figure();
subplot(1,2,1);
imshow(H_1,[0 1]);
xlabel('6).巴特沃斯高通滤波(D=50)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_1(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_1)),[ ]);
xlabel('7).6得到的滤波结果');

subplot(1,2,2);
imshow(g_1,[0 1]);
xlabel('8).效果图(D=50)');



figure();
subplot(1,2,1);
imshow(H_2,[0 1]);
xlabel('9).巴特沃斯高通滤波(D=150)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_2(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_2)),[ ]);
xlabel('10).9得到的滤波结果');

subplot(1,2,2);
imshow(g_2,[0 1]);
xlabel('11).效果图(D=150)');

高斯高通(d=10,50,150):

close all;
clear all;
clc;
%% ---------Gaussian Lowpass Filters (Fre. Domain)------------
f = imread('D:/testData/cameraman.tif');
f = mat2gray(f,[0 255]);

[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F = fft2(fc,P,Q);

H_0 = zeros(P,Q);
H_1 = zeros(P,Q);
H_2 = zeros(P,Q);

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        D_0 = 10;
        H_0(x+(P/2)+1,y+(Q/2)+1) = 1 - exp(-(D*D)/(2*D_0*D_0)); 
        D_0 = 50;
        H_1(x+(P/2)+1,y+(Q/2)+1) = 1 - exp(-(D*D)/(2*D_0*D_0));   
        D_0 = 150;
        H_2(x+(P/2)+1,y+(Q/2)+1) = 1 - exp(-(D*D)/(2*D_0*D_0));
     end
end

G_0 = H_0 .* F;
G_1 = H_1 .* F;
G_2 = H_2 .* F;

g_0 = real(ifft2(G_0));
g_0 = g_0(1:1:M,1:1:N);

g_1 = real(ifft2(G_1));
g_1 = g_1(1:1:M,1:1:N);

g_2 = real(ifft2(G_2));
g_2 = g_2(1:1:M,1:1:N);         

for x = 1:1:M
    for y = 1:1:N
        g_0(x,y) = g_0(x,y) * (-1)^(x+y);
        g_1(x,y) = g_1(x,y) * (-1)^(x+y);
        g_2(x,y) = g_2(x,y) * (-1)^(x+y);
    end
end


%% -----show-------
close all;

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('1).原图');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('2).1图的傅里叶光谱');



figure();
subplot(1,2,1);
imshow(H_0,[0 1]);
xlabel('3).高斯高通滤波(D=10)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_0(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_0)),[ ]);
xlabel('4).3得到的滤波结果');

subplot(1,2,2);
imshow(g_0,[0 1]);
xlabel('5).效果图(D=10)');



figure();
subplot(1,2,1);
imshow(H_1,[0 1]);
xlabel('6).高斯高通滤波(D=50)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_1(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_1)),[ ]);
xlabel('7).6得到的滤波结果');

subplot(1,2,2);
imshow(g_1,[0 1]);
xlabel('8).效果图(D=50)');



figure();
subplot(1,2,1);
imshow(H_2,[0 1]);
xlabel('9).高斯高通滤波(D=150)');

subplot(1,2,2);
h = mesh(1:20:P,1:20:Q,H_2(1:20:P,1:20:Q));
set(h,'EdgeColor','k');
axis([0 P 0 Q 0 1]);
xlabel('u');ylabel('v');
zlabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(log(1 + abs(G_2)),[ ]);
xlabel('10).9得到的滤波结果');

subplot(1,2,2);
imshow(g_2,[0 1]);
xlabel('11).效果图(D=150)');
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值