带通滤波器

    带通滤波器是允许一定频率范围内的信号通过而阻止其他频率范围内的信号通过的滤波器。在实际应用中,允许以频率原点为中心的圆环带内信号通过的带通滤波器是放射对称的。

带阻滤波器

    带阻滤波器是阻止一定频率范围内的信号通过而允许其他频率范围内的信号通过的滤波器。对带通滤波器的转移函数取反就可以得到带阻滤波器。

理想带通、带阻滤波器

理想带通滤波器的转移函数为:

H(u,v)={0,D(u,v)<D0−W21,D0−W2<=D(u,v)<=D0+w20,D(u,v)>D0+W2H(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​−2W​1,D0​−2W​<=D(u,v)<=D0​+2w​0,D(u,v)>D0​+2W​​

  • WWW : 圆环带的宽度
  • D0D_0D0​ : 圆环带的中心频率
  • D(u,v)D(u, v)D(u,v) : (u,v)到频谱中心的欧氏距离

理想带阻滤波器的转移函数为:

H(u,v)={1,D(u,v)<D0−W20,D0−W2<=D(u,v)<=D0+w21,D(u,v)>D0+W2H(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​−2W​0,D0​−2W​<=D(u,v)<=D0​+2w​1,D(u,v)>D0​+2W​​

巴特沃斯带通、带阻滤波器

带通滤波转移函数为:

H(u,v)=[D(u,v)W]2N[D(u,v)2−D02]2N+[D(u,v)W]2NH(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−D02]2N[D(u,v)2−D02]2N+[D(u,v)W]2NH(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−D0​2]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.shapecenter = (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))] = 1if ftype != 'pass':mask = 1 - maskbpf_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.shapecenter = (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/belse:a = (dist**2 - d0**2)**(2*N)b = (dist**2 - d0**2)**(2*N) + (dist*w)**(2*N)mask = a/bbsf_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=1N=1N=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=2N=2N=2

img_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=4N=4N=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=8N=8N=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')


NNN越大,巴特沃斯滤波越接近理想滤波器。

图像频域增强:带通带阻滤波器相关推荐

  1. matlab哈明窗带阻,基于matlabFIR低通,高通,带通,带阻滤波器设计.doc

    基于matlabFIR低通,高通,带通,带阻滤波器设计 课 程 设 计 报 告 课程名称: DSP 设计名称:FIR 低通.高通带通和带阻数字滤波器的设计 姓 名: 学 号: 班 级: 指导教师: 起 ...

  2. 数字图像处理——图像频域增强

    图像几何变换 图像频域增强 图像变换的目的 傅里叶变换 空间频率的理解 如何看频谱图 从频域变回空间域 图像频域增强 图像变换是图像频域增强技术的基础,也是变换域分析理论的基础,图像频域增强基于图像信 ...

  3. 数字图像处理实验四图像频域增强

    一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法. (2)熟练掌握低通.高通.带通.同态滤波器的使用方法,明确不同性质的滤波器对图像的影响 ...

  4. 带通 带阻滤波器 幅频响应_滤波器原理,各式尽在掌握

    滤波器作为电子系统中十分常见的工具,在信号处理中占有重要地位.本文将对两种典型的滤波器原理进行分析,并借以理解其他各式滤波器. 滤波器是一种选频装置,可以使信号中特定的频率成分通过,而极大地衰减其它频 ...

  5. 巴特沃斯带通滤波器matlab程序_带通带阻滤波器频率计算方法如何算

    目前滤波器的分析和设计方法有两种:一是影像参数分析法,二是工作参数分析法(又称综合法).前者设计简单,易于掌握,但这种滤波器的实测滤波特性与理论上的预定特性差别较大,在通带内又不能取得良好阻抗匹配,很 ...

  6. 带通 带阻滤波器 幅频响应_二阶有源带通滤波器设计

    二阶有源带通滤波器设计 1.背景 对于微弱的信号的处理方式一般是:放大和滤波,这个过程中就涉及到放大电路的选取.滤波器的选择以及偏置电路的设计.本例以实例的方式讲解并附带参数计算.仿真.实物测试三个环 ...

  7. 带通 带阻滤波器 幅频响应_微波介质陶瓷滤波器简介

    一直想写一篇介绍微波介质陶瓷的文章,却发现每每难以面面俱到,也许只有从滤波器基础知识入手,才能更好的了解它吧. 本文从网络上搜索汇总了滤波器.陶瓷滤波器.微波滤波器.介质滤波器的基本知识,希望能让大家 ...

  8. 带通 带阻滤波器 幅频响应_一文带你通俗理解幅频响应和相频响应

    引言 好多人学习数字信号处理学了很久都没有明白这两个概念的真实含义,或者说很多人在设计滤波器的时候,根本就没有考虑什么是幅频响应和相频响应.只是一昧地把滤波器设计出来然后把不要的频率滤除掉,这样是要吃 ...

  9. OPenCV:傅里叶变换、时域和频域、频谱和相位谱、傅里叶级数、离散傅里叶变换(DFT)、频域滤波、高通和低通滤波器、带通和带阻滤波器

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 快速了解傅立叶变换(播放PPT即能动态地显示gif图)    ...

  10. 【OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通

    [OpenCV 例程200篇]66. 图像滤波之低通/高通/带阻/带通 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 ...

最新文章

  1. 读 MySQL 源码再看 INSERT 加锁流程
  2. Javascript函数执行、new机制以及继承
  3. 应用域名改造-https证书部分
  4. react 遍历对象_探索:跟随《Build your own React》实现一个简易React
  5. 《.NET Core 2.0 应用程序高级调试》7折优惠
  6. TortoiseSVN 配合 Beyond Compare 3 或 WinMerge 的设置
  7. 《Windows核心编程》之七 - 关于Windows 2000中内存的分区
  8. 信息系统项目管理师考试相关介绍
  9. Rhino(犀牛)的视口
  10. 手绘风海报怎么做?手绘素材在哪里找?
  11. 实体-联系图(ER图)
  12. vue图片裁剪插件:vue-img-cutter
  13. reactjs setState的两种写法
  14. Canvas绘制六边形网格
  15. vb6.0企业版win7_教你安装纯净版windows系统
  16. tosmana使用教程_20款最流行的免费定性数据分析工具
  17. 基于灰狼算法优化的lssvm回归预测-附代码
  18. c2-00支持java_双卡超长待机 经典实用诺基亚C2-00图赏
  19. Git提示nothing to commit, working tree clean
  20. 安装程序没有找到安装在此计算机上的硬盘驱动器

热门文章

  1. Redisson 配置
  2. 恒生电子offer含金量_收获8个Offer,来给大家分享备战和面试经验
  3. c语言编程加三运算,C语言编程入门之--第五章C语言基本运算和表达式-part3
  4. c++ascii表_几道和散列(哈希)表有关的面试题
  5. html备注技术支持,技术支持协议书范本
  6. SpringMVC环境搭建——HelloWorld
  7. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月5日-3月11日)
  8. Postgresql创建数据库及用户然后执行初始化脚本
  9. 字节对齐 pragma
  10. TCP/UDP-路由交换原理6-【HCNA笔记】