傅里叶滤波

简介: 傅里叶滤波

要使用傅里叶滤波在 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能量归一化
115 0
|
5月前
快速傅里叶变换
【6月更文挑战第2天】
63 6
|
6月前
|
计算机视觉
傅里叶
傅里叶 “【5月更文挑战第23天】”
80 1
|
6月前
|
算法 计算机视觉
傅里叶变换
傅里叶变换
89 2
|
6月前
|
数据安全/隐私保护
matlab 曲线光滑,去毛刺,去离群值,数据滤波,高通滤波,低通滤波,带通滤波,带阻滤波
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
机器学习/深度学习 传感器 算法
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
|
机器学习/深度学习
傅立叶变换之(一)——欧拉公式
傅立叶变换之(一)——欧拉公式
常见滤波(高斯滤波、均值滤波等)的简单理解
常见滤波(高斯滤波、均值滤波等)的简单理解
125 0
|
算法 计算机视觉 Python