国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

視頻壓縮簡介(一)

發(fā)布時(shí)間:2010-2-6 21:59    發(fā)布者:bakedham
關(guān)鍵詞: 視頻 , 壓縮
前言

視頻壓縮算法通過對視頻信號的壓縮處理可以極大地降低視頻信號的存儲和帶寬需求,在此基礎(chǔ)上盡可能多的獲得最佳的圖像質(zhì)量。因此,了解視頻壓縮算法的基本原理對于嵌入式系統(tǒng),處理器以及視頻應(yīng)用工具的開發(fā)人員來說,是非常必要的,例如在處理器選型以及軟件優(yōu)化的過程中,視頻壓縮算法的性能開銷和存儲空間占用就是其中非常關(guān)鍵的因素。

在本文中,我們將著重探討視頻壓縮算法的特點(diǎn)和處理流程,我們將對基本的視頻壓縮算法進(jìn)行解釋,包括靜態(tài)圖像壓縮、運(yùn)動估計(jì)、圖像去噪, 以及色彩空間轉(zhuǎn)換,同時(shí)我們還將討論視頻壓縮算法對處理器的性能需求以及由這些需求所帶來的一系列影響。

靜態(tài)圖像壓縮

視頻剪輯也就是我們通常所說的動態(tài)圖像序列,動態(tài)圖像序列是由在時(shí)間軸上的若干幅靜態(tài)圖片組成的,在動態(tài)圖像序列中的每一幅圖片稱之為“幀”。在動態(tài)圖像的壓縮算法中大量的使用了靜態(tài)圖像壓縮的算法和技術(shù),例如靜態(tài)圖像壓縮標(biāo)準(zhǔn)JPEG。實(shí)際上簡單的動態(tài)圖像序列壓縮的方法就是將此序列中的每一幅靜態(tài)圖片獨(dú)立的壓縮,忽略掉這些圖片在時(shí)間上的相關(guān)性。在一些視頻產(chǎn)品的應(yīng)用中使用了這種方法,將每一幅圖片都用JPEG標(biāo)準(zhǔn)進(jìn)行壓縮,我們稱之為“運(yùn)動JPEG”或者也叫MJPEG。

目前更為先進(jìn)的視頻壓縮算法更多的利用了視頻序列中連續(xù)的靜態(tài)圖像,也就是連續(xù)幀之間的時(shí)間相關(guān)性,利用運(yùn)動估計(jì)和運(yùn)動補(bǔ)償算法獲得更好的壓縮比,當(dāng)然這些先進(jìn)的視頻壓縮算法也同樣采用了靜態(tài)圖像壓縮里面的一些基本算法,因此我們的討論就從基于塊變換的靜態(tài)圖像算法JPEG開始。

數(shù)字圖像壓縮的基本單元

塊變換

在JPEG和大多視頻壓縮算法中所采用的壓縮算法都是“有損壓縮”,所謂有損壓縮就是指從壓縮后的數(shù)據(jù)中無法完全恢復(fù)重構(gòu)出原始的壓縮前圖像,有損壓縮會丟失掉一部分原始圖像的信息,因此,有損壓縮算法就需要盡量保證由信息丟失所造成的原始圖像和重構(gòu)圖像之間的差異不被人眼所察覺。

對于JPEG和類似的圖像壓縮算法來說,壓縮的第一步需要將圖像分割為小塊,同時(shí)將每個(gè)小塊進(jìn)行變換,使之由空域信號變換成為時(shí)域信號。這種空域到時(shí)域的變換多采用8x8的離散余弦變換(以下稱DCT),經(jīng)過DCT變換之后,8x8的空域像素矩陣變換成為 8x8的頻域信號矩陣,DCT變換能夠完整的保留所有8x8像素塊的信息,因此反向離散余弦變換(以下稱IDCT)也就能夠從8x8頻域信號矩陣中完整的恢復(fù)原始8x8像素矩陣。DCT變換后的頻域信號矩陣中包含原始8x8像素矩陣的低頻部分和高頻部分,其中低頻部分對應(yīng)圖像的重要信息,高頻部分對應(yīng)圖像的細(xì)節(jié)信息,就人眼的特點(diǎn)來說,對于圖像低頻部分的感知要比對于圖像高頻部分的感知敏感很多,因此在DCT變換將圖像的信息按照其人眼感知的敏感程度分離之后,后續(xù)的壓縮步驟就是將其低頻部分編碼更多的比特,從而獲得更高的精度,而對其高頻部分編碼更少的比特?cái)?shù)或者不編碼比特,從而在保留一定的視覺效果的同時(shí),獲得更好的壓縮效果。在解碼端,再用IDCT變換從頻域信號矩陣中恢復(fù)出原始8x8像素矩陣。

IDCT變換和DCT變換的運(yùn)算量基本一致,因此這兩種變換對處理器的性能要求也基本類似。一個(gè)二維8x8 DCT變換和IDCT變換在典型的DSP平臺上需要數(shù)百個(gè)指令周期完成,視頻壓縮算法的執(zhí)行中每秒都需要進(jìn)行大量的DCT和IDCT運(yùn)算,以一個(gè) MPEG4的解碼器為例,在解碼分辨率為CIF(352x288),幀率為30fps的視頻序列時(shí),需要每秒進(jìn)行71,280次IDCT運(yùn)算,在TI TMS320C55x DSP處理器平臺上需要占用40MHz的處理性能(不考慮集成DCT加速器),這大概占用了整個(gè)視頻解碼器應(yīng)用時(shí)處理器性能的30%。

由于DCT和IDCT運(yùn)算的單位都是很小的圖像塊,因此相對于幀緩存以及圖像壓縮應(yīng)用中的其他數(shù)據(jù)存儲來說,其對存儲資源的占用幾乎可以忽略不計(jì),正是基于其大運(yùn)算量,低存儲占用的特點(diǎn),DCT和IDCT運(yùn)算單元特別適合用專用的硬件加速協(xié)處理器來實(shí)現(xiàn)。

量化

DCT變換后的結(jié)果稱為DCT系數(shù),正如上文所說,編碼器需要對于DCT系數(shù)中的重要的低頻分量編碼更多的比特,對于DCT系數(shù)中的次要的高頻分量編碼更少的比特,這種對系數(shù)的編碼方法可以通過兩步來實(shí)現(xiàn):首先通過量化過程舍去次要的視頻信息,然后利用統(tǒng)計(jì)學(xué)的方法盡可能少的對剩余的重要信息進(jìn)行比特編碼。

量化過程就是將每個(gè)DCT系數(shù)向若干預(yù)設(shè)值進(jìn)行舍入的過程,例如,DCT系數(shù)是值介于-1 到1 之間的實(shí)數(shù),將其用縮放因子20進(jìn)行縮放,同時(shí)將結(jié)果舍入到最近的整數(shù),于是DCT系數(shù)便量化成為值介于-20到20之間的整數(shù),共有41個(gè),在理想情況下,為每個(gè)DCT系數(shù)選擇合適的量化因子可以使量化后的DCT系數(shù)在向右取整的過程中不至于引入明顯的量化噪聲。

在解碼端,采用與編碼端相反的反量化過程,就上文所屬的例子來說,對量化后的DCT系數(shù)進(jìn)行反量化,用1/20進(jìn)行縮放,反量化值縮放到-1到1之間,注意此時(shí)的反量化值與原始的量化前系數(shù)已經(jīng)不再相等,不過足夠接近,以保證IDCT 變換以后不會引入明顯的視覺差異。反量化大概需要占用整個(gè)視頻解碼器應(yīng)用時(shí)處理器性能的3%-15%,與DCT和IDCT變化類似,量化和反量化對存儲器的資源占用可以忽略不計(jì)。

編碼

壓縮的下一個(gè)步驟即是對量化后的DCT系數(shù)進(jìn)行比特編碼,使之成為傳輸比特流,為了盡可能少的編碼比特?cái)?shù),達(dá)到數(shù)據(jù)壓縮的效果,需要利用量化后的DCT系數(shù)的一些統(tǒng)計(jì)特性。

量化后的DCT系數(shù)的值大多是0值,特別是大量的高頻DCT系數(shù)分量,一種叫做“游程編碼”(以下稱run-length編碼)的技術(shù)可以很好的利用DCT 系數(shù)的這一特點(diǎn),在這種編碼技術(shù)中,并不對每個(gè)0值系數(shù)單獨(dú)編碼,而是將連續(xù)的0值(run)進(jìn)行打包,然后再對這些連續(xù)0值系數(shù)的個(gè)數(shù)(length) 進(jìn)行編碼。

為了更大程度的利用run-length編碼的特點(diǎn),需要對8x8系數(shù)矩陣進(jìn)行zig-zag掃描,保證先對低頻系數(shù)分量進(jìn)行編碼,然后再對高頻系數(shù)分量進(jìn)行編碼,這樣做的目的是因?yàn)樵诟哳l系數(shù)分量中出現(xiàn)大量連續(xù)0值系數(shù)的概率更高。

Run- length編碼完成后即進(jìn)行變長編碼(VLC),在變長編碼中,每個(gè)可能出現(xiàn)的數(shù)據(jù)值作為一個(gè)符號(例如每種可能run-length值作為一個(gè)符號),出現(xiàn)概率大的符號值用比特?cái)?shù)更少的碼字表示,出現(xiàn)概率小的符號值用比特?cái)?shù)更多的碼字表示,變長碼相對于定長碼使用的比特?cái)?shù)更少,(定長碼是一種直接編碼方法,例如直接將每個(gè)量化后DCT系數(shù)編碼為其二進(jìn)制表示),因此變長碼在編碼一幅圖像時(shí)所消耗的平均比特?cái)?shù)更少。在變長碼編碼中,哈夫曼編碼是一種廣泛使用的編碼方法,基于每個(gè)符號的發(fā)生頻率,哈夫曼編碼可以獲得更優(yōu)的編碼效果。

理論上,對一組符號序列來說,變長編碼并不是最優(yōu)的編碼方法,相對于變長編碼來說,“算術(shù)編碼”的編碼比特?cái)?shù)更少,編碼效果更好。變長編碼為每個(gè)符號分配單獨(dú)的碼字,因此每個(gè)符號都需要整數(shù)個(gè)比特個(gè)數(shù)(即每個(gè)符號至少占用1個(gè)比特),算術(shù)編碼將一組符號序列作為一個(gè)整體來進(jìn)行編碼,因此并不是每個(gè)符號都需要占用比特,因此可以獲得更大的壓縮率,但是算術(shù)編碼的運(yùn)算法雜程度遠(yuǎn)遠(yuǎn)大于變長編碼,因此只在最近的一些商用視頻壓縮算法中獲得應(yīng)用,相對于算術(shù)編碼,在很多應(yīng)用中,run-length編碼和變長編碼的組合編碼方法相對于算術(shù)編碼運(yùn)算復(fù)雜程度低,編碼效率足夠,因此時(shí)至今日變長編碼仍然在大量的視頻壓縮協(xié)議中廣泛應(yīng)用。

變長編碼通過對碼字和其長度的查找表實(shí)現(xiàn),完成查找后將碼字取出填充進(jìn)比特流輸出,對應(yīng)的解碼端過程稱之為變長解碼(VLD),最直接的變長解碼做法需要對每一個(gè)比特都要進(jìn)行查表操作和判決,相對于變長編碼對每一個(gè)符號所進(jìn)行的查表操作來說,這種變長解碼的方法運(yùn)算量更加密集,平均每個(gè)比特需要進(jìn)行11步操作,因此變長解碼的處理性能需求是和解碼器的解碼碼率成正比的,對于一些低分辨率和低碼率的視頻序列來說,變長解碼往往占到整個(gè)解碼器應(yīng)用時(shí)處理器性能的 25%。

在一個(gè)典型的視頻解碼器中,上文所描述的這種最直接的變長解碼方法需要占用數(shù)KB大小的存儲空間用于存放查找表,為了獲得更高的解碼性能,可以采用一次處理一批比特的做法,當(dāng)然,這種做法需要付出更大存儲空間的代價(jià)。

變長編碼的缺點(diǎn)在于,當(dāng)編碼后的圖像或者編碼后視頻幀的比特流中出現(xiàn)誤碼時(shí),解碼端將無法正確恢復(fù)誤碼后的圖像部分,一旦出現(xiàn)誤碼,解碼端就無法識別誤碼所對應(yīng)的正確碼字的長度,因此也就無法識別下一個(gè)正確碼字在比特流里的起始位置,也就無法繼續(xù)解碼圖像。一種技術(shù)可以部分解決這個(gè)問題,該技術(shù)在編碼比特流中預(yù)先插入“重同步標(biāo)志”,重同步標(biāo)志的插入位置和內(nèi)容是事先定義好的,因此解碼端在解碼過程中能夠?qū)χ赝綐?biāo)志進(jìn)行正確定位,因此當(dāng)誤碼發(fā)生的時(shí)候,解碼器可以從誤碼位置向后搜索下一個(gè)重同步標(biāo)志,然后可以從這個(gè)重同步標(biāo)志以后解碼出后續(xù)的圖像部分。

此外,在MEPG4視頻壓縮標(biāo)準(zhǔn)中,還采用了稱為“反向變長碼”的技術(shù),在反向變長碼中,碼字的選擇保證了其不但能夠從普通的正向進(jìn)行解碼,同時(shí)也能夠從反向進(jìn)行解碼,因此當(dāng)誤碼發(fā)生的時(shí)候,解碼端可以向下搜索下一個(gè)重同步標(biāo)志,搜索到了以后,再從重同步標(biāo)志的位置反向解碼至誤碼位置,因此解碼端能夠盡可能多的恢復(fù)圖像數(shù)據(jù)。

到此為止,上面描述的所有技術(shù)都是針對一個(gè)獨(dú)立的8x8的像素塊,一幅圖像所包含的信息遠(yuǎn)大于一個(gè)8x8像素塊所能包含的信息,因此利用相鄰塊彼此的相關(guān)性可以應(yīng)用更多更有效的壓縮方法。

為了利用塊與塊之間的相關(guān)性,可以采用預(yù)測的技術(shù),編碼器在對DCT系數(shù)進(jìn)行量化之前,可以基于周邊塊的DCT系數(shù)預(yù)測當(dāng)前塊的DCT系數(shù),然后對預(yù)測值和當(dāng)前實(shí)際值的差值進(jìn)行量化,而不是直接對當(dāng)前DCT系數(shù)進(jìn)行量化,由于這個(gè)差值往往比較小,因此這項(xiàng)技術(shù)可以減少對DCT系數(shù)編碼的比特?cái)?shù),對于解碼端,采用相同的預(yù)測方法,然后將從碼流解碼出來的差值加上預(yù)測出來的預(yù)測值,就可以重構(gòu)出實(shí)際的DCT系數(shù)值,需要注意的是,由于解碼端只能夠獲得那些在當(dāng)前塊解碼前已經(jīng)解碼的塊的DCT系數(shù),因此編碼端必須保證只用到那些在編碼當(dāng)前塊之前已經(jīng)編碼的塊的DCT系數(shù)作為預(yù)測值。

對于最簡單的情況,只對每個(gè)塊的第一個(gè)系數(shù)進(jìn)行預(yù)測,這個(gè)系數(shù)被稱作“DC系數(shù)”,它代表 DCT系數(shù)里的最低頻分量,等于所有塊像素的均值,其余的系數(shù)被稱作“AC系數(shù)”。這種最簡單的做法是基于這樣的假設(shè),即當(dāng)前塊的DC系數(shù)等于左邊相鄰塊的DC系數(shù),這種做法利用了當(dāng)前塊和左邊相鄰塊的空間相關(guān)性,對當(dāng)前塊和前一編碼塊的DC系數(shù)的差值進(jìn)行編碼,被稱為“DC系數(shù)差分編碼”,在JPEG圖像壓縮標(biāo)準(zhǔn)中得到了廣泛的應(yīng)用。

也有一些更為復(fù)雜的預(yù)測方法,例如對8x8塊的每一行和每一列的第一個(gè)DCT系數(shù)進(jìn)行預(yù)測,這樣的方法被稱作“AC-DC預(yù)測”,同上面所描述的差分編碼的方法相比,這種方法采用了更為復(fù)雜的預(yù)測方法,首先,對預(yù)測值的計(jì)算采用了濾波的方法,而不是簡單的等于相鄰塊對應(yīng)的系數(shù),其次,預(yù)測值的產(chǎn)生可能要考慮多個(gè)相鄰塊,預(yù)測值可能是基于多個(gè)塊預(yù)測值的組合,同樣,編碼器會從多個(gè)預(yù)測塊中選出一個(gè)來獲得最好的預(yù)測效果,這樣的話編碼器就必須在碼流中表明哪一個(gè)相鄰塊被選中,這樣解碼器才能夠進(jìn)行同樣的預(yù)測過程正確重構(gòu)DCT系數(shù)。

來源:Berkeley Design Technology, Inc.
本文地址:http://www.qingdxww.cn/thread-8233-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
zhuce123 發(fā)表于 2018-1-11 14:47:39
通俗易懂。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 5分鐘詳解定時(shí)器/計(jì)數(shù)器E和波形擴(kuò)展!
  • 想要避免發(fā)生災(zāi)難,就用MPLAB® SiC電源仿真器!
  • 無線充電基礎(chǔ)知識及應(yīng)用培訓(xùn)教程3
  • 安靜高效的電機(jī)控制——這才是正確的方向!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)在線工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人午夜小视频手机在线看 | 色老头综合免费视频 | 免费欧洲毛片a级视频老妇女 | 亚洲夜夜骑 | 亚洲韩国日本欧美一区二区三区 | 老师的小兔子好大好软水好多视频 | 亚洲一区二区三区高清 | 美国伦理片大全手机在线 | 久久2017| 成人免费久久精品国产片久久影院 | 久久精品免费大片国产大片 | 中国美女大战黑人国产 | 日韩精品视频美在线精品视频 | 四虎影院的网址 | 99视频免费看 | 日韩高清影视 | 99热这里只有精品国产在热久久 | 九九精品视频在线观看九九 | 欧美3p大片在线观看完整版 | freee性欧美| 亚洲an天堂an在线观看 | 久久精品久久精品久久精品 | 国产精品国产三级国产普通话 | 国产精品视频一区牛牛视频 | 成人免费观看网欧美片 | 国产日韩精品一区在线观看播放 | 手机看日韩毛片福利盒子 | 日日夜夜噜噜噜 | 成人午夜久久精品 | 手机毛片在线观看 | 亚洲欧美日韩在线精品一区二区 | 四虎国产一区 | 色视频在线网站 | 久久久国产精品福利免费 | 成人性色大片 | 91高清在线观看 | 91av视频导航 | 国产大战女模特在线视频 | 日本免费精品视频 | 青青青草视频在线观看 | 四虎永久在线精品 |