劉艷華
(鹽城工學院信息工程學院,江蘇 鹽城 224051)
隨著Internet的普及,圖像在數(shù)字媒體或互聯(lián)網(wǎng)上散布時,可被無誤差的重復復制,圖像所有者的權利有可能受到侵害,信息的安全保護問題日益突出。有效地防止數(shù)據(jù)的非法復制的方法之一就是把水印的信息插入到潛在的易受攻擊的圖像中,水印不能從圖像本身分離出來。數(shù)字水印的概念還可以擴展到電視圖像和聲音等領域,數(shù)字水印技術作為版權保護的重要手段而得到了廣泛的研究和應用。
數(shù)字水印(Digital Watermarking)技術是將一些標識信息(即數(shù)字水印)直接嵌入數(shù)字載體(包括多媒體、文檔、軟件等)當中,但不影響原載體的使用價值,也不容易被人的知覺系統(tǒng)(如視覺或聽覺系統(tǒng))覺察或注意到。通過這些隱藏在載體中的信息,可以達到確認內(nèi)容創(chuàng)建者、購買者、傳送隱秘信息或者判斷載體是否被篡改等目的。數(shù)字水印是信息隱藏技術的一個重要研究方向。簡單的可見水印處理在空間域執(zhí)行。不可見水印是裸眼看不見的,需要使用一個合適的解碼算法進行恢復。水印處理的目的是在圖像上添加數(shù)據(jù)信息,水印本身可以是可見的或不可見的。
本文介紹的數(shù)字圖像水印處理,是把二值數(shù)據(jù)插入到一副圖像中以對圖像構成保護。由于MATLABm語言是一種非常簡單高效、功能極強的編程語言,許多復雜的問題在MATLAB中很容易實現(xiàn)。本文基于頻域的DCT(離散余弦變換)數(shù)字水印算法過程,詳細介紹用MATLAB實現(xiàn)數(shù)字水印的嵌入和提取的方法。
從信號處理的角度看,在載體圖像中嵌入數(shù)字水印可以視為在強背景(即原始圖像)下疊加一個視覺上看不到的弱信號(水印),由于人的視覺系統(tǒng)(Human Visual System,HVS)分辨率受到一定的限制,只要疊加信號的幅度低于HVS的對比度門限,HVS就無法感覺到信號的存在,因此,通過對載體對象作一定的調整,就有可能在不引起人感知的情況下嵌入一些信息。
圖1中的編碼器把水印wi嵌入到圖像fi中,產(chǎn)生加過水印的圖像fwi。

圖1 水印處理系統(tǒng)的編碼器
水印嵌入準則分為加法準則和乘法準則,如式(1)和(2)所示:


α為強度因子,保證在水印不可見的前提下,盡可能提高嵌入水印的強度。α的選擇必須要考慮圖像的性質和系統(tǒng)的視覺特性。
圖2中解碼器提取和驗證加過水印的輸入fwi或沒有加過水印的輸入fi中水印wi的存在性。如果水印可見,不需要解碼器,如果水印不可見,解碼器可能需要也可能不需要fi和wi的拷貝去做提取和驗證工作。但將水印技術用于圖像的網(wǎng)絡發(fā)布和傳播時,如果檢測時需要使用原始圖像則是個缺陷,因此,當前大多數(shù)的水印檢測算法不需要原始圖像的參與。

圖2 水印處理系統(tǒng)的解碼器
水印信息選擇二值化的灰度圖像,嵌入系數(shù)根據(jù)水印圖像的二值性進行選擇,首先將原始圖像分成8×8的子塊,然后將數(shù)字水印的灰度值直接植入到原始二值灰度圖像DCT變換域中,實現(xiàn)水印的嵌入。具體方法如下:
設X是M*N大小的原始圖像,W是水印圖像,大小為P*Q,M和N分別是P和Q的偶數(shù)倍。把水印W加載到圖像X中,算法分以下幾步進行:
(1)將 X 分解為(M/8)*(N/8)個 8*8 大小的方塊 BX(m,n),同時,將 W 也分解為(M/8)*(N/8)個(8·P/M)*(8·Q/N)大小的方塊 BW(m,n),1≤m≤M/8,1≤n≤N/8。
(2)對每一個 BX(m,n)進行 DCT 變換:DBX′(m,n)=DCT(BX(m,n))。
(3)對每一個 DBX′(m,n)和 BW(m,n),si為從 DBX′(m,n)的中頻選出的加載的位置,1≤i≤(8·P/M)*(8·Q/N),ti為水印 BW(m,n)的位置坐標 1≤i≤(8·P/M)*(8·Q/N)。 DBX″(m,n)(si)=α*BW(m,n)(ti),其中 α 是加權系數(shù),用DBX″(m,n)(si)來代替DBX′(m,n)(si)得到加載水印后的圖像。
(4)對以上得到的每一個DBX″(m,n)進行逆DCT變換:IDBX(m,n)=IDCT(DBX″(m,n))。并將各方塊IDBX(m,n)合并為一個整圖X′,即加載了水印的新圖像。
設圖像X′為已經(jīng)加載了水印的載體圖像。現(xiàn)要將所加載的水印從X′中提取出來。其過程為上述加載水印算法的逆運算:
(1)將 X′分為(M/8)*(N/8)個 8×8 大小的方塊 BX′(m,n),1≤m≤ M/8,1≤n≤N/8。 (2)對每一個 BX′(m,n)進行二維 DCT 反變換:BX(m,n)=iDCT(BX′(m,n))。
(3)對每一個 BX(m,n),按照式 BW(m,n)(ti)=1/α*BX(m,n)(si)得到BW(m,n)。將上面得到的所有BW(m,n)合并成一個整圖W 。
下面以256*256的灰度圖像作為原始圖像,以32*32的二值圖像作為水印圖像,來實現(xiàn)水印的嵌入與提取。
運行得到結果如圖3。

圖3 水印的嵌入提取結果
增加強度因子為0.08,結果如圖4,水印已經(jīng)顯現(xiàn)出來。

圖4 增加強度因子后嵌入和提取結果
從仿真結果可以看出,嵌入水印信息后,強度因子選取合適值,原圖與嵌入水印信息后的圖像在視覺效果上沒有明顯分別,用肉眼幾乎分辨不出,所以強度因子的選取要充分利用利用人眼的視覺特性。利用DCT域嵌入水印后,圖像在嵌入水印前后可以做到視覺效果改變不大,不影響圖像的正常使用。
[1]阮秋琦,阮宇智.數(shù)字圖像處理(第三版)[M].電子工業(yè)出版社,2013:394-396.
[2]武紅玉.基于DCT的數(shù)字水印的嵌入和提取[J].許昌學院學報,2012(05).
[3]徐先傳,張琦.一種基于DCT域的數(shù)字水印方案研究[J].微計算機信息,2007(12).
[4]高玉娜,楊忠根.基于DCT域的數(shù)字水印算法[J].電腦知識與技術,2009(04).
[5]張莉華,陳萍.信息安全中的數(shù)字水印算法研究[J].計算機仿真,2011(10).