天天看點

二維小波變換_很好的一篇小波變換的基礎介紹

話說很早以前,我們接觸的信号頻域處理基本都是傅立葉和拉普拉斯的天下。但這些年,小波在信号分析中的逐漸興盛和普及。這讓人不得不感到好奇,是什麼特性讓它在圖象壓縮,信号處理這些關鍵應用中更得到信賴呢?說實話,我還在國内的時候,就開始好奇這個問題了,于是放狗搜,放毒搜,找遍了中文講小波變換的科普文章,發現沒幾個講得清楚的,當時好奇心沒那麼重,也不是搞這個研究的,懶得找英文大部頭論文了,于是作罷。後來來了這邊,有些項目要用信号處理,不得已接觸到一些小波變換的東西,才開始硬着頭皮看。看了一些材料,聽了一些課,才發現,還是那個老生常談的論調:國外的技術資料和國内不是一個檔次的。同樣的事情,别人說得很清楚,連我這種并不聰明的人也看得懂; 國内的材料則繞來繞去講得一 塌糊塗,除了少數天才沒幾個人能在短時間掌握的。

考慮到我以前看中文資料的痛苦程度,我會盡量用簡單,但是直覺的方式去介紹。有些必要的公式是不能少的,但我盡量少用公式,多用圖。另外,我不是一個好的翻譯者,是以對于某些實在翻譯不清楚的術語,我就會直接用英語。我并不claim我會把整個小波變換講清楚,這是不可能的事,我隻能盡力去圍繞要點展開,比如小波變換相對傅立葉變換的好處,這些好處的原因是什麼,小波變換的幾個根本性質是什麼,背後的推導是什麼。我希望達到的目的就是一個小波變換的初學者在看完這個系列之後,就能用matlab或者别的工具對信号做小波變換的基本分析并且知道這個分析大概是怎麼回事。

最後說明,我不是研究信号處理的專業人士,是以文中必有疏漏或者錯誤,如發現還請不吝賜教。

要講小波變換,我們必須了解傅立葉變換。要了解傅立葉變換,我們先要弄清楚什麼是”變換“。很多處理,不管是壓縮也好,濾波也好,圖形處理也好,本質都是變換。變換的是什麼東西呢?是基,也就是basis。如果你暫時有些遺忘了basis的定義,那麼簡單說,線上性代數裡,basis是指空間裡一系列線性獨立的向量,而這個空間裡的任何其他向量,都可以由這些個向量的線性組合來表示。那basis在變換裡面啥用呢?比如說吧,傅立葉展開的本質,就是把一個空間中的信号用該空間的某個basis的線性組合表示出來,要這樣表示的原因,是因為傅立葉變換的本質,是。小波變換自然也不例外的和basis有關了。再比如你用Photoshop去處理圖像,裡面的圖像拉伸,反轉,等等一系列操作,都是和basis的改變有關。

既然這些變換都是在搞基,那我們自然就容易想到,這個basis的選取非常重要,因為basis的特點決定了具體的計算過程。一個空間中可能有很多種形式的basis,什麼樣的basis比較好,很大程度上取決于這個basis服務于什麼應用。比如如果我們希望選取有利于壓縮的話,那麼就希望這個basis能用其中很少的向量來最大程度地表示信号,這樣即使把别的向量給砍了,信号也不會損失很多。而如果是圖形進行中常見的線性變換,最省計算量的完美basis就是eigenvector basis了,因為此時變換矩陣 T對它們的作用等同于對角矩陣( Tv_n = av_n,a是eigenvalue )。總的來說,抛開具 體的應用不談,所有的basis,我們都希望它們有一個共同的特點,那就是,容易計算,用最簡單的方式呈現最多的信号特性。

二維小波變換_很好的一篇小波變換的基礎介紹

圖文無關

好,現在我們對變換有了基本的認識,知道他們其實就是在搞基。當然,搞基也是分形式的,不同的變換,搞基的妙處各有不同。接下來先看看,傅立葉變換是在幹嘛。

傅立葉級數最早是Joseph Fourier 這個人提出的,他發現,這個basis不僅僅存在與 vector space,還存在于function space。這個function space本質上還是一個linear vector space,可以是有限的,可以是無限的,隻不過在這個空間裡,vector就是 function了,而對應的标量就是實數或者複數。在ector space裡,你有vector v可以 寫成vector basis的線性組合,那在function space裡,function f(x)也可以寫成對應 function basis的線性組合,也有norm。你的vector basis可以是正交的,我的function basis也可以是正交的(比如sin(t)和sin(2t))。唯一不同的是,我的function basis是無窮盡的,因為unction space的次元是無窮的。傅立葉級數應用如此廣泛的主要原因之一,就是它們這幫子function basis 是正交的,這就是有趣的地方了。為什麼function basis正交如此重要呢?我們說兩 個vector正交,那就是他倆的内積為0。

現在我們知道,傅立葉變換就是用一系列三角波來表示信号方程的展開,這個信号可以是連續的,可以是離散的。傅立葉所用的function basis是專門挑選的,是正交的,是利于計算coefficients的。但千萬别誤解為展開變換所用的basis都是正交的,這完全取決于具體的使用需求,比如泰勒展開的basis就隻是簡單的非正交多項式。

有了傅立葉變換的基礎,接下來,我們就看看什麼是小波變換。首先來說說什麼是小波。所謂波,就是在時間域或者空間域的震蕩方程,比如正弦波,就是一種波。

什麼是波分析?針對波的分析拉(囧)。并不是說小波分析才屬于波分析,傅立葉分析也是波分析,因為正弦波也是一種波嘛。那什麼是小波呢?這個”小“,是針對傅立葉波而言的。傅立葉所用的波是什麼?正弦波,這玩意以有着無窮的能量,同樣的幅度在整個無窮大區間裡面振蕩。

那小波是什麼呢?是一種能量在時域非常集中的波。它的能量是有限的,而且集中在某一點附近。這種小波有什麼好處呢?它對于分析瞬時時變信号非常有用。它有效的從信号中提取資訊,通過伸縮和平移等運算功能對函數或信号進行多尺度細化分析,解決了傅立葉變換不能解決的許多困難問題。恩,以上就是通常情況下你能在國内網站上搜到的小波變換文章告訴你的。但為什麼呢?這是我希望在這個系列文章中講清楚的。不過在這篇文章裡,我先點到為止,把小波變換的重要特性以及優點cover了,在下一篇文章中再具體推導這些特性。

小波變換的本質和傅立葉變換類似,也是用精心挑選的basis來表示信号方程。每個小波變換都會有一個mother wavelet,我們稱之為母小波,同時還有一個scaling function,中文是尺度函數,也被成為父小波。任何小波變換的basis函數,其實就是對這個母小波和父小波縮放和平移後的集合。

和傅立葉級數有一點不同的是,小波級數通常是orthonormal basis,也就是說,它們不僅兩兩正交,還歸一化了。小波級數通常有很多種,但是都符合下面這些特性:

1. 小波變換對不管是一維還是高維的大部分信号都能cover很好。這個和傅立葉級數有很大差別。後者最擅長的是把一維的,類三角波連續變量函數信号映射到一維系數序列上,但對于突變信号或任何高維的非三角波信号則幾乎無能為力。

2. 圍繞小波級數的展開能夠在時域和頻域上同時定位信号,也就是說,信号的大部分能量都能由非常少的展開系數,比如a_{j,k},決定。這個特性是得益于小波變換是二維變換。我們從兩者展開的表達式就可以看出來,傅立葉級數是 ,而小波級數是 。

3. 從信号算出展開系數a需要很友善。普遍情況下,小波變換的複雜度是O(Nlog(N)),和FFT相當。有不少很快的變換甚至可以達到O(N),也就是說,計算複雜度和信号長度是線性的關系。小波變換的等式定義,可以沒有積分,沒有微分,僅僅是乘法和加法即可以做到,和現代計算機的計算指令完全match。

可能看到這裡,你會有點暈了。這些特性是怎麼來的?為什麼需要有這些特性?具體到實踐中,它們到底是怎麼給小波變換帶來比别人更強的好處的?計算簡單這個可能好了解,因為前面我們已經講過正交特性了。那麼二維變換呢?頻域和時域定位是如何進行的呢?恩,我完全了解你的感受,因為當初我看别的文章,也是有這些問題,就是看不到答案。要說想完全了解小波變換的這些本質,需要詳細的講解,是以我就把它放到下一篇了。

繼續閱讀