4.10 选择性滤波器
本节所用原始图片素材共享于原始图片,提取码 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−D02DW]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∏QHk(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)≤D0D(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−[2D0D(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 选择性滤波器相关推荐
- 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第10章-滤波器设计
第3章 回到目录 第5章 第10章-滤波器设计 10.1 H∞H_\inftyH∞ 滤波器设计 10.1 H∞H_\inftyH∞ 滤波器设计
- youcans 的 OpenCV 学习课—10. 图像复原与重建
youcans 的 OpenCV 学习课-10. 图像复原与重建 本系列面向 Python 小白,从零开始实战解说 OpenCV 项目实战. 图像复原是对图像退化过程建模,并以图像退化的先验知识来恢复 ...
- 【OpenCV 例程200篇】90. 频率域陷波滤波器
[OpenCV 例程200篇]90. 频率域陷波滤波器 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5.2 陷波滤 ...
- 由5G通信引发的毫米波滤波器的思考
1 背景 随着华为制定的5G移动通信技术标准的出炉,我国在移动通信的发展上终于紧跟世界步伐.华为.中兴等企业的全球移动通信市场份额也位居世界前列,移动通信产业已成为我国具有国际竞争力的高技术产业之一 ...
- 4.2 Python图像的图像恢复-组合滤波器
4.2 Python图像的图像恢复-组合滤波器 文章目录 4.2 Python图像的图像恢复-组合滤波器 1 算法原理 1.1 混合滤波器 1.2 选择性滤波器 2 代码 3 效果 1 算法原理 1. ...
- 带通滤波器c5000汇编语言,基于SIW技术的高选择性带通滤波器的设计与实现
摘要: 滤波器作为通信系统前端电路不可或缺的组件,对于整个通信系统而言,其性能的好坏将直接影响到信号的接收,发射以及传播.而随着整个通信系统的不断发展以及完善,对于各个组件的要求也在不断的提高,滤波器 ...
- gammatone 滤波器详解及其MATLAB代码实现
一.GammaTone 滤波器详解 定义: 外界语音信号进入耳蜗的基底膜后,将依据频率进行分解并产生行波震动,从而刺激听觉感受细胞[1].GammaTone 滤波器是一组用来模拟耳蜗频率分解特点的滤波 ...
- python实现陷波滤波器、低通滤波器、高斯滤波器、巴特沃斯滤波器
在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓,而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分). 滤波器 低通滤波器 高通滤波器 陷 ...
- 低通滤波器转带通滤波器公式由来_了解无源RC滤波器,看完这篇你就懂了(一)...
作为一个电子硬件方面的工作者,怎么能不认识滤波器呢?那么到底什么是滤波?分享一篇科普文了解一下电阻-电容(RC)低通滤波器是什么,以及在何处使用它们能让你更好的掌握高端电路设计实战.本文将介绍滤波的概 ...
- 音频(六)Mel滤波器组_原理简介
为什么会产生出Mel 这种尺度的机制呢? 人耳朵具有特殊的功能,可以使得人耳朵在嘈杂的环境中,以及各种变异情况下仍能正常的分辨出各种语音: 其中,耳蜗有关键作用; 耳蜗实质上的作用相当于一个滤波器组, ...
最新文章
- 车道检测--VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
- oracle创建数据库总结,oracle创建数据库和用户方法总结
- mysql的隔离级别_MySQL的四种事务隔离级别
- vue一步一步带你封装一个按钮组件
- 深度松下MTS视频恢复软件 v8.1.0
- .html() 与.text() 获取值、取值 区别
- kinect获取实时深度数据
- html 判断为空js,JavaScript判断DIV内容是否为空的方法
- android 消息循环滚动条,Android 电池电量进度条,上下滚动图片的进度条(battery)...
- 软件 PRE、RC、beta、RTM、CTP等版本号的基本区别
- 快递100 快递公司编码-标准国际
- 形式语言与自动机理论蒋宗礼 第五章答案
- 山石网科张凌龄:安全市场日新月异 初创公司不容小觑
- 【IT之路】微信小程序之美化
- unity3D赛车游戏项目源代码
- 验证和确认的区别_验证与确认之间的区别
- 如何使用 javascript 获取语音数据并播放
- 计算机操作系统期末复习
- 编程笔记之—sinatqq api—MBApiClient 与 WeiboClient 冲突
- 【QlikView】No.1 QlikView概述