热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【OpenCV例程200篇】89.带阻滤波器的传递函数

【OpenCV例程200篇】89.带阻滤波器的传递函数欢迎关注『OpenCV例程200篇』系列,持续更新中欢迎关注『Python小白的OpenCV学习课』系列

【OpenCV 例程200篇】89. 带阻滤波器的传递函数


欢迎关注 『OpenCV 例程200篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中





5.1 带阻与带通

空间域和频率域线性滤波器可以分为四类:低通滤波器、高通滤波器、带通滤波器和带阻滤波器。高通滤波和低通滤波都是在整个频率矩形上操作,带通滤波和带阻滤波则是对特定频带处理,属于选择性滤波。

带阻滤波器(bandstop filters,简称BSF)是指能通过大多数频率分量、但将某些范围的频率分量衰减到极低水平的滤波器。带通滤波器(band-pass filter)是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。

频率域的高通滤波器可以由低通滤波器推导而来。类似地,频率域中的带通和带阻滤波器的传递函数,可以通过低通滤波器和高通滤波器的组合来构建。

理想带阻滤波器(IBRF) 的传递函数为:
H(u,v)={0,(C0−W/2)≤D(u,v)≤(C0+W/2)1,elseH(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, (C0W/2)D(u,v)(C0+W/2)1, else
高斯带阻滤波器(GBRF) 的传递函数为:
H(u,v)=1−e−[D2(u,v)−C02D(u,v)W]2H(u,v)=1-e^{-[ \frac {D^2(u,v) - C_0^2} {D(u,v)W}]^2} H(u,v)=1e[D(u,v)WD2(u,v)C02]2

巴特沃斯带阻滤波器(BBRF) 的传递函数为:

H(u,v)=11+[D(u,v)WD2(u,v)−C02]2nH(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&#xff1a;2021-12-30 # 例程 8.28 带阻滤波器的传递函数def ideaBondResistFilter(shape, radius&#61;10, w&#61;5): # 理想带阻滤波器u, v &#61; np.meshgrid(np.arange(shape[1]), np.arange(shape[0]))D &#61; np.sqrt((u - shape[1]//2)**2 &#43; (v - shape[0]//2)**2)D0 &#61; radiushalfW &#61; w/2kernel &#61; np.piecewise(D, [D<&#61;D0&#43;halfW, D<&#61;D0-halfW], [1, 0])kernel &#61; 1 - kernel # 带阻return kerneldef gaussBondResistFilter(shape, radius&#61;10, w&#61;5): # 高斯带阻滤波器# 高斯滤波器&#xff1a;# Gauss &#61; 1/(2*pi*s2) * exp(-(x**2&#43;y**2)/(2*s2))u, v &#61; np.meshgrid(np.arange(shape[1]), np.arange(shape[0]))D &#61; np.sqrt((u - shape[1]//2)**2 &#43; (v - shape[0]//2)**2)C0 &#61; radiuskernel &#61; 1 - np.exp(-(D-C0)**2 / (w**2))return kerneldef butterworthBondResistFilter(shape, radius&#61;10, w&#61;5, n&#61;1): # 巴特沃斯带阻滤波u, v &#61; np.meshgrid(np.arange(shape[1]), np.arange(shape[0]))D &#61; np.sqrt((u - shape[1]//2)**2 &#43; (v - shape[0]//2)**2)C0 &#61; radiusepsilon &#61; 1e-8 # 防止被 0 除kernel &#61; 1.0 / (1.0 &#43; np.power(D*w/(D**2-C0**2&#43;epsilon), 2*n))return kernel# 理想、高斯、巴特沃斯带阻滤波器传递函数shape &#61; [128, 128]radius &#61; 32IBRF &#61; ideaBondResistFilter(shape, radius&#61;radius)GBRF &#61; gaussBondResistFilter(shape, radius&#61;radius)BBRF &#61; butterworthBondResistFilter(shape, radius&#61;radius)filters &#61; ["IBRF", "GBRF", "BBRF"]u, v &#61; np.mgrid[-1:1:2.0/shape[0], -1:1:2.0/shape[1]]fig &#61; plt.figure(figsize&#61;(10, 8))for i in range(3):hpFilter &#61; eval(filters[i]).copy()ax1 &#61; fig.add_subplot(3, 3, 3*i&#43;1)ax1.imshow(hpFilter, &#39;gray&#39;)ax1.set_title(filters[i]), ax1.set_xticks([]), ax1.set_yticks([])ax2 &#61; plt.subplot(3,3,3*i&#43;2, projection&#61;&#39;3d&#39;)ax2.set_title("transfer function")ax2.plot_wireframe(u, v, hpFilter, rstride&#61;2, linewidth&#61;0.5, color&#61;&#39;c&#39;)ax2.set_xticks([]), ax2.set_yticks([]), ax2.set_zticks([])ax3 &#61; plt.subplot(3,3,3*i&#43;3)profile &#61; hpFilter[shape[0]//2:, shape[1]//2]ax3.plot(profile), ax3.set_title("profile"), ax3.set_xticks([]), ax3.set_yticks([])plt.show()

在这里插入图片描述



&#xff08;本节完&#xff09;



版权声明&#xff1a;

youcans&#64;xupt 原创作品&#xff0c;转载必须标注原文链接

Copyright 2021 youcans, XUPT

Crated&#xff1a;2022-2-1




欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中



【OpenCV 例程200篇】01. 图像的读取&#xff08;cv2.imread&#xff09;
【OpenCV 例程200篇】02. 图像的保存&#xff08;cv2.imwrite&#xff09;
【OpenCV 例程200篇】03. 图像的显示&#xff08;cv2.imshow&#xff09;
【OpenCV 例程200篇】04. 用 matplotlib 显示图像&#xff08;plt.imshow&#xff09;
【OpenCV 例程200篇】05. 图像的属性&#xff08;np.shape&#xff09;
【OpenCV 例程200篇】06. 像素的编辑&#xff08;img.itemset&#xff09;
【OpenCV 例程200篇】07. 图像的创建&#xff08;np.zeros&#xff09;
【OpenCV 例程200篇】08. 图像的复制&#xff08;np.copy&#xff09;
【OpenCV 例程200篇】09. 图像的裁剪&#xff08;cv2.selectROI&#xff09;
【OpenCV 例程200篇】10. 图像的拼接&#xff08;np.hstack&#xff09;
【OpenCV 例程200篇】11. 图像通道的拆分&#xff08;cv2.split&#xff09;
【OpenCV 例程200篇】12. 图像通道的合并&#xff08;cv2.merge&#xff09;
【OpenCV 例程200篇】13. 图像的加法运算&#xff08;cv2.add&#xff09;
【OpenCV 例程200篇】14. 图像与标量相加&#xff08;cv2.add&#xff09;
【OpenCV 例程200篇】15. 图像的加权加法&#xff08;cv2.addWeight&#xff09;
【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. 图像的旋转&#xff08;以原点为中心&#xff09;
【OpenCV 例程200篇】27. 图像的旋转&#xff08;以任意点为中心&#xff09;
【OpenCV 例程200篇】28. 图像的旋转&#xff08;直角旋转&#xff09;
【OpenCV 例程200篇】29. 图像的翻转&#xff08;cv2.flip&#xff09;
【OpenCV 例程200篇】30. 图像的缩放&#xff08;cv2.resize&#xff09;
【OpenCV 例程200篇】31. 图像金字塔&#xff08;cv2.pyrDown&#xff09;
【OpenCV 例程200篇】32. 图像的扭变&#xff08;错切&#xff09;
【OpenCV 例程200篇】33. 图像的复合变换
【OpenCV 例程200篇】34. 图像的投影变换
【OpenCV 例程200篇】35. 图像的投影变换&#xff08;边界填充&#xff09;
【OpenCV 例程200篇】36. 直角坐标与极坐标的转换
【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
【OpenCV 例程200篇】38. 图像的反色变换&#xff08;图像反转&#xff09;
【OpenCV 例程200篇】39. 图像灰度的线性变换
【OpenCV 例程200篇】40. 图像分段线性灰度变换
【OpenCV 例程200篇】41. 图像的灰度变换&#xff08;灰度级分层&#xff09;
【OpenCV 例程200篇】42. 图像的灰度变换&#xff08;比特平面分层&#xff09;
【OpenCV 例程200篇】43. 图像的灰度变换&#xff08;对数变换&#xff09;
【OpenCV 例程200篇】44. 图像的灰度变换&#xff08;伽马变换&#xff09;
【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. 导向滤波&#xff08;Guided filter&#xff09;
【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. 频率域低通滤波&#xff1a;印刷文本字符修复
【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
【OpenCV 例程200篇】85. 频率域高通滤波器的应用
【OpenCV 例程200篇】86. 频率域滤波应用&#xff1a;指纹图像处理
【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. 自适应局部降噪滤波器



推荐阅读
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
author-avatar
YW1232602897663_231
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有