图像处理中的傅里叶变换和频率域滤波概念

2023-05-16

写在前面的话

 

作者是一名在读的硕士研究僧,方向是机器视觉。由于视觉是一门相对复杂的学科,作者在课堂上学到的东西只是非常浅显的内容,我们老师说是,领我们进了个门。现在打算利用图书馆和网络上的资源进行自学。由于是刚开始写自己的博客,并且所具备的专业知识非常的有限,难免有出错之处,如果有朋友发现一些毛病,希望能够指正。哈哈,话不多说,进入正题。 
作者使用的是冈萨雷斯的《数字图像处理(Matlab版)》,打算先用matlab先跟着书上的内容把代码先练一练。以后,再重新学习深入一些的知识。这里不会将书中的全部内容都列一遍,我会选择性的把重要的部分代实现。

频率域

在介绍频率域图像处理之前,先提几个问题。 
1.什么是频率域? 
2.为什么要在频率域中进行图像处理?

频率域的概念 
频率域是指从函数的频率角度出发分析函数,和频率域相对的是时间域。简单说就是如果从时间域分析信号时,时间是横坐标,振幅是纵坐标。而在频率域分析的时候则是频率是横坐标,振幅是纵坐标。 
举个例子,我们认为音乐是一个随着时间变化的震动。但是如果站在频域的角度上来讲,音乐是一个随着频率变化的震动,这样我们站在时间域的角度去观察你会发现音乐是静止的。同理,如果我们站在时间域的角度观察频率域的世界,就会发现世界是静止的,也是永恒的。这是因为在频率域是没有时间的概念的,那么也就没有了随着时间变化着的世界了。 
另外,我们需要借助傅立叶变换,才能够在得到函数在频率域中的信息。

为什么要在频率域中进行图像处理? 
1). 可以利用频率成分和图像外表之间的对应关系。一些在空间域表述困难的增强任务,在频率域中变得非常普通; 
2). 滤波在频率域更为直观,它可以解释空间域滤波的某些性质; 
3).可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为空间域滤波器的指导

傅里叶变换

谈到频率域,就不得不说傅里叶变换了。傅里叶是18世纪法国的一位伟大的数学家。他最大的贡献在于指出任何周期函数都可以表示为不同频率的正弦和或者余弦和的形式,每个正弦或者余弦乘以不同的系数(也就是被大家所熟知的傅里叶级数)。无论函数有多复杂,只要它是周期性的,并且满足一定的数学条件,就一定可以用这样的正弦和或者余弦和的形式来表示。甚至在有些情况下,非周期函数也可以用正弦和或者余弦和的形式来表示。用傅里叶级数或变换表示的函数特征可以完全通过傅里叶反变换来重建,而不会丢失任何信息。而正是所谓的“傅里叶变换”使得我们可以工作于频率域。

一维连续函数的fourier变换

这里写图片描述 
其中,f(x)表示原函数,F(u)表示变换之后的函数。u为频率域变量。这里写图片描述

一维连续函数的fourier反变换 
这里写图片描述 
这里写图片描述

。。。公式编辑有点小麻烦,暂时先用截图吧。请允许我小小的偷懒。。。

注意前面讲过任何周期函数都可以被写成若干个正弦波(余弦波)的叠加。为了便于理解,在网上找了几张图片。 
这里写图片描述 
第一幅图是一个郁闷的余弦波cos(x) 
第二幅图是2个卖萌的余弦波的叠加cos(x)+a.cos(3x) 
第三幅图是4个“可爱”的余弦波的叠加 
第四幅图是10个“难受”的余弦波的叠加 
随着余弦波数量逐渐的增长,最终叠加成一个标准的矩形,大家从中体会到了什么?

这里写图片描述 
这里写图片描述 
f为原图像, 傅里叶变换函数。傅里叶变换将函数的时域(红色)与频域(蓝色)相关联。频谱中的不同成分。频率在频域中以峰值形式表示。 
//这里原图是一幅动态图,想看效果的朋友,请自行google傅立叶变换,weki上有动态图。

二维离散傅立叶变换

图像尺寸为M*N的函数f(x,y)DFT为

这里写图片描述 
其中,u=0,1,2,…,M-1;v=0,1,2,…,N-1 
给出F(u,v)由反DFT反变换可得到f(x,y)

这里写图片描述

傅立叶变换的基本概念:

1.频谱

这里写图片描述 
2.相位角

这里写图片描述

傅立叶变换的性质:

  1. 共轭对称性

    如果f(x,y)是实函数,则它的傅里叶变换具有 共轭对称性

这里写图片描述 
2 . 周期性

这里写图片描述

复习:当两个复数实部相等,虚部互为相反数时,这两个复数叫做互为共轭复数.

周期性和共轭对称性 
对于一维变换F(u),周期性是指F(u)的周期长度为M,对称性是指频谱关于原点对称

这里写图片描述 
通过将原点的变换值移动到频率矩形的中心位置,可简化频谱的 
视觉分析。这可以通过在计算一维傅立叶变换之前将f(x)乘以 (-1)^x 来完成。

周期性和共轭对称性举例 
这里写图片描述 
通过将原点的变换值移动到频率矩形的中心位置,可简化频谱的视觉分析。这可以通过在计算二维傅立叶变换之前将f(x,y)乘以这里写图片描述![这里写图片描述来完成。 
3. 平均值

由二维傅里叶变换的定义

这里写图片描述 
所以在原点的傅立叶变换等于图像f(x,y)的平均灰度级 
4. 卷积定理

空间域和频率域的基础都是卷积定理

大小为M×N的两个函数f(x,y)和h(x,y)的离散卷积

这里写图片描述 
卷积定理

这里写图片描述 
说明 第一个表达式表明: 
两个空间函数的卷积可以通过计算两个傅立叶变换函数的乘积的逆变换得到。 
相反,两个空间函数卷积的傅立叶变换恰好等于两个函数的傅立叶变换的乘积

频率域滤波

低通滤波器:使低频通过而使高频衰减的滤波器 
1.被低通滤波的图像比原始图像少尖锐的细节部分而突出平滑过渡部分 
2.对比空间域滤波的平滑处理,如均值滤波器

高通滤波器:使高频通过而使低频衰减的滤波器 
1.被高通滤波的图像比原始图像少灰度级的平滑过渡而突出边缘等细节部分 
2.对比空间域的梯度算子、拉普拉斯算子

低通滤波器

这里写图片描述 
原图像的频谱 
这里写图片描述 
低通滤波器示意图 
这里写图片描述 
滤波效果 
这里写图片描述

说明:这里的低通滤波,意思就是把频率低的波留下,把频率高的波过滤掉。示意图是经过居中处理的频谱,就是从频谱的中心到四周频率由低到高。示意图表示的是,留下中间低频的,过滤点中心周围高频的部分。我们知道,低频对应的图像中变化不明显的部分,于是,图像就变的非常模糊。这在图像处理中也叫平滑滤波。再介绍一个概念:图像的锐化。就是与平滑化相对,即下面高通滤波器所达到的效果。很明显,图像边缘增强了。

高通滤波

 

原图 
这里写图片描述 
原图的频谱 
这里写图片描述 
高通滤波器示意图 
这里写图片描述 
效果图 
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像处理中的傅里叶变换和频率域滤波概念 的相关文章

  • C#对比图片相似度算法

    参考Neal Krawetz博士的这篇文章 实现这种功能的关键技术叫做 34 感知哈希算法 34 Perceptual Hash Algorithm 意思是为图片生成一个指纹 字符串格式 两张图片的指纹越相似 说明两张图片就越相似 但关键是
  • Opencv中Mat图的长、宽、行、列以及图像像素的概念问题

    在Opencv2中基本上都是用的Mat来表示图像了 xff0c C 43 43 的函数调用中基本上也都是Mat图 xff0c 从根本上说 xff0c 一张图像是一个由数值组成的矩阵 xff0c 矩阵的每一个元素代表一个像素 对于灰度图像而言
  • 2023Java最新真实面试题汇总(持续更新)

    一 面经 适当夸夸面试官 xff08 或所在公司 xff09 不会有坏处 如果某个问题完全不会 xff08 或稍微懂点 xff09 xff0c 直接承认 xff08 或略作回答 xff09 并把话题引导向类似话题 xff08 redis集群
  • Windows Media Foundation 音视频采集 小记

    写在前面 我是个讲文明的人 不过有的时候实在忍不住了也要吐槽几句 xff1a 1 我真是跟不上时代 xff0c 到现在了还在研究 Windows 应用开发 咳 xff1b 2 DirectShow 是傻X xff01 我只是想要获取 Cam
  • 关于C++中vector和set使用sort方法进行排序

    C 43 43 中vector和set都是非常方便的容器 xff0c sort方法是algorithm头文件里的一个标准函数 xff0c 能进行高效的排序 xff0c 默认是按元素从小到大排序 将sort方法用到vector和set中能实现
  • C#调用C++(opencv)中图片数据传递的问题

    C 43 43 DLL代码 xff1a C 代码 xff1a 课题需要做一个界面 xff0c 因为某些原因不能用emgucv xff0c 需要在C winform中调用opencv的方法 xff0c 用opencv处理图片之后再传回到C p
  • c#调用c++(Opencv)dll的实例

    c 43 43 代码 MYDLL int GetCenterPos uchar imageData int step int widthValue int heightValue int BinaryThreshold int LineBl
  • OpenCV图像锐化/增强

    OpenCV图像锐化 增强 0 综述 1 Laplacian高通滤波算子 2 Laplacian锐化代码实践 3 USM锐化增强算法 4 USM代码实践 0 综述 图像的卷积计算除了可以完成我们前面介绍的模糊去噪 边缘检测等任务外 xff0
  • OpenCV 图像清晰度评价算法(相机自动对焦)

    相机的自动对焦要求相机根据拍摄环境和场景的变化 xff0c 通过相机内部的微型驱动马达 xff0c 自动调节相机镜头和CCD之间的距离 xff0c 保证像平面正好投影到CCD的成像表面上 这时候物体的成像比较清晰 xff0c 图像细节信息丰
  • 图像清晰度评价15种方法对比

    在无参考图像的质量评价中 xff0c 图像的清晰度是衡量图像质量优劣的重要指标 xff0c 它能够较好的与人的主观感受相对应 xff0c 图像的清晰度不高表现出图像的模糊 本文针对无参考图像质量评价应用 xff0c 对目前几种较为常用的 具
  • opencv系列-图像清晰度评价

    opencv系列 图像清晰度评价 1 xff0c 换了opencv3 4 xff0c 用来测试 2 xff0c opencv好评呀 图像清晰度评价算法有很多种 xff0c 在空域中 xff0c 主要思路是考察图像的领域对比度 xff0c 即
  • 一种新的图像清晰度评价函数,数字图像清晰度评价函数的研究与改进

    摘要 xff1a 摘 要 xff1a 通过分析常见的图像清晰度评价函数 xff0c 针对自动对焦系统中图像清晰度评价问题 xff0c 提出了一种基于聚焦窗口的改进梯度评价函数算法 改进后的算法具有计算量小 实时性好 评价曲线单峰性好 灵敏度
  • 11种图像清晰度评价函数

    典型无参考图像清晰度评价 xff08 可用作对焦评价函数 xff09 Tenengrad评价函数 Tenengrad函数是一种由Tenenbaum提出的 xff0c 基于梯度的常用图像清晰度评价函数 特南梯度 在图像处理中 xff0c 一般
  • TouchGFX界面开发 | C++基础

    C 43 43 基础 TouchGFX是一个基于STM32硬件 xff0c 由C 43 43 写成的软件框架 xff0c 所以有必要对C 43 43 基础有一定的了解 一 C 43 43 新特性 C 语言里 xff0c 变量初始化必须在程序
  • 一种新的图像清晰度评价函数

    自动聚焦是机器人视觉 数字视频系统中的关键技术之 是决定图像质量的重要因素 是获取清晰图 像的第1步 聚焦性能取决于调焦评价函数的准确性和有效性 即评价函数必须具有无偏性好 单峰性强和 较好的抗噪性能 图像模糊的本质是高频分量的损失 聚焦图
  • 遍历Opencv中Mat中每个像素的值

    首先 xff0c 在Opencv2中基本上都是用的Mat来表示图像了 xff0c C 43 43 的函数调用中基本上也都是Mat图 xff0c 从根本上说 xff0c 一张图像是一个由数值组成的矩阵 xff0c 矩阵的每一个元素代表一个像素
  • 遍历opencv中的mat像素的几种方法和概念

    今天在看矩形滤波的时候忽然脑子短路 xff0c 把一些概念全弄混了 xff0c 现总结一下 xff0c 以便下次再混的时候可以参考确认下 xff0c 自己的理解 xff0c 有错的地方还请指正 首先 xff0c 在Opencv2中基本上都是
  • C#中的Lock锁深入理解

    lock语句 lock 语句获取给定对象的互斥 lock xff0c 执行语句块 xff0c 然后释放 lock 持有 lock 时 xff0c 持有 lock 的线程可以再次获取并释放 lock 阻止任何其他线程获取 lock 并等待释放
  • C#四种相等性判断方法 equals,referenceEquals

    C 中的ReferenceEquals Equals以及 61 61 C 中有一共有四种相等性判断方法 xff1a Object中定义的三个方法 public static bool ReferenceEquals object objLe
  • C++的Opencv动态库遇到的问题

    1 c 中的位图传入时注意bitmapdata的 stride这个参数 xff0c 步幅 xff0c 图像宽度 通道数 xff0c 必须是整4的倍数貌似 xff0c 待确定 2 某个对象正在在使用的异常 xff0c 用lock锁锁住共享资源

随机推荐

  • C#内存分配概念

    在C 中 xff0c 内存分成5个区 xff0c 他们分别是堆 栈 自由存储区 全局 静态存储区和常量存储区 栈 xff0c 就是那些由编译器在需要的时候分配 xff0c 在不需要的时候自动清楚的变量的存储区 里面的变量通常是局部变量 函数
  • C#中Marshal 类的内存操作的一般功能概述

    Marshal 类的内存操作的一般功能 Marshal类 提供了一个方法集 xff0c 这些方法用于分配非托管内存 复制非托管内存块 将托管类型转换为非托管类型 xff0c 此外还提供了在与非托管代码交互时使用的其他杂项方法 命名空间 Sy
  • C# Marshal的使用,非托管内存中分配内存注意的问题

    IntPtr ptr 61 Marshal AllocHGlobal 704 576 3 如果没有手动释放内存 xff0c 会有内存溢出 xff1b 发生OutOfMemoryException 没有足够的内存继续执行程序时引发的异常 调用
  • Lock锁的问题

    多个线程共用一个锁时 xff0c 同一时间只有一个可获得锁执行 xff0c 其他线程会阻塞进入队列 xff0c 按理解事件如果是多线程的 xff0c 那么每次事件触发的含lock的函数都会将进入队列等待 xff0c 越排越多 需待实验证明
  • SVN的Status字段含义小记

    执行SVN up和svn merge等命令出现在首位置的各字母含义如下 xff1a 无修改 A 新增 C 冲突 D 删除 G 合并 I 忽略 M 改变 R 替换 X 未纳入版本控制 xff0c 但被外部定义所用 未纳入版本控制 该项目已遗失
  • c#中在工作线程创建窗体并操作

    实例1 public void CycleShow 循环绘图 Task Factory StartNew 61 gt threadB 61 new Thread 61 gt AllDealWithSpectrumDicSingle Clea
  • c#绘制星图靶标实例

    public partial class Form2 Form public Form2 InitializeComponent private void button1 Click object sender EventArgs e Ta
  • C#工作线程创建窗体及绘制星图实例

    public partial class Form2 Form public Form2 InitializeComponent private void button1 Click object sender EventArgs e Ta
  • 委托事件的线程问题

    事件注册方法或委托后 xff0c 事件所在的线程执行注册的方法或委托 xff0c 所以如果方法中有跨线程控件就需要使用invoke等处理
  • 怎么判断应用程序是多少位运行的

    C 中 int bitSize 61 IntPtr Size 指针多少字节 if bitSize 61 61 8 MessageBox Show 34 64位程序 34 else if bitSize 61 61 4 MessageBox
  • 图像的色彩类别,灰度化,二值化

    灰度化 xff1a 在RGB模型中 xff0c 如果R 61 G 61 B时 xff0c 则彩色表示一种灰度颜色 xff0c 其中R 61 G 61 B的值叫灰度值 xff0c 因此 xff0c 灰度图像每个像素只需一个字节存放灰度值 xf
  • 服务器与客户端概念

    比如说 xff0c 你浏览百度的网页 xff0c 你的电脑就是客户端 xff0c 而百度网页所存放的机器就是服务器 你通过internet互联网连到百度网页服务器 xff0c 才能浏览网页 再比如说 xff0c 你玩网络游戏 xff0c 你
  • 图像灰度图,直方图,像素通道问题

    1 图像直方图概述 直方图广泛运用于很多计算机视觉运用当中 xff0c 通过标记帧与帧之间显著的边缘和颜色的统计变化 xff0c 来检测视频中场景的变化 在每个兴趣点设置一个有相近特征的直方图所构成 标签 xff0c 用以确定图像中的兴趣点
  • 深入浅出的讲解傅里叶变换(真正的通俗易懂)

    我保证这篇文章和你以前看过的所有文章都不同 xff0c 这是 2012 年还在果壳的时候写的 xff0c 但是当时没有来得及写完就出国了 于是拖了两年 xff0c 嗯 xff0c 我是拖延症患者 这篇文章的核心思想就是 xff1a 要让读者
  • 理解图像傅里叶变换的频谱图

    很多人都不了解图像 xff08 二维 xff09 频谱中的每一点究竟代表了什么 xff0c 有什么意义 一句话解释为 xff1a 二维频谱中的每一个点都是一个与之一 一对应的二维正弦 余弦波 视觉的优势永远大于其他器官对人的作用 xff0c
  • 机器视觉自动数据标注方法

    目录 一 背景阅读 个人总结 xff1a xff08 半 xff09 自动数据标注的方法基本都是采用类似的思路 xff0c 即通过少量标注数据进行训练后得到一个预训练模型 xff0c 然后再次基础上对该网络的输出结果进行人工核验 xff0c
  • 理解图像的傅里叶变换

    最近在看图像的傅里叶变换 xff0c 看着频谱图一直没看明白到底为啥是那样的 xff0c 跟同学研究了好久 xff0c 终于想明白了 感谢同学的耐心指导 xff01 大家相互讨论真的很快就能出结果 xff0c 多讨论 xff0c 多学习 图
  • 快速傅里叶变换(FFT)详解

    快速傅里叶变换 xff08 FFT xff09 详解 xff08 这是我第一次写博 xff0c 不喜勿喷 xff09 关于FFT已经听闻已久了 xff0c 这次终于有机会在Function2的介绍下来了解一下FFT了 快速傅里叶变换 Fas
  • 图像处理:如何理解傅里叶变换在图像处理中的应用

    声明 xff1a 这篇文章的主要目的是通过建立一维傅里叶变换与图像傅里叶变换中相关概念的对应关系来帮助读者理解图像处理中的离散傅里叶变换 xff0c 因此 xff0c 理解图像中离散傅里叶变换的前提条件是读者需要了解一维傅里叶变换的基本知识
  • 图像处理中的傅里叶变换和频率域滤波概念

    写在前面的话 作者是一名在读的硕士研究僧 xff0c 方向是机器视觉 由于视觉是一门相对复杂的学科 xff0c 作者在课堂上学到的东西只是非常浅显的内容 xff0c 我们老师说是 xff0c 领我们进了个门 现在打算利用图书馆和网络上的资源