基于DCT的數(shù)字水印改進(jìn)算法
作者 曉林(東南大學(xué),江蘇 南京 211189)
本文引用地址:http://www.ex-cimer.com/article/201901/397285.htm摘要:隨著社會(huì)的發(fā)展,信息安全越來(lái)越成為人們關(guān)注的焦點(diǎn)。數(shù)字水印技術(shù)在版權(quán)保護(hù)等方面有著非常好的效果,因而成為信息隱藏技術(shù)研究領(lǐng)域的重要研究方向。本設(shè)計(jì)在基本DCT算法上進(jìn)行了改進(jìn),提出了n次DCT嵌入算法,能夠明顯提高水印的嵌入效果。通過(guò)測(cè)試,結(jié)果表明這種設(shè)計(jì)較好地兼顧了水印技術(shù)的不可見(jiàn)性和魯棒性的要求,可以用在知識(shí)產(chǎn)權(quán)的保護(hù)等方面,具有較高的實(shí)用性。
0 引言
水印嵌入有很多種方法,其中廣泛使用的方法是在DCT變換域上嵌入水印。DCT(離散余弦變換,Discrete Cosine Transform)是與傅里葉變換相關(guān)的一種變換,類(lèi)似于離散傅里葉變換。但是離散傅里葉變換需要進(jìn)行復(fù)數(shù)運(yùn)算,盡管有FFT可以提高運(yùn)算速度,但在圖像實(shí)時(shí)處理中非常不便。而DCT除了具有一般的正交變換性質(zhì)外,也是一種準(zhǔn)最佳變換。另外,在靜止圖像編碼標(biāo)準(zhǔn)JPEG中,使用了離散余弦變換。因此,使用DCT進(jìn)行水印添加可以提高抗JPEG壓縮能力。因此本設(shè)計(jì)選擇在DCT域進(jìn)行水印嵌入。
1 基本DCT算法
對(duì)于彩色圖片,基本DCT算法的流程圖1所示。首先將RGB圖片轉(zhuǎn)成YUV格式,然后再將圖像矩陣分成互不重疊的8*8塊,DCT模塊對(duì)其中的Y分量進(jìn)行8*8 DCT變換,其后Watermarker將讀取的水印信息嵌入對(duì)應(yīng)的DCT系數(shù)上,后經(jīng)IDCT反變換輸出嵌入水印的Y分量,而后經(jīng)YUV2RGB輸出嵌入后的RGB流。另外,為了保證水印信息的安全性,基本DCT會(huì)加入了Arnold置亂和混沌加密模塊。Arnold置亂將圖像像素信息打亂的操作,從而使得水印圖像變的雜亂無(wú)章。這其實(shí)是一種加密操作,置亂的迭代次數(shù)就是密鑰1?;煦缂用苁菍⒒煦缧蛄信c水印信息逐個(gè)進(jìn)行異或處理,其中混沌序列是對(duì)初值極度敏感的非周期的類(lèi)隨機(jī)序列,不同的初值會(huì)產(chǎn)生完全不一樣的序列,因此可將這個(gè)初值當(dāng)作密鑰2。即使水印被正確的提取,沒(méi)有這兩個(gè)密鑰,也不能恢復(fù)出原水印,因此保證了水印的安全性。
圖1中比較核心的模塊是Watermarker模塊,該模塊實(shí)現(xiàn)水印信息的嵌入,即將二值水印(0和1的序列)加到8*8的DCT變換域上。本例中載體圖片大小為800800(可分為100100個(gè)88塊),而水印圖片為200200,所以每個(gè)88的DCT矩陣需要嵌入4個(gè)水印信息,也就是需要選擇4個(gè)DCT系數(shù)(s1~s4)進(jìn)行嵌入。另外,本設(shè)計(jì)選擇盲水印嵌入,即提取水印時(shí)不需要原載體圖片參與。因此,還需選擇4個(gè)參考系數(shù)(r1~r4)。由于DCT模塊是按列輸出DCT矩陣的,所以參考系數(shù)r選擇在嵌入系數(shù)s上一列位置。系數(shù)選擇位置如下圖所示:
具體嵌入方法為:讀取水印信息w(這里w取1或-1),按下列公式更改s系數(shù)的值,其中T是選定的閾值:
可以看出,如果水印信息w=-1,則s=r-T。反之,s=r+T。提取水印時(shí)只需判斷r系數(shù)和對(duì)應(yīng)s系數(shù)的大小,即可提取嵌入的水印。T的選取對(duì)載體圖片和提取的水印圖片都有很大影響。T越小,對(duì)載體圖片的影響越小,但提取出的水印質(zhì)量越差。相反,T越大,嵌入水印的載體圖片越差,而提取出的水印質(zhì)量越好。因此為了同時(shí)保證載體圖片和提取水印的質(zhì)量,提出了的n次DCT算法。
2 改進(jìn)DCT算法
本文提出n次DCT水印嵌入對(duì)前面的設(shè)計(jì)進(jìn)行改進(jìn)。在前面提到T的選取影響載體圖片和從中提取水印的質(zhì)量,而且對(duì)兩者的影響是相反的。由圖3可以看出T=5時(shí)基本DCT提取出的水印有較多的雜點(diǎn),一般情況下想要提高水印圖片質(zhì)量的方法是增加T值,但這樣會(huì)使載體圖片的質(zhì)量變差。看起來(lái)兩者不可兼得,但是事實(shí)上可以通過(guò)多次DCT來(lái)同時(shí)得到好的嵌入水印圖片和水印圖片,如圖4所示。
理想情況下,如果嵌入水印的圖片未遭受任何攻擊,那么提取出的水印應(yīng)該沒(méi)有誤差,但事實(shí)上由于Y分量的“截取誤差”會(huì)導(dǎo)致在沒(méi)有任何攻擊的情況下提取出的水印有雜點(diǎn),如圖5所示。這里的截取誤差指:Y分量的取值范圍為-128~127,而IDCT輸出的Y分量有時(shí)會(huì)超出這個(gè)范圍,所以需要截取,大于127的取127,小于-128的取-128。截取誤差會(huì)改變r(jià)系數(shù)和對(duì)應(yīng)s系數(shù)的大小關(guān)系,從而導(dǎo)致水印像素點(diǎn)的判決錯(cuò)誤。當(dāng)然,還有可能是量化誤差引起的。圖5和圖6分別為T(mén)=5時(shí)1次DCT和3次DCT提取水印結(jié)果。
從圖6可以看出n次DCT提取出的水印有很大改善,而產(chǎn)生這種改善的具體原因還有待分析。一般情況下,n=2水印圖片就會(huì)有明顯的改善。另外n次循環(huán)后,T值并沒(méi)有累加,對(duì)比圖5和圖6發(fā)現(xiàn)左列嵌入水印圖片的質(zhì)量是差不多的,說(shuō)明T值并沒(méi)有在循環(huán)中累加。
提取水印的質(zhì)量與T的選取有很大關(guān)系,表1為不同T下水印圖像質(zhì)量的測(cè)評(píng)。從表1可以看出T選取越大,對(duì)載體圖片的影響就越大。相反的,提取出的水印質(zhì)量就越好。從T=10起,水印的NC值就一直保持為1,如果是一次循環(huán)DCT,要想達(dá)到NC=1,需要更大的T值。這說(shuō)明水印能完整無(wú)差的提取出來(lái),證明了算法的高魯棒性。
3 攻擊測(cè)試
為了驗(yàn)證水印算法的魯棒性,對(duì)嵌入水印圖片進(jìn)行攻擊,再按照水印提取算法從隱藏有水印的圖像中提取出水印序列,比較提取出來(lái)的水印和原始水印,來(lái)檢測(cè)水印的算法的抗攻擊性能,越相似,該水印系統(tǒng)的魯棒性越強(qiáng)。下列圖為各種攻擊下的水印提取結(jié)果圖
圖7為裁剪攻擊測(cè)試效果。由于加入了Arnold置亂的原因,剪切所丟失的水印信息分布在整個(gè)水印圖片上,所以依然可以從中提取出水印的大致內(nèi)容。
圖8和圖9分別為方差為0.005和0.01高斯噪聲攻擊的效果。對(duì)噪聲的抵抗性與參數(shù)T的選取有關(guān),T越大則能抵抗更大的噪聲攻擊。
表2給出本設(shè)計(jì)的水印檢測(cè)對(duì)品質(zhì)因數(shù)由100到20的JPEG壓縮魯邦的實(shí)驗(yàn)。表中附圖為后處理后的結(jié)果,T值為40。
表3為各種攻擊下的的魯棒性測(cè)試。有關(guān)參數(shù)利用歸一化相關(guān)值NC和峰值信噪比PSNR來(lái)表示。結(jié)果表明這種水印算法對(duì)各種攻擊具有很好的隱蔽性和魯棒性。
參考文獻(xiàn)
[1]郭丹.基于變換域的彩色圖像水印的研究與實(shí)現(xiàn)[D].西北大學(xué),2013.
[2]梁亮亮.變換域自適應(yīng)數(shù)字圖像魯棒水印算法研究[D].江西理工大學(xué),2017.
[3]張海彥.基于擴(kuò)頻的數(shù)字視頻水印技術(shù)研究[D].河北科技大學(xué),2016.
[4]王星茹.抗剪切攻擊的彩色圖像水印算法研究[D].西安電子科技大學(xué),2015.
[5]楊一言.擴(kuò)頻水印序列的研究及數(shù)字水印開(kāi)發(fā)平臺(tái)的實(shí)現(xiàn)[D].北京工業(yè)大學(xué),2014.
本文來(lái)源于科技期刊《電子產(chǎn)品世界》2019年第2期第88頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處
評(píng)論