opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒
# opencv笔记5:频域和空域的一点理解
空间域和频率域
傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决定。因为积分后左边剩下的为一变量是频率,所以我们说傅立叶变换域是频率域。
(《数字图像处理》冈萨雷斯,中文第三版P128)
当变量t用于说明图像时,我们一般将变量t的域称为空间域。
按《图像处理》(章毓晋)的理解,首先是认同模板操作的,然后借助卷积定理,将模板操作转化为傅立叶的乘积,也就是图像的傅立叶结果F(u,v)与转移函数H(u,v)相乘。
这个方向上看是OK的,无论是推导证明,还是物理意义。但是反过来呢?图像的傅立叶F与转移函数H相乘,这本身有什么意义吗?
===
并不需要考虑频率域中傅立叶F和转移函数H相乘的含义。我们就从模板操作考虑就好了。模板操作,就是说用模板框定的范围内的像素点,来更新当前点的灰度值。
更性的时候,有个问题:为什么(空间域的)高斯滤波又叫高斯模糊?所谓模糊不就是平滑的意思吗?平滑和锐化是相对的,平滑可以理解为“去除高频分量”,这不就是在说低通滤波
吗?也就是(模糊<=>平滑<=>去除高频分量<=>低通滤波)
,这几个概念是等价的。那么,高斯滤波为什么算是低通滤波呢?
再观察几个其他的空间域滤波模板,比如平均模糊,就又一个更大的疑问:模板矩阵中元素都为正数,这是低通滤波(平滑、模糊操作)的特性吗?
是的。But why?这可以从频率域相关公式推导出来:频率域的高斯低通滤波器H(u),用反傅立叶变换得到的空间域相应的低通滤波器h(x),发现它们的取值都是正的。因此,使用一个全部带正系数的模板就可以在空间域中实现低通滤波。
同时还有另一个结论:空间域模板尺寸越大,模糊的就越厉害。
(具体细节,参考冈萨雷斯《数字图像处理》第三版中文翻译本,P167~168)
类似地,用两个高斯函数做差,其结果是一个高斯高通滤波器H(u),用反傅立叶变换得到的空间域相应的低通滤波器h(x),观察h(x)图像发现中间为正,两边是负的。这说明:频域空间高通滤波器对应的空间域高通滤波器的模板,其系数是:锚点(也就是中心点)是正的,其他点是负的或者是0(4邻域和8邻域还是有点不同的)
我认为看频域滤波的目的,就是了解以上两条结论。
当然,上述两条结论的推导中,还有点小疑问。为什么高斯函数它就是低通滤波器?
因为是H(u)和F(u)相乘,所以观察H(u)的图像就好了。发现低通滤波的H(u)图像,都是中间有隆起,两边衰减。那么相乘的效果就是,中心附近的F(u)会被放大(其实不会放大,因为H(u)中心取值都是1,其他地方都小于1)、保留,就算是衰减,也是从中心往四周衰减的。也就是说,距离H(u)的中心越远,衰减越厉害。那么这个距离,和频率是什么关系?
前面看到,u表示频率。这里其实图像是二维的,准确讲应该是使用H(u,v)和F(u,v),即u,v都是频率。那么(u,v)
元组之间的大小关系,就使用距离来衡量了,也就是“点到点之间的距离”,那么所谓“低频”就是指“那些到中心点(u0,v0)的距离小的点(u,v)”,这些(u,v)
点对应的傅立叶函数值F(u,v),是需要保留的低频分量
。
ref:《数字图像处理》冈萨雷斯,中文第三版
opencv笔记5:频域和空域的一点理解的更多相关文章
- opencv笔记4:模板运算和常见滤波操作
time:2015年10月04日 星期日 00时00分27秒 # opencv笔记4:模板运算和常见滤波操作 这一篇主要是学习模板运算,了解各种模板运算的运算过程和分类,理论方面主要参考<图像工 ...
- opencv笔记6:角点检测
time:2015年10月09日 星期五 23时11分58秒 # opencv笔记6:角点检测 update:从角点检测,学习图像的特征,这是后续图像跟踪.图像匹配的基础. 角点检测是什么鬼?前面一篇 ...
- OpenCV笔记大集锦(转载)
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- opencv笔记3:trackbar简单使用
time:2015年 10月 03日 星期六 13:54:17 CST # opencv笔记3:trackbar简单使用 当需要测试某变量的一系列取值取值会产生什么结果时,适合用trackbar.看起 ...
- opencv笔记2:图像ROI
time:2015年 10月 03日 星期六 12:03:45 CST # opencv笔记2:图像ROI ROI ROI意思是Region Of Interests,感兴趣区域,是一个图中的一个子区 ...
- opencv笔记1:opencv的基本模块,以及环境搭建
opencv笔记1:opencv的基本模块,以及环境搭建 安装系统 使用fedora22-workstation-x86_64 安装opencv sudo dnf install opencv-dev ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- iOS 的一点理解(一) 代理delegate
做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...
- 关于web开发的一点理解
对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端 服务端通过解析报文并处理报文最后把处理的结果 ...
随机推荐
- java 19 -13 FIle类的一些方法2
package zl_file; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; ...
- java12-6 冒泡排序法和选择排序法
1.冒泡排序法 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 分析: 第一次比较排序的结果:会把其中最大的数据排到最大的索引处 第二次比较排序后的结果:因为第一次已经把最大的一个 ...
- Android SQLite (四 ) 全面详解(二)
SQLite创建数据库 创建数据库语法: sqlite3 DatabaseName.db 如下展示一个实例: SQLite附加数据库 假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何 ...
- 第三方登录之qq登录(转载)
iOS QQ第三方登实现 我们经常会见到应用登陆的时候会有QQ,微信,微博等的第三方登陆 如图: 下面我们主要讲一下qq的第三方登陆如何实现 首先,到官网注册: http://wiki.conne ...
- 爆炸吧 js dom ---------> boom
dom-> html css 事件 元素 eventlistener HTML 事件的例子: 当用户点击鼠标时 当网页已加载时 当图像已加载时 当鼠标移动到元素上时 当输入字段被改变时 当提交 ...
- 记录linux系统下所有用户的操作信息
在日常运维中,我们需要清楚服务器上每个用户登录后都做了哪些操作,我们需要记录下每个用户的操作命令.下面的内容设置可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并 ...
- 16SpringMvc_在业务控制方法中写入User,Admin多个模型收集参数——引出问题
上面文章时普通的业务那个方法中收集一个实体类,这篇文章想收集两个实体类. 文本要做的是:在person.jsp页面上,有两个表单.分别是普通用户和管理员用户的表单(普通用户的表单和管理员用户的表单里面 ...
- RDLC系列之五 初试XAML
本章只讲解xaml部分,其余都和winform下一样 1.xaml代码 <Window x:Class="RDLC.WPF.MainWindow" xmlns="h ...
- Android中的IMEI
国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)是区别移动设备的标志,储存在移动设备中,可用于监控被窃或无效的移 ...
- scala学习之第三天:数组的特性与使用技巧
1.数组 Scala数组与Scala序列是兼容的 - 在需要Seq[T]的地方可由Array[T]代替.最后,Scala数组支持所有的序列操作. 隐式转换 方法1:通过scala.collection ...