从数学的角度,提供一个形象有趣的说明。理解傅里叶变换的钥匙是理解基♂,它能让你重新认识世界。 1. 什么是基? 假设一个科研所有四个所长(一正三副),四个所长各司其职,把整个科研所的事物管理得井井有条。这四个所长,少一个,单位的工作无法顺利展开,多一个碍手碍脚事倍功半,他们四人一道就组成了科研所的一个“基”。 一个单位的基可能不是唯一的,四个人换换位置工作也能展开,调走一个人再换一个人来顶替,单位亦可以正常运转,但是4这个数是不能变化的(数学语言:空间的维数固定不变)。 总结:一组基,就是足够能描述、表达某类事物的最少的一小撮元素们。 2. 基只有一种形式吗? 大家把科研所的日常事务换成感情,把四个所长换成语言字典重新来叙述。 假设你爱上了一个人,需要向她表达感情。这时就需要一套表达感情的工具——语言。如果使用汉语,你可以说“我爱你”,如果使用英文,你可以说“I love you”。汉语的所有词汇构成了一个集合,英语的所有词汇也构成了一个集合,它们都可以描述感情、感觉、事物和常识,它们是两套不同的描述系统,分别有自己的基。 总结:描述事物的基可以有很多套。 3. 如何构造一组基? 汉语的词汇量很大,有很多重复意义的词,比如我爱你就可以重新表述为:“俺爱你”,“我爱侬”,“我想和你困觉”等等。大家把汉语词汇中所有同意的词只保留一个(数学语言:使线性无关),留下来的词汇量较少的词典就是汉语的一个基,里面的每一个词被称作基函数。它的特点是:所有汉语能描述的思想都可以用从这个较小的词汇本中挑出的一些词汇(基函数)经过精心安排(加权相加)来描述,并且只有一种描述方式(数学语言:若基固定,则对应系数/坐标确定),因为大家已经去掉了所有冗余的、近似的词汇,因此不存在一个事物在一个基下有两种不同表示法存在。 总结:一套基中的元素很多,足够描述事物,只要从中挑出一些你需要的,按某种方式组合在一起即可,一套基中的元素很少,以至于这种描述事物的方法是唯一的。 4. 不同基之间有什么联系? 给定两个不同的语言,给出两个不同语言的小字典(两组基),大家都可以分别用唯一的方式表达同一思想(函数、点),这两种表示法之间可以相互转换(数学语言:坐标变换)。“I love you”和“我爱你”可以相互转化。 总结:给定一个基,大家就可以用这组基表达事物,也可以用它来翻译用其他基描述的事物,不同基下的表示可以相互转换。 5. 什么是傅里叶变换? 大家还记得三角函数sin和cos吗,就是那种波浪形状的函数,一个波浪的的宽度可以是不同的,既可以像跳大绳一样宽,也可以像电炉丝一样窄(数学语言:频率不同)。把这些三角函数放到一起组成一个字典,就恰好是连续函数的一组基:任何一个连续函数,都可以唯一表示成一群三角函数相叠加。然而每个三角函数的分量有轻有重,相加的时候有的要拉高点,有的要压低点,有的干脆不用(数学语言:加权系数不同)。到底是哪些三角函数呢,各个三角函数的分量如何呢?找到它们的过程,被称为傅里叶变换。 举几个例子: 下面两个图,左上角是某个函数(信号)的样子,它等于1000个震荡的三角函数相加,中间一列从下往上是这1000个三角函数中第0、1、2、3个,以及中间6、30、160、800个相加的样子,注意好几个三角函数加在一起就不再像是三角函数了。右边一列从下往上是把这些三角函数叠加在一起,1000个加在一起和原函数完全一样,但是前40个三角函数函数加在一起和原函数已经很相似了。 从这几个例子可以看出,把一系列震荡的三角函数按照傅里叶系数(权值)进行缩放再加起来,大概40个三角函数加到一起,就和原来的函数长得差不多了,无论原来的那个函数长的有多么奇特。因此大家说:蚂蚁也能撼大树,三角函数多了加到一起,多奇怪的连续函数我长的都能和你是一个样。
总结:给你一个函数,找到它的傅里叶变换,就是找到一堆系数,每一个系数对应一个不同频率的三角函数,这些三角函数分别按各自的系数改变振幅(数学语言:确定坐标),然后叠加在一起,恰好就与原来那个函数相等。 因此,四个处长是一组基,能维持一个单位的运转,处理各种问题; 一套简化的汉语词典是一组基,什么样的情感它都能找到唯一的表达语句; 一堆三角函数是一组基,什么样的连续函数都可以用一大堆三角函数叠加获得,找到这种表示的过程叫做傅里叶变换。 6. 傅里叶变换有什么用? 摆弄一系列三角函数,让这个多点那个少点,有一个酷炫的名字,叫“频域处理”, 你去了美国,不知道白宫怎么走,你问翻译:白宫怎么走? 翻译跑到街上问美国人:Where is the White House? 这叫傅里叶变换。 美国路人说:“go straight and turn right”。这叫频域处理。 翻译听完给你说:直走,右拐就到了。这叫逆傅里叶变换。 总结:傅里叶变换的作用,就是把一个函数或者信号在三角函数基下转化为一堆系数,摆弄这些系数、实现一定功能有时比直接摆弄原信号方便,最后再做个逆傅里叶变换,信号就得到了某种处理。 7. 傅里叶变换与压缩、简化表示 从第5小节大家知道了基变换的一个用处:压缩信号。原始信号需要用1000个点来表示,但是其实只需要40个三角函数系数就可以表示出大概。大家天天都会遇到的JPG图片就是干这个事的,一张800*600的彩色照片,如果保存成非压缩的BMP图像格式,需要占据1.4M存储空间,如果保存成JPG格式,大概50K就够了。JPG能压缩得这么利害,诀窍就在于它用了一组特别的基(小波基),使用特别少的基函数就可以把原始图像表示得八九不离十,在这里频域处理就是把绝大多数基函数前面的系数直接置0。为什么能这么干呢?因为小波基有很强的表达能力,大家总能选取极少的几个小波基函数就能拼出任意一个给定的图像的大概,然后即使抛弃剩下那些大量边角料,也不太会对视觉效果造成什么影响。 说到这里你肯定一头雾水,咱们再来做个类比来说说基的压缩能力。想象这样一个故事:女主角出生在孤儿院,和男主角相遇但是被抛弃,生下一个女儿,她后来做了个变性手术,穿越回到过去和还是女儿身的自己啪啪啪,带着女儿再次穿越到自己被收养时的孤儿院把婴儿抛弃在那。 如果你缺乏语言能力,比如你是一条狗,你怎样让另一条狗理解孤儿院、男、女、啪啪啪、抛弃、爱情这些真实世界中极度复杂的概念?你能做的最好的重述就是雇一男一女和一个时光机,把故事演一遍,对方还不一定能懂。语言能够在短短的一段话里就描述出这一个复杂的故事,因为它抛弃了大量细节,只保留最重要的信息:如果说真实世界每一个对象(物体、故事、情感)是一个函数,那么语言就是一组新的基,在这组基下,每一个基函数(词汇)都具有高强的描述能力,复杂的对象可以用聊聊几笔进行描述、压缩、传递,让人类能够高效地交流,快速地学习。 一个海岸有多少粒沙子?多少滴海水?一幅800*600像素的图像就能捕获你在海边嬉戏的靓影,只用了48万个基函数,如果你用JPG格式存储,调动的基函数还会更少。普通非压缩位图数字图像的基函数长的都一样:在一颗像素是白色(1),在其他所有像素都是黑色(0)——一个基就是一根孤零零的矩形棍子,其对应的系数就是对应像素的颜色值,真彩色的系数有约1600万种。
傅里叶变换和这幅图中的变换非常类似,只不过基函数不是一颗像素,而是震荡的三角函数。所有三角函数Asin(ax+b)也可以由一个三角函数sin(x)通过改变频率a,相位b和振幅A来获得,这种情况很有意思:一组基中所有的基函数都是由一个基函数进过简单地平移、拉伸或改变振幅获得。它的实质是另一种意义上的压缩:大家用一个基函数(数学语言:母函数)通过简单形变来生成其他基函数,再用它们一起表示更复杂的元素。大家不需要拉来一头牛一只羊来表示这里有一头牛一只羊,大家只需要用许多个基本元素,每一个都差不多,就能近似表示复杂的场景。这一思想的一个有趣的应用是游戏Minecraft,在这里基函数是一些等大立方体块,把它们拼在一起则组成了复杂世界的近似:
这个图和上面用40个三角函数近似一维信号、一堆像素近似二维物体是完全类似的,这里是用立方体近似三维世界。同样是对真实世界的近似描述,大家可以用一堆抽象词汇、用像素、用立方体块,也可以用三角函数形状的“块”,使用彼此近似但略微不同的基函数,大家就可以对无比复杂的真实世界的对象进行压缩、近似。三角函数基唯一的奇怪之处在于它是震荡的,看着不萌。 压缩的缺点是无法反向恢复,可以从一幅图像变换到另一幅,但是不能从一幅图像恢复真实世界。但是没人想捧着真实世界,人们需要的恰恰是对真实世界的高度凝练地表示。 8. 频域处理能干啥? 如果你不懂英文,一个妙龄少女对你说:Hi. I love you. Are you free tonight?你会回复她:姑娘你能不能不要说鸟语?滚回美帝玩泥巴吧。如果你懂英语,就会发现姑娘说的东西其实是有某种意义的,可以进一步处理。 在某些领域,傅里叶变换后的系数非常有用,大家前面已经举了傅里叶变换能够压缩数据的例子,下面再举几个其他例子。为了显示方便,举一个二维的例子,见下图:
原始图像中含有噪声,因为噪声往往是细小的雪花点,属于图像高频分量,因此大家把图像首先做傅里叶变换,然后把变换后的三角函数前的系数中属于高频的部分全部去掉(置0),然后再做逆傅里叶变换,大家发现图像中的细节(噪声点)减少了。这就是频率域去噪的基本原理。 在音频处理中,不同人对于同一个音节发出的声音,其傅里叶变换后的系数是不同的,并且可能每个人的模式是稳定的,就像指纹一样,那么傅里叶变换后的系数就可以来识别、合成某个人的声音,把某个人的发音中的某些系数进行调整,就变成了另一个人发音;所有人对于不同词汇的发音的傅里叶变换系数也可能具有某些固定模式,利用这些模式可以发展声音的理解技术,比如Siri。现在政府监督电话敏感词,再也不是找接线员一个个听了,而是用电脑自动监听,如果发现某人的通讯中敏感词频率较高,再派专人处理。 9. 还有哪些基大家可能听过,但是不曾认识到? 多项式基:多项式多了,啥稀奇古怪的函数都能表示,不信你试试泰勒展开式有多好用就知道了。 小波基:傅里叶基(三角函数)的改进,可以进行局部控制。 B-样条基:多项式基的改进,可以进行局部控制,画家画画用的就是这东西。 一幅800*600的图像,大家既可以认为它是一幅抽象的图像,也可以认为它是一个由800*600个基函数(一个基函数是某一颗像素值为1,其他所有像素值为0的图像)进行加权相加获得的一个坐标表示。
|