用于圖像認(rèn)證的半脆弱水印算法研究
4.2.2水印嵌入的實(shí)現(xiàn)
由于JPEG壓縮的不變性,也就是說(shuō),如果一個(gè)DCT系數(shù)是經(jīng)過(guò)某個(gè)預(yù)先選定的量化步長(zhǎng)量化并取整得到的,只要后續(xù)的量化步長(zhǎng)小于選定值,則這個(gè)DCT系數(shù)可以被精確重建,換句話說(shuō),如果某幅圖像預(yù)先經(jīng)過(guò)某個(gè)選定的質(zhì)量因子的JPEG有損壓縮,那么這幅圖像可以對(duì)任何大于該選定質(zhì)量因子的后續(xù)JPEG壓縮保持不變,因?yàn)樵剂炕瘓D像所有DCT系數(shù)都可以精確重建,而如果后續(xù)JPEG壓縮的質(zhì)量因子小于選定值,原始量化圖像的DCT系數(shù)則無(wú)法恢復(fù)。這個(gè)需要預(yù)先選定的質(zhì)量因子一般可以設(shè)定為人眼最低可以接受的圖像質(zhì)量因子,也就是說(shuō),任何低于該質(zhì)量因子的圖像被視為不可接受的。JPEG標(biāo)準(zhǔn)推薦圖像的質(zhì)量因子在50一75之間均為視覺(jué)上可以接受的,因此我們可以選擇50作為預(yù)先設(shè)定的質(zhì)量因子,其對(duì)應(yīng)的量化表為DCT系數(shù)的量化步長(zhǎng)。
利用前面所述的JPEG壓縮的不變性,首先將原始圖像的8*8塊DCT系數(shù)塊按預(yù)定的質(zhì)量因子對(duì)應(yīng)的量化表進(jìn)行量化,通過(guò)對(duì)量化后的DCT系數(shù)進(jìn)行”微調(diào)”來(lái)嵌入水印信息比特,再進(jìn)行DCT反變換得到水印圖像。相同的過(guò)程提取出水印,并將其與原始水印信息匹配的百分比和設(shè)定的閾值比較,決定是否通過(guò)認(rèn)證。該算法能夠抵抗所有大于預(yù)定質(zhì)量因子的攻擊。
算法中水印信息的選擇是基于圖像內(nèi)容特征的。一種簡(jiǎn)單的基于圖像內(nèi)容的特征是每個(gè)分塊灰度值的均值的最重要位(MSB ,the Most Significant Bit),即最高位。水印的嵌人算法采用了一種無(wú)損數(shù)據(jù)隱藏方法環(huán)形直方圖算法(Circular His-togram Algorithm)。首先把待嵌人水印的圖像分成8*8塊,每塊64個(gè)像素通過(guò)密鑰被隨機(jī)地分為A和B兩組,在每一組中,灰度值直方圖映射為一個(gè)環(huán)形,環(huán)形的周長(zhǎng)為256個(gè)單位,等分為Q個(gè)區(qū)間,每個(gè)區(qū)間分的弧長(zhǎng)為256/O若一個(gè)像素灰度值落在某個(gè)區(qū)間之內(nèi),則這個(gè)區(qū)間的權(quán)重加1,這樣每一組共有犯?jìng)€(gè)權(quán)重加載在環(huán)上。計(jì)算每組環(huán)上的加權(quán)平均值,從統(tǒng)計(jì)學(xué)的角度分析,由于A, B兩組的像素都是隨機(jī)選擇的,因而A, B兩組的加權(quán)平均值應(yīng)非常接近或近似相等。為了在每一個(gè)8*8塊中嵌入1比特水印信息,將塊中像素的灰度值作如下修改:
若嵌人比特為”1 ” C`=C+P當(dāng)像素在A組中;
C`=C-P當(dāng)像素在B組中;
若嵌入比特為”0″ C`=C-P當(dāng)像素在A組中;
C`=C+P當(dāng)像素在B組中;
其中c為待嵌入水印圖像的像素灰度值,c為修改后,即嵌入水印后圖像的像素灰度值,P= 256/Q。若嵌入比特”1″,則A組中的所有像素灰度值增加P,對(duì)應(yīng)到環(huán)上即像素灰度值均順時(shí)針?lè)较蚱D(zhuǎn)了一個(gè)區(qū)間,每個(gè)像素在環(huán)上的位置均順時(shí)針轉(zhuǎn)了360/Q度。相應(yīng)的B組中的所有像素均逆時(shí)針?lè)较蚱D(zhuǎn)了相同的度數(shù)。這樣當(dāng)嵌入比特”10的時(shí)候,A組的加權(quán)平均值大于B組,且每個(gè)圖像塊灰度值的均值,即選定的圖像特征保持不變。嵌入”0″比特的情況同理可得。通過(guò)這種環(huán)形直方圖無(wú)損數(shù)據(jù)隱藏算法將由圖像內(nèi)容特征產(chǎn)生的水印信息嵌入了預(yù)壓縮后的圖像〔9〕。
4.2.3水印檢測(cè)的實(shí)現(xiàn)
將接收到的待驗(yàn)證的圖像先按預(yù)定質(zhì)量因子壓縮,恢復(fù)出預(yù)壓縮后的水印圖像;再依照環(huán)形直方圖算法提取水印:將圖像8*8分塊按選定的密鑰隨機(jī)分成A, B兩組,并映射到環(huán)上,計(jì)算A, B兩組對(duì)應(yīng)環(huán)的加權(quán)平均值。如果A組的加權(quán)平均值大于B組,則提取出比特”1″,反之則提取出比特”0″。圖像認(rèn)證過(guò)程將提取出的水印比特與對(duì)恢復(fù)出的預(yù)壓縮圖像再次計(jì)算得到的特征信息進(jìn)行比較匹配,若匹配的百分比大于設(shè)定的域值則圖像通過(guò)認(rèn)證,反之判斷為遭受過(guò)惡意篡改。由前面所說(shuō)的JPEG壓縮的不變性可知,該算法可以抵抗任何高于預(yù)定質(zhì)量因子的JPEG壓縮。并能根據(jù)認(rèn)證過(guò)程中不匹配的比特定位遭受篡改的位置,精度為8*8塊。由于嵌人的水印信息是基于圖像內(nèi)容特征的,每幅圖像嵌人的比特信息必定各不相同,因而可以有效地抵抗共謀攻擊〔10〕。
論文中用到的糾錯(cuò)編碼現(xiàn)在就可以發(fā)揮它的優(yōu)勢(shì)了。程序?qū)崿F(xiàn)到此,論文用糾錯(cuò)解碼的方法得到36*4的提取水印,把這個(gè)水印和之前植入的水印信息進(jìn)行比較,就可以作出是否被篡改的判斷了。
for i=1:36
s1(i)=x1(i,1)+x1(i,2)+x1(i,3)+x1(i,5);
s2(i)=x1(i,2)+x1(i,3)+x1(i,4)+x1(i,6);
s3(i)=x1(i,1)+x1(i,2)+x1(i,4)+x1(i,7);
s1(i)=mod(s1(i),2);
s2(i)=mod(s2(i),2);
s3(i)=mod(s3(i),2);
if (s1(i)==0s2(i)==0)(s3(i)==1)
x1(i,7)=~x1(i,7);
elseif (s1(i)==0s2(i)==1)(s3(i)==0)
x1(i,6)=~x1(i,6);
elseif (s1(i)==0s2(i)==1)(s3(i)==1)
x1(i,4)=~x1(i,4);
elseif (s1(i)==1s2(i)==0)(s3(i)==0)
x1(i,5)=~x1(i,5);
elseif (s1(i)==1s2(i)==0)(s3(i)==1)
x1(i,1)=~x1(i,1);
elseif (s1(i)==0s2(i)==1)(s3(i)==0)
x1(i,3)=~x1(i,3);
elseif (s1(i)==1s2(i)==1)(s3(i)==1)
x1(i,2)=~x1(i,2);
end;
end;
4.3 實(shí)驗(yàn)結(jié)果與分析
由算法寫的程序在Matlab6.5平臺(tái)上仿真,使用標(biāo)準(zhǔn)水印實(shí)驗(yàn)圖像cameraman(256*256)(如圖4.1)作為認(rèn)證圖像。由于Matlab的易用性,我只要用個(gè)簡(jiǎn)單的函數(shù)imread()就能讀取cameraman圖像為我用了。
圖4.1 Cameraman
Matlab功能強(qiáng)大的函數(shù)功能使我生成高斯正態(tài)序列也變得簡(jiǎn)單了。如下的程序能生成36*4的信息。
randn(’state’,1106);
g1=randn(36,4);
for i=1:36
for j=1:4
if g1(i,j)>=0
w0(i,j)=1;
else w0(i,j)=0;
end;
end;
end;
加入的高斯正態(tài)序列生成的圖片,也即要加入的水印圖像如圖4.2。
圖 4.2 水印圖像
這些屬于預(yù)處理的工作做好后,就可以實(shí)現(xiàn)嵌入了。嵌入水印是所有所有算法中最重要的部分,這部分寫的好壞能很大程度上影響算法的性能。應(yīng)用本算法嵌入水印后的圖像為4.3圖。
圖 4.3 嵌入水印后的圖像
使用語(yǔ)句imwrite(f,’attackf.jpg’,'jpg’,'quality’,30)即實(shí)現(xiàn)了30%JPEG壓縮。攻擊后的圖像為圖4.4。
圖 4.4 30%jpeg壓縮后的圖像
我們知道,在評(píng)價(jià)一個(gè)算法好壞的時(shí)候有兩中標(biāo)準(zhǔn),一種是主觀的一種是客觀的。首先在主觀上我們可以很直接的說(shuō),算法能抵抗壓縮因子為30%的JPEG壓縮。當(dāng)我們把壓縮因子提高到20%時(shí)的圖像如圖4.5。
這樣在主觀上我們就能看出來(lái)壓縮因子在20時(shí),算法就有一定的局限性了。對(duì)JPEG壓縮攻擊后的圖像進(jìn)行水印提取后與嵌入的水印進(jìn)行相關(guān)系數(shù)運(yùn)算結(jié)果是r11=corr2(w0,w11)=1;snr11=31.2909。對(duì)余下的九種攻擊,我們也給出圖像,并求其相關(guān)系數(shù)和信噪比。由于算法加入了糾錯(cuò)編碼,使得水印在遭受惡意篡改后所求出的相關(guān)系數(shù)是0,而在遭受了善意攻擊后的相關(guān)系數(shù)則是1。
所以得出結(jié)論如下:本算法能有效抵抗高斯低通濾波,直方圖均衡化,圖像增亮和變暗,對(duì)增加對(duì)比度,降低對(duì)比度,添加高斯噪聲增黑白像素點(diǎn),添加乘積性噪聲則性能下降。也就是說(shuō)本算法能很好的實(shí)現(xiàn)對(duì)圖像的認(rèn)證功能。但算法對(duì)篡改的定位不是很有效,只能在主觀上判斷篡改部分。
圖 4.5 20%jpeg壓縮后的圖像
snr=30.3054 r=1
以下依次給出論文所做的其它攻擊后的圖像,如圖4.6-4.14。
圖4.6高斯低通濾波后的圖像 圖4.7 直方圖均衡化后的圖像
snr=31.067 r=1 snr=31.126 r=1
圖4.8 圖像增亮處理后的 圖4.9 圖像變暗處理后的
snr= 30.596 r=1 snr=30489 r=1
圖4.10 增加對(duì)比度后的圖像 圖4.11 降低對(duì)比度后的圖像
snr=30.158 r=0 snr=31.268 r=0
圖4.12 添加高斯噪聲后的圖像 圖4.13 增加黑白點(diǎn)像素后的圖像
snr=31.564 r=0 snr=31.357 r=0
圖4.14添加乘積性噪聲后圖像
snr=31.874 r=0
第五章 總結(jié)與展望
5.1 本文所做的工作總結(jié)
本論文主要是研究了一個(gè)用于圖像認(rèn)證的水印算法,并對(duì)其有效性進(jìn)行了評(píng)價(jià)。下面就在本論文寫作過(guò)程中作的工作進(jìn)行一下總結(jié):
一. 針對(duì)現(xiàn)在數(shù)字媒體應(yīng)用的日益廣泛和盜版現(xiàn)狀的擔(dān)憂,提出了數(shù)字水印的概念。并進(jìn)一步闡述了數(shù)字水印的必要性和重要性。然后對(duì)于特殊應(yīng)用上,比如圖像認(rèn)證方面的要求,引出了半脆弱水印的概念。之后論文還詳細(xì)介紹了脆弱水印的發(fā)展歷程和研究現(xiàn)狀。
二. 論文具體解釋了數(shù)字水印的定義和半脆弱水印的技術(shù)要求,并詳細(xì)介紹了國(guó)內(nèi)外做半脆弱水印的方法,在此基礎(chǔ)上介紹了評(píng)價(jià)水印算法優(yōu)劣的幾個(gè)指標(biāo)。最后對(duì)本次畢業(yè)設(shè)計(jì)要用到的仿真平臺(tái)Matlab6.5進(jìn)行了簡(jiǎn)單的介紹。
三. 針對(duì)要實(shí)現(xiàn)對(duì)圖像進(jìn)行認(rèn)證這一目標(biāo),介紹了認(rèn)證算法的一般要求,然后就提出了一個(gè)可用于圖像認(rèn)證的半脆弱水印算法。介紹了算法的思路,并畫出了算法的方框圖。
四. 這部分詳細(xì)說(shuō)明了算法各個(gè)部分的實(shí)現(xiàn)過(guò)程。包括水印的預(yù)處理的實(shí)現(xiàn),水印嵌入的實(shí)現(xiàn)和水印檢測(cè)的實(shí)現(xiàn)。之后把仿真后的輸出結(jié)果直觀的貼在論文里,并給出了攻擊后圖像對(duì)于原圖像的信噪比和水印的相關(guān)系數(shù)。再加上我們的主觀評(píng)價(jià),得出了對(duì)算法的評(píng)價(jià)。
5.2 工作展望
數(shù)字水印技術(shù)的理論基礎(chǔ)依然非常薄弱,大多數(shù)水印算法還是經(jīng)驗(yàn)性的。主要有以下幾個(gè)方面還需努力:
〔1〕 從現(xiàn)實(shí)的角度看,水印系統(tǒng)必然要在算法的魯棒性、水印的嵌入信息量以及不可覺(jué)察性之間達(dá)到一個(gè)平衡,這涉及魯棒性算法的原理性設(shè)計(jì)、水印的構(gòu)造模型、水印能量和容量的理論估計(jì)、水印嵌入算法和檢測(cè)算法的理論研究等方面。如何確定平衡點(diǎn)仍是一個(gè)難題,目前大多數(shù)水印算法均利用經(jīng)驗(yàn)而不是從理論上解決此問(wèn)題;
〔2〕如何將水印技術(shù)與現(xiàn)行國(guó)際圖像及視頻壓縮標(biāo)準(zhǔn),如JPEG2000和MPEG-4(Moving Picture Experts Group-4,運(yùn)動(dòng)圖像專家組)相結(jié)合,以及如何將水印技術(shù)應(yīng)用于DVD工業(yè)標(biāo)準(zhǔn)中;
〔3〕 所有權(quán)的證明問(wèn)題還沒(méi)有完全解決,就目前已經(jīng)出現(xiàn)的很多算法而言,攻擊者完全可以破壞掉圖像中的水印,或復(fù)制出一個(gè)理論上存在的”原始圖像”,這導(dǎo)致文件所有者不能令人信服地提供版權(quán)歸屬的有效證據(jù)。因此一個(gè)好的水印算法應(yīng)該能夠提供完全沒(méi)有爭(zhēng)議的版權(quán)證明,在這方面還需要做很多工作。目前將水印作為版權(quán)保護(hù)的法律證據(jù)還不可能;
〔4〕聲頻和視頻水印的解決方案還不完善,大多數(shù)的視頻水印算法實(shí)際上是將其圖像水印的結(jié)果直接應(yīng)用與視頻領(lǐng)域中,而沒(méi)有考慮視頻應(yīng)用中大數(shù)據(jù)量以及近乎實(shí)時(shí)的特性。從今后的發(fā)展上看,水印在包括DVD等數(shù)字產(chǎn)品在內(nèi)的視頻和音頻領(lǐng)域?qū)⒂袠O為廣闊的應(yīng)用前景。因此如何設(shè)計(jì)成熟的、合乎國(guó)際規(guī)范的水印算法仍然懸而未決;
〔5〕現(xiàn)有水印算法中在原理上有許多雷同之處,但目前國(guó)內(nèi)外的工作尚未能對(duì)這些有內(nèi)在聯(lián)系的不同算法中的共性問(wèn)題進(jìn)行高度提煉和深入的理論研究,因而缺乏對(duì)數(shù)字水印作進(jìn)一步研究具有指導(dǎo)意義的理論結(jié)果。
從目前看大多數(shù)水印算法本質(zhì)上都沒(méi)什么差別,且在嵌入過(guò)程中均是對(duì)PN(Pseudo Noise Sequence,偽隨機(jī)序列)序列進(jìn)行調(diào)制并結(jié)合掩蔽特性,在檢測(cè)過(guò)程中使用基于相關(guān)法的假設(shè)檢驗(yàn)。水印算法的設(shè)計(jì)不僅要考慮一般性的由標(biāo)準(zhǔn)數(shù)據(jù)處理過(guò)程導(dǎo)致的魯棒性問(wèn)題,而且要考慮由于惡意攻擊而導(dǎo)致的魯棒性問(wèn)題。前面已經(jīng)提到了幾種普遍的攻擊類型,針對(duì)性的水印策略和方法也在研究中。一句話,水印應(yīng)該有足夠的冗余設(shè)計(jì)以保證能夠抵抗各種攻擊行為。在版權(quán)保護(hù)方面,還需要考慮一些額外的方面。一個(gè)問(wèn)題是如果有很多水印被嵌入到圖像中,如何證明那個(gè)最先被嵌入的。此問(wèn)題的解決也許需要數(shù)字時(shí)間標(biāo)識(shí)或水印等級(jí)等方法。而且現(xiàn)在已經(jīng)可以看出,一個(gè)水印算法僅僅有足夠的魯棒性不足以保證解決有效版權(quán)問(wèn)題,即使能夠得到原始數(shù)據(jù)。更進(jìn)一步的講,水印算法應(yīng)該是非對(duì)稱的、單向的、不可逆的。
雖然已經(jīng)有商業(yè)化的水印系統(tǒng),但對(duì)水印的研究還遠(yuǎn)未成熟,許多問(wèn)題如魯棒性、真?zhèn)舞b別、版權(quán)證明、網(wǎng)絡(luò)快速自動(dòng)驗(yàn)證等方面仍然還需要比較完美的解決方案〔11-14〕。
評(píng)論