频率域滤波_滤波基础

  这节来介绍一下频率域滤波。

  在空间域内,我们是直接对像素进行操作以增强图像的有用信息。像高斯平滑,是取一个模板与图像进行卷积操作,得到处理后的图像。不同的变换域可以很方便的解决某种问题,例如空间域中值滤波是取一个区域的中值替代中间像素的灰度,可以很好的去除椒盐噪声例如下图中的(1)(2)(3)。

         

(1)原图           (2)带有椒盐噪声的图像 (3)图像(2)复原之后的图像 (4)部分区域带有周期噪声

  但不是所有的图像都可以在空间域进行图像的增强,有的时候都不知道用什么滤波器来增强图像,例如只有一部分周期噪声的图像(4),中值滤波和高斯滤波等并不能有效的去噪,这个时候可以把它变换到别的变换域中进行处理,在该变换域中一些噪声有很明显的特性。我在此介绍的是频率域图像的增强,如下是傅里叶变换的公式,

   

f(x,y)是空间域像素点的灰度值,F(u,v)中的u,v是频率域变换,F()为对应的变换值。

              

  是傅里叶级数的三角形式,它说明一个函数可以表示成一系列正余弦函数之和,如上图。我们在频率域平滑图像就是去掉频率图像中的较大值即高频成分,锐化图像就是去掉低频成分,所以我们只要找到噪声的频率范围然后设置一个频率范围D0到D1,只要这部分频率被去除就可以解决周期噪声的问题了(具体的操作将在之后介绍),这是比较容易实现的。频率表示的是空间域图像的梯度,高频反映的是图像的细节部分,像噪声、边缘等,低频则是反映出图像的变化比较平滑,所以频谱图也是图像的梯度分布图。再来看一下什么是频谱图:

   是频谱计算公式,欧拉公式使得变换后的F(u,v)带有实部虚部,频谱是一个很重要的概念。图(5)(6)就是图像(1)和(4)的频谱图,不经处理的频谱图坐标原点在左上角,从图中可以看出四角是比较亮的,但是这两幅图中看不出噪声的特点,两幅图似乎没有什么区别,但是如果将图像的坐标原点移到图像的中心,效果将完全不一样了,如图(7)(8)。

 

(5)图像(1)的频谱图   (6)图像(4)的频谱图   (7)图(5)原点移中     (8)图像(6)原点移中

  从移中后的频谱图可以清楚的看见两幅图的差异,再来看频谱反映了什么信息。图(7)中间部分最亮,反映的是图像的低频信息,越亮代表图像的低频成分越多,图像就会比较平滑,没有很明显的边角之类的细节,像沙漠图(9)整体过渡比较平滑,频谱图中间部分就比较亮,而图(1)有很多细节,则它的频谱图中间部分稍微暗点。从图(8)中可以看出,除了中间部分比较亮以外,在四条垂直亮线上还有四个亮点,这是带有周期噪声的图(6)对应的频谱图,正常情况下只有一个亮点,所以比较直观的看出了噪声,这也是为什么要进行移中的原因之一。

当U=V=0时说明了频谱图的中心点是等于图像灰度的平均值。

   

(9)沙漠图                      (10)图(9)的频谱图     (11)图(1)的频谱图

  以上简单介绍了一下什么是频率域滤波,再来看一下在频率域增强图像具体的步骤:

  1、用乘数乘以输入图像进行中心变换  这样就将频谱图进行移中处理了
    2、傅里叶变换到频域
    3、频域滤波
    4、变换到空间域
    5、取g(x,y)的实部
    6、取消图像的乘数
  H(u,v)就是滤波器,它只能允许一定的频率通过,几种常用的频率域滤波器,还有图(4)的增强过程及效果将在下篇介绍。

附录:

%%周期噪声图像的特点

T = imread(‘F:\picture\5.jpg‘);
T_gry = rgb2gray(T);
figure,imshow(T_gry);

[rows cols] = size(T_gry);
T_noise = zeros(rows,cols);
%给原图像的1/4区域加上周期噪声
for i = 1:rows
    for j = 1:cols
        T_noise(i,j)= double(T_gry(i,j));
    end
end
for i = 1:rows/2
    for j = 1:cols/2
        T_noise(i,j)= T_gry(i,j)+20*sin(20*i)+20*sin(20*j);
    end
end
T_noise = uint8(T_noise);
figure,imshow(T_noise);

%对有周期噪声的图像进行傅里叶变换
fcoef = fft2(double(T_noise));
%将频谱移中
spectrum = fftshift(fcoef);
%对幅值做对数变换以压缩动态范围,以便显示
temp = log(1+abs(spectrum));
%显示移中频谱图
figure,imshow(temp,[]);

%对源图像进行傅里叶变换并显示频谱图
fcoef = fft2(double(T_gry));
%将频谱移中
spectrum = fftshift(fcoef);
%对幅值做对数变换以压缩动态范围,以便显示
temp = log(1+abs(spectrum));
%显示移中频谱图
figure,imshow(temp,[]);

时间: 2024-08-27 05:28:28

频率域滤波_滤波基础的相关文章

在频率域中直接生成滤波器

除了之前说的从空间滤波器中获得频率域滤波器,还可以从频率域中直接生成滤波器,这些滤波器被规定为距滤波器中心点的距离不同的函数.可以创建一个用于实现频率滤波器的网格数组,最主要的是需要计算任何点到频率矩形中一个指定点的距离函数,FFT(快速傅里叶)算法是假设变换的原点位于频率矩形的左上角,因此需要将原点平移到频率矩形的中心,用fftshift.网格数组如下: %(频域滤波函数) 提供了距离计算及其所需的网格数组 function [U,V] = dftuv(M,N) u=0:(M-1); v=0:

14、频率域滤波基础——傅里叶变换计算及应用基础

1.理解傅里叶变换 如果是理工科的学生 ,在高等数学和信号处理的课程中应该就已经学习过Fourier变换 ,但是这里还是进行一个简单的基本学习和理解,为时域转频域提供一个基础理论概念. 1.什么是傅里叶级数 周期函数的fourier级数是由正弦函数和余弦函数组成的三角级数.这里首先说结论周期为T的任意周期性函数f(t),若满足以下迪利克雷条件: 在一个周期内只有有限个不连续点: 爱一个周期内只有有限个极大和极小值 积分$\int_{-\frac{-T}{2}}^{\frac{T}{2}}|f(t

openCV中的频率域变换

openCV中频率域增强的傅里叶变换已经比较成熟了,在他的官方tutorials文档里有一个完整的得到频谱图的例子,如下: #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include <iostream> int main(int argc, char **

频率域去噪基本实现思想

1. 频率域去噪基本实现思想:首先将原始图像通过一些积分变换,将其变换到频率域,接着再通过频率域对其进行操作,得到的结果再反变换到空间域中,进而使图像得到增强.根据傅里叶频谱的特性可得到,图像的平均灰度级对应于频率为0成分,当从傅里叶变换的原点离开时,图像的慢变化分量对应着低频滤波,比如一幅图像中较平的区域:当再进一步离开原点时,较高的频率开始对应图像中变换越来越快的灰度级,它们反映了一幅图像中物体的边缘和灰度级突发改变和噪声部分的图像成分.频率域图像增强正是基于这种原理,通过对图像的傅里叶频谱

网站开发_从基础做起2

一超链接的四种样式 假定一个超链接  <a href = www.561.cn>这是一个超链接</a> a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF} /* 鼠标移动到链接上 */ a:active {color: #0000FF} /* 选定的链接 */ 以上分别定义了超链接未访问时的链接样式,已访问的链接样式,鼠标移上时链接

网站开发_从基础做起1

推荐一个网站:标准之路,讲解网站开发确实很详细,带有实例边讲边实践,很是惊喜 就本人的经验来说,网站开发基础可以去w3School中学习html以及css的基本语法,然后参考上面提到网站的DIV+CSS教程 一步一步搭建起来自己的第一个网页,进步还是会很快的. 以下为学习中记录下来的笔记,常常记录,打好基础. 1.文档类型 doctype 它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档.删除后可能引起某些样式表失效或其它意想不到的问题. XHTML 定

java实现中值滤波均值滤波拉普拉斯滤波

目录 来对下面的图像滤波,其实就是对各个像素点进行数学运算的过程 均值滤波 中值滤波 拉普拉斯滤波 Sobel滤波 注意 来对下面的图像滤波,其实就是对各个像素点进行数学运算的过程 均值滤波 均值滤波的实现很简单,把滤波器的各个像素点相加在取平均就可以了. public static int getAVEcolor(int x,int y,BufferedImage bi) { int color=0; int r=0,g=0,b=0; for(int i=x-1;i<=x+1;i++) for

JAVA修改AD域密码_免证书认证

更改用户账户密码,必须要使用ssl方式登录到AD. 网上大部分教程使用TrustStore的方式连接, Hashtable env = new Hashtable(); System.setProperty("javax.net.ssl.trustStore", KEYSTORE); System.setProperty("javax.net.ssl.trustStorePassword", KEYSTORE_PWD); env.put(Context.INITIA

电容滤波&amp;电感滤波原理

整流电路的输出电压不是完美的直流,从示波器观察整流电路的输出,能看到有闫的脉动成份,这就是纹波.为了获得比较理想的直流电压,需要使用滤波电路. 滤波电路中常常使用电感.电容.电阻.其中电感和电容都是具有储能作用的电抗元件,意思就是电容电容对不同频率的信号具有不同的电抗,而一定意义上说电阻对所有频率的信号都具有相同的电阻.而纹波是具有交流特性的,因此电容.电感对纹波具有与电阻不同的电抗.电容对频率越高的信号抗性越小,电感对频率越高的信号抗性越高.滤波电路的本质就是通过构建这个一个电路网络,使这个电