<> == 一维傅里叶变换 == === 傅里叶级数 === 任何一个周期函数都可以由一些不同频率的正弦(或余弦)函数线性叠加得到。 {{attachment:figure41.png}} 表示成数学表达式是这样子的: <> 其中 <> <> <> 这被称为傅里叶级数。由欧拉公式<>可将上述傅里叶级数公式变形为: <> <> 这里的系数cn经常被表示成函数的形式F(n),它是一个离散的函数,即 <> <> 例子: http://www.falstad.com/fourier/ === 连续傅里叶变换 === 当周期趋向无穷大时,函数f变为非周期函数,其傅里叶级数中的<>就趋向于无穷小,离散的求和就变成了连续的积分: <> 其中 <> 这就是连续傅里叶变换 === 离散时间傅里叶变换 === 当f(x)中的x是一个离散的变量时,傅里叶变换就变成了: <> <> F是周期性的 === 离散傅里叶变换 === 如何f(x)是离散的且是周期性的,傅里叶变换变成了: <> <> == 傅里叶变换与线性滤波 == [[attachment:数字图像处理/Review_of_Linear_Systems.ppt]] == 二维傅里叶变换 == 二维傅里叶变换相当于先在x方向做一维傅里叶变换,然后对结果再做y方向的一维傅里叶变换,就得到了二维傅里叶变换的结果。 <> <> 二维的离散傅里叶变换也是类似的: <> <> F(u,v)的幅度和相位分别是: <> <> 频谱能量为<> 性质: * 关于原点是共轭对称的:<> * 幅值是原点对称的:<> * 周期性:<> == 在matlab中计算二维傅里叶变换 == 用fft2函数计算图像的傅里叶变换: {{{ F = fft2(f); }}} 查看傅里叶变换的结果,可以发现幅值最大的位置出现在四个角上,它们代表了低频的部分。我们可以对频谱进行平移,使得它们位于中间: {{{ F = fftshift(F); }}} 要将频谱变换回图像,使用傅里叶逆变换: {{{ F = ifftshift(F); f = ifft2(F); }}} == 频域滤波 == 根据卷积定理 <> 以及 <> 因此可以得到: <> 其中,<>表示傅里叶变换,<>表示傅里叶逆变换 {{attachment:figure44.png}} 在matlab里面实现: {{{ [M, N] = size(f); F = fft2(f); h = fspecial('average', [5 5]); H = fft2(h, M, N); G = F.*H; g = real(ifft2(G)); imshow(g); }}} == 频域中直接生成滤波器 == === 低通滤波器 === 理想低通滤波器 {{{#!latex $ H(u,v) = \begin{cases} 1 & D(u,v)\le D_0 \\ 0 & D(u,v)\le D_0 \\ \end{cases} $ }}} 巴特沃滋低通滤波器 {{{#!latex $ H(u,v) = \frac{1}{1+[D(u,v)/D_0]^{2n}} $ }}} 高斯低通滤波器 {{{#!latex $$H(u,v)=e^{-D^2(u,v)/2\sigma ^2}$$ }}} === 高通滤波器 === 基本高通滤波: {{{#!latex $H_{hp}(u,v) = 1 - H_{lp}(u,v)$ }}} 高频强调滤波: {{{#!latex $H_{hfe}(u,v)=a+bH_{hp}(u,v)$ }}} === 在matlab里面实现 === 理想低通: {{{ f = imread('lena_gray.tif'); [M N] = size(f); [R C] = meshgrid(1:M, 1:N); D = sqrt((R-M/2).^2 + (C-N/2).^2); H = double(D <= 100); F = fftshift(fft2(f)); G = F.*H; g = ifft2(ifftshift(G)); }}} == 参考资源 == * https://secure.wikimedia.org/wikipedia/zh/w/index.php?title=%E5%82%85%E7%AB%8B%E5%8F%B6%E5%8F%98%E6%8D%A2&variant=zh-cn * http://en.wikipedia.org/wiki/Fourier_analysis * http://zh.wikipedia.org/wiki/%E7%A6%BB%E6%95%A3%E4%BD%99%E5%BC%A6%E5%8F%98%E6%8D%A2 * http://en.wikipedia.org/wiki/Discrete_cosine_transform