频率域滤波步骤小结

本文总结了频率域滤波的主要步骤,并使用OpenCV库进行了代码实现,包括图像填充、离散傅里叶变换(DFT)、滤波函数生成、滤波处理以及逆离散傅里叶变换(IDFT)。示例中展示了高斯低通和高通滤波的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

频率域滤波步骤小结

1、给定一幅大小为M*N的输入图像f(x,y), 由P >= 2M-1,Q >= 2N-1;得到填充参数P,Q,典型的我们选择,P=2M,Q=2N;

如果滤波的目的仅是粗糙的视觉分析,可以跳过此步骤;

2、对f(x,y) 添加必要数量的0,形成大小为P*Q的图像 fp(x,y);

3、用-1^{(x+y)} 乘以fp(x,y)移到其变换中心;

4、计算来自步骤3图像的DFT,得到F(u,v);

5、生成一个实的、对称的滤波函数H(u,v),其大小为P*Q,中心在(P/2,Q/2)处。用阵列相乘形成乘积G(u,v)=H(u,v)F(u,v);

6、得到处理后的图像  

            g_{p}(x,y) = \left \{ real\left [ \Im ^{-1}\left [ G(u,v)) \right ] \right ] \right \}*-1^{(x+y))}           其中为忽略由于计算不准确导致的寄生复分量,选择了实部,下标p表示我们处理的是填充后的阵列;

还有一种处理方法是取模值;magnitude()函数

7、通过从   g^{_{p}}(x,y)  的左上限提取M*N,得到最终的处理结果。

原始图像-------------高斯模糊图像

### 数字图像处理频率域滤波的具体步骤 #### 准备工作 在进行频率域滤波之前,需要准备一张待处理的二维离散图像。该图像是由像素组成的矩阵形式的数据结构。 #### 图像预处理 通常会先对原始图像做零均值化处理以及可能的尺寸调整以便后续计算更加高效[^1]。 #### 傅里叶变换至频域 利用快速傅里叶变换(FFT),将空间域上的图像转换成对应的频谱图,在这个过程中每一个点代表了一定方向上特定频率成分的能量大小[^2]。 ```python import numpy as np from scipy.fftpack import fftshift, ifftshift, fft2, ifft2 def fourier_transform(image): f = np.fft.fft2(image) fshift = fftshift(f) magnitude_spectrum = 20 * np.log(np.abs(fshift)) return magnitude_spectrum ``` #### 构建并应用滤波器 根据需求设计合适的滤波函数(如理想低通/高通、巴特沃思或高斯型),将其作用于上述所得的频谱之上。对于想要保留的信息赋予较大权重;而对于希望削弱的部分则给予较低甚至接近于零的权值。 ```python def ideal_low_pass_filter(shape, cutoff_frequency): rows, cols = shape crow, ccol = int(rows / 2), int(cols / 2) mask = np.zeros((rows, cols)) for i in range(rows): for j in range(cols): if ((i - crow)**2 + (j - ccol)**2) <= cutoff_frequency**2: mask[i,j] = 1 return mask ``` #### 反向傅里叶变换返回空域 经过修改后的频谱再经逆向快速傅里叶变换(IFFT)变换成新的空间域表示——即已过滤过的图像版本。 ```python def inverse_fourier_transform(magnitude_spectrum, original_image_shape): f_ishift = ifftshift(magnitude_spectrum) img_back = ifft2(f_ishift) img_back = np.real(img_back) img_back_resized = cv2.resize(img_back, dsize=original_image_shape[::-1], interpolation=cv2.INTER_LINEAR) return img_back_resized ``` #### 后期处理与展示结果 最后可能会涉及到一些额外的操作比如归一化使得最终输出看起来更自然美观,并且能够直观地对比原图和处理过后的差异之处。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dwyane05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值