一種基于DWT-DCT變換強魯棒性的數(shù)字水印算法
1 引言
網(wǎng)絡(luò)技術(shù)的迅速發(fā)展使多媒體數(shù)據(jù)的傳輸更加容易,信息隱藏和版權(quán)保護成為迫切需要解決的問題,數(shù)字水印技術(shù)是保護數(shù)據(jù)的有效途徑。不可見性和魯棒性是數(shù)字水印系統(tǒng)兩個最重要的特性。水印被嵌入在圖像的一些重要系數(shù)中,其抗攻擊的魯棒性較好,但重要系數(shù)改變太多,則圖像會產(chǎn)生嚴重失真。所以魯棒性和不可見性是彼此矛盾的。水印技術(shù)可分為空域水印技術(shù)和變換域水印技術(shù)??沼蛩∷惴敯粜圆睢W儞Q域算法可使所嵌入水印信號的能量分散到空間的所有像素上,有利于保證水印的不可見性,同時魯棒性強。離散余弦變換DCT(Discrete Cosine Transformation)算法易于在數(shù)字信號處理器中快速實現(xiàn),離散余弦變換域圖像水印與常用的圖像壓縮標準JPEG兼容,對壓縮、濾波和其他一些攻擊具有較強的穩(wěn)健性。離散小波變換DWT(DiscreteWavelet Transformation)是將信號分解為不同尺度分量的線性運算,其實現(xiàn)是通過信號與尺度變化的濾波器卷積完成的。離散小波變換是一種多分辨率分析方法,在時域和頻域都可表征信號局部特征。小波分解將原始圖像分解為一系列的低頻分量和高頻分量,根據(jù)人類感覺系統(tǒng)的掩蔽效應,可將數(shù)字水印信息嵌入到原始載體不易被感知的區(qū)域,使數(shù)字水印具有較強的不可見性。
由于小波變換具有良好的局部時頻分析特性和多分辨率分析特性,而離散余弦變換具有良好的聚能效應。綜合兩種變換的優(yōu)點,這里提出一種基于DWT和DCT聯(lián)合變換的數(shù)字水印技術(shù)。
2 水印的嵌入算法
水印嵌入算法的主要思想:為了提高水印的安全性,在水印嵌入前先進行混沌加密,然后將宿主圖像經(jīng)過DWT得到4個子帶:LL、LH、HL、HH,選擇HL作為嵌入子帶。為了使嵌入的水印可以均勻分布在HL子帶,對HL子帶分塊進行DCT變換。將水印嵌入DCT變換后的中頻系數(shù)。這里采用經(jīng)典的比較中頻系數(shù)法進行水印嵌入,嵌入過程如圖1所示。
該算法步驟如下:
(1)對原始水印圖像進行混沌置亂加密。置亂水印圖像能增強水印算法的安全性。充分利用混沌序列對初值的敏感性高、安全性強、密鑰空間大的特點,對水印圖像進行置亂。混沌序列由Logistic映射產(chǎn)生,按照Logistic映射式式(1)進行迭代,得到序列:
式中,xn∈(0,1),μ為分叉參數(shù)。
由Lyapunov指數(shù)的計算可知,當3.569 9≤μ≤4時,Lo-gistic映射處于混沌狀態(tài)。研究表明,當且僅當μ=4時,映射具有最強的混沌特性,所以在生成混沌序列時取μ=4。xn是實值序列,實值序列不利于計算機處理,通常需要對實值序列進行量化,對xn進行量化得到二值序列Xn。
Logistic序列對初始值敏感,只要設(shè)定迭代次數(shù)、初始值,就可以得到很多偽隨機序列,因此將初始值作為用戶的密鑰,利用式(1)產(chǎn)生混沌序列混沌序列Xp。加密數(shù)字水印的方法很多,這里采用將水印圖像W表示為向量形式Wp,P=1,2,…MxN。Wp作為明文空間,利用混沌序列Xp對水印圖像進行加密,得到加密后的水印圖像Vp:
這里+執(zhí)行異或運算。解密過程與加密相同,用加密后的水印和混沌序列進行異或運算。將x0=0.800 000 000 1作為用戶的密鑰,圖2為加密后的水印圖像?;煦缧蛄袑Τ踔禈O其敏感,即使密鑰(初值)相差細微,也無法正確解密水印圖像。
(2)對宿主圖像進行一級DCT變換。得到4個子帶LL、LH、HL、HH,為了兼顧透明性和魯棒性,選擇HL作為嵌入子 、帶。提取HL系數(shù)組成的矩陣A。
(3)對HL系數(shù)組成的矩陣A,按照8x8的大小進行分塊。分成8x8的塊是為了與JPEG壓縮標準兼容。
(4)對分塊后的矩陣進行DCT變換。
(5)對于DCT變換后的第i塊系數(shù),采用比較DCT中頻系數(shù)法進行水印的嵌入。比較中頻系數(shù)法的思想是:從中頻區(qū)域選擇兩個位置鼠Bi(v1,v1)和Bi(v2,v2)進行比較,下標i表示第i塊??汕度?2個中頻系數(shù),如圖3所示。圖中FL表示塊的低頻部分,F(xiàn)H代表高頻部分。FM是可選擇嵌入的中頻區(qū)域,因為嵌入FM區(qū)域可避免圖像質(zhì)量下降,而且能夠提供較好的抗攻擊能力。為獲得較好的抗壓縮攻擊性能,選擇系數(shù)時可參考表1的JPEG量化表。選擇的兩個DCT系數(shù)應滿足調(diào)整它們的大小不會導致載體圖像嚴重降質(zhì)。因此要選擇JPEG壓縮算法中亮度量化值一樣的系數(shù)。從表1能觀察到系數(shù)(4,1)和(3,2)或(1,2)和(3,0)量化值相等,較適合用來比較。
水印嵌入算法的具體實現(xiàn):對于每一個8x8塊,選擇(4,1)和(3,2)一對系數(shù),比較它們大小,確保滿足式(3),若不滿足,交換兩個系數(shù)的值。ωi為第i塊嵌入信息位的值。
為了提高魯棒性,對算法做進一步改進。引入控制量α擴大兩個DCT系數(shù)差值。引入α雖然會使圖像退化。但能夠降低檢測的誤差。
當ωi=1,系數(shù)(4,1)大于系數(shù)(3,2),且兩者差值小于α時,按式(4)調(diào)整:
當ωi=0,系數(shù)(3,2)大于系數(shù)(4,1)且兩者差值小于α時,按照式(5)調(diào)整:
(6)對于嵌入水印信息后的第i塊系數(shù),進行IDCT變換。
(7)按步驟(5)、(6)對其他塊進行水印的嵌入。
(8)進行IDWT變換,得到嵌入水印后的圖像。
3 水印的提取算法
本算法是盲水印算法,提取時無需水印圖像的原宿主圖像。提取水印是嵌人的逆過程,圖4為水印的提取過程。
其步驟可描述如下:
(1)對嵌入水印的圖像進行DWT變換。
(2)選取HL子帶,并將其分為8x8的塊,進行DCT變換。
(3)按式(6)提取水印。
(4)按提取出的水印位重建水印圖像,得到加密的水印。
(5)水印圖像使用混沌密鑰進行混沌解密,得到解密的水印。
(6)計算恢復出的水印信號和原水印信號的相似程度。
4 試驗結(jié)果
試驗采用大小為512×512的宿主圖像。經(jīng)DWT一級變換后HL子帶的大小為256×256。將選擇的HL子帶分成8×8的塊,得到1 024個塊。使用這些塊能嵌入1 024位水印位到宿主圖像。則以32×32的二值圖像作為水印嵌入到宿主圖像。
4.1 在無攻擊的情況下
圖5是實驗中應用的宿主圖像和水印圖像。圖6a和圖6b分別描述該算法嵌入水印后的圖像和提取出的水印。為了檢驗該算法的性能,將該算法和直接應用DCT相印嵌入的結(jié)果進行比較。圖7為直接應用DCT進行水印嵌入后圖像和提取的水印,可看出,水印能夠被正確從水印圖像中提取,但直接應用DCT算法嵌入水印后的圖像不可見性較低。
表2給出該法和單一DCT法的PSNT和NC值,從中看出在未受到攻擊的情況下,兩種算法的NC均為1。但本方法的峰值信噪比更高,達到36.777 7 dB,因此圖像的質(zhì)量更好。
4.2 在有攻擊的情況下
為了測量該算法的不可見性和魯棒性,對水印圖像進行一些常見的攻擊實驗。包括高斯噪聲、椒鹽噪聲、高斯低通濾波器、JPEG壓縮、旋轉(zhuǎn)等攻擊。實驗結(jié)果見表3。在嵌入水印后的圖像受到10%高斯噪聲、10%椒鹽噪聲攻擊的情況下,NC的值仍然在0.9以上。當水印圖像受到50%JPEG壓縮攻擊時,NC值接近1。從表中還能觀察到該算法抗高斯低通濾波攻擊的能力較強,但抗旋轉(zhuǎn)攻擊能力較差,這是因為原始圖像和水印圖像的空間關(guān)系被打亂。
5 結(jié)束語
提出一種新的基于聯(lián)合DWT-DCT變換的數(shù)字圖像水印算法。對宿主圖像先進行DWT變換,提取HL子帶,接著對選擇的HL子帶計算DCT,將加密后的水印嵌入到DCT變換后的系數(shù)中。該算法特點為:(1)原始水印經(jīng)混沌序列加密,增加水印的保密性;(2)將水印嵌入到經(jīng)DWT-DCT變換后的數(shù)據(jù)塊,比單一的變換域技術(shù)具有較好的不可見性和較強的魯棒性能;(3)在嵌入過程中,采用比較中頻系數(shù)法,并參考JEPG壓縮模型,提高水印的抗壓縮能力;(4)水印的嵌入位置經(jīng)大量試驗選擇在分塊DCT域的中頻段,可在魯棒性和透明性之間得到較好的協(xié)調(diào);(5)水印檢測無需原始圖像,實現(xiàn)了盲檢測。該算法可用于保護數(shù)字圖像版權(quán),具有一定實用價值。