2019-06-07 12:00:37 nanhuaibeian 阅读数 740

文章参考
韩 昊:https://www.cnblogs.com/h2zZhou/p/8405717.html
M李丽:https://blog.csdn.net/qq_32211827/article/details/78338902
赵越:https://zhuanlan.zhihu.com/p/21298832
关系: 傅里叶变换是实现从空域或时域到频域的转换工具

一、时域

时域(时间域)——自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x(t)是描述信号在不同时刻取值的函数。

时域是真实世界,是惟一实际存在的域
从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。

二、频域

频率域(frequency domain。)任何一个波形都可以分解成多个正弦波之和。每个正弦波都有自己的频率和振幅。所以任意一个波形信号有自己的频率和振幅的集合。频率域就是空间域经过傅立叶变换的信号

频域最重要的性质是:它不是真实的,而是一个数学构造。时域是惟一客观存在的域,而频域是一个遵循特定规则的数学范畴。

频域实际上是时域信号进行傅立叶变换的数学结果,使用频域来观察世界的话,你会发现世界是永恒不变的。

时域中的一段音乐:轨迹动态变化着
在这里插入图片描述
频域中的一段音乐:一个一个静止的乐符序列
在这里插入图片描述
从中细化处一个乐符:
在这里插入图片描述
在时域,我们观察到钢琴的琴弦一会上一会下的摆动,就如同一支股票的走势;而在频域,只有那一个永恒的音符

正如:
在这里插入图片描述
正弦波是频域中唯一存在的波形,这是频域中最重要的规则,即正弦波是对频域的描述,因为时域中的任何波形都可用正弦波合成。这是正弦波的一个非常重要的性质。然而,它并不是正弦波的独有特性,还有许多其他的波形也有这样的性质。

三、空间域:图像平面本身,以图像像素直接进行处理为基础

空间域又称图像空间(image space)。由图像像元组成的空间。在图像空间中以长度(距离)为自变量直接对像元值进行处理称为空间域处理。

空间域(spatial domain)也叫空域,即所说的像素域,在空域的处理就是在像素级的处理,如在像素级的图像叠加。通过傅立叶变换后,得到的是图像的频谱。表示图像的能量梯度。

2019-07-02 11:55:17 weixin_39504171 阅读数 667

1频域滤波与空间域滤波比较

(1)空间域滤波简介

        空间域滤波是在图像空间中借助模板对图像进行邻域操作,处理图像的每一个像素的取值都是根据模板对输入像素邻域内的像素值进行加权叠加得到的。空间域滤波是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变图像的频率分布。空间域滤波是应用模板卷积对图像每一个像素进行局部处理。

 

(2)频域滤波器简介

        频域滤波是图像经傅里叶变换后,边缘和其他尖锐信息在图像中主要出于高频部分,因此,可以通过衰减图像傅里叶变换中的高频成分的范围来实现。

 

(3)频域滤波与空间域滤波的比较

       1)在空间域滤波中,平滑滤波器算法简单,处理速度快,但在降噪同时使图像产生模糊,特别是在边缘和细节处。中值滤波器对椒盐噪声抑制效果比较好,但对点、线等细节较多的图像却不太合适。低通滤波器对椒盐噪声过滤效果差,图像较为模糊。空间域滤波算法简单,处理速度较快,在锐化方面效果明显,线条突出。

        2)在频域滤波中,去噪同时将会导致边缘信息损失,使图像边缘模糊,并且产生振铃效果。页域滤波算法复杂,计算速度慢,有微量振铃效果,图像平缓。

 

(4)频域滤波与空间域滤波的联系

         频域滤波较空域而言更为直观,频域下滤波器表达了一系列空域处理(平滑、锐化等)的本质,即对高于/低于某一特定频率的灰度变化信息予以滤除,而对其他的灰度变化息基本持.不变。这种直观性增加了频域滤波器设计的合理性,使得我们更容易设计出针对特定问题的频域。而想直接在空域中设计出一个能够完成滤波任务的滤波器(卷积模板)是相当困难的。

         为了得到合适的空域滤波器,我们很自然地想到可以首先设计频域滤波器H(u, v)而后根据卷积定理,将H(u, v)反变换至空域后就得到了空域中滤波使用的卷积模板h(x, y),从而解决空域滤波器的设计难题。然而,直接反变换得到的空域卷积模板h(x, y)同H(u, v)等大,要计算这样大的模板与图像的卷积将是非常低效的。利用以全尺寸的空域滤波器h(x, y)为指导设计出的形状与之类似的小空域卷积模板,同样可以取得类似于频域滤波器H(u, v)的滤波效果。这就为从频域出发,最终设计出具有实用价值的空域模板提供了一种完美的解决方案。

 

(5)空间域高斯滤波与频域高斯滤波的比较

         1)方差:空域高斯函数的方差越大,高斯函数越宽,模板尺寸越大,处理的图像越模糊;频域高斯函数的方差越小,高斯函数越窄,滤除的低频成分越多,图像越模糊。

         2)计算量:空域高斯滤波的计算花费随着模板的规模的增大而增大;频域高斯滤波的计算星独立于滤波函数。

 

(6)振铃效应

        振铃效应(Ringingeffect)是影响复原图像质量的众多因素之一,其典型表现是在图像灰度剧烈变化的邻域出现类吉布斯(Gibbs)分布--满足给定约束条件且熵最大的分布)的振荡。

        在图像盲复原中,振铃效应是一个不可忽视的问题,其严重降低了复原图像的质量, ,并且使得难于对复原图像进行后续处理。如果点扩振铃效应是由于在图像复原中选取了不适当的图像模型造成的;在图像盲复原中散函数选择不准确也是引起复原结果产生振铃效应的另一个原因,特别是选用的点扩散函数尺寸大于真实点扩散函数尺寸时,振铃现象更为明显;振铃效应产生的直接原因是图像退化过程中信息量的丢失,尤其是高频信息的丢失。铃效应对复原图像质量影响严重,众多学者对抑制振铃效应的方法进行了广泛研究,然而大多数图像复原方法在这一点上都有所不足,造成了复原过程中的振铃效应几乎不可避免,尤其对于有噪声存在的场合,它会混淆图像的高频特性,使得振铃效应带来的影响更加显著。

 

(7)参考文献

http://www.doc88.com/p - 3022161431207.html

http: / /blog.csdn.net/u010839382/article/details/41908541

2019-04-27 14:59:11 GL3_24 阅读数 1511

一般我们见到的简单的图像处理都是空间域的处理。即图像是一个二维图像,每个点都有对应的坐标。
图像的频域理解起来并不是那么简单,因此我在这里说一下个人理解,希望帮助到需要帮助的人。本篇博文使用Halcon软件的示例以及图像进行展示。

首先需要说明的几点知识:
1.如果需要看频谱图是要进行傅里叶变换的,图像的傅里叶变换其实是将图像的灰度分布函数变换为图像的频率分布函数。
2.图像的频域中的高频分量对应图像的细节信息,图像低频分量对应图像的轮廓信息。高频分量代表的是信号的突变部分(即灰度值梯度大),而低频分量决定信号的整体形象(即梯度小)。
3.在频谱图中,可以看到亮度不同的点,这些点中亮度大就证明该点的梯度大(即高频分量),亮度小证明该点的梯度小(即低频分量)。
4.频谱图中中心部分代表高频分量,四周代表低频分量,尤其是四个顶点。

然后根据图像进行简单解释。
原图
原图

然后进行傅里叶变换

rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)

在这里插入图片描述
傅里叶变换之后的频谱图

原图特征一致,图像梯度很小,则低频分量较多,高频分量较少。体现在频谱图中就是顶点部分更亮。而肉眼可以明显的看到图像中有一部分凸起,这部分的梯度就变大了,在频谱图中该部分就偏亮些。

然后可以对图像进行滤波

convol_fft (ImageFFT, Filter, ImageConvol)
rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)

在这里插入图片描述
滤波之后的图像

这样就可以将中间部分的凸起检测出来了。
在这里插入图片描述
在这里插入图片描述
有的图像在空间域中进行处理会很困难,例如该例中的检测缺陷。但是放到频域中就可以很简单的进行检测,比如我们看到的经过滤波之后的图像,待检测点部分的特征明显去其他地方不同。

作者:GL3_24
来源:CSDN
著作权归作者所有。转载请联系作者获得授权并注明出处。

2016-05-09 16:01:19 lpsl1882 阅读数 5563

     频域滤波的快速实现是工程领域的里程碑。频域滤波最让工程师兴奋的原因来自于这个公式:

f(x)*g(y)<-->F(u)G(v)

    这说明空间域中的复杂的卷积算子,变换到频域中就成了简单的乘法,这样不仅计算简单,而且工程上易于实现。在FFT和快速DCT(余弦变换)的数字实现之前,频域变换的计算是很头疼的事情,在计算效率上并不比普通卷积快多少;在FFT和快读DCT实现之后,频域信号处理几乎无处不在。

    空间域滤波的算子可以变成频域滤波算子。假设当前图像尺寸为512x512,滤波算子大小为3x3,显然直接对滤波算子进行频域转换后的结果仍然为3x3,这是无法相乘的。这需要从定义出发来解释。

     卷积的定义是:f(t)*g(t)= 如果f和g是周期不同的周期函数,那么我们要用0补全函数周期,保证补全后的函数f’和g’有相同的周期,然后再进行卷积;否则不能保证f和g函数在同一个周期内进行卷积,导致不同周期的滤波结果混淆起来。

    回到原始的空间滤波上讲,平时我们的操作是遍历当前图形512x512的每个像素,用3x3的模板对当前像素领域进行卷积操作。其实这是简化后的操作,真正的操作其实是,构建512x512大小的卷积模板,其左上角3x3元素是执行空间域滤波操作的算子元素,剩下的元素全部为0,用这个512x512的卷积模板对图像进行二维卷积。由于除了3x3以外的元素都是0,所以我们实现的时候,只需要计算3x3模板范围的值,看起来就像只用3x3卷积模板对当前像素邻域做操作。

    明白了512x512图像的空间滤波算子其实也是512x512大小之后,那么我们就可以实现从空间域滤波到频域滤波。构建一个512x512的滤波算子,把3x3模板参数放在算子左上角(放在不同位置会导致滤波结果变得奇怪,比如图像被循环位移),然后进行频域转换生成512x512的频域模板,将其与频域图像相乘(注意如果频域图像中心化,那么频域模板也要中心化),然后还原到空间域图像,就完成一次和空间域滤波结果相同的频域滤波。

   频域滤波就完美无瑕了吗?当然不是。假设我的图像大小为512x512,灰度范围为0~255,那么每个像素只需要用1 byte表示,共512x512 bytes;进行频域滤波之后,我需要用两个float甚至double矩阵来表示频域图像的实部和虚部,这就需要512x512x4x2或者512x512x8x2 bytes,一下子内存消耗多了8~16倍;如果频域转换精度不够高的话,经过频域转换再还原到空间域的图像会有信号损失,而不会完全还原到原始图像。请注意,计算机常用的压缩算法会用到频域转换,原因是频率滤波后,大部分图像信息集中到原点附近和其他少数几个区域,大部分区域是不重要的、或者值为0的,这样就可以大大减小数据的存储尺寸;然而在实际的计算中,压缩数据一般要解压为原始数据才能执行相关的计算和显示操作,因此频域方法可以助力数据存储压缩,却无助于减小计算中的数据的大小。

2018-05-13 20:39:33 u010936286 阅读数 2652

前面的章节我们介绍了图像的灰度变换以及空间域滤波,本章我们介绍图像的频域滤波。

什么是频率?

频率我们可以直观的理解为空间或者时间的变化率。

对于图像来说,傅里叶变换中的频率与图像中的亮度变化直接联系。傅里叶变换的原点表示直流分量或者说是图像的平均灰度。例如,房间中的墙和地板,没有云朵的蔚蓝的天空等等,这些场景中图像变化缓慢,或者几乎不变,这里就对应着傅里叶变换的原点分量或者低频分量。而对于各种纹理、物体的边缘等灰度急剧变化的地方而言,则对应于傅里叶变换的高频分量。

频率域滤波流程

图像的频域滤波可以理解为:将图像进行傅里叶变换,使空间域变换到频率域,然后在频率域进行相关滤波操作,最后通过傅里叶逆变换得到滤波后的图像。整个流程如图所示。


傅里叶变换操作

下面我们简单以一张图片为例说明傅里叶变换。由图像直观来看,图像基本为单色调,除去白色矩形边框,几乎没有颜色变化,因此该图像的傅里叶变换几乎主要集中在原点处。


我们首先对该图直接进行FFT

clear
clc
data = imread('Fig0424(a)(rectangle).jpg');
data = rgb2gray(data);
figure(1)
imshow(data)
title('原图像')
F = fft2(data);
S = im2uint8(mat2gray(abs(F)));
figure(2)
imshow(S)
title('傅里叶变换-在4个角显示亮点的谱')

我们可以得到下图,注意该图的4个角显示有亮点,其值就是为傅里叶变换的原点。


                      

这是因为在图像的傅里叶变换中,傅里叶变换为周期函数和对称函数,如下图所示,在原点以左的半个周期中,变换的幅度值从M/2到M-1重复。因为一维FFT仅在M个点上实现,所以在该区域计算机一维变换将产生两个紧邻的半周期。而我们希望在区间[0,M-1]内得到一个完整且正确排序的周期。而我们可以采用在计算前让f(x)乘以(-1)^x来得到。这样做可以将变换的原点移动到点u=M/2处。


同理,对于二维图像也是这样。如图所示。二维图像的傅里叶变换也是周期性和对称性的,因此,其原点的值位于图像的四个角,若想将其移动到中心,需要将图像在傅里叶变换之前乘以(-1)^(x+y)



下面我们利用Matlab对其进行处理:

Fc = fftshift(S);
figure(3)
imshow(Fc)
title('傅里叶变换-中心化后的谱')

这里的fftshift函数就是将其傅里叶变换移动到中心。我们可以得到下图:


我们可以看到傅里叶变换的能量确实集中在低频区域。由于图像的频域分布较广,无法全部显示出来,牺牲了部分细节,这里我们可以通过对数变换得到更多的细节。

newFc = im2uint8(mat2gray(log(1+double(Fc))));
figure(4)
imshow(newFc)
title('傅里叶变换-经对数变换后的谱')

图像的傅里叶变换也有一些很好的性质,如图所示,我们将图片旋转了45°,其频谱图也相应的旋转了45°。


图像的傅里叶变换谱的分量决定了正弦波的幅度,较大的分量意味着在图像中该频率的正弦波比较图出,其模值决定了图像的灰度,相位则携带着图像中的物体定位信息。

如图所示为一名女性的图片:



我们可以得到该图片傅里叶变换的相角:

Fig24= imread('Fig0424(a)(rectangle).jpg');
Fig24 = rgb2gray(Fig24);
Fig27= imread('Fig0427(a)(woman).jpg');
Fig27 = rgb2gray(Fig27);
figure(1)
subplot(1,2,1)
imshow(Fig24)
title('rectangle')
subplot(1,2,2)
imshow(Fig27)
title('woman')
suptitle('原图像')
%%傅里叶变换
F24 = fft2(Fig24);
S24 = im2uint8(mat2gray(abs(F24)));

F27 = fft2(Fig27);
S27 = im2uint8(mat2gray(abs(F27)));

Fc27 = fftshift(F27);
ang27=angle(F27);
figure(2)
fig2 = im2uint8(mat2gray(ang27));
imshow(fig2)
title('women 傅里叶变换的相角')

这里,我们令傅里叶变换的模值为1,只保留傅里叶变换的相角,然后我们对其进行傅里叶逆变换“

figure(3)
fig3 = im2uint8(mat2gray(ifft2(double(F27./(abs(F27))))));
imshow(fig3)
title('women 仅使用相角重建的妇女图像')

我们可以看到,只用傅里叶变换的相位信息就可以得到原图像的关键形状信息,只是相应的灰度信息(由谱携带)丢失了。

然后我们仅使用谱进行傅里叶逆变换,即将相角设置为0:

figure(4)
fig4 = im2uint8(mat2gray(ifft2(double(abs(F27)))));
imshow(fig4)
title('women 仅使用谱重建的妇女图像')

我们可以看到它仅包含灰度信息,图像中没有形状信息。(如果图像中不够明显,可以通过对数变换更为直观的观测)

接下来我们将上述相位和矩形图的傅里叶谱结合重建,由于两张图片大小不同,这里我们每隔1个点取一个值。

figure(5)
F24_2 = F24(1:2:1024,1:2:1024);
fig5 = im2uint8(mat2gray(ifft2(double(abs(F24_2).*F27./abs(F27)))));
imshow(fig5)
title('women 使用矩形的相角和妇女图像的谱重建的图像')

我们可以看出,确定一幅图像的特性内容时,相位起到支配作用。

频域滤波

在前面介绍了图像的傅里叶变换和频域滤波的流程后,我们简要介绍几个图像的频域滤波实例。

下面是一张由于热感应故障受损的灰色电路板的图片。



我们首先获得它的傅里叶变换谱。为了便于观测,我们进行了两次取对数。

clear
clc
data = imread('Fig0429(a)(blown_ic).jpg');
data = rgb2gray(data);
figure(1)
imshow(data)
title('原图像')

[m,n] = size(data);
F = fft2(data)/(m*n);
Fc = fftshift(F);
figure(2)
fig2 = im2uint8(mat2gray(log(1+double(abs(Fc)))));
fig2 = im2uint8(mat2gray(log(1+double(fig2))));
imshow(fig2)
title('傅里叶变换谱')

可以看到,该电路板的频谱主要集中在低频部分,图像中还有两个沿±45°方向的突出分量,这些分量对应于原图像中电路板的边缘以及两个由于热感应故障导致的白色氧化突起物。

我们首先生成一个低通高斯滤波器:

sig = 10;
H = fspecial('gaussian',[m,n],sig);
H = mat2gray(H);%将其映射到[0,1]中
x=1:m;
y=1:n;
[X,Y] = meshgrid(x,y);
figure(3)
mesh(X',Y',H)
title('低通高斯滤波器')
xlabel('x')
ylabel('y')
zlabel('z')

我们知道对于傅里叶变换,时域(空间域)的卷积相当于频率域的乘积,因此我们通过低通滤波器得到滤波后的图像:

G = H.*Fc;
g1 = ifft2(G);
g1 = im2uint8(mat2gray(abs(g1)));
figure(4)
imshow(g1)
title('滤波后的图像')

我们可以看到通过低通滤波器后,由于高频分量衰减,因此对于一些边缘细节将会失去,我们可以直观的理解为低通滤波器模糊了一张图像。

下面我们通过高通高斯滤波器,通过1-H得到:

figure(5)
H2 = mat2gray(1-H);  %将其映射到[0,1]中
[a,b] = find(H2 ==min(min(H2)));
mesh(X',Y',H2)
title('高通高斯滤波器')
xlabel('x')
ylabel('y')
zlabel('z')

同样我们可以得到滤波后的图像:

G2 = H2.*Fc;
g2 = ifft2(G2);
g2 = im2uint8(mat2gray(abs(g2)));
figure(6)
imshow(g2)
title('高通滤波后的图像')

我们可以看到通过高通滤波器,直观上将增强了尖锐的细节,但是由于直流量的丢失,图像的灰度或者说色调遭到了损失。

这里我们可以对滤波器加一个小常数来保留部分直流量,既不会影响尖锐性,也能够保留一定的色调。下面我们通过1-0.75*H达到效果:

H3 = 1-0.75*H;
figure(7)
mesh(X',Y',H3)
title('处理后的高通高斯滤波器')
G3 = H3.*Fc;
g3 = ifft2(G3);
g3 = im2uint8(mat2gray(abs(g3)));
figure(8)
imshow(g3)
title('处理后的高通滤波后的图像')


我们可以看到处理后的高通滤波器相对而言保留了一定的色调,若将原点处低频分量设置为1,则变化为,其基本色调保持不变。


这样经低通或高通滤波器处理可以用于图片的模糊或者突出细节,当然我们也可以在此基础上利用上一节的方法,例如非锐化掩蔽的方式对图像进一步处理,这里不做赘述。


没有更多推荐了,返回首页