傅里叶滤波

简介: 傅里叶滤波

要使用傅里叶滤波在 OpenCV 中处理图像,你需要遵循以下步骤:

  1. 将图像转换为灰度图(如果是彩色的)。
  2. 应用傅里叶变换将图像转换到频率域。
  3. 创建一个滤波器掩码。
  4. 将滤波器掩码应用到频率域图像上。
  5. 应用逆傅里叶变换将图像转换回空间域。
  6. 显示结果。

以下是使用低通和高通滤波器处理图像的示例代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 加载图像
image = cv2.imread('path_to_image', 0)  # 0 表示以灰度模式读取

# 应用傅里叶变换
dft = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = cv2.fftshift(dft)  # 将零频分量移动到频谱中心

# 创建低通滤波器
dft_rows, dft_cols = dft_shift.shape
low_pass_filter = np.zeros((dft_rows, dft_cols), np.uint8)
cv2.circle(low_pass_filter, (dft_rows//2, dft_cols//2), dft_rows//4, (255), -1)

# 应用低通滤波器
low_pass = cv2.multiply(dft_shift, low_pass_filter)
low_pass_shift = cv2.idft(cv2.fftshift(low_pass))
low_pass_shift = cv2.magnitude(low_pass_shift[:, :, 0], low_pass_shift[:, :, 1])

# 创建高通滤波器
high_pass_filter = cv2.bitwise_not(low_pass_filter)
high_pass = cv2.multiply(dft_shift, high_pass_filter)
high_pass_shift = cv2.idft(cv2.fftshift(high_pass))
high_pass_shift = cv2.magnitude(high_pass_shift[:, :, 0], high_pass_shift[:, :, 1])

# 显示结果
plt.figure(figsize=(12, 6))

plt.subplot(2, 2, 1)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_GRAY2BGR))
plt.title('Original Image')

plt.subplot(2, 2, 2)
plt.imshow(cv2.cvtColor(low_pass_shift, cv2.COLOR_GRAY2BGR))
plt.title('Low-pass Filtered')

plt.subplot(2, 2, 3)
plt.imshow(cv2.cvtColor(high_pass_shift, cv2.COLOR_GRAY2BGR))
plt.title('High-pass Filtered')

plt.show()

这段代码首先将图像转换为灰度图,然后计算其傅里叶变换并将其移动到频谱中心。接着,创建一个低通滤波器,它是一个圆形区域,其余部分为黑色(即零)。将这个掩码应用到 DFT 变换后的图像上,然后进行逆傅里叶变换以获得低通滤波后的图像。

对于高通滤波器,使用低通滤波器的反掩码(即 cv2.bitwise_not 操作)。同样应用这个掩码,然后进行逆傅里叶变换以获得高通滤波后的图像。

最后,使用 matplotlib 库显示原始图像、低通滤波后的图像和高通滤波后的图像。你会看到低通滤波器使得图像模糊,而高通滤波器则增强了图像的边缘和细节。

目录
相关文章
|
6天前
|
机器学习/深度学习
FFT能量归一化
FFT能量归一化
23 0
|
6天前
|
算法 计算机视觉
傅里叶变换
傅里叶变换
29 2
|
10月前
|
机器学习/深度学习 传感器 算法
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
|
11月前
常见滤波(高斯滤波、均值滤波等)的简单理解
常见滤波(高斯滤波、均值滤波等)的简单理解
78 0
|
算法 计算机视觉 Python
|
机器学习/深度学习
傅立叶变换之(一)——欧拉公式
傅立叶变换之(一)——欧拉公式
|
算法 应用服务中间件 HSF
时域高通滤波算法(THPF)下
空域低通时域高通非均匀性校正算法
135 0
时域高通滤波算法(THPF)下
|
机器学习/深度学习 算法 计算机视觉
时域高通滤波算法(THPF)上
图像非均匀校正中的场景校正算法-时域高通滤波算法(Temporal High Pass Filtering, THPF)以及它后续的各种改进版本。空域和频域已经在之前的文章介绍过一些了,时域还没有。图像是二维空间域上的像素,随着时间的延续,每秒25、30、60帧,就成了视频,针对视频进行图像处理,就可以考虑增加一个时间维度,图像帧与帧之间是存在相关性的,结合时域滤波算法可以有效去除图像中的噪声和探测非均匀性问题。
308 0
时域高通滤波算法(THPF)上
|
算法 C++
【C++】离散余弦变换滤波算法(DCT)
离散余弦变换滤波算法(DCT)C++实现
144 0