灰度图像--频域滤波 同态滤波

学习DIP第27天

转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!!

文章代码已托管,欢迎共同开发:https://github.com/Tony-Tan/DIPpro

开篇废话

今天的废话是,图像处理是个很大的很混乱的科目,因为任何内容都至少属于两个大框架,比如通态滤波,听起来就是频域滤波,但它的另一个身份还属于图像增强。如果单纯的想把内容归类,这个很困难,因为图像的知识结构是图,而不是简单的树。

新买了一个书《图像处理基础》,像是一本字典,或者是题库,里面的标题像十万个为什么,要参加校招的同学可以临时复习下,当然,当我们深入学习时这本书也是一本不错的指导手册,像一本纸质的wiki,一本不错的工具书。

本文结构图:

成像原理

成像原理就是我们为什么能看到东西的原理,和光学有关,但这里我们对其进行抽象,如果完整建模成像的原理,将会是很复杂的模型,暂时不考虑复杂的情况,而只考虑两种主要参数,入射分量和反射分量。

例如对于一幅图像,对于像素点(x,y)我们设其值为f(x,y)那么可以确定的是f(x,y)的是大于0且有限的:

成像的物体受到光源的照射,反射到成像元件或者人眼里的是入射光照反射的部分,换个理解反射分量类似于一个衰减系数,例如入射光是1,反射分量是0.7,那么我们看到的是1x0.7=0.7,如果物体是黑洞,那么反射分量是0,如果绝对无减少的反射,那么反射分量是1;入射分量为i(x,y),反射分量(我感觉叫反射系数更准确)r(x,y),那么成像可以被描述为:

并且存在关系:

对于单色图像,图像的像素值表示该点的灰度强度

灰度强度介于最大和最小值之间,并且最小值大于0,最大值有限,实际上满足称为灰度级通常是[0,max],对于8bit灰度像素,灰度级为[0,255]。

同态滤波

介绍同态滤波之前,必须要了解下为什么叫同态,因为这个问题我也研究了很久,根据wiki上的介绍,同态的本质是一种映射,但是这种映射拥有特殊的性质,这种性质就是保持相关的属性不变,相关属性包括,幺元,逆元,二元运算等。看个例子:

典型的例子就是:

其中f可以为:

那么f(2+4)=f(2)*f(4)。这个映射f就是一个同态映射。加法运算的幺元0映射结果是乘法的幺元1。满足之前我们提到的性质。

数学原理

根据前面的成像原理,和同态定义,我们提出了同态滤波,同态滤波,同态滤波的特点是,压缩灰度范围,同时增强对比度,增强对比度类似于增加像素灰度的方差,而压缩灰度值一定程度上限制了方差的大小,所以同态滤波有点类似于,给你减工资,还要让你工作积极性高涨。。。。。

根据上文成像原理的假设,图像f(x,y)=i(x,y)*r(x,y),但对于傅里叶变换(DFT)不存在下面关系,因为乘法的傅里叶变换不是傅里叶变换的乘法:

所以我们引进了自然对数函数,一个使乘法变成加法的神奇运算,我们定义:

那么就可以利用傅里叶的线性得到:

或者:

Fi和Fr分别是ln i(x,y)和ln r(x,y)的傅里叶变换。我们设计一个滤波器对Z进行滤波,就能得到:

进行傅里叶逆变换,就得到空间图像:

其中,我们根据前面定义能得到:

所以处理后的图像s可以表示为:

因为之前我们做了取自然对数运算,作为还原,我们计算:

其中:

i0和r0是滤波处理后的入射分量和反射分量。

整个过程用下面流程图表示:

更进一步,在图像中,变换缓慢的部分为照射分量,和发生突变通常是由反射分量组成,特别是物体连接处,对应于频谱就是高频和低频部分,虽然只是粗略的近似,但结果在图像中是很有用的。

数学公式:

滤波器的形状:

应用

对照明变化明显的图像进行预处理,减少图像照明变化的特征,增强较暗部分的细节

代码

#include "Homomorphicfilter.h"

static double Distance(int x,int y,int c_x,int c_y){

    return sqrt((x-c_x)*(x-c_x)+(y-c_y)*(y-c_y));
}

void HomorphicFilter(double *filter,int width,int height,double cut_off_frequency,double lambda_l,double lambda_h,double c){
    int center_x=width/2;
    int center_y=height/2;
    double distance;
    double distance_2;
    double cut_off_frequency_2=cut_off_frequency*cut_off_frequency;
    for(int i=0;i<height;i++)
        for(int j=0;j<width;j++){
            distance=Distance(j, i, center_x, center_y);
            distance_2=distance*distance;
            filter[i*width+j]=(lambda_h-lambda_l)*(1.0-exp(-c*distance_2/cut_off_frequency_2))+lambda_l;

        }

}

示例

原图:

下图:截止频率20,lambda_l=1.5,lambda_h=10,c=1

下图:截止频率20,lambda_l=0.1,lambda_h=10,c=2

总结

总结,同态滤波可以有效的解决因光照不平衡引起的黑暗处细节消除的问题,并且平衡光照,频率域滤波可以处理各种问题,但归结起来有以下:1.图像要保留的部分和要去除的部分在频率上必须区别明显;2滤波器的性质决定了处理的结果;3分析频谱是一重要的环节。

时间: 2024-10-04 08:50:31

灰度图像--频域滤波 同态滤波的相关文章

灰度图像--频域滤波 概论

学习DIP第25天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 开篇废话 这两天写了一下频域滤波的代码,并且发现以前博客里代码的一个BUG,产生BUG的原因是一维

灰度图像--频域滤波 滤波器

学习DIP第26天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 开篇废话 依然是废话开始,滤波器的起源就是频域来的,针对频域特性,滤波器被设计成各种各样的功能,但

灰度图像--频域滤波 傅里叶变换之离散时间傅里叶变换(DTFT)

学习DIP第22天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意........ 开篇废话 本来是不想写DTFT的,原因1,与前面傅里叶变换(FT)推导过程相似,原因2,在图像处理中DTFT应用不是很广泛,但后来想想还是写出来,原因1,不写出来我觉得心里不踏实,原因2,DTFT是DFT的近亲,不写的话家族不完整,下一篇写DFT,其实写到这个阶段,要写的东西就

灰度图像--频域滤波 傅里叶变换之离散傅里叶变换(DFT)

学习DIP第23天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 开篇废话 一如既往的开篇废话,今天介绍离散傅里叶变换(DFT),学习到这,不敢说对傅里叶有多了解,

灰度图像--频域滤波 傅里叶变换之二维离散傅里叶变换

学习DIP第24天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意.有些网站转载了我的博文,很开心的是自己写的东西被更多人看到了,但不开心的是这段话被去掉了,也没标明转载来源,虽然这并没有版权保护,但感觉还是不太好,出于尊重文章作者的劳动,转载请标明出处!!!! 开篇废话 今天要记录的是二维离散傅里叶变换的一些性质,也是傅里叶在图像处理中要用到的一些性质,所以

灰度图像--频域滤波 傅里叶变换之傅里叶级数

学习DIP第18天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意........ 0.开篇废话 废话开始,故事是这样的,当我上大学的时候,学过信号与系统,当时已经学了高的数学,也知道了傅里叶变换的公式,但是,公式是怎么来的,有什么用,不清楚,学信号与系统的时候,知道傅里叶用在什么地方,但是不清楚为什么可以用在这些地方,书中的记忆是:傅里叶变换或者其家族的变换

灰度图像--频域滤波 傅里叶变换之卷积

学习DIP第17天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意........ 开篇废话 依旧是废话,傅里叶变换大学学了等于白学,首先问题在自己,自己当时就没把心思投入到学习中,第二,老师讲的真的是,现在回想,看看斯坦福的公开课"傅里叶变换及其应用"感觉差距不是一般的大.不是对老师的不尊,也不是崇洋媚外,事实摆在那里,一看就知道.把复杂的讲简单了

opencv的频域滤波

频域滤波流程总结如下: 给定一幅大小为M×N的输入图像f(x,y),从式(6.1-25)和式(6.1-26)得到填充参数P和Q.典型地,我们选择P=2M和Q=2N: 对f(x,y)添加必要数量的0,形成大小为P×Q填充后的图像 用(-1)(x+y)乘以fp(x,y),进行频谱中心化的预处理: 计算中心化预处理过的fp(x,y)的傅里叶变换,得到Fp(u,v); 生成一个实的.对称的滤波函数H(u,v),其大小为P×Q,频谱零点位于(P/2,Q/2)处.用阵列相乘形成乘积G(u,v)=F(u,v)

Python下opencv使用笔记(十)(图像频域滤波与傅里叶变换)

前面曾经介绍过空间域滤波,空间域滤波就是用各种模板直接与图像进行卷积运算,实现对图像的处理,这种方法直接对图像空间操作,操作简单,所以也是空间域滤波. 频域滤波说到底最终可能是和空间域滤波实现相同的功能,比如实现图像的轮廓提取,在空间域滤波中我们使用一个拉普拉斯模板就可以提取,而在频域内,我们使用一个高通滤波模板(因为轮廓在频域内属于高频信号),可以实现轮廓的提取,后面也会把拉普拉斯模板频域化,会发现拉普拉斯其实在频域来讲就是一个高通滤波器. 既然是频域滤波就涉及到把图像首先变到频域内,那么把图