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:频域和空域的一点理解的更多相关文章

  1. opencv笔记4:模板运算和常见滤波操作

    time:2015年10月04日 星期日 00时00分27秒 # opencv笔记4:模板运算和常见滤波操作 这一篇主要是学习模板运算,了解各种模板运算的运算过程和分类,理论方面主要参考<图像工 ...

  2. opencv笔记6:角点检测

    time:2015年10月09日 星期五 23时11分58秒 # opencv笔记6:角点检测 update:从角点检测,学习图像的特征,这是后续图像跟踪.图像匹配的基础. 角点检测是什么鬼?前面一篇 ...

  3. OpenCV笔记大集锦(转载)

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

  4. opencv笔记3:trackbar简单使用

    time:2015年 10月 03日 星期六 13:54:17 CST # opencv笔记3:trackbar简单使用 当需要测试某变量的一系列取值取值会产生什么结果时,适合用trackbar.看起 ...

  5. opencv笔记2:图像ROI

    time:2015年 10月 03日 星期六 12:03:45 CST # opencv笔记2:图像ROI ROI ROI意思是Region Of Interests,感兴趣区域,是一个图中的一个子区 ...

  6. opencv笔记1:opencv的基本模块,以及环境搭建

    opencv笔记1:opencv的基本模块,以及环境搭建 安装系统 使用fedora22-workstation-x86_64 安装opencv sudo dnf install opencv-dev ...

  7. 对socket的一点理解笔记

    需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...

  8. iOS 的一点理解(一) 代理delegate

    做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...

  9. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

随机推荐

  1. JS的构造及其事件注意点总结

    一:js的组成 ECMAscript bom dom 类型包括: number boolean  string undefined  object function 二:基本函数作用 parseInt ...

  2. AC日记——过河卒 洛谷 1002

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  3. android studio 中的编码问题

    在 Android studio 中直接创建项目和导入其他项目都会有一个文件编码设定的问题,在 android studio (version 1.2.0)中设置文件的编码,只需要两步: 1.打开Se ...

  4. laravel记录

    1.使用数据库事务的时候需要传递参数,使用了use关键字,否则的话传递不进去,代码如下: public function postVote(Request $request){ $data = $re ...

  5. 13Spring_AOP编程(AspectJ)_后置通知

    后置通知和前置通知差不多.最大的特点是因为后置通知是运行在目标方法之后的,所以他可以拿到目标方法的运行的结果. 给出案例: 案例结构图:

  6. 10301 MySQL各个版本区别及下载

    参考:http://www.admin10000.com/document/62.html MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会 ...

  7. HTML5新特性及详解

    什么是HTML5:HTML5 是下一代的HTML,将成为 HTML.XHTML 以及 HTML DOM 的新标准. 为 HTML5 建立的一些规则: 新特性应该基于 HTML.CSS.DOM 以及 J ...

  8. Jdeveloper 太慢 slowly

    https://blogs.oracle.com/shay/entry/is_your_jdeveloper_slow_it_sho http://bexhuff.com/2012/09/jdevel ...

  9. android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  10. IOS开发之—— Core Foundation对象与OC对象相对转换的问题

    对ARC盲目依赖的同学: 1过度使用block后,无法解决循环引用问题 2遇到底层Core Foundation对象,需要自己手工管理它们的引用计数时,显得一筹莫展 first:对于底层Core Fo ...