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