視聽覺訊號部分—學習報告
訊號部分——學習報告
王世龍
文章目錄
0 綜述
目前已經學習了視聽覺訊號處理這門課的第一部分——訊號基礎,雖然課時很短,但是學到的東西卻一點也不少。在大一的數字邏輯課程上,應該是第一次接觸訊號這些概念,只是有個大概的概念。之後大二有學過自動控制原理,學的訊號知識就比較多了,衝激訊號,二階系統響應等等,當時甚至用過拉普拉斯變換;所以對訊號這部分也就不算兩眼一抹黑,啥都不會了。
在這一部分中,我覺得最重要的部分要算訊號分解與變換這塊的知識,比如傅立葉變換,z變換等。這些變換內容很多,還有各種變體,由於課時原因,老師在上課只能給我們開個頭,過一遍概念,實際應用;最終還需要我在課餘時間自己多學習這方面知識,加深理解。我也會在這篇學習報告中,著重討論這方面的知識。
這幾周的學習,相當於老師帶我入門,訊號部分是視聽覺工作的基礎中的基礎,以後我還會涉獵這方面相關的知識,加深理解,拓寬見識。
1 訊號
訊號其實就是資訊的載體、表現形式。
一般我們身邊可以接觸到的訊號有:
-
自然和物理訊號:語音、影象、生理訊號等
-
人工產生的訊號:雷達訊號、通訊訊號、醫用超聲訊號等
人們通常想獲得的是資訊,但是一般得到的都是訊號,所以對訊號的表示,處理就尤為重要。
1.1 訊號分類
按自變數個數分類:一維,二維,n維
按確定性:確定訊號,隨機訊號
按週期性:週期訊號,非週期訊號
模擬訊號、抽樣訊號、數字訊號
時間連續訊號、時間離散訊號
等等…
這塊瞭解即可
1.2 典型訊號
- 正餘弦訊號:
f ( t ) = K s i n ( ω t + θ ) f(t)=Ksin(\omega t+\theta) f(t)=Ksin(ωt+θ)
在訊號系統分析裡,sin,cos訊號統稱為正弦訊號!!!
並且訊號系統中正弦訊號就是用cos函式定義的
- 指數訊號
f ( t ) = K e α t f(t)=Ke^{\alpha t} f(t)=Keαt
- 復指數訊號
f ( t ) = K e s t ( s = σ + j ω ) f(t)=Ke^{st}\ \ \ \ \ (s=\sigma+j\omega) f(t)=Kest(s=σ+jω)
實際不存在,但可以用於描述各種訊號。
σ>0(σ<0)時,增幅(衰減)振盪正、餘弦訊號;σ=0時等振幅振盪正、餘弦訊號;ω=0時,實指數訊號;σ=0且ω=0時,直流訊號。
- 高斯訊號
f ( t ) = K e − ( t / τ ) 2 f(t)=Ke^{-(t/ \tau )^2} f(t)=Ke−(t/τ)2
- 單位階躍訊號
u ( t ) = { 0 t < 0 1 t > 0 u(t)= \begin{cases} 0 &t<0\\ 1 &t>0 \end{cases} u(t)={01t<0t>0
- 單位衝擊訊號
δ ( t ) : { ∫ − ∞ ∞ δ ( t ) = 1 δ ( t ) = 0 ( t ≠ 0 ) \delta(t): \begin{cases}\int_{-\infty}^{\infty}\delta(t)=1\\\delta(t)=0\ (t\ne0)\end{cases} δ(t):{∫−∞∞δ(t)=1δ(t)=0(t=0)
描述自然界中那些發生後持續時間很短的現象。
單位衝擊訊號具有很多特殊的性質
比如:
抽樣特性: ∫ − ∞ ∞ f ( t ) δ ( t − t 0 ) d t = f ( t 0 ) \int_{-\infty}^{\infty}f(t)\delta(t-t_0)dt=f(t_0) ∫−∞∞f(t)δ(t−t0)dt=f(t0)
1.3 訊號運算
- 四則運算:四則運算後的訊號在任意一點的取值定義為原 訊號在同一點處函式值作相同四則運算的結果
- 例:衝擊串*連續訊號=抽樣訊號
- 時移運算:
f ( t ) → f ( t − b ) f(t)\to f(t-b) f(t)→f(t−b)
- 壓闊運算:
f ( t ) → f ( a t ) f(t)\to f(at) f(t)→f(at)
時移和壓闊運算在後面也是各種被提到
- 積分微分運算:大一高數就講過,不在贅述
- 卷積運算:卷積部分詳情參見後面的 [卷積運算](#3 卷積運算)
2 系統
系統是若干相互作用和相互依賴的事物所組成的 具有特定功能的整體。
我認為“系統”可以看作是一個過程,它以一些訊號作為輸入,並以一定特徵輸出另一些訊號(如下圖)
本門課程重點用到的是線性時不變系統(LTI):
- 線性;
- 時不變性:
e ( t ) → r ( t ) ⇒ e ( t − t 0 ) → r ( t − t 0 ) e(t)\to r(t)\Rightarrow e(t-t_0)\to r(t-t_0) e(t)→r(t)⇒e(t−t0)→r(t−t0)
一些自己的理解:
線性的優點是可以將輸入訊號分解為一些基本訊號的線性組合,這些基本訊號對應的輸出訊號很容易得到,然後進一步就可以求得各自輸出的線性組合了。(所以傅立葉變換就很適用)
線性時不變(LTI)系統中:對輸入訊號的響應可以通過求取輸入訊號與系統的衝擊響應的卷積得到(這個我們在下一節卷積運算中還會提到)。也就是說,只要知道了衝激響應,就能完整地表徵整個系統的特性了。
3 卷積運算
3.1 定義與性質
卷積定義:
f
1
(
t
)
∗
f
2
(
t
)
=
∫
−
∞
∞
f
1
(
τ
)
f
2
(
t
−
τ
)
d
t
f_1(t)*f_2(t)=\int^\infty_{-\infty}f_1(\tau)f_2(t-\tau)dt
f1(t)∗f2(t)=∫−∞∞f1(τ)f2(t−τ)dt
- 滿足交換律,結合律,分配律
- 單位衝擊函式的搬移特性
f ( t ) ∗ δ ( t − t 0 ) = f ( t − t 0 ) f(t)*\delta(t-t_0)=f(t-t_0) f(t)∗δ(t−t0)=f(t−t0)
- 卷積微分性質:兩個訊號卷積的微分等於其中任一訊號的微分與另一訊號的卷積。
- 卷積積分性質:兩個訊號卷積的積分等於其中任一訊號的積分與另一訊號的卷積。
3.2 理解
其實要背過這個運算的公式,性質;那是很簡單的。但是要理解什麼時候要用它,什麼時候適合用它,就需要徹底弄明白它的意義,深層含義。下面是我學到目前為止對卷積的理解
卷積這個概念最初是線上性時不變系統中引入的,其目的是求某一輸入訊號經線性時不變系統作用後的輸出訊號。
舉個形象的離散卷積例子:
丟骰子:兩枚骰子點數加起來是4的概率是多少?
分3種情況:
總的概率為:
f
∗
g
(
4
)
=
f
(
1
)
g
(
3
)
+
f
(
2
)
g
(
2
)
+
f
(
3
)
g
(
1
)
=
∑
m
=
1
3
f
(
4
−
m
)
g
(
m
)
f*g(4)=f(1)g(3)+f(2)g(2)+f(3)g(1)\\ =\sum_{m=1}^3f(4-m)g(m)
f∗g(4)=f(1)g(3)+f(2)g(2)+f(3)g(1)=m=1∑3f(4−m)g(m)
對卷積的意義的理解:
-
從“積”的過程可以看到,我們得到的疊加值,是個全域性的概念。以訊號分析為例,卷積的結果是不僅跟當前時刻輸入訊號的響應值有關,也跟過去所有時刻輸入訊號的響應都有關係,考慮了對過去的所有輸入的效果的累積。在影象處理的中,卷積處理的結果,其實就是把每個畫素周邊的,甚至是整個影象的畫素都考慮進來,對當前畫素進行某種加權處理。所以說,“積”是全域性概念,或者說是一種“混合”,把兩個函式在時間或者空間上進行混合。
-
那為什麼要進行“卷”?直接相乘不好嗎?我的理解,進行“卷”(翻轉)的目的其實是施加一種約束,它指定了在“積”的時候以什麼為參照。在訊號分析的場景,它指定了在哪個特定時間點的前後進行“積”,在空間分析的場景,它指定了在哪個位置的周邊進行累積處理。
我們再看回投骰子的例子:
首先,因為兩個骰子的點數和是4,為了滿足這個約束條件,我們還是把函式 g 翻轉一下,然後陰影區域上下對應的數相乘,然後累加,相當於求自變數為4的卷積值,如下圖所示:
這就是卷積。
一言以蔽之:卷積其實就是某一作用在某一約束(位置)下的累計效果
4 空間投影變換
其實大一在學線性代數的時候,就比較困惑:行列式,矩陣,到底有什麼實際意義呢???當時只是在認真學知識,記公式,記性質,沒有好好去理解這些東西內在的關聯,深層的意義。在大三分專業後,有幾門課對線性代數的要求突然提高,之前基礎就不是很牢固,於是我在網上查詢相關學習資料,我要特別推薦(3blue1brown)線性代數的本質這個視訊,讓我徹底學懂了這塊知識!
首先你需要知道:矩陣的乘法的幾何意義就是空間變換!!!
代表 經過M的變換後變成了 。考慮原空間中的所有向量所構成的空間 ,那麼 ,也就是空間 經過 的變換變為了空間 。
所以描述的是空間之間是如何變換的,舉個例子:
M
=
[
3
1
1
2
]
M=\begin{bmatrix}3 & 1 \\ 1 & 2\\ \end{bmatrix}
M=[3112]
描述的是從
到
的空間變換
用公式描述為:
[
−
1
3
]
=
M
∗
[
−
1
2
]
\begin{bmatrix}-1 \\ 3\\ \end{bmatrix}=M*\begin{bmatrix}-1 \\ 2\\ \end{bmatrix}
[−13]=M∗[−12]
即:向量
[
−
1
2
]
\begin{bmatrix}-1 \\ 2\\ \end{bmatrix}
[−12]通過M矩陣變換為
[
−
1
3
]
\begin{bmatrix}-1 \\ 3\\ \end{bmatrix}
[−13]
那麼, M M M矩陣是如何表示這個變換的呢???
我們觀察變換後的空間:
兩個基向量分別變為: [ 3 1 ] \begin{bmatrix}3 \\ 1\\ \end{bmatrix} [31]和 [ 1 2 ] \begin{bmatrix}1 \\ 2\\ \end{bmatrix} [12],而 M = [ 3 1 1 2 ] M=\begin{bmatrix}3 & 1 \\ 1 & 2\\ \end{bmatrix} M=[3112]
結論顯而易見: M M M矩陣的每一列表示的是變換之後的空間的基向量的座標
或者可以理解為:變換矩陣 將 對映為什麼。(這裡預設原空間基向量為標準正交基)。例如上圖中變換矩陣 將 對映為 ,因此若在,原座標系下座標為 ,即,因此對映為 。計算的時候表示為:
我們來看上課老師講的一個小例子:旋轉矩陣
旋轉矩陣需要完成圖形的旋轉,二維旋轉中最簡單的場景是繞著座標原點進行的旋轉,如下圖所示:
那麼我們如何表示這個變換?這就要用到旋轉矩陣了
M
(
θ
)
=
[
c
o
s
(
θ
)
−
s
i
n
(
θ
)
s
i
n
(
θ
)
c
o
s
(
θ
)
]
M(\theta)=\begin{bmatrix}cos(\theta) & -sin(\theta) \\ sin(\theta) & cos(\theta)\\ \end{bmatrix}
M(θ)=[cos(θ)sin(θ)−sin(θ)cos(θ)]
我們可以用上面的思想理解:將空間旋轉
θ
\theta
θ 角度,即:
i
:
[
1
0
]
→
[
c
o
s
(
θ
)
s
i
n
(
θ
)
]
j
:
[
0
1
]
→
[
−
s
i
n
(
θ
)
c
o
s
(
θ
)
]
i:\begin{bmatrix}1 \\ 0\\ \end{bmatrix} \to\begin{bmatrix} cos(\theta)\\ sin(\theta)\\ \end{bmatrix}\\ j:\begin{bmatrix}0 \\ 1\\ \end{bmatrix} \to\begin{bmatrix} -sin(\theta)\\ cos(\theta)\\ \end{bmatrix}
i:[10]→[cos(θ)sin(θ)]j:[01]→[−sin(θ)cos(θ)]
所以空間中任意向量旋轉之後的座標計算公式如下:
[
x
n
e
w
y
n
e
w
]
=
M
(
θ
)
∗
[
x
y
]
\begin{bmatrix} x_{new}\\ y_{new}\\ \end{bmatrix}=M(\theta)*\begin{bmatrix} x\\ y\\ \end{bmatrix}\\
[xnewynew]=M(θ)∗[xy]
5 訊號正交分解
正交函式:
在區間(t1,t2)內的兩個函式 ψ 1 ( t ) , ψ 2 ( t ) \psi_1(t),\psi_2(t) ψ1(t),ψ2(t)滿足:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-L3uisyup-1602599269628)(https://i.loli.net/2020/10/12/2ovUAV984Z6pyYR.png)]
正交函式集:
若n個函式 ψ 1 ( t ) , ψ 2 ( t ) . . . ψ n ( t ) \psi_1(t),\psi_2(t)...\psi_n(t) ψ1(t),ψ2(t)...ψn(t)構成一個函式集,當這些函式在區間(t1,t2)內滿足:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-4b51Dtxs-1602599269630)(C:\Users\long\Desktop\新建資料夾\捕獲1.JPG)]
則此函式集為在區間(t1,t2)的正交函式集。
訊號正交分解:
就是將訊號f(t)表示成這 n 個正交函式的線性組合。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-L8QeYzRS-1602599269631)(https://i.loli.net/2020/10/12/cEeWd4uYgoFUz3T.jpg)]
說明:存在誤差,當 n → ∞ n\to \infty n→∞時(完備正交函式集),誤差為零。
5.1 傅立葉變換
自我感覺離散傅立葉變換更容易理解一些,就先從離散傅立葉變換(DFT)開始吧
5.1.1 離散傅立葉變換
DFT做了什麼?
在長度為N的離散訊號中,針對k=(0,1,2…),分別找出在長度N內振動k個週期的三角波分量的權值
在機器學習的課上,老師講到:內積其實就是求相似程度,內積越大,越相似!
相似度函式如下:
設原訊號為 x [ n ] x[n] x[n],要看該訊號與長度N內振動K個週期的正弦波的相似度,即 :
我們看看真正的離散傅立葉變換:
可以看到,差距有兩點:
- 1,沒有sin函式;只跟餘弦函式比,會缺少一些資訊,比如:相位。
- 2,沒有 j j j(復值);其實復座標只是工具,方便計算和化簡(因為可以用尤拉公式)
舉個例子:
原訊號:
與餘弦對比:
與負正弦對比:
所以
X
2
=
10
2
+
j
10
2
X_2=10 \sqrt{2}+j10\sqrt{2}
X2=102
+j102
相位為
π
4
\frac{\pi}{4}
4π
注:根據DFT結果求得的相位是相對餘弦訊號的相位。
總結一下,這裡有三種不同得理解:
- 對一段有限長的離散訊號,找出它含有的各個頻率的正弦波分量。(課本)
- 離散傅立葉變換就是在將時域訊號,分解到頻域(一組完備正交基得線性組合)
- 是傅立葉變換在時域和頻域上都呈現離散的形式,將時域訊號的取樣變換為在離散時間傅立葉變換(DTFT)頻域的取樣。
5.1.2 連續傅立葉變換
知道離散傅立葉變換後,相信連續傅立葉變換也不難理解
傅立葉變換的核心是從時域到頻域的變換,而這種變換是通過一組特殊的正交基來實現的。我們要找到一個溝通時域和頻域的橋樑,也就是一個翻譯,讓時域和頻域能夠無障礙的溝通。但是,時域和頻域表達的又只能是同一種資訊,只是表現形式不同。
傅立葉變換對:
補充:快速傅立葉變換
在實際工程應用中,由於訊號都是連續的、無限的,計算機不能處理,於是就有了傅立葉級數、傅立葉變換,將訊號由時域變到頻域,把一個訊號變為有很多個不同頻率不同幅度的正弦訊號組成,這樣計算機就能處理了,但又由於傅立葉變換中要用到卷積計算,計算量很大,於是就有了快速傅立葉變換,大大降低了運算量,使得讓計算機處理訊號成為可能。
快速傅立葉變換是傅立葉變換的快速演算法而已,將離散傅立葉變換的複雜度從 O ( n 2 ) O(n^2) O(n2)降到 O ( n l o g n ) O(nlogn) O(nlogn),對於硬體實現特別有利。
5.2 拉普拉斯變換
連續時間傅立葉變換與拉普拉斯變換:
連續時間傅立葉變換的公式是:,這裡的是實數。
傅立葉變換要求時域訊號絕對可積,即。
為了讓不符合這個條件的訊號,也能變換到頻率域,我們給x(t)乘上一個指數函式,為(滿足收斂域的)任意實數。
可以發現,這個函式,就滿足了絕對可積的條件,即。
於是這個新函式的傅立葉變換就是:,化簡得。顯然是一個複數,我們把這個複數定義為一個新的變數——複頻率,記為s。
於是便得到了拉普拉斯變換的公式:
所以拉普拉斯變換解決了不滿足絕對可積條件的連續訊號,變換到頻率域的問題,同時也對“頻率”的定義進行了擴充。
所以拉普拉斯變換與連續時間傅立葉變換的關係是:
拉普拉斯變換將頻率從實數推廣為複數,因而傅立葉變換變成了拉普拉斯變換的一個特例。當s為純虛數時,x(t)的拉普拉斯變換,即為x(t)的傅立葉變換。
5.3 z變換
離散時間傅立葉變換(DTFT)與Z變換的關係:
DTFT的公式是,這裡的是連續變化的實數。
同樣的,DTFT需要滿足絕對可和的條件,即。
為了讓不滿足絕對可和條件的函式x[n],也能變換到頻率域,我們乘一個指數函式, a a a為(滿足收斂域的)任意實數。
於是這個新函式的傅立葉變換就是:,化簡得:,顯然,是一個極座標形式的複數,我們把這個複數定義為離散訊號的複頻率,記為z。
則得到Z變換的公式:。
Z變換解決了不滿足絕對可和條件的離散訊號,變換到頻率域的問題,同時也同樣對“頻率”的定義進行了擴充。
所以Z變換與離散時間傅立葉變換(DTFT)的關係是:
Z變換將頻率從實數推廣為複數,因而DTFT變成了Z變換的一個特例。當z的模為1時,x[n]的Z變換即為x[n]的DTFT。