❶ 數字水印的水印演算法
近年來,數字水印技術研究取得了很大的進步,下面對一些典型的演算法進行了分析,除特別指明外,這些演算法主要針對圖像數據(某些演算法也適合視頻和音頻數據)。 該類演算法中,大部分水印演算法採用了擴展頻譜通信(spread spectrum communication)技術。演算法實現過程為:先計算圖像的離散餘弦變換(DCT),然後將水印疊加到DCT域中幅值最大的前k系數上(不包括直流分量),通常為圖像的低頻分量。若DCT系數的前k個最大分量表示為D=,i=1 ,… ,k,水印是服從高斯分布的隨機實數序列W =,i=1 ,… ,k,那麼水印的嵌入演算法為di = di(1 + awi),其中常數a為尺度因子,控制水印添加的強度。然後用新的系數做反變換得到水印圖像I。解碼函數則分別計算原始圖像I和水印圖像I*的離散餘弦變換,並提取嵌入的水印W*,再做相關檢驗 以確定水印的存在與否。該方法即使當水印圖像經過一些通用的幾何變形和信號處理操作而產生比較明顯的變形後仍然能夠提取出一個可信賴的水印拷貝。一個簡單改進是不將水印嵌入到DCT域的低頻分量上,而是嵌入到中頻分量上以調節水印的頑健性與不可見性之間的矛盾。另外,還可以將數字圖像的空間域數據通過離散傅里葉變換(DFT)或離散小波變換(DWT)轉化為相應的頻域系數;其次,根據待隱藏的信息類型,對其進行適當編碼或變形;再次,根據隱藏信息量的大小和其相應的安全目標,選擇某些類型的頻域系數序列(如高頻或中頻或低頻);再次,確定某種規則或演算法,用待隱藏的信息的相應數據去修改前面選定的頻域系數序列;最後,將數字圖像的頻域系數經相應的反變換轉化為空間域數據。該類演算法的隱藏和提取信息操作復雜,隱藏信息量不能很大,但抗攻擊能力強,很適合於數字作品版權保護的數字水印技術中。
1. 基於離散餘弦變換的數字水印
最早的基於分塊DCT水印技術出現於E Koch,J Zhao的文獻。針對靜止圖像和視頻壓縮標准(JPEG和MPEG),他們的水印方案中圖像也被分成8×8的塊,由一個密鑰隨機的選擇圖像的一些分塊,在頻域的中頻上稍微改變一個三元組以隱藏二進序列信息。選擇在中頻分量編碼是因為在高頻編碼易於被各種信號處理方法破壞,而在低頻編碼則由於人的視覺對低頻分量很敏感,對低頻分量的改變易於被察覺。未經授權者由於不知道水印嵌入的區域,因此是很難測出水印的,此外,該水印演算法對有損壓縮和低通濾波是魯棒的。將圖像分割成8×8塊,並對每個塊做DCT變換,然後隨機選擇構造所有塊的一個子集,對子集的每一個塊,選擇一組頻率並嵌入二進制水印信息。由於頻率組的選擇不是基於最顯著分量,並且頻率系數的方差較小,因此該方法對雜訊、幾何變形以及多文檔攻擊比較敏感。
Cox等人於1995年提出了基於圖像全局變換的水印方法,稱之為擴頻法。這也是目前大部分變換域水印演算法中所用到的技術。它將滿足正態分布的偽隨機序列加入到圖像的DCT變換後視覺最重要系數中,利用了序列擴頻技術(SS)和人類視覺特性(HVS)。演算法原理為先選定視覺重要系數,再進行修改,最常用的嵌入規則如下:
其中分別是修改前和修改後的頻域系數,α是縮放因子,是第i個信息位水印。
一般說來,乘法准則的抗失真性能要優於加法准則。水印的檢測是通過計算相關函數實現的。從嵌入水印的圖像中提取出是嵌入規則的逆過程,把提取出來的水印與原水印作相似性運算,與制定的閾值比較,可確定是否存在水印。這是穩健性水印的奠基性演算法。
Chiou-Ting Hsu等人提出一種基於分塊DCT的水印,他們的水印是可辨識的圖像,而不是簡單的一個符號或一個隨機數。通過有選擇地修改圖像的中頻系數來嵌入水印。驗證時,衡量提取出的水印同原水印之間的相似性來判斷是否加入了水印
2. 基於離散小波變換的數字水印
與傳統的DCT變換相比,小波變換是一種變解析度的,將時域與頻域相聯合的分析方法,時間窗的大小隨頻率自動進行調整,更加符合人眼視覺特性。小波分析在時、頻域同時具有良好的局部性,為傳統的時域分析和頻域分析提供了良好的結合[6]。
目前,小波分析已經廣泛應用於數字圖像和視頻的壓縮編碼、計算機視覺、紋理特徵識別等領域。由於小波分析在圖像處理上的許多特點可用於信息隱藏的研究,所以這種分析方法在信息隱藏和數字水印領域的應用也越來越受到廣大研究者的重視,目前已經有很多比較典型的基於離散小波變換的數字水印演算法。
除了上述有代表性的變換域演算法外,還有一些變換域水印演算法,它們中有相當一部分是上述演算法的改進及發展。
總的來說,與空域的方法相比,變換域的方法具有如下優點:
(1) 在變換域中嵌入的水印信號能量可以分布到空域的所有像素上,有利於保證水印的不可見性;
(2) 在變換域,人類視覺系統(HVS) 的某些特性(如頻率掩蔽特性)可以更方便地結合到水印編碼過程中,因而其隱蔽性更好;
(3) 變換域的方法可與國際數據壓縮標准兼容,從而易實現在壓縮域(compressed domain) 內的水印演算法,同時也能抵抗相應的有損壓縮。 人的生理模型包括人類視HVS(HumanVisualSystem)和人類聽覺系統HAS。該模型不僅被多媒體數據壓縮系統利用,同樣可以供數字水印系統利用。利用視覺模型的基本思想均是利用從視覺模型導出的JND(Just Noticeable Difference)描述來確定在圖像的各個部分所能容忍的數字水印信號的最大強度,從而能避免破壞視覺質量。也就是說,利用視覺模型來確定與圖像相關的調制掩模,然後再利用其來插入水印。這一方法同時具有好的透明性和強健性。
❷ 基於DCT數字水印演算法的Matlab實現源代碼
讀取圖片
讀取水印圖片(二維碼)
原圖片做成灰度
水印圖做成二值圖
原圖做8*8DCT處理
選擇DC成分以外的元素(每個8*8塊里選擇1個元素)
生成偽隨機亂數
根據亂數做成密鑰
將水印圖根據密鑰與演算法嵌入到第6步驟
嵌入後將每個元素替換原來的第6步元素
做反變換
圖片保存,嵌入完畢
提取
讀取嵌入水印後的圖片
生成嵌入時的偽隨機亂數(生成亂數之前可以加一些幾何攻擊)
根據亂數做成密鑰
嵌入水印後的圖片做8*8DCT處理
選擇DC成分以外的元素(選取跟原來嵌入時相同)
根據演算法與密鑰提取水印圖
提取的水印圖與原水印圖做比較
保存提取的水印圖,提取完畢
❸ 求一個基於DCT的數字水印的C/C++演算法
中去不是把隱藏信息加入到圖像的數據中去,而是通過對數據進行一定得變化使得這些數據通過一定得演算法反映出水印信息
不知道你的數字水印需不需要原稿,如果需要,那很簡單,只要你將原來圖像的某一位置(根據演算法和密鑰決定)的值變化一下,比如
Y=(1-a%)X,Y表示添加後的該位置的值,X表示原來的,a%表示變化強度,對a%的加減反映添加的具體數值(添加的數值只有0或1),你可以用+a%表示添加了1,用-a%表示添加了0,這樣就可以將隱藏信息先轉化成一段01代碼,再通過上述方法添加到圖像中,檢測室通過與原稿的對比,那些地方多了a%X就是添加了1,燒了a%X就是添加了0
至於不需要原稿的數字水印,是通過先後選擇的兩個位置的比較完成的,也就是大於小於來決定添加0還是添加1
另外,站長團上有產品團購,便宜有保證
❹ dct和小波變換有什麼關系 是一個東西么
DCT是離散餘弦變換,基於DCT與小波變換的數字水印演算法都是將空域的圖像數據轉到頻域中去,然後在頻域中添加數字水印,但DCT與小波變換演算法是不同的,因此兩者轉換的頻域的特點不一樣,並不是同一個東西。
離散餘弦變換(Discrete Cosine Transform,簡稱DCT變換)是一種與傅立葉變換緊密相關的數學運算。在傅立葉級數展開式中,如果被展開的函數是實偶函數,那麼其傅立葉級數中只包含餘弦項,再將其離散化可導出餘弦變換,因此稱之為離散餘弦變換。
小波變換(wavelet transform,WT)是一種新的變換分析方法,它繼承和發展了短時傅立葉變換局部化的思想,同時又克服了窗口大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的「時間-頻率」窗口,是進行信號時頻分析和處理的理想工具。它的主要特點是通過變換能夠充分突出問題某些方面的特徵,能對時間(空間)頻率的局部化分析,通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節,解決了Fourier變換的困難問題,成為繼Fourier變換以來在科學方法上的重大突破。
❺ 基於DCT的音頻水印提取問題
音頻信號是一次元信號,圖像可以看做2次元信號。
需嵌入圖像做降維。
而你的DCT嵌入部分是有問題的。
你這個程序比較更適合擴頻嵌入,而且,選著信號也有點問題。
DCT嵌入是,做完DCT在選著頻段嵌入的。而你的這個代碼是,選著頻段然後嵌入,然後做整體做DCT,在整體的嵌入,這樣沒有多要意義。
沒間隔9個采樣點然後提取一個信號,也就是10個一循環。這本身就是一種選著頻段要嵌入的手段了,而對他做DCT,你不論是在DC分量還是AC分量均嵌入水印。這樣是沒有意義的。而且嵌入效果很不好。
我建議你,將信號分段,然後在做DCT,在AC分量中選著前第1/4個頻段嵌入水印,這樣效果會更好一些,而且代碼簡單,容易實現嵌入與盲提取。
你的代碼,需要原信號。。。。。而且,做得很復雜,效果也不理想。
建議:將音頻信號分組,比如每20個分成一組,然後做DCT,做完DCT的第一個元素是DC分量,不要在這里嵌入,選著第3或第4這元素吧,然後通過演算法嵌入吧(演算法能夠決定是否能夠盲提取)。越往後對壓縮的魯爾性越差。注意一點不要選著分段DCT的接近1/2或以後的元素,因為這個部分要在壓縮的時候被刪除的。
還有,起切的信號段有問題。首先,不要從開始階段剪切,你剪切的信號,前面有一段是空白的,你在空白信號段里嵌入了很多情報,選著剪切原信號的時候,在開始幾秒後選著在剪切,這樣避免開始信號過於弱而導致嵌入水印不理想的問題。
做DCT滴定要分段,你的很多嵌入演算法都超出程序給定的最大值,所以會出現這樣問題。
要知道,DC值是很大的,幾乎所以的信息都集中在DC分量中,所以,做DCT量越多DC值就越大。而且能夠嵌入的頻段會變的有限。
做實驗的時候不能只用一個原信號做實驗,選著原信號也是很重要的。比如你選的是開始段(前面183個元素是0也就是空白段)這段信號是比較弱的,「單純」的,選著這個段嵌入效果不是很好的,需要做進一步處理,比如擴頻等處理。建議你選著歌曲的高潮或接近高潮部分。而且你選擇的有點長,建議減半吧。
❻ 畢業論文 「基於DCT變換的圖像數字水印演算法」
既然是畢業論文就別偷懶了。這個題目很簡單。也就是和傅立葉變換的卷積差不多吧
❼ 求以下基於DCT水印的嵌入演算法和水印提取的演算法,在matlab中運行的代碼是怎樣的呢這是一種dct改進演算法
非常感謝你的回答。謝謝
❽ 基於DCT演算法進行數字水印提取
其實程序的問題不大,主要是你的演算法魯棒性太差,只在dct變換後找了一位來和原圖作比較,在經過高斯雜訊後,頻域上的值已經基本上不能反映你的水印信息了。所以你出來的圖就沒有信息了。建議你修改演算法,主要是找到高斯雜訊後也不太受影響的信息。
❾ 求個《 DCT域數字圖像的水印載入與提取》的畢業論文,包括源代碼注釋,給高分!
較早利用分塊DCT的水印技術是Koch.E、Zhao.J的文章[1],他們的水印方案是用一個密鑰隨機的選擇圖像的一些分塊,在頻域的中頻上稍稍改變一個三元組來隱藏二進制序列信息。這種方法對有損壓縮和低通濾波是穩健的。Cox等[2]提出了著名的基於圖像全局變換的數字水印技術,該方案對整個圖像作離散餘弦變換(DCT),然後將水印嵌入到預先設定的低頻分量中,水印信號由高斯分布的實數序列組成,演算法不僅在視覺上具有不可察覺性,而且穩健性也非常好,可經受JPEG壓縮、濾波、剪切等攻擊。Barni等[3]提出一種利用HVS掩蔽特性的基於DCT的水印演算法,在水印嵌入階段,對的圖像進行的DCT變換,對DCT系數按Zig-Zag掃描重新排列為一維向量,留下向量中開始的L個系數不作修改,對第L個系數後面的M個系數進行修改以嵌入水印。黃繼武等人[4]在對DCT系數DC和AC分量的定性和定量分析的基礎上,指出DC分量比AC分量更適合嵌入水印,嵌入DC分量的水印具有更好的穩健性,並提出了一個利用DC分量的自適應演算法。
以上演算法至少有以下兩個缺點:①在水印提取過程中使用了原始圖像,這一點在實時的網路環境中很難做到;②只能給出水印存在有無的回答,在許多應用場合要求水印是有意義的,如一個二維圖像(商標、印鑒等)。顯然,這種有意義的水印所包含的信息量、可感知性、可辯識性及保密性,是無意義的偽隨機雜訊所不能比擬的。
本文在研究了前人演算法的基礎上,提出了一個利用塊分類的DCT域自適應擴頻圖像水印演算法,嵌入的水印是一個可視二值圖像。用兩個不相關的偽隨機序列分別代表水印信息中的0和1,從而達到擴頻的目的,將擴頻後的水印信號,嵌入到分塊DCT域的中低頻段系數中。在嵌人過程中充分考慮到了局部圖像的復雜度,能夠自適應地調整嵌人強度,水印檢測演算法不需要原始圖像,實現了盲檢測。模擬實驗表明:圖像經過JPEG有損壓縮、低通與中值濾波、剪切等圖像處理操作後仍是穩健的。
❿ DCT域的數字水印技術有哪些優越性
數字水印是指以可感知或不可感知的形式嵌入到數字多媒體產品中、用於版權保護、內容檢驗或提供其它信息的信號。數字水印技術以其特有的優越性可以應用在諸多領域,具有重要的應用意義和實用價值。 本文通過對現有的一些數字水印演算法以及分形、小波、離散餘弦變換理論和JPEG、JPEG2000壓縮標準的學習和研究,提出了幾種數字水印演算法: 一、基於小波變換和分形理論的數字水印演算法,有效的縮減了傳統分形編碼方法嵌入水印所需時間。 二、DCT域基於改進的線性內插的魯棒性數字水印演算法,該方法對於JPEG有損壓縮等處理操作具有一定的魯棒性。 三、基於線性內插的可見性數字水印演算法,解決了可見水印需要隱藏的信息量大的問題,並且對於一些常見的圖像處理操作具有一定的魯棒性。 四、適合於JPEG2000的魯棒性數字水印演算法,該演算法對於JPEG2000有損壓縮具有較好的抵抗能力。