王玉成,陳青
(上海理工大學(xué)光電信息與計(jì)算機(jī)學(xué)院,上海 200093)
目前,隨著網(wǎng)絡(luò)的普及,計(jì)算機(jī)、智能手機(jī)和平板電腦等智能設(shè)備的使用率越來(lái)越高,人們可以輕松獲取自己想要的信息。數(shù)字化信息在給人們帶來(lái)便利的同時(shí),也帶來(lái)了版權(quán)糾紛的問(wèn)題,數(shù)字水印技術(shù)的產(chǎn)生為人們解決版權(quán)糾紛問(wèn)題提供了一種可靠的手段[1]。因此,數(shù)字水印得到了快速發(fā)展,從原先的一代水印發(fā)展到了二代水印[2]。數(shù)字水印的研究分為空間域[3-4]、變換域[5-7]和特征域[8-9],并且嵌入?yún)^(qū)域大多是固定不變的,易遭破壞。在面對(duì)旋轉(zhuǎn)等幾何攻擊時(shí),圖像像素的位置發(fā)生改變,使得水印信息無(wú)法有效提取。朱怡馨[10]等利用加速魯棒特征(Speed Up Robust Features,SURF)和RANSAC算法篩選特征點(diǎn)質(zhì)量,提高幾何校正精度,可以抵抗旋轉(zhuǎn)攻擊。齊向明[11]等將水印信息嵌入在對(duì)人類(lèi)視覺(jué)掩蔽性好的圖像子塊中,利用SIFT 特征點(diǎn)對(duì)遭到幾何攻擊后的圖像進(jìn)行校正,恢復(fù)水印的同步性,可以有效地抵抗旋轉(zhuǎn)攻擊。文獻(xiàn)[10-11]雖然能夠抵抗旋轉(zhuǎn)攻擊,但是當(dāng)旋轉(zhuǎn)的角度不斷增大時(shí),算法的魯棒性也會(huì)變差,并且特征點(diǎn)匹配算法在匹配時(shí)需要原圖像的參與,增加了空間容量的存儲(chǔ)成本。邵東[12]使用SIFT 算法篩選穩(wěn)定特征點(diǎn),建立局部不變特征區(qū)域,通過(guò)bandelet 變換處理魯棒特征區(qū)域,將水印信息嵌入在bandelet 系數(shù)當(dāng)中,可以抵抗幾何攻擊。
文中設(shè)計(jì)了基于SIFT 和Radon 變換的盲水印算法,將水印信息嵌入在SIFT 提取的圖像自身特征所構(gòu)造的區(qū)域內(nèi),利用Radon 變換估計(jì)圖像旋轉(zhuǎn)角度,對(duì)圖像進(jìn)行幾何校正,實(shí)現(xiàn)水印的盲檢測(cè)。
Radon 變換[13]是數(shù)字圖像矩陣在某一指定角度射線方向上做的投影變換,它可以捕捉圖像的方向信息。在直角坐標(biāo)系中,直線方程可以表示為ρ=xcos(θ)+ysin(θ),其中ρ表示直線到坐標(biāo)原點(diǎn)的距離,θ代表直線l與法線方向的夾角。圖像像素矩陣的Radon 變換可以表示為:
式中,α為尺度因子。Radon 變換檢測(cè)如圖1 所示,具體步驟如下:
圖1 Radon變換檢測(cè)
1)利用Radon 變換求出圖像旋轉(zhuǎn)角度為0°時(shí)的參照向量R(0),將其在信息版權(quán)保護(hù)中心(IFR)注冊(cè)。當(dāng)需要提取水印信息時(shí),只需要與待檢測(cè)圖像進(jìn)行相關(guān)運(yùn)算,即可求出待檢測(cè)圖像的旋轉(zhuǎn)角度,進(jìn)而對(duì)待檢測(cè)圖像進(jìn)行幾何校正。由于沒(méi)有原始圖像的參與,因此該算法屬于盲檢測(cè)。
2)對(duì)圖像進(jìn)行Radon 變換,選擇的投影角度θ范圍為(0°,359°),步長(zhǎng)為1°,則Radon 變換總共執(zhí)行360 次,得到360 個(gè)檢測(cè)向量R(θ),將其與向量R(0)進(jìn)行相關(guān)運(yùn)算,計(jì)算出相關(guān)系數(shù)。
3)相關(guān)系數(shù)表示檢測(cè)向量與參照向量的相似程度。相關(guān)系數(shù)越大,表示檢測(cè)向量與參照向量越相似,系數(shù)最大值就為圖像的旋轉(zhuǎn)角度。相關(guān)系數(shù)的計(jì)算公式如下:
SIFT(Scale-invariant Feature Transform)算法[14]最早由英屬哥倫比亞大學(xué)教授Lowe 提出,是一種提取局部特征的算法。算法的主要步驟為:1)檢測(cè)尺度空間極值點(diǎn);2)精確定位極值點(diǎn);3)關(guān)鍵點(diǎn)方向分配。一幅圖像I(x,y)尺度空間的定義為:
式中,G(x,y,σ)表示尺度可變高斯函數(shù),見(jiàn)式(4):
式中,σ表示尺度空間因子,*表示卷積運(yùn)算。
為了在尺度空間中有效地檢測(cè)出穩(wěn)健特征點(diǎn),使用了高斯差分尺度空間,通過(guò)不同尺度的高斯差分核和圖像進(jìn)行卷積,如下式:
在得到高斯差分尺度空間后,空間內(nèi)每個(gè)點(diǎn)都與它同尺度內(nèi)的8 個(gè)相鄰點(diǎn)和上下相鄰尺度內(nèi)的18個(gè)點(diǎn)比較,這樣就可以檢測(cè)到尺度空間內(nèi)的所有極大值和極小值,從而獲取圖像的特征點(diǎn)。雖然特征點(diǎn)被提取出來(lái),但這其中包含了一定數(shù)量的邊緣不穩(wěn)定特征點(diǎn),會(huì)對(duì)水印的嵌入和提取造成一定程度的影響,可通過(guò)Hessian 矩陣來(lái)消除不穩(wěn)定特征點(diǎn)。Hessian 矩陣H如下:
Dxx、Dxy、Dyy表示尺度空間的二階導(dǎo)數(shù)。穩(wěn)定性表示如下:
當(dāng)某個(gè)特征點(diǎn)滿足式(7)時(shí),則視其為穩(wěn)定特征點(diǎn);若不滿足,則視為不穩(wěn)定特征點(diǎn),并予以剔除。實(shí)驗(yàn)表明,當(dāng)變量r=10 時(shí),可以得到較好的穩(wěn)定特征點(diǎn)檢測(cè)效果。在獲得穩(wěn)定性好的特征點(diǎn)后,再為每個(gè)特征點(diǎn)建立特征描述符,這樣特征點(diǎn)就具有了旋轉(zhuǎn)不變性、尺度不變性等屬性。
小波變換[15]可以把信號(hào)變成多尺度的時(shí)間-頻率表示,具有在時(shí)間域和頻域都能進(jìn)行多尺度研究信號(hào)局部特征的能力。離散小波變換(DWT)是小波變換的一種,即使信號(hào)通過(guò)高頻和低頻兩個(gè)濾波器,可得到一個(gè)低頻子帶LL 和3 個(gè)高頻子帶LH、HL、HH。低頻子帶LL 包含了圖像的大部分能量信息,而高頻子帶只含有少部分信息,將水印信息嵌入在低頻子帶中,可以滿足數(shù)字水印算法魯棒性的要求,但會(huì)干擾水印算法的不可見(jiàn)性。
奇異值(SVD)分解[16]是在信號(hào)處理中有用的工具之一。一幅n×n大小的灰度圖像可以看作一個(gè)n×n的非負(fù)矩陣,假設(shè)將一幅圖像定義為矩陣A,那么A的奇異值分解如下:
U和V分別表示左奇異值矩陣和右奇異值矩陣,VT表示矩陣的轉(zhuǎn)置。S為對(duì)角矩陣,且對(duì)角線上的元素由大至小排列。在圖像遭到輕微干擾時(shí),奇異值具有較好的穩(wěn)定性,即奇異值不會(huì)發(fā)生較大的變化,故水印嵌入在奇異值組成的矩陣中可以抵抗攻擊。
水印嵌入步驟如下:
1)將圖像大小為N×N的二值水印信息W通過(guò)Arnold 置亂操作,得到加密水印信息W′,這樣可以提高水印算法的安全性。
2)利用SIFT 算法提取出原始圖像的特征點(diǎn),并結(jié)合RANSAC 算法對(duì)所有特征點(diǎn)進(jìn)行篩選,剔除誤匹配的特征點(diǎn),得到穩(wěn)定性相對(duì)好的特征點(diǎn)。
3)在篩選后的特征點(diǎn)中,根據(jù)兩兩之間的距離大小關(guān)系,選出距離最大的兩個(gè)特征點(diǎn),選擇其中一點(diǎn)并根據(jù)其在圖像中的位置來(lái)構(gòu)造合適的嵌入?yún)^(qū)域。
4)對(duì)嵌入?yún)^(qū)域h×h分塊,對(duì)每塊進(jìn)行一級(jí)DWT變換,得到子帶LL1、HL1、LH1、HH1,再對(duì)LL1 進(jìn)行二級(jí)小波變換,提取出二級(jí)低頻子帶LL2。對(duì)每塊的低頻子帶LL2 進(jìn)行SVD 分解,提取每塊奇異值矩陣中的第一行一列最大元素,組成矩陣M,再對(duì)矩陣M做SVD 變換,得到奇異值對(duì)角矩陣C。
5)根據(jù)加性方案直接將水印信息嵌入到對(duì)角矩陣C當(dāng)中:
其中,α為嵌入強(qiáng)度,W′(i,j)為加密后的水印信息。
6)由于水印嵌入之后的矩陣C′不是對(duì)角矩陣,因此還需對(duì)其進(jìn)行分解,再進(jìn)行SVD 逆分解、DWT逆變換,得到嵌入水印后的圖像。
7)利用Radon 變換求出圖像在旋轉(zhuǎn)度數(shù)為0。時(shí)的參照向量R(0)。
水印提取的步驟如下:
1)利用Radon 變換檢測(cè)算法求出待檢測(cè)圖像的檢測(cè)向量R(θ),根據(jù)式(2)得到相關(guān)系數(shù),并求出圖像旋轉(zhuǎn)角度進(jìn)行幾何校正。
2)對(duì)幾何校正之后的圖像同樣做SIFT 特征提取,并結(jié)合RANSAC 算法剔除誤匹配的特征點(diǎn),得到穩(wěn)定性好的特征點(diǎn)。
3)在特征點(diǎn)中選取距離最大的兩個(gè)特征點(diǎn),根據(jù)嵌入時(shí)選擇的點(diǎn),得到水印的嵌入?yún)^(qū)域。
4)得到水印嵌入?yún)^(qū)域后,重復(fù)水印嵌入步驟中的第四步。
5)依據(jù)下式提取出加密的水印信息。
6)利用Arnold 逆運(yùn)算恢復(fù)出原始水印信息W。
一般情況下,水印的算法性能通常采用不可見(jiàn)性和魯棒性兩種性能來(lái)評(píng)價(jià)。評(píng)價(jià)指標(biāo)為峰值信噪比(PSNR)和歸一化相關(guān)系數(shù)(NC)[17]。峰值信噪比(PSNR)用來(lái)評(píng)價(jià)嵌入水印后的圖像質(zhì)量,即水印的不可見(jiàn)性。PSNR 值越大時(shí)表示含有水印的圖像越接近原圖,原圖遭到破壞的程度越小,不可見(jiàn)性就越好。PSNR 的單位為dB,公式為:
其中,D=255 表示灰度圖像,M、N為圖像大小,I(x,y)、IW(x,y)表示嵌入水印前后的圖像。
歸一化相關(guān)系數(shù)(NC)表示提取出的水印圖像與原水印圖像的相關(guān)程度,即用來(lái)評(píng)價(jià)水印的魯棒性。NC值最大為1,表示提取出的水印圖像與原水印圖像完全相同。即NC 值越接近1,說(shuō)明水印算法的魯棒性越好,提取的水印質(zhì)量就越高,計(jì)算公式為:
其中,w(i,j)為原水印圖像,w′(i,j)為提取的水印圖像。
文中實(shí)驗(yàn)使用Matlab 2016a 作為實(shí)驗(yàn)平臺(tái),實(shí)驗(yàn)采用了512×512 灰度Lena 圖像作為原始載體,嵌入強(qiáng)度為0.3,小波基選擇haar 小波,水印圖像采用帶有CUP信息標(biāo)志32×32大小的二值圖像,具體見(jiàn)圖2。
圖2 實(shí)驗(yàn)圖像
圖3 為水印置亂之后的圖像。圖4 為嵌入水印之后的圖像和提取的水印,從中可以看出嵌入水印后的圖像非常接近原始圖像,幾乎分辨不出差別,同時(shí)檢測(cè)到的PSNR 值為45.589 4 dB,這說(shuō)明該水印算法具有良好的不可見(jiàn)性。
圖3 置亂水印
圖4 實(shí)驗(yàn)結(jié)果
當(dāng)圖像遭到旋轉(zhuǎn)攻擊時(shí),圖像的像素位置發(fā)生改變,水印信息無(wú)法有效提取。文中通過(guò)Radon 變換檢測(cè)算法求出待檢測(cè)圖像的待檢測(cè)向量R(θ),并將其與參考向量R(0)進(jìn)行相關(guān)計(jì)算,確定待檢測(cè)圖像的旋轉(zhuǎn)角度,并對(duì)圖像進(jìn)行幾何校正,在校正完成之后再進(jìn)行水印信息的提取[18]。將水印信息嵌入原始圖像后,分別旋轉(zhuǎn)5°、20°、50°、70°、130°來(lái)測(cè)試水印算法的性能。對(duì)遭到旋轉(zhuǎn)攻擊的圖像做幾何校正之后,再利用SIFT 提取圖像特征找到水印的嵌入?yún)^(qū)域,則可以很容易提取水印信息。由表1 可知,提取的水印NC 值均在0.96 之上,說(shuō)明該算法有很好的抗旋轉(zhuǎn)攻擊性能。圖5 為不同旋轉(zhuǎn)攻擊后提取出的水印。
表1 旋轉(zhuǎn)攻擊測(cè)試
圖5 不同旋轉(zhuǎn)攻擊后的水印圖像
為了進(jìn)一步驗(yàn)證算法的魯棒性,對(duì)含水印信息的Lena 圖像進(jìn)行剪切1/8、均值濾波、JPEG 壓縮、中值濾波等攻擊,提取水印信息。由于將水印嵌入在將圖像分塊的奇異值矩陣當(dāng)中,因此圖像在被處理后,分塊奇異值組成的矩陣變化較小,并且使用SIFT 算法穩(wěn)定提取圖像特征可以有效提取出水印信息。由表2 可以看出,提取的水印圖像清晰可辨,水印的NC 值也均在0.96 之上,說(shuō)明該水印算法也有較好的魯棒性。但在高斯噪聲等其他攻擊下,由于SIFT 未能有效提取特征點(diǎn),導(dǎo)致在錯(cuò)誤的區(qū)域提取水印,水印信息無(wú)法有效提取。圖6 為在表2 中不同攻擊下提取的水印圖像。
圖6 不同攻擊的水印圖像
表2 常規(guī)攻擊測(cè)試
文中以SIFT 特征提取和Radon 變換為基礎(chǔ),結(jié)合DWT、SVD 分解等,提出一種水印嵌入域可變的抗旋轉(zhuǎn)盲水印算法。由于每個(gè)圖像的自身特征不同,所以水印嵌入?yún)^(qū)域也不同,可以提高水印的安全性。水印提取過(guò)程無(wú)需原圖像參與,實(shí)現(xiàn)了水印的盲提取。實(shí)驗(yàn)結(jié)果表明,該水印算法具有良好的不可見(jiàn)性和較強(qiáng)的抵抗旋轉(zhuǎn)能力,在面對(duì)一些常規(guī)信號(hào)處理時(shí)也能表現(xiàn)出魯棒性,具有一定的實(shí)用價(jià)值。