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