前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文讲懂图像处理中的低通、高通、带阻和带通滤波器

一文讲懂图像处理中的低通、高通、带阻和带通滤波器

作者头像
小白学视觉
发布于 2022-04-06 01:46:28
发布于 2022-04-06 01:46:28
7.4K00
代码可运行
举报
运行总次数:0
代码可运行

空间域和频域滤波器通常分为四种类型的滤波器——低通、高通、带阻和带通滤波器。在本文中,我们为每一种滤波器提供了注释、代码示例和图像输出。

滤波器类型

  • 低通滤波器:只允许通过低频细节,衰减高频细节。例如:平滑滤波器。
  • 高通滤波器:只允许通过高频细节,衰减低频细节。例如:锐化蒙版滤波器。
  • 带阻滤波器:衰减一定频率范围内的信号。允许低于某个阈值或高于另一个阈值的频率通过。
  • 带通滤波器:只允许特定频带内的信号通过,允许高于低阈值和低于高个阈值的频率通过。

我们可以将不同滤波器用如下的公式来表示

其中δ(x, y)是单位脉冲核

使用Zone板来展示不同滤波器的效果

Zone板是用于测试过滤器特性的一种测试板,有很多中版本。本文我们使用如下方程生成我们的要用的Zone板。

其中 x,y 是递增步长0.0275,取值范围在[-8.2, 8.2]的一组数,最终形成一个 597x597 的图像,样子如下所示

具体的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def zone(x, y):
    return 0.5 * (1 + math.cos(x * x + y * y))

SIZE = 597
image = np.zeros((SIZE, SIZE))

start = -8.2
end = 8.2
step = 0.0275

def dist_center(y, x):
    global SIZE
    center = SIZE / 2
    return math.sqrt( (x - center)**2 + (y - center)**2)

for y in range(0, SIZE):
    for x in range(0, SIZE):
        if dist_center(y, x) > 300:
            continue
        y_val = start + y * step
        x_val = start + x * step
        image[y, x] = zone(x_val, y_val)

接下来我们将通过代码展示如何使用各种滤波器,以及展示每个滤波器对Zone板的处理结果。

低通滤波器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kernel_size = 15

lowpass_kernel_gaussian = gkern(kernel_size)
lowpass_kernel_gaussian = lowpass_kernel_gaussian / lowpass_kernel_gaussian.sum()

lowpass_kernel_box = np.ones((kernel_size, kernel_size))
lowpass_kernel_box = lowpass_kernel_box / (kernel_size * kernel_size)

lowpass_image_gaussian = cv2.filter2D(image, -1, lowpass_kernel_gaussian)
lowpass_image_box = cv2.filter2D(image, -1, lowpass_kernel_box)

高通滤波器

在空间域中,可以通过从图像本身中减去低通滤波图像来获得高通滤波图像(如非锐化掩模)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
highpass_image_gaussian = image - lowpass_image_gaussian
highpass_image_gaussian = np.absolute(highpass_image_gaussian)

highpass_image_box = image - lowpass_image_box
highpass_image_box = np.absolute(highpass_image_box)

带阻滤波器

在空间域中,可以通过将低通滤波与高通滤波图像(在不同阈值下)相加来获得带阻滤波图像。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bandreject_image = lowpass_image_gaussian + highpass_image_box

带通滤波器

在空间域中,可以通过从图像本身中减去带阻滤波图像来获得带通滤波图像。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bandpass_image = image - bandreject_image
bandpass_image = np.absolute(bandpass_image)

最后,各位小伙伴可以比较一下不同滤波器对同一图像的处理结果哦。仔细理解一下低通、高通、带阻、带通的含义。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
1.巴特沃斯模拟滤波器(低通,高通,带通,带阻)设计-MATLAB实现
本文是模拟滤波器设计,如果需要了解数字滤波器的内容,可以按顺序看我写的另外两篇博客,如下:
全栈程序员站长
2022/08/29
9K0
1.巴特沃斯模拟滤波器(低通,高通,带通,带阻)设计-MATLAB实现
死磕带通滤波器
与陷波器类似,带通滤波器在数字电源控制领域有重要作用。比如在三相LCL逆变器的谐振抑制控制方面,通过带通滤波器可以提取谐振点附近的频谱做进一步的控制策略。在有源电力滤波器利用带通滤波器可以提取电网信号的基波频率从而做进一步的控制。
全栈程序员站长
2022/06/26
9000
死磕带通滤波器
【DSP教程】第43章 IIR滤波器的Matlab设计
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第43章 IIR滤波器的Matlab设计 本章节讲解II
Simon223
2021/08/18
2.3K0
【DSP教程】第43章       IIR滤波器的Matlab设计
Python气象数据处理与绘图:常见的10种图像滤波方法
1.中值滤波(medianBlur) 中值滤波是非线性的图像处理方法,在去噪的同时可以兼顾到边界信息的保留。选一个含有奇数点的窗口,将这个窗口在图像上扫描,把窗口中所含的像素点按灰度级的升或降序排列,取位于中间的灰度值来代替该点的灰度值。
郭好奇同学
2021/08/26
2.3K0
Python气象数据处理与绘图:常见的10种图像滤波方法
方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)
对于微弱的信号的处理方式一般是:放大和滤波,这个过程中就涉及到放大电路的选取、滤波器的选择以及偏置电路的设计。本例以实例的方式讲解并附带参数计算、仿真、实物测试三个环节。
全栈程序员站长
2022/06/26
5K0
方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)
[开发技巧]·Python实现信号滤波(基于scipy)
在深度学习中,有时会使用Matlab进行滤波处理,再将处理过的数据送入神经网络中。这样是一般的处理方法,但是处理起来却有些繁琐,并且有时系统难以运行Matlab。Python作为一种十分强大的语言,是支持信号滤波滤波处理的。
小宋是呢
2019/06/27
10.1K0
[开发技巧]·Python实现信号滤波(基于scipy)
【DSP教程】第36章 FIR滤波器的Matlab设计(含低通,高通,带通和带阻)
完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第36章 FIR滤波器的Matlab设计(含低通,高通,
Simon223
2021/07/19
4.1K0
【DSP教程】第36章       FIR滤波器的Matlab设计(含低通,高通,带通和带阻)
带通滤波器
算法:带通滤波器是容许一定频率范围信号通过, 但减弱(或减少)频率低于下限截止频率和高于上限截止频率信号通过。
裴来凡
2022/05/29
2240
带通滤波器
【DSP教程】第35章 FIR有限冲击响应滤波器设计
FIR滤波器设计到的内容比较多,本章节主要经行了总结性的介绍,以帮助没有数字信号处理基础的读者能够有个整体的认识,有了这个整体的认识之后再去查阅相关资料可以到达事半功倍的效果。
Simon223
2021/07/15
9690
常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器
使用说明:将下列代码幅值然后以m文件保存,文件名要与函数名相同,这里函数名:lowp。
全栈程序员站长
2022/09/05
2.2K0
常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器
matlab实现不同窗滤波器示例
在Matlab中使用汉明窗设计低通滤波器可以通过fir1函数实现。汉明窗通常用于设计滤波器,可以提供更突出的频率特性。
FPGA开源工作室
2024/03/02
4730
matlab实现不同窗滤波器示例
卷积滤波器与边缘检测
高低频率 高频图像是强度变化很大的图像。并且亮度级别从一个像素到下一个像素快速变化。低频图像可以是亮度相对均匀或变化非常慢的图像。这是一个例子中最容易看到的。
小飞侠xp
2018/08/29
1.9K0
Python图像处理:频域滤波降噪和图像增强
来源:DeepHub IMBA本文约4300字,建议阅读8分钟本文将讨论图像从FFT到逆FFT的频率变换所涉及的各个阶段,并结合FFT位移和逆FFT位移的使用。 图像处理已经成为我们日常生活中不可或缺的一部分,涉及到社交媒体和医学成像等各个领域。通过数码相机或卫星照片和医学扫描等其他来源获得的图像可能需要预处理以消除或增强噪声。频域滤波是一种可行的解决方案,它可以在增强图像锐化的同时消除噪声。 快速傅里叶变换(FFT)是一种将图像从空间域变换到频率域的数学技术,是图像处理中进行频率变换的关键工具。通过利用图
数据派THU
2023/04/08
1.1K0
Python图像处理:频域滤波降噪和图像增强
基于FPGA的FIR数字滤波器设计
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
FPGA技术江湖
2025/04/13
2160
基于FPGA的FIR数字滤波器设计
9. 图像处理的应用 - 欧式视频放大的实现
上一次我介绍了一个计算摄影技术构成的"动作放大器",它能够高效的将视频中的难以用肉眼察觉的变化分离出来,并在重新渲染过程中进行放大,生成新的视频。这里面的典型代表是欧式视频动作放大。
HawkWang
2020/04/17
1.6K1
9. 图像处理的应用 - 欧式视频放大的实现
【OpenCV】Chapter6.频率域图像滤波
OpenCV 中的cv.dft()函数也可以实现图像的傅里叶变换,cv.idft()函数实现图像傅里叶逆变换。
zstar
2022/09/26
1.6K0
【OpenCV】Chapter6.频率域图像滤波
滤波器——BoxBlur均值滤波及其快速实现
在数字图像处理的语境里,图像一般是二维或三维的矩阵,卷积核(kernel)和滤波器(filter)通常指代同一事物,即对图像进行卷积或相关操作时使用的小矩阵,尺寸通常较小,常见的有3*3、5*5、7*7等。卷积操作相当于对滤波器旋转180度后的相关操作,如下图所示,但很多滤波器是中心对称的,而且两者运算上可以等价,所以很多时候不太区分。
李拜六不开鑫
2018/09/04
2.5K0
使用傅里叶变换进行图像边缘检测
简单来说,傅里叶变换是将输入的信号分解成指定样式的构造块。例如,首先通过叠加具有不同频率的两个或更多个正弦函数而生成信号f(x),之后,仅查看f(x)的图像缺无法了解使用哪种或多少原始函数来生成f(x)。
小白学视觉
2020/04/15
1.7K0
[转载]图像与滤波-阮一峰
我们知道,图像由像素组成。下图是一张 400 x 400 的图片,一共包含了 16 万个像素点。
marsggbo
2018/12/27
9350
Python-使用多种滤波器对脑电数据去除伪影
一些由电源线造成的伪影具有某些特定范围的频率(比如,由电网产生的电力线噪声,主要由50Hz(或60Hz取决于实验的地理位置)的尖峰组成)。因此可以通过滤波来固定。
脑机接口社区
2020/06/30
1.9K0
推荐阅读
相关推荐
1.巴特沃斯模拟滤波器(低通,高通,带通,带阻)设计-MATLAB实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验