楊珊, 李德
( 延邊大學(xué) 工學(xué)院, 吉林 延吉 133002 )
隨著信息技術(shù)的快速發(fā)展,多媒體數(shù)據(jù)因便于存儲(chǔ)、傳輸和分享,給人們獲取和利用信息帶來了極大便利.但同時(shí),因多媒體數(shù)據(jù)存在容易被復(fù)制、修改以及難以追蹤修改源等問題使得其安全問題受到人們的關(guān)注,如軍事文件、法庭舉證、新聞圖像、歷史文獻(xiàn)、醫(yī)療圖像等數(shù)字內(nèi)容被非法篡改后就會(huì)給社會(huì)造成諸多影響;因此,在海量的多媒體數(shù)據(jù)環(huán)境中如何保護(hù)好圖像內(nèi)容的真實(shí)性、完整性和可靠性具有重要意義.研究表明,水印技術(shù)是保護(hù)多媒體數(shù)據(jù)的一種有效手段,水印按特性可以分為完全脆弱水印[1]和半脆弱水印[2].完全脆弱水印因?qū)D像驗(yàn)證的精確度要求較高,因此其應(yīng)用范圍較為有限,如醫(yī)學(xué)圖像、法庭舉證等方面;半脆弱水印允許圖像內(nèi)容在一定范圍內(nèi)發(fā)生變化,因此其在實(shí)際應(yīng)用中更為廣泛.近年來,許多學(xué)者對(duì)半脆弱水印技術(shù)進(jìn)行了研究.例如:胡玉平等[3]提出了一種基于小波系數(shù)形態(tài)濾波的半脆弱水印算法,該方法可提高算法的安全性并減少運(yùn)算量,但其抗JPEG壓縮效果較差.趙春暉等[4]提出了一種基于分塊壓縮感知的半脆弱零水印算法,該算法計(jì)算簡(jiǎn)單,保密性強(qiáng),實(shí)現(xiàn)了圖像成像與水印生成的同步完成.高鐵杠等[5]提出了一種利用圖像塊與Logistics混沌映射匹配的方法,該算法在圖像認(rèn)證功能和檢測(cè)惡意篡改方面表現(xiàn)良好,可提高模糊、銳化等信號(hào)攻擊的魯棒性.王向陽等[6-7]提出了一種基于分組量化的自適應(yīng)半脆弱水印嵌入方案,該算法在誤檢率和漏檢率等方面優(yōu)于現(xiàn)有的半脆弱水印算法.高雪麗等[8]采用二維離散余弦變換提取低頻系數(shù)的方法提高了圖像在抵抗高斯噪聲、裁剪攻擊、壓縮攻擊方面的魯棒性,該方法同時(shí)還能夠抵抗一定程度的幀丟失攻擊.上述研究中,研究者都是將水印信息以固定的量化步長(zhǎng)嵌入到圖像中,因此會(huì)影響圖像的視覺效果.為此,本文提出一種基于變換域的半脆弱水印算法,采用自適應(yīng)量化步長(zhǎng)的嵌入方法來提高水印信息的不可見性,并通過實(shí)驗(yàn)驗(yàn)證本文方法的有效性.
半脆弱水印技術(shù)是利用圖像的自身特征提取出具有特定含義的認(rèn)證信息,然后使用一定的方法和規(guī)則將這些特定含義的認(rèn)證信息嵌入到被保護(hù)或需要提供版權(quán)認(rèn)證的媒體數(shù)據(jù)中,以此實(shí)現(xiàn)防偽溯源[9].半脆弱數(shù)字水印技術(shù)應(yīng)具有以下功能和特征:
1) 檢測(cè)篡改及恢復(fù)功能.半脆弱數(shù)字水印技術(shù)要對(duì)載體圖像能夠進(jìn)行可靠地檢測(cè)篡改,且在此基礎(chǔ)上還要能夠檢測(cè)出圖像被篡改的位置和相應(yīng)的篡改程度,以及恢復(fù)被篡改的內(nèi)容.
2) 水印的盲提取功能.在不提供原始載體的情況下,半脆弱水印技術(shù)要能夠?qū)崿F(xiàn)對(duì)待檢測(cè)信息內(nèi)容的認(rèn)證,即實(shí)現(xiàn)水印的盲提取功能.
3) 魯棒性與脆弱性共存.半脆弱水印技術(shù)應(yīng)對(duì)圖像的合理失真具有很強(qiáng)的魯棒性,同時(shí)對(duì)不合理的失真(惡意篡改)應(yīng)具有脆弱性.
4) 透明性.水印信息嵌入到原始載體圖像可能會(huì)影響多媒體文件的視覺質(zhì)量,因此半脆弱水印技術(shù)在確定秘密水印的嵌入位置和方式時(shí),不僅需要滿足算法的抗攻擊性和定位準(zhǔn)確性,還要保證載體圖像在視覺上具有不可感知性.
為了保證載體圖像具有較好的視覺效果和水印信息的透明度,即降低由嵌入水印信息而導(dǎo)致的圖像失真對(duì)圖像視覺質(zhì)量的影響,本文在選擇水印嵌入位置時(shí),采用線性同余偽隨機(jī)數(shù)發(fā)生器將水印信息隨機(jī)嵌入到小波系數(shù)的高低頻分量和低高頻分量中,以此達(dá)到分散水印信息的目的.線性同余偽隨機(jī)數(shù)發(fā)生器產(chǎn)生的是均勻分布的偽隨機(jī)數(shù),其數(shù)學(xué)表達(dá)式為
xi +1=(axi+c)(modm),
(1)
其中模m為素?cái)?shù), 乘數(shù)a為m的一個(gè)原根,增量c∈[0,m),m∈[0,∞).理論上偽隨機(jī)數(shù)的周期T越趨近于無窮,偽隨機(jī)數(shù)的效果越好.當(dāng)c=0時(shí),可以得到線性同余偽隨機(jī)數(shù)發(fā)生器的一般通用式(線性同余發(fā)生器):
xi +1=axi(modm).
(2)
基于圖像內(nèi)容的小波域自適應(yīng)量化水印算法主要包括水印信息的生成、嵌入和提取3部分,其流程如圖1所示.
圖1 水印認(rèn)證的流程圖
小波變換的主要優(yōu)點(diǎn)是能夠提供豐富的圖像特征信息,尤其是在水印信息提取方面[10].研究[11]表明,第3層小波分解的系數(shù)分量LL3(i,j)含有圖像的大部分能量,能有效表征圖像特征,且在JPEG壓縮前后具有一定的魯棒性和很強(qiáng)的抗干擾能力,因此本算法在第3層小波系數(shù)中提取圖像的特征水印.生成水印信息的步驟如下:
Step 1 對(duì)載體圖像I(灰度圖像)進(jìn)行3層DWT變換,圖像像素大小為M×N, 小波系數(shù)Z大小為M/8×N/8.
Step 2 提取小波系數(shù)分量LL3(i,j)的二進(jìn)制的最高位,并將其作為載體的特征信息,以此生成大小為M/8×N/8的待嵌入水印W.
水印信息嵌入算法的具體步驟如下:
Step 1 分塊處理小波嵌入域.首先對(duì)載體圖像I進(jìn)行2層DWT變換,得到圖像的垂直細(xì)節(jié)分量HL2和水平細(xì)節(jié)分量LH2;然后對(duì)HL2和LH2進(jìn)行分塊處理,每個(gè)分塊的大小為2×2. 2個(gè)小波系數(shù)的分量共分為M/8×N/8塊.根據(jù)每個(gè)分塊在小波系數(shù)中的位置, 將HL2的每個(gè)分塊記為B0(i,j),LH2的每個(gè)分塊記為B1(i,j), 其中1≤i≤8M, 1≤j≤8N.
Step 2 選擇小波嵌入域.首先利用偽隨機(jī)數(shù)發(fā)生器產(chǎn)生服從均勻分布的數(shù)列,然后確定偽隨機(jī)數(shù)發(fā)生器的初始值并生成0,1矩陣choice(i,j) (1≤i≤8M, 1≤j≤8N).由該矩陣即可確定嵌入域的位置:當(dāng)choice(i,j)=0時(shí),相應(yīng)的水印信息嵌入到分塊B0(i,j)中; 當(dāng)choice(i,j)=1時(shí),相應(yīng)的水印嵌入到分塊B1(i,j)中.該方法不僅可以使水印信息分布得更均勻,而且還可提高水印的不可見性.
Step 3 確定水印信息嵌入的量化程度.將每個(gè)分塊B0(i,j)或B1(i,j)都嵌入1 bit的水印信息.為了保證水印信息嵌入的不可見性,利用小波系數(shù)自適應(yīng)確定嵌入水印信息的大小.定義參數(shù)weight(i,j)為每一分塊所能承載的最大量化程度,其表達(dá)式為
weight(i,j)=mean(i,j)+3×std(i,j)+10×entropy(i,j).
(3)
其中:mean(i,j)為B(i,j)的均值,std(i,j)為B(i,j)的標(biāo)準(zhǔn)方差,entropy(i,j)為B(i,j)的熵.
Step 4 確定水印信息嵌入的量化步長(zhǎng).按Step 3操作求出HL2和LH2所有分塊所能承受的最大量化程度的矩陣weight0(i,j)和weight1(i,j), 以此確定分塊B(i,j)的量化步長(zhǎng).水印信息嵌入的量化步長(zhǎng)公式為
(4)
其中wmin為weight(i,j)分塊的最小值,wmax為weight(i,j)分塊的最大值,c和d為選定的量化步長(zhǎng)的范圍.
Step 5 嵌入水印信息.待嵌入的水印信息為W(i,j), 水印信息嵌入的位置為B(i,j), 自適應(yīng)嵌入的量化步長(zhǎng)為Δ(i,j), 矩陣內(nèi)的小波系數(shù)為xi, 分塊B(i,j)絕對(duì)均值的計(jì)算公式為
(5)
(6)
(7)
式中xi代表嵌入信息后的系數(shù).根據(jù)新產(chǎn)生的均值進(jìn)行更新即可實(shí)現(xiàn)水印信息的嵌入,再經(jīng)過小波逆變換即可生成含水印的圖像.
(8)
(9)
如果T=0, 說明載體圖像沒有發(fā)生篡改;如果T≠0, 則T中不為1的點(diǎn)被認(rèn)為發(fā)生了篡改.
為了驗(yàn)證本文提出的半脆弱水印算法的有效性,以像素為256×256的Lena圖像為例,選用正交小波函數(shù)harr作為離散余弦變換的小波基進(jìn)行實(shí)驗(yàn).計(jì)算機(jī)的操作系統(tǒng)為Windows 7 Professional×64,軟件為Matlab R 2017a×64.
1)透明性檢測(cè).首先對(duì)Lena圖像進(jìn)行嵌入水印的操作,結(jié)果如圖2所示.由圖2可以看出,用肉眼難以發(fā)現(xiàn)兩幅圖像有無不同之處,這表明本文算法具有良好的透明性.為進(jìn)一步驗(yàn)證本文算法對(duì)透明性的有效性,分別計(jì)算本文算法、文獻(xiàn)[12]算法和文獻(xiàn)[13]算法的峰值信噪比(peak signal noise ratio,PSNR).峰值信噪比的計(jì)算公式為
(10)
式中f(m,n)是原圖的像素值,g(m,n)是修改后圖的像素值.PSNR的數(shù)值越大,表明嵌入水印信息的圖像與載體圖像之間的區(qū)別越小,即表明算法的透明性越好.計(jì)算結(jié)果顯示,本文算法、文獻(xiàn)[12]算法和文獻(xiàn)[13]算法的PSNR分別為50.55 dB、 40.28 dB和41.04 dB,該結(jié)果說明本文算法的透明性優(yōu)于文獻(xiàn)[12]和文獻(xiàn)[13]算法.
圖2 原始載體圖像和含水印圖像的對(duì)比
2)壓縮攻擊實(shí)驗(yàn).為了檢驗(yàn)本文算法的抗壓縮攻擊性能,分別對(duì)采用本文算法和文獻(xiàn)[14]算法得到的水印圖像進(jìn)行不同程度的JPEG壓縮攻擊實(shí)驗(yàn),結(jié)果見表1.從表1中的數(shù)據(jù)可以看出,本文算法在壓縮比小于50%時(shí),能夠較好地提取出嵌入的水印信息;雖然壓縮率增大時(shí)篡改率隨之增大,但總體效果較好,且優(yōu)于文獻(xiàn)[14]的效果.該結(jié)果表明,本文算法對(duì)JPEG壓縮攻擊具有較好的魯棒性.
表1 不同JPEG壓縮率下的圖像篡改率 %
3)噪聲攻擊實(shí)驗(yàn).對(duì)圖像分別進(jìn)行高斯噪聲攻擊和椒鹽噪聲攻擊,攻擊類型的參數(shù)及其誤碼率BER如表3所示.由表3可以看出,圖像經(jīng)過不同的高斯噪聲和椒鹽噪聲攻擊后,提取水印信息的誤碼率始終保持在25%以下,即具有較好的魯棒性.由此表明,本文算法允許對(duì)圖像進(jìn)行噪聲攻擊等常規(guī)的圖像處理.
表3 不同噪聲攻擊下圖像的誤碼率BER
4)剪切攻擊實(shí)驗(yàn).對(duì)圖像進(jìn)行不同剪切率(8.66%、11.36%、19.33%、38.54%)的攻擊后其結(jié)果如圖3所示.由圖3可以看出,本文算法能夠較好地對(duì)圖像篡改的位置進(jìn)行定位,但只能定位出篡改位置的大致輪廓.在4張定位圖像中,未發(fā)生篡改的位置有白色噪聲點(diǎn)出現(xiàn),但這些噪點(diǎn)相對(duì)分散,并不會(huì)對(duì)算法的準(zhǔn)確性造成較大影響.
圖3 不同剪切率下針對(duì)Lena圖像的篡改檢測(cè)效果
研究表明,本文提出的基于小波域半脆弱水印的圖像內(nèi)容認(rèn)證算法提高了水印信息的不可見性,并實(shí)現(xiàn)了水印信息的盲提取.因本文方法對(duì)水印信息的提取和驗(yàn)證只需提供待認(rèn)證的圖像,因此該方法具有安全性和實(shí)用性,可應(yīng)用于鑒別圖像在復(fù)制、傳輸和存儲(chǔ)等過程中出現(xiàn)的修改.圖像受到剪切攻擊時(shí),本文算法能夠準(zhǔn)確定位被篡改的位置,但定位位置的邊緣精度還有待進(jìn)一步提高;同時(shí)在未發(fā)生篡改的位置出現(xiàn)了少量相對(duì)分散的白色噪聲點(diǎn),這些噪聲點(diǎn)一定程度地影響了算法的準(zhǔn)確性:因此,在今后的研究中我們將進(jìn)一步改進(jìn)算法提取圖像內(nèi)容特征的方式,使提取的水印信息包含更多的圖像邊緣輪廓的有效特征,以此提高本文算法對(duì)篡改位置的定位精度以及減少噪聲點(diǎn)對(duì)未被篡改區(qū)域的影響.