图像频域增强:高通滤波器

article/2025/10/23 14:38:46

频域高通滤波

高通滤波器的功能是削弱或消除低频分量而保留高频分量。

理想高通滤波器

理想低通滤波器,模拟上容易实现,物理上无法实现。

转移函数定义:
H ( u , v ) = { 0 , D ( u , v ) < = D 0 1 , D ( u , v ) > D 0 H(u, v) = \left\{\begin{aligned} & 0, D(u, v) <= D_0 \\ & 1,D(u, v) > D_0 \end{aligned}\right. H(u,v)={0D(u,v)<=D01D(u,v)>D0

巴特沃斯高通滤波器

巴特沃斯低通滤波器是物理上可实现的,高低频之间的过渡比较平滑。

转移函数定义为:

H ( u , v ) = 1 1 + [ D 0 D ( u , v ) ] 2 n H(u, v) = \frac{1}{1 + \Big[\frac{D_0}{D(u, v)}\Big]^{2n}} H(u,v)=1+[D(u,v)D0]2n1

高斯高通滤波器

H ( u , v ) = 1 − e − D ( u , v ) 2 2 D 0 2 H(u, v) = 1-e^{\frac{-{D(u, v)}^2}{2{D_0}^2}} H(u,v)=1e2D02D(u,v)2

Opencv低通滤波

import cv2 as cv
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
img = cv.imread('./images/kunting.png')
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
img_gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)

测试用例(美剧《杀出个黎明》):

在这里插入图片描述

傅里叶变换:

dft = cv.dft(img_gray.astype('float32'),flags = cv.DFT_COMPLEX_OUTPUT)           # 傅里叶变换(Opencv是用深度为2数组表示复数)
dft_shift = np.fft.fftshift(dft)                                                 # 移动零频分量
magnitude_spectrum = cv.magnitude(dft_shift[:,:,0], dft_shift[:,:,1])
log_magnitude_spectrum = 20*np.log(magnitude_spectrum)  # 幅值对数变换

在这里插入图片描述

理想、巴特沃斯、高斯HPF
def hpf(dft_shift, r=100):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[dist > r] = 1return maskdef bw_hpf(dft_shift, r=100, N=1):m, n, _ = dft_shift.shapecenter = (m//2, n//2)mask = np.ones_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).reshape(m, n, 1)+0.01mask = 1/(1+(r/dist)**(2*N))return maskdef gaussian_hpf(dft_shift, r=100):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_square = np.sqrt((x_arr - center[0])**2 + (y_arr - center[1])**2).reshape(m, n, 1)mask = 1-np.exp(-1*dist_square/(2*r*r))return mask
huv = hpf(dft_shift, r=50)                        # 转移函数(算子/模)
hpf_dft_shift = dft_shift * huv                # 低通滤波
hpf_magnitude_spectrum = cv.magnitude(hpf_dft_shift[:,:,0], hpf_dft_shift[:,:,1])
log_hpf_magnitude_spectrum = 20*np.log(hpf_magnitude_spectrum+1) # 幅值对数变换
hpf_dft = np.fft.ifftshift(hpf_dft_shift)         # 还原频谱图
img_ = cv.idft(hpf_dft)                           # 逆傅里叶变换
img_hpf1 = cv.magnitude (img_[:,:,0],img_[:,:,1])  # 还原图像

在这里插入图片描述

边缘检测的效果。

sobel_x、sobel_y、scharr算子对低频的抑制

scharr = np.array([[-3, 0, 3],[-10,0,10],[-3, 0, 3]])
# sobel in x direction
sobel_x= np.array([[-1, 0, 1],[-2, 0, 2],[-1, 0, 1]])
# sobel in y direction
sobel_y= np.array([[-1,-2,-1],[0, 0, 0],[1, 2, 1]])

在这里插入图片描述

高通滤波同时保留部分低频分量:

G e ( u , v ) = G ( u , v ) + c F ( u , v ) , 0 < c < 1 G_e(u, v) = G(u, v) + cF(u, v),0 < c < 1 Ge(u,v)=G(u,v)+cF(u,v)0<c<1

c = 0.5 c = 0.5 c=0.5

huv = hpf(dft_shift, r=50)                         
hpf_dft_shift = dft_shift * huv + 0.5*dft_shift   # 高通滤波 + c*低频分量
hpf_dft = np.fft.ifftshift(hpf_dft_shift)          
img_ = cv.idft(hpf_dft)                            
img_hpf_a = cv.magnitude (img_[:,:,0],img_[:,:,1])   

在这里插入图片描述

不仅边缘得到了增强,整体图像信息也得到保留。


http://chatgpt.dhexx.cn/article/MC7BCIde.shtml

相关文章

FIR 滤波器设计

目录 线性相位滤波器 与无限持续时间脉冲响应 (IIR) 滤波器相比&#xff0c;具有有限持续时间脉冲响应的数字滤波器&#xff08;全零或 FIR 滤波器&#xff09;既有优点又有缺点。 FIR 滤波器具有以下主要优点&#xff1a; 它们可以具有精确的线性相位它们始终稳定设计方法通…

设计巴特沃斯滤波器实现高通滤波

首先在MATLAB上通过设计一个巴特沃斯滤波器来实现一个高通滤波器。 %设计一个巴特沃斯高通滤波器 %滤除一个300HZ的正弦信号 clear; fn 10000;%采样频率 fp 900;%通带截止频率 fs 600;%阻带截止频率 Rp 2;%通带最大衰减 Rs 20;%阻带最小衰减 figure(1); Wp fp/(fn/2); W…

【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器

【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 4. 频率域高通滤波器 图像边缘化其它灰度的急剧变化与高频分量有关&#xff0c;因此可以…

四阶巴特沃斯高通滤波器

一、设计方案 1.理论参考 图1.1-1 巴特沃斯高通滤波器归一化幅频响应 图1.1-2 巴特沃斯低通、高通电路阶数n与增益的关系 图1.1-3 二阶高通滤波电路及其传递函数 2.电路设计 综合滤波器滤波效果及电路实现难度&#xff0c;采用四阶高通滤波器 图1.2-1 四阶高通滤波电路 查表得到…

matlab设计模拟高通滤波器

简单记录下在matlab上如何设计出模拟的高通滤波器&#xff0c;包括&#xff1a;巴特沃斯滤波器、切比雪夫I型滤波器、切比雪夫II型滤波器、椭圆型滤波器。 %设计高通滤波器 %巴特沃斯、切比雪夫I型、切比雪夫II型、椭圆型滤波器clear all;%wp和ws分别是通带和阻带的频率(截止频…

IIR滤波器设计

matlab代码在最后&#xff0c;仅供参考。 高通滤波器设计 HP:fp400Hz&#xff0c;fs300Hz&#xff0c;Fs1000Hz&#xff0c;αp3dB&#xff0c;αs35dB。 巴特沃斯高通滤波器设计 切比雪夫高通滤波器设计 带通滤波器设计 BP:fsl200Hz&#xff0c;f1300Hz&#xff0c;fsh500H…

设计线性相位高通FIR滤波器

调用MATLAB工具箱函数frl设计线性相位高通FIR滤波器。要求通带截止频奉为0.6 Πrad,限带截止频率为0.45 Πrad,通带最大衰成为0.2 dB.阻带最小衰减为45dB.显示所设计的单位脉冲响应h(n)的数据&#xff0c;并画出损耗函数曲线。 代码&#xff1a; Fs80000; T1/Fs; wp2*pi*4000/…

【转载】设计一个RC高通滤波器或低通滤波器

设计一个RC高通滤波器或低通滤波器 qlexcel 2019-05-03 11:42:42 30981 收藏 93 分类专栏&#xff1a; 器件&amp;传感器 模拟电路&amp;电路分析 一、引出 在一些信号电路中通常会存在一些我们不需要的噪声&#xff0c;比如高频噪声。这个时候就需要滤波器来处理他们…

MATLAB设计滤波器代码

自测可用&#xff0c;最基本的代码&#xff0c;无拔高。 目录 1、设计IIR模拟高低通滤波器 2、设计IIR数字滤波器 3、设计FIR数字滤波器 1、设计IIR模拟高低通滤波器 wp 2*pi*4000;ws 2*pi*1000; ap 0.1;as 40; [N,wc] buttord(wp,ws,ap,as,s); [BH,AH] butter(N,wc…

【滤波器】基于matlab实现微波带低通高通带通滤波器设计

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

设计高通滤波器 HP

高通和低通类似&#xff0c;本篇文章用到的a、b参数&#xff0c;我在低通中有给出那个图 如果大家要设计高通滤波器&#xff0c;大家可以和低通滤波器一起考虑~~~~ ———————————————————————————————— example1: { in there we can see: R1…

二阶高通有源滤波器设计与仿真测试

二阶高通有源滤波器设计与仿真测试 1.压控电压源法二阶高通有源滤波器设计与仿真测试&#xff08;1&#xff09;电路结构&#xff08;2&#xff09;设计步骤&#xff08;3&#xff09;设计举例&#xff08;4&#xff09;仿真测试 2.无限增益多路反馈型二阶高通有源滤波器的设计…

信号处理系统综合设计-最小阶数的IIR数字高通滤波器

微信公众号&#xff1a;创享日记 发送&#xff1a;最小阶 获取完整报告&#xff08;含源代码程序结果分析&#xff09; 设计一个最小阶数的IIR数字高通滤波器&#xff0c;指标要求如下&#xff1a; 以小于1dB的衰减通过150Hz的分量&#xff1b;以至少40dB抑制100Hz的分量&…

一维序列数据处理:FIR高通滤波器设计

1. 加窗法设计滤波器 为什么要加窗设计滤波器&#xff1f;因为为了降低DFT的频率泄露。那什么是DFT频率泄露以及为什么加窗设计就可以降低DFT的频率泄露&#xff1f;解释这个之前&#xff0c;我们先介绍一下DFT&#xff08;离散傅里叶变换&#xff09;和三角函数的正交性知识&…

悬置线高通滤波器设计

从大学到工作&#xff0c;初次接触过的人都觉得我很啰嗦&#xff0c;我很想简洁明了表达&#xff0c;我也读了很多高效表达方法论的书&#xff0c;刻意练习还是发现效果不佳。后来自我反省&#xff0c;发现啰嗦也有可爱的一面&#xff0c;出发点是自己的真诚&#xff0c;我想把…

【Matlab】如何使用Filter Design设计低通、高通、带阻滤波器

如何使用Filter Design设计低通、高通、带阻数字滤波器。 文章目录 前言 一、低通滤波器 二、高通滤波器 三、带阻滤波器 前言 使用Matlab自带的Filter Design APP可以方便、快捷地设计各种FIR/IIR数字滤波器&#xff0c;并且能输出数字滤波器的阶数、幅度响应、相位响应等…

基于汉宁窗的FIR高通滤波器设计

摘 要 本次课程设计是采用MATLAB进行设计基于汉宁窗的FIR高通滤波器音频去噪&#xff0c;在设计过程中&#xff0c;首先录制一段不少于5秒的音频音乐&#xff0c;作为输入信号&#xff0c;并对录制的信号进行采样&#xff1b;其次使用MATLAB会出采样后的语音信号的时域波形和频…

数字滤波器之高通滤波器设计

要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设计数字滤波器。 设计要点&#xff1a;单位圆上对应于需要加强频率的点附近放置极点&#xff0c;即wπ处附近落极点…

PCB布线及后仿真验证过程(干货满满,建议收藏)

一、布线的基本要求 布线次序考虑 1) 规则驱动布线遵循的基本步骤 定义禁布区&#xff0c;或控制区若有规则约束&#xff0c;要求设置规则试布线&#xff0c;评估单板是否可以布通&#xff0c;若不能布通&#xff0c;需要采用策略Fanout后对覆盖率检查&#xff0c;通常要求满…

PCB布线原则总结

1、环路最小规则------信号线与其回来构成的环路面积极可能小 2、短线规则------布线长度应尽可能短&#xff0c;振荡器应放在离器件很近的位置 3、开环检查规则----- 一般情况下不允许出现一端悬空的布线 4、闭环检查规则------防止信号在不同层间形成闭环 5、20H规则------防…