壓縮域
㈠ 數字水印的價值,意義以及優點~誰能幫下忙
數字版權的最後一道防線—數字水印
■ 北京大學計算機科學技術 研究所 朱新山
--------------------------------------------------------------------------------
數字水印被視做抵抗多媒體盜版的「最後一道防線」。因此從水印技術自身來說,它具有廣泛的應用前景和巨大的經濟價值。
當今社會的發展已經呈現兩個明顯的特徵:數字化和網路化。數字化指的是信息的存儲形式,特點是信息存儲量大、便於編輯和復制;網路化指的是信息的傳輸形式,具有速度快、分布廣的優點。過去10年,數字媒體信息的使用和分布呈爆炸性的增長。人們通過互聯網可以快捷方便地獲得數字信息和在線服務。但同時,盜版也變得更加容易,對數字內容的管理和保護成為業界迫切需要解決的問題。
數字信息在本質上有別於模擬信息,傳統的保護模擬信息的方案對數字信息已不再奏效。再加上一些具有通用目的的處理器,如PC機,使得那些基於硬體的媒體保護方案很容易被攻破。而通常採用的加密技術事實上只能在信息從發送者到接受者的傳輸過程中保護媒體的內容。在信息被接收到以後,再利用的過程中所有的數據對使用者都是透明的,不再受到任何保護。在這一形勢下,數字水印作為一種潛在的解決方案,得到了眾多學者的青睞。
數字水印的基本思想是在原始媒體數據中,如音頻、視頻、圖像等,隱藏具有一定意義的附加信息作為標記,這些信息與原始數據緊密結合,並隨之一起被傳輸。在接收端,通過計算機水印信號被提取出來用於各種目的,可能的應用包括數字簽名、數字指紋、廣播監視、內容認證、拷貝控制和秘密通信等。數字水印被視做抵抗多媒體盜版的「最後一道防線」。因此從水印技術自身來說,它具有廣泛的應用前景和巨大的經濟價值。
數字水印的一般框架圖
數字水印的基本框架
一個典型的水印系統由嵌入器和檢測器組成,如圖所示。嵌入器(式(1))根據要傳送的信息M生成真正的水印信號,並把它隱藏到媒體數據x中,得到含水印的信號y。為了安全起見,水印信號的生成通常依賴於密鑰K。
y經過傳輸網路可能會有一定的信息損失,到達檢測器端變成y′,這段通道對於嵌入器和檢測器來說都是不可控、不可知的,可以稱其為攻擊通道(attack channel)。檢測器負責從y′中提取信息,如式(2)。對於不需要宿主信號的檢測,我們稱為盲水印(blind watermarking),相反稱為非盲水印(non-blind watermarking)。由於應用的需求,盲水印一直是研究的主流。
數字水印的特性
數字水印的思想雖然簡單,但是要達到應用的目的,就必須滿足一定的性能指標,其中相對重要的特性包括:
● 保真性(fidelity):又常稱為不可見性,指的是水印嵌入導致宿主信號質量變化的程度。鑒於宿主信號多是多媒體數據供人們觀賞,水印應具有很高的保真性,同時又增加了水印自身的安全。
● 魯棒性(robustness):是指水印在媒體數據編輯、處理過程中的生存能力。媒體數據的各種操作會導致宿主信號信息損失,從而破壞水印完整性,像壓縮、濾波、加噪、剪切、縮放和旋轉等,也包括一些惡意的攻擊。
● 信息容量(data payload):是指在一定保真度下,水印信號可傳遞的信息量。實際應用要求水印可傳送多位信息。
● 安全性:在應用中總有人要嵌入、檢測或剔除水印,而必須限制其他人做同樣的操作,這就是水印的安全性。要實現安全,必須保密重要信息,比如通常使用密鑰產生水印。
● 錯警率:是指在不含水印的宿主信號中,錯誤地檢測出水印的概率。很顯然,只有錯警率足夠低,系統才能安全可靠地使用。
設計水印必須圍繞上述性能指標選擇合適的技術。有些特性之間是不相容的,像不可見性、魯棒性和信息容量,必須做權衡的考慮。
由水印的保真性將其分為可見水印和不可見水印,顧名思義可見水印可通過人眼檢測。由水印的魯棒性又可分為魯棒水印(robust watermarking)和脆弱水印(fragile watermarking)。魯棒水印可以抵抗一定程度的信號處理;而脆弱水印的特點是任何對媒體信息的更改都會破壞水印的完整性,使水印檢測不出來。所以說魯棒水印是盡力保證水印信息的完整性,脆弱水印是盡力保證媒體信息的完整性,它們各有各的用途。還有一種水印介於二者之間,稱為半脆弱水印,對一些操作魯棒,但對重要數據特徵的修改操作是脆弱的。
數字水印技術的進展
早期,水印設計者關注的是如何把信息隱藏在數字媒體中並不被發現。為此,水印信息被置於二進制數據的最低位中,這類方案被統稱為最低有效位調制。很明顯,最低有效位內的信息容易在常用的信號處理中丟失,水印的魯棒性差。
隨後,出現了大量空間域內的水印演算法。水印嵌入不再是修改空間域內的單個點,而是一個點集或一個區域的特徵,例如均值、方差、奇偶性等。Patchwork是這類方法的一個典型代表。它在圖像空間隨機選取n對像素點(ai, bi),並且對像素ai的亮度加d,bi的亮度減d,結果這兩組像素點之間亮度差值的均值被修改為2d。該均值和統計假設檢驗理論可確定水印的有無。可是Patchwork能嵌入的信息量有限,而且對幾何變換敏感。空間域內水印演算法存在的共性問題是對圖像處理的魯棒性差。
相較於空間域,頻譜則是一種很好的信號描述方法。低頻分量代表了信號的平滑部分,是主體信息;高頻分量表示信號的抖動部分,是邊緣信息,信號的分析和處理非常直觀方便。擴頻水印引入了擴頻通信理論,是一種非常流行的頻率域內的水印設計思想。它將數字媒體視為信道,通常具有較寬的帶寬,要嵌入的水印信號作為發射信號,帶寬較窄。可以先將水印擴展到多個頻率點上,再與媒體信號疊加。這樣,每個頻率分量內只含有微小能量的水印,既保證了不可見性,同時要破壞水印,則必須在每個頻率上疊加幅值很高的雜訊。這一思想首先被應用到DCT域內,之後又被推廣到傅立葉變換域和小波域內。另外,為了兼顧水印的保真性,人類感知模型被用於控制每個頻率點上水印的能量,使其不至於破壞信號質量,從而形成了一類自適應的擴頻水印。
另一種重要的水印模型是把水印看成是已知邊帶信息的通信。邊帶信息指的是嵌入器端已知的信息,包括媒體數據。嵌入器應該充分利用邊帶信息,盡可能提高水印正確檢測的概率。這對水印的設計有重要的指導意義,它說明含水印的宿主信號應該選擇在可檢測到水印的區域,同時保證一定的保真度。
當前,水印研究的熱點是探討媒體信號中能嵌入並可靠檢測的最大信息量,它應用了已知邊帶信息的通信模型以及資訊理論的知識。水印演算法的研究則側重於針對壓縮域,即JPEG、MPEG等壓縮標准,因為壓縮是信息傳輸中必須採用的技術。
數字水印的攻擊技術
對媒體數據的各種編輯和修改常常導致信息損失,又由於水印與媒體數據緊密結合,所以也會影響到水印的檢測和提取,我們把這些操作統稱為攻擊。水印的攻擊技術可以用來測試水印的性能,它是水印技術發展的一個重要方面。如何提高水印的魯棒性,抵抗攻擊,是水印設計者最為關注的問題。
第一代水印性能評價系統Stirmark囊括了大量的信號和圖像處理操作,它們可以分為:
● 去除水印攻擊(Removal attack):主要包括A/D、D/A轉換、去噪、濾波、直方圖修改、量化和有損壓縮等。這些操作造成了媒體數據的信息損失,特別是壓縮,能在保證一定信息質量的前提下,盡可能多地剔出冗餘,使得水印被去掉。
● 幾何攻擊(Geometrical attack):主要包括各種幾何變換,例如旋轉、平移、尺度變換、剪切、刪除行或列、隨機幾何變換等。這些操作使得媒體數據的空間或時間序列的排布發生變化,造成水印的不可檢測,因此也叫非同步攻擊。
● 共謀攻擊:攻擊者利用同一條媒體信息的多個含水印拷貝,使用統計方法構造出不含水印的媒體數據。
● 重復嵌入攻擊:攻擊者在已嵌入他人水印的媒體數據中嵌入自己的版權信息,從而造成版權糾紛。
第二代水印攻擊系統由Voloshynovskiy提出,其核心思想是利用合理的媒體數據統計模型和最大後驗概率來估計水印或者原始媒體信號,從而將水印剔除。
對攻擊技術的分析和研究促進了水印技術的革新,但也為水印自身提出了一個又一個挑戰。當前,還不存在一種演算法能夠抵抗所有的攻擊,特別是幾何攻擊,是學術界公認的最困難的問題,目前還沒有成熟的方案。
數字水印產品
20世紀90年代末期國際上開始出現一些水印產品。美國的Digimarc公司率先推出了第一個用於靜止圖像版權保護的數字水印軟體,而後又以插件形式將該軟體集成到Adobe公司的Photoshop和Corel Draw圖像處理軟體中。AlpVision公司推出的LavelIt軟體,能夠在任何掃描的圖片中隱藏若干字元,用於文檔的保護與跟蹤。MediaSec公司的SysCop用水印技術來保護多媒體內容,欲杜絕非法拷貝、傳播和編輯。
美國版權保護技術組織(CPTWG)成立了專門的數據隱藏小組(DHSG)來制定版權保護水印的技術標准。他們提出了一個5C系統,用於DVD的版權保護。IBM公司將數字水印用於數字圖書館的版權保護系統中。許多國際知名的商業集團,如韓國的三星、日本的NEC等,也都設立了DRM技術開發項目。另外,當前還有一些潛在的應用需求,例如軟體的搜索和下載數量的統計、網頁安全預警、數字電視節目的保護和機密文檔的防遺失等。
一些國際標准中已結合了數字水印或者為其預留了空間。SDMI的目標是為音樂的播放、存儲和發布提供一個開放的框架。SDMI規范中規定了多種音頻文件格式,並聯合加密和數字水印技術來實現版權保護。已經頒布的JPEG2000國際標准中,為數字水印預留了空間。即將頒布的數字視頻壓縮標准MPEG-4(ISO/IEC 14496),提供了一個知識產權管理和保護的介面,允許結合包括水印在內的版權保護技術。
在國內,政府對信息安全產業的發展極為重視。數字水印的研究得到了國家自然科學基金和「863」計劃的資助。國內信息隱藏學術研討會(CIHW)自1999年以來至今已成功舉辦了五屆,有力地推動了水印技術的研究與發展。去年政府更頒布了《中華人民共和國電子簽名法》,這給水印技術的應用提供了必要的法律依據。
盡管數字水印發展迅速,但離實際應用,還有一段距離要走。許多項目和研究都還處於起步和實驗階段,已出現的水印產品還不能完全滿足使用需求。如今水印技術正在向縱深發展,一些基本的技術和法律問題正逐個得到解決。相信不久的將來,水印與其它DRM技術的結合,將徹底解決數字內容的管理和保護問題。
小資料2
多媒體數字版權保護的應用案例
在安全領域有20年發展歷史的美商SafeNet推出的數字產權保護方案DMD是採用加密技術的DRM產品。SafeNet公司亞太地區副總裁陳泓應記者的要求介紹幾個成功的應用案例。
DMD主要應用於音樂和鈴聲的下載、VOD、多媒體內容發布服務,以及最近的移動TV。基本來說,客戶選擇基於以下幾點:基於電信級的性能,可以同時處理上千個用戶;可以同步支持多種DRM技術,並且對未來的DRM技術有高支持能力;高互通性,確保伺服器端與客戶端能安全穩定地溝通;先進的授權能力,例如可以有效控制一個授權的使用量;高集成性,確保DRM的平台不是獨立作業的,可以很容易地整合至伺服器平台,與收費系統等結合。
在音樂下載方面,NPO是SafeNet在法國的客戶。他們主要負責發布CD音樂及將發表的音樂放到FN@C的網路上供人付費下載。NPO將音樂內容做DRM處理後,將內容由FN@C (這是一個公開的入口網站)發布,提供給人付費下載。當終端用戶付了錢,FN@C會將一部分的證明數據加密並提交給NPO,由NPO產生授權給此用戶。
在VOD的應用層面,德國的Arcor公司是一家ISP供貨商。透過DRM解決方案,Arcor將影音內容加密,透過互聯網和Cable給客戶做使用者付費的服務。客戶付了錢,Arcor由SafeNet的DRM解決方案產生正式授權,讓客戶享用影音服務。
在3G的應用方面,英國的BT LiftTime公司也採用SafeNet的DMD方案。BT LifeTime向內容供貨商購買cable TV的內容(如運動節目或音樂節目等),並將此內容轉成dab格式,經過DMD加密並放到其平台,再轉賣給無線運營商,提供移動裝置用戶直接付費下載內容。通過SafeNet DMD將授權提供給已經付費的客戶。
(計算機世界報 2005年11月14日 第44期 B6、B7)
MPEG-4視頻數字水印技術的設計與實現
武漢大學信號與信息處理實驗室(430079) 裘風光 李富平
隨著信息技術和計算機網路的飛速發展,人們不但可以通過互聯網和CD-ROM方便快捷地獲得多媒體信息,還可以得到與原始數據完全相同的復製品,由此引發的盜版問題和版權紛爭已成為日益嚴重的社會問題。因此,數字多媒體產品的水印處理技術已經成為近年來研究的熱點領域之一。
雖然數字水印技術近幾年得到長足發展,但方向主要集中於靜止圖像。由於包括時間域掩蔽效應等特性在內的更為精確的人眼視覺模型尚未完全建立,視頻水印技術的發展滯後於靜止圖像水印技術。另一方面,由於針對視頻水印的特殊攻擊形式的出現,為視頻水印提出了一些區別於靜止圖像水印的獨特要求。
本文分析了MPEG-4視頻結構的特點種基於擴展頻譜的視頻數字水印改進方案應用實例。
1視頻數字水印技術簡介
1.1數字水印技術介紹
數字水印技術通過一定的演算法將一些標志性信息直接嵌入到多媒體內容當中,但不影響原內容的價值和使用,並且不能被人的感知系統覺察或注意到。與傳統的加密技術不同,數字水印技術並不能阻止盜版活動的發生,但可以判別對象是否受到保護,監視被保護數據的傳播,鑒別真偽,解決版權糾紛並為法庭提供認證證據。為了給攻擊者增加去除水印的難度,目前大多數水印製作方案都採用密碼學中的加密體系來加強,在水印嵌入、提取時採用一種密鑰,甚至幾種密鑰聯合使用。水印嵌入和提取的一般方法如圖1所示。
1.2視頻數字水印設計應考慮的幾個方面
·水印容量:嵌入的水印信息必須足以標識多媒體內容的購買者或所有者。
·不可察覺性:嵌入在視頻數據中的數字水印應該不可見或不可察覺。
·魯棒性:在不明顯降低視頻質量的條件下,水印很難除去。
·盲檢測:水印檢測時不需要原始視頻,因為保存所有的原始視頻幾乎是不可能的。
·篡改提示:當多媒體內容發生改變時,通過水印提取演算法,能夠敏感地檢測到原始數據是否被篡改。
1.3視頻數字水印方案選擇
通過分析現有的數字視頻編解碼系統,可以將目前MPEG-4視頻水印的嵌入與提取方案分為以下幾類,如圖2所示。
(1)視頻水印嵌入方案一:水印直接嵌入在原始視頻流中。此類方案的優點是:水印嵌入的方法較多,原則上數字圖像水印方案均可應用於此。缺點是:
·會增加視頻碼流的數據比特率;
·經MPEG-4有損壓縮後會丟失水印;
·會降低視頻質量;
·對於已壓縮的視頻,需先進行解碼,然後嵌入水印,再重新編碼。
(2)視頻水印嵌入方案二:水印嵌入在編碼階段的離散餘弦變換(DCT)的直流系數(DC)中(量化後、預測前)。此類方案的優點是:
·水印僅嵌入在DCT系數中,不會增加視頻流的數據比特率;
·易設計出抗多種攻擊的水印;
·可通過自適應機制依據人的視覺特性進行調制,在得到較好的主觀視覺質量的同時得到較強的抗攻擊能力。
缺點是對於已壓縮的視頻,有一個部分解碼、嵌入、再編碼的過程。
(3)視頻水印嵌入方案三:水印直接嵌入在MPEG-4壓縮比特流中。優點是不需完全解碼和再編碼的過程,對整體視頻信號的影響較小。缺點是:
·視頻系統對視頻壓縮碼率的約束將限制水印的嵌入量;
·水印的嵌入可能造成對視頻解碼系統中運動補償環路的不良影響;
·該類演算法設計具有一定的復雜度。
2 MPEG-4視頻水印的實現
基於上述的各種方案,本文在方案二的基礎上提出了一種針對MPEG-4視頻編碼系統的擴展頻譜數字水印技術改進方案,將擴頻調制後的水印信息嵌入到視頻流IVOP(Intra Video Object Plane)中色度DCT直流系數的最低位。本方案不需要完全解碼,大大減少了運算的
復雜度,提高了實時性。同時由於水印嵌入在直流系數中,在保證視頻效果不失真的前提下,水印具有很強的魯棒性。
2.1 MPEG-4視頻的特點 MPEG-4視頻編解碼基於VOP(Video Object Plane)。
從時間上看,VOP分為內部VOP(1VOP)、前向因果預測VOP(PVOP)、雙向非因果預測VOP(BVOP)、全景的靈影VOP(SVOP)。IVOP只用本身的信息進行編碼;PVOP利用過去的參考VOP進行運動補償的預測編碼;BVOP利用過去和將來的參考VOP進行雙向運動補償的預測編碼;SVOP一系列運動圖像中的靜止背景。因此IVOP的圖像信息較獨立,最適合嵌入水印信息。
從空間上看,它由若干個大小為16×16的宏塊(Macro Block)組成,每個宏塊包括大小為8×8的6個子塊。其中4個亮度子塊Y,1個色差子塊U,1個色差子塊V。IVOP編碼基本流程如圖3所示。
為了不受量化過程的影響,本方案將水印嵌入在量化後的DCT系數中,從而提高了水印生存的穩定性。在MPEG-4壓縮演算法中,DCT系數的量化是關鍵,它直接影響視頻的質量和碼流控制演算法。為此,MPEG-4提供了一個供參考的標准量化表。該表根據人類視覺模型(HVS)建立。考慮到人眼對高頻信息損失的敏感度較低頻損失小很多,因此通常把水印嵌入到中低頻信息中,提高了水印信息的魯棒性。另外,根據人眼對亮度信息的變化比色度信息較敏感這一特性,為最大限度地保持視頻質量,本方案將水印嵌入到色度(U子塊)DCT系數中。由於DCT是目前多媒體視頻壓縮中被廣泛採用的技術基礎,因此基於DCT的視頻水印方案具有顯著的優勢。將水印信息嵌入到IVOP色度量化後的DCT直流系數中,不但無需引入額外的變換以獲取視頻的頻譜分布,且水印信息不受DCT系數量化帶來的影響。
2.2視頻數字水印演算法與實現
在MPEG-4視頻中,由於IVOP中色度子塊的DCT直流系數是一個在視頻流中始終存在且很魯棒的參數,本方案將水印信息經m序列(最長線性反饋移存器序列)調制後嵌入到IVOP的色度子塊DCT的直流系數中。這樣水印信息在不影響視頻效果的情況下難以去除,所以魯棒性足夠強。本方案採用擴頻的方法,以方便有效地檢測水印,抵抗各種攻擊和干擾,保密性好。關鍵問題是色度DCT的直流系統是一個對視覺系統很敏感的參數,本方案在色度DCT的直流系數上加水印相當於對其加入微量干擾,必須使這種干擾低於一定的門限值,使人眼的視覺系統對視頻中色度的微小變化感覺不到。經過試驗將水印嵌入到IVOP的色度DCT的直流系數的最低位能滿足要求。
2.2.1視頻數字水印的嵌入
偽隨機的擴展序列長度為255(28-1),每一水印信息位通過偽隨機擴展序列的調制嵌入到相應的IVOP色度對應的DCT直流系數(量化後、預測前)的最低位,這樣水印信息在不影響視頻效果的情況下一般難以去除。同時,嵌入在直流系數的最低位,帶來的誤差非常小。
偽隨機的擴展序列產生代碼如下:
#define M_LEN 255
#define M_SERIES 8
for(I=0;i for(i=M_SERIES;i {
m[i]=m[i-1]+m[i-5]+m[I-6]+m[i-7]
m[i]=m[i]%2;
}
水印信息位擴展調制方式為:
·水印信息位為0,偽隨機的擴展序列不變;
·水印信息位為1,偽隨機的擴展序列取反。
這個過程可以用異或運算實現。代碼如下:
Wmij=Wi^m[j];
/*每一水印信息位擴展調製成255位的擴展調制位*/
這里Wi表示水印信息碼流,WMij表示水印信息擴展調制碼流。設UDCij表示視頻IVOP色度DCT的直流系數(量化後、DC預測計算之前)序列,為了方便,用一個位元組表示一位二進制碼流信息。
水印嵌入過程如下:
if(WMij) UDCij 1=1;
/*根據擴展調制後的碼流嵌入水印信息*/
else UDCij&=0xFFFE;
2.2.2視頻數字水印的提取
水印信息提取是水印信息嵌入的逆過程,代碼如下:
if(inv_UDCij &1)inv_Wmij=1;
else inv_Wmij=0;
這里inv_UDCij表示帶有水印信息的視頻IVOP色度DCT的直流系數(反量化前、DC預測計算之後)序列;inv_WMij表示檢測到的水印信息擴展調制碼流。每個IVOP色度子塊在解碼時得到一位擴展調制的信號位,每連續255個擴展調制的信號位可解調得到1位水印
信息,具體分析如下:
用與原始偽隨機序列結構相同且完全同步的序列與得到的連續255個擴展調制的信號接收序列進行異或運算,統計運算後1的個數記為OneCount。由於m序列的自相關函數只有兩種取值(1和-1/(2n-1)),屬於雙值自相關序列。因此,如果數據未受到任何攻擊和干擾,OneCount只有兩種結果:255或0。當OneCount=255時,得到的水印信息位為1;當OneCount=0時,得到的水印信息位為0。如果數據受到攻擊或干擾,OneCount有多種結果。根據統計分析,當OneCount>127時,得到的水印信息位為1,並且這255個IVOP色度子塊中有(255-OneCount)個子塊受到攻擊或干擾;當OneCount<127時,得到的水印信息位為0,並且這255個IVOP色度子塊中有OneCount個子塊受到攻擊或干擾。這樣既可以統計總共有多少視頻IVOP色度子塊受到攻擊或干擾,同時又能極強地恢復出原始水印信息。
3試驗結果分析
試驗結果表明,m序列的長度越長,檢測效果越好,但能夠嵌入的水印信息量也相應地減少。本方案中水印只嵌入在視頻的IVOP中,不修改PVOP和BVOP,對幀跳躍與幀刪除攻擊穩健,因為IVOP不可以被跳躍或刪除。同時,由於水印信息嵌入在DCT的直流系數中,而直流系數的變化對視頻效果會有較大的影響,所以採取將水印信息嵌入到色度子塊DCT直流系數的最低位。這樣不僅使水印嵌入計算的復雜度大為降低,為MPEG-4編解碼節省了時間,還可取得良好的視頻效果,達到了不可覺察性。從統計角度看也不會增加視頻碼流。另外,水印提取時無需原始視頻。若水印信息未受到攻擊,則本方案可准確地提取到原始視頻的完全水印;若水印信息受到攻擊,根據擴頻解調性質,本方案可以最大限度地恢復出原始水印信息,並統計出有多少個IVOP色度子塊受到攻擊。
由於DCT是目前多媒體視頻壓縮幾大標准(H.261、H.263、MPEG-4等)共同採用的技術基礎。因此基於DCT的水印方案在視頻壓縮中具有非常重要的研究意義和應用前景。本文在此基礎上提出了一個基於擴展頻譜的MPEG-4視頻數字水印方案。實踐證明,在不需要原始視頻的情況下,本方案能敏感地檢測到數據是否被篡改或破壞,並具有良好的穩定性和魯棒性,從而提供了知識產權的保護,防止非法獲取。
本文摘自《電子技術應用》
應用:數字水印
消息認證與數字簽名可以應用到數字水印中。
傳統水印用來證明紙幣或紙張上內容的合法性,數字水印(digital watermark)用以證明一個數字產品的擁有權、真實性。數字水印是嵌在數字產品中的數字信息。可以是作者的序列號、公司標志、有特殊意義的文本等。
數字水印主要用於:阻止非法復制(間接的)、確定所有權(作者、發行人、分發商、合法的最終用戶)、確定作品的真實性和完整性(是否偽造、被篡改)、證實收件人、不可否認的傳送、法庭證據的驗證、贗品甄別、識別文件來源與版本、Web網路巡邏監視盜賊等。
傳統水印是人眼可以看得見的,而數字水印可以分為可感知的(Perceptible)和不易感知的(Inperceptible)兩種。
可感知的數字水印,主要用於當場聲明對產品的所有權、著作權及來源,起到一個宣傳廣告或約束的作用。可感知水印一般為較淡的或半透明的不礙觀瞻的圖案;比如電視台節目播放的同時,在某個角落插上電視台的半透明標志。另一個用途是為了在線分發作品,比如先將一個低解析度的有可見水印的圖像免費送人,其水印往往是擁有者或賣主的信息,它提供了尋找原高解析度作品的線索,若想得到高解析度的原作品則需付費。有些公司在產品出售前為了在網路上宣傳其產品,先做上可逆可見水印分發,付費購買時,再用專用軟體將可見水印去掉,加入不可見水印(發行人、分發商、最終用戶等的信息)。可見水印還有另一些用途,那就是為了節約帶寬、存儲空間等原因,在VCD、DVD等電影拷貝中用嵌入不可見水印的方式配上多種語言的副標題和字幕,待播放時由硬體根據需要實時地解出每一幀中的水印文字,將其顯示在屏幕上。
可見水印在某些產品中或多或少降低了作品的觀賞價值,使其用途相對受到一定限制。不易感知的水印的應用層次更高,製作難度更大。
不易感知的數字水印就像隱形墨水技術中的看不見的文字,隱藏在數字產品中。水印的存在要以不破壞原數據的欣賞價值、使用價值為原則。數字水印按照某種方式植入被保護的信息中,在產生版權糾紛時,通過相應的演算法提取出該數字水印,從而驗證版權的歸屬。被保護的信息可以是圖像、聲音、視頻或一般性的電子文檔等。為了給攻擊者增加去除水印的難度,大多數水印製作方案都在水印的嵌入、提取時使用密鑰。
圖5.7水印的嵌入與提取
數字水印技術雖然不能阻止盜版活動的發生,但它可以判別對象是否受到保護,監視被保護數據的傳播、真偽鑒別和非法拷貝、解決版權糾紛並為法庭提供證據。
數字水印的設計需要考慮以下幾個方面:
魯棒性:是指被保護的信息經過某種改動後抵抗隱藏信息丟失的能力。例如傳輸過程中的信道噪音、濾波操作、重采樣、有損編碼壓縮、D/ A或 A/ D轉換、圖像的幾何變換(如平
㈡ 水印演算法的分類
1.空域演算法 2.Patchwork演算法 3.變換域演算法
4.壓縮域演算法 5.NEC演算法 6.生理模型演算法
詳細的:
空域演算法:該類演算法中典型的水印演算法是將信息嵌入到隨機選擇的圖像點中最不重要的像素位 (LSB:least significant bits)上,這可保證嵌入的水印是不可見的。但是由於使用了圖像不重要的像素位,演算法的魯棒性差,水印信息很容易為濾波、圖像量化、幾何變形的操作破壞。另外一個常用方法是利用像素的統計特徵將信息嵌入像素的亮度值中。
這里還有很多關於水印的,有興趣的可以去看看(找了很久的)
http://digi.it.sohu.com/s2006/zbqd/
Patchwork演算法:方法是隨機選擇N對像素點 (ai,bi) ,然後將每個ai點的亮度值加 1 ,每個bi點的亮度值減 1,這樣整個圖像的平均亮度保持不變。適當地調整參數,Patchwork方法對JPEG壓縮、FIR濾波以及圖像裁剪有一定的抵抗力,但該方法嵌入的信息量有限。為了嵌入更多的水印信息,可以將圖像分塊,然後對每一個圖像塊進行嵌入操作。
變換域演算法:該類演算法中,大部分水印演算法採用了擴展頻譜通信 (spread spectrum communication)技術。演算法實現過程為:先計算圖像的離散餘弦變換 (DCT),然後將水印疊加到DCT域中幅值最大的前k系數上(不包括直流分量),通常為圖像的低頻分量。若DCT系數的前k個最大分量表示為D={ di },i=1 ,… ,k,水印是服從高斯分布的隨機實數序列W ={ wi },i=1 ,… ,k,那麼水印的嵌入演算法為di = di(1 + awi),其中常數a為尺度因子,控制水印添加的強度。然後用新的系數做反變換得到水印圖像I。解碼函數則分別計算原始圖像I和水印圖像I*的離散餘弦變換,並提取嵌入的水印W*,再做相關檢驗 以確定水印的存在與否。該方法即使當水印圖像經過一些通用的幾何變形和信號處理操作而產生比較明顯的變形後仍然能夠提取出一個可信賴的水印拷貝。一個簡單改進是不將水印嵌入到DCT域的低頻分量上,而是嵌入到中頻分量上以調節水印的頑健性與不可見性之間的矛盾。另外,還可以將數字圖象的空間域數據通過離散傅里葉變換(DFT)或離散小波變換(DWT)轉化為相應的頻域系數;其次,根據待隱藏的信息類型,對其進行適當編碼或變形;再次,根據隱藏信息量的大小和其相應的安全目標,選擇某些類型的頻域系數序列(如高頻或中頻或低頻);再次,確定某種規則或演算法,用待隱藏的信息的相應數據去修改前面選定的頻域系數序列;最後,將數字圖象的頻域系數經相應的反變換轉化為空間域數據。該類演算法的隱藏和提取信息操作復雜,隱藏信息量不能很大,但抗攻擊能力強,很適合於數字作品版權保護的數字水印技術中。
壓縮域演算法:基於JPEG、MPEG標準的壓縮域數字水印系統不僅節省了大量的完全解碼和重新編碼過程,而且在數字電視廣播及VOD(Video on Demand)中有很大的實用價值。相應地,水印檢測與提取也可直接在壓縮域數據中進行。下面介紹一種針對MPEG-2壓縮視頻數據流的數字水印方案。雖然MPEG-2數據流語法允許把用戶數據加到數據流中,但是這種方案並不適合數字水印技術,因為用戶數據可以簡單地從數據流中去掉,同時,在MPEG-2編碼視頻數據流中增加用戶數據會加大位率,使之不適於固定帶寬的應用,所以關鍵是如何把水印信號加到數據信號中,即加入到表示視頻幀的數據流中。對於輸入的MPEG-2數據流而言,它可分為數據頭信息、運動向量(用於運動補償)和DCT編碼信號塊3部分,在方案中只有MPEG-2數據流最後一部分數據被改變,其原理是,首先對DCT編碼數據塊中每一輸入的Huffman碼進行解碼和逆量化,以得到當前數據塊的一個DCT系數;其次,把相應水印信號塊的變換系數與之相加,從而得到水印疊加的DCT系數,再重新進行量化和Huffman編碼,最後對新的Huffman碼字的位數n1與原來的無水印系數的碼字n0進行比較,只在n1不大於n0的時候,才能傳輸水印碼字,否則傳輸原碼字,這就保證了不增加視頻數據流位率。該方法有一個問題值得考慮,即水印信號的引入是一種引起降質的誤差信號,而基於運動補償的編碼方案會將一個誤差擴散和累積起來,為解決此問題,該演算法採取了漂移補償的方案來抵消因水印信號的引入所引起的視覺變形。
NEC演算法:該演算法由NEC實驗室的Cox等人提出,該演算法在數字水印演算法中佔有重要地位,其實現方法是,首先以密鑰為種子來產生偽隨機序列,該序列具有高斯N(0,1)分布,密鑰一般由作者的標識碼和圖象的哈希值組成,其次對圖象做DCT變換,最後用偽隨機高斯序列來調制(疊加)該圖象除直流(DC)分量外的1000個最大的DCT系數。該演算法具有較強的魯棒性、安全性、透明性等。由於採用特殊的密鑰,因此可防止IBM攻擊,而且該演算法還提出了增強水印魯棒性和抗攻擊演算法的重要原則,即水印信號應該嵌入源數據中對人感覺最重要的部分,這種水印信號由獨立同分布隨機實數序列構成,且該實數序列應該具有高斯分布N(0,1)的特徵。
生理模型演算法:人的生理模型包括人類視HVS(HumanVisualSystem)和人類聽覺系統HAS。該模型不僅被多媒體數據壓縮系統利用,同樣可以供數字水印系統利用。利用視覺模型的基本思想均是利用從視覺模型導出的JND(Just Noticeable Difference)描述來確定在圖象的各個部分所能容忍的數字水印信號的最大強度,從而能避免破壞視覺質量。也就是說,利用視覺模型來確定與圖象相關的調制掩模,然後再利用其來插入水印。這一方法同時具有好的透明性和強健性。
㈢ 如何利用matlab軟體實現水印添加和提取
3 視頻水印的嵌入和檢測方案
3.1水印的預處理
採用二值圖像作為待嵌入的水印數據,本文針對的研究對象因為是二維圖像故採用的是二維Arnold變換。
二維Arnold變換定義為:
(3-1)
其中,(x,y)是原圖像的像素點,(x』,y』)是變換後新圖像的像素點,N是圖像階數,即圖像的尺寸大小,一般多為正方形圖像。由於Arnold變換具有周期性,因此可利用其周期性Period來對圖像進行反變換。即在水印嵌入過程中可將水印置亂次數作為密鑰times,再進行水印嵌入,當水印提取出來時,再將其繼續: (Period-times)次即可使其恢復至原圖。這就是利用Arnold的正變換來進行的置亂恢復方案。Arnold變換次數由版權所有者保管。
對水印進行置亂有以下優點:
(1) 採用置亂技術的合法者可以自由控制演算法的選擇,參數的選擇以及使用隨機數技術,從而使非法使用者難以破譯圖像內容,可以提高水印信息的安全性;
(2) 置亂技術可以分散錯誤比特的分布,提高數字水印的視覺效果,從而增強其魯棒性。
3.2 視頻水印的嵌入
水印嵌入演算法關鍵在於以下三點:
(1) 水印的結構;
(2) 水印的嵌入區域;
(3) 嵌入技巧;
本文選取二值圖像作為水印。為了提高水印的魯棒性,大多數的DCT域水印演算法把水印信號嵌入到DCT系數的低頻部分。但低頻區域是圖像的能量集中部分,嵌入到低頻會降低透明性。而嵌入在高頻雖然透明性比較好,但對大多數的圖像處理對高慎拿碧頻成分影響較大,從而降低水印的魯棒性.於是大多數的水印演算法將水印信號嵌入在載體圖像DCT系數的中頻部分,以達到透明性和魯棒性的最佳折衷。各種嵌入技巧敏舉的最終目的還是為了盡量地提高水印的魯棒性和透明性。
用於版權保護的數字水印在盡量提高魯棒性的同時還要滿足人類的視覺極限,因此必須根據HVS找到嵌入位置。
本文將HVS歸納為運動敏感性、紋理敏感性和亮度敏感性。在接下來的嵌入過程中,充分利用了這些特性。如圖3-1中間分支所示。
嵌入過程如圖3-1所示。
圖3-1 水印嵌入過程
從視頻中讀取亮度分量Y,因為它是最有效的數據,根據NEC演算法,嵌入到它裡面的水印才具有最強的魯棒寬舉性。根據式(3-2)所示的運動敏感性閾值計算公式,尋找32幀滿足敏感性比較大的視頻幀Yi (i=1,2,…32)。
(3-2)
其中 (t代表當前幀的編號)
接下來,將Y32中的數據按照64*64的尺寸切分成20塊BYij (j=1,2,…20),於是我們可得到20塊尺寸為64*64*32的三維數據塊BYk (k=1,2,…20),如圖2-3所示。
圖3-2 亮度分量的分塊
根據式(3-3)、式(3-4)所示的亮度敏感性Lk和紋理敏感性Dk計算公式,通過計算,我們選擇計算值都比較高的20塊數據中的一塊 ( )作為水印的嵌入塊。
(3-3)
(3-4)
其中, 是BYk中的亮度數據, 。
最後,折衷考慮復雜度和性能,我們對選定的一塊數據塊 實施了2階三維DCT變換。根據NEC演算法的思想,且為了抵抗濾波和壓縮攻擊,我們將置亂後的水印序列嵌入到了第一幀DCT系數c(u,v)中,詳見式(3-5)。
(3-5)
其中,w(u,v)是水印序列中的數據,c(u,v)是DCT變換後第一幀中的系數,c』(u,v)是嵌入水印後的系數,S是非負整數(且滿足T1=S/4, T2=3*T1)。
嵌入完成後,對c』(u,v)實施反2階三維DCT變換就得到了嵌入水印後的視頻數據,再將它們放回原來的位置即可。
需要說明的是,在整個嵌入過程中,所有用到的參數都應作為密鑰保留。
具體方案如下所述:
第一步:抽取32幀視頻Y分量數據:
(1) 讀取視頻文件;
(2) 提取所有的Y分量,把所有的Y分量分為32組;
(3) 每組4幀,從各組中選出一個最運動敏感的,判斷每組中最大的Y_deltmax,存入變數m;
(4) 定位最大的Y_deltmax,存入變數w;
Y32是就是所需的視頻幀中Y分量滿足敏感性的32幀視頻 (355*288*32)。
第二步:分塊過程:
(1) 對行分塊(4塊);
(2) 對列分塊(5塊);
(3) 隔十幀取一幀,共從32幀中取4幀以降低運算量;
(4) 一個數一個數的賦值;
切成20塊,每塊為64*64*4的數據塊BY,維數不同,只能逐個象素賦值。
第三步:根據公式計算數據塊BY的亮度敏感性L和紋理敏感性D
第四步:選取L和D都比較大的一塊嵌入水印
(1) 判斷最大的L,存入變數Lm;
(2) 去掉這個最大的塊再比較;
(4) 賦第一塊的L的權重為20;
(5) 計算第2塊到第20塊的L的權重;
(6) 同理對D進行處理;
(7) 計算每塊BY的權重;
(8) 對所有的20塊BY的權重qz按由小到大的順序進行排序,並保持原來的位置索引index,則index[20]就是所要選取的塊;
第五步:三維DCT變換
由於視頻是由圖像數據流組成的,所以可以把視頻的每一幀看作是一幅靜止的圖像。對運動圖像序列進行3D-DCT,可以視為先對視頻的每一幀進行2D-DCT,再對幀間方向進行1D-DCT。
第六步:嵌入水印數據
將置亂的水印序列嵌入所選的DCT系數中,即嵌入經過3D-DCT變換後的數據塊中的第一幀數據中。然後把這些數據進行反3D-DCT變換後放回原位置。
第七步:將所選的數據放回原位置
最後一步:寫視頻文件
3.3視頻水印的檢測
水印提取是嵌入的逆過程,本演算法的一大優勢是,水印提取時無需原始視頻數據的參與,但依然需要一些參數。它們是:
(1) 嵌入過程第四步產生的塊BY的排序結果,由此我們可以得知水印的大致嵌入位置;
(2) 嵌入時指定的參數S;
(3) 需要Arnold變換的次數和周期;
獲得了上面的各項參數,水印的提取就十分簡單,具體過程如圖3-3所示。
圖3-3 水印盲提取過程
方案如下:
從待提取水印的視頻數據 (可能是被攻擊過後的視頻)中抽取出亮度分量Y』,根據密鑰,抽出32幀中的四幀亮度分量 ,然後分別從這組數據中提取水印。
在圖3-3中,首先將 分隔成20塊 ,並找到和 對應的 。然後,對 做二階三維DCT變換,根據式(3-6)提取出水印數據 。
(3-6)
其中, 是DCT系數。
最後,我們將 進行Arnold變換,得到水印圖像,作為最終提取出的水印。
具體步驟如下所述:
第一步:抽取32幀視頻Y分量數據:
(1) 讀取嵌入水印圖像的視頻文件;
(2) 提取所有的Y分量,把所有的Y分量分為32組;
(3) 每組4幀,從各組中選出一個最運動敏感的,判斷每組中最大的Y_deltmax,存入變數m;
(4) 定位最大的Y_deltmax,存入變數w;
Y32是就是所需的視頻幀中Y分量滿足運動敏感性的32幀視頻,Y32是一個355*288*32的三維數組。
第二步:分塊過程:
(1) 對行分塊(4塊);
(2) 對列分塊(5塊);
(3) 隔十幀取一幀,從32幀中共取4幀以降低運算量;
(4) 一個數一個數的賦值;
切成20塊,每塊為64*64*4的數據塊BY,維數不同,只能逐個象素賦值。
經過計算其亮度敏感性和紋理敏感性並排序,index[20]就是本文演算法中嵌入水印的塊;
第三步:三維DCT變換
第四步:Arnold變換
由於本演算法中水印圖像是二值圖像,其Arnold變換是二維變換,周期是Period,嵌入水印時變換了times次,所以此處只需變換(Period-times)次就可得到結果。
第五步:寫圖像文件
提取水印圖像數據並寫成圖像文件
第六步:檢測水印圖像存在與否,並與原水印圖像比較。
最後一步:進行實驗,驗證本文演算法的可見性和魯棒性。
經過以上步驟就是水印圖像信息嵌入視頻中的方法,具體實現過程見第四章。
4 用MATLAB實現視頻水印的嵌入和檢測
Matlab是近年來在國內外廣泛流行的一種可視化科學計算軟體。它的特點是結構簡單、數值計算高效、圖形功能完備、圖像處理方便,是國際公認的最優秀的科學計算與數學應用軟體之一。利用Matlab實現數字水印圖像演算法便捷、高效,省去了繁瑣的程序代碼,避免了科研人員在編程上浪費精力。
其內容已涉及矩陣代數、微積分、應用數學、信號與系統、神經網路、小波分析及應用、數字圖像處理、計算機圖形學、自動控制與通信技術等諸多方面,是科學計算、系統模擬、信號與圖像處理的主流軟體,受到了各方科研人員的青睞,在數字水印技術中得到了廣泛的應用。將Matlab應用於數字水印技術,其優點主要有以下幾個方面:
(1) 強大的數值計算功能
視頻水印技術是針對圖像進行研究的,而圖像是由矩陣表達的,將水印嵌入視頻中及從視頻中將水印提取出來都意味著大量的矩陣運算,而矩陣運算更是Matlab語言的核心,表達自然、直接。因此,利用Matlab強大的矩陣運算功能來實現圖像水印技術非常合適。
(2) 方便的圖像讀取和顯示功能
視頻水印首先要將數據從視頻中讀取出來,嵌入水印後還要將嵌入水印後的數據還原為視頻。Matlab為用戶提供了專門的圖像處理函數,用於讀寫顯示圖像數據。這種方法不像其他編程語言那樣,需要編寫復雜的代碼,只需要簡單地調用Matlab提供的函數即可,相關的函數及其功能主要有下列一些:
imread 將圖像讀入工作空間;
imwrite 將圖像寫入磁碟;
image 提供最原始的圖像顯示函數;
imshow 是最常用的顯示各種圖像的函數;
load將文件讀入工作空間;
(3) 高效的圖像變換功能
數字水印嵌入演算法一般分空域方法和頻域方法。空域方法指通過改變象素的亮度值來加入數字水印:頻域方法指圖像通過某種變換後再嵌入數字水印。與空域法相比,頻域法具有如下優點:在變換域中嵌入的水印信號可以分布到空域的所有象素上,有利於保證水印的不可見性。在變換域中,視覺系統的某些特性(如視頻特性)可以更方便地結合到水印編碼過程中。變換域的方法可以與國際數據壓縮標准兼容,從而實現壓縮域內的水印編碼。因此,變換域的方法應是水印演算法未來趨勢的主流。但是變換域的演算法一般來講計算量都比較大,需要復雜的編程運算,Matlab則改變了這種現狀。在Matlab圖像處理工具箱中,提供了常用的圖像變換函數,復雜的變換域演算法在Matlab中只需簡單地調用函數即可實現,充分體現了使用Matlab的簡便性和高效性。
主要圖像變換函數如下:
dct是一維離散餘弦變換;
idct是一維離散餘弦逆變換;
dct2是二維離散餘弦變換;
idct2是二維離散餘弦逆變換;
(4) 豐富的圖像處理函數
水印技術要求嵌入的水印不可見且有較強的魯棒性。不可見性可通過視覺效果和計算圖像的峰值信噪比來比較優劣,而魯棒性則要對水印後圖像進行各種攻擊,通過比較攻擊後圖像提取出的水印情況來說明問題。Matlab有各種圖像處理函數,可實現對圖像的各種攻擊。
綜上所述,Matlab具有語言簡潔、函數豐富、使用方便、數值計算高效等特點,將功能強大的Matlab軟體應用於數字水印技術是有效的選擇,因此,本文採用Matlab對圖像水印進行研究。
4.1水印的嵌入過程
(1) 基於Arnold變換的圖像置亂
Matlab實現如下:
Arnold變換由function r=Arnold(w0,row,colum,times) 實現,其中w0為讀取的圖像數據,row是行數,colum是列數,times是Arnold變換次數。
function r=Arnold(w0,row,colum,times)
for k=1:times
for i=1:row
for j=1:colum
i1=i+j;
j1=i+2*j;
if i1>row
i1=mod(i1,row);
end
if j1>colum
j1=mod(j1,colum);
end
if i1= =0
i1=row;
end
if j1= =0
j1=colum;
end
w1(i1,j1)=w0(i,j);
end
end
w0=w1;
end
r=w0;
用imwrite(w0,'Arnold.bmp', 'bmp')寫置亂後的圖像文件;在MATLAB中用imshow('Arnold.bmp')顯示此圖像。
本文採用二維的二值水印圖像watermark.bmp,我們將圖像數據(64*64)掃描到二維的矩陣中並實施Arnold變換,從而得到置亂後的二維矩陣。隨著迭代次數的增加,圖像逐漸趨於混亂,不過到一定次數時,又將回到原圖。因為watermark.bmp大小為64*64,故經過試驗圖像迭代48次後將回到原圖,即周期性Period=48。
本演算法選擇置亂8次,因為8次Arnold變換後原水印圖像已經成為無形狀的圖像。實驗結果表明,該方法能較好地刻劃圖像的置亂程度,與人的視覺基本相符。但需要指出的是不一定圖像的置亂次數越多其置亂度就越高。所以,在水印嵌入時,為了提高其魯棒性而增加置亂次數的方法是不科學的,合理的做法是計算置亂後圖像的置亂度,達到較為滿意的置亂度後就可停止置亂,避免盲目的提高置亂次數。
置亂次數作為密鑰有視頻版權所有者保管,如果非法所有者不知道置亂次數就很難恢復出原水印圖像。
原水印圖像如圖4-1所示,本演算法實現置亂8次後效果如圖4-2所示:
圖4-1 水印原圖像 圖4-2 置亂8次後
(2)Matlab實現嵌入過程:
本文中選取352×288×142的yuv格式視頻流進行測試。YUV顏色模型是一種常用的顏色模型,其基本特徵是將亮度信號與顏色信號分離,由於人眼對亮度的變化比對顏色的變化敏感,因此,YUV模型中Y分量的值所佔帶寬大於等於彩色分量所佔帶寬。YUV色彩空間模型可以在一定程度上避免RGB模型的高分散性和高相關性所帶來的閉值劃分問題,計算也較為簡單。這種色彩空間模型中Y和UV分量是相互獨立的,反映了人眼觀察彩色的視覺規律,在實際中應用較多。其中「Y」表示明亮度(Luminance或Luma),也就是灰階值;而「U」和「V」表示的則是色度(Chrominan「或Chroma),作用是描述影像色彩及飽和度,用於指定像素顏色。因此選擇YUV顏色空間更加穩定,易於分析。
本文選擇測試視頻中的第39幀如圖4-3所示。YUV格式的視頻中Y:U:V=4:2:2,但通俗叫「420」格式。
圖4-3 未嵌入水印的視頻
第一步:讀取文件;
讀取視頻文件由[yuv,Y,u,v,num_f]=loadyuv(filename)實現,filename是所選取得視頻文件名稱。yuv是一個四維數組,它返回的是視頻的yuv分量,Y是亮度分量,u和v是色彩分量,num_f是視頻文件中所有幀的數目。
讀取一幀數據的YUV分量在Matlab中由以下源代碼實現:
function [YUV,Y,U,V] = loadFileYUV(width,heigth,Frame,fileName,format)
[Teil_h,Teil_b]=YUVFormat(format);
fileId = fopen(fileName,'r');
其中width:每一幀的寬度;heigth:每一幀的高度;Frame:當前load的那一幀;filename:視頻文件名;Teil_h:垂直比例參數;Teil_b:水平比例參數;YUV:返回值,返回YUV分量,是一個三維變數,本文演算法中將U、V分量的寬度和高度設成與Y一樣的了,因此U、V分量中有重復的。YUV(:,:,1)存放Y分量;YUV(:,:,2)存放U分量;YUV(:,:,3)存放V分量;Y,U,V是三個分量的實際值,二維矩陣,沒有重復,他們的長度可能不一樣。
Y_delt(j)=delt(Y(:,:,w(i)),Y(:,:,4*(i-1)+j));
其中Y_delt是當前幀與下一組各幀的Y的差,m(i)=max(Y_delt(j));判斷每組中最大的Y_deltmax,存入變數m,以此來得到每組中最運動敏感的視頻幀。w(i+1)=4*(i-1)+k定位最大的Y_deltmax,存入變數w。
最後得到Y32=double(Y(:,:,w)), Y32是視頻幀中Y分量滿足敏感性的32幀視頻是一個355*288*32的三維數組。
第二步:分塊;
分塊時因為需要塊標號,由此造成維數不同,所以只能逐個象素賦值,在Matlab中由BY(t1,t2,t3,j*5+k+1)= double(Y32((64*j+t1),(64*k+t2),i))實現,切成20塊,每塊為64*64*4的數據塊BY ,其中t1是塊的杭坐標,t2是塊的列坐標,t3幀標號,j*5+k+1是快標號。
第三步:三維DCT變換;
運動圖像序列的每一幀可以看作是靜止圖像 對運動圖像序列進行3D DCT,可以視為先對每幀進行2D DCT,再對幀間方向進行1D DCT。
%對每一塊的幀間方向進行1D DCT變換
for i=1:64
for j=1:64
dcta(i,j,1:4,index(20))=dct(BY(i,j,1:4,index(20)));
end
end
%對每一塊的每一幀進行2D DCT
for i=1:4
dct3a(:,:,i,index(20))=dct2(dcta(:,:,i,index(20)));
end
第四步:嵌入水印過程;
讀入二值水印圖像由message=double(imread('watermark.bmp'))實現 ,message是一個由0和1組成的二維數組。
將置亂的水印序列嵌入所選的dct系數中,源代碼如下所示:
其中dct3a是DCT系數,index[20]是紋理敏感性和亮度敏感性都比較好的一塊,S作為密鑰由版權所有者保管。
S=60;
T1=S/4;
T2=3*T1;
for i=1:64
for j=1:64
if (w2(i,j)==1)
if (dct3a(i,j,1,index(20))>=0)
dipin(i,j)=dct3a(i,j,1,index(20))-mod(dct3a(i,j,1,index(20)),S)+T1;
end
if (dct3a(i,j,1,index(20))<0)
dipin(i,j)=dct3a(i,j,1,index(20))+mod(abs(dct3a(i,j,1,index(20))),S)-T1;
end
end
if (w2(i,j,:)==0)
if (dct3a(i,j,1,index(20))>=0)
dipin(i,j)=dct3a(i,j,1,index(20))-mod(dct3a(i,j,1,index(20)),S)+T2;
end
if (dct3a(i,j,1,index(20))<0)
dipin(i,j)=dct3a(i,j,1,index(20))+mod(abs(dct3a(i,j,1,index(20))),S)-T2;
end
end
end
end
第五步:三維DCT反變換;
先對塊的第一幀進行二維DCT反變換,然後在對其它三幀進行二維反變換,最後對幀間方向進行一維DCT反變換。此過程由Matlab實現如下:
二維DCT反變換:
idcta(:,:,1,index(20))=idct2(dipin);
for i=2:4
idcta(:,:,i,index(20))=idct2(dct3a(:,:,i,index(20)));
end
對每一塊的幀間方向進行一維DCT反變換
for i=1:64
for j=1:64
idct3a(i,j,1:4,index(20))=idct(idcta(i,j,1:4,index(20)));
end
end
第六步:把這些數據放入原位置;
第七步:寫視頻文件;
寫視頻文件由以下程序實現,其中fileId為寫入視頻文件的位置。
fileId = fopen('vectra_w.yuv','wb')
fwrite(fileId,Y(:,:,i)' , 'uchar');
fwrite(fileId,u(:,:,i)' , 'uchar');
fwrite(fileId,v(:,:,i)' , 'uchar');
效果如圖4-4所示:
圖4-4 嵌入水印的視頻
4.2水印的檢測過程
水印的檢測過程就是嵌入水印的逆過程,其Matlab實現如下所示:
filename='vectra_w.yuv';此文件是對含有水印的視頻(可能是被攻擊過後的視頻)文件。
[yuv,Y,u,v,num_f]=loadyuv(filename);
讀取視頻文件和三維DCT正變換其原理和嵌入過程相同,此處不再贅述。
提取水印數據在Matlab中由以下程序實現,其中S、T1、T2等都是嵌入時的密鑰,版權所有者擁有它。
for i=1:64
for j=1:64
if (mod(abs(dct3b(i,j,1,index(20))),S)<((T1+T2)/2))
shuiyin(i,j)=1;
end
if (mod(abs(dct3b(i,j,1,index(20))),S)>=((T1+T2)/2))
shuiyin(i,j)=0;
end
end
end
Arnold反變換如下所示:
w0=shuiyin;
w2=Arnold(w0,Hm,Wm,40);
w0是檢測到的水印數據,Hm和Wm是水印數據的行和列,變換次數為40。
寫水印文件,檢測水印圖像存在與否,並且和原水印圖像有無差異。
imwrite(w2,'恢復.bmp', 'bmp');
imshow('恢復.bmp');
綜上,水印的嵌入主要經過將視頻和水印分別進行預處理,然後根據嵌入演算法選擇水印的合適嵌入位置以及合理嵌入策略,從而得到含水印的視頻數據。在各個環節中採用HVS特性來提高視頻水印的魯棒性.最後用相應的視頻水印檢測策略提取出水印從而實現視頻的保護。結果顯示本文演算法能成功提取出水印圖像。