python实现平滑和锐化

问题描述

1、给定图像的采用低通滤波进行平滑处理,并观察处理结果。
(1) 分别采用ILPF、Butterworth、Gaussian滤波器;
(2) 能量按照保留90%,95%,99%进行处理;
(3) 注意观察振铃效应。
2、给定图像的采用高通滤波进行锐化处理,并观察处理结果。
(1) 分别采用LHPF、Butterworth、Gaussian滤波器;
(2) 能量按照保留20%、10%、5%进行处理;
3、图像中周期噪声的消除。
(1) 采用陷波滤波器消除;

如过我的介绍对你有帮助或者想要具体代码,可以点赞收藏加关注私聊我哦,你们的鼓励就是对我最大的支持哦


平滑

简介

在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓。而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分)。
低频滤波器,顾名思义,就是过滤掉或者大幅度衰减图像的高频成分,让图像的低频成分通过。低频滤波器可以平滑图像,虑去图像的噪声。而与此相反的高频滤波器,则是过滤低频成分,通过高频成分,可以达到锐化图像的目的。理想低通滤波器的滤波非常尖锐,而高斯低通滤波器的滤波则非常平滑。Butterworth低通滤波器则介于两者之间,当Butterworth低通滤波器的阶数较高时,接近于理想低通滤波器,阶数较低时,则接近于高斯低通滤波器。理想低通滤波器在以原点为圆心、D0为半径的园内,通过所有的频率,而在圆外截断所有的频率。(圆心的频率最低,为变换的直流(dc)分量)。

各滤波器的实现可以参考我的这篇博文
python实现陷波滤波器、低通滤波器、高斯滤波器、巴特沃斯滤波器
在这篇博文中我将所有的功能进行了集成,实现了通过用户控制使用何种滤波器以及能量保留


结果截图

此图是理想ILPF低通滤波,过滤器大小为110

在这里插入图片描述

此图是理想ILPF低通滤波,过滤器大小为22

在这里插入图片描述

此图是5阶巴特沃兹Butterworth低通滤波,过滤器大小为110

在这里插入图片描述

此图是3阶巴特沃兹Butterworth低通滤波器,过滤器大小为110

在这里插入图片描述

此图是3阶巴特沃兹Butterworth低通滤波器,过滤器大小为22

在这里插入图片描述

此图是高斯Gaussian低通滤波,,过滤器大小为110

在这里插入图片描述


锐化

结果展示

高通滤波器靠近频谱图中心的低频部分给舍弃掉,远离频谱图中心的高频部分保留。通常会保留物体的边界。其实图像的锐化往往也可以使用高通滤波器来实现,因为锐化的时候需要加强边界,而边界部分正是高频成分将lh设置为1代表高通滤波器

此图是理想ILPF高通滤波,过滤器大小为22

在这里插入图片描述

此图是理想ILPF高通滤波,过滤器大小为88

在这里插入图片描述

此图是理想ILPF高通滤波,过滤器大小为110

在这里插入图片描述

此图是3阶巴特沃兹Butterworth高通滤波,过滤器大小为22

在这里插入图片描述

此图是3阶巴特沃兹Butterworth高通滤波,过滤器大小为66

在这里插入图片描述

此图是1阶巴特沃兹Butterworth高通滤波,过滤器大小为66

在这里插入图片描述

此图是5阶巴特沃兹Butterworth高通滤波,过滤器大小为110

在这里插入图片描述

此图是高斯Gaussian高通滤波,,过滤器大小为66

在这里插入图片描述

此图是高斯Gaussian高通滤波,,过滤器大小为22

在这里插入图片描述

此图是高斯Gaussian高通滤波,,过滤器大小为110

在这里插入图片描述


关键代码

这个代码集成了锐化和平滑,用户可自定义调节参数并实现了可视化

	img = cv2.imread('D:/share/2184231458.jpg', 0)
    rows, cols = img.shape[:2]
    # 滤波器窗口名称
    filter_win = 'Filter Parameters'
    # 图像窗口名称
    image_win = 'Filtered Image'
    cv2.namedWindow(filter_win)
    cv2.namedWindow(image_win)
    # 创建d0 tracker, d0为过滤器大小
    cv2.createTrackbar('d0', filter_win, 20, int(min(rows, cols) / 4), do_filter)
    # flag=0时,为理想滤波
    # flag=1时,为巴特沃兹滤波
    # flag=2时,为高斯滤波
    cv2.createTrackbar('flag', filter_win, 0, 2, do_filter)
    # n 为巴特沃兹滤波的阶数
    cv2.createTrackbar('n', filter_win, 1, 5, do_filter)
    # 创建lh tracker
    cv2.createTrackbar('lh', filter_win, 0, 1, do_filter)
    fft_mat = fft(img)
    do_filter()
    cv2.resizeWindow(filter_win, 512, 20)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


陷波滤波器

频率域技术滤除周期噪声可行的原因是周期噪声在对应于周期干扰的频率处,以集中的能量脉冲形式出现。滤除的方法之一是选择性滤波器(带阻、带通和陷波)。图像可能在生成、传输或者采集过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不适合用在处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的像素。
陷波滤波器阻止或通过事先定义的中心频率的邻域内的频率,由于傅立叶变换的对称性,陷波滤波器必须以关于原点对称的形式出现(如果陷波滤波器位于原点处陷波滤波器是其本身)。同样,也可以得到陷波带阻滤波器相对应的陷波带通滤波器通过而不是已知陷波区域中所包含频率的陷波滤波器。

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_48068259/article/details/127781900