-
2022-02-03 08:39:45
【OpenCV 例程200篇】89. 带阻滤波器的传递函数
欢迎关注 『OpenCV 例程200篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中
5.1 带阻与带通
空间域和频率域线性滤波器可以分为四类:低通滤波器、高通滤波器、带通滤波器和带阻滤波器。高通滤波和低通滤波都是在整个频率矩形上操作,带通滤波和带阻滤波则是对特定频带处理,属于选择性滤波。
带阻滤波器(bandstop filters,简称BSF)是指能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器。带通滤波器(band-pass filter)是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。
频率域的高通滤波器可以由低通滤波器推导而来。类似地,频率域中的带通和带阻滤波器的传递函数,可以通过低通滤波器和高通滤波器的组合来构建。
理想带阻滤波器(IBRF) 的传递函数为:
H ( u , v ) = { 0 , ( C 0 − W / 2 ) ≤ D ( u , v ) ≤ ( C 0 + W / 2 ) 1 , e l s e H(u,v)=\begin{cases} 0,\ (C_0-W/2) \leq D(u,v) \leq (C_0+W/2)\\ 1,\ else \end{cases} H(u,v)={0, (C0−W/2)≤D(u,v)≤(C0+W/2)1, else
高斯带阻滤波器(GBRF) 的传递函数为:
H ( u , v ) = 1 − e − [ D 2 ( u , v ) − C 0 2 D ( u , v ) W ] 2 H(u,v)=1-e^{-[ \frac {D^2(u,v) - C_0^2} {D(u,v)W}]^2} H(u,v)=1−e−[D(u,v)WD2(u,v)−C02]2巴特沃斯带阻滤波器(BBRF) 的传递函数为:
H ( u , v ) = 1 1 + [ D ( u , v ) W D 2 ( u , v ) − C 0 2 ] 2 n H(u,v)= \frac {1} {1 +[ \frac {D(u,v)W} {D^2(u,v) - C_0^2}]^{2n}} H(u,v)=1+[D2(u,v)−C02D(u,v)W]2n1
例程 8.28 带阻滤波器的传递函数
# OpenCVdemo08.py # Demo08 of OpenCV # 8. 图像的频率域滤波 # Copyright 2021 Youcans, XUPT # Crated:2021-12-30 # 例程 8.28 带阻滤波器的传递函数 def ideaBondResistFilter(shape, radius=10, w=5): # 理想带阻滤波器 u, v = np.meshgrid(np.arange(shape[1]), np.arange(shape[0])) D = np.sqrt((u - shape[1]//2)**2 + (v - shape[0]//2)**2) D0 = radius halfW = w/2 kernel = np.piecewise(D, [D<=D0+halfW, D<=D0-halfW], [1, 0]) kernel = 1 - kernel # 带阻 return kernel def gaussBondResistFilter(shape, radius=10, w=5): # 高斯带阻滤波器 # 高斯滤波器:# Gauss = 1/(2*pi*s2) * exp(-(x**2+y**2)/(2*s2)) u, v = np.meshgrid(np.arange(shape[1]), np.arange(shape[0])) D = np.sqrt((u - shape[1]//2)**2 + (v - shape[0]//2)**2) C0 = radius kernel = 1 - np.exp(-(D-C0)**2 / (w**2)) return kernel def butterworthBondResistFilter(shape, radius=10, w=5, n=1): # 巴特沃斯带阻滤波 u, v = np.meshgrid(np.arange(shape[1]), np.arange(shape[0])) D = np.sqrt((u - shape[1]//2)**2 + (v - shape[0]//2)**2) C0 = radius epsilon = 1e-8 # 防止被 0 除 kernel = 1.0 / (1.0 + np.power(D*w/(D**2-C0**2+epsilon), 2*n)) return kernel # 理想、高斯、巴特沃斯带阻滤波器传递函数 shape = [128, 128] radius = 32 IBRF = ideaBondResistFilter(shape, radius=radius) GBRF = gaussBondResistFilter(shape, radius=radius) BBRF = butterworthBondResistFilter(shape, radius=radius) filters = ["IBRF", "GBRF", "BBRF"] u, v = np.mgrid[-1:1:2.0/shape[0], -1:1:2.0/shape[1]] fig = plt.figure(figsize=(10, 8)) for i in range(3): hpFilter = eval(filters[i]).copy() ax1 = fig.add_subplot(3, 3, 3*i+1) ax1.imshow(hpFilter, 'gray') ax1.set_title(filters[i]), ax1.set_xticks([]), ax1.set_yticks([]) ax2 = plt.subplot(3,3,3*i+2, projection='3d') ax2.set_title("transfer function") ax2.plot_wireframe(u, v, hpFilter, rstride=2, linewidth=0.5, color='c') ax2.set_xticks([]), ax2.set_yticks([]), ax2.set_zticks([]) ax3 = plt.subplot(3,3,3*i+3) profile = hpFilter[shape[0]//2:, shape[1]//2] ax3.plot(profile), ax3.set_title("profile"), ax3.set_xticks([]), ax3.set_yticks([]) plt.show()
(本节完)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接
Copyright 2021 youcans, XUPT
Crated:2022-2-1
欢迎关注 『OpenCV 例程200篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中【OpenCV 例程200篇】01. 图像的读取(cv2.imread)
【OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)
【OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
【OpenCV 例程200篇】05. 图像的属性(np.shape)
【OpenCV 例程200篇】06. 像素的编辑(img.itemset)
【OpenCV 例程200篇】07. 图像的创建(np.zeros)
【OpenCV 例程200篇】08. 图像的复制(np.copy)
【OpenCV 例程200篇】09. 图像的裁剪(cv2.selectROI)
【OpenCV 例程200篇】10. 图像的拼接(np.hstack)
【OpenCV 例程200篇】11. 图像通道的拆分(cv2.split)
【OpenCV 例程200篇】12. 图像通道的合并(cv2.merge)
【OpenCV 例程200篇】13. 图像的加法运算(cv2.add)
【OpenCV 例程200篇】14. 图像与标量相加(cv2.add)
【OpenCV 例程200篇】15. 图像的加权加法(cv2.addWeight)
【OpenCV 例程200篇】16. 不同尺寸的图像加法
【OpenCV 例程200篇】17. 两张图像的渐变切换
【OpenCV 例程200篇】18. 图像的掩模加法
【OpenCV 例程200篇】19. 图像的圆形遮罩
【OpenCV 例程200篇】20. 图像的按位运算
【OpenCV 例程200篇】21. 图像的叠加
【OpenCV 例程200篇】22. 图像添加非中文文字
【OpenCV 例程200篇】23. 图像添加中文文字
【OpenCV 例程200篇】23. 图像添加中文文字
【OpenCV 例程200篇】24. 图像的仿射变换
【OpenCV 例程200篇】25. 图像的平移
【OpenCV 例程200篇】26. 图像的旋转(以原点为中心)
【OpenCV 例程200篇】27. 图像的旋转(以任意点为中心)
【OpenCV 例程200篇】28. 图像的旋转(直角旋转)
【OpenCV 例程200篇】29. 图像的翻转(cv2.flip)
【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
【OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)
【OpenCV 例程200篇】32. 图像的扭变(错切)
【OpenCV 例程200篇】33. 图像的复合变换
【OpenCV 例程200篇】34. 图像的投影变换
【OpenCV 例程200篇】35. 图像的投影变换(边界填充)
【OpenCV 例程200篇】36. 直角坐标与极坐标的转换
【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
【OpenCV 例程200篇】38. 图像的反色变换(图像反转)
【OpenCV 例程200篇】39. 图像灰度的线性变换
【OpenCV 例程200篇】40. 图像分段线性灰度变换
【OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)
【OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
【OpenCV 例程200篇】43. 图像的灰度变换(对数变换)
【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
【OpenCV 例程200篇】45. 图像的灰度直方图
【OpenCV 例程200篇】46. 直方图均衡化
【OpenCV 例程200篇】47. 图像增强—直方图匹配
【OpenCV 例程200篇】48. 图像增强—彩色直方图匹配
【OpenCV 例程200篇】49. 图像增强—局部直方图处理
【OpenCV 例程200篇】50. 图像增强—直方图统计量图像增强
【OpenCV 例程200篇】51. 图像增强—直方图反向追踪
【OpenCV 例程200篇】52. 图像的相关与卷积运算
【OpenCV 例程200篇】53. Scipy 实现图像二维卷积
【OpenCV 例程200篇】54. OpenCV 实现图像二维卷积
【OpenCV 例程200篇】55. 可分离卷积核
【OpenCV 例程200篇】56. 低通盒式滤波器
【OpenCV 例程200篇】57. 低通高斯滤波器
【OpenCV 例程200篇】58. 非线性滤波—中值滤波
【OpenCV 例程200篇】59. 非线性滤波—双边滤波
【OpenCV 例程200篇】60. 非线性滤波—联合双边滤波
【OpenCV 例程200篇】61. 导向滤波(Guided filter)
【OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
【OpenCV 例程200篇】63. 图像锐化——Laplacian 算子
【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
【OpenCV 例程200篇】65. 图像锐化——Scharr 算子
【OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通
【OpenCV 例程200篇】67. 空间域图像增强的综合应用
【OpenCV 例程200篇】68. 空间域图像增强的综合应用
【OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数
【OpenCV 例程200篇】70. 一维连续函数的傅里叶变换
【OpenCV 例程200篇】71. 连续函数的取样
【OpenCV 例程200篇】72. 一维离散傅里叶变换
【OpenCV 例程200篇】73. 二维连续傅里叶变换
【OpenCV 例程200篇】74. 图像的抗混叠
【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换
【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换
【OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换
【OpenCV 例程200篇】78. 频率域图像滤波基础
【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
【OpenCV 例程200篇】80. 频率域图像滤波详细步骤
【OpenCV 例程200篇】81. 频率域高斯低通滤波器
【OpenCV 例程200篇】82. 频率域巴特沃斯低通滤波器
【OpenCV 例程200篇】83. 频率域低通滤波:印刷文本字符修复
【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
【OpenCV 例程200篇】85. 频率域高通滤波器的应用
【OpenCV 例程200篇】86. 频率域滤波应用:指纹图像处理
【OpenCV 例程200篇】87. 频率域钝化掩蔽
【OpenCV 例程200篇】88. 频率域拉普拉斯高通滤波
【OpenCV 例程200篇】89. 带阻滤波器的传递函数
【OpenCV 例程200篇】90. 频率域陷波滤波器
【OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声
【OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声
【OpenCV 例程200篇】93. 噪声模型的直方图
【OpenCV 例程200篇】94. 算术平均滤波器
【OpenCV 例程200篇】95. 几何均值滤波器
【OpenCV 例程200篇】96. 谐波平均滤波器
【OpenCV 例程200篇】97. 反谐波平均滤波器
【OpenCV 例程200篇】98. 统计排序滤波器
【OpenCV 例程200篇】99. 修正阿尔法均值滤波器
【OpenCV 例程200篇】100. 自适应局部降噪滤波器更多相关内容 -
带阻滤波器设计实验报告.doc
2020-03-14 16:25:26原始音频信号受到一正弦噪声(幅度0.1、频率1000Hz)的污染,请使用MATLAB设计一个带阻滤波器,滤除正弦噪声信号。 根据题目的要求,思路非常清晰,使用MATLAB完成设计任务的总体思路可按照以下四步进行: 1、... -
带阻滤波器matlab代码-spectral:用于分析复杂时间序列数据的python模块
2021-05-27 12:59:23带阻滤波器matlab代码 频谱:用于神经时间序列分析(v1.0)的工具箱 目录 :关于此存储库和代码 1.1:模块列表 :文件夹的组织和结构 :安装,执行 3.1 3.2 1.什么 包含用于Spectral的Matlab和Python脚本,Spectral... -
带阻滤波器matlab代码-IIR_Butterworth_Filter_C_Sharp:适用于C#的IIR巴特沃思滤波器
2021-05-27 12:59:10带阻滤波器matlab代码C#代码用于计算Butterworth滤波器的系数并过滤数据 该代码计算带通,带阻,低通和高通巴特沃斯滤波器的系数。 它还过滤数据,但不应用零相位延迟。 每个过滤器函数将返回2行x N个系数的2D向量... -
使用带阻滤波器去除周期性噪声.zip
2020-12-31 11:55:56对于存在蜂窝状结构(周期性噪声)的图片,使用带阻滤波器加全变分的方法进去去除 这篇博客的附件https://blog.csdn.net/weixin_42598422/article/details/112005787 -
50Hz 双T带阻滤波器-有详细参数和公式说明.doc
2021-12-31 18:16:4650Hz 双T带阻滤波器-有详细参数和公式说明.doc -
单片机与DSP中的窄带带阻滤波器
2020-11-15 12:46:26带通滤波器所使用的归一化变换是将s+1/s代入低通传递函数公式得到高通滤波器的传递函数,如果将这一关系代入高通滤波器则获得一个带阻滤波器。图1表示了高通滤波器频率响应与变换后的带阻滤波器频率响应之间的等效... -
悬置带线带阻滤波器的设计
2020-08-29 04:47:46本文采用支线式结构设计了一种中等阻带带宽的带阻滤波器,使用悬置带线结构获得较高的Q值,陡峭的边带过渡特性,该滤波器还具有低成本、易于加工的优点,满足工程应用的需要。 -
单片机与DSP中的椭圆函数带阻滤波器
2020-11-15 12:08:03采用与全极点滤波器同样的方法,把这些电路先变换成高通滤波器,然后变换成带阻滤波器。 由于每个归一化低通滤波器可以有两种形式实现,带阻滤波器结果也有两种不同的结构,如图1所示。 图1 椭圆函数... -
带通和带阻滤波器的设计与实现
2017-12-14 10:25:34这个文档涉及了带通和带阻滤波器实现过程中用到的基础知识,实现公式,其中有几个实例,对于初学者能很快上手 -
单片机与DSP中的全极点LC带阻滤波器设计
2020-11-15 12:05:58要求 带阻滤波器,中心频率为10kHz,在±250Hz(9.75kHz,1O.25kHz)衰减为3dB,在±100Hz(9.9kHz、1O.1kHz)最小衰减为30dB,信号源和负载阻抗为600Ω。 解 ①将所给条件变换为几何对称的设计指标。因为带宽... -
基于matlab的带通带阻滤波器设计实例x_带阻滤波器matlab代码
2020-12-05 16:50:53PAGE PAGE # / 7 基于的带通带阻滤波器设计实例 以下两个滤波器都是切比雪夫 I型数字滤波器不是巴特沃尔滤波器请使用者注意! 1.带通滤波器 (13) 滞通滤波 %吏用注意事项通带或阻带的截止频率与采样率的选取范围是不... -
matlab实现直方图均衡化、同态滤波、中值滤波及巴特沃斯带阻滤波器
2020-10-15 03:30:51压缩包有三个程序以及实验报告 ⑴在matlab下编程实现...⑵在matlab下设计完成同态滤波器,并用之改善图象质量。 ⑶对某图像加入不同类型﹑不同强度的噪声(周期﹑椒盐噪声),并分别用空间域和频率域的方法抑制噪声。 -
RC带阻滤波器.rar
2020-06-01 09:22:48本文介绍了RC带阻滤波器的工作原理和Simulink的仿真模型,传递函数和傅里叶变换关系,介绍了离散变化和连线变化对结果差异的分析,以及截止频率计算方法 -
单片机与DSP中的有源带阻滤波器设计
2020-11-15 12:27:54要求 按例1的指标设计一个有源带阻滤波器,其增益为+6dB。 解 ①例1的带阻变换可得表1所示的3节滤波器的技术指标。 表1 3阶滤波器的技术指标 图1 fr=f∞的带阻电路 欢迎转载,信息来自维库电子... -
使用陷波滤波器从图像中去除周期性噪声:该程序使用带阻滤波器(陷波滤波器)对被周期性噪声破坏的图像进行...
2021-05-30 11:28:14带阻滤波的应用之一是在频域中噪声分量的大致位置大致已知的应用中去除...该程序对被周期性噪声破坏的图像进行去噪,该图像可以近似为二维正弦函数使用带阻滤波器。您可以调整滤波器蒙版的半径以将其应用于不同的图像。 -
单片机与DSP中的带阻滤波器
2020-11-12 23:58:13带阻滤波器分两类,一类是窄带抑制带阻滤波器(简称窄带阻滤波器),另一类是宽带抑制带阻滤波器(简称宽带阻滤波器)。窄带阻滤波器一般用带通滤波器和减法器电路组合起来实现。窄带阻滤波器通常用作单一频率的陷波... -
Q值可调的带阻滤波器(741)电路图
2020-07-27 05:04:25本文给大家分享了一个Q值可调的带阻滤波器(741)电路图。 -
matlab设计FIR带阻滤波器.doc
2022-03-28 14:53:08是一个自由选择参数,它可以调整窗函数的主瓣宽度,越大,旁瓣越小,但过渡段变宽 源程序 %子程序 Freqz.m Function[db,mag,pha,grd.w]=freqz.m(b,a) %db为相对振幅(dB);mag为绝对振幅;pha为相位响应;... -
带阻滤波器matlab代码-B1_project:我的学业三年级的迷你项目
2021-05-27 12:59:18带阻滤波器matlab代码时域重构与过滤 信息工程小项目2017-18 该项目的主要目的是开发用于设计最佳脉冲响应序列的代码,以对采样数据进行低通滤波,并报告代码及其使用结果。 我使用了多种数值技术,包括优化和积分,... -
一种伺服系统中带阻滤波器的设计
2021-02-03 13:56:16一种伺服系统中带阻滤波器的设计、电子技术,开发板制作交流 -
基于对偶复合左右手单元小型化带阻滤波器设计 (2012年)
2021-05-21 17:36:14提出了基于对偶复合左右手(Double Composite Right/Left-Handed Cell,DCRLH)单元的小型化带阻滤波器设计方案。通过对DCRLH单元等效电路模型的理论分析证明该结构在平衡状态下左右手通带无法合并,具有天然的带阻特性... -
带阻滤波器_带阻滤波器_仿真_实验_
2021-10-02 06:44:37带阻滤波器仿真实验,可通过该仿真实验了解带阻滤波器的特性,更好地将理论与实际相结合。 -
FPGA实现带阻滤波器(内含完整的FPGA代码)
2020-04-11 15:46:51FPGA实现带阻滤波器(内含完整的FPGA代码) -
iir模拟带阻滤波器设计_论文
2014-12-27 19:16:27交流学习! -
图像频域增强:带通带阻滤波器
2022-02-20 11:59:09理想带通带阻滤波器,巴特沃斯带通带阻滤波器。带通滤波器
带通滤波器是允许一定频率范围内的信号通过而阻止其他频率范围内的信号通过的滤波器。在实际应用中,允许以频率原点为中心的圆环带内信号通过的带通滤波器是放射对称的。
带阻滤波器
带阻滤波器是阻止一定频率范围内的信号通过而允许其他频率范围内的信号通过的滤波器。对带通滤波器的转移函数取反就可以得到带阻滤波器。
理想带通、带阻滤波器
理想带通滤波器的转移函数为:
H ( u , v ) = { 0 , D ( u , v ) < D 0 − W 2 1 , D 0 − W 2 < = D ( u , v ) < = D 0 + w 2 0 , D ( u , v ) > D 0 + W 2 H(u, v) = \left\{\begin{aligned}& 0,D(u, v) < D_0 - \frac{W}{2} \\ & 1, D_0 - \frac{W}{2} <= D(u, v) <= D_0 + \frac{w}{2} \\ & 0, D(u, v) > D_0 + \frac{W}{2} \end{aligned}\right. H(u,v)=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧0,D(u,v)<D0−2W1,D0−2W<=D(u,v)<=D0+2w0,D(u,v)>D0+2W
- W W W : 圆环带的宽度
- D 0 D_0 D0 : 圆环带的中心频率
- D ( u , v ) D(u, v) D(u,v) : (u,v)到频谱中心的欧氏距离
理想带阻滤波器的转移函数为:
H ( u , v ) = { 1 , D ( u , v ) < D 0 − W 2 0 , D 0 − W 2 < = D ( u , v ) < = D 0 + w 2 1 , D ( u , v ) > D 0 + W 2 H(u, v) = \left\{\begin{aligned}& 1,D(u, v) < D_0 - \frac{W}{2} \\ & 0, D_0 - \frac{W}{2} <= D(u, v) <= D_0 + \frac{w}{2} \\ & 1, D(u, v) > D_0 + \frac{W}{2} \end{aligned}\right. H(u,v)=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧1,D(u,v)<D0−2W0,D0−2W<=D(u,v)<=D0+2w1,D(u,v)>D0+2W
巴特沃斯带通、带阻滤波器
带通滤波转移函数为:
H ( u , v ) = [ D ( u , v ) W ] 2 N [ D ( u , v ) 2 − D 0 2 ] 2 N + [ D ( u , v ) W ] 2 N H(u, v) = \frac{[D(u, v)W]^{2N}}{[{D(u, v)}^2 - D_0^2]^{2N} + [D(u, v)W]^{2N}} H(u,v)=[D(u,v)2−D02]2N+[D(u,v)W]2N[D(u,v)W]2N
带阻滤波转移函数为:
H ( u , v ) = [ D ( u , v ) 2 − D 0 2 ] 2 N [ D ( u , v ) 2 − D 0 2 ] 2 N + [ D ( u , v ) W ] 2 N H(u, v) = \frac{[{D(u, v)}^2 - {D_0}^2]^{2N}}{[{D(u, v)}^2 - D_0^2]^{2N} + [D(u, v)W]^{2N}} H(u,v)=[D(u,v)2−D02]2N+[D(u,v)W]2N[D(u,v)2−D02]2N
Numpy实现带通滤波
import cv2 as cv import numpy as np import seaborn as sns import matplotlib.pyplot as plt
img = cv.imread('./images/xXX2.png') img = cv.cvtColor(img, cv.COLOR_BGR2RGB) img_gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)
测试用例(逃学威龙1):
傅里叶变换:
dft = cv.dft(img_gray.astype('float32'),flags = cv.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft) magnitude_spectrum = cv.magnitude(dft_shift[:,:,0], dft_shift[:,:,1]) log_magnitude_spectrum = 20*np.log(magnitude_spectrum) # 幅值对数变换
理想带通、带阻滤波
def band_filter(img_gray, d0=100, w=50, ftype='pass'): dft = cv.dft(img_gray.astype('float32'),flags = cv.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft) m, n, _ = dft_shift.shape center = (m//2, n//2) mask = np.zeros_like(dft_shift) x_arr = np.concatenate([np.arange(m).reshape(m, 1)], axis=1) y_arr = np.concatenate([np.arange(n).reshape(1, n)], axis=0) dist = np.sqrt((x_arr - center[0])**2 + (y_arr - center[1])**2) mask[np.logical_and(dist >= (d0 - w/2), dist <= (d0 + w/2))] = 1 if ftype != 'pass': mask = 1 - mask bpf_dft_shift = dft_shift * mask magnitude_spectrum = cv.magnitude(bpf_dft_shift[:,:,0], bpf_dft_shift[:,:,1]) log_magnitude_spectrum = 20*np.log(magnitude_spectrum+1) bpf_dft = np.fft.ifftshift(bpf_dft_shift) img_ = cv.idft(bpf_dft) img_bpf = cv.magnitude (img_[:,:,0],img_[:,:,1]) return img_bpf, log_magnitude_spectrum
img_bpf1, log_ms1 = band_filter(img_gray, d0 = 75, w=60)
img_bsf2, log_ms2 = band_filter(img_gray, d0 = 75, w=60, ftype='stop')
巴特沃斯带通、带阻滤波器
def bwband_filter(img_gray, d0=100, w=50, N= 1, ftype='pass'): dft = cv.dft(img_gray.astype('float32'),flags = cv.DFT_COMPLEX_OUTPUT) dft_shift = np.fft.fftshift(dft) m, n, _ = dft_shift.shape center = (m//2, n//2) x_arr = np.concatenate([np.arange(m).reshape(m, 1)], axis=1) y_arr = np.concatenate([np.arange(n).reshape(1, n)], axis=0) dist = np.sqrt((x_arr - center[0])**2 + (y_arr - center[1])**2) if ftype == 'pass': a = (dist * w)**(2*N) b = (dist**2 - d0**2)**(2*N) + (dist*w)**(2*N) mask = a/b else: a = (dist**2 - d0**2)**(2*N) b = (dist**2 - d0**2)**(2*N) + (dist*w)**(2*N) mask = a/b bsf_dft_shift = dft_shift * mask.reshape(m, n, 1) magnitude_spectrum = cv.magnitude(bsf_dft_shift[:,:,0], bsf_dft_shift[:,:,1]) log_magnitude_spectrum = 20*np.log(magnitude_spectrum+1) bsf_dft = np.fft.ifftshift(bsf_dft_shift) img_ = cv.idft(bsf_dft) img_bsf = cv.magnitude (img_[:,:,0],img_[:,:,1]) return img_bsf, log_magnitude_spectrum
N = 1 N=1 N=1
img_bsf1, log_ms1 = bwband_filter(img_gray, d0=75, w=60, N=1, ftype='pass') img_bsf2, log_ms2 = bwband_filter(img_gray, d0=75, w=60, N=1, ftype='stop')
N = 2 N=2 N=2img_bsf3, log_ms3 = bwband_filter(img_gray, d0=75, w=60, N=2, ftype='pass') img_bsf4, log_ms4 = bwband_filter(img_gray, d0=75, w=60, N=2, ftype='stop')
N = 4 N=4 N=4
img_bsf5, log_ms5 = bwband_filter(img_gray, d0=75, w=60, N=4, ftype='pass') img_bsf6, log_ms6 = bwband_filter(img_gray, d0=75, w=60, N=4, ftype='stop')
N = 8 N=8 N=8
img_bsf7, log_ms7 = bwband_filter(img_gray, d0=75, w=60, N=8, ftype='pass') img_bsf8, log_ms8 = bwband_filter(img_gray, d0=75, w=60, N=8, ftype='stop')
N N N越大,巴特沃斯滤波越接近理想滤波器。
-
单片机与DSP中的LC带阻滤波器
2020-11-15 12:03:54带阻滤波器设计指标的归一化过程和频率响应曲线参数的定义。像带通滤波器一样,带阻滤波器网络也可以由归一化低通滤波器通过适当的变换获得。 讨论了用级联低通和高通滤波器的方法设计宽带带通滤波器。用类似的... -
二阶有源带阻滤波器课程设计.d
2014-05-29 17:09:14二阶有源带阻滤波器课程设计.d -
具有规定的负群时延和带宽的吸收性带阻滤波器
2021-03-06 07:04:46具有规定的负群时延和带宽的吸收性带阻滤波器