1 序
數(shù)字媒體技術(shù)是迷人的,但是它又充滿魔力,吸引了很多開發(fā)者投入到該領(lǐng)域中。但是從一名開發(fā)者的角度,如何從零開始一步一步成為經(jīng)驗(yàn)豐富的音視頻開發(fā)者。如何一步一步建立自己的知識體系,如何從浩瀚如海的數(shù)字媒體知識海洋中找到符合當(dāng)前階段的重要知識。在這個(gè)問題上盡管我現(xiàn)在仍沒有明確的答案,但是比剛進(jìn)入這個(gè)領(lǐng)域時(shí)更覺前路清晰。
因此,從此篇文章開始,我將站在一個(gè)iOS開發(fā)者的角度,將搭建屬于我的知識體系的心路歷程和有相同興趣的伙伴分享。
2 數(shù)字媒體簡介
如果對一個(gè)領(lǐng)域有野心,那么了解這個(gè)領(lǐng)域的基礎(chǔ)知識,大的框架是第一步。正如搭建知識樹時(shí),總會(huì)從枝干開始。要在iOS項(xiàng)目中做出一個(gè)游戲的短視頻APP,可以所涉及到的知識分為四個(gè)部分,媒體編輯、圖像渲染、和圖形識別、媒體資源管理。它們之間的關(guān)系可以表示為下圖。

想要掌握上層框架的原理,那么熟悉數(shù)字媒體基礎(chǔ)中的理論知識則是必不可少的一步。在該部分內(nèi)容中,我們不會(huì)涉及到實(shí)踐操作,我們不會(huì)去編寫一段代碼從而生成一段視頻,也不會(huì)去編寫一段代碼完成一段視頻特效。我們更關(guān)注的是,當(dāng)設(shè)備的攝像頭和麥克風(fēng)被激活后,數(shù)據(jù)流是如何被一步一步處理,從而最終形成了一個(gè)視頻文件。我們會(huì)分析其中涉及到的數(shù)據(jù)采集、量化和編碼過程,也會(huì)了解這些過程背后的數(shù)學(xué)知識。
相信很多人和剛?cè)腴T時(shí)的我一樣,我們都有過視頻開發(fā)的經(jīng)驗(yàn),盡管從未深入了解數(shù)字媒體技術(shù)基礎(chǔ)中的知識,我們?nèi)詧?jiān)定的認(rèn)為我們足夠熟悉音視頻軟件的開發(fā)。因此在繼續(xù)分享之前我們可以問自己如下幾個(gè)問題:一、使用AVFoundation框架采集視頻幀和音頻幀時(shí),如何控制視頻和音頻采樣的格式,其中的位深度、顏色空間和采樣頻率指的都是什么?二、采集到的音頻數(shù)據(jù)如何去除環(huán)境噪音?三、圖像濾波器是指的什么?它有什么作用?四、音頻幀和視頻幀是什么?如何確保它們是同步的?五、音頻數(shù)據(jù)和視頻數(shù)據(jù)是如何被編碼的?有損編碼時(shí)損失的是哪部分的數(shù)據(jù)?

本系列文章將會(huì)從數(shù)字?jǐn)?shù)據(jù)、數(shù)字圖像、數(shù)字音頻和數(shù)字視頻四個(gè)方向去介紹數(shù)字媒體相關(guān)的知識。本篇文章微第一篇,主要講述數(shù)字?jǐn)?shù)據(jù)的表示和處理相關(guān)知識。
3 模擬數(shù)據(jù)和數(shù)字?jǐn)?shù)據(jù)
學(xué)習(xí)數(shù)字?jǐn)?shù)據(jù)之前了解模擬數(shù)據(jù)相關(guān)知識是必須的,簡單的講模擬數(shù)據(jù)是連續(xù)的數(shù)據(jù),而數(shù)字?jǐn)?shù)據(jù)是在連續(xù)數(shù)據(jù)上的采樣,它是離散數(shù)據(jù)。如下圖中的左上角的照片,在自然界中我們所看見的畫面任意兩點(diǎn)之間我們都可以認(rèn)為其中有無限個(gè)像素。而由上角表示數(shù)字?jǐn)?shù)據(jù)的照片,我們可以清晰的看見它是由一個(gè)一個(gè)像素點(diǎn)組成。而數(shù)字圖像文件保存的就是這些像素點(diǎn)的顏色值。
同樣的,左下圖表示的音樂是模擬數(shù)據(jù),兩個(gè)音符之間的仍然可以有無窮個(gè)漸變的音符組成。而右下角的音頻信號表示的是離散的數(shù)字音樂,它是由有限個(gè)表示聲音壓強(qiáng)的樣本組成。

3.1 模擬音頻和數(shù)字音頻
圖像和聲音都可以用函數(shù)表示,并且可以通過曲線形象的表示出來。聲音是一個(gè)一維函數(shù),如果將聲音看作是一個(gè)連續(xù)的模擬現(xiàn)象,則可以用函數(shù)y=f(x)表示,其中x表示時(shí)間,y表示氣壓振幅。f(x)的基本函數(shù)是正弦函數(shù)(余弦函數(shù)看做是發(fā)生相移的正弦函數(shù))。
從物理學(xué)抽象的角度看,聲波是一種機(jī)械波,它是通過某種傳播介質(zhì)中質(zhì)點(diǎn)的運(yùn)動(dòng)產(chǎn)生。下圖模擬了聲波產(chǎn)生的過程。

圖的右側(cè)是一個(gè)音叉,理論上它只能以固定的頻率震動(dòng),從而發(fā)出頻率單一的音波。在音叉靜止?fàn)顟B(tài)時(shí),空氣分子在空間中均勻分布。當(dāng)音叉向左側(cè)震動(dòng)時(shí),其右側(cè)進(jìn)距離的空間范圍內(nèi),空氣分子擴(kuò)散,該空間內(nèi)空氣壓強(qiáng)降低。同樣的,當(dāng)音叉向右側(cè)運(yùn)動(dòng)時(shí),其右側(cè)近距離空氣壓強(qiáng)開始升高。并且上一次壓強(qiáng)減低的效應(yīng)傳遞到更遠(yuǎn)處,導(dǎo)致更遠(yuǎn)處的空氣分子向音叉所在的方位運(yùn)動(dòng),從而導(dǎo)致更遠(yuǎn)處空間內(nèi)空氣壓強(qiáng)降級。
當(dāng)音叉來回震動(dòng)時(shí),上述物理現(xiàn)象規(guī)律發(fā)生。導(dǎo)致從音叉附近的空氣壓強(qiáng)規(guī)律變化,如上圖下部分描述,其中x軸表示時(shí)間,y軸表示空氣壓強(qiáng)。與此同時(shí)在距離音叉不遠(yuǎn)處的人耳耳膜感受到這種規(guī)律的空氣壓強(qiáng)變換,最終使得我們能聽到音叉發(fā)出的聲音。
使用正弦函數(shù)表示一個(gè)聲波需要將頻率f轉(zhuǎn)化為角頻率w。他們的換算公式為w = 2πf。如一個(gè)頻率為440Hz的聲波可以使用正弦函數(shù)sin(880π)表示。
單一頻率的音調(diào)表示為一個(gè)簡單的正弦函數(shù),但是自然界中極少的聲音只有單一的頻率,他們都由多個(gè)頻率的震動(dòng)組成。將大量簡單的波形組合在一起就可以表示復(fù)雜的波形,下入描述了音樂音符C、E、G分別演奏以及他們同時(shí)演奏表現(xiàn)和弦時(shí)的波形。

多個(gè)簡單的音波可以合成復(fù)雜的音波,同樣的我們也可以將一個(gè)復(fù)雜的音波分離成多個(gè)單一頻率的波,這種方法叫傅里葉變換。傅里葉分析表明,任何周期信號都可以分解為無數(shù)個(gè)正弦波的疊加,簡單的正弦波稱為復(fù)雜波的頻率成分。
使用傅里葉變換可以將復(fù)雜的聲波以數(shù)字的形式存儲,分析波的頻率成分,同時(shí)過濾掉不需要的部分。濾波可以用來提高音頻的質(zhì)量或者壓縮數(shù)字音頻文件。
3.2 模擬圖像和數(shù)字圖像
和音頻的處理類似,我們也可以將圖像抽象為波的形式。如下圖所示,頂部的彩色圖為衣服圖像的一部分。當(dāng)然這里使用的是數(shù)字圖像,我們能清晰的在上面看見像素點(diǎn),當(dāng)將其延伸到模擬圖像并不難,正如前文所描述,模擬圖像即我們可以理解為任意兩個(gè)點(diǎn)之間都有無線個(gè)像素點(diǎn)。
中間的灰色條帶是其上面彩色圖的第一個(gè)像素行的灰度圖,其中的每一個(gè)像素點(diǎn)都可以使用灰度值來表示,其取值范圍為0-255,對應(yīng)著黑色-白色。先將每一個(gè)像素的灰度值用黃色的點(diǎn)在下面的坐標(biāo)系中標(biāo)出,再由數(shù)字圖像推廣至模擬圖像,即圖像的每行和每列有無線多個(gè)點(diǎn)。因此將黃色的點(diǎn)使用曲線連接,形成了一個(gè)復(fù)雜的波形。該波形表示了該行圖像的顏色變化規(guī)律。

同樣的,圖像上的每一列也可以使用類似的方法抽象出一個(gè)正弦函數(shù),繪制出一個(gè)波形圖。推而廣之,我們可以在圖像上同時(shí)沿著x軸和y軸方向,取得灰度值并繪制波形。此時(shí)可以得到一個(gè)二維的波形,它可以表示整張圖像的灰度變換規(guī)律,如下圖所示。

對于彩色圖像,我們可以將其分解為紅綠藍(lán)三個(gè)通道,可以得到三個(gè)類似的空間二維波形圖。
3.3 采樣和失真
將聲音和圖像看成是波形,強(qiáng)調(diào)了數(shù)據(jù)的連續(xù)性,波在時(shí)間和空間上平滑變換,在選定的兩個(gè)點(diǎn)之間存在著無數(shù)個(gè)點(diǎn)。對于數(shù)字媒體而言,首要的任務(wù)是使用模數(shù)轉(zhuǎn)換的方式將模擬信息轉(zhuǎn)換為離散數(shù)據(jù)。
模數(shù)轉(zhuǎn)換分為兩個(gè)步驟,采樣和量化。采樣是使用離散的點(diǎn)來衡量一個(gè)聯(lián)系的現(xiàn)象,對于圖像而言,樣本需要在空間內(nèi)均勻分布,對于聲音而言,樣本點(diǎn)需要在時(shí)間上均勻分布。每單位時(shí)間或者空間上的樣本量稱為采樣率,或者分辨率。
量化要求每個(gè)樣本用固定的位表示,稱為樣本容量,或者稱為位深度。位深度限制了每個(gè)樣本的精確度。
對于下圖最左側(cè)的這幅圖片,想要沿著水平和垂直方向均勻采樣,以數(shù)字的方式記錄這張圖片。在下圖中,樣本區(qū)域指定為矩形塊,也稱為樣本塊。對于每個(gè)樣本塊,數(shù)碼相機(jī)會(huì)檢測其顏色值,并記錄為一個(gè)像素點(diǎn)。
如果我們對圖中上半部門的每個(gè)樣本塊都取樣,最后我們能重建出原始的圖像。但是如果我們隔行采樣,即按照下半部分的方式取樣,在圖像重建后,我們將得到一張純黑色的圖像,這是一個(gè)典型的采樣過疏的例子。當(dāng)我們的采樣率沒有跟上圖像模式的變化率時(shí),會(huì)導(dǎo)致圖像失真。

當(dāng)對聲波進(jìn)行采樣的時(shí)候我們也會(huì)遇到類似的情況。如圖中上半部分表示一個(gè)頻率為637Hz的聲音,在圖中下半部分,我們使用770Hz(頻率在描述采樣率時(shí),Hz表示每秒的采樣數(shù))的采樣頻率對該聲波采樣。其中黃色部分為采樣點(diǎn),此時(shí)我們使用這些樣本點(diǎn)重建聲波的曲線,即圖中紅色的正弦函數(shù),可以明顯發(fā)現(xiàn)這不是原來的聲音,所以它聽上去也與原來的聲音不一致。

對于數(shù)字圖像而言,失真意味著圖像不清晰,或者得到的圖像和源圖像不一致。對于包含文字的數(shù)字圖像,通常會(huì)表現(xiàn)為本應(yīng)光滑的字母邊緣出現(xiàn)鋸齒。對于數(shù)字音頻而言,失真意味著采樣后的聲音中出現(xiàn)原本并不存在的聲音頻率。
奈奎斯特定理規(guī)定,對于要采樣的數(shù)據(jù),如果其頻率范圍是有限的,要從采樣后的數(shù)據(jù)中無失真的復(fù)原信號,那么采樣評論必須大于2倍最高待采樣的信號頻率。對于要采樣的數(shù)據(jù),其最高頻率的2倍稱為奈奎斯特頻率。1928年奈奎斯特提出關(guān)于采樣率的理論,在1949年該理論被克勞德.香農(nóng)證明和擴(kuò)展,因?yàn)檫@個(gè)原因,這個(gè)定理有時(shí)稱為奈奎斯特-香農(nóng)定理。
奈奎斯特定理對于圖像采樣仍然適用,圖像在二維空間上重復(fù)的速率也可以使用空間頻率描述。
3.4 量化、量化誤差和信噪比
模數(shù)轉(zhuǎn)換的第二步就是量化,首先我們需要知道樣本是如何在在計(jì)算機(jī)中表示的。對于數(shù)字圖像,二維圖形上的每個(gè)樣本表示一個(gè)離散點(diǎn)的顏色。表示的顏色數(shù)量取決于每一個(gè)樣本的位數(shù),即樣本大小或者位深度,有時(shí)也稱為顏色深度。通常用24位表示由RGB(紅、綠、藍(lán))顏色空間描述的顏色,能表示的顏色數(shù)量為2的24次方種顏色。
對于數(shù)字音頻,每一個(gè)樣本表示聲波在離散時(shí)間點(diǎn)上的振幅。通常的樣本大小為8位或者16位。立體聲CD品質(zhì)數(shù)字音頻有2個(gè)16位的聲道組成,即共需要32位。
對于數(shù)字圖像,樣本大小影響了與原始色彩的相似度,對于數(shù)字音頻,樣本大小影響了波形中需要保留的振幅精度。如下圖所示,在時(shí)間域上以某個(gè)采樣率采樣,樣本值只能取離他最近的離散值,它的實(shí)際值和取整值之間的差值稱為量化誤差。

量化誤差可以使用信噪比(Signal-to-Noise Ratio,SNR)來衡量,信噪比的基本定義為信號中有語言的內(nèi)容與附帶的噪聲的比值。在模擬數(shù)據(jù)通信領(lǐng)域中,定義為信號的平均功率與噪聲的比值。對于數(shù)字圖像和聲音,信噪比定義為最大樣本值與最大量化誤差的比值,又稱為信號-量化噪聲比(Signal-to-Quantization-Noise Ratio,SQNR)。其無量綱單位為分貝,dB,用于描述相對功率或者相對強(qiáng)度。其定義如下。

分貝也可以用振幅來表示,其定義如下。

對于數(shù)字圖像、數(shù)字音頻,對于線性量化樣本時(shí),分貝還可以使用量化時(shí)的位深度來表示。信號量化噪聲比的值與位深度呈正相關(guān)。其具體定義如下。

動(dòng)態(tài)范圍通常定義為最大振幅聲音(對于圖像來說是顏色)與給定位深度表示的最小值的比,其數(shù)值和位深度相關(guān)。顯然,對于相同的動(dòng)態(tài)范圍而言,如果表示的顏色或者聲音范圍越大,相對而言其量化誤差越大。

對于數(shù)字音頻,在選擇位深度時(shí)要考慮聲音的類型,如對于管弦樂在高音和低音區(qū)都廣泛分布,不宜采用過小的位深度,即不宜使用過小的動(dòng)態(tài)范圍。
4 數(shù)據(jù)存儲
數(shù)字媒體文件在無壓縮時(shí),其文件大小十分龐大,如下表所示。對于一張容量為17GB的DVD,也只能裝下使用下表編碼參數(shù)的11分鐘未壓縮視頻。因此數(shù)字媒體的壓縮十分重要。

5 數(shù)據(jù)通信
通常我們會(huì)講數(shù)字文件發(fā)布到網(wǎng)上,此時(shí)我們必須考慮數(shù)字?jǐn)?shù)據(jù)傳輸媒體和通信方法。另外捕獲實(shí)時(shí)聲音和視頻要求數(shù)據(jù)傳輸保持與數(shù)據(jù)播放相同的速度,這個(gè)問題的核心點(diǎn)是網(wǎng)絡(luò)環(huán)境的帶寬和媒體文件的碼率。此外,想要弄清手機(jī)上播放的視頻和電視節(jié)目的區(qū)別,我們需要了解模擬通信和數(shù)字通信的區(qū)別和聯(lián)系。
5.1 模擬數(shù)據(jù)通信和數(shù)字?jǐn)?shù)據(jù)通信
數(shù)據(jù)的通信方式分為模擬數(shù)據(jù)通信和數(shù)字?jǐn)?shù)據(jù)通信,區(qū)分的標(biāo)準(zhǔn)是傳輸?shù)臄?shù)據(jù)類型是模擬數(shù)據(jù)還是數(shù)字?jǐn)?shù)據(jù),不能將傳輸?shù)慕橘|(zhì)如衛(wèi)星、電纜、廣播作為評判的標(biāo)準(zhǔn)。
如下圖,模擬數(shù)據(jù)通信傳輸?shù)氖沁B續(xù)的模擬信號,如連續(xù)變化的聲音信息和圖像信息,在電纜上傳輸時(shí)表現(xiàn)為連續(xù)的電壓信號。

如下圖,數(shù)據(jù)數(shù)字通信傳輸?shù)氖请x散的數(shù)字信息,如使用0和1編碼的數(shù)字音頻和數(shù)字視頻,在電纜上傳輸時(shí)表現(xiàn)為連續(xù)的電壓信號。

上圖將電壓劃分為兩個(gè)離散等級的方法稱為系帶傳輸,發(fā)射器和接受器之間的通信線路稱為系帶通道。
基帶傳輸是通過電線和同軸電纜進(jìn)行的,它只在短距離傳輸中工作較好,噪聲和衰減導(dǎo)致信號在通信通道傳輸中降幅?;鶐鬏敳⒉皇俏ㄒ?,也不是最常用的數(shù)據(jù)通信方式。另外一種選擇是調(diào)制數(shù)據(jù)傳輸,也稱為帶通傳輸。它是基于緩慢降幅的連續(xù)震蕩,因此有利于遠(yuǎn)距離通信。調(diào)制傳輸將需要傳輸?shù)臄?shù)據(jù)合成到一個(gè)基礎(chǔ)頻率的波之上,再將合成后的波傳輸,這個(gè)基礎(chǔ)頻率波稱為載波信號。
調(diào)制載波的三種基本方法分為調(diào)幅、調(diào)頻和調(diào)相。下圖演示了數(shù)字信號101的調(diào)制原理。必須注意的是,調(diào)制的信號不一定是數(shù)字化的,載波頻率和調(diào)制用于傳輸模擬無線電和電視信號已經(jīng)有很長時(shí)間了。

當(dāng)有數(shù)字1傳輸時(shí),在調(diào)幅中,載波信號的振幅會(huì)增大一個(gè)固定值;在調(diào)頻中,其頻率會(huì)發(fā)生變化;在調(diào)相中,其相位會(huì)發(fā)生變化。遺留問題RichardJieChen,這里調(diào)頻和調(diào)相似乎都會(huì)降低數(shù)據(jù)的傳輸速率,需要再細(xì)看。另外,對于調(diào)幅調(diào)制,在后續(xù)文章視頻信號的表示中會(huì)詳細(xì)講到。
在帶通傳輸中,載波信號加在頻帶(也稱為頻道或者通道)的中間用于通信。發(fā)送器和接收器都知道分配給它們的頻道,發(fā)送器只使用這些頻道中的頻率來發(fā)送信息,接收器只監(jiān)聽頻道中的通信。
光纖通信,以及衛(wèi)星、收音機(jī)使用的電磁波通信,都利用載波信號進(jìn)行帶通傳輸。不同顏色的光有不同的頻率,在光纖通信時(shí)它們可以劃分為不同的頻帶。模擬信息和數(shù)字信息都可以用光或其他電磁波形式的載波信號進(jìn)行編碼,調(diào)制成包含所要發(fā)送的信息。
可見光譜的頻率分布,和電磁波的頻段分布見上圖。

一個(gè)連續(xù)震蕩的電壓也可以作為載波信號,這個(gè)事實(shí)使得電話系統(tǒng)處理數(shù)字?jǐn)?shù)據(jù)成為可能。最初電話系統(tǒng)通常被設(shè)計(jì)成以模擬形式進(jìn)行通信,當(dāng)調(diào)制解調(diào)器出現(xiàn)后,通過電話線上網(wǎng)也成為可能。
調(diào)制解調(diào)器代表了調(diào)制器和解調(diào)器,它能接收來自計(jì)算機(jī)的數(shù)據(jù),使用前文所講到的調(diào)頻、調(diào)幅和調(diào)相中的某一種方法,將0和1這種數(shù)字信號寫入到連續(xù)的震蕩電壓中;在通信的另一端,另外一個(gè)調(diào)制解調(diào)器將信號傳輸給另一臺計(jì)算機(jī)。一個(gè)簡單的使用電話線上網(wǎng)的示意圖如下。

負(fù)責(zé)研究和改進(jìn)基帶傳輸和帶通(調(diào)制的)通信的組織有,國際電信聯(lián)盟(International Telecommunication Union, ITU)、電氣和電子工程師協(xié)會(huì)(Institute for Electrical and Electronic, IEEE)、和電氣工業(yè)協(xié)會(huì)(Electronic Industries Association, EIA)。
小結(jié)
- 模擬數(shù)據(jù)和數(shù)字?jǐn)?shù)據(jù)都可以通過銅線、同軸電纜、光纖和自由空間進(jìn)行傳輸。傳輸介質(zhì)不能確定通信時(shí)模擬的還是數(shù)字的,只能通過數(shù)據(jù)的形式確定。
- 數(shù)字?jǐn)?shù)據(jù)可以通過基帶信號或者帶通(如調(diào)制)信號進(jìn)行傳輸?;鶐盘柺褂?和1的離散脈沖。調(diào)制信號使用載波頻率和基于周期性改變信號頻率、振幅或者相位編碼數(shù)據(jù)。
- 模擬數(shù)據(jù)和數(shù)字?jǐn)?shù)據(jù)通可以通過同一種調(diào)制信號傳輸。載波信號可以調(diào)制成包含模擬數(shù)據(jù)或者數(shù)字?jǐn)?shù)據(jù)。
5.2 帶寬
在數(shù)字通信中帶寬用于描述最大變化速率
在討論這一小點(diǎn)之前,需要明確一個(gè)前提條件,這里我們僅僅討論0和1的數(shù)字信號傳輸。該傳輸可以是通過離散脈沖,也就是基帶傳輸中離散的電壓變化。也可以通過載波信號的頻率、振幅或者相位變化來傳輸。帶寬在此語境下指的是信號改變得有多快。
對于基帶傳輸而言,指的是信號電壓從V變化到-V的速率有多快,而對于帶通傳輸,帶寬描述到是改變載波信號得振幅、或者頻率、相位的速度有多快。
帶寬的高度受限于發(fā)送裝置的改變能力,受限于傳輸介質(zhì)的處理信號衰減和錯(cuò)誤的能力,也受限于接收裝置的識別能力。整個(gè)系統(tǒng)最大的變化速率稱為該系統(tǒng)的帶寬。
例如位于海上的兩艘船需要手電筒的燈光閃爍用于莫爾斯密碼交流時(shí),信號交流的速度取決于手電筒開啟和關(guān)閉的速率有多快;也取決于兩人之間的天氣是暴雨還是晴天,因?yàn)檫@會(huì)干擾信號的傳輸;也取決于接收信號的人能夠以多快的速率來識別這些信號。
帶寬的單位是周期每秒(赫茲),1Hz表示傳輸系統(tǒng)在1s內(nèi)能夠把電壓水平改到另外一個(gè)電壓水平再改回來。這意味著一個(gè)具有5000Hz帶寬的基帶傳輸系統(tǒng)每秒能傳輸?shù)臄?shù)據(jù)為10000位。
假設(shè)信號以兩種可能的信號級合b赫茲的帶寬發(fā)送,那么數(shù)據(jù)的傳輸速率d(位每秒)滿足公式:d = 2 bit/s。傳輸系統(tǒng)編碼的信號級多于兩個(gè)時(shí)稱為多極編碼,如4個(gè)電壓等級時(shí)可以分別編碼位00、01、10、11。電壓等級受到硬件識別信號的能力限制,通常不會(huì)太多。
假設(shè)信號以k種可能信號級合b赫茲的帶寬發(fā)送,那么數(shù)據(jù)傳輸?shù)乃俾蔰(位每秒)滿足如下公式。

用頻率定義的信號的帶寬
數(shù)據(jù)傳輸中的信號都可以抽象位波的形式,而任何復(fù)雜的周期波形都能分解為不同頻率的簡單正弦波分量。對于任意一個(gè)信號,其分解后的最高頻率分量位fmax,最低頻率分量位fmin,那么信號的帶寬表示位w,并且w = fmax - fmin。
對于帶通傳輸而言,當(dāng)信號在某個(gè)頻道上傳輸時(shí),信號的帶寬必須符合頻道的寬度,否則部分信息將會(huì)被丟失。頻段的寬度越大,該頻道內(nèi)每秒允許傳輸?shù)臄?shù)據(jù)量越大,該點(diǎn)的具體原理在后面分析數(shù)字視頻時(shí)會(huì)詳細(xì)展開。
用頻率定義的通信頻道的帶寬
當(dāng)數(shù)據(jù)經(jīng)過調(diào)制后通過電波傳輸時(shí),它們都是在某一個(gè)頻道內(nèi)通信,頻道內(nèi)的頻率范圍一起構(gòu)成了頻道的帶寬。通常載波信號為該頻道的中心頻率,而頻道的最高頻率減去最低頻率的差值稱為通信頻道的帶寬,也稱為通信頻道的寬度。
對于數(shù)字和模擬信號,數(shù)據(jù)在傳輸時(shí),調(diào)制增加了原始載波信號的頻率分量,成為邊帶,這些邊帶必須位于指定的頻道內(nèi)。美國聯(lián)邦通信委員會(huì)(Federal Communication Comission)對通信頻道劃分如下。

對于如何為調(diào)幅廣播、調(diào)頻廣播、電視和數(shù)字高清電視劃分一個(gè)合適的帶寬;載波信號的調(diào)制怎么樣引起的邊帶;邊帶的頻率時(shí)多少;它們時(shí)怎樣影響頻道的帶寬要求?這些問題將在數(shù)字視頻部分的內(nèi)容詳細(xì)討論。
5.3 數(shù)據(jù)傳輸速率
位速率
帶寬經(jīng)常被隨意的直接用于表示位速率,但是需要注意的是帶寬的單位是周期每秒(Hz),二位速率的基本單位是位每秒(bit/s)。與位速率相關(guān)的單位如kb/s和b/s之間的進(jìn)位規(guī)則位10的三次方。
理論上位速率和帶寬的公式為“d = 2b*log(2)(k)",其中k表示能傳輸?shù)牟煌盘栔档臄?shù)量。由于通信系統(tǒng)中存在如電磁干擾等噪聲干擾,接收者不能總是正確的翻譯信號,這個(gè)值在現(xiàn)實(shí)中幾乎不可能達(dá)到。
香農(nóng)定理量化了含有噪聲的傳輸系統(tǒng)所能達(dá)到的數(shù)據(jù)傳輸率“c = b*log(2)(1+s/p)"。其中c表示通信系統(tǒng)支持的最大傳輸速率,s表示信號的功率,p表示噪聲的功率。在這里s/p是前文提及的信噪比的另外一種用法。數(shù)據(jù)傳輸?shù)乃俾试从谛盘栐诮o定傳輸介質(zhì)中的變化情況,它與系統(tǒng)的信噪比有很大的關(guān)系。一些常見的網(wǎng)絡(luò)類型和它們對應(yīng)的傳輸速率如下表,這個(gè)速率可能會(huì)更新。

波特率
波特率最精確的定義是:它是發(fā)送和接收裝置的一個(gè)性質(zhì),描述信號每秒的變化數(shù)量。但是在實(shí)際使用時(shí),該定義使用比較隨意,電話調(diào)制解調(diào)器的波特率常被描述為位每秒,而不是周期每秒。
- 因?yàn)閹捄蛿?shù)字?jǐn)?shù)據(jù)通信相關(guān),因此波特率和帶寬的意義接近。不同點(diǎn)在于波特率通常在涉及發(fā)送和接收裝置時(shí)被用到,而帶寬在提到電波頻道時(shí)還有其他意義。
- 一個(gè)裝置(如調(diào)制解調(diào)器)有最大的波特率和實(shí)際波特率。實(shí)際波特率就是發(fā)送者和接收者之間對一個(gè)特定通信商定的速率。
- 經(jīng)常提到的波特率實(shí)際上是位速率。
6 壓縮方法
在保存數(shù)字媒體文件時(shí),原始數(shù)據(jù)過大必須進(jìn)行壓縮。在壓縮過程中需要盡可能的減小文件的體積,同時(shí)也要盡可能維持圖像、音頻和視頻的質(zhì)量。從壓縮后的質(zhì)量維度看,壓縮類型可以被分為有損壓縮和無損壓縮。從算法實(shí)現(xiàn)的維度看,壓縮類型分為基于詞典、熵、算術(shù)、自適應(yīng)、感知和差分的壓縮方法。
- 基于詞典的方法(如LZW壓縮)使用固定長度代碼的查詢表,在壓縮文件中,一種代碼可能對應(yīng)的一串字符而不是單個(gè)字符。
- 熵壓縮使用字符頻率的統(tǒng)計(jì)分析,使用更短的碼字對應(yīng)頻繁出現(xiàn)的字符進(jìn)行編碼實(shí)現(xiàn)壓縮。每個(gè)碼字對應(yīng)一個(gè)字符,如香農(nóng)-法諾和哈夫曼編碼。
- 算術(shù)編碼也使用了一個(gè)類似的統(tǒng)計(jì)分析,但是使用的是單一的碼字對一個(gè)文件進(jìn)行編碼,而不是為每個(gè)字符創(chuàng)造一個(gè)單一的碼字。
- 自適應(yīng)方法在壓縮文件的過程中獲取關(guān)于文件性質(zhì)的信息,然后調(diào)整編碼使之反應(yīng)每一步所學(xué)到的東西。如LZW壓縮,代碼表是在壓縮和解壓縮的過程中即時(shí)創(chuàng)建的。如果哈夫曼編碼隨著壓縮過程頻率數(shù)進(jìn)行更新而不是事先搜集,也是自適應(yīng)的。
- 感知編碼是根據(jù)心理學(xué)模型刪除不敏感的信息。它被廣泛用于數(shù)字媒體工程中。
- 差分編碼通過計(jì)算信號的變化進(jìn)行編碼。也被廣泛用于數(shù)字媒體工程中。
壓縮算法的壓縮率是原始文件的大小a與壓縮文件大小的比,表示位a:b。或者表示為b對a的百分比。如對于被壓縮到原始文件一半的文件,其壓縮率可表示為50%或者2:1。
6.1 游程編碼
游程編碼(Run-Length Encoding, RLE)屬于無損壓縮,應(yīng)用于圖像壓縮。如帶有.bmp后綴的圖像文件可以選擇使用游程編碼。它不存儲單個(gè)像素的值,而是存儲數(shù)偶(c,n)。其中c表示灰度值,n表示連續(xù)像素c的個(gè)數(shù)。
對于如下圖所示的一行像素,從左至右每個(gè)像素的灰度值分別為255,255,255,255,255,255,242,242,242,242,238,238,238,238,238,238,255,255,255,255。其游程編碼為(255,6),(242,4),(238,6),(255,4)。

此時(shí)可以看出未使用游程編碼時(shí),該行像素需要20個(gè)字節(jié)存儲。而使用游程編碼后,存儲的大小由數(shù)偶所需的字節(jié)數(shù)決定。對于數(shù)偶(c,n),c的取值為0~255,使用1個(gè)字節(jié)編碼,而n的編碼長度由其取值范圍決定,假設(shè)其取值范圍為0~r,則其所需字節(jié)b滿足如下公式。

因此對于像素尺寸為100*100的圖片,假如最大連續(xù)像素為300,n的編碼長度通過計(jì)算為2字節(jié),因此使用游程編碼時(shí)只需要12字節(jié)就可以存儲同樣的像素行。
需要注意的是游程編碼并不一定會(huì)減少文件體積,如對于如下像素行進(jìn)行游程編碼。其原始的灰度值為255,255,255,255,243,240,242,242,242,241,238,238,237,237,237,237,255,255,255,255。共占20個(gè)字節(jié)的內(nèi)存資源。而其游程編碼為(255,4),(243,1),(240,1),(242,3) ,(241,1),(238,2),(237,4),(255,4),共占24個(gè)字節(jié)內(nèi)存資源。

實(shí)際使用中,通常會(huì)指定r的位深度,當(dāng)連續(xù)的像素?cái)?shù)超過r能表示的長度時(shí)則截?cái)啾硎緸橄乱粋€(gè)數(shù)偶。如對于1000個(gè)連續(xù)的灰度值為255的白色像素進(jìn)行編碼時(shí),當(dāng)位深度指定為8時(shí),其游程編碼為(255,255),(255,255),(255,255),(255,235)。
下圖是一個(gè)使用游程編碼的很好例子,不考慮文件頭信息,其包括100乘100 = 10 000個(gè)像素,需要10 000個(gè)字節(jié)存儲,當(dāng)使用游程編碼時(shí)僅需要1084個(gè)字節(jié),壓縮率為9:1,約為11%。

顯然,大部分圖像并不會(huì)如此顏色分明,因此游程編碼適用于圖像區(qū)域分割鮮明,顏色類型有限的卡通圖片。這里僅說明游程編碼的基本原理,實(shí)際實(shí)現(xiàn)時(shí)會(huì)略有不同。
需要注意的是對于任意一種無損壓縮算法和任意長度的文件,至少存在一種情況使得算法不能減少文件的體積。推導(dǎo)過程如下。
- 假設(shè)文件長度為n位,那么不同的文件有2的n次方個(gè)。
- 假設(shè)某個(gè)無損壓縮的算法,輸入長度為n的文件,輸出長度<= n-1的壓縮文件。那么可以生成1+2+4+...+2的n-1次方 = 2的n次方 - 1個(gè)不同的壓縮文件。
- 要將2的n次方個(gè)文件對應(yīng)2的n次方-1個(gè)不同的壓縮文件,顯然無法一一對應(yīng),即無法從1個(gè)相同的壓縮文件還原到2個(gè)不同的原始文件。
無損壓縮算法應(yīng)用于不允許數(shù)據(jù)丟失的情況。例如對文本和二進(jìn)制編碼的計(jì)算機(jī)程序進(jìn)行壓縮的情況。應(yīng)用于像gzip和compress(UNIX)平臺、或者pkzip和winzip(Windows平臺)這樣的工具中。聲音文件幾乎不會(huì)出現(xiàn)相同數(shù)值連續(xù)的音頻數(shù)據(jù),不適用于無損壓縮。圖像文件如PNG、TIFF文件都支持無損壓縮。
6.2 熵編碼
克勞德.香農(nóng)(Claude Shannon)指出通過熵編碼可用獲得更好的壓縮率。熵編碼是通過可變字長編碼的工作方式,用更少的位編碼出現(xiàn)更頻繁的字符,同時(shí)用更多的位編碼罕見的字符。
借助物理學(xué)中的術(shù)語熵,香農(nóng)(Claude Shannon)定義了信息源的熵。S是一串字符,經(jīng)處理后描述為有n個(gè)不同字符組成的字符串S‘,pi是字符串S‘中第i個(gè)字符的頻率。則S的熵H(S)滿足如下公式。

應(yīng)用香農(nóng)熵公式,可以根據(jù)每個(gè)字符出現(xiàn)的頻率來確定一串字符中每個(gè)字符實(shí)例所需平均位數(shù)的一個(gè)最佳數(shù)值。香農(nóng)證明了當(dāng)字符串S的平均編碼長度為H(S)時(shí)能夠得到最佳的編碼效果。
對于一個(gè)含有256個(gè)像素的圖像文件,其像素的顏色頻率統(tǒng)計(jì)如下。

使用香農(nóng)熵公式可計(jì)算出,該圖像文件的熵為2.006,意味著在一個(gè)最佳的壓縮文件中,表示每個(gè)字符的平均編碼長度為2.006。

香農(nóng)-法諾算法的實(shí)現(xiàn)如下。

該算法采用自上向下遞歸的方法,每一次遞歸將字符分為兩半,兩部分的頻率和近似相同。最后生成一個(gè)編碼樹,樹枝用0和1來標(biāo)記,從根節(jié)點(diǎn)到葉節(jié)點(diǎn)遍歷,并記錄所有的0、1序列,得出與葉節(jié)點(diǎn)相關(guān)的字符代碼。
前文對于一個(gè)含有256個(gè)像素的圖像文件的例子,經(jīng)過香農(nóng)-法諾算法處理可以得到如下一顆樹。未用任何算法處理的原始文件體積為2048位,而經(jīng)過香農(nóng)-法諾算法處理后的文件僅需要584位,文件的壓縮率為28%。平均每個(gè)字符的編碼長度為2.28位,這和香農(nóng)-法諾算法計(jì)算出的熵很接近。

上述實(shí)例的顏色編碼表如下。

熵的通俗定義是事物排列的多樣性,如使用兩個(gè)骰子擲出2點(diǎn)只有1種組合可能,而擲出7點(diǎn)有6種不同的組合方式,因此7這個(gè)值的熵比2這個(gè)值的大。當(dāng)文件大小一定,其包含的符號數(shù)越多的時(shí)候,香農(nóng)熵公式計(jì)算出的值越大。因?yàn)樽址麛?shù)越多,字符的排列組合也就越多,所以具有更大的熵。因此每個(gè)編碼字符需要傳遞更多的信息,其平均編碼字符長度更長。
對于數(shù)字媒體,熵編碼基于被編碼數(shù)據(jù)的統(tǒng)計(jì)分析??梢允悄硞€(gè)實(shí)際文件的統(tǒng)計(jì)分析,也可以是某類型文件的通用統(tǒng)計(jì)分析。哈夫曼編碼是一類特別的熵編碼,它提高了香農(nóng)-法諾算法的壓縮率,在圖像壓縮中非常有效。
6.3 算術(shù)編碼
香農(nóng)-法諾算法和哈夫曼編碼的一個(gè)缺點(diǎn)是必須單獨(dú)處理每個(gè)字符,而每個(gè)字符有它自己的編碼,這些編碼的長度都是整數(shù)位。香農(nóng)公式表明可以用非整數(shù)位編碼來獲取最佳的編碼,如使用1.3561位來表示黑色和白色。
算術(shù)編碼克服了上述缺點(diǎn),和香農(nóng)-法諾算法類似,算術(shù)編碼也基于文件中字符頻率的統(tǒng)計(jì)分析。不同之處在于它不再是位單個(gè)字符創(chuàng)建編碼,而是對整個(gè)文件進(jìn)行編碼,從而獲得更大的壓縮率。
在算術(shù)編碼中,用簡單的浮點(diǎn)數(shù)對一串字符進(jìn)行編碼,理論上,為了滿足壓縮的要求,可以使用任意位的浮點(diǎn)數(shù),這意味著其有無限精度,但是顯然這不現(xiàn)實(shí)。這里先不考慮該問題,只關(guān)注算術(shù)編碼實(shí)現(xiàn)的理論基礎(chǔ)。
假設(shè)一個(gè)圖像文件包括100個(gè)像素,共黑(K)、白(W)、黃(Y)、紅(R)、藍(lán)(B)5種顏色,其每種顏色的的頻率統(tǒng)計(jì)如下。需要注意的是,只要編碼器和解碼器使用相同的顏色順序,則概率區(qū)間內(nèi)的顏色順序并不重要。

現(xiàn)在考慮原始的概率區(qū)間文件[0,1],對圖像前6個(gè)像素白、黑、黑、黃、紅和藍(lán)進(jìn)行編碼。
- 第一步,計(jì)算出當(dāng)前范圍為1,需要編碼白色像素,因此編碼后概率區(qū)間更新為[0+1乘0.4, 0+1乘0.65],為[0.4, 0.65]。
- 第二步,計(jì)算出當(dāng)前范圍為0.25,需要編碼黑色像素,因此編碼后概率區(qū)間更新為[0.4+0.25乘0, 0.4+0.25乘0.4],為[0.4, 0.5]。
- 第三步...
- 最后得到算術(shù)編碼的區(qū)間為[0.43134, 0.4314],編碼字為(0.43134+0.4314)/2 = 0.43137。
用圖像的方式可以將計(jì)算過程表示如下。

用表格的方式可以將計(jì)算過程表示如下。

其簡單的算法實(shí)現(xiàn)偽代碼如下。
algorithm arithmetic_encoding
/* Input: A string of symbols and their assigned probability intervals.
Output: A floating point number that encodes the string*/
low = 0.0
hight = 0.0
while input symbols remain {
s = the next inputs symbol
range = high - low
/*s_high(s) represents the high value of symbol s's assigned probability interval,
and s_low(s) represents the low value of symbols's assigned probability interval.*/
high = low + range * s_high(s)
low = low + range * s_low(s)
}
return (low+high)/2
在解碼時(shí),給定一個(gè)浮點(diǎn)數(shù)a。
- 可以從初始概率范圍開始,通過尋找浮點(diǎn)數(shù)適合的概率區(qū)間得到編碼字符串的第一個(gè)字符。如前面的例子編碼為0.43137,可以得出第一個(gè)字符c1的符號為W。
- 設(shè)下一個(gè)浮點(diǎn)數(shù)為b,利用公式b = (a - c1low) / c1range。其中c1low表示字符c1點(diǎn)概率空間低值,c1range表示字符c1的概率空間范圍。
- 此時(shí)b計(jì)算出為0.12548,可以得到第二個(gè)字符c2的符號為K。
- 不斷的重復(fù)前兩個(gè)步驟,直至解碼到終止標(biāo)志,則可以得到原始的字符串。
用表格的方式可以將解碼計(jì)算過程表示如下。

其簡單的算法實(shí)現(xiàn)偽代碼如下。
algorithm arithmetic_decoding
/*Input: A floating point number, f, encoding a string of symbols, a list of symbols
encoded by the number, and the probability intervals assigned to these symbol.
Output: The string of symbols, s, decoded
Assumptions: A terminator symbol has been encoded at the end of the string */
symbolDecoded = NULL
while symbolDecoded != TERMINATOR_SYMBOL {
s = a symbol whose probability interval contains f
output s
/* Let s_high(s) represent the high value of symbol s's probability interval, and s_low(s)
represent the low value of s's probability interval*/
range = s_high(s) - s_low(s)
f = (f - s_low(s)) / range
}
在實(shí)際實(shí)現(xiàn)算術(shù)編碼時(shí),使用整數(shù)運(yùn)算和移位運(yùn)算,不需要使用無限精確的浮點(diǎn)運(yùn)算。怎樣終止輸入字符串和怎樣加速費(fèi)時(shí)的壓縮方法需要去具體的實(shí)現(xiàn)中了解,這里需要注意算術(shù)編碼可以用于JPEG圖像壓縮中的一個(gè)步驟,另外IBM等公司對該算法享有專利權(quán)。
6.4 變換編碼
前面提到的編碼算法都是無損壓縮,而下面將要提到的事有損壓縮算法。變換編碼通過改變數(shù)據(jù)的表示方式實(shí)現(xiàn),最常用是離散余弦變換(Discrete Costine Transfer, DCT),和離散傅里葉變換(Discrete Fourier Transfer, DFT)。需要注意的是變換編碼自身不是有損變換,不會(huì)丟失數(shù)據(jù)。
有損壓縮基于變換編碼,它的思想是通過變換編碼,使聲音或視覺細(xì)節(jié)不被丟失,而丟失的部分超出了人類感知的范圍。但是DCT和DFT中并不會(huì)有數(shù)據(jù)丟失,而是在后面的步驟中丟失部分冗余的、或者不重要的信息。這就是有損壓縮中損失的那部分。
離散余弦變換用于數(shù)字圖像,將數(shù)據(jù)表示從空間域改變到頻域。而頻域內(nèi)的高頻分量可以理解為在一個(gè)很小空間內(nèi)顏色的快速波動(dòng),這些變換人眼很難察覺,可以直接刪除。這就是JPEG壓縮的理論基礎(chǔ)。
離散傅里葉變換用于聲音,將它從時(shí)間域變換為頻域。而頻域空間內(nèi),由于人類聽覺的生理特征決定某些頻率分量會(huì)屏蔽其他頻率分量的感知,因此丟棄被屏蔽的頻率分量可以達(dá)到壓縮音頻的目的。這也是MPEG標(biāo)準(zhǔn)中音頻壓縮的理論基礎(chǔ)。
6.5 壓縮標(biāo)準(zhǔn)和編解碼器
前文僅僅介紹了各個(gè)壓縮算法的理論基礎(chǔ),實(shí)際上,壓縮算在具體實(shí)現(xiàn)時(shí)都會(huì)有細(xì)微的改變和優(yōu)化。在圖像、音頻、視頻的壓縮標(biāo)準(zhǔn)中,都會(huì)結(jié)合多種算法。如JPEG和MPEG壓縮結(jié)合了DCT、可變字長編碼和哈夫曼編碼用于圖像的壓縮。
有些算法被官方委員會(huì)標(biāo)準(zhǔn)化從而使得各種各樣的實(shí)現(xiàn)能夠生成相同格式的文件,如果一個(gè)標(biāo)準(zhǔn)化的算法獲得了專利,那么商業(yè)公司必須支付一定的許可費(fèi)來實(shí)現(xiàn)該算法,然后以商業(yè)產(chǎn)品賣掉。標(biāo)準(zhǔn)化壓縮算法的兩個(gè)突出例子是用于數(shù)字視頻攝錄的DV和MPEG算法家族。算術(shù)編碼也是專利涉及圖像壓縮的一個(gè)例子。
壓縮算法的具體實(shí)現(xiàn)稱為編解碼器,即壓縮/解壓縮的簡稱。有些編解碼器作為共享或者免費(fèi)軟件提供。但是大多數(shù)編解碼器是商業(yè)產(chǎn)品。它們可以嵌入圖像、音頻或者視頻處理程序,或者單獨(dú)出售和使用。如QuickTime中嵌入了標(biāo)準(zhǔn)Sorenson編解碼器。
大多數(shù)編碼器,用戶可以通過設(shè)置碼率、或者質(zhì)量等級設(shè)置壓縮率。壓縮率越高,與原始的資源相比質(zhì)量損失程度可能越大。對于視頻而言,生成的文件大小只和視頻的碼率、以及視頻的時(shí)間相關(guān)。下表列出了常見的標(biāo)準(zhǔn)壓縮算法、專利算法。

下表列出了流行的編解碼器。

6.6 數(shù)字媒體的標(biāo)準(zhǔn)和標(biāo)準(zhǔn)化組織
標(biāo)準(zhǔn)可以分為三種主要類型:專有的、事實(shí)的和官方的。專有標(biāo)準(zhǔn)由商業(yè)公司建立并申請專利,如LZW壓縮和算術(shù)編碼。事實(shí)標(biāo)準(zhǔn)描述一種方法或者格式,這些方法已經(jīng)被行業(yè)認(rèn)可,但是沒有任何官方認(rèn)可,如TIFF圖像文件。官方標(biāo)準(zhǔn)由大的產(chǎn)業(yè)聯(lián)盟和政府機(jī)構(gòu)一起開發(fā),如MPEG標(biāo)準(zhǔn)。
在多媒體的研究中,將會(huì)認(rèn)識到制定標(biāo)準(zhǔn)的組織和工作小組,因此需要熟悉他們的名字和首字母縮寫詞。國際電信聯(lián)盟(International Telecommunication Union, ITU), 前身為CCITT。ITU是協(xié)調(diào)全球電信網(wǎng)絡(luò)和服務(wù)的組織,如分配無限的頻帶。和多媒體相關(guān)的是G和H系列,G系列覆蓋語音編碼和電話通信,如G.700系列涉及使用ADPCM(自適應(yīng)差分脈沖編碼調(diào)制)模擬數(shù)字電話的編碼。H系列屬于實(shí)時(shí)數(shù)字音頻和視頻通信領(lǐng)域,如H.323是一個(gè)聲音和視頻分組標(biāo)準(zhǔn)(交換網(wǎng)絡(luò),如因特網(wǎng)),H.262給出了MPEG壓縮的標(biāo)準(zhǔn)。
國際標(biāo)準(zhǔn)化組織(International Organization for Standardization, ISO)開發(fā)了行業(yè)和商業(yè)標(biāo)準(zhǔn),它是由來自各個(gè)國家標(biāo)準(zhǔn)組織的代表組成。
國際電工委員會(huì)(International Electrotechnical Commission, IEC)制定電氣、電子和相關(guān)技術(shù)標(biāo)準(zhǔn)。
IEC和ISO有一個(gè)聯(lián)合委員會(huì),稱為ISO/IEC JTC1。該委員會(huì)開發(fā)了信息技術(shù)標(biāo)準(zhǔn)。如ISO/IEC 11172標(biāo)準(zhǔn)定義了MPEG-1,ISO/IEC 13818定義了MPEG-2。
7 傅里葉變換
圖像、音頻和視頻進(jìn)行有損壓縮時(shí)都依賴于變換編碼,而變換編碼的數(shù)學(xué)理論基礎(chǔ)為傅里葉變換,因此想要深入了解多媒體的編碼原理,必須熟悉傅里葉變換。
如下圖的上部分,隨著時(shí)間記錄表示音波的震動(dòng)幅度(也可以理解為空氣壓強(qiáng)),我們可以得到一個(gè)音波在時(shí)域的函數(shù)。而傅里葉變換可以通過將時(shí)域的函數(shù)分解為基礎(chǔ)的余弦函數(shù),從而將時(shí)域的函數(shù)轉(zhuǎn)換為在頻域的函數(shù),如下圖的下部分。

7.1 傅里葉級數(shù)
傅里葉變換的衍伸變換都可以從傅里葉級數(shù)開始推導(dǎo),傅里葉證明任何周期函數(shù)都可以使用無窮的正弦波疊加,如下圖。

傅里葉變換的公式表示如下。需要注意的是只有當(dāng)周期函數(shù)f(t)滿足分段連續(xù)、分段單調(diào)、絕對可微的條件時(shí),該函數(shù)滿足狄利克雷條件,它才可以表示為傅里葉級數(shù)。

在開始證明傅里葉級數(shù)之前,我們需要了解三角函數(shù)系正交性,如下。下圖左側(cè)為公式,右側(cè)為舉例推證。

因此傅里葉級數(shù)的推導(dǎo)過程如下。第一步不用證明,這是傅里葉證明過的。


傅里葉級數(shù)更為常見的公式是通過自然常數(shù)e來表達(dá)的,其推導(dǎo)過程如下。

7.2 傅里葉變換
傅里葉級數(shù)將連續(xù)時(shí)域函數(shù)轉(zhuǎn)換為離散頻率函數(shù),在此基礎(chǔ)上推導(dǎo)的傅里葉變換能將連續(xù)的時(shí)域函數(shù)轉(zhuǎn)換為連續(xù)的頻域函數(shù)。其推導(dǎo)過程如下。

可以想象離散周期函數(shù)經(jīng)過傅里葉變換后,在頻域圖上的無窮多簡單波形可以組合為泛著波紋的海面。如下圖。

7.3 離散傅里葉變換
在圖像和音頻采樣過程中,我們獲取到的樣本點(diǎn)在時(shí)域上都是離散的,因此我們需要一種新的數(shù)學(xué)模型。而傅里葉的推導(dǎo)離散傅里葉變換能將離散時(shí)域的函數(shù)轉(zhuǎn)換為離散頻域的函數(shù)。其推導(dǎo)過程如下。

7.4 離散余弦變換
二維離散余弦變換時(shí)JPEG圖像壓縮的重要理論基礎(chǔ),這里僅介紹如何從離散傅里葉變換推導(dǎo)出一維離散余弦變換(DCT)。一維DCT實(shí)際上是對N個(gè)樣本的DFT的對稱擴(kuò)展。即將樣本值[f0, f1, f2, ... fn-1]對稱變換增加N個(gè)樣本值[-f(n-1), -f(n-2), ... -f0]。但是需要注意的是離散余弦變換丟棄了各個(gè)頻率分量的相位信息,因此不能用于音頻處理。
對稱變換一維DFT的過程如下圖所示。

一維離散余弦變換的推導(dǎo)過程如下。周期變?yōu)?N后,函數(shù)的系數(shù)有1/N未變?yōu)?/2N的原因還需要查明。
