DCT域自適應混沌加密的二值圖像數字水印算法
目前,在保護數字作品的版權和安全問題上,有的學者結合密碼學方面的知識,對帶有版權信息的二值圖像水印進行加密,然后嵌入到變換域的系數中,使受保護的數字產品具有雙重安全性。而今天,我給大家介紹另外一種方法,利用人類視覺系統HVS對圖像所具有的頻率掩蔽、亮度掩蔽和對比度掩蔽等特性和混沌加密二值水印所具有的雙重安全特性,一種基于DCT域中頻的自適應混沌加密的數字水印算法應運而生。
基于DCT的混沌加密二值圖像水印算法
本算法包括以下四個主要部分:對原始圖像進行塊分類、混沌產生隨機序列、加密水印的產生和水印的嵌入和提取。
1、基于人類視覺系統(HVS)特性的塊分類
人類視覺系統HVS對圖像所具有的頻率掩蓋、亮度掩蔽和對比度掩蔽等效應表明:背景亮度越亮,紋理越復雜,人類視覺對其輕微變化就越不敏感,只要嵌入水印信號低于HVS的對比度門限(Contrast Sensitivity Threshold),HVS就無法感知到信號的存在,它具有如下三個特性:
①人眼對不同灰度具有不同的敏感性,通常對中等灰度最敏感,而且向低灰度和高灰度兩個方向非線性下降;
②對圖像平滑區(qū)的噪聲敏感,而對紋理區(qū)的噪聲不敏感;
③邊緣信息對于人眼非常重要,必須保護邊緣的質量不受大的損害。
因此,我們可以利用HVS特性選取不同的嵌入強度因子α以獲得更好的視覺掩蔽性。
原始載體圖像I(i,j)(1≤i≤N1,1≤j≤N2)為N1_N2個像素大小,每個像素為0~255灰度等級的灰度圖像。首先將I分割成互不重疊的8×8的子塊,(1≤i≤8,1≤j≤8,1≤n≤8),
B為原始載體圖像所分的塊數,且滿足B=_(N1_N2/(8_8)_;然后對每一個子塊In(i,j)進行DCT變換,得到In(u,v);最后計算每個子塊的灰度(或者亮度)的均值和方差,并以此作為塊分類的依據:均值較小的塊對應圖像的平滑區(qū)域,均值較大的塊對應的則可能是紋理區(qū)域或者邊緣,其中紋理區(qū)域的方差較小而邊界區(qū)域的方差較大。按上述方法可將所有圖像塊分為五類:第一類亮度較低,紋理簡單,HVS對像素值的改變較為敏感,所嵌入的水印分量強度最??;第二類亮度中等,紋理中等,嵌入的水印分量強度較??;第三類亮度較高、紋理復雜,且不是邊緣,HVS對像素值的改變敏感性較強,疊加的水印分量較??;其余為第五類。
2、混沌產生隨機序列
混沌區(qū)的數據有兩個特性:迭代不重復性和初值敏感性。當選定適當系數使方程進入混沌狀態(tài)時,方程將進行無限不循環(huán)迭代,因此不會出現重復的迭代值。任何人如果不知道其初值(種子)0x都無法預測下一個迭代值,這種迭代的結果可以用來產生隨機序列。一個一維離散的時間非線性動力系統可以定義為:
![]()
式中kx∈V,k=0,1,2,……。我們稱狀態(tài)τ:V→V是一個映射,它將當前狀態(tài)kx映射到下一個狀態(tài)1+kx。如果映射τ:V→V滿足下面三個條件:
(1)具有對初始條件的敏感依賴性;
(2)是拓撲傳遞的;
(3)周期點在V中稠密。
則說對應的動力系統在V上是混沌的。
一類非常簡單卻被廣泛研究的動力系統是Logistic映射,定義如下:
![]()
式中kx∈(-1,1),當μ=4時,Logistic映射變成三角帳篷映射,我們采用的是三角帳篷映射:xk+1=4xk(1-xk),這個公式等價于:

三角帳篷映射具有0均值,δlike自相關及互相關為0的特性。由該映射所產生的混沌序列具有以下優(yōu)點:形式簡單、對初始條件的敏感性、具有白噪聲的統計特性。
根據公式產生的混沌序列是非周期且長度無限的實數序列,但在本文中只需要截取合適的長度,進而生成二值序列作為加密序列。由實值序列生成的二值序列的方法有很多種,如閾值門限法、多種量化方法等。本文采用閾值門限法,公式如下:

其中在本文中k取值為0.5,當xk<0.5時取0,否則取1。
3、加密水印的產生
水印W是大小為M1_M2(M1_M2=N1_N2/8*8)的二值圖像,每個像素為0、1兩種取值。二值圖像水印W在嵌入原始載體圖像之前,首先用混沌序列進行加密。加密過程如圖所示:

描述如下:將二維水印W轉換為一維向量Wa的形式(a=1,2,_…,M1×M2);然后,設定一個初值0x,按公式(3)進行迭代,得到混沌序列xk,然后進行閾值門限法得到0-1序列Lk
(k=1,2,…,M1×M2);最后用生成的0-1序列Lk對二值水印圖像進行加密,得到加密后的水印向量序列Wm=Wa⊕Lk=(m=1,2,_…,M1×M2),⊕在這里表示異或運算;混沌初值X0則可作為用戶的私有密鑰K。
經過以上處理的二值圖像水印,同時具有初值敏感性和不可逆性,也即在不知道確切的初值的情況下,即使提取出水印信號也無法恢復出水印圖像,從而提高了整個水印系統的安全性。
4、二值圖像水印的嵌入和提取
(1) 水印的嵌入
水印嵌入過程由以下三個基本步驟組成,描述如下:
首先把原始載體圖像I(i,j)(1≤i≤N1,1≤j≤N2)分成8×8大小不重疊的子塊,對每個子塊進行DCT變換,計算每個子塊的方差和均值,對這些塊進行分類,確定嵌入強度因子α。
其次是把二值水印圖像W(u,v),(1≤u≤M1,1≤v≤M2,M1_M2=N1_N2/8*8)的系數矩陣變換成一個長為M1*M2的Wa向量,采用公式(3)產生一個混沌密碼序列,截取合適的長度,并用閾值門限法將它轉化為0-1序列Lk(1≤k≤M1_M2);利用0-1序列kL對水印圖像進行加密,得到加密序列Wm=Wa⊕Lk,⊕表示異或運算。
然后采用如下方法將加密序列Wm嵌入到原始圖像的前兩個DCT中頻系數中。

其中,αn是不同種類塊的嵌入強度因子。 最后對每塊進行離散余弦反變換(IDCT),得到嵌有水印的圖像I′。
(2)水印的提取
本文的水印提取是非盲文提取,需要原始圖像,水印提取過程與水印嵌入的過程剛好相反,具體步驟如下:
首先對嵌有水印的圖像I′進行DCT變換,計算每個塊的亮度均值和方差,根據方差和均值對每一塊進行分類,確定嵌入強度因子α。
其次提取出被加密的水印的向量W′m,利用初始值x0得到混沌加密序列,并用閾值門限法得到0-1序列Lk,得到解密的水印序列W′a=W′m⊕Lk。
最后將W′a轉化為2-D的形式,得到提取出的水印圖像W′。
本文提出了一種具有較強魯棒性的數字水印算法,首先該算法通過對水印本身進行加密,這樣水印攻擊者即使獲得水印數據,也不能提取正確的水印,從而為數字作品提供了雙重保險;其次利用人類視覺系統(HVS)的特性自適應的把二值圖像水印嵌入在DCT域的中頻,既保障了水印的不可見性又保障圖像的安全性。
小知識之二值圖像
圖像上每一像元只有兩種可能的數值或灰度等級狀態(tài)的圖像。










