<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > PNG的硬件解碼加速設計

PNG的硬件解碼加速設計

作者: 時(shí)間:2009-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏
0 引 言
(Portable Network Graphic Format)是流式網(wǎng)絡(luò )圖形格式的簡(jiǎn)稱(chēng),是一種位圖文件(Bitmap File)存儲格式。文件采用壓縮率高的LZ77和Huffman兩種無(wú)損壓縮算法,支持網(wǎng)絡(luò )彩色圖像傳輸,支持Alpha通道、定義透明區域和多重透明,逐步細化地顯示圖片。
壓縮的核心算法是采用Zip壓縮算法,該算法的特點(diǎn)就是先利用LZ77算法進(jìn)行短語(yǔ)式重復的壓縮得到未匹配的字節和匹配長(cháng)度、距離的組合值,然后再根據Huffman算法進(jìn)行單字節重復的壓縮最終得到壓縮碼流。PNG的原理也就是壓縮的反過(guò)程,那么時(shí)可根據碼表信息和壓縮碼流還原出原始圖像數據。
PNG文件的通常由軟件完成,軟件解碼實(shí)現方式靈活,但相對解碼而言,軟件解碼速度慢,能量消耗大,不利于移動(dòng)設備的低功耗優(yōu)化。為此,這里討論了PNG圖像的解碼實(shí)現方法,其應用對象是手機專(zhuān)用芯片,對低功耗和解碼速度都有較高的要求,并解決了PNG解碼的快速查表、軟協(xié)調和硬件等實(shí)現方法,而硬件解碼功能的主要作用是減少CPU的負擔,極大加快PNG圖片顯示速度,并在一定程度上減少了功耗,延長(cháng)了手機的待機時(shí)間,具有很大研究與開(kāi)發(fā)的實(shí)際價(jià)值。

1 PNG圖像解碼原理的介紹
1.1 LZ77算法介紹

LZ77算法可以稱(chēng)為“滑動(dòng)窗口壓縮”,該算法將一個(gè)虛擬的,可以跟隨壓縮進(jìn)程滑動(dòng)的窗口作為術(shù)語(yǔ)字典;要壓縮的字符串若在窗口中出現,則輸出匹配長(cháng)度和距離的組合信息,來(lái)替換前面出現的相同字符串,且要求最小匹配的字符串為3個(gè)字節,這樣可以保證壓縮后的數據量小于原始數據。
例如窗口的大小為15個(gè)字符,岡0剛編碼過(guò)的15個(gè)字符為:byhelloeveryone,即將編碼的字符為:helloto―e、,eryonehi??梢园l(fā)現有些字符串前面已經(jīng)出現過(guò),則用()起來(lái)的字符串表示滑動(dòng)窗口中已出現過(guò)的匹配串:(hello)to(everyone)hi。
以上這些原始信息,可利用LZ77算法用匹配長(cháng)度和距離的組合信息來(lái)替換有匹配的字符串,若碰到未匹配的字節則直接輸出,壓縮后的內容為:(5,13)to(8,15)hi。在LZ77解壓縮時(shí),只要維護好滑動(dòng)窗口,隨著(zhù)壓縮信息的不斷輸入,可根據匹配的組合信息從窗口中找到相應的匹配字符串作為輸出,即可還原出原始數據。
1.2 Huffman算法介紹
Huffman算法屬于編碼式壓縮,利用各個(gè)單字節所使用頻率不一樣的特點(diǎn),使定長(cháng)編碼轉變?yōu)樽冮L(cháng)的編碼,給頻率高的字節更短的編碼,使用頻率低的字節更長(cháng)的編碼,起到無(wú)損壓縮的效果。這樣,經(jīng)過(guò)LZ77壓縮后的未匹配的字節和匹配的組合信息可以進(jìn)一步地進(jìn)行Huffman壓縮,從而得到很高的壓縮效率。
例如,對于一組元素的字符值為s={a,b,c,d,e,f},其對應的出現頻率為P={10,2,2,2,2,9}。圖1是根據以上信息建立的Huffman樹(shù)。各元素出現頻率和元素值如圖1所示,編碼后的各個(gè)元素長(cháng)度分別為L(cháng)一{1,3,3,3,3,2},可見(jiàn)編碼后儲存這些字符值所需的空間極大地減少了。

本文引用地址:http://dyxdggzs.com/article/166979.htm

這棵Huffman樹(shù)是根據PNG規范的Dellate原則建立的,具有以下特點(diǎn):
(1)左邊的葉子編碼為0,右邊的為1;
(2)編碼必須滿(mǎn)足“前綴編碼”的要求,即較短的編碼不能是較長(cháng)編碼的前綴,這保證了碼的惟一性;
(3)每一層葉子的節點(diǎn)頻率按從小到大排列,而同樣頻率的節點(diǎn)按字符值從小到大排列,這點(diǎn)也是PNG采用的zip算法對Huffman算法的一種改進(jìn)。因此,解碼時(shí)首先要提取出壓縮流中的碼表信息建立出Huffman樹(shù),其中每個(gè)葉結點(diǎn)應包含有碼長(cháng)和字符值信息,并把最終生成的碼表保存在RAM中供給Huff_man解碼模塊查表還原出圖像原始數據。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 設計 加速 解碼 硬件 PNG 音頻

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>