频域低通滤波

低通滤波器的功能是削弱或消除高频分量而保留低频分量。

理想低通滤波器

理想低通滤波器,模拟上容易实现,物理上无法实现。

转移函数定义:
H(u,v)={1,D(u,v)<=D00,D(u,v)>D0H(u, v) = \left\{\begin{aligned} & 1, D(u, v) <= D_0 \\ & 0,D(u, v) > D_0 \end{aligned}\right.H(u,v)={​1,D(u,v)<=D0​0,D(u,v)>D0​​

  • D(u,v)D(u, v)D(u,v) : 是点(u, v)到频率平面原点的距离,也就是点(u,v)到频谱中心的欧氏距离。
  • D0D_0D0​ : 带通半径。

巴特沃斯低通滤波器

巴特沃斯低通滤波器是物理上可实现的,高低频之间的过渡比较平滑。

转移函数定义为:

H(u,v)=11+[D(u,v)D0]2nH(u, v) = \frac{1}{1 + \Big[\frac{D(u, v)}{D_0}\Big]^{2n}}H(u,v)=1+[D0​D(u,v)​]2n1​

  • D0D_0D0​ : 常用的截断频率为:Dmax(u,v)×12D_{max}(u, v) \times \frac{1}{\sqrt{2}}Dmax​(u,v)×2​1​

高斯低通滤波器

H(u,v)=e−D(u,v)22D02H(u, v) = e^{\frac{-{D(u, v)}^2}{2{D_0}^2}}H(u,v)=e2D0​2−D(u,v)2​

Opencv+Numpy实现低通滤波

import cv2 as cv
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
img = cv.imread('./images/kxxx.png')
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)
img_gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY)

测试用例(美剧杀出个黎明):

傅里叶变换:

dft = cv.dft(img_gray.astype('float32'),flags = cv.DFT_COMPLEX_OUTPUT)           # 傅里叶变换(Opencv是用深度为2数组表示复数)
dft_shift = np.fft.fftshift(dft)                                                 # 移动零频分量
magnitude_spectrum = cv.magnitude(dft_shift[:,:,0], dft_shift[:,:,1])
log_magnitude_spectrum = 20*np.log(magnitude_spectrum)  # 幅值对数变换

理想LPF

H(u,v)={1,D(u,v)<=D00,D(u,v)>D0H(u, v) = \left\{\begin{aligned} & 1, D(u, v) <= D_0 \\ & 0,D(u, v) > D_0 \end{aligned}\right.H(u,v)={​1,D(u,v)<=D0​0,D(u,v)>D0​​

def lpf(dft_shift, r=100):m, n, _ = dft_shift.shapecenter = (m//2, n//2)mask = np.zeros_like(dft_shift)x_arr = np.concatenate([np.arange(m).reshape(m, 1)], axis=1)y_arr = np.concatenate([np.arange(n).reshape(1, n)], axis=0)dist = np.sqrt((x_arr - center[0])**2 + (y_arr - center[1])**2)mask[dist <= r] = 1return mask
huv = lpf(dft_shift)                        # 转移函数(算子/模)
lpf_dft_shift = dft_shift * huv             # 低通滤波
lpf_magnitude_spectrum = cv.magnitude(lpf_dft_shift[:,:,0], lpf_dft_shift[:,:,1])
log_lpf_magnitude_spectrum = 20*np.log(lpf_magnitude_spectrum+1) # 幅值对数变换
lpf_dft = np.fft.ifftshift(lpf_dft_shift)         # 还原频谱图
img_ = cv.idft(lpf_dft)                           # 逆傅里叶变换
img_lpf = cv.magnitude (img_[:,:,0],img_[:,:,1])  # 还原图像

理想转移函数

滤波效果:

巴特沃斯低通滤波

H(u,v)=11+[D(u,v)D0]2nH(u, v) = \frac{1}{1 + \Big[\frac{D(u, v)}{D_0}\Big]^{2n}}H(u,v)=1+[D0​D(u,v)​]2n1​

def bw_lpf(dft_shift, r=100, N=1):m, n, _ = dft_shift.shapecenter = (m//2, n//2)mask = np.ones_like(dft_shift)x_arr = np.concatenate([np.arange(m).reshape(m, 1)], axis=1)y_arr = np.concatenate([np.arange(n).reshape(1, n)], axis=0)dist = np.sqrt((x_arr - center[0])**2 + (y_arr - center[1])**2).reshape(m, n, 1)mask = 1/(1+(dist/r)**(2*N))return mask

巴特沃斯转移函数


高斯低通滤波

H(u,v)=e−D(u,v)22D02H(u, v) = e^{\frac{-{D(u, v)}^2}{2{D_0}^2}}H(u,v)=e2D0​2−D(u,v)2​

def gaussian_lpf(dft_shift, r=100):m, n, _ = dft_shift.shapecenter = (m//2, n//2)x_arr = np.concatenate([np.arange(m).reshape(m, 1)], axis=1)y_arr = np.concatenate([np.arange(n).reshape(1, n)], axis=0)dist_square = np.sqrt((x_arr - center[0])**2 + (y_arr - center[1])**2).reshape(m, n, 1)mask = np.exp(-1*dist_square/(2*r*r))return mask

高斯转移函数

从测试的结果可以看出,在屏蔽部分高频分量后,图像开始变得有些模糊。以及在相同的带通半径下,巴特沃斯滤波器最接近理想低通滤波器。

图像频域增强:低通滤波器相关推荐

  1. 数字图像处理——图像频域增强

    图像几何变换 图像频域增强 图像变换的目的 傅里叶变换 空间频率的理解 如何看频谱图 从频域变回空间域 图像频域增强 图像变换是图像频域增强技术的基础,也是变换域分析理论的基础,图像频域增强基于图像信 ...

  2. 数字图像处理实验四图像频域增强

    一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法. (2)熟练掌握低通.高通.带通.同态滤波器的使用方法,明确不同性质的滤波器对图像的影响 ...

  3. 5.14 图像频域处理

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

  4. 第四章 图像频域滤波

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

  5. 【一文了解】经典图像的增强方法都有些什么?什么又是振铃现象?为什么图像会产生噪声?噪声又有什么分类?

    CV_07 图像增强 & 图像噪声 一. 什么是图像增强? 图像增强其实就是有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征.扩大图像中不同物体特征之间的差别 ...

  6. C语言数字图像处理---2.5图像频域滤波

    上一小节我们介绍了图像频域变换,本小节将以此为基础,介绍图像频域滤波的相关内容,包含常见高通/低通/带通/带阻/方向滤波等频域滤波方法,同时以C语言编码实现,帮助初学者理解和掌握如何进行图像的频域滤波 ...

  7. 图像空域增强技术及联合运用

    实验内容: 1.从硬盘中读取需进行增强的人体骨骼图像; 2.求原图像的Laplacian变换,对图像进行锐化处理; 3.用Sobel算子计算原图像的梯度图像; 4.图像的算术运算,包括加和乘; 5.图 ...

  8. 图像增强三大类别:点增强、空域增强、频域增强

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 图像增强是图像模式识别中非常重要的图像预处理过程.图像增强的目的是 ...

  9. 一种基于灰度映射以及直方图规定化的遥感图像对比度增强技术研究

    目录 一.绪论 二.基于灰度映射的对比度增强技术 2.1 线性映射 2.2 动态范围压缩 2.3 Gamma校正 2.4 对比度增强实例分析 三.基于直方图的对比度增强技术 3.1 直方图均衡化 3. ...

  10. 10句话读懂图像频域滤波——不能不知道的信号与系统基本理论

    10句话读懂图像频域滤波--不能不知道的信号与系统基本理论 今天的图像处理依靠各类方便易用的工具箱与函数库似乎已然成为上手就能用的应用科学.但没有那种算法是普适的,知其所以然才能真正理解原理,深刻的理 ...

最新文章

  1. KVM虚拟机安装与使用
  2. Sticker.js生成图片或者页面元素“速干贴”效果
  3. `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
  4. 成功解决C4996: ‘fopen‘: This function or variable may be unsafe. Consider using fopen_s instead
  5. 工作日志之个人统计篇
  6. [Angularjs]锚点操作服务$anchorScroll
  7. 如何配置DDS以使用多个网络接口?How do I configure DDS to work with multiple network interfaces?
  8. CPU 可以跑多快?地球到火星的距离告诉你!
  9. linux系统电脑白屏,在Deepin Linux 15.7系统中换桌面后关机界面白屏的解决
  10. Keras——用Keras搭建RNN回归循环神经网络
  11. java云购_ycyg: 源创元购,一元云购java springmvc版本 云购商城 开源一元云购 开源java商城...
  12. 阿帕奇web服务器 java_WEB服务器搭建(Apache+Tomcat+eclipse)
  13. 【腾讯云】企业认证题库200题
  14. 全球最好听、最值得听的100首英文歌曲。(每首都有下载地址)
  15. python软件电脑配置要求-Python实现的读取电脑硬件信息功能示例
  16. 游戏c是什么网络语言,游戏cpdd网络用语是什么意思 王者荣耀里很常见
  17. AJAX与JavaScript脚本语言
  18. Podman 部署私有镜像仓库
  19. Latex入门篇之论文排版
  20. 贝拉博客,一个屌丝网站

热门文章

  1. 大话数据结构学习笔记-第三章线性表
  2. springboot整合PageHelper实现分页效果
  3. 内部比较器:Comparable的定义使用
  4. c段服务器维护,服务器 多c段
  5. ios 自制framework遇到 _OBJC_CLASS_$_XXX, referenced from:
  6. 响应式编程笔记三:一个简单的HTTP服务器
  7. [Scikit-learn教程] 03.02 文本处理:分类与优化
  8. 视频直播技术(三):低延时直播经验总结
  9. ffmpeg-20160714-git-bin.7z
  10. git 遇到fatal:multiple stage entries for merged file