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. eclipse点击一个变量使相同名称变量高亮显示的方法

    preferences->java->Editor->Mark Occurences 选择最上的复选框,下面的就有很多了. 其中的Local variables就是变量的高亮显示.

  2. Mvc 中ViewBag Model 查找不到解决

    按照晚上修改VIew视图中web.config 很显然,没效果... 我的情况是 出现: 我想了下  看下是不是编译器的问题: 我在vs2013中建立 MVC4  然后用 vs2015打开 然后报错- ...

  3. Java常用类库——Runtime

    runtime运行时候,是封装了一个JVM进程的类,每一个JAVA程序实际上启动了一个JVM进程,那么每个JVM对应一个runtime实例.此实例是由JVM为其实例化. 本类的定义中没有构造方法,因为 ...

  4. js常用宽高属性

    document.body.clientWidth //body对象的宽度 document.body.clientHeight //body对象的高度 document.documentElemen ...

  5. 使用EasyUI要引入哪些文件

    使用EasyUI,一般需要导入如下文件 <link rel="stylesheet" type="text/css" href="../reso ...

  6. springmvc源码分析(转)

    该博客转载自http://www.cnblogs.com/heavenyes/p/3905844.html#特在此说明!!!!! springmvc是一个基于spring的web框架.本篇文章对它的工 ...

  7. 转载:有关SQL server connection Keep Alive 的FAQ(2)

    转: http://blogs.msdn.com/b/apgcdsd/archive/2012/05/18/sql-server-connection-keep-alive-faq-2.aspx 在下 ...

  8. 磁盘操作- inode/Block深入实战

    一 思路: 1,磁盘物理结构及大小计算 2,分区 MBR GPT知识 3,fdisk分区 挂载 自动挂载 4,格式化文件系统 5,inode block 软硬链接 查看磁盘: [root@moban ...

  9. JS面向对象的几种写法

    JS 中,面向对象有几种写法.归纳下,大概有下面这几种:工厂模式,构造函数模式,原型模式,构造函数与原型模式的混合使用,原型链继承,借用构造函数继承. 一.工厂模式 function person ( ...

  10. 封装WCF客户端调用

    在之前的博客中,我记录过如何利用SvcUtil.exe工具生成客户端的代理文件,然后调用的情形. 今天我要讲解的是利用代码直接对服务端进行调用.好处在于,一是不会生成那么大的引用文件,其次是可以方便控 ...