張曉琪,唐天國(guó),胡振,楊華,周金容
(南充職業(yè)技術(shù)學(xué)院電子信息工程系,四川南充,637000)
數(shù)字水印技術(shù)[1]就是通過(guò)一些算法,將一些標(biāo)志性的信息(包括多媒體、文檔、軟件等), 嵌入到數(shù)字產(chǎn)品中,并且不被感知,同時(shí)也不能破壞數(shù)據(jù)的正常使用和原有價(jià)值,以達(dá)到保護(hù)版權(quán)及合法利益的目的。圖像數(shù)字水印大致可分空間域、變換域兩類,當(dāng)前比較多的新水印算法主要是基于變換域的,變換域算法相比空間域算法尤其是DCT域具有如下特點(diǎn):一是變換域能與現(xiàn)有的圖像壓縮標(biāo)準(zhǔn)兼容,二是變換域可以有效與人類視覺(jué)系統(tǒng)的某些特征相結(jié)合,加之DCT域計(jì)算復(fù)雜性較低,研究DCT域水印算法成為熱點(diǎn)。
本文給出了一種基于DCT域的數(shù)字圖像盲水印算法,算法以離散余弦變換理論為基礎(chǔ),通過(guò)對(duì)原始圖像的分塊變換,選擇中頻系數(shù),將有意義的二值水印圖像嵌入到被保護(hù)的作品圖像中,并實(shí)現(xiàn)水印的盲提取,利用MATLAB 工具軟件仿真實(shí)驗(yàn),并對(duì)嵌入水印的圖像進(jìn)行抗攻擊測(cè)試,驗(yàn)證該算法具有較好的不可見(jiàn)性和較強(qiáng)的魯棒性。
數(shù)字水印的基本原理就是將具有特殊意義的一些標(biāo)識(shí)信息,通過(guò)某些算法嵌入數(shù)字作品中,并且被嵌入的水印信息不會(huì)被感知,保證安全性。水印信息可以是隨機(jī)序列、文本、圖像、音頻和視頻等的任一種類型。本文研究的對(duì)象是靜態(tài)圖像水印。常用典型的數(shù)字圖像水印技術(shù)主要包含兩個(gè)基本系統(tǒng)即水印嵌入系統(tǒng)和水印提取(或檢測(cè))系統(tǒng)。
數(shù)字水印的嵌入[2]是在密鑰的指導(dǎo)下,將水印序列根據(jù)嵌入算法加入到原始圖像的數(shù)據(jù)中, 根據(jù)圖像情況也可以先將原始圖像變換(例如傅里葉變換、離散余弦變換、小波變換等),再用水印序列改變系數(shù),然后經(jīng)過(guò)反變換重構(gòu)含有水印的圖像,典型的數(shù)字水印的一般模型如圖1所示。
為了保證水印圖像的安全性和魯棒性,在實(shí)際應(yīng)用中,常會(huì)對(duì)數(shù)字水印圖像進(jìn)行加密處理或隨機(jī)預(yù)處理。假設(shè)I為原始載體圖像,W為水印信號(hào),K為密鑰,w’為預(yù)處理的水印,可以由函數(shù)F定義為:
圖1 水印嵌入算法框圖
在嵌入水印的過(guò)程中,如設(shè)E為編碼函數(shù),I為原始的載體圖像,被預(yù)處理過(guò)的水印圖像為W’,含水印的載體圖像IW則可表示為:
在嵌入水印信息的過(guò)程中,常用的嵌入算法有加性和乘性規(guī)則,可表示為:
其中:I(K)表示嵌入前頻域系數(shù),I’(K)是修改后的頻域系數(shù),a是嵌入的強(qiáng)度因子, w(k)表示第k個(gè)信息位水印。
數(shù)字水印提取模型與嵌入模型對(duì)應(yīng),利用待檢測(cè)圖像和密鑰提取水印序列(無(wú)論有無(wú)水印,都將按照提取算法提取),然后與原始水印序列進(jìn)行比較,判斷有無(wú)水印,典型的數(shù)字圖像水印提取(或檢測(cè))算法如圖2所示。
圖2 水印提取算法框圖
在數(shù)字水印系統(tǒng)中,水印的提取與水印的嵌入算法都很重要,如果對(duì)水印的提取過(guò)程定義為解碼函數(shù)P,則可以通過(guò)1和0 來(lái)決策水印信息的有無(wú),以此判定輸出水印信息是否存在。同樣設(shè)I為原始載體圖像, Iw為嵌入水印的圖像,有表達(dá)式如下:
其中,W表示提取的水印,K為密鑰,a表示決策參數(shù),C為相關(guān)檢測(cè)函數(shù),該函數(shù)是構(gòu)建水印有效框架最為簡(jiǎn)便的方法,檢測(cè)的輸出結(jié)果就是數(shù)字作品版權(quán)的保護(hù)證據(jù)來(lái)源。
離散余弦變換(DCT)[3]是一種實(shí)數(shù)域變換,常應(yīng)用于數(shù)字信號(hào)處理的線性變換,能使二維信號(hào)的相關(guān)特性得到很好體現(xiàn),DCT變換后能量聚集,具有很好的能量壓縮與去相關(guān)能力。計(jì)算速度較快,在數(shù)字信號(hào)壓縮和圖像壓縮等領(lǐng)域得到廣泛應(yīng)用。同時(shí)圖像的JPEG 壓縮標(biāo)準(zhǔn)以DCT 變換為基礎(chǔ),水印算法抗攻擊JPEG 壓縮的能力極大增強(qiáng),因此DCT域變換在數(shù)字水印技術(shù)中受到青睞。
經(jīng)過(guò)DCT 正變換,將二維圖像分解到一組不同的空間頻率上,則通過(guò)反變換將不同空間頻率上的各個(gè)分量合成原始圖像。數(shù)字圖像處理中常使用的都是二維 DCT 變換。設(shè)一幅M×N的圖像,其二維離散余弦正變換定義如下:
其中:
二維離散余弦反變換公式為:
其中: x = 0,1 ???M ? 1;y = 0,1 ???N ? 1;x,y為空間的采樣值,u,v為頻域的采樣值。
經(jīng)過(guò)DCT域變換, 在低頻部分主要集聚了圖像的絕大部分能量,會(huì)有很高的壓縮編碼效率,通過(guò)直方圖統(tǒng)計(jì)意義表明,系數(shù)值均集中在0附近,動(dòng)態(tài)范圍較小,DCT系數(shù)可用較少的量化比特?cái)?shù)來(lái)表示,將水印信息嵌入到載體圖像的中低頻部分,能較好的抗JPEG壓縮,如與空間域相比,它能嵌入的信息更多,并且有較好隱蔽性,魯棒性也比較高。算法的性能結(jié)合人體視覺(jué)模型可進(jìn)一步改進(jìn)。
盲水印算法是指在水印的檢測(cè)過(guò)程中只需要密鑰,不需要原始圖像數(shù)據(jù)的參與。有效的節(jié)省了存儲(chǔ)空間,使得其應(yīng)用范圍更加廣泛。本文選擇了性能較優(yōu)的盲水印算法。
圖像信號(hào)經(jīng)過(guò) DCT 變換后得到的系數(shù)分為DC(直流)系數(shù)和AC(交流)系數(shù),并將AC系數(shù)從左上到右下分為了低頻、中頻、高頻系數(shù)。由于DOC變換主要能量被壓縮到了左上角低頻系數(shù)中,載體的低頻信息主要反應(yīng)了載體的輪廓,不會(huì)有較大的失真。如果僅考慮魯棒性,低頻系數(shù)合適用來(lái)嵌水印入,但同時(shí)需要考慮水印的嵌入強(qiáng)度,否則會(huì)導(dǎo)致塊效應(yīng),影響水印的不可見(jiàn)性。高頻信息人類感知系統(tǒng)不敏感, 如果只是從水印不可見(jiàn)性角度考慮,高頻系數(shù)比較適合嵌入水印,但魯棒性相比較弱,將水印嵌入到高頻部分,容易因量化、圖像壓縮、低通濾波等處理而丟失信息,影響水印的魯棒性。因此,中頻系數(shù)為較好的折中,達(dá)到最佳平衡的透明性和魯棒性。本文選擇中頻系數(shù)嵌入水印信息。
首先對(duì)水印信息進(jìn)行預(yù)處理置亂變換加密,加密后再進(jìn)行水印嵌入,可提高水印算法的安全性。對(duì)于二維的數(shù)字圖像,Arnold變換[4]就是將數(shù)字圖像的像素元素位置進(jìn)行重新排列,使圖像變得雜亂無(wú)章,獲得混亂的圖像,以達(dá)到隱藏圖像信息的目的。
設(shè)水印圖像 W 為 N×N 大小,則Arnold變換公式為:
其中x,y∈{0,1,…,N-1},表示數(shù)字水印圖像的像素坐標(biāo);x′,y′表示經(jīng)過(guò)置亂后像素點(diǎn)的坐標(biāo);N表示方形圖像大小,又稱階數(shù)。利用公式對(duì)圖像的像素點(diǎn)逐一做變換,當(dāng)遍歷了圖像所有像素點(diǎn)以后,將產(chǎn)生置亂加密的水印圖像。
設(shè)原始載體圖像為灰度圖像,嵌入的水印信息為二值圖像,利用對(duì) DCT 系數(shù)關(guān)系的比較方法[5]嵌入水印信息。算法的主要思想是:將載體圖像分成若干個(gè)8×8大小互不覆蓋的子塊,對(duì)每個(gè)子塊進(jìn)行 DCT 變換,在中頻部分選擇一個(gè)點(diǎn)作為嵌入位置,然后計(jì)算該點(diǎn)相鄰6個(gè)坐標(biāo)系數(shù)的平均值 aver,設(shè)α為嵌入強(qiáng)度,當(dāng)嵌入的水印信息為 0 時(shí),修改該點(diǎn)的 DCT 系數(shù)值,使其等于aver-α;當(dāng)嵌入的水印信息為 1 時(shí),使其等于 aver+α,嵌入強(qiáng)度α可根據(jù)嵌入效果修改。對(duì)修改后的 DCT 系數(shù)塊做 IDCT 變換,再對(duì)每個(gè)分塊按原有順序進(jìn)行聚合,即可得到完整的含水印圖像。
設(shè)原始載體圖像為M×M大小,二值水印圖像為n×n大小,水印的嵌入過(guò)程如下:
(1) 對(duì)水印圖像進(jìn)行Arnold置亂變換,改變水印圖像的每個(gè)像素點(diǎn)的位置,即對(duì)水印圖像進(jìn)行加密預(yù)處理,得到置亂后的水印矩陣W(i,j),置亂次數(shù)t作為密鑰保存;
(2)將原始圖像I分割為(M/8)×(M/8)個(gè)8×8大小互不覆蓋的子塊 ;同時(shí),也將置亂后的水印圖像分割為大小為(n/(M/8))×(n/(M/8))的圖像子塊;
(3)對(duì)分割后的每個(gè)圖像子塊分別進(jìn)行 DCT 變換,每個(gè) DCT 變換后的圖像子塊包含64個(gè) DCT 系數(shù);
(4)在DCT變換后的每個(gè)圖像子塊中,選取一個(gè)中頻系數(shù)和在Zig-Zag排序中與其相鄰的 6 個(gè)系數(shù),設(shè)在第K塊中選取一個(gè)中頻系數(shù)為yk(i,j),則與其相鄰的6個(gè)系數(shù)就分別為yk(i+3,j-3)、yk(i+2,j-2)、yk(i+1,j-1)、yk(i-1,j+1)、yk(i-2,j+2)、yk(i-3,j+3),計(jì) 算 其平均值為:aver= [yk(i+3,j-3)+yk(i+2,j-2)+yk(i+1,j-1)+yk(i-1,j+1)+yk(i-2,j+2)+yk(i-3,j+3)]/6
然后對(duì)每一個(gè)yk(i,j)作嵌入運(yùn)算:
yk(i,j)=aver- α,w(u,v)=0,
yk(i,j)=aver+ α,w(u,v)=1
其中:w(u,v)為經(jīng)過(guò) Arnold 置亂變換后的水印圖像;α為嵌入強(qiáng)度,在實(shí)際中確定取值,α取值越大,水印的魯棒性就越強(qiáng),而水印圖像的不可見(jiàn)性就越差,需要平衡考慮不可見(jiàn)性和魯棒性,選取α=15較為合適。
(5) 將DCT域嵌入水印的每一個(gè)子塊進(jìn)行IDCT變換,并將各子塊按順序聚合為一個(gè)整體圖像I*,即得到含水印的載體新圖像。
文中研究的水印算法是一種盲水印算法,即提取數(shù)字水印時(shí)不需要原始圖像。提取水印的算法是嵌入水印的逆算法,對(duì)提取水印的圖像I*,其提取過(guò)程如下:
(1)將含水印圖像I*分成8×8 互不覆蓋的圖像子塊;
(2)對(duì)每個(gè)圖像子塊分別做 DCT 變換;
(3)找出每個(gè)子塊中頻系數(shù)中嵌入水印信息的位置,計(jì)算每一個(gè)系數(shù)yk*(i,j)及與其相鄰位置的6個(gè)系數(shù)的平均值為:Aver*=[yk*(i+3,j-3)+yk*(i+2,j-2)+yk*(i+1,j-1)+yk*(i-1,j+1)+yk*(i-2,j+2)+yk*(i-3,j+3)]/6。
(4)按照下列運(yùn)算提取水?。?/p>
若y*k(i,j)≥ aver*,則 w*(u,v)=1,
若y*k(i,j) (5)對(duì)檢測(cè)到的水印圖像進(jìn)行逆 Arnold 置亂變換,即可得到提取的水印圖像。 仿真實(shí)驗(yàn)采用原始載體圖像512×512的 fl ower灰度圖像,如圖3(a), 數(shù)字水印為 64×64 “水”文字二值圖像,如圖3 (b),以MATLAB 7.0為實(shí)驗(yàn)平臺(tái)。水印置亂圖像如圖4,對(duì)嵌入水印的圖像不做任何形式的攻擊處理,并從中提取出水印信息,如圖4(b)所示。從主觀視覺(jué)的角度看,嵌入水印的圖像和原始載體圖像幾乎沒(méi)有什么區(qū)別,同時(shí),對(duì)于提取出的水印圖像,用峰值信噪比(PSNR)[6]來(lái)對(duì)含水印的載體圖像評(píng)價(jià)質(zhì)量的好壞,根據(jù)歸一化相關(guān)系數(shù)(NC)[7]來(lái)客觀衡量提取的水印與原水印之間的相似程度。PSNR和NC計(jì)算公式分別為: 其中:I(x,y)為原始圖像、I′(x,y)為嵌入水印后的圖像的灰度值;圖像的大小為N×N. 單位是分貝(=dB)。 其中:W(u,v)為原始水印圖像,W′(u,v)為提取的水印圖像。 圖3 載體圖像和水印圖像 圖4 水印置亂圖像 圖5 嵌入水印與提取水印圖像 檢測(cè)算法的有效性,對(duì)含水印的圖像進(jìn)行常見(jiàn)的JPEG壓縮、椒鹽噪聲、剪切等抗攻擊檢測(cè),相應(yīng)的峰值信噪比PSNR和歸一化相關(guān)系數(shù)NC值,表明了水印的質(zhì)量,如表1所示。 表1 各種攻擊方式的實(shí)驗(yàn)結(jié)果 從表1可見(jiàn),在攻擊實(shí)驗(yàn)中,對(duì)于JPEG壓縮、高斯噪聲、椒鹽噪聲、濾波攻擊實(shí)驗(yàn)的NC值都高于0.9。在水印嵌入前,通過(guò)對(duì)水印圖像進(jìn)行了置亂預(yù)處理,使水印信息分解到不同的各個(gè)載體塊中,因而圖像的部分剪切處理對(duì)水印信息的提取沒(méi)有太大影響,提取出來(lái)的水印圖像與原水印相似度NC為0.8759,魯棒性較好。各種攻擊測(cè)試表明,該算法不但具有較好的不可見(jiàn)性,同時(shí)也具有較好的魯棒性。 本文對(duì)DCT域的圖像水印技術(shù)進(jìn)行了研究,實(shí)現(xiàn)了一種盲水印算法方案。在水印嵌入之前,對(duì)水印圖像進(jìn)行Arnold置亂加密,增強(qiáng)數(shù)字水印系統(tǒng)的安全性。實(shí)驗(yàn)表明,算法能夠抵御JPEG壓縮、噪聲攻擊等常用的圖像攻擊,具有較好的不可見(jiàn)性和魯棒性。 參考文獻(xiàn): * [1]孟倩,王希常,劉江.基于變換的數(shù)字水印算法研究[J],微型機(jī)與應(yīng)用, 2010,29(23):37—38 * [2]王靜.基于DCT域的圖像水印算法研究[D].西北大學(xué),2011 * [3]吳和靜,閔昆龍,劉芳等.基于 DCT域的圖像數(shù)字水印算法及 matlab 實(shí)現(xiàn)[J].中國(guó)科技信息,2014,09 :129—130 * [4]丁瑋,閆偉齊,齊東旭.基于 Arnold 變換的數(shù)字圖像置亂技術(shù)[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2001,13(4):338—341 * [5]曹軍梅.一種基于DCT域的魯棒性數(shù)字水印算法[J].微型電腦應(yīng)用 .2010,26(1):11—12 * [6]丁瑋. 基于離散余弦變換的數(shù)字水印圖像[J].北方工業(yè)大學(xué)學(xué)報(bào) ,1999,11(3):71—75. * [7]閆麗君,康寶生,岳曉菊.改進(jìn)的基于DCT的自適應(yīng)水印算法[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(8):197—200.4 仿真實(shí)驗(yàn)與分析
5 結(jié)束語(yǔ)