高维意味着函数中有多个变量,典型的高维傅里叶应用为图像处理。

一个二维图像的亮度(灰度)可以用$f(x_1,x_2)$来表示,以lena为例,图像平面作为$x_1,x_2$平面,灰度作为$z$轴,形成一个三维曲面

                   

original image                       front of curve surface                 side of curve surface

一维傅里叶变换的作用是把二维平面上的曲线转换成频域表示,二维的傅里叶变换的作用就是把三维曲面转换成频域表示。

mathematica script:

data = Import["ExampleData/lena.tif"];
imageData = ImageData[data, "Byte"];
width = ImageDimensions[data][[1]];
height = ImageDimensions[data][[2]];
scaleParam = 5;
scaledWidth = IntegerPart[width/scaleParam];
scaleHeight = IntegerPart[height/scaleParam];
size = width*height;
scaledSize = scaledWidth*scaleHeight;
red = 1;
green = 2;
blue = 3;
image3d = Table[If[j == 3, imageData[[If[IntegerPart[i/width] > 0, IntegerPart[i/width], 1], If[Mod[i, width] > 0, Mod[i, width], 1], green]], If[j == 1, If[IntegerPart[i/width] > 0, IntegerPart[i/width], 1], If[Mod[i, width] > 0, Mod[i, width], 1]]], {i, size}, {j, 3}];
ListPlot3D[image3d, Mesh -> None, InterpolationOrder -> 3, ColorFunction -> GrayLevel]

View Code

从一维傅里叶变换到二维傅里叶变换

一维傅里叶变换的公式如下

$\displaystyle{ \mathcal{F}f(s) = \int_{-\infty}^{\infty}e^{-2\pi ist}f(t)dt }$

其中有变量$s,t$,变换中与这些变量相关的部分有$f(t),\mathcal{F}f(s)$以及$e^{-2\pi ist}$

二维傅里叶变换里面,变量$s,t$都变成了如下二维变量

空间变量(spatial variable)

$\underline{x} = (x_1,x_2)$

频率变量

$\underline{\xi} = (\xi_1,\xi_2)$

注:我们在讨论一维傅里叶变换的时候采用的是以时间作为单位的时域,但是在二维(N维)傅里叶变换的时候采用的是空间为单位的空域。

那么二维空域函数就可以写成

$f(\underline{x}) = f(x_1,x_2)$

二维频域函数就写成

$\mathcal{F}f(\underline{\xi} = \mathcal{F}f(\xi_1,\xi_2))$

复指数中的乘积$st$就变成$\underline{x}$与$\underline{\xi}$的内积(把$\underline{x},\underline{\xi}$看作向量)

$\underline{x}\cdot \underline{\xi} = x_1\xi_1+x_2\xi_2$

那么复指数$e^{-2\pi ist}$变成

$e^{-2\pi i(\underline{x}\cdot \underline{\xi})} = e^{-2\pi i(x_1\xi_1+x_2\xi_2)}$

有了以上的变量替换,二维傅里叶变换有如下形式

向量形式

$\displaystyle{ \mathcal{F}f(\underline{\xi}) = \int_{\mathbb{R}^2}e^{-2\pi i(\underline{x}\cdot \underline{\xi})}f(\underline{x})d\underline{x} }$

分量形式

$\displaystyle{ \mathcal{F}f(\xi_1,\xi_2) = \int_{-\infty}^{\infty}\int_{-\infty}^{\infty}e^{-2\pi i(x_1\xi_1+x_2\xi_2)}f(x_1,x_2)dx_1dx_2 }$

N维傅里叶变换

$\begin{matrix}
\underline{x} &= &(x_1,x_2,…,x_n)\\
\underline{\xi} &= &(\xi_1,\xi_2,…,\xi_n)\\
\underline{x}\cdot \underline{\xi} &= &x_1\xi_1+x_2\xi_2+…+x_n\xi_n
\end{matrix}$

向量形式

$\displaystyle{ \mathcal{F}f(\underline{\xi}) = \int_{\mathbb{R}^n}e^{-2\pi i(\underline{x}\cdot \underline{\xi})}f(\underline{x})d\underline{x} }$

分量形式

$\displaystyle{ \mathcal{F}f(\xi_1,\xi_2,…,\xi_n) = \underbrace{\int_{-\infty}^{\infty}…\int_{-\infty}^{\infty}}_{n}e^{-2\pi i(x_1\xi_1+x_2\xi_2+...+x_n\xi_n)}f(x_1,x_2,...,x_n)dx_1dx_2…dx_n }$

傅里叶逆变换

$\displaystyle{ \mathcal{F}^{-1}g(\underline{x}) = \int_{\mathbb{R}^n}e^{2\pi i(\underline{x}\cdot \underline{\xi})}g(\underline{\xi})d\underline{\xi} }$

深入理解

在前面一维傅里叶变换类比到二维傅里叶变换的时候,复指数有以下过渡

$e^{2\pi ist} \quad \rightarrow \quad e^{2\pi i(\underline{x}\cdot\underline{\xi})}$

其中的$st$为什么会变成了$\underline{x}\cdot\underline{\xi}$这种内积的形式呢?

下面将从一维复指数开始分析,后会过渡到二维复指数。

一维复指数

在一维傅里叶级数的分析时,我们讲到任何周期为1的函数都能表达成复指数的形式如下

$f(t) = \displaystyle{ \sum_{k=-\infty}^{\infty}C_ke^{2\pi ikt} }$

其中分解成无限个复指数分量,傅里叶正逆变换是把周期取极限后再做调整的结果。

现在我们试着在坐标轴上描绘出某个复指数。

取$k=1$,即有$h(t) = e^{2\pi it}$,其中变量为t。不过由于它为复指数,我们无法在实坐标轴上把完整的图像画出来,但是我们注意到,该函数有如下性质

$h(t+1) = e^{2\pi i(t+1)} = e^{2\pi it}e^{2\pi i}=e^{2\pi it} = h(t)$

$e^{2\pi it} = 1 \qquad for\ t=0,\pm 1,\pm 2,…$

可以画出下图

可以看到尽管我们不能完整画出该复指数的图像,但是可以看到它每间隔1都会回到原来的位置,是一个周期为1的振荡函数(曲线)。

如此类推

  • $e^{2\pi ikt}$就是周期为$\frac{1}{k}$(频率为$k$)的振荡函数,任意只含有一个变量t的函数$f(t)$都能由无数个这种不同频率的振荡函数组合得到。

二维复指数

按照上面分析一维复指数的思路,我们来分析二维复指数$e^{2\pi i(\underline{x}\cdot\underline{\xi})}$

取固定的$\underline{\xi} = (1,1)$,即

$\underline{x}\cdot\underline{\xi} = x_1+x_2$

当$\underline{x}\cdot\underline{\xi} = 0,\pm1,\pm2…$时,有

$e^{2\pi i(\underline{x}\cdot\underline{\xi})} = 1$

此时该复指数的值为1,在图像上表示就是振荡到1的位置

图上的斜线分别为

$x_1+x_2 = 0,\pm1,\pm2…$

他们有着相同的法向量$(1,1)$,即

$\underline{\xi} = (\xi_1,\xi_2)$

他们之间的距离为

$distance=\frac{\frac{1}{\xi_1}\frac{1}{\xi_2}}{\sqrt{\frac{1}{\xi_1^2}+\frac{1}{\xi_2^2}}} = \frac{\frac{1}{\xi_1\xi_2}}{\sqrt{\frac{\xi_1^2+\xi_2^2}{\xi_1^2\xi_2^2}}} = \frac{1}{\sqrt{\xi_1^2+\xi_2^2}} = \frac{1}{\left \| \xi \right \|}$

因此,结合前面坐标图像,有这样的描述:

  • $e^{2\pi i(\underline{x}\cdot\underline{\xi})}$是一个法向量为$\underline{\xi} = (\xi_1,\xi_2)$周期为$\frac{1}{\left \| \xi \right \|} = \frac{1}{\sqrt{\xi_1^2+\xi_2^2}}$的振荡函数(曲面)。

通过修改$\underline{\xi}$,可以得到不同的法向量与不同周期的二维复指数$e^{2\pi i(\underline{x}\cdot\underline{\xi})}$,无限的这类复指数可以组合成包含两个变量的任意函数$f(\underline{x}) = f(x_1,x_2)$,即三维曲面。

[傅里叶变换及其应用学习笔记] 二十六. 高维傅里叶变换的推导相关推荐

  1. JVM 学习笔记二十六、JVM监控及诊断工具-GUI篇

    二十六.JVM监控及诊断工具-GUI篇 1.工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局限: (1)无法获取方法级别的分析数据,如方法间的调用关系 ...

  2. [傅里叶变换及其应用学习笔记] 二十四. 级联,脉冲响应

    我们上节课学习了 在离散有限维空间中,任何线性系统都是通过矩阵间的相乘得到的 在连续无限维空间中,任何线性系统都是通过对核函数的积分得到的 脉冲响应(impulse response) 级联线性系统( ...

  3. Jenkins 持续集成 概念(学习笔记二十六)

    持续集成:提交.测试.构建.测试.部署 前不久接触了持续集成(Continuous Integration,CI). 一.持续集成是什么 首先说说"集成"的概念.在实际的软件开发中 ...

  4. 立创eda学习笔记二十六:手把手教你使用立创eda的官方教程

    可以通过以下办法找到教程: 1,在软件界面点帮助-使用教程 2,在网站首页-帮助-教程进入 如何使用教程: 这里是一级目录,其实对新手最有用的是前面3个部分,后面的仿真先不看. 常见问题里面不光是讲的 ...

  5. Java学习笔记二十六:Java多态中的引用类型转换

    Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...

  6. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  7. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  8. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  9. OpenCV学习笔记(十六):直方图均衡化:equalizeHist()

    OpenCV学习笔记(十六):直方图均匀化:equalizeHist() 参考博客: 直方图均衡化的数学原理 直方图匹配的数学原理 直方图均衡化广泛应用于图像增强中: 直方图均衡化处理的"中 ...

最新文章

  1. linux conntrack命令 路由连接 跟踪表 显示删除监听记录
  2. Winodws10 VS2019 Clion CMake 编译 OpenCV rc 系统找不到指定的文件。NMAKE : fatal error U1077
  3. 4代hiv检测50元_闲置甩干机卖了50元!大爷突然想起:里面还有4根金条
  4. SLAM 学习与开发经验分享
  5. CCIE理论-第十五篇-IPV6-重分布+ACL+前缀列表
  6. 一个CXF集成SPRING的WEBSERVICE完整实例
  7. Redis在Java项目中的依赖
  8. JAVA 实现《英文猜词游戏》游戏
  9. 什么水果有利于饭后消化?
  10. 新手怎样才能快速的学会建网站
  11. 计算机主板电池没电什么情况,主板电池没电会怎么样-电脑主板坏了会出现什么样的情况?...
  12. CSS 笔记——定位尺寸
  13. A40I工控主板(SBC-X40I)网络接口测试
  14. 傅里叶变换和拉普拉斯变换的物理解释及区别
  15. 数字IC设计工程师的知识结构
  16. 美国得州大停电是“人祸”,别想让光伏风电背锅!
  17. java cms建站系统源码_51javacms CMS系统
  18. Pascal面试考试题库和答案(命令式和过程式编程语言学习资料)
  19. 国标COD消解器快速测定化学耗氧量,确保分析结果可靠准确
  20. RabbitMQ(五)死信队列和延迟队列

热门文章

  1. 第六回严重鄙视360安全卫士
  2. 2006年大话IT数码新潮
  3. 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志
  4. 【C#】第3章学习要点(三)--常用类和结构的用法
  5. 京东首页302 Found报错 监控宝教你如何第一时间发现
  6. Java 数组的 12 个最佳方法
  7. 防止程序重复执行的单元
  8. 在VmWare Workstation 6.5上安装Esx 3.5 U3之二
  9. Cisco之ARP配置
  10. centos7使用yum安装mysql