張 明,楊 輝,黃炳家,鄭秋梅
(中國(guó)石油大學(xué)(華東),青島 266580)
隨著圖書(shū)電子資源的發(fā)展,圖書(shū)版權(quán)保護(hù)一直是圖書(shū)出版領(lǐng)域的一個(gè)難題[1],同時(shí),數(shù)字水印技術(shù)作為近年來(lái)版權(quán)保護(hù)的重要技術(shù)受到越來(lái)越多的關(guān)注.現(xiàn)在的數(shù)字水印算法主要基于空間域和變換域兩種,但是仍然難以實(shí)現(xiàn)水印嵌入容量、不可見(jiàn)性和魯棒性三者的平衡[2].文獻(xiàn)[3]提出了基于離散時(shí)間混沌系統(tǒng)的新的小波變換水印算法,不僅計(jì)算量大,而且對(duì)幾何攻擊魯棒性效果差.文獻(xiàn)[4]提出了將二維碼奇異值分解后嵌入到載體圖像中,雖然在無(wú)攻擊情況下能正確識(shí)別出二維碼圖像,但算法在受噪聲和對(duì)比度變化攻擊后魯棒性很差.文獻(xiàn)[5]提出了一種結(jié)合離散小波變換、離散余弦變換和奇異值分解的混合域水印算法,過(guò)程繁瑣,且對(duì)幾何攻擊魯棒性也表現(xiàn)不好.二維碼技術(shù)作為一項(xiàng)研究熱點(diǎn),以信息存儲(chǔ)量大,可靠性能高,自動(dòng)糾錯(cuò)能力強(qiáng)[4]等優(yōu)點(diǎn)已經(jīng)廣泛應(yīng)用于各行各業(yè)中.結(jié)合二維碼的特點(diǎn),筆者提出了一種基于Arnold 算法和主成分分析(PCA)的二維碼數(shù)字水印算法,將圖書(shū)鑒權(quán)圖像信息置亂后嵌入到圖書(shū)二維碼圖像信息中,能有效的實(shí)現(xiàn)圖書(shū)版權(quán)的保護(hù).
二維碼是一種按特定規(guī)則排列的黑白相間的模塊圖形,其中每個(gè)模塊代表一個(gè)單元,每個(gè)單元又被編碼為1 bit 的數(shù)據(jù),這些數(shù)據(jù)都是“0”,“1”二進(jìn)制比特流,能通過(guò)特定設(shè)備進(jìn)行識(shí)別和讀寫(xiě).
二維碼主要包括兩部分內(nèi)容,數(shù)據(jù)區(qū)和檢測(cè)區(qū)[6](如圖1).數(shù)據(jù)區(qū)主要存儲(chǔ)數(shù)據(jù),檢測(cè)區(qū)主要用于符號(hào)定位和信息結(jié)構(gòu)確認(rèn).二維碼的結(jié)構(gòu)不僅保證了自己具有一定的校驗(yàn)功能,而且識(shí)別范圍廣,處理速度快,能夠?qū)Σ煌械男畔⑦M(jìn)行自動(dòng)識(shí)別,對(duì)圖像的幾何變換能夠自動(dòng)處理等功能.同時(shí)二維碼可以編碼任何可讀信息,例如圖片、聲音和文本,并以二維條型碼形式顯示出來(lái),也可表示為圖像數(shù)據(jù),極大方便了信息的處理[7].結(jié)合二維碼自動(dòng)糾錯(cuò)能力強(qiáng)、嵌入容量大、安全性高的特點(diǎn),將二維碼應(yīng)用于數(shù)字水印版權(quán)保護(hù)中將起到事半功倍的效果.
目前圖像變換主要基于像素的大小和像素的位置兩種形式,根據(jù)這種特點(diǎn)圖像置亂加密也主要分為兩種:像素大小的加密和像素位置的加密.Arnold 變換[8]是一種經(jīng)典的位置加密方法,圖像經(jīng)過(guò)某種運(yùn)算形成表面雜亂無(wú)章,無(wú)法解釋但隱含一定規(guī)律的圖像,這種變換可以有效抵抗圖像在幾何變換方面的攻擊,同時(shí),Arnold 變換存在的周期性讓圖像恢復(fù)變得簡(jiǎn)單易行.
Arnold 變換公式如下:設(shè)某圖像某點(diǎn)的坐標(biāo)為(x,y),然后將點(diǎn)(x,y) 變換到另一點(diǎn)(x′,y′)的變換原則為:
其中,N為正方形的邊長(zhǎng).
則Arnold 反變換為:
數(shù)學(xué)方法證明當(dāng)進(jìn)行n次Arnold 變換后,即:
Arnold 反變換為:
式中(x,y),和(x′,y′)分別是圖像置亂前后的像素位置.
與其他置亂方法相比,Arnold 變換做到了水印圖像之間相關(guān)性的真正消除,且加密方法簡(jiǎn)單易于實(shí)現(xiàn),因此Arnold 置亂得到了普遍的應(yīng)用.
PCA 是一種多元降維算法[9,10],通過(guò)一定的運(yùn)算把某一些相關(guān)或相似數(shù)據(jù)變量轉(zhuǎn)換成新的數(shù)據(jù)變量,這些新變量?jī)蓛刹幌嚓P(guān)且在反映原始圖像信息方面保持客觀不變性,新變量具有隨方差逐漸遞減的特點(diǎn).
設(shè)有n個(gè)樣本X1,···,Xp,p維向量x=(x1,···,xp)T,i=1,2,···,n,n>p,構(gòu)造初始矩陣如下:
PCA[10,11]的計(jì)算基本過(guò)程如下:
(1) 標(biāo)準(zhǔn)化過(guò)程.對(duì)矩陣X進(jìn)行標(biāo)準(zhǔn)化處理:
其中,
(2) 計(jì)算矩陣Z的相關(guān)系數(shù)矩陣R.
其中,
(3) 樣本相關(guān)矩陣R的特征方程.根據(jù)下式求得p個(gè)特征值:
排列順序?yàn)棣?≥λ2≥···≥λp≥0 .根據(jù)特征值 λi求出特征向量ei(i=1,2,···,p),然后根據(jù)ei形成特征系數(shù)矩陣U=(e1,e2,···,ep)T.
(4) 確定主成分?jǐn)?shù).通常意義上規(guī)定,每個(gè)主成分在所有樣本分析中所占的百分?jǐn)?shù)稱為貢獻(xiàn)率 (CR),相應(yīng)的主成分總和對(duì)各個(gè)成分的方差之和的貢獻(xiàn)率稱為累積貢獻(xiàn)率(ACR).
設(shè) λi表示第i個(gè)特征值,則相應(yīng)的第i個(gè)主元素的CR(r)為
其中,λi為特征值,i=1,2,···,p.
綜合前面公式求得前m個(gè)主成分的ACR(m)為:
在實(shí)際應(yīng)用中,一般采取ACR≥ 85%確定m值,這樣才能使所提取信息的達(dá)到好的利用率.
(5) 變換真正的主成分.按下式計(jì)算主成分:
為了將水印信息嵌入到二維碼載體圖像最有效的位置,本文采用PCA 從二維碼載體圖像中選擇提取出了最有效的圖像主要系數(shù).與其他的頻域變換不同,PCA 提取的主成分系數(shù)同時(shí)包含圖像的高頻分量和低頻分量.因此,水印嵌入這些系數(shù)中可以充分的避開(kāi)普通頻域算法的各種難題.在利用二維碼編碼特性以及PCA 優(yōu)點(diǎn)的基礎(chǔ)上,通過(guò)選取適當(dāng)?shù)乃∏度胨惴?并結(jié)合行之有效的嵌入系數(shù)和嵌入強(qiáng)度,大大提高了水印算法的魯棒性.
算法嵌入:原始水印采用Arnold Cat 變換進(jìn)行初步加密置亂,得到水印圖像W,將原始二維碼圖像分塊,然后進(jìn)行主成分分析,得到有效的系數(shù),根據(jù)實(shí)驗(yàn)篩選出最佳的嵌入系數(shù),利用加法原則把水印圖像W嵌入到這些系數(shù)中,最后實(shí)現(xiàn)主成分分析逆變換,獲得嵌入水印的載體圖像.
算法提取:對(duì)帶有水印的載體圖像進(jìn)行PCA 分析,得到新的主要成分,根據(jù)前面嵌入算法中的參數(shù)和加法原則進(jìn)行變換,得到加密水印,最后通過(guò)Arnold Cat 逆變換可得到原始水印圖像.
算法流程圖如圖2.
在嵌入原始水印前,本文采用Arnold Cat[12]變換對(duì)圖像進(jìn)行初步加密置亂,算法不僅計(jì)算簡(jiǎn)單易行,而且能有效抵抗裁剪等幾何攻擊,再通過(guò)其變換的周期性,恢復(fù)原始圖像.圖3分別顯示了原始水印以及置亂后的水印,算法的密鑰key=0.2345.
圖3 原始水印圖像和加密置亂后水印圖像
設(shè)原始二維碼圖像是I,水印是W,加密置亂后的水印是W′.具體嵌入過(guò)程如下:
(1) 首先,把二維碼圖像進(jìn)行8 ×8塊處理,最終分成許多子塊In(n=1,2,···,4096).然后標(biāo)準(zhǔn)化每個(gè)子塊In并生成矩陣Z(i,j).
(2) 根據(jù)矩陣Z(i,j)計(jì)算出相應(yīng)的相關(guān)系數(shù)矩陣R(i,j).
(3) 根據(jù)相關(guān)系數(shù)矩陣R的特征方程,得到P個(gè)特征根值,然后依次按照降序排列,即λ1≥λ2≥···≥λp≥0.在獲得特定值 λi后,就可以根據(jù) λi計(jì)算求得相應(yīng)的特征向量ei(i=1,2,···,p),然后綜合利用e組成相應(yīng)的矩陣為U=(e1,e2,···,ep)T.
(4) 變換形成真正的主成分.計(jì)算公式為
(5) 水印嵌入.
式中,i=1,2,···,m,m為提取的主成分個(gè)數(shù);a為水印嵌入強(qiáng)度;y和Y′分別是原始的主要成分以及將水印嵌入后的主要成分.
根據(jù)嵌入處理過(guò)程對(duì)主成分系數(shù)Y′進(jìn)行逆變換,生成含有水印的載體圖像IW.
步驟(1)將二維碼載體圖像層層分塊并進(jìn)行了標(biāo)準(zhǔn)化處理,為后面進(jìn)行PCA 主成分分析奠定了基礎(chǔ).步驟(2)-(4) 是將每塊的圖像實(shí)施主成分分析,分解找出每塊的主成分系數(shù),它們是原始二維碼圖像低頻分量和高頻分量的結(jié)合體,把水印充分合理的嵌入到這些系數(shù)中可以有效提高算法的魯棒性.最后一步是根據(jù)實(shí)驗(yàn)篩選出最佳的嵌入系數(shù),然后根據(jù)式(9)實(shí)現(xiàn)水印的合理嵌入.
筆者根據(jù)主成分自身?yè)碛械奶攸c(diǎn),選用簡(jiǎn)單的加法原理實(shí)現(xiàn)水印的有效嵌入.經(jīng)過(guò)實(shí)驗(yàn)證明,不同的水印嵌入系數(shù),對(duì)水印算法的魯棒性和不可見(jiàn)性有不同的效果.當(dāng)系數(shù)a越大,水印魯棒性表現(xiàn)會(huì)越好,但是相應(yīng)的不可見(jiàn)性表現(xiàn)會(huì)越差.所以系數(shù)a必須通過(guò)實(shí)驗(yàn)選取,根據(jù)實(shí)驗(yàn)a選擇0.03.
在水印提取步驟中,根據(jù)Arnold Cat[12]加密后密鑰key,強(qiáng)度系數(shù)a獲得完整水印.具體步驟如下:
(1) 首先將原始二維碼圖像I依次根據(jù)嵌入過(guò)程中的前4 步驟計(jì)算得到原始主要成分yi(i=1,2,···,m).
(2)把包含水印的圖像IW同樣依次根據(jù)嵌入步驟中的前4 步驟分析獲得新的主要成分Y′i(i=1,2,···,m).
(3) 根據(jù)如下公式提取水印.
式中,i=1,2,···,m,m是 提取的主成分?jǐn)?shù)量,a是水印嵌入系數(shù),yi是嵌入前載體圖像的主成分系數(shù),Y′是水印圖像的主成分系數(shù),w是提取后的水印.
原始二維碼圖像自帶信息容量大,可靠性能高,自動(dòng)糾錯(cuò)能力強(qiáng)等特點(diǎn),不僅能提高嵌入容量而且能有效抵抗一些攻擊.同時(shí),對(duì)二維碼載體圖像進(jìn)行PCA 分析,獲得圖像的主要成分,這些主要成分可以最佳的表示圖像主要特征,它們不僅代表高頻分量而且含有低頻分量,將水印和主成分合理的融合,可以最優(yōu)化的實(shí)現(xiàn)水印不可見(jiàn)性和魯棒性平衡.結(jié)合以上兩種特點(diǎn),新算法水印魯棒性表現(xiàn)很強(qiáng).
3.1.1 峰值信噪比(PS NR)
峰值信噪比是評(píng)價(jià)兩幅圖像相似程度最通用的指標(biāo).PS NR[11-14]值越大,表示兩幅圖像越接近.計(jì)算公式為:
式中,I是原始載體圖像,I′是含有水印后的圖像,M,N表示圖像的大小.
3.1.2 歸一化相關(guān)系數(shù)(NC)
歸一化相關(guān)系數(shù)是評(píng)價(jià)原始水印與提取水印之間相似度的有效指標(biāo).NC[11-14]值越大越好,計(jì)算公式為:
式中,w(i)是 原始水印,w′(i)是算法提取出的水印,L代表水印的長(zhǎng)度.
通過(guò)PSNR評(píng)估新算法的有效魯棒性,圖4是二維碼載體圖像以及含有水印的二維碼圖像,通過(guò)計(jì)算求得兩者之間的PSNR=42.8876.說(shuō)明兩圖像相似程度高[2-5],所以新算法有效的實(shí)現(xiàn)了水印不可見(jiàn)性低的效果.
圖4 原始載體圖像和加水印后圖像
在本文中,我們使用文獻(xiàn)[3]提出的水印算法做比較,依次進(jìn)行無(wú)攻擊實(shí)驗(yàn),以及例如裁剪,旋轉(zhuǎn),噪聲和圖像變化等攻擊實(shí)驗(yàn).
表1 各種攻擊后提取的水印的NC 值
圖5顯示了原始水印圖像以及提取的水印圖像,前者經(jīng)過(guò)PCA 獲得的系數(shù)是表示圖像主要特征的對(duì)角矩陣,把鑒權(quán)水印信息和獲得的系數(shù)合理的融合能充分的抵抗攻擊,但是相應(yīng)的,算法進(jìn)行變換以及逆變換的過(guò)程中,某些信息會(huì)有所丟失.圖6至圖10是本文的算法和文獻(xiàn)[3]算法在裁剪,旋轉(zhuǎn),高斯噪聲,圖像變化和對(duì)比度變化等攻擊后提取的水印圖像.可以看出只有在無(wú)攻擊條件下,新水印算法的性能比文獻(xiàn)[3]水印算法的性能稍差,但是在其他攻擊例如噪聲、對(duì)比度變化等攻擊后,新算法都優(yōu)于文獻(xiàn)[3],而且在幾何攻擊旋轉(zhuǎn)以及裁剪的NC值明顯優(yōu)于文獻(xiàn)[3].本文通過(guò)結(jié)合二維碼的特征和PCA 算法,將水印合理有效的嵌入到最優(yōu)主成分中,最大限度的實(shí)現(xiàn)了保持水印結(jié)構(gòu)完整性的可能.
圖5 原始水印圖像和提取的水印圖像
圖6 裁剪攻擊
圖7 旋轉(zhuǎn)攻擊
圖8 高斯噪聲攻擊
圖9 圖像增亮攻擊
圖10 降低對(duì)比度攻擊
由于二維碼信息存儲(chǔ)量大,可靠性能高,自動(dòng)糾錯(cuò)能力強(qiáng)等特點(diǎn),本文結(jié)合PCA 算法提出了一種基于二維碼版權(quán)保護(hù)的數(shù)字水印算法,將Arnold 加密后的鑒權(quán)信息合理嵌入到二維碼載體中.實(shí)驗(yàn)結(jié)果表明,與文獻(xiàn)[3]提出的水印算法相比,新算法不僅在旋轉(zhuǎn)、裁剪等幾何攻擊方面表現(xiàn)出了很強(qiáng)的魯棒性,在圖像亮度增減、對(duì)比度的增減和噪聲的增加等攻擊方面,該算法也大大提高了水印的魯棒性.