matlab huffman树,Huffman树图像加密算法
在多媒體信息中,視頻圖像信息的重要性不言而喻。提出一種采用混沌權(quán)值變異的Huffman樹(shù)的圖像加密算法。此算法在熵鳊碼過(guò)程中,以基本的Huffman樹(shù)為標(biāo)準(zhǔn),利用雙耦合混沌序列1對(duì)DC系數(shù)進(jìn)行樹(shù)的結(jié)構(gòu)未變異、路徑值變異的加密;再利用雙耦合混沌序列2對(duì)AC系數(shù)進(jìn)行碼字序號(hào)的加密。
一、JPEG格式數(shù)字圖像壓縮原理
本文采用了JPBG基準(zhǔn)模式圖像進(jìn)行壓縮,其編碼過(guò)程如下頁(yè)圖l所示。
在JPEG中,哈夫曼編碼分成3步來(lái)完成,
1)按之字型的順序調(diào)整量化后的系數(shù);
2)將按之字型順序排列的系數(shù)轉(zhuǎn)化為中間符號(hào)序號(hào);
3)將中間符號(hào)中的一部分進(jìn)行變長(zhǎng)碼字編碼(VLC)也就是哈夫曼編碼,另一部分進(jìn)行變長(zhǎng)整數(shù)編碼(Vu)。
在第二步中,因?yàn)镕DCT得到的數(shù)據(jù)是對(duì)應(yīng)頻域中各個(gè)頻率的幅值,而在頻率中能量(或幅值)主要集中在低頻(直流系數(shù)),對(duì)應(yīng)高頻的幅值大部分為零或接近零(交流系數(shù)),這顯然非常有利于數(shù)據(jù)的壓縮,所以DC和AC是分開(kāi)來(lái)處理的.就DC系數(shù)而言,對(duì)相鄰塊的DC系數(shù)差值(DIFF)進(jìn)行編碼。緊接著將DIFF轉(zhuǎn)變成中間符號(hào):(symbol-l,symbol-2)。其中symbol-l是DIFF的有效位效(以二迸制來(lái)計(jì)算,記為size對(duì)于8位的灰度值,size取值范圍為0—Il, Symbol-2是DIFF的幅值,記為amplitude.就AC系數(shù)而言,也產(chǎn)生兩個(gè)中間符號(hào),其中symbol-l包含mnlength、size兩部分。run-length代表某非零AC系數(shù)前面連續(xù)的AC系數(shù)為零的個(gè)數(shù),sizc代表非零AC系數(shù)的有效位數(shù)。
在第三步中,對(duì)第二步產(chǎn)生的中間符號(hào)序列中symbol-l進(jìn)行VLC編碼,對(duì)symbol-2進(jìn)行VLI編碼,最后輸出數(shù)據(jù)流,其中DC系數(shù)和AC系數(shù)的Huffman編碼是分開(kāi)的,對(duì)DC系數(shù),symbol-l共有12種取值,對(duì)AC系數(shù),symbol-l共有162種取值,故它們采用的哈夫曼表不同。最后Huffman編碼后的數(shù)據(jù)可以按照J(rèn)PEG文件交換格式生成標(biāo)準(zhǔn)的JPEG文件。
二、基于混沌權(quán)值變異的Huffinan樹(shù)圖像/視頻加密算法
1、雙藕合Logistic混沌映射
雙耦合Logistic混沌映射數(shù)學(xué)表達(dá)式如下:
其中ux、uy是混沌序列值,xn和yn是系統(tǒng)參數(shù),表達(dá)式如下所示:
式(l)、(2)產(chǎn)生兩個(gè)混沌序列,分別為{x1,x2,…,xn}和{Y1,y2,…,ym}。
2、基于混沌權(quán)值變異Huthnan樹(shù)(CWVHT)算法
假設(shè)有一長(zhǎng)度為L(zhǎng)、N符號(hào)組成的文本信息M,記:
此時(shí)L=30,n=6。
首先對(duì)信息M中各個(gè)符號(hào)({a,b,c,d,e,f})出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì),得出各個(gè)符號(hào)出現(xiàn)的相對(duì)概率,然后對(duì)其標(biāo)準(zhǔn)Huff-man編碼,如表l所示。
除根節(jié)點(diǎn)外,設(shè)節(jié)點(diǎn)左面分支的路徑值為’0’,右面分支的路徑值為“1”,對(duì)于各個(gè)符號(hào)的代碼就是從根節(jié)點(diǎn)出發(fā)到葉子節(jié)點(diǎn)所經(jīng)過(guò)的分支的序列.表l生成的標(biāo)準(zhǔn)Huffman樹(shù)如圖2(a)所示。
若將圖2中任意節(jié)點(diǎn)的左、右支的路徑值交換(此處假設(shè)為節(jié)點(diǎn)3、2、4),其結(jié)果如圖2(b)、(c)、(d)和表2所示。
由表2可知,交換節(jié)點(diǎn)的路徑值使樹(shù)的總體結(jié)構(gòu)和每一個(gè)符號(hào)的概率分布未發(fā)生改變,但符號(hào)所對(duì)應(yīng)的碼字發(fā)生了變換。即通過(guò)這樣隨機(jī)交換節(jié)點(diǎn)路徑值的方式,對(duì)每一個(gè)符號(hào)進(jìn)行編碼后能更新樹(shù)的路徑值,從而使編碼的過(guò)程在保持樹(shù)結(jié)構(gòu)不變的情況下,可由輸入的符號(hào)和密鑰來(lái)決定需要交換分支路徑值的節(jié)點(diǎn)位置,最終實(shí)現(xiàn)新的編碼。密鑰流可由混沌序列來(lái)產(chǎn)生,這個(gè)過(guò)程稱(chēng)為”基于混沌權(quán)值變異的Huffman樹(shù)算法(cwvhi)。
3、加密算法描述
在熵編碼過(guò)程中,利用雙耦合Logistic混沌序列對(duì)DC系斂和AC系散編碼過(guò)程分別進(jìn)行不同方法的加密,對(duì)DC系數(shù),采用前面介紹的CWVHT對(duì)AC系數(shù),采用加密碼字序號(hào)的方法,圖像的整個(gè)加密過(guò)程如圖3所示。
(1)DC系數(shù)壕碼加密
假設(shè)DC系散的中間格式為(srze,ampluude),其size的取值為0N11,故令N=12.對(duì)DC系數(shù)中間格式的第一個(gè)符號(hào)采用cwvrrr,由混沌序列X和相鄰塊DC系數(shù)差值DIFF產(chǎn)生需要交換路徑值的節(jié)點(diǎn),設(shè)為nf,計(jì)算公式如下:
其中floor表示向下取整;i的取值范圍為l-K,K為圖像總block數(shù)目;參數(shù)α、β都屬于整數(shù)。
(2)AC系數(shù)編碼加密
在借鑒已有熵編碼加密算法的基礎(chǔ)上,提出一種適合JPEG熵編碼特點(diǎn)的加密碼字序號(hào)的方法,如圖4所示。
即采用混沌序列,加密碼字序號(hào)(循環(huán)移位運(yùn)算),得到一個(gè)新的碼字序號(hào),然后根據(jù)這個(gè)新的序號(hào)在原碼表中找到其對(duì)應(yīng)新的碼字作為碼流輸出,為了不影響壓縮比,算法進(jìn)行不同碼長(zhǎng)不同段的加密。在AC Huffmtn編碼哀中,其碼長(zhǎng)與碼字個(gè)數(shù)的對(duì)應(yīng)關(guān)系如表3所示。
三、實(shí)驗(yàn)結(jié)果
本文在MATLAB實(shí)驗(yàn)平臺(tái)上,對(duì)Lena(512 x512)測(cè)試,圖5(a)為k蛆原始圖,圖5(b)為L(zhǎng)ena加密密鑰α=l6,β=13,x(l)=0.915,y(l)=0.537下,正確解密后的量建圖像。
小知識(shí)之Huffman樹(shù)
給定n個(gè)權(quán)值作為n的葉子結(jié)點(diǎn),構(gòu)造一棵二叉樹(shù),若帶權(quán)路徑長(zhǎng)度達(dá)到最小,稱(chēng)這樣的二叉樹(shù)為最優(yōu)二叉樹(shù),也稱(chēng)為哈夫曼樹(shù)(Huffman tree)。哈夫曼樹(shù)是帶權(quán)路徑長(zhǎng)度最短的樹(shù),權(quán)值較大的結(jié)點(diǎn)離根較近。
總結(jié)
以上是生活随笔為你收集整理的matlab huffman树,Huffman树图像加密算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 好的技术领导与差的技术领导,千万不要对号
- 下一篇: H3CNE、H3CSE考试总结