在前两篇文章中,我们实现了图像的离散傅里叶变换与反变换,而这正是对图像频率域进行处理的前提。接下来这篇文章打算在已有工作的基础上实现高斯滤波器,对图像进行简单的频率域滤波。


一、频率域滤波基础

在上一篇关于FFT的文章中已经介绍到,相比于核数较大的空间域滤波来说,频率域滤波有着明显的优势。此外,频率域还有一些其他特性,如远离变换的原点时,低频对应于图像中变化缓慢的灰度分量;而更加远离原点时,较高的频率开始对应于图像中越来越快的灰度变化,它们是图像中由灰度急剧变化表征的物体边缘或其他分量。正是这些特性,能够让我们得到一些试验性的结果,后面我们可以看到。

那么如何进行频率域滤波呢。一般来说,其步骤是先修改一幅图像的傅里叶变换,然后计算其反变换,得到处理结果的空间域表示。因此,若已知大小为像素的一幅(经过填充的)数字图像,则我们感兴趣的基本滤波公式为

式中,是IDFT,是输入图像的DFT,是滤波器传递函数(更常称滤波器或滤波器函数),是滤波后的(输出)图像。

简单来说,频率域的滤波过程可以总结为以下几步:1、进行傅里叶变换及中心化;2、构建一个传递函数;3、采用对应元素相乘得到;4、反变换得到滤波后的图像(注意这个仅是简化的步骤,在冈萨雷斯一书中,完整的步骤还包括处理前对图像进行填充以及处理后重新提取出来)。下面的代码展示了这个过程,FFT和IFFT使用的都是上一篇文章中我们自己实现的函数,可以点击这里了解。

#实现滤波
def filter(img, trans):#先转换至频域并中心化F = fft_2d(img)F_shift = fshift(F)#与传递函数对应元素相乘F_trans =  F_shift * trans#进行逆变换并得到实部img_out = np.abs(ifft_2d(ifshift(F_trans)))return img_out

二、高斯低通滤波器

可以看到,前面我们早就实现了傅里叶变换及反变换,现在最主要的问题就是构建滤波器函数。首先介绍低通滤波器,图像中的边缘和其他急剧的灰度变化(如噪声)主要影响其傅里叶变换的高频内容。因此,在频率域中时通过衰减高频(即低通滤波)来实现平滑模糊的。高斯低通滤波器(GLPF)传递函数有如下形式:

式中,频率矩阵中心到矩阵中包含的任意一点的距离。是截止频率,当时,GLPF传递函数下降到其最大值1.0的0.607。下面显示了一个GLPF传递函数的透视图、图像和径向剖面。

(a)一个GLPF传递函数的透视图;(b)以图像形式显示的函数;(c)不同D值的径向剖面

根据公式,代码实现如下。

#计算高斯低通滤波器的传递函数
def GLPF(h, w, D):#获取索引矩阵及中心点坐标x, y = np.mgrid[0:h, 0:w]center = (int((h-1)/2), int((w-1)/2))#计算中心距离矩阵dis_square = (x-center[0])**2 + (y-center[1])**2#计算变换矩阵transfor = np.exp(- dis_square / (2*D**2))return transfor

三、高斯高通滤波器

前面说过,衰减图像的傅里叶变换中的高频分量可以平滑图像。因为边缘和其他灰度的急剧变化与高频分量有关,因此可在频率域中通过高通滤波来实现图像锐化,高通滤波衰减傅里叶变换中的低频分量而不干扰高频信息。

高通滤波器的实现非常简单,在频率域中用1减去低通滤波器传递函数即可得到:

式中,是低通滤波器的传递函数。因此,可得高斯高通滤波器(GHPF)的传递函数为

同样,下面展示了一个GHPF的透视图、图像和径向剖面。

(a)透视图;(b)图像;(c)径向剖面

下面是GHPF的代码实现,可以看到只是最后用1减去了GLPF。

#计算高斯高通滤波器的传递函数
def GHPF(h, w, D):#获取索引矩阵及中心点坐标x, y = np.mgrid[0:h, 0:w]center = (int((h-1)/2), int((w-1)/2))#计算中心距离矩阵dis_square = (x-center[0])**2 + (y-center[1])**2#计算变换矩阵transfor = 1 - np.exp(- dis_square / (2*D**2))return transfor

四、效果展示

展示下实验效果,用两张不同的图片分别测试了原图以及值为2、5、10、20、50时两个滤波器的效果,可以明显看出低通滤波器能够使图像变得模糊平滑,而高通滤波器则是能够锐化图像。

使用高斯低通滤波器的实验效果:
(a)原图;(b)D值为2;(c)D值为5;(d)D值为10;(e)D值为20;(f)D值为50

使用高斯高通滤波器的实验效果:
(a)原图;(b)D值为2;(c)D值为5;(d)D值为10;(e)D值为20;(f)D值为50

五、多说两句

到此为止,我想写的关于图像处理领域的文章就写完了,后面这个专栏不会再更新了(大概),毕竟不管怎么说,图像处理也并不是我的兴趣领域。但如果后面同学有希望我介绍的东西,也可以私信或者发在评论区,我可以尽力去尝试一下。最后,这篇文章也参考了《冈萨雷斯 数字图像处理(第四版)》一书,感谢前辈大佬的总结。

图像频域处理之高斯滤波器相关推荐

  1. 图像变换及频域滤波(高斯滤波,巴特沃兹滤波器,高斯滤波器)

    \ 实验目的: 1.掌握怎样利用傅立叶变换.DCT进行频域滤波 2.掌握频域滤波的概念及方法 3.熟练掌握频域空间的各类滤波器 4.利用MATLAB程序进行频域滤波 实验原理: 频域滤波分为低通滤波和 ...

  2. ITK:带有离散高斯滤波器的平滑图像

    ITK:带有离散高斯滤波器的平滑图像 内容提要 C++实现代码 内容提要 使用离散高斯滤波器对图像进行平滑处理. C++实现代码 #include "itkImage.h" #in ...

  3. 图像处理-高斯滤波器与图像的关系

    1.概念: 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程.通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平 ...

  4. Python先生,你好!(5)——使用高斯滤波器提取图像特征

    Python先生,你好!(5)--使用高斯滤波器提取图像特征 (一)前 言 (二)高斯滤波器的python实现 (三)总 结 (一)前 言 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图 ...

  5. 理想低通滤波器、Butterworth滤波器和高斯滤波器

    一.简介 我们知道,在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓.而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分). 低频滤波器,顾 ...

  6. 理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)

    一.简介 我们知道,在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓.而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分). 低频滤波器,顾 ...

  7. 理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)1

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/cjsh_123456/article/details/79342300 一.简介 我们知道,在一幅图 ...

  8. 第四章 图像频域滤波

    本章主要内容为二维傅立叶变换及其反变换,频域平滑滤波器.频域锐化滤波器,以及同态滤波器的相关介绍. 本章要求重点掌握图像频域滤波的基本流程及表示:二维离散傅里叶变换的表示及特点:频域平滑滤波器的基本原 ...

  9. python一维平滑滤波_高斯滤波器的原理及其实现过程(附模板代码)

    本文主要介绍了高斯滤波器的原理及其实现过程高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像.其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出.其窗口模板的系数和均值滤波器不同 ...

  10. 5.14 图像频域处理

    5.14 图像频域处理 在图像处理和分析中,经常会将图像从图像空间转换到其他空间中,并利用这些空间的特点进行对转换后图像进行分析处理,然后再将处理后的图像转换到图像空间中,这称之为图像变换.在一些图像 ...

最新文章

  1. 脚本化 tmux — LinuxTOY
  2. Solaris和Linux的比较、区别、异同云云。。。
  3. SAP PM 初级系列22 - IW38可以批量处理维修工单
  4. 内存屏障在硬件层面的实现原理
  5. 基站的结构、种类、发展介绍
  6. 使用 kafka 提升你的订单接口吞吐量
  7. Tomcat--HTTPS的简单应用
  8. (48)System Verilog 类中变量随机激励数组数据
  9. Linux下安装memcache以及扩展
  10. (转)Hibernate关联映射——一对多(多对一)
  11. mac电脑查看sublime text安装位置和复制文件路径方法:
  12. eclipse 使用svn导入web项目
  13. Linux源码安装pgadmin4,linux安装pgadmin3
  14. STM32串口通信简介
  15. numpy 矩阵运算
  16. python 16进制转中文_求助~ 16进制数据转不了汉字
  17. 【网络爬虫与信息提取】信息的组织与提取
  18. FPGA两片RAM的乒乓操作
  19. 腾讯校招软件测试工程师题库
  20. 赴美工作常识(Part 5 - 绿卡优先级)

热门文章

  1. 820操作系统(2)进程管理
  2. java合并pdf 追加页数_使用IText API将页码添加到具有不同页面大小的合并PDF
  3. JAVA - 根据文件链接将文件下载保存到本地
  4. android与单片机wifi通信原理图,基于单片机的wifi模块原理图分析
  5. jQuery 版本升级迁移
  6. 阿里银泰集团物业预付费系统项目的设计与应用
  7. java毕业设计——基于java+JSP+MySQL的网上订餐管理系统设计与实现(毕业论文+程序源码)——网上订餐管理系统
  8. Ebbinghaus English Memory ( 艾宾浩斯英语记忆 ) 程序 之 设计思路 与 代码实现
  9. 看完左耳朵耗子的116篇文章,我给自己定了个5年技术规划
  10. IEEE1588v2解析(1)--同步的概念