李美燕,孫孟卓,李 德
(延邊大學(xué)工學(xué)院 吉林 延吉 133002)
隨著科技和技術(shù)的發(fā)展數(shù)字水印的應(yīng)用領(lǐng)域一直擴(kuò)大,數(shù)字水印技術(shù)是保護(hù)信息安全、實(shí)現(xiàn)版權(quán)保護(hù)和解決版權(quán)糾紛等問題的有效方法[1]。目前已經(jīng)有很多種數(shù)字水印方法被研究和應(yīng)用,試圖在空間域、變換域和壓縮域等域?qū)颖M可能做數(shù)字水印方法的擴(kuò)展,嘗試更多的可能性[2-3]。本文利用數(shù)字水印技術(shù)中的典型patchwork方法和時頻域的改進(jìn)算法探究了patchwork方法的魯棒性。
基于patchwork方法進(jìn)行水印的嵌入,具體流程為:(1)讀入載體圖像,得到uint8類型圖像文件參數(shù),將參數(shù)賦給另一個參數(shù),現(xiàn)在就有兩個相同的圖像信息參數(shù)備用。(2)將其中一個參數(shù)改為雙精度浮點(diǎn)類型備用,并通過參數(shù)獲取矩陣的行數(shù)和列數(shù)。(3)通過循環(huán)運(yùn)算,將像素點(diǎn)行列數(shù)相加之和能被2整除的像素點(diǎn)的像素值增加c,將像素點(diǎn)行列數(shù)相加之和不能被2整除的像素點(diǎn)的像素值減少c。每個挨著的像素點(diǎn)的所經(jīng)歷的像素值加減操作都不一樣[4]。(4)將這個參數(shù)的圖像數(shù)據(jù)寫到圖像文件里,得到嵌入了patchwork數(shù)字水印的圖像,見圖1。
圖1 patchwork方法嵌入水印示意圖
基于patchwork方法進(jìn)行水印的提取,具體流程為:(1)讀入載體圖像,將圖像信息參數(shù)轉(zhuǎn)換為double類型為運(yùn)算備用,并獲取矩陣的行數(shù)和列數(shù),并設(shè)定閾值。(2)將像素點(diǎn)行列數(shù)相加之和能被2整除的像素點(diǎn)(a類)的像素值做累和運(yùn)算,將像素點(diǎn)行列數(shù)相加之和不能被2整除的像素點(diǎn)的(b類)像素值做累和運(yùn)算。(3)求出a類像素點(diǎn)的像素值的均值和b類像素點(diǎn)的像素值的均值。(4)判定水印的存在與否:如果兩類像素點(diǎn)的像素值均值之差大于閾值,則認(rèn)定為是有水印的,否則認(rèn)定為是沒有水印的,見圖2。
圖2 patchwork方法提取水印示意圖
(1)讀入載體文件,將圖像信息參數(shù)轉(zhuǎn)換為雙精度類型為運(yùn)算備用。
(2)產(chǎn)生一個8×8的DCT變換矩陣,進(jìn)行離散余弦變換。
(3)得到重構(gòu)后的圖像。再用典型patchwork方法進(jìn)行水印的嵌入[5-6]。
本實(shí)驗(yàn)在MATLAB R2019a環(huán)境下對原始測試圖片用典型patchwork方法添加數(shù)字水印,并在添加數(shù)字水印之后,進(jìn)行各種攻擊環(huán)境下的水印盲檢測。再用離散余弦變換對原始測試圖片做頻域變換處理,用patchwork方法嵌入數(shù)字水印,進(jìn)行各種攻擊環(huán)境下的水印盲檢測。最后對patchwork算法和patchwork改進(jìn)算法經(jīng)過各種攻擊的圖像與原圖像進(jìn)行余弦相似度的測試。對每個攻擊測試進(jìn)行分析,再對比兩組實(shí)驗(yàn)的數(shù)據(jù)做進(jìn)一步分析檢測算法的魯棒性。
2.2.1 典型patchwork方法
對添加了patchwork方法的數(shù)字水印的圖像加入了8種攻擊,實(shí)驗(yàn)結(jié)果如表1所示。(為了保持圖像整齊良好的視覺效果,有的被改動過寬高)
表1 典型patchwork方法攻擊環(huán)境下的水印盲檢測
下面是對每一次實(shí)驗(yàn)操作的解釋和總結(jié):
(1)高斯噪聲:參數(shù)設(shè)置到約0.049以上的時候,不能檢測出水印。
(2)椒鹽噪聲:參數(shù)設(shè)置到約0.061 5以上的時候,不能檢測出水印。
(3)乘性噪聲:參數(shù)設(shè)置到約0.085以上的時候,不能檢測出水印。
(4)泊松噪聲:patchwork方法下的數(shù)字水印能夠抵抗泊松噪聲。
(5)剪切:只要是能得出結(jié)果的經(jīng)過剪切的圖片都能檢測到水印的存在,patchwork方法對剪切攻擊有著非常強(qiáng)的魯棒性。
(6)旋轉(zhuǎn):patchwork方法下的數(shù)字水印不能抵抗旋轉(zhuǎn)攻擊。
(7)腐蝕:patchwork方法下的數(shù)字水印不能抵抗腐蝕攻擊。只有當(dāng)se = strel('disk',0);時才會顯示有水印,而做了一組對照實(shí)驗(yàn),根據(jù)實(shí)驗(yàn)結(jié)果顯示此時它的數(shù)據(jù)與只加了水印但是沒有經(jīng)歷任何攻擊的實(shí)驗(yàn)結(jié)果完全相同,說明當(dāng)參數(shù)為0時,并沒有對圖片進(jìn)行腐蝕。所以該方法無法承受腐蝕攻擊。
(8)膨脹:只對膨脹強(qiáng)度是se = strel('ball',2,1);的時候可以檢測出水印。對于se = strel('ball',a,b);當(dāng)se = strel('ball',2,1);時能夠檢測出水印,當(dāng)a=2,b=2和a=2,b=3和a=2,b=4時,通過對比數(shù)據(jù),與a=2,b=1的實(shí)驗(yàn)結(jié)果的各項(xiàng)數(shù)據(jù)是完全相同的,皆能檢測出水印。推論:當(dāng)b>=a時,實(shí)驗(yàn)結(jié)果與se = strel('ball',a,a-1);完全相同。a->半徑,b->高度,不可以類比成畫圖是x和y,這個ball它只能做成橢圓形而且當(dāng)高度大于等于半徑時,結(jié)果是無效且等于高度=半徑-1時的實(shí)驗(yàn)結(jié)果,且參數(shù)只能是整型的。
另外,用patchwork方法在各種攻擊下進(jìn)行圖像與原始圖像的余弦相似度測試,結(jié)果如表2所示。
表2 典型patchwork經(jīng)攻擊后圖像與原始圖像的余弦相似度
2.2.2 時域結(jié)合算法與檢測結(jié)果
對時域結(jié)合算法添加數(shù)字水印的圖像進(jìn)行了與上個實(shí)驗(yàn)相同的8種攻擊,實(shí)驗(yàn)結(jié)果為:
(1)高斯噪聲:參數(shù)設(shè)置到約0.053以上的時候,不能檢測出水印,比典型patchwork方法對抗高斯噪聲的能力較有提升。
(2)椒鹽噪聲:參數(shù)設(shè)置到約0.062以上的時候,不能檢測出水印,比典型patchwork方法對抗椒鹽噪聲的能力較有提升。
(3)乘性噪聲:參數(shù)設(shè)置到約0.089以上的時候,不能檢測出水印,比典型patchwork方法對抗乘性噪聲的能力較有提升。
(4)泊松噪聲:時域結(jié)合算法添加數(shù)字水印的圖像也能夠抵抗泊松噪聲。
(5)剪切:時域結(jié)合算法添加數(shù)字水印的圖像對剪切的攻擊也同樣有著非常強(qiáng)的魯棒性。
(6)旋轉(zhuǎn):時域結(jié)合算法添加數(shù)字水印的圖像也不能抵抗旋轉(zhuǎn)攻擊。
(7)腐蝕:時域結(jié)合算法添加數(shù)字水印的圖像不能抵抗腐蝕攻擊。
(8)膨脹:只對膨脹強(qiáng)度是se = strel('ball',2,1);的時候可以檢測出水印。
另外,用時頻域變換在各種攻擊下進(jìn)行圖像與原始圖像的余弦相似度測試,結(jié)果如表3所示。
表3 時頻域變換經(jīng)攻擊后水印圖像與原始圖像的余弦相似度
通過上述實(shí)驗(yàn)結(jié)果分析可知,patchwork方法的數(shù)字水印對于高斯噪聲、椒鹽噪聲、乘性噪聲、泊松噪聲和膨脹攻擊都有不錯的魯棒性和抵抗能力,patchwork方法對于剪切攻擊也有著非常好的抵抗能力,但是不能抵抗旋轉(zhuǎn)攻擊和腐蝕攻擊?;跁r頻域改進(jìn)算法的數(shù)字水印,其抵抗高斯噪聲、椒鹽噪聲和乘性噪聲的能力,通過明顯的數(shù)據(jù)對比,較只通過patchwork方法加上水印的有著更好的抵抗能力,對泊松噪聲和膨脹攻擊也都有一定的魯棒性和抵抗能力,增強(qiáng)了魯棒性,但也不能抵抗旋轉(zhuǎn)攻擊和腐蝕攻擊。通過兩組水印實(shí)驗(yàn)結(jié)果的余弦相似度的對比可以看出,在高斯噪聲、椒鹽噪聲、乘性噪聲、泊松噪聲和剪切攻擊下可以檢測出水印,但時頻域結(jié)合算法圖像比原始圖像的余弦相似度更低,進(jìn)一步提高了典型patchwork方法的魯棒性。
本文通過patchwork算法為數(shù)字圖像添加水印,提取水印,利用攻擊環(huán)境下的水印盲檢測探究該算法的魯棒性,并對典型的patchwork算法進(jìn)行基于時頻域的改進(jìn)算法,探究改進(jìn)算法的魯棒性。通過實(shí)驗(yàn)證明,典型patchwork算法有較強(qiáng)的魯棒性,基于時頻域的改進(jìn)算法進(jìn)一步增強(qiáng)了典型patchwork算法的魯棒性。