陳 青,夏蘭婷,卜 瑩
上海理工大學光電信息與計算機工程學院,上海200093
由于通信技術(shù)、網(wǎng)絡(luò)技術(shù)和計算機技術(shù)的飛速發(fā)展,數(shù)字媒體得到了廣泛的應(yīng)用與發(fā)展.目前,數(shù)字媒體主要通過網(wǎng)絡(luò)傳輸信息.然而,開放的網(wǎng)絡(luò)環(huán)境也給數(shù)字作品的信息安全和版權(quán)保護帶來巨大挑戰(zhàn)[1].作為一種安全有效的保護數(shù)字版權(quán)的技術(shù)手段,數(shù)字水印技術(shù)廣泛應(yīng)用于數(shù)字媒體領(lǐng)域[2].
文獻[3-4]將奇異值分解的穩(wěn)定性、縮放不變性運用于圖像增強的領(lǐng)域,取得了一定的成果.文獻[5]針對醫(yī)學圖像的特征以及醫(yī)學圖像與患者文本信息的相關(guān)性,提出一種基于奇異值分解(singular value decomposition, SVD)的水印算法.文獻[6]將SVD 分解與離散小波變換(discrete wavelet transform, DWT)結(jié)合使用,可減少空域圖像里SVD 分解帶來的較大運算量.文獻[7]基于DWT 和SVD,提出一種魯棒性較好的的視頻水印算法.文獻[8]提出一種基于SVD 和DWT 的人類視覺系統(tǒng)的塊水印算法,選取邊緣熵最小的塊作為水印的嵌入?yún)^(qū)域.文獻[9]改進了常規(guī)的DWT-SVD 域的水印算法,選擇遺傳算法來尋求最佳比例系數(shù),平衡了載體的不可見性和魯棒性.上述幾種方法均采用了SVD 分解技術(shù),而矩陣的奇異值具有旋轉(zhuǎn)、縮放不變性,在一定程度上增強了圖像的魯棒性.但單獨使用1 次SVD 分解來嵌入水印,對載體的破壞較大.由于奇異值矩陣(1, 1)處的值所包含的能量最高且同步影響較小,本文選擇第1 級SVD 變換后坐標為(1, 1)處的奇異值構(gòu)建特征矩陣,該奇異值特征矩陣繼承了載體的主導特征.
現(xiàn)有的水印算法抵抗旋轉(zhuǎn)攻擊的能力明顯不足,主要的解決方案是在水印提取前進行校正.文獻[10]計算出了數(shù)字矩陣的Radon 變換不變矩,利用少量低階Radon 不變矩構(gòu)建零水印信息.文獻[11]提出了一種新的且可靠的基于SVD 和IWT 的圖像水印方案,將水印的S和V矩陣用作秘密密鑰,水印的奇異向量嵌入主圖像的奇異值.文獻[12]利用Radon 變換校正待檢測圖像,提高水印算法的抵抗旋轉(zhuǎn)攻擊的能力.文獻[13]利用Harris 角點提取原始圖像特征點,選取特征區(qū)域,然后利用偽Zernike 矩的相位信息對圖像進行旋轉(zhuǎn)校正,可有效抵抗旋轉(zhuǎn)攻擊.通過上述方法旋轉(zhuǎn)校正后的圖像雖能抵抗該攻擊,但仍然存在像素值缺失而導致水印值缺失的情況.因此,本文選取旋轉(zhuǎn)后像素近似無損的正方形區(qū)域進行水印嵌入,以減少像素的缺損現(xiàn)象,同時保證水印的嵌入容量.
本文提出一種新的基于旋轉(zhuǎn)穩(wěn)定區(qū)域和兩級SVD 分解的魯棒水印算法.本算法選取像素無損的穩(wěn)定區(qū)域進行水印的嵌入,提取水印時用Radon 變換進行校正,保證水印的嵌入容量,增強抵抗旋轉(zhuǎn)攻擊的能力.針對常規(guī)一級SVD 分解對載體的破壞性較大而導致魯棒性較差的問題,本文將低頻部分SVD 分解后提取第1 個奇異值構(gòu)建特征矩陣,然后再進行SVD 分解以實現(xiàn)水印嵌入.該方案不僅保證了水印的嵌入容量和不可見性,而且還提高了水印抵抗幾何攻擊的能力.
假設(shè)圖像A是一個N×N的矩陣,那么存在N ×N矩陣U和V,使得
式中,Σ=diag(σ1,σ2,···,σN)是一個對角矩陣,也被稱為A矩陣的奇異值,具有抵抗幾何攻擊和信號攻擊的能力.奇異值矩陣的系數(shù)大小為,其第1 行和第1 列的值σ1大于其他奇異值,表示σ1具有最大的能量壓縮,受同步影響也比較小[14].奇異值矩陣可以寫為
選取σ1構(gòu)建特征矩陣,并再次對所得的特征矩陣進行SVD 分解.兩級奇異值分解既保留了載體圖像的最大能量信息,又減少了對原始圖像的破壞,增強了不可見性.
奇異值代表圖像的亮度信息,改變奇異值并令Σε=εΣ,則
若0<ε<1,則A變暗;若ε>1,則A變亮.對于ε>0,令Σε=Σ+ε,則
矩陣εUVT值很小,與較大的A值對比可忽略.
圖像奇異值分解后大部分數(shù)據(jù)信息存儲在正交矩陣U和V中,圖像對U和V的改變較敏感.若令Uε=U+ε,則
矩陣εΣVT是一個數(shù)值較大的矩陣,對圖像影響大,故本文選擇在奇異值上運用加性原則進行水印的嵌入.
常規(guī)的抵抗旋轉(zhuǎn)攻擊的方法有兩種:一種是在具有旋轉(zhuǎn)不變性的特征區(qū)域進行水印嵌入,如SIFT 或SURF 特征點;另一種是對含水印信息的載體圖像進行旋轉(zhuǎn)校正,如SURF 旋轉(zhuǎn)校正和Radon 校正,也就是先對已旋轉(zhuǎn)的載體圖像進行1?~359?的角度校正,然后再進行水印提取.在特征區(qū)域嵌入水印會導致嵌入量的減少,而旋轉(zhuǎn)校正后的圖像邊緣信息會存在缺失,即使校正也無法彌補之前缺失的像素部分.將圖像進行15?、45?、75?、90?、125?、145?的不同角度旋轉(zhuǎn),得到的圖像如圖1所示.
圖1 旋轉(zhuǎn)攻擊后的圖像Figure 1 Image after rotation attack
利用Radon 變換后的的旋轉(zhuǎn)校正結(jié)果及像素缺失情況見表1.
表1 旋轉(zhuǎn)攻擊后的旋轉(zhuǎn)校正結(jié)果及損失情況Table 1 Rotating correction results and loss after rotation attack
旋轉(zhuǎn)后圖像的邊緣信息會受到一定的損失,若水印嵌入在完整圖像中,那么邊緣水印信息也會損失.當旋轉(zhuǎn)角度為45?時圖像損失面積最大,所以在旋轉(zhuǎn)45?的圖像中選擇旋轉(zhuǎn)穩(wěn)定區(qū)域,可以保證當旋轉(zhuǎn)其他角度時圖像損失最小.選取圖1(b)旋轉(zhuǎn)45?后的內(nèi)接正方形區(qū)域為內(nèi)接旋轉(zhuǎn)穩(wěn)定區(qū)域,該區(qū)域里的像素值不會因旋轉(zhuǎn)角度的不同而丟失.為了驗證所選區(qū)域在旋轉(zhuǎn)之后是否出現(xiàn)像素數(shù)據(jù)損失的情況,將載體圖像經(jīng)過各種角度旋轉(zhuǎn),再進行Radon 校正,得到的攻擊效果(正常情況下內(nèi)切正方形的規(guī)模)如圖2所示.可見,含水印的載體圖像經(jīng)旋轉(zhuǎn)后其水印嵌入?yún)^(qū)域仍保持穩(wěn)定,并無任何像素損失,因此內(nèi)切正方形區(qū)域適合作為水印的嵌入?yún)^(qū)域.
圖2 校正后的旋轉(zhuǎn)穩(wěn)定區(qū)域Figure 2 Corrected rotational stable zone
Radon 變換是某個方向上圖像的線積分,對于可能受到的旋轉(zhuǎn)攻擊有同步性.二維圖像f(x,y)的Radon 變換即為圖像矩陣在特定角度射線方向上的投影,公式為
式中,γ為坐標原點到直線的距離,θ為直線與軸的夾角.函數(shù)δ為f(x,y)沿直線γ=cosθ+sinθ的積分,目的是獲得在任意(γ,θ)處f(x,y)沿著該直線的投影.變換示意圖見圖3.
圖像的校正步驟如下:
步驟1對載體圖像進行0?的Radon 變換得到R0,并將R0送到版權(quán)保護中心注冊保存,校正時只需與R0進行對比.
圖3 Radon 變換Figure 3 Radon transform
步驟2待檢測圖像進行0?~179?的Radon 變換,校正增量為1?,得到180 個檢測向量R(θ),θ ∈[0?,1?,···,179?].
步驟3按照式(6)計算R(θ)與R0的相關(guān)系數(shù),得到旋轉(zhuǎn)度數(shù)
步驟4對載體按照步驟3 計算的旋轉(zhuǎn)角度進行逆旋轉(zhuǎn),對顛倒的圖像內(nèi)容進行校正,得到校正后的含水印圖像.
如圖4所示,水印嵌入的基本步驟如下:
步驟1根據(jù)第1.3 節(jié)介紹的方法確定圖像中的旋轉(zhuǎn)穩(wěn)定區(qū)域T,大小為M×M,保存其左上角坐標和邊長.
步驟2對大小為M×M的旋轉(zhuǎn)穩(wěn)定區(qū)域T進行一層冗余離散小波變換(redundant discrete wavelet transform, RDWT),提取低頻分量LL.
步驟3將低頻分量LL 分為不重疊的8×8 的像素塊,每一個分塊的系數(shù)矩陣記為Hi.
步驟4對分塊Hi分別進行奇異值分解,即
式中,Ui為正交矩陣,Si為對角矩陣.
步驟5選取分塊Hi奇異值的第1 行第1 列數(shù)值Si(1,1),構(gòu)建特征矩陣O,在提取水印時只需要此矩陣信息即可實現(xiàn)盲提取.
步驟6對矩陣O進行二次SVD 變換,計算公式為O=UO×SO×VTO.
步驟7對水印W進行一級DWT 和SVD 分解,計算公式為W=UW ×SW ×VTW.
步驟8將水印圖像中的SW與縮放因子α相乘,添加到圖像二級奇異值,計算公式為=So+α×SW.
步驟9逆SVD 得到特征矩陣,計算公式為
步驟10的每個元素都帶有(1,1).因此,每個來自矩陣的元素將被替換為每個8×8 塊的S系數(shù)的第1 個元素,新SVD 矩陣為Si(1,1)(1,1).
步驟11對每個矩陣的新奇異值系數(shù)與其左右向量進行逆SVD 得到分塊信息,再將合成的分塊進行逆RDWT 變換,得到含水印圖像T?.
圖4 水印嵌入與提取流程Figure 4 Watermark embedding and extracting process
水印的提取是水印嵌入算法的逆過程,兩個過程基本相似.
步驟1將含水印的載體圖像T?進行Radon 旋轉(zhuǎn)校正,得到圖像
步驟2依據(jù)嵌入時保存的邊長和左上角坐標選定含水印灰度圖像的旋轉(zhuǎn)穩(wěn)定區(qū)域,其大小為M×M,對進行一層RDWT 變換,提取低頻分量LL.
步驟3對低頻分量LL 進行2.1 節(jié)中步驟3~6 的操作,得到奇異值矩陣
步驟4根據(jù)嵌入時保存的矩陣O,經(jīng)過SVD 分解得到奇異值矩陣S0,使用強度因子α計算出水印信息的奇異值
步驟5對水印信息的奇異值進行逆SVD 變換,得到含水印信息的圖像
本實驗的仿真搭建平臺是MATLAB 2016a,實驗中選取Lena、Baboon、Goldhil、Girl 為載體圖像,大小均為512×512 像素,選取的穩(wěn)定區(qū)域為256×256 像素,選取Camera 為水印圖像,大小為64×64 像素.圖5為4 幅測試圖像(a)、(b)、(c)、(d)和水印圖像(e).
采用峰值信噪比(peak signal to noise ratio, PSNR)來判斷含水印圖像與原始圖像之間的視覺相似性.水印不可見性、魯棒性不可兼得,故應(yīng)尋找最佳嵌入強度以取得兩者之間的絕佳平衡.調(diào)整嵌入強度α,測試4 幅圖像的不可見性,驗證嵌入強度與不可見性的關(guān)系.表2為不同強度下對應(yīng)水印圖像的PSNR 值.
圖5 原始宿主和水印圖像Figure 5 Original host and watermark image
表2 不同強度下的PSNR 值Table 2 PSNR values of different intensities
當α為3~4 時,PSNR 保持在45~46 范圍內(nèi),不可見性處于最佳狀態(tài);當α設(shè)置為5~9 時,隨著α的增大,PSNR 雖不斷變小,但仍保持在40 以上.本文選取α=4 的嵌入強度,不可見性最好,PSNR 值可達到46.圖6為嵌入水印后的圖像和不受任何攻擊下提取出的水印圖像.
圖6 水印嵌入和提取效果圖Figure 6 Results of watermarking embedding and extraction
對含水印的Lena 圖像進行不同類型的攻擊操作,并與文獻[14]、文獻[4]、文獻[16]進行比較,如表3所示.從表3可以看出,增大攻擊強度會影響一定水印清晰度,但仍能確切辨識出水印,其NC 值保持在0.950 以上.在縮放攻擊時,因為縮小圖像會導致部分像素丟失,而放大對圖像像素信息是無損的,所以放大攻擊后提取出的水印歸一化相關(guān)系數(shù)(normalized correlation, NC)值稍高于縮小攻擊.本文的NC 值比文獻[14]的要高,雖然中值濾波的NC 值略低,但差別不大.另外,文獻[4]和文獻[16]均采用一級奇異值分解,本文采用的是兩級奇異值分解,更好地保持了圖像的穩(wěn)定性特征,對常規(guī)幾何攻擊存在較強的魯棒性.
表3 常規(guī)攻擊NC 值對比Table 3 NC comparison of conventional attack
目前水印的旋轉(zhuǎn)攻擊抵抗性比較差,文獻[16]采用一級奇異值分解,且在水印提取之前沒有進行校正;文獻[11]把水印的S和V矩陣用作秘密密鑰,將水印的奇異向量嵌入主圖像的奇異值中;文獻[15]先使用SIFT 變換對載體圖像進行角度校正,然后進行水印提取.對含水印圖像Lena、Baboon、Goldhil、Girl 進行10?、30?、50?、70?、90?的旋轉(zhuǎn)攻擊,所提取的水印NC 值見表4.
表4 旋轉(zhuǎn)攻擊實驗及NC值對比測試結(jié)果Table 4 Rotational attack experiment and NC comparison test results
從表4可以看出,當含水印圖像旋轉(zhuǎn)一定角度時,提取的NC 值均在0.900 以上.當旋轉(zhuǎn)90?時,因為載體像素無任何損失,保持旋轉(zhuǎn)穩(wěn)定,所以提取的水印NC 值為1.000;對于30?、50?這兩種中等程度的旋轉(zhuǎn),提取的水印信息的可辨性仍很高.本文算法采用了旋轉(zhuǎn)穩(wěn)定區(qū)域嵌入水印,且使用Radon 變換進行旋轉(zhuǎn)角度的校正.在提取水印之前,先對含水印載體圖像進行校正,且無需提取和匹配旋轉(zhuǎn)前后圖像的特征點.將水印信息嵌入載體的奇異值矩陣中,而奇異值具有旋轉(zhuǎn)穩(wěn)定不變性,能夠有效抵抗旋轉(zhuǎn)攻擊.實驗表明,本文算法能夠有效抵抗旋轉(zhuǎn)攻擊.
為了平衡水印系統(tǒng)的不可見性和魯棒性,解決抗旋轉(zhuǎn)攻擊能力較弱的問題,提出一種基于旋轉(zhuǎn)穩(wěn)定區(qū)域和兩級奇異值分解的水印算法.將載體圖像進行兩級SVD 分解,使水印嵌入到第2 次SVD 分解后的奇異值矩陣中,對載體圖像的破壞最小,而且也保證了算法的不可見性.選取旋轉(zhuǎn)后像素值無損的穩(wěn)定區(qū)域進行水印嵌入,并對旋轉(zhuǎn)后的水印圖像進行Radon 校正,從而提高水印算法的抗旋轉(zhuǎn)攻擊能力.理論分析和實驗結(jié)果表明,在面對常規(guī)的幾何攻擊時,本文算法提取的水印NC值能達到0.90 以上,能保持較強的魯棒性,具有一定的實用價值.