本节所用原始图片素材共享于原始图片,提取码 523o
数字图像处理matlab版给出了低通滤波器和高通滤波器的代码,但带阻滤波器和陷波器的代码没有给出来,本节基于高低通滤波器的代码,结合带阻滤波器、陷波滤波器的表达式给出这两种滤波器的matlab实现

带阻滤波器

带阻滤波器的的表达式如下,其中D(u,v)D(u,v)D(u,v)是距离频率中心点的距离,D0D_0D0​是阻带中心频率, WWW是阻带宽度:

理想 巴特沃斯 高斯
H(u,v)={0若D0−W2≤D≤D0+W21其他H(u,v) = \begin{cases} 0 & 若D_0-\frac{W}{2} \le D \le D_0+\frac{W}{2} \cr 1 & 其他 \end{cases}H(u,v)={01​若D0​−2W​≤D≤D0​+2W​其他​ H(u,v)=11+[DWD2−D02]2nH(u,v)=\frac{1}{1+\left[ \frac{DW}{D^2 -D_0^2} \right]^{2n}}H(u,v)=1+[D2−D02​DW​]2n1​ H(u,v)=1−e−[D2−D02DW]2H(u, v) = 1 - e^{-\left[ \frac{D^2-D_0^2}{DW} \right]^{2}}H(u,v)=1−e−[DWD2−D02​​]2

基于上面表格所列出的表达式,我们可以得到带阻滤波器的代码如下

function H = brfilter(type, M, N, D0, W, n)%BRFILTER Computes frequency domain band reject filters.
%   H = BRFILTER(TYPE, M, N, D0, W, n) creates the transfer function of
%   a band reject filter, H, of the specified TYPE and size (M-by-N). To
%   view the filter as an image or mesh plot, it should be centered
%   using H = fftshift(H). %
%   Valid values for TYPE, D0, W and n are:
%
%   'ideal'    Ideal band reject filter with cutoff frequency D0 and
%              reject band width W. n need not be supplied.
%              D0 and w must be positive.
%
%   'btw'      Butterworth band reject filter of order n, cutoff
%              D0 and reject band width W.  The default value for
%              n is 1.0.  D0 and W must be positive.
%
%   'gaussian' Gaussian band reject filter with cutoff (standard
%              deviation) D0 and reject band width W.  n need not
%              be supplied.  D0 and W must be positive. %   Author: caesar
%   Digital Image Processing
%   $Revision: 0.1 $  $Date: 2020/07/10 09:54:00 $% Use function dftuv to set up the meshgrid arrays needed for
% computing the required distances. [U, V] = dftuv(M, N);% Compute the distances D(U, V).
D = sqrt(U.^2 + V.^2);% Begin filter computations.
switch typecase 'ideal'H = double(D < (D0 - W/2)) + double(D > (D0 + W/2));case 'btw'if nargin == 5n = 1;   endH = 1./(1 + (D .* W ./ (D.^2-D0^2)).^(2*n));case 'gaussian'H = 1 - exp(-((D.^2 - D0^2)./(D.*W)).^2);otherwiseerror('Unknown filter type.')end

下图通过上面代码生成了一幅大小为512x512,阻带中心频率为150, 阻带宽度为20的理想、巴特沃斯(4阶)、高斯带阻滤波器。

陷波滤波器

由傅里叶变换的对称性可知,零相移滤波器必须关于原点对称,一个中心位于(u0,v0)(u_0, v_0)(u0​,v0​)的陷波在位置(−u0,−v0)(-u_0,-v_0)(−u0​,−v0​)必须有一个对应的陷波,我们将其称为陷波对。
陷波带阻滤波器可以有若干个以(uk,vk)(u_k,v_k)(uk​,vk​)为中心的高通滤波器对的乘积来构造,这一点很容易解释:1、一个以(uk,vk)(u_k,v_k)(uk​,vk​)为中心的高通滤波器完成对频率(uk,vk)(u_k,v_k)(uk​,vk​)和(−u0,−v0)(-u_0,-v_0)(−u0​,−v0​)的筛选。2、频域将多个陷波对相乘,意味着空间域与这些陷波对逐个卷积,依次完成对各个陷波对中心频率的筛选。
陷波滤波器表达式如下
HNR(u,v)=∏k=1QHk(u,v)H−k(u,v)H_{NR}(u, v) = \prod_{k=1}^QH_k(u,v)H_{-k}(u,v)HNR​(u,v)=k=1∏Q​Hk​(u,v)H−k​(u,v)
其中Hk(u,v)H_k(u,v)Hk​(u,v)和H−k(u,v)H_{-k}(u,v)H−k​(u,v)是一对分别以(u0,v0)(u_0, v_0)(u0​,v0​)和(−u0,−v0)(-u_0,-v_0)(−u0​,−v0​)为中心的高通滤波器。以(u,v)(u,v)(u,v)为中心的理想、巴特沃斯、高斯高通滤波器的表达式分别如下,其中D0D_0D0​是截止频率,n是巴特沃斯滤波器的阶数:

理想 巴特沃斯 高斯
H(u,v)={0若D(u,v)≤D01D(u,v)>D0H(u,v) = \begin{cases} 0 & 若D(u,v) \le D_0 \cr 1 & D(u,v) \gt D_0 \end{cases}H(u,v)={01​若D(u,v)≤D0​D(u,v)>D0​​ H(u,v)=11+[D0D(u,v)]2nH(u,v)=\frac{1}{1+\left[ \frac{D_0}{D(u, v)} \right]^{2n}}H(u,v)=1+[D(u,v)D0​​]2n1​ H(u,v)=1−e−[D(u,v)2D0]2H(u, v) = 1 - e^{-\left[ \frac{D(u,v)}{2D_0} \right]^{2}}H(u,v)=1−e−[2D0​D(u,v)​]2

这样,我们就可以得到包含多个陷波对的陷波滤波器。例如
HNR(u,v)=∏k=13[11+[D0k/Dk(u,v)]2n][11+[D0k/D−k(u,v)]2n]H_{NR}(u,v)=\prod_{k=1}^3 \left[ \frac{1}{1+[D_{0k}/D_k(u,v)]^{2n}} \right]\left[ \frac{1}{1+[D_{0k}/D_{-k}(u,v)]^{2n}} \right]HNR​(u,v)=k=1∏3​[1+[D0k​/Dk​(u,v)]2n1​][1+[D0k​/D−k​(u,v)]2n1​]
就是一个包含三个陷波对的巴特波斯陷波滤波器,其中D0kD_{0k}D0k​是每个陷波对的陷波带宽,不同的陷波对此参数可以不同。
基于以上讨论,可以得到陷波滤波器的matlab实现如下:

function NH = notchfilter(type, M, N, D, C, n)%NOTCHFILTER Computes frequency domain notch filters.%   H = NOTCHFILTER(TYPE, M, N, C, n) creates the transfer function of
%   a notch filter, H, of the specified TYPE and size (M-by-N).
%   Valid values for TYPE, D, C and n are:
%
%   'ideal'    Ideal notch filter with cutoff frequency Dk at C(Uk, Vk) and
%              C(-Uk, -Vk). n need not be supplied. D must be positive.
%
%   'btw'      Butterworth notch filter of order n, and cutoff
%              Dk at C(Uk, Vk) and (-Uk, -Vk).  The default value
%              for n is 1.0. D must be positive.
%
%   'gaussian' Gaussian notch filter with cutoff (standard
%              deviation) Dk at C(Uk, Vk) and C(-Uk, -Vk). n need
%              not be supplied. D must be positive.%   Author: caesar
%   Digital Image Processing
%   $Revision: 0.1 $  $Date: 2020/07/10 10:28:22 $% The transfer function NH at (U,V) of a notch filter is Hhp(U, V),
% where Hhp(U, V) is the transfer function of the corresponding highpass
% filter centered at (U, V).if nargin == 5n = 1; % Default value of n.end% K is the number of notch point
[K, ~] = size(C);% all the notch points have same cutoff
if length(D) == 1Dk = D * ones(1, K);
% each notch points have specified cutoff
elseif length(D) == KDk = D;
elseerror('Invalie length of D, which may be either a single number or a vector of same length as C(:,1)')
end[V, U] = dftuv(M, N);% Generate notch filter.
NH = 1;
switch typecase 'ideal'for k = 1:K% centered at(U, V)Dik = sqrt((U - C(k,1)).^2 + (V - C(k,2)).^2);        Hik = double(Dik >= Dk(k));% centered at(-U, -V)Di_k = sqrt((U + C(k,1)).^2 + (V + C(k,2)).^2);        Hi_k = double(Di_k >= Dk(k));NH = NH .* Hik .* Hi_k;endcase 'btw'if nargin == 5n = 1;    endfor k = 1:K% centered at(U, V)Dik = sqrt((U - C(k,1)).^2 + (V - C(k,2)).^2);      Hik = 1./(1 + (Dk(k)./Dik).^(2*n));% centered at(-U, -V)Di_k = sqrt((U + C(k,1)).^2 + (V + C(k,2)).^2);       Hi_k = 1./(1 + (Dk(k)./Di_k).^(2*n));NH = NH .* Hik .* Hi_k;endcase 'gaussian'for k = 1:K% centered at(U, V)Dik = sqrt((U - C(k,1)).^2 + (V - C(k,2)).^2);Hik = 1 - exp(-(Dik.^2)./(2*(Dk(k)^2)));     % centered at(-U, -V)Di_k = sqrt((U + C(k,1)).^2 + (V + C(k,2)).^2);        Hi_k = 1 - exp(-(Di_k.^2)./(2*(Dk(k)^2)));     NH = NH .* Hik .* Hi_k;endotherwiseerror('Unknown filter type.')end

下图显示了一幅大小为512x512,陷波点为[128, 64]、 [128, 192]、[-128, 64]、[-128, 192],陷波带宽为20的理想、巴特沃斯(4阶)、高斯陷波滤波器:

上面示例所用代码如下:

C = [128, 64; 128, 192; -128, 64; -128, 192];H = notchfilter('ideal', 512, 512, 20, C);
figure
subplot(1, 2, 1)
mesh(fftshift(abs(H)))
title('理想陷波滤波器(透视图)')
subplot(1, 2, 2)
imshow(fftshift(abs(H)), [ ]);
title('理想陷波滤波器')H = notchfilter('btw', 512, 512, 20, C, 4);
figure
subplot(1, 2, 1)
mesh(fftshift(abs(H)))
title('巴特沃斯陷波滤波器(透视图)')
subplot(1, 2, 2)
imshow(fftshift(abs(H)), [ ]);
title('巴特沃斯陷波滤波器')H = notchfilter('gaussian', 512, 512, 20, C);
figure
subplot(1, 2, 1)
mesh(fftshift(abs(H)))
title('高斯陷波滤波器(透视图)')
subplot(1, 2, 2)
imshow(fftshift(abs(H)), [ ]);
title('高斯陷波滤波器')

下图(a)显示了一幅含有莫尔条纹的原始图像,图(b)显示了使用对数标定的图(a)的幅谱,从幅谱中可以看到导致这些莫尔条纹的频率点,为了去掉摩尔条纹,我们生成了一个四阶巴特沃斯陷波滤波器,如图(c),通过频域处理再反变换回空间域,我们得到了如图(d)的不再含有莫尔条纹的图像。
上面关于去除莫尔条纹示例的代码如下:

D0 = 10 ;
n = 4;f = imread('Fig0464(a)(car_75DPI_Moire).tif');
[M, N] =  size(f);figure
subplot(1, 2, 1);
imshow(f);
title('(a)带莫尔条纹的原始图像')subplot(1, 2, 2);
F = fft2(f);
imshow(intrans(abs(F), 'log'), [ ])
title('(b)幅谱(对数标定)')C = [30, 38; 30, 81; -30, 38; -30, 81];
H = notchfilter('btw', M, N, 10, C, 4);
figure
subplot(1, 2, 1)
imshow(fftshift(abs(H)), [ ]);
title('(c)巴特沃斯陷波器')subplot(1, 2, 2)
G = H .* F;
g = real(ifft2(G));
imshow(g, [])
title('(d)使用4阶巴特沃斯陷波滤波器过滤结果')

4.10 选择性滤波器相关推荐

  1. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第10章-滤波器设计

    第3章 回到目录 第5章 第10章-滤波器设计 10.1 H∞H_\inftyH∞​ 滤波器设计 10.1 H∞H_\inftyH∞​ 滤波器设计

  2. youcans 的 OpenCV 学习课—10. 图像复原与重建

    youcans 的 OpenCV 学习课-10. 图像复原与重建 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 图像复原是对图像退化过程建模,并以图像退化的先验知识来恢复 ...

  3. 【OpenCV 例程200篇】90. 频率域陷波滤波器

    [OpenCV 例程200篇]90. 频率域陷波滤波器 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5.2 陷波滤 ...

  4. 由5G通信引发的毫米波滤波器的思考

    1  背景 随着华为制定的5G移动通信技术标准的出炉,我国在移动通信的发展上终于紧跟世界步伐.华为.中兴等企业的全球移动通信市场份额也位居世界前列,移动通信产业已成为我国具有国际竞争力的高技术产业之一 ...

  5. 4.2 Python图像的图像恢复-组合滤波器

    4.2 Python图像的图像恢复-组合滤波器 文章目录 4.2 Python图像的图像恢复-组合滤波器 1 算法原理 1.1 混合滤波器 1.2 选择性滤波器 2 代码 3 效果 1 算法原理 1. ...

  6. 带通滤波器c5000汇编语言,基于SIW技术的高选择性带通滤波器的设计与实现

    摘要: 滤波器作为通信系统前端电路不可或缺的组件,对于整个通信系统而言,其性能的好坏将直接影响到信号的接收,发射以及传播.而随着整个通信系统的不断发展以及完善,对于各个组件的要求也在不断的提高,滤波器 ...

  7. gammatone 滤波器详解及其MATLAB代码实现

    一.GammaTone 滤波器详解 定义: 外界语音信号进入耳蜗的基底膜后,将依据频率进行分解并产生行波震动,从而刺激听觉感受细胞[1].GammaTone 滤波器是一组用来模拟耳蜗频率分解特点的滤波 ...

  8. python实现陷波滤波器、低通滤波器、高斯滤波器、巴特沃斯滤波器

    在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓,而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分). 滤波器 低通滤波器 高通滤波器 陷 ...

  9. 低通滤波器转带通滤波器公式由来_了解无源RC滤波器,看完这篇你就懂了(一)...

    作为一个电子硬件方面的工作者,怎么能不认识滤波器呢?那么到底什么是滤波?分享一篇科普文了解一下电阻-电容(RC)低通滤波器是什么,以及在何处使用它们能让你更好的掌握高端电路设计实战.本文将介绍滤波的概 ...

  10. 音频(六)Mel滤波器组_原理简介

    为什么会产生出Mel 这种尺度的机制呢? 人耳朵具有特殊的功能,可以使得人耳朵在嘈杂的环境中,以及各种变异情况下仍能正常的分辨出各种语音: 其中,耳蜗有关键作用; 耳蜗实质上的作用相当于一个滤波器组, ...

最新文章

  1. 车道检测--VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
  2. oracle创建数据库总结,oracle创建数据库和用户方法总结
  3. mysql的隔离级别_MySQL的四种事务隔离级别
  4. vue一步一步带你封装一个按钮组件
  5. 深度松下MTS视频恢复软件 v8.1.0
  6. .html() 与.text() 获取值、取值 区别
  7. kinect获取实时深度数据
  8. html 判断为空js,JavaScript判断DIV内容是否为空的方法
  9. android 消息循环滚动条,Android 电池电量进度条,上下滚动图片的进度条(battery)...
  10. 软件 PRE、RC、beta、RTM、CTP等版本号的基本区别
  11. 快递100 快递公司编码-标准国际
  12. 形式语言与自动机理论蒋宗礼 第五章答案
  13. 山石网科张凌龄:安全市场日新月异 初创公司不容小觑
  14. 【IT之路】微信小程序之美化
  15. unity3D赛车游戏项目源代码
  16. 验证和确认的区别_验证与确认之间的区别
  17. 如何使用 javascript 获取语音数据并播放
  18. 计算机操作系统期末复习
  19. 编程笔记之—sinatqq api—MBApiClient 与 WeiboClient 冲突
  20. 【QlikView】No.1 QlikView概述

热门文章

  1. 三菱服务器位置控制,关于三菱PLC 相对位置绝对位置控制问题
  2. 知识问答题小程序头脑王者源码
  3. 使用Visio画各种可视化的流程图之序列图和价值流图
  4. lol更新显示正在连接服务器,正在连接服务器-lol一直显示“正在连接服务器”...
  5. VS2017安装CLR
  6. jar 加入本地maven仓库
  7. 前端使用阿里云图标库
  8. win10怎样修改密码及忘记密码了怎么办
  9. JavaScript判断日期时间差的实例代码
  10. 分库分表知识详解与分库分表中间件介绍