胡高平,魏佳,湯藝
(1.91918部隊(duì),北京102300;2.91917部隊(duì),北京102300;3.中國傳媒大學(xué) 信息工程學(xué)院,北京 100024)
隨著計(jì)算機(jī)通信網(wǎng)絡(luò)和計(jì)算機(jī)技術(shù)的發(fā)展,媒體資源的信息化越來越普及。數(shù)字化技術(shù)使得媒體信息的存儲(chǔ),傳輸過程得到極大的簡(jiǎn)化。一方面數(shù)字媒體信息具有強(qiáng)大的可移植性、高效性、快捷性和準(zhǔn)確性,但從另一方面來說,數(shù)字媒體資源極易被截取、篡改、制作盜版或侵權(quán)盜用內(nèi)容,互聯(lián)網(wǎng)上盜版電影、書籍、軟件泛濫成災(zāi),數(shù)字媒體的版權(quán)保護(hù)和身份鑒別成為一個(gè)亟待解決的問題。
因?yàn)槎嗝襟w數(shù)字資源,在提供給用戶使用時(shí),必須是非加密的,也就無法通過加密得到有效的保護(hù)。因此研究者寄希望于從另一個(gè)方向保護(hù)數(shù)字媒體版權(quán),即信息隱藏研究,如何在公開信息中隱藏秘密信息。數(shù)字水印技術(shù)是信息隱藏研究領(lǐng)域的重要分支和研究方向,它的基本應(yīng)用領(lǐng)域是防偽溯源、版權(quán)保護(hù)、隱藏標(biāo)識(shí)、認(rèn)證和安全隱蔽通信。[2]
數(shù)字水印技術(shù),就是指通過特定的算法將一些標(biāo)志性信息(水印)嵌入到宿主數(shù)據(jù)當(dāng)中[2]。當(dāng)多媒體數(shù)字信息被非法復(fù)制,非法篡改時(shí),再通過特定的水印的提取算法提取出水印信息,從而驗(yàn)證版權(quán)的歸屬或載體信息的完整性,保障版權(quán)者的合法權(quán)益和媒體內(nèi)容的完整正確性。我們也可以通過水印信息,發(fā)現(xiàn)數(shù)字多媒體資源是從何處泄露,從而防止泄露再次發(fā)生。數(shù)字水印應(yīng)當(dāng)能根據(jù)應(yīng)用場(chǎng)景的不同攜帶不同的版權(quán)信息嵌入任何多媒體數(shù)據(jù)中。數(shù)字水印技術(shù)對(duì)原始文件的保護(hù)是不可見的[15],在加密傳輸并加密后,水印數(shù)據(jù)不會(huì)消失,能夠進(jìn)一步保護(hù)數(shù)字媒體版權(quán),且具有一定的魯棒性,不會(huì)輕易地被消除。因此,數(shù)字水印技術(shù)的研究對(duì)保護(hù)數(shù)字媒體版權(quán)十分重要。
傳統(tǒng)的數(shù)字水印算法主要有空間域數(shù)字水印算法與頻率域數(shù)字水印算法,除此之外,還有壓縮域數(shù)字水印算法與生理模型算法等??臻g域數(shù)字水印算法將水印信息直接嵌入到圖像中,流程簡(jiǎn)單、數(shù)字水印的提取簡(jiǎn)單。頻域法在圖像的變換域中嵌入水印數(shù)據(jù),魯棒性強(qiáng),且水印信息不易被捕捉。
LSB(Least Singificant Bits)算法是最經(jīng)典的空域水印算法之一。算法的原理是將灰度圖像切分為位平面圖像,在較低的位平面上嵌入水印信息。例如在最低位平面上嵌入一個(gè)比特的水印數(shù)據(jù),該像素的整體灰度值變化僅為1,在最理想情況下僅占原像素灰度值的1/255,人眼幾乎無法察覺任何變化。
下面給出256灰度Lena圖像的位平面圖。
圖1 灰度圖像的位平面圖示例
可以看出,低位平面幾乎為全黑,表明低位平面的灰度值很低。
在嵌入水印時(shí),首先考慮嵌入水印數(shù)據(jù)的位數(shù),嵌入的位數(shù)越多,對(duì)圖像透明性的影響就越多。一般為了不影響原圖像的觀看,我們可以將水印嵌入最低的1位。以嵌入原始圖像的最低位為例,設(shè)X(i,j)為原始圖像最低位對(duì)應(yīng)位置的比特值,W(i,j)為待嵌入二值數(shù)字水印圖像對(duì)應(yīng)位置的比特值,S(i,j)為嵌入后含水印圖像對(duì)應(yīng)位置的值。
(1)
LSB 算法原理簡(jiǎn)單,實(shí)現(xiàn)便捷,透明性好。它的缺點(diǎn)是水印數(shù)據(jù)位于最低位上,數(shù)據(jù)量較小,很容易在濾波,裁剪,量化中丟失信息。因?yàn)橥瑯拥脑?,在噪聲攻擊下,也很難提取出原有的正確水印信息。另一方面,因?yàn)榍度敕椒ㄈ鄙僮兓?,攻擊者很容易竊取和篡改水印信息。
空域的數(shù)字水印算法實(shí)現(xiàn)簡(jiǎn)單,但同樣有不少缺點(diǎn),目前人們正在研究的數(shù)字水印算法更多是基于變換域的,而這些變換域尤以頻域?yàn)橹?,它們很好地彌補(bǔ)了空域算法的不足。頻域數(shù)字水印算法的原理是將水印數(shù)據(jù)嵌入原始圖像的頻率域中,提取水印時(shí)先將含水印圖像轉(zhuǎn)換至頻域,再采用相應(yīng)操作提取水印數(shù)據(jù)。
離散余弦變換是變換核為余弦函數(shù)的變換。DCT除了具有一般的正交變換性質(zhì)外,它的變換陣的基向量能很好地描述人類語音信號(hào)和圖像信號(hào)的相關(guān)特征。[16]所以,離散余弦變換在圖像,語音信號(hào)的變換中,被認(rèn)為是一種準(zhǔn)最佳變換?;贒CT變換的數(shù)字水印算法是目前數(shù)字水印技術(shù)研究的重要方向。
8×8的二維DCT變換公式(2):
(2)
二維DCT正變換
二維DCT反變換
u,v=0,1,…,7
x,y=0,1,…,7
圖2 基于DCT的數(shù)字水印嵌入和提取的模型
Cox等人于1995年提出基于全局 DCT 變換的擴(kuò)頻水印算法[7],這是早期最著名的變換域數(shù)字水印算法之一,做法為將整個(gè)載體圖像進(jìn)行二維DCT變換,水印信息為一個(gè)長(zhǎng)度為n滿足正態(tài)分布的隨機(jī)序列,將載體圖像的DCT系數(shù)最大的n個(gè)值用來攜帶水印數(shù)據(jù)。含水印數(shù)據(jù)的DCT系數(shù)P確定如下:
P=X(1+aW)
(3)
其中W是水印數(shù)據(jù);a是尺度因子,代表水印嵌入強(qiáng)度。
之后對(duì)增加了水印數(shù)據(jù)的DCT系數(shù)矩陣進(jìn)行二維DCT逆變換,并把高于255的灰度值進(jìn)行截?cái)?,就獲得了含水印的圖像。將n 個(gè)最大的 DCT 系數(shù)在嵌入水印前的值及其所處的位置將作為密鑰發(fā)送給接受者,以供提取水印使用。
傳統(tǒng)的頻域水印法嵌入水印數(shù)據(jù)的方式缺少變化,不能自動(dòng)適應(yīng)圖像的特點(diǎn),不能在性能上取得較大提升,透明性受到了限制。本文提出了一種基于DCT變換的改進(jìn)算法,利用人眼的視覺特性,結(jié)合圖像的紋理復(fù)雜度,自動(dòng)計(jì)算每個(gè)子塊中嵌入水印數(shù)據(jù)的位數(shù),使得人眼較不敏感的子塊中能嵌入更多水印數(shù)據(jù),且利用中頻系數(shù)進(jìn)行嵌入,在透明性與魯棒性之間取得折中。同時(shí),不直接嵌入原始水印,而是先對(duì)數(shù)字水印數(shù)據(jù)進(jìn)行置亂。因?yàn)榍度敕椒ǖ淖赃m應(yīng)性與水印的置亂操作,算法的安全性較好。
2.2中提到的擴(kuò)頻數(shù)字水印算法是將整個(gè)原始圖像進(jìn)行頻率變換并在頻率域嵌入水印,但為了更高效以及更有規(guī)律地嵌入水印,改進(jìn)算法基于分塊進(jìn)行。首先把原始圖像劃分為標(biāo)準(zhǔn)大小的子塊,分別在每個(gè)子塊中嵌入水印數(shù)據(jù)。提取水印時(shí)再分別從這些子塊中提取相應(yīng)的水印數(shù)據(jù),再組合為原始水印數(shù)據(jù),使得水印信息能夠均勻分布。
圖3 基于分塊思想嵌入水印的過程
在嵌入水印時(shí),需要考慮原始圖像自身的特性。DCT 具有很強(qiáng)的“能量集中”特性,大多數(shù)圖像信號(hào)的能量都集中在 DCT 的低頻部分。[6]DCT系數(shù)矩陣的左上角是直流系數(shù),決定了圖像的亮度,水印圖像嵌在這里,算法的魯棒性最強(qiáng)。
人眼對(duì)圖像的低頻部分更為敏感,對(duì)高頻部分并不十分敏感,但是嵌入在低頻部分的水印在受到噪聲攻擊時(shí)的魯棒性更強(qiáng),為了解決這個(gè)矛盾,我們需要充分考慮人眼的視覺特性,一方面要保證算法的魯棒性,一方面盡可能將水印嵌入人眼視覺不敏感的區(qū)域,以提高水印的透明性。因此,折中考慮,選擇在中頻區(qū)域嵌入水印,并且在人眼更不敏感的子塊嵌入更多水印。
文獻(xiàn)[3]使用了一種有效的水印算法利用圖像的紋理特性來確定人眼對(duì)圖像各處的敏感程度,并根據(jù)敏感度決定各處嵌入水印的強(qiáng)度。該方案如下所述。
圖像的灰度值矩陣進(jìn)行頻域變換之后,其頻率最低的系數(shù)值為直流系數(shù)(DC),可以用來衡量圖像的亮度。DC系數(shù)對(duì)人眼視覺影響很大。我們可以利用圖像矩陣的方差來近似估計(jì)其紋理復(fù)雜度,方差越大,則圖像的紋理可能越復(fù)雜,嵌入水印的透明性越強(qiáng)[1]。定義Y綜合反映圖像的亮度與紋理特征:
Y=Lvariance+LD/a
(4)
Lvariance為圖像的方差,LD為圖像的DC系數(shù),a為一個(gè)經(jīng)驗(yàn)值。
在將圖像分塊之后,計(jì)算每一個(gè)分塊的Y值,當(dāng)Y值較大時(shí),可以考慮嵌入更多的水印信息,反之,則嵌入較少的水印信息。
水印圖像置亂的主要目的在于分散像素分布,使原始水印圖像轉(zhuǎn)化為更接近噪聲的圖像,達(dá)到抵抗剪切攻擊的目的,因此置亂算法應(yīng)當(dāng)簡(jiǎn)單有效。這里選擇Arnold置亂算法。我們可以將原始水印進(jìn)行置亂后嵌入載體圖像,提取了水印數(shù)據(jù)后再進(jìn)行相應(yīng)的反置亂操作得到原始的水印圖像。
Arnold變換可以改變圖像中像素的相互位置關(guān)系,降低圖像自身的相關(guān)性,達(dá)到加密的目的,在多媒體信息加密中應(yīng)用廣泛。下面給出Arnold變換的數(shù)學(xué)公式,其中N為圖像矩陣的長(zhǎng)寬,a,b為常數(shù)。
(5)
(6)
一般來說需要對(duì)原始水印圖像多次置亂才能達(dá)到較為理想的效果。[10]多次置亂操作使得圖像原有的有意義的信息得到隱藏,置亂后的圖像看起來就像是噪聲圖像。采用何種置亂方法,置亂了多少次都可以作為水印提取的秘鑰,進(jìn)一步加強(qiáng)了安全性。
圖4 原始水印
圖5 將原始水印置亂10次獲得的圖像
3.4.1 水印的嵌入
(1)設(shè)原始圖像為I={i(x,y),1≤x,y≤N},i(x,y)為原始圖像在(x,y)處的像素灰度值,0≤i(x,y)≤255,N為原始圖像的長(zhǎng)寬(設(shè)原始圖像矩陣為方陣)。設(shè)水印圖像為S={s(x,y),1≤x,y≤M},M為水印圖像的長(zhǎng)寬(設(shè)水印圖像矩陣為方陣),經(jīng)過我們預(yù)先的處理,水印圖像矩陣的值只能為0或1。N為M的正整數(shù)倍。
(3)對(duì)水印數(shù)據(jù)進(jìn)行置亂操作,這里采用較為簡(jiǎn)單但有效的Arnold置亂,將原始水印圖像轉(zhuǎn)變?yōu)榻茷榘自肼暤膱D像。設(shè)置亂后的水印圖像矩陣為S′。
根據(jù)LD,Lvariance計(jì)算該分塊的Y值。計(jì)算完所有分塊的Y值后,將所得到Y(jié)值降序排列,根據(jù)排序結(jié)果將所有子塊分組為k組Z1,Z2,Z3,…,Zk,每組中的子塊個(gè)數(shù)相等。每個(gè)子塊分別嵌入bi(1≤i≤k)位水印比特?cái)?shù)據(jù),同時(shí)要滿足b1+b2+…+bk=水印數(shù)據(jù)總位數(shù)。bi可以人為確定,也可以通過算法自動(dòng)獲得,下面給出一種自動(dòng)確定bi的算法[1]:
嵌入水印的流程圖6。
圖6 改進(jìn)算法水印嵌入流程圖
3.4.2 水印的提取
(3)根據(jù)接受到的Arnold置亂的相應(yīng)參數(shù),將S′進(jìn)行反置亂,得到真正的水印圖像S。
所用圖片:
(a)原始載體圖像
(b)嵌入的水印圖像圖7
這里通過對(duì)含水印圖像進(jìn)行各種攻擊測(cè)試,觀察數(shù)字水印的提取效果,測(cè)試改進(jìn)算法的性能。
3.5.1 透明性測(cè)試
(a)嵌入水印后的圖片
(b)提取出來的水印圖像圖8
嵌入水印的圖片與原圖的峰值信噪比PSNR=41.7341,水印數(shù)據(jù)提取錯(cuò)誤比特的比例BER = 0??梢钥闯?,在未遭受攻擊時(shí),該數(shù)字水印算法的透明性非常好,幾乎看不出嵌入水印后的圖像與原始圖像的差別,且水印能夠完全正確地提取出來。因?yàn)楦倪M(jìn)算法在嵌入水印時(shí)考慮了人眼特性,并未統(tǒng)一將水印嵌入到圖像頻域矩陣的直流分量中,因此含水印圖像的塊與塊之間不會(huì)出現(xiàn)明顯的亮度差異,圖像不會(huì)有強(qiáng)烈的分塊感,且畫面的整體亮度沒有太大改變。因此,透明性得到了很好的提升。
3.5.2 魯棒性測(cè)試
(1)椒鹽噪聲攻擊
表1 在椒鹽噪聲攻擊下提取出的水印圖像
(2)高斯噪聲攻擊
表2 在高斯噪聲攻擊下提取出的水印圖像
(3)JPEG壓縮攻擊
表3 在JPEG壓縮攻擊下提取出的水印圖像
(4)旋轉(zhuǎn)攻擊
表4 在旋轉(zhuǎn)壓縮攻擊下提取出的水印圖像
續(xù)表
(5)乘性噪聲
表5 在乘性噪聲攻擊下提取出的水印圖像
(5)剪切攻擊
(a)含水印圖像去掉左上角
(b)提取出來的水印圖像圖9
錯(cuò)誤比特的比例BER = 0.1931
(a)含水印圖像去掉左半部分
(b)提取出來的水印圖像圖10
錯(cuò)誤比特的比例BER =0.3088
3.5.3 實(shí)驗(yàn)結(jié)果分析
綜合上述攻擊測(cè)試,可以看出該數(shù)字水印算法的透明性優(yōu)于傳統(tǒng)的頻域水印算法,但魯棒性不是特別理想。在應(yīng)對(duì)椒鹽噪聲,旋轉(zhuǎn)攻擊,乘性噪聲時(shí)效果較好,但在JPEG壓縮攻擊和高斯噪聲攻擊下表現(xiàn)得特別差,幾乎無法提取出原有的水印信息。但總的來說,改進(jìn)算法的魯棒性還是優(yōu)于傳統(tǒng)的空域水印法。
因?yàn)椴捎昧怂≈脕y技術(shù),該算法應(yīng)對(duì)裁剪攻擊的性能較好,甚至在損失了一半圖像信息的情況下,仍能提取出水印圖像的大致形狀,且攻擊者在不知道相應(yīng)秘鑰的情況下,很難獲取水印信息,改進(jìn)水印算法的保密性較強(qiáng)。
4. 問題與展望
改進(jìn)水印算法犧牲了一部分魯棒性,以獲得較好的透明性,可視作一種折中的選擇。它的核心思想是基于人眼視覺特性,通過自適應(yīng)算法自動(dòng)計(jì)算每個(gè)子塊嵌入的水印數(shù)據(jù)位數(shù),使得我們能夠最大限度地利用圖像本身的特點(diǎn),在使水印算法的透明性獲得較大提升的前提下,也盡可能保證算法的魯棒性。
但算法目前來看還有不少問題,最主要的問題是算法的魯棒性仍然不能使人滿意,在部分種類的噪聲攻擊下幾乎無法使用。同時(shí),期望算法的透明性與傳統(tǒng)空域法相比,的確還有一些差距。
未來可能進(jìn)行的改進(jìn),主要有以下兩個(gè)方向:
(1)更加深入地研究人眼的視覺特性,在圖像的頻域矩陣中嵌入水印數(shù)據(jù)時(shí)考慮更多的相關(guān)參數(shù),以建立更適合的自適應(yīng)嵌入水印方法,以達(dá)到欺騙眼睛的效果。
(2)考慮利用機(jī)器學(xué)習(xí),深度學(xué)習(xí)等技術(shù),使用大量的圖片來訓(xùn)練嵌入水印算法的模型,使算法的性能更優(yōu),能適用的情況更廣泛。