图像处理中傅里叶变换以及频率域图像增强详解

冈萨雷斯版<图像处理>里面的解释非常形象:一个恰当的比喻是将傅里叶变换比作一个玻璃棱镜。棱镜是可以将光分解为不同颜色的物理仪器,每个成分的颜色由波长(或频率)来决定。傅里叶变换可以看作是数学上的棱镜,将函数基于频率分解为不同的成分。当我们考虑光时,讨论它的光谱或频率谱。同样, 傅立叶变换使我们能通过频率成分来分析一个函数。


Fourier theory讲的就是:任何信(如图像信号)都可以表示成一系列正弦信号的叠加,在图像领域就是将图像brightness variation 作为正弦变量。比如下图的正弦模式可在单傅里叶中由三个分量编码:频率f、幅值A、相位γ 这三个value可以描述正弦图像中的所有信息。

1.frequency

  


frequency在空间域上可由亮度调节,例如左图的frequency比右图的frequency低……


2.幅值magnitude(amplitude

sin函数的幅值用于描述对比度,或者说是图像中最明和最暗的峰值之间的差。(一个负幅值表示一个对比逆转,即明暗交换。)

3.相位表示相对于原始波形,这个波形的偏移量(左or右)。

=================================================================

一个傅里叶变换编码是一系列正弦曲线的编码,他们的频率从0开始(即没有调整,相位为0,平均亮度处),到尼奎斯特频率(即数字图像中可被编码的最高频率,它和像素大小、resolution有关)。傅里叶变换同时将图像中所有频率进行编码:一个只包含一个频率f1的信号在频谱上横坐标f为f1的点处绘制一个单峰值,峰值高度等于对应的振幅amplitude,或者正弦曲线信号的高度。如下图所示。


DC term直流信号对应于频率为0的点,表示整幅图像的平均亮度,如果直流信号DC=0就表示整幅图像平均亮度的像素点个数=0,可推出 灰度图中,正弦曲线在正负值之间交替变化,但是由于灰度图中没有负值,所以所有的真实图像都有一个正的DC term,如上图所示。

出于某些数学分析原因,我们经常把傅里叶变换用mirror-image表示,在原点的的两端,frequency都是增加的方向,具有相同的幅值。


上面讲的都是一维信号,一个二维傅里叶变换是一维傅里叶变换在每一个行扫描线和列扫描线上的傅里叶变换的叠加。


傅里叶谱图上的每一个像素点都代表一个频率值,幅值由像素点亮度变码而得。最中心的亮点是指直流分量,傅里叶谱图中越亮的点,对应于灰度图中对比越强烈(对比度越大)的点。

由于每一列扫描线上没有变化,所以相应的fourier spectrum上行向量为0, 每一行扫描线上有contrast,所以有频率幅值。




这里频率比上面的小,相应的亮点比上副图也集中。




图像傅立叶变换的物理意义

傅里叶提出任何周期函数都可以表示为不同频率的正弦和/或余弦和的形式,每个正弦和/或余弦乘以不同的系数(傅里叶级数)。图像的频率是表征图像中灰度变化剧烈程度的指标是灰度在平面空间上的梯度.在噪声点和图像边缘处的频率为高频。

傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数.

傅立叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,我们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。由于空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就由梯度来表示,这样我们可以通过观察图像得知物体在三维空间中的对应关系。为什么要提梯度?因为实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上各点并不存在一一对应的关系,即使在不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际上图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分相反)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察傅立叶变换后的频谱图,也叫功率图,我们首先就可以看出,图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰,一副带有正弦干扰,移频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻滤波器消除干扰.






图像是两个参数的函数,通过一组正交函数的线性组合可以将其分解,而傅里叶就是通过谐波函数来分解的。而对于离散傅里叶变换,傅里叶变换的条件是存在的。

傅里叶变换进行图像处理有几个特点

1. 直流成分F(0,0)等于图像的平均值;

2. 能量频谱|F(u,v)|^2完全对称于原点;其中F=PfQ, f表示原图,P和Q都是对称的实正交矩阵,这个公式表示傅里叶变换就是个正交矩阵的正交变换

3.图像f平移(a,b)后,F只有exp[-2pij(au/M+bv/M)]的相位变化,能量频谱不发生变化。

4. 图像f自乘平均等于能量频谱的总和,f的分散等于能量频谱中除直流成分后的总和。

5.图像f(x,y)和g(x,y)的卷积h(x,y)=f(x,y)*g(x,y)的傅里叶变换H(u,v)等于f(x,y)和g(x,y)各自的傅里叶变换的乘积。


图像中的每个点通过傅里叶变换都成了谐波函数的组合,也就有了频率,这个频率则是在这一点上所有产生这个灰度的频率之和,也就是说傅里叶变换可以将这些频率分开来。当想除去图像背景时,只要去掉背景的频率就可以了。

 

在进行傅里叶变换时,实际上在某一特定的频率下,计算每个图像位置上的乘积。什么乘积呢,就是f(x,y)exp[-j2pi(ux+vy)],然后计算下一个频率。这样就得到了频率函数。

也就是说,我们看到傅里叶变换的每一项(对每对频率u,v,F(u,v)的值)是由f(x)函数所有值的和组成。f(x)的值与各种频率的正弦值和余弦值相乘。因此,频率u, v决定了变换的频率成分(x, y也作用于频率,但是它们相加,对频率有相同的贡献)。

 

通常在进行傅里叶变换之前用(-1)^(x+y)乘以输入的图像函数,这样就可以将傅里叶变换的原点F(0,0)移到(M/2,N/2)上。

 

每个F(u,v)项包含了被指数修正的f(x,y)的所有值,因而一般不可能建立图像特定分量和其变换之间的联系。然而,一般文献通常会有关于傅里叶变换的频率分量和图像空间特征之间联系的阐述。变换最慢的频率成分(u=v=0)对应一幅图像的平均灰度级。当从变换的原点移开时,低频对应着图像的慢变换分量,较高的频率开始对应图像中变化越来越快的灰度级。这些事物体的边缘和由灰度级的突发改变(如噪声)标志的图像成分。

 

在频率域中的滤波基础

1. (-1)^(x+y)乘以输入图像来进行中心变换

2. 由(1)计算图像的DFT, 即F(u,v)

3. 用滤波器函数H(u,v)乘以F(u,v)

4. 计算(3)中的结果的反DFT

5. 得到(4)中的结果的实部

6. 用(-1)^(x+y)乘以(5)中的结果



另外我还想说明以下几点:

1、图像经过二维傅立叶变换后,其变换系数矩阵表明:

若变换矩阵Fn原点设在中心,其频谱能量集中分布在变换系数短阵的中心附近(图中阴影区)。若所用的二维傅立叶变换矩阵Fn的原点设在左上角,那么图像信号能量将集中在系数矩阵的四个角上。这是由二维傅立叶变换本身性质决定的。同时也表明一幅图像能量集中低频区域。
2 、变换之后的图像在原点平移之前四角是低频,最亮,平移之后中间部分是低频,最亮亮度大说明低频的能量大(幅角比较大)


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数字图像处理是指对数字形式的图像进行各种操作和处理的一门技术。二维傅里叶变换是数字图像处理常用的一种变换方法,主要用于将图像从空间转换到频。 在Java,我们可以使用一些图像处理库来实现二维傅里叶变换。例如,常用的库有OpenCV和ImageJ。这些库提供了丰富的函数和方法用于加载、处理和保存图像,同时也支持二维傅里叶变换。我们可以通过调用相应的函数来完成这一转换。 具体实现二维傅里叶变换的步骤如下: 1. 导入图像处理库。 2. 使用库提供的函数加载图像,并将其转换成灰度图像。这一步骤可以通过将彩色图像的三个通道的像素值取平均来实现。 3. 使用库提供的函数将灰度图像进行二维傅里叶变换。该函数将返回一个表示频图像的复数数组。 4. 可选的,可以对频图像进行进一步处理,如滤波、增强等。 5. 使用库提供的函数将频图像进行逆变换,以得到空图像。逆变换后的图像通常是一个复数数组,需要进一步处理才能显示。 6. 根据需要,将逆变换后的图像进行调整,如将复数值映射到[0,255]范围内,将实部或虚部与频作差等。 7. 使用库提供的函数保存处理后的图像。 总的来说,通过以上步骤,我们可以在Java实现二维傅里叶变换,完成对数字图像的频分析和处理。这样的变换可以帮助我们提取图像的频特征,如纹理、边缘等,对于图像处理和分析有着重要的应用。 ### 回答2: 数字图像处理是指利用计算机对图像进行处理和分析的一种技术。其,二维傅里叶变换是数字图像处理的重要工具之一。它是将图像从像素转换到频的一种方法,可以将图像的空间信息转换为频率信息,从而实现对图像的频处理。 在Java,可以使用Java的图像处理库或者开源库来实现二维傅里叶变换。其,常用的Java图像处理库有Java Advanced Imaging (JAI)和Java Image Processing Toolkit (JIPT)等。 首先,需要加载原始图像,并将其转换为合适的数据结构。Java可以使用BufferedImage类来加载和处理图像数据。然后,可以使用合适的库函数来对图像进行二维傅里叶变换。这些库函数会将图像从像素转换为频,并返回频的结果。 接下来,可以对频的图像进行相应的处理。例如,可以进行频滤波、频增强等操作来对图像进行改进或者分析。在Java,可以使用库函数来实现这些操作。 最后,可以将经过频处理的图像再次进行反变换,将其从频转换回像素。这一步可以使用相应的反二维傅里叶变换库函数来实现。 总之,数字图像处理的二维傅里叶变换是一种重要的技术,可以提取图像的频信息并进行相应的处理。在Java,可以使用相应的图像处理库或者开源库来实现二维傅里叶变换,并通过对频图像进行处理来改进和分析图像。 ### 回答3: 数字图像处理是利用计算机对图像进行处理的一种技术。二维傅里叶变换是数字图像处理常用的一种方法,它可以将图像从空间转换到频率。 在Java,我们可以使用一些图像处理库来实现二维傅里叶变换。比如,我们可以使用Java的OpenCV库来进行图像处理操作。 首先,我们需要导入OpenCV库。可以在Java项目的依赖添加OpenCV库的引用。然后,我们可以使用OpenCV提供的函数来读取图像文件,如imread函数。 接下来,我们可以使用OpenCV库的dft函数来对图像进行二维傅里叶变换。该函数将图像从空间转换到频率。我们可以指定变换的尺寸,一般选择与图像大小相同的尺寸。 在得到频率表示后,我们可以进行一些频处理操作,如滤波、增强等。然后,我们可以使用OpenCV库的idft函数将图像从频率转换回空间。 最后,我们可以使用OpenCV库的imwrite函数将处理后的图像保存到指定的文件。 总之,利用Java的OpenCV库,我们可以方便地进行数字图像处理,包括二维傅里叶变换。通过这种方法,我们可以将图像从空间转换到频率,进行一系列频处理操作,并最终将图像转换回空间,得到处理后的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值