高斯低通和高斯高通滤波器

1.高斯低通滤波器(GLPF)

高斯低通滤波器的二维形式为:

高斯低通和高斯高通滤波器

其中,D0是截止频率,D(u,v)是距频率矩形中心的距离。高斯滤波器的宽度由参数 D0 表征,决定了平滑程度,而且 D0越大,高斯滤波器的频带就越宽,平滑程度就越好。因为噪声主要集中在高频段,所以通过高斯低通滤波器可以滤除噪声信息、平滑图像,但与此同时会滤除图像的细节信息,使图像变得模糊。

2.高斯高通滤波器(GHPF)

截止频率处在距频率矩形中心距离为 D0的高斯高通滤波器的传递函数为:

高通滤波与低通滤波正好相反,是频域图像的高频部分通过而抑制低频部分。在图像中图像的边缘对应高频分量,因此高通滤波的效果是图像锐化。通过高斯高通滤波器可以增强细节信息,提升图像的高频分量,减少低频分量,对微小物体和细线条也能很好地增强显示。

高斯低通和高斯高通滤波器

3.高通滤波与阈值滤波相结合

高通滤波与低通滤波正好相反,是频域图像的高频部分通过而抑制低频部分。在图像中图像的边缘对应高频分量,因此高通滤波的效果是图像锐化。

阈值处理是将滤波后的图像中的所有负值设置为黑、将所有正值设置为白后的结果。

程序代码和实验结果如下:

1.高斯低通滤波器(GLPF)

clc        %清除命令窗口的内容
close all  %关闭所有的Figure窗口
clear all  %清除工作空间的所有变量
%% 实现高斯低通滤波器,见函数GaussianLowpass()。
%% 对Fig. 4.41(a)进行高斯低通滤波结果
A = imread('Fig. 4.41(a).tif');
L=ILPF_hanshu(A,100);
imshow(L),title('显示为图像的滤波器');
[m,n] = size(A);
A = im2double(A);
F = fft2(A,2*m,2*n);
F1 = fftshift(F);
figure;
subplot(231),imshow(A),title('原图像');
D0=10;%截止频率设置在半径值为10处
H = GaussianLowpass(A,D0);
G = F1.*H;
F2 = ifftshift(G);
output = ifft2(F2);
output = output(1:size(A,1),1:size(A,2));
subplot(232),imshow(output),title('截止频率D0=10');

D0=30;%截止频率设置在半径值为30处
H = GaussianLowpass(A,D0);
G = F1.*H;
F2 = ifftshift(G);
output = ifft2(F2);
output = output(1:size(A,1),1:size(A,2));
subplot(233),imshow(output),title('截止频率D0=30');

D0=60;%截止频率设置在半径值为60处
H = GaussianLowpass(A,D0);
G = F1.*H;
F2 = ifftshift(G);
output = ifft2(F2);
output = output(1:size(A,1),1:size(A,2));
subplot(234),imshow(output),title('截止频率D0=60');

D0=160;%截止频率设置在半径值为160处
H = GaussianLowpass(A,D0);
G = F1.*H;
F2 = ifftshift(G);
output = ifft2(F2);
output = output(1:size(A,1),1:size(A,2));
subplot(235),imshow(output),title('截止频率D0=160');

D0=460;%截止频率设置在半径值为460处
H = GaussianLowpass(A,D0);
G = F1.*H;
F2 = ifftshift(G);
output = ifft2(F2);
output = output(1:size(A,1),1:size(A,2));
subplot(236),imshow(output),title('截止频率D0=460');

function H = GaussianLowpass(img,D0)
% 高斯低通滤波器

[M,N] = size(img);
H = zeros(2*M,2*N);

for u = 1:2*M
    for v = 1:2*N
        D_square = (u-M) * (u-M) + (v-N) * (v-N);
        H(u,v) = exp(-D_square/(2*D0*D0));
    end
end

end

%%理想低通滤波器函数
function H = ILPF_hanshu(img,D0)
[m,n]=size(img);
P = 2*m;
Q = 2*n;
H = zeros(P,Q);
for u = 1:P
    for v = 1:Q
        D = ((u-m) * (u-m) + (v-n) * (v-n))^0.5;
        if D <= d0 h(u,v)="1;" else end < code></=>

实验结果:

高斯低通和高斯高通滤波器

编写高斯低通滤波函数,通过高斯低通滤波器后,实现如图效果,截止频率D0分别设置为10,30,60,160,460。其低频信息保留,高频细节被滤除。当截止频率较低时,滤波后图像虽然比原图像平滑,由于许多细节信息缺失,导致图像变得模糊不清。当截止频率较高时,图像比较清晰。

2.高斯高通滤波器(GHPF)

clc        %&#x6E05;&#x9664;&#x547D;&#x4EE4;&#x7A97;&#x53E3;&#x7684;&#x5185;&#x5BB9;
close all  %&#x5173;&#x95ED;&#x6240;&#x6709;&#x7684;Figure&#x7A97;&#x53E3;
clear all  %&#x6E05;&#x9664;&#x5DE5;&#x4F5C;&#x7A7A;&#x95F4;&#x7684;&#x6240;&#x6709;&#x53D8;&#x91CF;

%% &#x5B9E;&#x73B0;&#x9AD8;&#x65AF;&#x9AD8;&#x901A;&#x6EE4;&#x6CE2;&#x5668;
A = imread('Fig. 4.41(a).tif');
A = im2double(A);
[a,b] = size(A);
subplot(221),imshow(A),title('&#x539F;&#x56FE;&#x50CF;');
F = fft2(A,2*a,2*b);
F3 = fftshift(F);
[a,b] = size(A);
W = zeros(2*a,2*b);
D0=30;
for u = 1:2*a
    for v = 1:2*b
        D_square = (u-a) * (u-a) + (v-b) * (v-b);
        W(u,v) =1 - exp(-D_square/(2*D0*D0));
    end
end
G = F3.*W;
F4 = ifftshift(G);
F1 = ifft2(F4);
F1 = F1(1:size(A,1),1:size(A,2));
subplot(222),imshow(F1),title('&#x9AD8;&#x901A;&#x6EE4;&#x6CE2;D0=30');

D0=60;
for u = 1:2*a
    for v = 1:2*b
        D_square = (u-a) * (u-a) + (v-b) * (v-b);
        W(u,v) =1 - exp(-D_square/(2*D0*D0));
    end
end
G = F3.*W;
F4 = ifftshift(G);
F1 = ifft2(F4);
F1 = F1(1:size(A,1),1:size(A,2));
subplot(223),imshow(F1),title('&#x9AD8;&#x901A;&#x6EE4;&#x6CE2;D0=60');

D0=120;
for u = 1:2*a
    for v = 1:2*b
        D_square = (u-a) * (u-a) + (v-b) * (v-b);
        W(u,v) =1 - exp(-D_square/(2*D0*D0));
    end
end
G = F3.*W;
F4 = ifftshift(G);
F1 = ifft2(F4);
F1 = F1(1:size(A,1),1:size(A,2));
subplot(224),imshow(F1),title('&#x9AD8;&#x901A;&#x6EE4;&#x6CE2;D0=120');

实验结果:

高斯低通和高斯高通滤波器

通过高斯高通滤波,实现了如图的效果,通过高斯高通滤波器可以增强细节信息,提升图像的高频分量,减少低频分量,对微小物体和细线条也能很好地增强显示。D0分别取30,60和160。

3.高通滤波与阈值滤波相结合

clc        %&#x6E05;&#x9664;&#x547D;&#x4EE4;&#x7A97;&#x53E3;&#x7684;&#x5185;&#x5BB9;
close all  %&#x5173;&#x95ED;&#x6240;&#x6709;&#x7684;Figure&#x7A97;&#x53E3;
clear all  %&#x6E05;&#x9664;&#x5DE5;&#x4F5C;&#x7A7A;&#x95F4;&#x7684;&#x6240;&#x6709;&#x53D8;&#x91CF;
A = imread('Fig. 4.57(a).tif');
A = im2double(A);
[a,b] = size(A);
subplot(131),imshow(A),title('&#x539F;&#x56FE;&#x50CF;');
F = fft2(A,2*a,2*b);
F3 = fftshift(F);
[a,b] = size(A);
W = zeros(2*a,2*b);
D0=50;
for u = 1:2*a
    for v = 1:2*b
        D_square = (u-a) * (u-a) + (v-b) * (v-b);
        W(u,v) =1 - exp(-D_square/(2*D0*D0));
    end
end
G = F3.*W;
F4 = ifftshift(G);
F1 = ifft2(F4);
F1 = F1(1:size(A,1),1:size(A,2));
subplot(132),imshow(F1),title('&#x9AD8;&#x901A;&#x6EE4;&#x6CE2;D0=50');

B=F1;
for i=1:size(B,1)
for j=1:size(B,2)
if(B(i,j)>0)
B(i,j)=255;%&#x9608;&#x503C;&#x5316;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x4ECE;&#x4EAE;&#x7684;&#x80CC;&#x666F;&#x4E2D;&#x5206;&#x5272;&#x51FA;&#x6697;&#x7684;&#x7269;&#x4F53;
elseif(B(i,j)<0) b(i,j)="0;%&#x9608;&#x503C;&#x5316;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x4ECE;&#x6697;&#x7684;&#x80CC;&#x666F;&#x4E2D;&#x5206;&#x5272;&#x51FA;&#x4EAE;&#x7684;&#x7269;&#x4F53;" end subplot(133),imshow(b),title('阈值操作后的结果');< code></0)>

实验结果:

高斯低通和高斯高通滤波器

使用截止频率为50的高斯高通滤波器进行滤波,高通滤波后的图像失去了它的灰度色调,因为直流项已被减小为0.最终结果是,高通滤波后的图像中,典型的暗色调已经成为主流,因此需要额外的处理来增强细节。

对滤波后的图像进行阈值处理,将图像中的所有负值设置为黑、将所有正值设置为白。结果是,脊线变得清晰,且污染明显较小,图像得到很好地增强。

Original: https://blog.csdn.net/JaxonChan/article/details/118880563
Author: JaxonChan
Title: 高斯低通和高斯高通滤波器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/632655/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球