一、背景意義
數(shù)字水印技術(shù)作為信息隱藏技術(shù)的一個(gè)重要分支,是將信息(水印)隱藏于數(shù)字圖像、視頻、音頻及文本文檔等數(shù)字媒體中,從而實(shí)現(xiàn)隱秘傳輸、存儲(chǔ)、標(biāo)注、身份識(shí)別、版權(quán)保護(hù)和防篡改等目的。
隨著 1996 年第一屆信息隱藏國際學(xué)術(shù)研討會(huì)的召開,數(shù)字水印技術(shù)的研究得到了迅速的發(fā)展,不少政府機(jī)構(gòu)和研究部門加大了對(duì)其的研究力度,其中包括美國財(cái)政部、美國版權(quán)工作組、美國洛斯阿莫斯國家實(shí)驗(yàn)室、美國海陸空軍研究實(shí)驗(yàn)室、歐洲電信聯(lián)盟、德國國家信息技木研究中心、日本 NTT 信息與通信系研究中心、麻省理工學(xué)院、南加利福尼亞大學(xué)、普渡大學(xué)、劍橋大學(xué)、瑞士洛柔聯(lián)邦工學(xué)院、微軟公司、CA 公司等研究機(jī)構(gòu)。另外,在 TEEE 和 SPIE 等一些重要國際會(huì)議上,也專門開辟了與數(shù)字水印相關(guān)的專題。歐洲幾項(xiàng)較大的工程項(xiàng)目(如 VIVA 和ACTS)中也均有關(guān)于圖像水印方面的專題研究。我國在這一領(lǐng)域的研究也基本與歐美等科技強(qiáng)國保持同步,目前國內(nèi)已經(jīng)有不少科研機(jī)構(gòu)投人到數(shù)字水印方面的研究中去。1999年底,第一屆全國信息隱藏學(xué)術(shù)研討會(huì)(CIHW)在北京電子技術(shù)應(yīng)用研究所召開。國家“863 計(jì)劃”“973項(xiàng)目”(國家重點(diǎn)基礎(chǔ)研究發(fā)展規(guī)劃)、國家自然科學(xué)基金等也都對(duì)圖像水印的研究有項(xiàng)目資金支持。
二、基本原理
圖像數(shù)字水印技術(shù)以一定的算法將一些標(biāo)志性信息嵌人到圖像中,而不影響原圖像的面質(zhì)和使用。水印信息可以是序列號(hào)或有特殊意義的文本等,通過和載體圖像的緊密結(jié)合而達(dá)到識(shí)別圖像來源、作者等版權(quán)信息的目的。與傳統(tǒng)加密技術(shù)不同,圖像水印技術(shù)的目的并不在于直接阻止對(duì)圖像的盜版,而是著眼于如何將版權(quán)信息加入到正版圖像,并能夠從盜版圖像中提取出先期加人的版權(quán)方面的證據(jù)(水印),在能夠證明圖像確系盜版之后再以法律的手段對(duì)盜版者實(shí)施制裁。
圖像數(shù)字水印處理可分為對(duì)水印的嵌人處理和對(duì)已嵌人的水印的檢測處理兩部分。從圖像處理的角度看,嵌人水印可以看作是在強(qiáng)背景(原始圖像)下疊加一個(gè)弱信號(hào)(水?。?,由于人的視覺系統(tǒng)對(duì)圖像的分辨率有限,因此只要疊加的信號(hào)在幅度上低于某個(gè)對(duì)比度門限,就可以使人眼完全感受不到疊加信號(hào)的存在,這個(gè)對(duì)比度門限主要受系統(tǒng)的空間、時(shí)間和頻率特征的影響。因此,在不改變視覺效果的前提下,對(duì)原始圖像做一定的調(diào)整,嵌入一些額外信息是完全有可能的。
由于圖像數(shù)字水印的目的不在于限制其正常的圖像復(fù)制,而在于保證隱藏其內(nèi)的水印不被侵犯和發(fā)現(xiàn)。因此,在向圖像嵌人水印時(shí)。必領(lǐng)考慮到正常的信息操作對(duì)水印所造成的威脅,以及要求水印能夠?qū)νǔ5膱D像編輯操作具有一定的抵御、免疫能力。根據(jù)圖像水印的目的和技術(shù)要求,可以總結(jié)出圖像水印的一些特點(diǎn)。
①魯棒性 (robustness):圖像一旦嵌人了水印后,圖像與水印將緊密地融合在一起,而且不因因像的某種處理而導(dǎo)致隱含的水印信息丟失。這里所謂的“處理”,包括了噪聲干擾、濾波、平滑、增強(qiáng)、重采樣、有損編碼壓縮、D/A 或 A/D轉(zhuǎn)換等各種常規(guī)的圖像處理手段。圖像水印除了能對(duì)無意識(shí)的圖像處理操作具有抵御能力外,還應(yīng)具各抵?jǐn)_惡意刪除攻擊、逃惑攻擊等有意識(shí)政擊的能力,除非攻擊方對(duì)加人的水印有足夠的先驗(yàn)知識(shí),否則任何破壞和去除水印的企圖都將嚴(yán)重?fù)p壞因像的面質(zhì),使破解后的圖像毫無利用價(jià)值。
②不可檢測性(undetectability):水印和圖像應(yīng)具有一致的特性,如統(tǒng)計(jì)噪聲分布等,這樣可以使非法攻擊者無從確認(rèn)該圖像是否含有水印信息。
③透明性 (invisibility):此特性主要應(yīng)用了人眼的生理特點(diǎn),經(jīng)過隱藏處理的圖像水印不會(huì)對(duì)原始圖像有視覺可察的畫質(zhì)降低現(xiàn)象。
④低復(fù)雜性:水印的嵌人和提取識(shí)別算法應(yīng)簡單易行。
⑤自恢復(fù)性:嵌入了水印的圖像在經(jīng)過一系列的處理和變換后,可能對(duì)原圖產(chǎn)生了較大的破壞,這就要求從留下的片段中仍可提取出水印(或水印殘片),并根據(jù)檢驗(yàn)出的結(jié)果確認(rèn)出水印的存在。
三、算法介紹
3.1 數(shù)字水印嵌入
以一副512X512大小的lena灰度圖像和64X64大小的水印灰度圖像為例說明水印嵌入的具體步驟:
第一步,對(duì)512X512的原始圖像I系數(shù)矩陣分成8X8大小的塊,則原圖一共被分成64X64塊。對(duì)每個(gè)塊進(jìn)行二維離散余弦變換(DCT)。
第二步,原圖就變成了64X64個(gè)8X8大小的系數(shù)矩陣,正好64X64大小的水印圖像J中矩陣的每個(gè)系數(shù)對(duì)應(yīng)于原始圖像的每個(gè)塊,水印的嵌人利用公式:F’ (u,v)=F(u,v)+aw(i) ,其中F(u,v)為原始圖像的DCT系數(shù),a為嵌入強(qiáng)度,w(i)(i=1,2,3,…)是每點(diǎn)的水印像素。
第三步,對(duì)這64X64塊嵌入水印信息的矩陣做二維DCT逆變換,再合并成一個(gè)整圖,就得到了嵌入水印后的圖像。
代碼如下:
%讀入原始圖像和水印圖像并顯示
I=imread('lena512.jpg');
figure(1);
subplot(2,2,1);
imshow(I);
title('原始圖像');
J=imread('xiaohui64.jpg');
subplot(2,2,2);
imshow(J);
title('水印圖像');
%對(duì)水印圖像進(jìn)行arnold置亂預(yù)處理
H=double(J);
tempImg=H; %圖像矩陣賦給tempImg
for n=1:5 %置亂次數(shù)
for u=1:64
for v=1:64
temp=tempImg(u,v);
ax=mod((u-1)+(v-1),64)+1;%新像素行位置
ay=mod((u-1)+2*(v-1),64)+1;%新像素列位置
outImg(ax,ay)=temp;
end
end
tempImg=outImg;
end
G=uint8(outImg);%得到置亂后的水印圖像
%嵌入水印
for p=1:64
for q=1:64 %p、q都是1到64,是因?yàn)橛?4*64個(gè)8*8的塊,每次循環(huán)處理一個(gè)塊
BLOCK1=I(((p-1)*8+1):p*8,((q-1)*8+1):q*8);%每個(gè)8*8的塊
BLOCK1=dct2(BLOCK1);%做2維的DCT變換
BLOCK1(4,5)=BLOCK1(4,5)+0.2*G(p,q);%在每塊DCT系數(shù)的4行5列處嵌入水印,系數(shù)可調(diào)
W(((p-1)*8+1):p*8,((q-1)*8+1):q*8)=idct2(BLOCK1);%做DCT反變換
end
end
%顯示嵌入水印后的圖像
imwrite(uint8(W), 'lena_mark.jpg ', 'jpg');
subplot(2,2,3);
imshow('lena_mark.jpg');
title('嵌入水印后的圖像');
上圖中0.2為可調(diào)參數(shù)嵌入強(qiáng)度系數(shù),可以發(fā)現(xiàn),隨著嵌入強(qiáng)度的增大,嵌入水印后的圖像效果越來越差。
3.2 數(shù)字水印提取
水印的提取是根據(jù)水印的嵌入策略執(zhí)行相應(yīng)的逆過程來提取水印。因此,在水印提取過程中,只須將嵌人水印后的圖像塊經(jīng)DCT變換后的系數(shù)減去相應(yīng)強(qiáng)度的水印信息就可以提取出嵌人該塊的水印信息,再對(duì)所有塊提取出來的水印信息進(jìn)行反置亂就得到提取出來的水印圖像。
水印提取的具體步驟如下:
第一步,讀入嵌入水印后的圖像W和原始水印圖像I。
第二步,分別對(duì)W和I進(jìn)行分塊DCT變換,得到每個(gè)塊的系數(shù)矩陣。
第三步,對(duì)每個(gè)8X8塊的中頻系數(shù)位置上,利用公式
w
(
i
)
=
F
′
(
u
,
v
)
?
F
(
u
,
v
)
a
w(i) = \frac{F^{'}(u,v)-F(u,v)}{a}
w(i)=aF′(u,v)?F(u,v)?計(jì)算出每一塊的水印信息,合并成一個(gè)整圖,就得到了提取出來的水印圖像。
代碼如下:
for p=1:64
for q=1:64
BLOCK1=W(((p-1)*8+1):p*8,((q-1)*8+1):q*8);
BLOCK2=I(((p-1)*8+1):p*8,((q-1)*8+1):q*8);
BLOCK1=dct2(BLOCK1);
BLOCK2=dct2(BLOCK2);
Y(p,q)=(BLOCK1(4,5)-BLOCK2(4,5))/0.2;
end
end
% 對(duì)水印進(jìn)行arnold反置亂
for n=1:43 % 循環(huán)次數(shù)為48-5
for u=1:64
for v=1:64
temp1=Y(u,v);
bx=mod((u-1)+(v-1),64)+1;
by=mod((u-1)+2*(v-1),64)+1;
outImg1(bx,by)=temp1;
end
end
Y=outImg1;
end
%顯示提取出來的水印圖像
imwrite(uint8(Y), 'watermark.jpg ', 'jpg');
subplot(2,2,4);
imshow('watermark.jpg');
title('提取出來的水印圖像');
四、程序?qū)崿F(xiàn)
程序運(yùn)行結(jié)果如下:文章來源:http://www.zghlxwxcb.cn/news/detail-499573.html
ok,以上便是全部內(nèi)容了,如果對(duì)你有所幫助,記得點(diǎn)個(gè)贊喲~文章來源地址http://www.zghlxwxcb.cn/news/detail-499573.html
到了這里,關(guān)于【MATLAB圖像處理實(shí)用案例詳解(8)】—— 圖像數(shù)字水印算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!