OpenCV C++实现频域 巴特沃斯低通滤波器

本文介绍了如何利用OpenCV C++实现巴特沃思低通滤波器,用于图像平滑处理。通过设置截至频率D0和滤波器阶数n,该滤波器可以减少图像中的高频噪声,提供平滑效果。代码示例展示了滤波器的实现过程,包括傅里叶变换、滤波器核计算、滤波操作和逆傅里叶变换。
摘要由CSDN通过智能技术生成

巴特沃思低通滤波器

n级巴特沃思低通滤波器(BLPF)定义如下:

                                          

D0为截至频率距原点的距离,D(u,v)是点(u,v)距 原点的距离

不同于ILPF,BLPF变换函数在通带与被滤除的频率 之间没有明显的截断

当D(u,v)=D0时,H(u,v)=0.5(最大值是1,当 D(u,v)=0)

应用:可用于平滑处理,如图像由于量化不足产生虚假轮 廓时,常可用低通滤波进行平滑以改进图像质量。通常, BLPF的平滑效果好于ILPF(振铃现象)

效果图:

d0=5,n=2

巴特沃斯低通滤波器是一种常用的频率域滤波器,可以在图像处理中用于平滑图像、去除高频噪声并保留更多的图像细节。在Python中,可以使用OpenCV库来实现巴特沃斯低通滤波器。 下面是一个使用OpenCV实现巴特沃斯低通滤波器的示例代码[^1]: ```python import cv2 import numpy as np def butterworth_lowpass_filter(image, cutoff_frequency, order): # 获取图像的尺寸 rows, cols = image.shape # 创建一个与输入图像相同尺寸的零矩阵 mask = np.zeros((rows, cols), dtype=np.float32) # 计算中心点坐标 center_x = int(cols / 2) center_y = int(rows / 2) # 根据巴特沃斯低通滤波器的公式计算滤波器值 for i in range(rows): for j in range(cols): distance = np.sqrt((i - center_y) ** 2 + (j - center_x) ** 2) mask[i, j] = 1 / (1 + (distance / cutoff_frequency) ** (2 * order)) # 将滤波器应用于输入图像的傅里叶变换 fft_image = np.fft.fft2(image) fft_shift = np.fft.fftshift(fft_image) filtered_shift = fft_shift * mask filtered_image = np.fft.ifftshift(filtered_shift) filtered_image = np.fft.ifft2(filtered_image) filtered_image = np.abs(filtered_image) return filtered_image # 读取输入图像 image = cv2.imread('input.jpg', 0) # 设置巴特沃斯低通滤波器的截止频率和阶数 cutoff_frequency = 30 order = 2 # 应用巴特沃斯低通滤波器 filtered_image = butterworth_lowpass_filter(image, cutoff_frequency, order) # 显示原始图像和滤波后的图像 cv2.imshow('Original Image', image) cv2.imshow('Filtered Image', filtered_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请注意,上述代码中的`input.jpg`是输入图像的文件名,你需要将其替换为你自己的图像文件名。此外,你还可以根据需要调整截止频率和阶数来控制滤波效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dwyane05

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

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

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

打赏作者

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

抵扣说明:

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

余额充值