一種基于糾錯編碼的小波域數(shù)字圖像水印技術(shù)
關(guān)鍵詞:糾錯編碼;小波變換;圖像置亂:混沌序列
1 引言
多媒體數(shù)據(jù)在網(wǎng)上交易和傳送日益增多,由于數(shù)字信息極易被篡改、復(fù)制與散布,因此如何對數(shù)字作品的知識產(chǎn)權(quán)進(jìn)行保護(hù)已經(jīng)成為迫切需要解決的問題。近年來迅速發(fā)展的數(shù)字水印技術(shù)為解決該問題提供了新的有效途徑。數(shù)字水印是以噪聲的形式,向數(shù)字產(chǎn)品中嵌入版權(quán)信息,在不影響視覺和聽覺效果的前提下達(dá)到版權(quán)保護(hù)的目的。
小波變換域上的數(shù)字水印方法兼有時空域方法和DCT變換域方法的優(yōu)點,基于DWT域的數(shù)字水印技術(shù)是目前主要的研究方向。盲水印的檢測只需要密鑰,不需要原始數(shù)據(jù),而且盲水印的檢測更方便和安全,是研究的重點。目前,國內(nèi)外提出了許多有關(guān)盲水印的算法,但這些算法大都需要提供原始圖像的部分信息,如水印的嵌入位置信息等,因此不是真正意義上的盲水印。筆者提出一種小波域的盲水印算法,該算法利用魯棒性小波嵌入理論在小波變換的低頻區(qū)域嵌入,并且水印在檢測和提取過程中不需要任何來自原始圖像的信息。為了進(jìn)一步提高盲水印的魯棒性,引進(jìn)了簡單的糾錯編碼技術(shù)。
2 糾錯原理和糾錯碼的編碼方法
2.1 糾錯原理
本算法采用(7,4)漢明碼。(7,4)漢明碼的最小碼距do為3,它是可以糾正單個隨機錯誤的高效率分組碼。
2.2 糾錯編碼
2k個n重集合C稱為線形分組碼,當(dāng)且僅當(dāng)它是n維線性空間Vn中的1個k維子空間。
(n,k)線性分組碼的編碼問題是指在滿足一定條件下根據(jù)k個信息元求得n-k個校驗元。由于(n,k)線性分組碼字組成了維線性空間Vn中的一個k維子空間,因此這2k個碼字完全可由k個線性無關(guān)的矢量組成,設(shè)k個碼字分別為:cl,c2……,ck,則
碼中任一碼字均可由基底的線性組合生成,即Ci=miG,其中mi為信息元。
2.3 譯碼
設(shè)發(fā)送端發(fā)送yHT=(c+e)HT,接收端得到碼字xi=(xn-1,xn-2,……x0)。由G可以得到一致校驗矩陣H:
產(chǎn)生錯誤無非是由1變成0或是由0變成1,因此用錯誤圖樣e=(en-1,en-2……e0)來表示,當(dāng)傳送的碼字的某位發(fā)生錯誤時,相應(yīng)的e中該位為1,無錯就為0。
3 水印圖像的生成
設(shè)二值水印圖像W={Wij, 0≤i<M,0≤j<N},其中wij∈{O,1}。因為編碼時用(7,4)漢明碼,所以這里設(shè)MN=4L。
(1)對水印圖像做置亂處理
采用Anode矩陣置亂法把K和變換次數(shù)作為密鑰傳遞,并把置亂后的水印圖像按行序變換為一維序列W’(i)={0≤iMxN},與置亂后水印圖像一一對應(yīng)。
(2)對水印圖像進(jìn)行糾錯編碼
首先把W’(i)分為L組長為4的碼組,然后對每個碼組進(jìn)行糾錯編碼。假設(shè)信息元為a6a5a4a3,由生成矩陣:
可得監(jiān)督碼元a2a1a0。信息元和監(jiān)督碼元組成水印信號經(jīng)糾錯編碼后的碼元:a6a5a4a3a2a1a0。水印信息變?yōu)閃”(i)={O≤i7xL}。
(3)對生成的水印信息進(jìn)行加密
采用Logistic混沌序列對水印信息進(jìn)行加密處理,產(chǎn)生長度與水印信號相等的序列,再對序列傲二值化處理,最后與水印信息進(jìn)行異或運算,提高水印的安全性。
4 水印信息的嵌入
假設(shè)載體圖像為X(i,j)={0≤ip,0≤jq}(一般p>M,q>N)。Cox等人認(rèn)為圖像水印應(yīng)放在視覺上最重要的分量上。由于視覺上重要的分量是圖像信號的主要成分,圖像信號的大部分能量都集中在這些分量上,在圖像有一定失真的情況下,仍能保留主要成分,即視覺上重要的分量的抗干擾能力較強,因此將水印嵌入在這些分量上,可獲得較好的魯棒性。筆者選擇在低頻系數(shù)中嵌入水印信息,算法如下:
對原始圖像進(jìn)行二級小波變換,根據(jù)人眼視覺特性計算出低頻各個點的視覺誤差門限。根據(jù)門限選取與水印尺寸相同的門限的小波系數(shù),并根據(jù)門限的大小選取1個閾值把系數(shù)分成二類,大于門限的為I類,小于門限的為Ⅱ類。
對于I類將水印信息嵌入在小波系數(shù)整數(shù)部分的第四位,Ⅱ類則嵌入在整數(shù)部分的第三位。具體算法如下:如果嵌入位置數(shù)據(jù)與水印值相同,則不改變小波系數(shù);如果系數(shù)值為1且水印值為0,則改變系數(shù)值并且把低位整數(shù)部分變?yōu)閘,如果系數(shù)值為O且水印值為1,則改變系數(shù)值并把低位整數(shù)部分變?yōu)?。
5 水印信息的提取
提取過程是嵌入過程的反過程。首先對圖像進(jìn)行相同級數(shù)的小波變換,再通過計算視覺門限得到水印信息的嵌入位置,根據(jù)嵌入時小波系數(shù)的關(guān)系提取水印信息。根據(jù)提取的水印信息對提取的信息元進(jìn)行糾錯。由G得校驗矩陣H:
最后生成與加密處理相同的混沌序列解密,再對圖像進(jìn)行反置亂處理以獲得檢測到的水印圖像。
6 實驗結(jié)果與分析
筆者利用上述算法進(jìn)行了計算機仿真實驗。原始載體圖像為256256的Lena灰度圖像,如圖1(a)所示。水印圖像為32x32的“武漢理工”字樣的二值圖像,如圖l(b)所示。進(jìn)行二級小波變換時,混沌加密序列初始值:x01=0.613,μ1=3.784。
本算法在Matlab 6.5環(huán)境下實現(xiàn)。圖1(c)是嵌入水印后的圖像。圖l(d)是經(jīng)置亂加密后的水印圖像。圖l(f)是對含有水印的圖像加入強度為O.02的椒鹽噪聲后的圖像,圖1(f)是提取的水印圖像。圖1(g)是對含有水印圖像進(jìn)行質(zhì)量因數(shù)為60%的JPEG壓縮后的圖像,圖1(b)是提取的水印圖像。圖1(i)是對含有水印圖像豎直方向剪切84列的后圖像,圖1(j)是提取的水印圖像。表l列出在各種攻擊方式下檢測的圖像峰值信噪比PSNR和水印的歸一化相似度NC。由實驗結(jié)果可知,該算法對常見的圖像處理攻擊具有較好的魯棒性和可感知性。
7 結(jié)束語
本文提出一種基于糾錯編碼和小波變換的數(shù)字水印技術(shù),并且實現(xiàn)了盲檢。對水印進(jìn)行置亂和混沌加密處理,使水印具有很好的安全性。采用糾錯編碼技術(shù)使水印針對一般的攻擊具有更好的抵抗性能。實驗表明本文算法具有較高的安全性和較大的實用價值。
評論