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