语音处理:霍夫曼编码算法原理分析
生活随笔
收集整理的這篇文章主要介紹了
语音处理:霍夫曼编码算法原理分析
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
語(yǔ)音處理:霍夫曼編碼算法原理分析
- 前言
- 霍夫曼編碼解密
- 擴(kuò)展資料
前言
- 分類:無(wú)損編碼中常見(jiàn)的為熵編碼,主要分為霍夫曼編碼和算術(shù)編碼。霍夫曼編碼是無(wú)損編解碼中的經(jīng)典壓縮算法。
- 效果:如果沒(méi)有壓縮算法,一張未經(jīng)壓縮的2M圖片,同樣內(nèi)存可以放下70萬(wàn)字的鴻篇巨著紅樓夢(mèng)。
- 特點(diǎn):霍夫曼編碼雖無(wú)法達(dá)到算術(shù)編碼逼近信息熵極限的壓縮效率,但由于算法簡(jiǎn)單、實(shí)現(xiàn)優(yōu)美且可以避免大量算術(shù)編碼的專利封鎖,應(yīng)用十分廣泛,如mp3、aac、jpeg等均采用了此算法。
霍夫曼編碼解密
本文結(jié)合文章《JPEG算法解密(四):霍夫曼編碼》進(jìn)行分析解讀,有興趣的讀者可相互參照,增進(jìn)理解。
jinchao霍夫曼思路分析:
效果:將64個(gè)byte數(shù)據(jù),無(wú)損壓縮成10byte,壓縮率達(dá)84%
- 霍夫曼核心:RLE編碼 + BIT編碼
- 數(shù)據(jù)分組
- 原則:0最高頻,優(yōu)先分組
- 若無(wú)零,則非零組成一組
- 若有零,則連續(xù)零+非零形成一組
- 若組內(nèi)0個(gè)數(shù)超過(guò)16,則拆分
- 最后形成單組:0, 0, 0, ..., val
- RLE編碼過(guò)程
- 一個(gè)組形成一對(duì)(zero_count, val)
- zero_count表示0的個(gè)數(shù)
- val表示結(jié)尾的數(shù)值
- 若為最后一個(gè)組且全零,則單獨(dú)編EOB
- 根據(jù)值范圍,設(shè)計(jì)碼本
- 結(jié)構(gòu)體:val, size, bit
- 對(duì)val編碼,得到size和bit
- (zero_count, val)組成新數(shù)據(jù)(zero_count, size, bit)
- 將zero_count和size合并成一個(gè) byte,高四位給zc,低四位給size
- 得到(new_val, bit),前者為直流數(shù)據(jù),后者為交流數(shù)據(jù)
- 一個(gè)組形成一對(duì)(zero_count, val)
- BIT編碼過(guò)程
- 對(duì)new_val進(jìn)行霍夫曼編碼
- 數(shù)組第一個(gè)是DCT變換后的直流部分,表征總體能量,用第一個(gè)霍夫曼碼本表示
- 之后的分組數(shù)據(jù)為交流部分,用第二個(gè)霍夫曼碼本表示
- 查表得到霍夫曼編碼結(jié)果,最后將其組合
個(gè)人理解:
- 疑惑點(diǎn)
- 第1、2個(gè)霍夫曼碼本咋來(lái)的?
- 編碼后的01數(shù)據(jù)如何解碼呢?
- 壓縮效果對(duì)比:
- 壓縮前,64個(gè)數(shù)據(jù),需64個(gè)字節(jié)
- 壓縮后,只需10個(gè)字節(jié)
擴(kuò)展資料
總結(jié)
以上是生活随笔為你收集整理的语音处理:霍夫曼编码算法原理分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。