本書系統而又深入地介紹了現代多媒體核心技術及應用。全書共12章,主要內容有多媒體技術架構、開發平臺、無損數據壓縮算法、音頻編碼原理、音頻數據處理方法、數字圖像原理與格式、圖像處理、數字視頻原理與格式、視頻編碼、視頻處理(視頻播放、特效、捕獲、轉碼)、運動對象檢測與跟蹤、網絡多媒體協議、傳輸應用設計等。本書把原理闡述與底層應用設計緊密結合在一起,細致、充分地展現核心原理,注重應用能力培養,案例具有綜合
性、啟發性、實用性,有較高的學習價值。
本書可作為本科計算機、自動化、電子信息、通信工程、數字媒體、物聯網等專業的“多媒體技術”專業課教材,也適合關注和希望深入研究多媒體底層開發的讀者閱讀,還可供對多媒體有興趣的讀者自學。
(1)本書是作者長期教學實踐的經驗總結,內容涵蓋多媒體技術的核心原理和關鍵技術。
(2)對原理,采取形象細膩的描寫,帶給讀者全新的閱讀體驗。對技術,采取應用程序設計方式,詳盡介紹音頻處理、圖像處理、視頻處理、網絡多媒體等底層方法,引導初學者入門,幫助開發人員突破核心,助力科研人員敲開研究大門。
本書理念
多媒體是一門綜合性學科,它研究在計算機與網絡平臺上進行音頻、圖像和視頻等多種媒體的采集、編碼、處理、集成、同步、傳輸和呈現的技術。多媒體的應用領域很廣泛,最初是在視聽娛樂和大眾傳媒領域興起,隨著計算機與互聯網的快速發展,多媒體已經廣泛滲透到工業、交通、通信、管理、軍事和教育等眾多領域。今天,無論是在PC平臺、智能手機上分享圖像與視頻,還是利用增強虛擬現實系統(enhancedvirtualrealsystems)進行軍事模擬訓練,或通過視頻監控系統檢測跟蹤運動對象,人們都在充分享受著多媒體技術發展的成果。
作者在高等學校講授專業多媒體課程有十多年了。在長期教學實踐中,作者深切體會到,高校的多媒體技術教學一直受到理論與實踐脫節的困擾。表現在教材上,就是大部分教科書都是從國外著作翻譯或轉述過來的,過于偏向理論描述。客觀地講,這些教材在教學中發揮了積極作用,然而,由于不提供系統的程序和應用設計方面的指導,對原理的解釋大多停留在抽象層面,學生雖然接觸了很多概念和技術,但還是不能發展出工程實踐能力。
當然,學校也不是沒有實踐性教學,然而無論是深度還是廣度,都無法適應數字媒體技術本身的發展。究其原因,除了受實驗設備繁多、技術繁雜以及開發工具難用等因素影響以外,作者認為教材與應用系統設計脫節是一個重要原因。
實際上,廣大專業教師一直在設法解決上述脫節問題。一方面,一些教師試圖在比較偏向原理的教科書中增加實踐性內容來改善教材結構,但是這個做法效果有限,因為它沒有從根本上改變傳統教材以原理為主的特點。另一些長期從事多媒體技術專業教學的老師意識到偏向原理的教材和教學模式的弊端,因此推出了以培養實踐能力為主要目標的教材,如《多媒體技術實驗教程》《多媒體案例教程》等。這些教材試圖大力培養學生的實踐動手能力,這是值得稱道的。但是,由于學時等條件限制,這些教材又無法系統地闡述原理,而且大都以傳授多媒體工具軟件(如Photoshop)的使用方法為主,結果使得計算機專業類的多媒體技術教學演變成了技能教育。當然,熟練使用這些工具非常重要,但是,如果一所大學是以培養高級專業技術人才為目標的,就不能以工具性技能教育為主體,而應當構建一種融核心原理和關鍵技術于一體的教學框架。原理應當深入到核心,關鍵技術則是核心原理的直接體現,這完全不同于以傳授多媒體工具軟件使用為主體的教學。
一言以蔽之,作者希望建立一個以核心原理為主線,融知識、技術、標準、平臺與應用設計于一體的新型多媒體技術闡述框架。
全書概覽
基于上述理念,本教程把原理知識的闡述與更加底層的應用設計緊密結合在一起。基本上,每一個核心原理介紹都會有相關的應用設計與之配套。例如,在介紹了音頻編碼原理之后,會展示PCM樣本合成、音頻轉碼等音頻數據處理的程序設計方法;在介紹了數字圖像格式之后,會展示圖像顯示、濾波、融合、基于圖像的自然現象模擬等像素級操作;在介紹了視頻數據格式之后,會展示視頻播放、視頻特效、視頻捕獲、YUV視頻轉碼、視頻對象檢測與跟蹤等內容;在介紹了網絡多媒體技術之后,會展示流媒體應用系統搭建、基于套接字的遠程桌面圖像傳輸等。可以看出,這些訓練不僅展現了核心原理,而且直接觸及關鍵技術,具有綜合性和啟發性,有較高的學習價值,甚至對科學研究都具有一定的訓練意義。只有這樣,才能實現培養高級專業技術人才的目標。
全書分為12章。
第1章緒論,介紹多媒體技術的基本概念、應用和技術體系。
第2章編程環境與平臺,介紹Win32API程序的特點和基本設計方法、COM組件編程方法和MicrosoftMediaFoundation。MicrosoftMediaFoundation是新一代多媒體開發平臺,以取代之前的DirectShow。
第3章數字音頻基礎,介紹數字音頻的基本概念、各種數字音頻編碼算法及其國際標準。
第4章音頻應用程序設計,介紹波形音頻文件的格式、音頻播放程序設計(包括基于PlaySound函數的簡單播放和基于MFMediaSession的復雜播放程序設計)、音頻轉碼程序設計和音頻數據處理應用(如混聲)。
第5章無損數據壓縮算法,介紹幾種廣泛應用的無損壓縮編碼算法,包括赫夫曼編碼、算術編碼、行程編碼和詞典編碼算法。作者在這一章進行了一種新的寫作嘗試,即對這些算法給出了十分詳盡的圖形化過程說明,通過舉例,將這些算法的循環過程進行了窮盡式描繪,最后還給出了這些算法的偽代碼。這些舉措的目的是希望為讀者帶來一種更加輕松的閱讀體驗,即只要閱讀就可以理解內容。
第6章數字圖像基礎,介紹數字圖像的基本概念,包括圖像模型、像素、色彩模型、圖像分辨率、真彩圖像、偽彩圖像等。本章的重點是圖像數據分析,解析了BMP和GIF兩種數字圖像格式文件,特別是對BMP格式圖像,詳盡描述了它的1、4、8、16和24位像素存儲模式,并解釋了整個位圖在內存中的Bottomup(自底向上)放置情形。最后用一節介紹了JPEG靜態圖像壓縮原理。
第7章圖像處理與應用程序設計,介紹Windows環境下最常用的圖像開發工具GDI和典型的圖像處理技術(如正立顯示、倒立顯示、圖像濾波、灰度化、浮雕濾鏡、圖像融合等)。為了幫助讀者進一步理解像素操作的意義,本章還介紹了基于圖像的水波紋模擬,該示例展示了圖像處理的妙用,并解釋了動畫原理,程序還揭示了雙緩沖技術的應用。
第8章數字視頻基礎,介紹模擬視頻的基本概念、模擬視頻到數字視頻的轉換,尤其是數字視頻的采樣格式。本章還詳細介紹了幾乎所有的數字視頻格式,包括適用于存儲場合的平面格式,以及適用于實時場合的緊湊格式。為了進一步幫助讀者理解視頻數據流的意義,本章給出了一個解碼并顯示著名的foreman.yuv視頻文件的程序,該程序在一定程度上揭示了解碼器和視頻播放器的工作原理。
第9章視頻應用程序設計,介紹幾個典型的視頻應用案例,包括視頻播放、視頻特效、字幕和圖標添加、淡入淡出等。本章還詳細介紹了基于MediaFoundation的視頻捕獲程序設計,這是一個有很強實用性的應用。最后介紹運動對象檢測與跟蹤技術。
第10章數字視頻編碼原理與標準,介紹視頻壓縮的一般原理、當前流行的H.26x和MPEG系列視頻編碼國際標準。
第11章網絡多媒體基礎,介紹網絡多媒體的概念和面臨的主要挑戰、網絡多播技術、實時傳輸協議(RTP)和實時傳輸控制協議(RTCP)、流媒體技術和流媒體協議、典型視頻服務系統的應用。本章還介紹了MediaFoundation的網絡源特性,這是利用MediaFoundation開發桌面多媒體客戶端的基礎。最后介紹視頻會議系統的概念、組件和系統結構。
第12章網絡多媒體應用程序設計,主要介紹基于WinSock的多媒體傳輸技術。首先介紹WinSock編程的基本方法。然后介紹一個基于屏幕捕獲與WinSock的遠程桌面圖像傳輸與顯示系統,該系統包括兩部分,一是捕獲并發送桌面圖像的服務器,另一部分是接收并顯示遠程圖像序列的客戶端。該示例展現了較為底層的多媒體傳輸的基本原理。
總體上,本教程試圖系統地提供多媒體核心原理及其關鍵技術應用的內容。
本書適合的讀者群
本書的主要目標是作為本科計算機科學與技術、自動化、電子信息、通信工程、信息安全、數字媒體、物聯網工程、軟件工程等專業的多媒體技術專業課程教材。
本書也適合關注和深入研究多媒體底層開發的讀者閱讀,特別適合對多媒體技術有興趣的讀者自學。
如果讀者希望全面掌握本書內容,應當具備計算機程序設計、操作系統和計算機網絡等方面的基礎知識。此外,由于本書以Windows操作系統和VisualStudio平臺的C/C++為程序設計環境,因此也要求對C/C++編程語言有基本的了解,并且理解基本的面向對象技術。此外,如果讀者了解Windows程序設計方法,特別是對消息驅動機制、回調函數、窗口過程等概念有認識的話,自然是最好不過的事情。但是,即使讀者沒有這方面的知識也不要緊,因為本書的第2章會簡明扼要地介紹Windows程序的基本結構和運行機制。
本書的代碼
本書的源代碼表現為完整的VC++工程文件包,每一個實例程序都是從VisualStudio2010自動生成的Win32API應用框架開始,通過添加自定義功能實現的。此外,作者還力求將程序清單中的注釋量降到最小,因為我們認為,編寫規范、邏輯清晰的程序本身應當具有良好的可讀性。
讀者可能要問,在眾多的開發語言和模式中,為什么本書選擇WindowsAPI程序作為基本的實踐平臺?這當然是因為WindowsAPI程序比較適合本書的需要。本書的主要目標是展示多媒體技術的核心原理,所以,偏向底層開發的Win32API程序自然是最佳選擇,如果進一步考慮到原生桌面應用的廣泛性和更高性能的話更是如此。
本書的源程序均在清華大學出版社網站(www.tup.com.cn)本書頁面中提供下載。當然,作者也并不打算更新這些源代碼,因為這些程序都是易于理解和使用的,并且具有基礎性和穩定性。
致使用本書的教師
隨著信息技術與互聯網技術的發展,高等教育正經歷一場變革。就課堂教學而言,傳統的以傳授專業知識為主的教學模式正被以培養創新創業能力為核心的互動式、啟發式教學所取代。本書所提倡的以核心原理為主線,融知識、技術、標準、平臺與應用設計于一體的新型多媒體技術闡述框架,可以看成是順應這一趨勢的某種嘗試。
第一,采用本書進行教學,最好要求學生把筆記本電腦帶到課堂,教師邊講理論知識,邊進行程序案例演示。還可以在課堂上組織小組討論和協同應用設計。這其實就是一種“講練結合”的互動課堂教學模式。當然,有些理論性較強的內容,如無損數據壓縮算法、數字視頻編碼原理與標準、網絡多媒體基礎等,可能以講授為主,但也需要結合實際應用加以解釋。例如,在講授字典編碼算法的時候,可以用流行的壓縮軟件(如WinRAR)作為實例,說明字典算法的重要應用(可以研究一下相關軟件的配置頁面信息)。
在課堂上進行多媒體應用設計是一個挑戰。首先,教師需要做好充分的上課準備,對于計劃解決的問題及其編程方案,自己都要事先做一遍,確保無誤。因為一旦在課堂上陷入某種困局,不僅會讓教師難堪,而且也浪費時間。當然,對于有些探索性課題(例如,學生在課堂上突然提出的問題),在恰當控制時間的前提下,教師可以當堂編寫程序,或者組織學生嘗試解決,并說明允許失敗。其次,要注意把時間和精力用在核心技術上。就是說,對于一些比較復雜的應用系統設計,可以采取組裝程序的辦法,快速搭建應用系統框架,然后在關鍵部分采取現場編碼的方式進行展示。例如,本書第7章介紹有若干典型圖像處理算法,課堂演示或組織學生編程實踐的時候,可以先把除關鍵代碼以外的輔助性代碼通過文本文件發給學生,然后從文本文件中復制各個模塊的基本代碼(如打開圖像文件操作)以便搭建可運行的程序框架,最后集中力量編寫核心算法實現代碼。實踐證明,這種方式能夠有效平衡課堂時間限制與編程實踐需要之間的矛盾。
第二,除課堂上的講練結合教學以外,有些內容可以在講解核心原理并進行展示的基礎上,安排學生課后消化吸收。例如本書介紹的一些相對復雜的應用(音頻轉碼、視頻捕獲、運動對象檢測與跟蹤等),可以由學生在課后進行深入研究。
第三,教師還需要根據具體學校的培養方案和教學大綱課時限制,合理安排教學進程,做到重點突出,難點講透。重點和難點以外的其他內容可以安排課后自學。當然,具體教學還需要考慮學生的基礎和條件。
下表是以32學時(其中4學時實驗)為基準給出的一個教學進程參考。
序號章節課堂講授重點難點學時課外自學
1第1章緒論
第2章編程環境與平臺多媒體的概念、多媒體應用、體系結構;Win32API程序基礎;MicrosoftMediaFoundation基礎Windows程序運行機制2組件編程初步、多媒體應用系統設計面臨的挑戰、MicrosoftMediaFoundation音視頻管道
2第3章數字音頻基礎聲音及其屬性、采樣與量化;數字音頻編碼;數字音頻編碼國際標準PCM非線性編碼、增量調制編碼、自適應差分脈沖編碼調制2
3第4章音頻應用程序設計波形音頻文件分析;音頻播放程序;音頻轉碼程序概述、在轉碼程序中操作音頻數據波形音頻文件分析;在轉碼程序中操作音頻數據2音頻轉碼程序結構與函數分析
4第5章無損數據壓縮算法算術編碼、行程編碼;詞典編碼算法基本思想、LZ77算法、LZSS算法、LZ78算法、LZW算法算術編碼;LZ78算法、LZW算法2信息熵編碼的概念、香農范諾編碼、赫夫曼編碼
5第6章數字圖像基礎數字圖像的基本概念;RGB、RGBA、HSV和YUV彩色模型;真彩圖像、偽彩圖像;BMP圖像格式HSV模型、YUV模型;BMP圖像格式分析2CMYK模型;GIF圖像格式分析;圖像壓縮標準JPEG
6第7章圖像處理與應用程序設計位圖顯示基本程序;基于像素的位圖操作,倒立與正立顯示、分量圖像顯示、灰度圖像顯示;幾個典型的圖像處理算法,濾波、浮雕濾鏡、圖像融合;水波紋模擬程序實現圖像的倒立、正立顯示;高斯濾波;水波紋模擬程序實現4相關數據結構;圖形圖像開發包、SetPixel函數、水波紋模擬算法原理
7第8章數字視頻基礎模擬視頻,掃描、電視制式、模擬電視信號的類型;模擬視頻的數字化,數字視頻的采樣格式;YUV的取值、YCbCr轉RGB;YUV文件顯示程序設計數字視頻的采樣格式;YUV的取值、YCbCr轉RGB2YUV視頻的存儲格式;顏色空間和色差采樣率的變換
8第9章視頻應用程序設計MediaFoundation視頻播放程序設計;基于YUV文件顯示程序的淡入淡出特效;字幕與圖標添加4視頻捕獲程序;運動對象檢測與跟蹤原理及應用程序設計
9第10章數字視頻編碼原理與標準視頻編碼原理、編碼算法的基本框架;運動搜索算法,搜索起點的選擇、匹配準則;H.261、MPEG1、MPEG4運動搜索算法;MPEG42其他H.26x系列標準、MPEG系列標準;視頻編碼標準的應用和性能比較
續表
序號章節課堂講授重點難點學時課外自學
10第11章網絡多媒體基礎計算機網絡、分布式系統、分布式多媒體系統;IP多播概述;RTP協議、RTCP協議;流媒體技術的特點、典型流媒體協議分析;主要流媒體系統簡介、流媒體應用系統的組成RTP、RTCP協議;流媒體協議分析4IGMP協議、IP多播路由協議;流媒體系統應用舉例;MediaFoundation的網絡媒體源特性;視頻會議系統
11第12章網絡多媒體應用程序設計桌面屏幕圖像捕獲,桌面圖像的網絡傳輸系統設計桌面圖像的網絡傳輸系統設計2WinSock編程基礎,C/S模型、客戶端設計、服務器設計
12實驗1流媒體應用系統視頻點播系統,視頻廣播系統編碼器與視頻服務器的連接;視頻播放HTML頁面設計;編碼器、Web服務器配置2
13實驗2視頻會議系統視頻會議終端、MCU組網;會議呼叫;會議管理;系統結構會議管理、MCU的應用2
合計32
致謝
首先,作者要衷心感謝中南大學為本人提供的教學與科研平臺。中南大學是一所重視科研與教學,并注意營造良好教學氛圍的學校。通過“精品教材”“開放式精品示范課堂”“教育教學綜合改革”等項目,學校為廣大教師開展教學研究和開發教學資源創造了有利條件。
其次,作者要感謝本校2012、2013級計算機科學與技術、物聯網工程、信息安全和2013級軟件工程專業的大量本科生,本書的初稿首先在他們當中試用。在兩年多的時間里,作者受到了很多學生的熱情鼓勵并獲得了非常有幫助的意見,特別是一些學生幫助作者查找各類編寫錯誤,使作者感受到一種十分有效的群智方法。
作者在創作本書的過程中,參考了一些國內外教材或專著。清華大學林福宗老師編寫的《多媒體技術教程》被很多高校采用,本人實際上也是從采用林老師的教材開始多媒體技術專業課程教學的。在此,特別向林福宗老師致以敬意。本書的第2章引用了微軟公司的相關技術資料,并且全部程序都是基于VisualStudio設計的。眾所周知,微軟公司是全球領先的信息技術公司,其致力于軟件創新的精神值得欽佩。
最后,作者要衷心感謝清華大學出版社的工作人員,他們熱情、周到和細致的工作確保了本書的編輯出版質量。
作者(Email:djhuang@csu.edu.cn)2017年6月于長沙
黃東軍 工學博士,教授,博士生導師,中南大學信息科學與工程學院,英國格拉斯哥大學訪問學者,中國計算機學會高級會員。主要講授“多媒體原理與系統設計”“計算機網絡”“分布式系統”“物聯網技術導論”等課程;主持國家自然科學基金項目和校企合作項目多項;曾獲省部級科技進步二等獎、全國大學生信息安全競賽一等獎(優秀指導教師),多次榮獲校級教育教學成果一等獎、指導學生多次獲得優秀本科畢業論文一等獎。
第1章緒論
1.1基本概念
1.1.1媒體及其分類
1.1.2多媒體
1.2多媒體的應用
1.2.1大眾傳媒領域
1.2.2消費電子領域
1.2.3現代教育技術領域
1.2.4多媒體通信領域
1.2.5表演與會展
1.2.6Web應用
1.2.7物聯網領域
1.2.8軍事領域
1.2.9游戲與軟件
1.3體系結構
1.3.1硬件平臺層
1.3.2操作系統層
1.3.3應用系統層
思考與練習
第2章編程環境與平臺
2.1Win32API編程基礎
2.1.1概述
2.1.2Windows程序的運行機制
2.1.3第一個Win32API程序
2.1.4編程實踐:在窗口過程函數中添加代碼
2.2COM組件編程初步
2.2.1組件
2.2.2COM組件
2.3多媒體應用設計面臨的挑戰
2.4MicrosoftMediaFoundation
2.4.1基本概念
2.4.2體系結構
2.4.3音視頻管道
2.5本書資源的使用及問題解決辦法
思考與練習
第3章數字音頻基礎
3.1聲音及其屬性
3.1.1聲音的概念
3.1.2聲音的基本屬性
3.2從模擬到數字
3.2.1采樣
3.2.2量化
3.2.3編碼
3.3數字音頻編碼
3.3.1PCM編碼
3.3.2增量調制編碼
3.3.3自適應差分脈沖編碼調制
3.3.4子帶自適應差分脈沖編碼調制
3.3.5基于參數的語音編碼
3.4數字音頻編碼國際標準
3.5本章小結
思考與練習
第4章音頻應用程序設計
4.1波形音頻文件分析
4.1.1概述
4.1.2RIFFWAVEChunk
4.1.3FormatChunk
4.1.4FactChunk
4.1.5DataChunk
4.2音頻播放程序
4.2.1利用PlaySound函數播放音頻文件
4.2.2基于MFMediaSession的音頻播放
4.3音頻轉碼程序
4.3.1概述
4.3.2函數分析
4.3.3在轉碼程序中操作音頻數據
4.4本章小結
思考與練習
第5章無損數據壓縮算法
5.1信息熵編碼
5.1.1預備知識
5.1.2香農范諾編碼
5.1.3赫夫曼編碼
5.1.4算術編碼
5.2行程編碼
5.3詞典編碼
5.3.1基本思想
5.3.2LZ77算法
5.3.3LZSS算法
5.3.4LZ78算法
5.3.5LZW算法
5.4本章小結
思考與練習
第6章數字圖像基礎
6.1數字圖像的基本概念
6.1.1圖像的一般表示
6.1.2采樣與量化
6.1.3像素與位深度
6.1.4分辨率
6.2顏色模型
6.2.1RGB模型
6.2.2RGBA模型
6.2.3HSV模型
6.2.4CMYK模型
6.2.5YUV模型
6.3數字圖像的像素格式
6.3.1真彩圖像
6.3.2偽彩圖像
6.4圖像文件格式分析
6.4.1BMP圖像
6.4.2GIF圖像
6.5圖像壓縮標準JPEG
6.5.1JPEG有損壓縮技術概覽
6.5.2JPEG算法的具體處理步驟
6.6本章小結
思考與練習
第7章圖像處理與應用程序設計
7.1圖形圖像開發包
7.1.1GDI
7.1.2Direct2D
7.1.3WindowsImagingComponent
7.2位圖的基本操作
7.2.1數據結構
7.2.2一個顯示位圖的基本程序
7.3基于像素的位圖操作
7.3.1SetPixel函數
7.3.2圖像的倒立顯示
7.3.3圖像的正立顯示
7.3.4分量圖像的正立顯示
7.3.5灰度圖像的正立顯示
7.4幾個典型的圖像處理算法
7.4.1圖像濾波
7.4.2浮雕濾鏡
7.4.3圖像融合
7.5水波紋模擬
7.5.1水波紋模擬算法原理
7.5.2水波紋模擬程序的實現
7.6本章小結
思考與練習
第8章數字視頻基礎
8.1模擬視頻
8.1.1掃描
8.1.2電視制式
8.1.3模擬電視信號的類型
8.2模擬視頻的數字化
8.2.1概述
8.2.2數字視頻的分辨率格式
8.2.3數字視頻的采樣格式
8.3計算機系統中的數字視頻數據
8.3.1YUV的取值問題
8.3.2YUV視頻的存儲格式
8.3.3顏色空間和色差采樣率的變換
8.4編程實踐:一種YUV文件的顯示
8.4.1YUV文件格式分析
8.4.2顯示YUV文件的基本程序
8.4.3顯示YUV文件的改進程序
8.5本章小結
思考與練習
第9章視頻應用程序設計
9.1視頻播放
9.1.1基于MediaFoundation的視頻播放應用概述
9.1.2完整視頻播放程序設計
9.2視頻特效
9.2.1給視頻添加字幕和圖標
9.2.2淡入淡出
9.3視頻捕獲
9.3.1基于MediaFoundation的視頻捕獲概述
9.3.2設備枚舉模塊示例
9.3.3一個完整的視頻捕獲程序
9.4運動對象檢測與跟蹤
9.4.1研究背景
9.4.2概念與定義
9.4.3基本原理
9.4.4算法描述
9.4.5系統實現
9.5本章小結
思考與練習
第10章數字視頻編碼原理與標準
10.1視頻編碼算法
10.1.1編碼原理
10.1.2編碼算法的基本框架
10.2運動搜索算法
10.2.1概述
10.2.2搜索起點的選擇
10.2.3匹配準則
10.2.4運動搜索算法
10.3視頻編碼國際標準
10.3.1H.26x系列標準
10.3.2MPEG系列標準
10.3.3視頻編碼標準的應用和性能比較
10.4本章小結
思考與練習
第11章網絡多媒體基礎
11.1網絡與分布式系統
11.1.1計算機網絡
11.1.2分布式系統
11.1.3分布式多媒體系統
11.2多播
11.2.1IP多播概述
11.2.2多播用戶模型
11.2.3IGMP協議
11.2.4IP多播路由協議
11.3多媒體傳輸協議
11.3.1RTP協議
11.3.2RTCP協議
11.4流媒體技術
11.4.1流媒體技術的特點
11.4.2典型流媒體協議分析
11.5流媒體系統及其應用
11.5.1主要流媒體系統簡介
11.5.2流媒體應用系統的組成
11.5.3應用舉例
11.6MediaFoundation的網絡媒體源特性
11.6.1網絡源的創建
11.6.2網絡源的配置
11.7視頻會議系統
11.7.1視頻會議系統的構成
11.7.2視頻會議系統的應用
11.8本章小結
思考與練習
第12章網絡多媒體應用程序設計
12.1WinSock編程基礎
12.1.1C/S模型
12.1.2客戶端設計
12.1.3服務器設計
12.2遠程桌面圖像的傳輸
12.2.1屏幕圖像捕獲
12.2.2桌面圖像的網絡傳輸
12.2.3系統應用
12.3本章小結
思考與練習
第5章無損數據壓縮算法
前面已經指出,多媒體技術面臨的挑戰之一是數據量特別大。因此,需要從多方面想辦法來克服這一困難。數據壓縮就是有效的技術途徑。數據壓縮可分成兩種類型,一種是無損壓縮(losslesscompression),另一種是有損壓縮(lossycompression)。無損壓縮是指對壓縮后的數據進行重構(解壓縮)得到的數據與原來的數據完全相同。無損壓縮主要用于要求重構的數據與原始數據完全一致的場合,例如數據管理領域。而有損壓縮是指對壓縮后的數據進行重構得到的數據與原來的數據有所不同,但不會導致對原始數據的誤解。有損壓縮適用于重構數據不一定非要和原始數據完全相同的場合,例如音頻、圖像和視頻數據的壓縮。
本章介紹幾種廣泛應用的無損壓縮編碼技術,包括赫夫曼編碼、算術編碼、行程編碼和詞典編碼。有損壓縮放在圖像、視頻處理中介紹。
5.1信息熵編碼
5.1.1預備知識
1.信息量的概念
香農(Shannon)指出,信息量是對不確定性的度量。一個事件越是確定,對人們來說信息量就越小,例如“明天太陽將從東方升起”“中國在太平洋西岸”等等,這些事件對我們來說是完全確定的,所以,沒有什么信息量。從數學上講,某一事件發生的可能性越小,即概率越小,則該事件提供的信息量越大;反之,一個事件發生的概率越大,則該事件包含的信息量就越小。基于這一原理,就能夠得到計算信息量的表達式。設某事件的信息量為Ii,該事件發生的概率等于pi,則該事件的信息量與事件概率之間的關系可由式(51)給出:
Ii=log21pi=-log2pi,0
2.信源的信息熵
信源,從一般意義上講,就是指信息的來源。在信息論中,信源是指構成一類報文的基本符號的集合。報文當然就是信息的載體,是由基本符號組合而成的,這些基本符號又稱為碼元。碼元意為基本編碼單元。每一個碼元都有出現的概率,因此,每一個碼元都有其對應的信息量。那么,一個信源的所有碼元的平均信息量就稱為該信源的信息熵(entropy)。
顯然,碼元信息量是一個離散型的隨機變量,而離散型隨機變量的平均值等于該隨機變量的所有可能取值與對應概率之積的和,即隨機變量的數學期望。所以,信源的信息熵可以通過其碼元信息量的數學期望來描述。設S表示信源,含有n個碼元,碼元si出現的概率為pi,根據上述原理,該信源的信息熵H(S)由式(52)給出。
H(S)=∑ni=0piIi=∑ni=0pilog21pi(52)
在信息論中,采用式(52)計算信息熵時,單位是比特(b),即二進制的位。例如,假設有一幅灰度數字圖像(說明:數字圖像是指由像素矩陣表示的圖像;灰度圖像是指像素值代表亮度的數字圖像,第6章將詳細介紹),該圖像具有256級的灰度取值,如果每一個像素的灰度值的概率均為1/256,按照式(52),該數字圖像的碼元(像素)的信息熵等于8b。事實上,在多媒體處理系統中,256級灰度圖像的每一個像素均占用8b的存儲空間,也就是1B的存儲空間,整個圖像消耗的存儲空間等于像素的總數乘以8(單位是b)。
3.熵編碼
編碼是指用比特組合來表示碼元的技術或方法。例如,上面的例子中,一個像素用8b表示。不過這個例子比較特別,由于每一個像素的灰度取值的概率是相同的,因此每一個像素都占用8b。但是一般的應用系統中,各個碼元出現某種取值的概率往往是不同的,因此不同的碼元占用的存儲空間應當不同。容易理解,碼元占用的存儲空間與其概率成反比,也就是說,概率越大,占用的存儲空間越小,反之,則占用的存儲空間就越大。所謂熵編碼,就是指在不丟失任何信息的前提下,基于碼元的統計特性,對碼元或直接對報文本身進行編碼,使得最后存儲該報文所需要的平均比特數接近信源的信息熵。熵編碼給出了一個無損編碼的極限,即任何編碼方案最后都不能使碼元的平均比特數低于信息熵。
現在的問題是如何實現熵編碼。
假設已經知道了一個信源各個碼元的概率(實際應用中可以采用頻度來代替,通過統計得到),該信源的信息熵自然也知道了,而且我們知道各個碼元分配的比特數與其信息量接近(為什么是接近?因為式(51)計算的結果可能含有小數,而在計算機系統中只能分配整數的比特數),但是現在我們還沒有闡述如何確定一個碼元具體分配一個什么樣的比特組合。所以,還需要找到某種有效的計算方法來實現熵編碼。所謂熵編碼算法,就是一種用于確定碼元的比特組合的計算方法。
5.1.2香農范諾編碼
最早闡述和實現熵編碼的是香農和范諾(Fano),他們提出了一種被稱為香農范諾算法(ShannonFanoAlgorithm)的熵編碼計算方案。這種方案采用從上到下的方法進行編碼。下面通過一個示例來描述香農范諾編碼算法。
設給定A、B、C、D和E5個碼元,它們出現的次數和頻度如表51所示。
……