




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章緒論第二章數字水印基本原理2.1概述對數字水印(DigitalWatermarking)技術來說,載體對象通常是數字產品,是版權保護對象,而所嵌入的信息則是與該產品相關的版權標志、購買者或者其他相關信息。其是將一些標識信息(即數字水印)直接嵌入數字載體當中(包括多媒體、文檔、軟件等)或是間接表示(修改特定區域的結構),不影響原載體的使用價值,也不容易被探知和再次修改,但可以被生產方識別和辨認。通過這些隱藏在載體中的信息,可以達到確認內容創建者、購買者、傳送隱秘信息或者判斷載體是否被篡改等目的。2.2數字水印的特點作為數字水印技術基本上具有下面幾個方面的特點:1、安全性:表現為水印能夠抵抗惡意攻擊的能力。數字水印的信息應是安全的,難以篡改或偽造,同時,應當有較低的誤檢測率,當原內容發生變化時,數字水印應當發生變化,從而可以檢測原始數據的變更;當然數字水印同樣對重復添加有較強的抵抗性2、隱蔽性:數字水印應是不可知覺的,而且應不影響被保護數據的正常使用;不會降質;3、魯棒性:是指在經過常規信號處理后,數字水印仍能保持部分完整性并能被準確鑒別。可能的信號處理過程包括信道噪聲、濾波、數/模與模/數轉換、重采樣、剪切、位移、尺度變化以及有損壓縮編碼等。主要用于版權保護的數字水印易損水?。‵ragileWatermarking),這種水印是在內容數據中嵌入不可見的信息。當內容發生改變時,這些水印信息會相應地發生改變,從而可以鑒定原始數據是否被篡改。4、水印容量:是指載體在不發生形變的前提下可嵌入的水印信息量。嵌入的水印信息必須足以表示多媒體內容的創建者或所有者的標志信息,或購買者的序列號,這樣有利于解決版權糾紛,保護數字產權合法擁有者的利益。尤其是隱蔽通信領域的特殊性,對水印的容量需求很大[11]。2.3數字水印的基本原理2.3.1數字水印系統的基本框架粗略來看,數字水印系統包含嵌入器和檢測器兩大部分。嵌入器至少具有兩個輸入量:一個是原始信息,它通過適當變換后作為待嵌入水印信號;另一個就是要在其中嵌入水印的載體作品。水印嵌入器輸出結果為含水印的載體作品,通常用于傳輸和轉錄。之后這件作品或另一件未經過這個嵌入器的作品可以作為水印檢測器的輸入量。具體如圖2-1所示:圖2-1數字水印處理系統基本框架通用的水印技術包含兩個方面:水印的嵌入和水印的提取、檢測,如圖2-2和圖2-3所示。水印信息水印信息原始數據密鑰水印嵌入算法含水印產品圖2-2水印信號嵌入水印載體水印載體原始數據密鑰水印提取算法水印提取或檢測圖2-3水印信號提取或檢測2.4數字水印的幾種主要算法對于水印嵌入和提取技術,縱觀近幾年來相關的報道和文獻,從整體框架構思到具體實現細節,可以說是百花齊放,設計思想往往取決于研究人員的研究背景和入手角度。一般來講,主要包括以下幾個方面:1、空間域水印L.F.Turner與R.G.vanSchyndel等人的空間域水印算法是最低有效位算法(LSB)與改進算法。由于該算法是通過調整原始數據的最低幾位來隱藏信息,使一般用戶對于隱藏信息,在視覺上很難察覺。雖然其有較大的信息嵌入量,但作為數字水印算法,因其基本原理限制,所隱藏的數字水印信息是極為脆弱的,無法經受一些有損的信號處理。Bander等人提出的基于統計的數字水印方案(Patchwork)和紋理塊映射編碼方法則是空間域水印技術的典型設計。Patchwork任意選擇N對圖像點,增加其一點的亮度的同時,相應降低另一點的亮度值。通過這一調整過程完成水印的嵌入。該算法具有不易察覺性,并且對于有損壓縮編碼(JPEG)和一些惡意攻擊處理等具有抵抗力。紋理塊映射編碼方法則是將數字信息隱藏于數字圖像的任意紋理部分,其將隱藏信息紋理映射到另一紋理相似的區域。該算法對于濾波、壓縮和扭轉等操作具有抵抗力,但僅適于具有大量任意紋理區域的圖像。Pitas和Kaskalis利用“Patchwork”算法的基本原理,提出了數字圖像簽名的思想。這種算法可以有效抵抗二次采樣攻擊與JPEG壓縮。2、變換域算法基于變換域的技術可以嵌入大量比特數據而不會導致可察覺的缺陷,往往采用類似擴頻圖像的技術來隱藏數字水印信息。這類技術一般基于常用的圖像變換,基于局部或是全部的變換,這些變換包括離散余弦變換(discreteconsinetransform,DCT)、小波變換(discretewavelettransform,DWT)、傅氏變換(fouriertransform,FT)以及哈達馬變換(Hadamardtransform)等等。其中基于分塊的DCT是最常用的變換之一,現在所采用的靜止圖像壓縮標準JPEG也是基于分塊DCT的。最早的基于分塊DCT的一種數字水印技術方案是由一個密鑰隨機地選擇圖像的一些分塊,在頻域的中頻上稍稍改變一個三元組以隱藏二進制序列信息。選擇在中頻分量編碼是因為在高頻編碼易于被各種信號處理方法所破壞,而在低頻編碼則由于人的視覺對低頻分量很敏感,對低頻分量的改變易于被察覺。該數字水印算法對有損壓縮和低通濾波是穩健的。另一種DCT數字水印算法是首先把圖像分成8×8的不重疊像塊,在經過分塊DCT變換后,即得到由DCT系數組成的頻率塊,然后隨機選取一些頻率塊,將水印信號嵌入到由密鑰控制選擇的一些DCT系數中。該算法是通過對選定的DCT系數進行微小變換以滿足特定的關系,以此來表示一個比特的信息。在水印信息提取時,則選取相同的DCT系數,并根據系數之間的關系抽取比特信息。除了上述有代表性的變換域算法外,還有一些變換域數字水印方法,它們當中有相當一部分都是上述算法的改進及發展,這其中有代表性的算法是I.Podichuk和ZengWen-jun提出的算法。他們的方法是基于靜止圖像的DCT變換或小波變換,研究視覺模型模塊返回數字水印應加載在何處及每處可承受的JND(JustNoticeableDifference恰好可察覺差別)的量值(加載數字水印的強度上限),這種水印算法是自適應的。3、壓縮域算法基于JPEG、MPEG標準的壓縮域數字水印系統不僅節省了大量的完全解碼和重新編碼過程,而且在數字電視廣播及VOD(VideoOilDemand)中有很大的實用價值。相應地,水印檢測與提取也可直接在壓縮域數據中進行。Hartung提出了一種針對MPEG-2壓縮視頻數據流的數字水印案。雖然MPEG-2數據流語法允許把用戶數據加到數據流中,但是這種方案并不適合數字水印技術,因為用戶數據可以簡單地從數據流中去掉,同時在MPEG-2編碼視頻數據流中增加用戶數據會加大位率,使之不適于固定帶寬的應用,所以關鍵是如何把水印信號加到數據信號中,即加入到表示視頻幀的數據流中。對于輸入的MPEG-2數據流而言,它可分為數據頭信息、運動向量(用于運動補償)和DCT編碼信號塊3部分,在Hartung方案中,只有MPEG-2數據流最后一部分數據被改變,其原理是,首先對DCT編碼數據塊中每一輸入的Huffman碼進行解碼和逆量化,以得到當前數據塊的一個DCT系數;其次,把相應水印信號塊的變換系數與之相加,從而得到水印疊加的DCT系數,再重新進行量化和Huffman編碼,最后對新的Huffman碼字的位數n,與原來的無水印系數的碼字n0進行比較,只在n1不大于n0的時候,才能傳輸水印碼字,否則傳輸原碼字,這就保證了不增加視頻數據流位率。該方案有一個問題值得考慮,即引入的水印信號是一種引起降質的誤差信號,而基于運動補償的編碼方案會將一個誤差擴散和累積起來,為解決此問題,該算法采取了漂移補償的方案來抵消因水印信號的引入所引起的視覺變形。4、NEC算法該算法由NEC實驗室的Cox等人提出,該算法在數字水印算法中占有重要地位,其實現方法是,首先以密鑰為種子來產生偽隨機序列,該序列具有高斯N(0,1)分布,密鑰一般由作者的標識碼和圖像的哈希值組成,其次對圖像做DCT變換,最后用偽隨機高斯序列來調制(疊加)該圖像除直流分量外的1000個最大的DCT系數。該算法具有較強的魯棒性、安全性、透明性等。由于采用特殊的密鑰,故可防止IBM攻擊,而且該算法還提出了增強水印魯棒性和抗攻擊算法的重要原則,即水印信號應該嵌人源數據中對人感覺最重要的部分,這種水印信號由獨立同分布隨機實數序列構成,且該實數序列應具有高斯分布N(0,1)的特征。隨后Podilchuk等利用人類視覺模型又對該算法進行了改進,從而提高了該算法的魯棒性、透明性等。5、生理模型算法人的生理模型包括人類視覺系統HVS和人類聽覺系統HAS。該模型不僅被多媒體數據壓縮系統利用,同樣可以供數字水印系統利用。它們的基本思想均是利用從視覺模型導出的JND描述來確定在圖像的各個部分所能容忍的數字水印信號的最大強度,從而能避免破壞視覺質量,也就是說,利用視覺模型來確定與圖像相關的調制掩模,然后再利用其來插人水印。這一方法同時具有好的透明性和魯棒性。2.5數字水印的分類1、按特性劃分按水印的特性可以將數字水印分為魯棒性數字水印和易損性數字水印兩類。魯棒性數字水印主要用于在數字作品中標識著作權信息,利用這種水印技術在多媒體內容的數據中嵌入創建者、所有者的標示信息,或者嵌入購買者的標示(即序列號)。在發生版權糾紛時,創建者或所有者的信息用于標示數據的版權所有者,而序列號用于追蹤違反協議而為盜版提供多媒體數據的用戶。用于版權保護的數字水印要求有很強的魯棒性和安全性,除了要求在一般圖像處理(如:濾波、加噪聲、替換、壓縮等)中生存外,還需能抵抗一些惡意攻擊。易損性水印,與魯棒水印的要求相反,易損數字水印主要用于完整性保護,這種水印同樣是在內容數據中嵌入不可見的信息。當內容發生改變時,這些水印信息會發生相應的改變,從而可以鑒定原始數據是否被篡改。易損水印應對一般圖像處理(如:濾波、加噪聲、替換、壓縮等)有較強的免疫能力(魯棒性),同時又要求有較強的敏感性,即:既允許一定程度的失真,又要能將失真情況探測出來。必須對信號的改動很敏感,人們根據易損水印的狀態就可以判斷數據是否被篡改過。2、按水印所附載的媒體劃分按水印所附載的媒體,我們可以將數字水印劃分為圖像水印、音頻水印、視頻水印、文本水印以及用于三維網格模型的網格水印等。隨著數字技術的發展,會有更多種類的數字媒體出現,同時也會產生相應的水印技術。3、按檢測過程劃分按水印的檢測過程可以將數字水印劃分為明文水印和盲水印。明文水印在檢測過程中需要原始數據,而盲水印的檢測只需要密鑰,不需要原始數據。一般來說,明文水印的魯棒性比較強,但其應用受到存儲成本的限制。目前學術界研究的數字水印大多數是盲水印。4、按內容劃分按數字水印的內容可以將水印劃分為有意義水印和無意義水印。有意義水印是指水印本身也是某個數字圖像(如商標圖像)或數字音頻片段的編碼;無意義水印則只對應于一個序列號。有意義水印的優勢在于,如果由于受到攻擊或其他原因致使解碼后的水印破損,人們仍然可以通過視覺觀察確認是否有水印。但對于無意義水印來說,如果解碼后的水印序列有若干碼元錯誤,則只能通過統計決策來確定信號中是否含有水印。5、按水印隱藏的位置劃分按數字水印的隱藏位置,我們可以將其劃分為時(空)域數字水印、頻域數字水印、時/頻域數字水印和時間/尺度域數字水印。時(空)域數字水印是直接在信號空間上疊加水印信息,而頻域數字水印、時/頻域數字水印和時間/尺度域數字水印則分別是在DCT變換域、時/頻變換域和小波變換域上隱藏水印。隨著數字水印技術的發展,各種水印算法層出不窮,水印的隱藏位置也不再局限于上述四種。應該說,只要構成一種信號變換,就有可能在其變換空間上隱藏水印。第三章數字水印的關鍵技術3.1公鑰密碼算法——RSA1976年Diffle和Hellman發表了“密碼學的新方向”一文,提出了公鑰密碼算法。它不僅使對稱密碼的密鑰分發困難得到有效解決,而且可用于數字水印,為網絡時代的信息安全提供新的理論和技術基礎。公鑰加密體制系統如圖3-1所示:圖3-1公鑰密碼系統本系統運用基于數論的互素數、指數模和模逆元計算的\o"RSA算法"RSA算法。大數的因子的分解是RSA的安全性的保證,但同時并沒有從\o"理論"理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向于因子分解而不是NPC問題。任何算法都有其自身的缺陷,RSA的缺點主要有:A)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。B)其速度較慢。由于RSA算法涉及大數的高次冪模運算,計算量很大。這種算法出現于1978年,它是第一個既能用于數據加密也能用于數字簽名的算法。它易于理解和操作,也很流行。算法的名字以發明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。但RSA的安全性一直未能得到理論上的證明。
RSA的安全性依賴于大數分解。公鑰和\o"私鑰"私鑰都是兩個大素數(大于100個十進制位)的函數。據猜測,從一個密鑰和密文推斷出明文的難度等同于分解兩個大素數的積。
為了計算兩個密鑰,給定兩個大素數,p和q,并計算。計算:
n=p*q、r=(p-1)*(q-1)然后隨機選擇加密密鑰e,要求e和r互質,即互素數。再然后,利用歐幾里得(Euclid)擴展算法計算解密密鑰d,它滿足
e*d=1(modr)
其中,e即為公鑰,d即為私鑰。e和n是公開的,p和q在加解密過程中不再需要,但絕不能泄露,應該丟棄。給定\o"加密信息"加密信息(明文)
m(二進制表示)時,首先把m分成等長數據塊m1,m2,...,mi,塊長s,其中s應小于n的位數,對應的加密密文是:
ci=mi^e(modn) (3-1)得到相應的密文塊,加密后的密文m由相同長度的密文塊ci組成。解密時作如下計算:
mi=ci^d(modn) (3-2)
RSA可用于數字簽名時,簽名是用(3-1)式,驗證使用(3-2)式。具體操作時考慮到安全性和m信息量較大等因素,一般是先作HASH運算。
破譯者要解密,就要根據已知的e和n,計算d。而要計算d,應知道r,因而必須知道p和q。但是,如果n是一個600位的大整數,如何能在有生之年將它分解為兩個素數因子呢,據研究,目前最快的計算機也無法做到。這就是
RSA的安全所性依賴的。但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在一種無須分解大數的算法,那它肯定可以修改成為大數分解算法。目前,RSA的一些變種算法已被證明等價于大數分解。不管怎樣,分解n是最顯然的攻擊方法?,F在,人們已能分解140多個十進制位的大素數。因此,模數n必須選大一些,因應就具體適用情況而定。
3.2數字圖像置亂技術置亂技術是隨著信息的安全和保密被重視而發展起來的圖像加密技術。它可以看作是從經典密碼學中的單表系統擴展而來的。數字圖像置亂即是一種加密方法,合法使用者可以自由控制算法的選擇,參數的選擇以及使用隨機數技術,達到非法使用者無法破譯圖像內容的目的[12]。3.2.1數字圖像置亂技術的基本概念經典密碼學對于一維數據流提供了很好的加解密算法,其中如DES、RSA等著名密碼系統得到了廣泛的應用,但是這些系統往往忽視數字圖像的一些特殊性質如二維的自相似性、大數據量等。圖像置亂技術早期是對模擬圖像的位置空間做置換,可以看作從經典密碼學中的單表系統擴展而來。對于數字化的圖像,置亂過程不僅可以在數字圖像的空域(色彩空間、位置空間)上進行,還可以在數字圖像的頻域上進行。數字圖像置亂即是對數字圖像的一種加密方法,它使得合法使用者可以自由控制算法的選擇、參數的選擇以及使用隨機數技術,這就給攻擊者帶來非法破譯的難度,主要表現在統計分析各種可能的組合的巨大計算量。此外,近年興起的信息隱藏以及數字水印技術,從不同角度對數字圖像的隱藏與偽裝、著作權保護等問題提出了一些解決方法,本文提出的數字水印算法把圖像置亂技術和水印技術結合起來,通過產生置亂算法和水印算法的密鑰來保護水印原始數據和跟蹤產品的流動等。數字圖像的置亂變換就是一種可逆變換,通過對數字圖像的位置或灰度級等做變換,來“擾亂”圖像,以達到在一定程度上迷惑第三者的目的。如果不知道所使用的置亂變換算法,很難恢復出原始圖像。置亂算法置亂算法圖3-1原始圖像和置亂后的圖像圖3-1給出了一個通過象素置亂算法得到的置亂圖像和原始圖像的比較。3.2.2最佳置亂度文獻[6]提出了最佳置亂度的定義,通過計算置亂度判斷圖像置亂的程度。圖像中的任意兩個像素的距離可以用公式表示如下: (3-3)式中(xi,yi),(xj.yj)分別表示像素的空間坐標值,如果將圖像以矩陣形式表示,相當于矩陣元素的行和列的值。某—矩陣元素和它相鄰的元素之間的距離稱為一階距離,用Dl(i,j)表示,將某一矩陣元素和它相距一個元素的元素之間的距離稱為二階距離,用D2(i,j)表示,同理相距n個元素的元素之間的距離稱為n階距離、用Dn(i,j)表示。定義1:一階置亂度是圖像I中所有像素的一階距離的均值和方差之比,用公式表示如下: (3-4)從公式3-4可以看出,一階距離的均值比較大表示置亂后相鄰像素之間的距離變大了.也即相鄰像素被分散了,—階距離的方差比較小表示距離變化程度比較集中,所以二者的比值越大表示置亂度越大,即原來完整的圖像的像素被均勻地打散的程度越大。直觀地看,置亂度大表示一幅圖像中原先空間距離小的像素對之間的距離變大了。因為一階置亂度只定義了原來相鄰像素對之間的距離變化,還不足以十分精確地描繪置亂程度,為此將一階置亂度的公式推廣,引出n階置亂度的計算公式。(3-5)公式3-5中通過引入一個加權系數ak來體現不同階距離在置亂度中所起的作用,即首先考慮將相距最近的像素對盡量分散開,然后再考慮其它距離較大的像素對[12]。3.2.3Arnold變換Arnold變換是在Arnold遍歷理論研究中提出的一種變換,俗稱描臉變換。定義2設有單位正方形上的點(x,y),將點(x,y)變到另一點的變換為:此變換稱作貓變換。公式3-6定義的變換實際上是一種點的位置移動,該變換是一一對應的,且具有周期性。此外,這種變換可以迭代地做下去。需要注意的是,Arnold變換具有周期性,即當迭代到某一步時,將從新得到原始圖像。Dyson和Falk分析了離散Arnold變換的周期性,給出了對于任意,Arnold變換的周期,這也許是迄今最好的結果了。3.2.4基于Arnold變換的數字圖像位置置亂對于數字化圖像而言,我們所說的位置移動實際上是對應點的灰度值或者RGB顏色值的移動,即將原來點處象素對應的灰度值或RGB顏色值移動至變換后的點處。如果我們對一個數字圖像迭代地使用離散化的Arnold變換,即將左端輸出的作為下一次Arnold變換的輸入,可以重復這個過程一直作下去,當迭代到某一步時,如果出現的圖像符合我們對圖像的“雜亂無章”標準的要求,這即是一副置亂了的圖像。圖3-2即是經Arnold變換置亂后的圖像,我們可以看到對圖像只需進行幾次Arnold變換迭代,原圖像就已經雜亂無章了,置亂效果非常好。 (a)原始圖像 (b)一次Arnold變換后的圖像 (c)三次Arnold變換后的圖像 (d)五次Arnold變換后的圖像圖3-2Arnold變換置亂3.3DCT域數字水印3.3.1DCT變換概述離散余弦變換是數字圖像處理以及信號處理常用的一種正交變換,具有壓縮比高、誤碼率小、信息集中能力和計算復雜性綜合效果較好等優點,是圖像編碼的核心技術之一[13,14]。二維離散DCT變換及IDCT反變換公式如下:(3-7)DCT逆變換(3-8)圖像二維DCT變換(N取8或16)有許多優點:圖像信號經過變換后,變換系數幾乎不相關,經過反變換重構圖象信道誤差和量化誤差將像隨機噪聲一樣分散到塊中的各個像素中去,不會造成誤差累積,并且變換能將數據塊中的能量壓縮到為數不多的部分低頻系數中去(即DCT矩陣的左上角)。對于給定圖像存在兩種DCT變換方法:一種是把圖像看成一個二維矩陣直接對其進行DCT變換,然后嵌入水印,Cox采用此種方法;另一種方法是與JPEG壓縮標準相統一,先把圖像分成8×8的不同小塊,再分別對每一塊進行DCT變換,進而嵌入水印。3.3.2DCT數字圖像水印基本特點不同的應用對數字水印的要求不盡相同,一般認為數字水印應具有如下特點:1、透明性:對于以模擬方式存儲和分發的信息(如電視節目),或是以物理形式存儲的信息(如報刊、雜志),用可見的標志就足以表明其所有權。但在數字方式下,標志信息極易被修改或擦除。因此應根據多媒體信息的類型和幾何特性,利用用戶提供的密鑰將水印隱藏到一系列隨機產生的位置中,使人無法察覺。2、魯棒性:水印必須對一般的信號處理操作(如濾波、平滑、增強和有失真壓縮等)、刪除攻擊和迷惑攻擊等具有魯棒性。除非對數字水印具有足夠的先驗知識,任何破壞和消除水印的企圖都將嚴重破壞多媒體信息的質量。3、不可檢測性:包括兩方面的含義:(1)水印信息與原始載體數據具有一致的特性,使攻擊者無法通過信息分析手段判斷多媒體數據中是否存在水印;(2)水印信息本身具有不可統計性,避免攻擊者通過統計多個多媒體數據進而分析存在的相似性來進行攻擊。4、安全性:指水印嵌入算法具有較強的抵抗攻擊的能力,能夠承受一定程度的人為攻擊而使水印不會被破壞。5、自恢復性:經過一些操作或者變換之后,可能會使原始載體數據產生較大的破壞,如果從留下的片斷數據能夠恢復信號,就是所謂的自恢復性。3.3.3DCT數字圖像水印基本特點3.4數字水印的模式識別3.4.1、模式識別的基本概念模式識別就是機器識別,計算機識別或機器自動識別,目的在于讓機器自動識別事物。3.4.2、數字水印的檢測方法:基于假設檢驗的水印檢測設要檢驗的作品x屬于一下兩種情況之一:H0: x=x’H1: x=x’+w 即假設H0假定接收到的作品x中沒有水印,稱之為零假設。假設H1假定接收到的作品x中嵌入水印w,稱之為備擇假設。滿足假設H0的作品全體組成集合R0,滿足假設H1的作品全體組成集合R1。假設檢驗的方法,顧名思義,就是利用接受到的載體作品對假設進行檢驗,從而判斷假設檢驗是否成立。本章研究了實現的數字水印系統中用到的一些關鍵技術和對其中一小點的擴展,在學習和研究這些技術的同時,也為本文后續的工作做了充足的基礎準備,在后期實現的過程中,也更深入的了解了這些技術,并做了自己的優化。第四章一種優化的數字水印系統的實現4.1數字水印系統說明本文提出了一種優化的數字水印算法,及基于系數關系的DCT域數字圖像水印算法。在嵌入的過程中,優化嵌入內容,提高原圖片的不可見性;在提取過程中,優化提取判定條件,提高水印圖片的魯棒性。算法作用域在DCT變換后的中頻域內,通過算法的處理在DCT系數里嵌入二值水印,系統能夠支持彩色和灰度兩種格式的BMP圖像文件,并實現數字圖像的隱藏,且水印的提取完全是盲提取,不需要原始圖像,具有較強的安全性和魯棒性。4.2數字水印系統優化設計普通數字水印系統僅僅包含對圖像的嵌入以及提取,用戶數字水印系統分為6個模塊,分別為用戶身份驗證模塊、采集圖像等數據載體和預處理模塊、數字水印嵌入模塊、數字水印檢測模塊、水印提取以及水印測試模塊。充分分析用戶的需求,彌補了當下系統人機操作不協調的缺陷。4.2.1用戶身份驗證首先用戶只有獲得授權方能進入系統,其次對已授權的用戶的身份加以驗證和加密保護。不僅保證了用戶的信息安全,而且可以實現用戶的分配。圖4-1用戶身份驗證用例圖4.2.2采集圖像與預處理系統支持數據載體的采集,查看,收藏,預處理等基本操作,優化當前系統用戶對初始圖片的采集,修改的缺陷。圖4-2預處理用例圖4.2.3數字水印的生成系統提供用戶生成自定義水印信息的功能,方便用戶添加自己的個人信息或者是版權信息。用戶可通過簡單的操作,實現自己的水印,而不需借助其他圖像處理工具。圖4-3水印生成用例圖4.2.4數字水印的嵌入通過水印嵌入算法,實現將水印信息與載體數據的融合,形成水印載體數據。圖4-4水印嵌入用例圖4.2.5數字水印提取對給定的圖像進行水印的提取,采用盲檢測技術,有水印則提取出水印,無則提取為空。實現將水印信息與載體信息分離,水印信息的可視化,可操作話。圖4-5水印提取用例圖4.2.6數字水印魯棒性檢測多角度,多方面對數字水印進行測試,通過各類有意或無意的修改,結合預處理的操作,對載體圖像的亮度,大小,對比度進行修改,然后再提取。測試提取結果與原圖片之間的差異。圖4-6水印檢測用例圖4.3數字水印系統優化算法本系統核心是離散預先變換(DCT),運用基于實數的正交變換,實現圖像的“能量集中”特性。但同時不局限于此,在原理論的基礎上,優化改善DCT矩陣的生成、DCT中頻的確定、DCT系數的替換、統計均值比較算法規則等多個方面。提高水印系統的不可見性和魯棒性等基本要求,不可見性就是在載體圖像中嵌入水印圖像后不能被人的視覺系統覺察或注意到,而魯棒性就是能夠從嵌入水印后的載體圖像中提取出盡可能完整的水印圖像,而不因圖像數據的某種改動而導致水印信息丟失。由于人類視覺系統對圖像頻域空間的中低頻信息不敏感,所以,本文將水印圖像的中低頻DCT系數隱藏到載體圖像的中頻DCT系數中。為了提高水印的魯棒性,先對載體圖像分割成8*8的像素塊,然后將水印圖像分別嵌入到每一塊當中;提取時從帶水印圖像的每一塊中提取出水印圖像,再計算這些水印圖像的平均值從而得到最終的水印圖像。對于彩色圖像的B分量即藍色分量按照這種方法進行。4.3.1數字水印采集及預處理1、C#語言及其窗體程序,良好的用戶體驗目前的水印系統多以matlab為基礎,調用其自身所含圖像類,進行數字水印的研究與系統實現。本系統采用微軟框架,以C#語言為基礎,完成優秀的界面設計,提高用戶體驗感受和操作舒適度。2、bitmap類和BitmapData類圖像處理類微軟C#語言框架對于圖像處理提供bitmap類,BitmapData類兩大主要類,可方便實現圖像的二值化存儲,以及圖像數據調入內存操作,并提供Scan0屬性獲取位圖中第一個像素數據的地址,方便對圖像的數據進行定位和掃描。是圖像處理中公認的較為方便的類。對圖像亮度調節主要代碼如下:BitmapDatadata=b.LockBits(newRectangle(0,0,width,height),ImageLockMode.ReadWrite,PixelFormat.Format24bppRgb);unsafe{byte*p=(byte*)data.Scan0;intoffset=data.Stride-width*3;for(inty=0;y<height;y++){for(intx=0;x<width;x++){for(inti=0;i<3;i++){pix=p[i]+degree;if(degree<0)p[i]=(byte)Math.Max(0,pix);if(degree>0)p[i]=(byte)Math.Min(255,pix);}//ip+=3;}//xp+=offset;}//y}b.UnlockBits(data);returnb;}catch{returnnull;} 4.3.2水印圖片生成算法首先確定水印圖像的背景,可由系統自動默認選擇或由用戶提供,然后對文字和圖像進行嵌入,生成水印圖片。具體步驟如下:(1)確定水印圖像的默認圖片。(2)添加文字信息和圖片信息,并選擇插入的位置。(3)進行文字和圖片的嵌入。主要圖片生成算法:privateImageGetTextWatermark(stringtext){Brushbrush=newSolidBrush(m_fontColor);SizeFsize;using(Graphicsg=Graphics.FromImage(m_image)){size=g.MeasureString(text,m_font);}Bitmapbitmap=newBitmap((int)size.Width,(int)size.Height);bitmap.SetResolution(m_image.HorizontalResolution,m_image.VerticalResolution);using(Graphicsg=Graphics.FromImage(bitmap)){g.DrawString(text,m_font,brush,0,0);}returnbitmap;}4.3.3數字水印嵌入算法水印的嵌入分五大步進行,概括而言,首先對源圖像進行分塊處理,而后進行DCT變換,通過矩陣乘法得到新的DCT系數矩陣,接著使用Zig-Zag數組對各塊DCT系數進行掃描,使其按Zig-Zag數組的順序排列,之后用水印圖像數據替換符合條件的DCT系數,從而保證了嵌入水印后的圖像的不可見性和一定的魯棒性。水印嵌入步驟如下:(1)將給定的原始圖像進行分塊,并對每一塊進行DCT操作。(2)使用貓臉置亂對給定的二值水印圖像進行置亂操作,,置亂次數由用戶輸入,然后進行二值序列化,將二維圖像數據轉化為一維序列W={wc},其中c=1,2,3…,C,C=W*H,方法為: 判斷像素像素平均值,如果像素平均值大于128,則為1,否則為0(3)在各個DCT分塊中,將上一步生成的二值水印序列嵌入進去,方法為: 采用Zig-Zag進行排序,對每個DCT塊數據進行重新分配,然后從第15個系數開始選取16個系數即:Di(j),j=15,16…30,并做替換操作,每替換完一個二值序列的值就操作下一個DCT塊。替換方法為:如果wc=1,則Di’(j)=max(Di),否則Di’(j)=min(Di)。 (4)對圖像進行逆離散余弦(IDCT)操作,還原圖像,即得到嵌入水印之后的圖像。 (5)對于原始圖像和嵌入后的圖像之間的差異程度,本文采用PSNR來客觀的評價,從而評價此水印算法的性能,計算公式為:4-1主要嵌入算法的代碼如下:///<summary>///DCT公式///DCT變換的具體算法///產生DCT的余弦矩陣///</summary>///<paramname="order">維數個數</param>///<returns>DCT的余弦矩陣</returns>publicdouble[,]GenerateDCTmatrix(intN){inti,j;intSize;Size=N;doublealpha;//系數doublefenMu;double[,]DCTCoeff=newdouble[Size,Size];for(j=0;j<=Size-1;j++){DCTCoeff[0,j]=Math.Sqrt(1/(double)Size);}alpha=Math.Sqrt(2/(double)Size);//C(u)fenMu=(double)2*Size;for(j=0;j<=Size-1;j++)for(i=1;i<=Size-1;i++){DCTCoeff[i,j]=alpha*Math.Cos(((2*j+1)*i*3.14159)/fenMu);}return(DCTCoeff);}///<summary>///分塊DCT變換///</summary>///<paramname="imgSource">圖像圖片</param>///<returns>返回一個color對象的二維數組</returns>publicvoidDCTBlocksTrans(){double[,]temp=newdouble[8,8];double[][,]BlockDCTkernel=newdouble[3][,];for(intk=0;k<3;k++)BlockDCTkernel[k]=newdouble[8,8];for(inti=0;i<blocks.H;i++){for(intj=0;j<blocks.W;j++){for(intl=0;l<3;l++){//思想先得到對應DCT矩陣BlockDCTkernel[l]=GenerateDCTmatrix(Order);//將DCT矩陣與圖像矩陣相乘?temp=multiply(BlockDCTkernel[l],blocks.Blocks[i,j].array[l]);//將相乘矩陣與DCT矩陣的轉置矩陣相乘的矩陣返回給圖像的顏色DCTblocks.Blocks[i,j].ColorDCT[l]=multiply(temp,Transpose(BlockDCTkernel[l]));}}}return;}4.3.4數字水印提取算法本系統采用盲水印提取的方式,水印提取不需要原始水印圖像,初始操作與水印嵌入相同,也是先進行分塊處理,而后進行DCT域變換,再對各塊系數進行Zig-Zag掃描,然后對指定位置系數進行判斷,從而得出水印圖像。具體如下:(1)對于嵌入水印后的圖像進行分塊處理和DCT變換,對各塊系數進行Zig-Zag掃描,而后從第15個系數位置開始進行提取,DCT系數判決條件如下:如果Di’’(j)>=avg(Di’’),則wc=1,否則wc=0。(2) 對于提取到的二值序列進行反置亂,置亂次數由用戶輸入,即得到水印圖像。(3)為了衡量提取出的水印和原始水印之間的相似度,本文采用歸一化相似度計算公式來評價水印算法的性能,計算公式為:4-2主要的提取代碼如下://二值水印的提取publicvoidExtractMain(){doublemax;doublemin;doubleavg;intindex=Position;double[]Src_Zig;intcount=0;for(inti=0;i<waterImg_One.Length;i+=blocks.W*blocks.H){for(intj=0;j<blocks.H;j++){for(intk=0;k<blocks.W;k++){if(count<waterImg_One.Length){Src_Zig=ZigZagSort(blocks.Blocks[j,k].ColorDCT[0]);avg=getDCTBlockAVG(Src_Zig);if(Src_Zig[index]>=avg){waterImg_One[count++]=1;}else{waterImg_One[count++]=0;}blocks.Blocks[j,k].ColorDCT[0]=IZigZagSort(Src_Zig);}}}index++;}}///<summary>///重組水印數組///</summary>///<paramname=""></param>///<returns>水印圖像</returns>publicBitmapgenWaterMark(){BitmapnewPic=newBitmap(WaterMarkHeight,WaterMarkWidth);inttmp=0;intcount=0;for(inti=0;i<WaterMarkHeight;i++){for(intj=0;j<WaterMarkWidth;j++){tmp=waterImg_One[count++];if(tmp==1){newPic.SetPixel(j,i,Color.FromArgb(255,255,255));}else{newPic.SetPixel(j,i,Color.FromArgb(0,0,0));}}}returnnewPic;}4.3.5數字水印核心算法類圖系統的大體框架使用C#窗體應用,代碼集成在窗體類中,但為便于后期維護和管理,將水印操作的核心類統一設計在一起。并以功能開,如圖4-7所示:1,Block類,用于存儲圖像每塊的內容,包含構造函數用于初始化;2,DCTBlocks類,用于對源圖像數據的存儲,包含Block類數組,記錄每塊的信息,其中H字段是圖像的高度,W字段是圖像的寬度,同時也包含構造函數用于初始化數據。3,ArnoldTransport類,數字水印算法的輔助類,用于對水印圖片進行加密,采用Arnold置亂算法,將水印數組循環賦值后,生成雜亂的數組。其中times字段記錄置亂的次數,而方法包含Arnold和Reverse_Arnold分別是將水印置亂與恢復的逆置亂。4,DCTTransform類,用于最核心的水印嵌入、提取、評測。其中包含zig-zag數組、分塊大小等字段。waterMarkEmbed方法為嵌入的主方法,waterMarkExtract發放為提取的總方法,GenerateDCTmatrix方法則用來生成DCT余弦矩陣系數;multiply方法為兩個矩陣相乘的算法實現,Transpose方法則是生成給定矩陣的轉置矩陣。圖4-7數字水印核心算法類圖4.4系統程序運行展示4.4.1用戶身份的認證窗體在程序運行之后,首先要進行用戶身份的驗證,即要求輸入用戶密碼,方可進入系統,如圖4-9所示:圖4-9輸入用戶密碼4.4.2采集圖像等數據載體和預處理窗體在用戶輸入了正確的密碼之后進入程序主界面,頁面提供打開,選擇,預覽等操作,如圖4-10所示:圖4-10程序主界面4.4.3數字水印的生成窗體本系統提供水印的制作,自定義添加機密內容,內容格式分圖片與文字兩種,還可自定義選擇顯示位置。界面如圖4-11所示:圖4-11水印生成主界面4.4.4數字水印的嵌入窗體在水印的嵌入和提取之前,都要求輸入置亂次數,界面如圖4-12所示:圖4-12輸入置亂次數水印嵌入完成之后主界面將同時顯示原始圖片、二值水印圖片以及嵌入水印之后的圖片,如圖4-13所示:圖4-13嵌入水印主界面4.4.4數字水印提取窗體水印的提取時,需先打開已嵌入水印的圖片,再輸入置亂次數,點擊提取水印之后,即得到二值水印,如圖4-14所示:圖4-14提取水印4.5系統性能測試系統進行測試時,使用圖像處理中經典的灰度圖像lena(如圖a)和彩色圖像lena(如圖b)做仿真實驗,兩幅圖像大小均為512*512;而水印圖像是一幅128*128的二值圖像,如圖4-15(c)所示。(a)灰度圖片(b)彩色圖片(c)二值水印圖4-15原始圖片和水印圖片4.4.1正常未受攻擊情況嵌入水印后的灰度和彩色圖像和未受到攻擊情況下提取的水印分別如圖4-16、4-17所示。從圖像的視覺角度來看,圖像的嵌入對圖像的改變并不明顯,肉眼根本無法觀察。(a)嵌入水印的圖像(b)提取的水印圖像圖4-16嵌入后的圖像和提取的水印圖像嵌入水印后的圖像的峰值信噪比PSNR=67.54db,提取的水印的相似度NC=0.9991。(a)嵌入水印的圖像(b)提取的水印圖像圖4-17嵌入后的圖像和提取的水印圖像嵌入水印后圖像的峰值信噪比PSNR=68.69db,提取的水印的相似度NC=0.9997。4.4.2非正常受攻擊情況系統進行的攻擊主要包含對嵌入了水印的圖片進行亮度、對比度的調節;圖像發生裁減以及污染的情況等。系統設計要求在此種條件下還能保證提取出的水印圖片保持一定的可辨度。受攻擊的圖像如圖4-18、4-19、4-20所示。PSNR=35.39dbPSNR=63.51db(a)亮度變高(b)對比度變高圖4-18嵌入水印的圖像受到亮度、對比度攻擊PSNR=56.39dbPSNR=57.51db(a)中間塊剪裁(b)剪裁四份之一角圖4-19嵌入水印的圖像受到裁減攻擊PSNR=61.15dbPSNR=63.28db(a)涂抹雜質(b)涂抹雜質圖4-20嵌入水印的圖像受到污染對于圖4-18攻擊之后,提取出的水印圖像如圖4-21所示。NC=0.7003NC=0.6845圖4-21針對圖4-18(a)、(b)所提取出來的水印圖像對于圖4-19攻擊之后,提取出的水印圖像如圖4-22所示。NC=0.8003NC=0.7845 (a)(b)圖4-22針對圖4-19(a)、(b)所提取出來的水印圖像對于圖4-23攻擊之后,提取出的水印圖像如圖4-17所示。NC=0.9723NC=0.9702(a)(b)圖4-23針對圖4-20(a)、(b)所提取出來的水印圖像4.4.3特殊攻擊情況現實生活中,系統也會遇到一些特殊的情況,被一些高級圖像處理軟件嚴重處理過,如霧化、底片化、積木化,數字水印則不能提取成功。這也是系統算法中存在的不足。受攻擊的圖像如圖4-24所示。PSNR=25.37dbPSNR=63.51db(a)霧化(b)底片化圖4-24嵌入水印的圖像受到霧化、底片化攻擊對于圖4-18攻擊之后,提取出的水印圖像如圖4-21所示。NC=0.0023NC=0.0845圖4-25針對圖4-24(a)、(b)所提取出來的水印圖像4.5本章小結本章對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考歷史考前必背超級結論-14個階段特征
- 2024年中級統計師《統計工作實務》真題及答案解析
- 婦科護理常用藥
- 2025年校園安全新標準:危險品存放領用登記操作流程全覽
- 2025年湖南省長沙市初中一年級上學期期中語言能力考試試卷
- 2025年室內設計師職業資格考試真題卷-室內設計空間布局與設計效果評估試題
- 教材原理2025年計算機二級MySQL試題及答案
- 2025年護士執業資格考試內科護理學專項護理倫理模擬考試試卷
- 護理業務查房記錄
- 貴州省六盤水市鐘山區2024-2025學年九年級上學期期末質量監測英語試題(原卷版+解析版)
- YOLO目標檢測算法的改進與優化
- 2025證券從業資格考試證券市場基礎知識真題試卷
- 2025年入團基礎知識試題及答案詳解
- 2025-2030年中國軍工行業市場發展現狀及發展趨勢與投資戰略研究報告
- 地震知識課件
- 2025年小學生科學知識競賽試題及答案
- 2025年中學語文教師招聘試題及答案
- 阿片類藥物的不良反應和對策
- 《液相色譜-質譜聯用》課件
- 潤滑油購銷合同協議
- 《醫療團隊中的護理管理:護士長角色定位》課件
評論
0/150
提交評論