陳杰,張學東
塔里木大學信息工程學院(阿拉爾 843300)
目前數字水印技術在食品行業得到廣泛應用,通過一定的算法在食品圖像中嵌入被稱為水印版權標識,證明食品圖像版權歸屬的一種技術[1],但不影響食品原本價值和使用,且不意被人察覺。水印信息中可包含食品出廠序列號、公司標識及其他需注意事項,并攜帶生產許可信息和認證信息,主要目的是鑒別出劣質和虛假產品,為保障食品安全提供了一個有效的解決方案。一方面,在當下計算機網絡技術不斷發展的背景下,因數字產品自身易篡改、易復制的特點,導致圖像水印遭受不同形式的攻擊,與嵌入時大不相同;另一方面,由于嵌入路徑不同,嵌入產品中的水印信息可能會遭受破壞,很難防御,導致信息存在一定偏差。因此,研究水印嵌入算法是一項富有挑戰性的工作。
袁志華等[2]為了進一步提升基于支持向量機水印算法的魯棒性,提出基于支持向量機的NSCT域自適應圖像水印算法。根據圖像自身特征生成自適應水印序列,利用模糊聚類,支持向量機對NSCT低頻系數分類,選擇適合嵌入水印的低頻系數;建立NSCT鄰域系數關系模型嵌入水印,方法具有良好的不可感知性和安全性,嵌入自適應水印序列達到全盲水印檢測;最后試驗結果表明該算法擁有較強的魯棒性。黃櫻等[3]利用圖像紋理粗糙區域方便隱藏水印的優勢,提出基于圖像紋理的自適應水印算法。設計能夠真實反映圖像紋理豐富程度的紋理度量方法,引入全局紋理值和局部紋理值的概念,對圖像紋理分布情況進行綜合分析;利用滑動窗口和窗口內區域的局部紋理值,精確獲得圖像紋理粗糙區域,將水印嵌入在紋理粗糙區域中,通過多元回歸分析,得到目標圖像內所有紋理信息相關函數,同時自適應調節添加水印函數,完成無痕水印添加。
但上述方法只進行單一水印嵌入,一旦受噪聲影響嚴重,容易導致水印信息丟失或無法識別。為此設計基于DCT變換的食品圖像多重水印嵌入算法,將數字圖像看作為二維陣列,進行離散余弦變換,同時映射水印信息預處理提升魯棒性,為了減少分塊效應,提升處理后圖像通透感,對子圖像水平與垂直像素亮度值加減,約束圖像降質,并通過頻域交流系數確定水印加載的強度,再施加DCT反變換時完成多重嵌入。最后在不同干擾試驗下驗證算法優越性。
水印嵌入算法指將后續需檢測、包含一定信息的二值圖像嵌入到灰度圖像內,而多重水印嵌入就是將相同或不相同水印嵌入至同一圖像不同紋理區域中,以加強水印抗干擾能力[4]。
DCT是數字圖像處理以及信號處理常用的變換,它是一種正交變換,去相關的性能接近于K-L變換[5]。給定數字圖像f(m,n)后,可以將它看成一個二維陣列,它的大小為M×N,對它進行DCT變換,如下
其中:
DCT反變化,如下
通過預處理未嵌入初始圖像的水印信息,提升水印魯棒性與水印信息安全性,具體的預處理流程描述如下:
1) 假設W(i,j)表示水印圖像,K表示密鑰,取值為10,由此可構建出偽隨機序列V,該序列服從標準正態分布且滿足V∈(1,Mw×Nw),降冪排序偽隨機序列V,得到V′。
2) 按行排列水印圖像W(i,j),得到一維序列WW1,該序列WW1長度等同于偽隨機序列V長度,經計算解得0、1在一維水印序列WW1中的存在數量,分別用N1、N2表示。
3) 設定排列后的偽隨機序列V分界線為N1,也就是說水印序列WW1的掃描起始處為1。當取得WW1(i)=0的掃描結果時,序列WW1(i)將被賦予分界線左側數值,采用表達式描述,如下式所示:
若解得WW1(i)=1,則序列WW1將被賦予分界線右側數值,表達式,如下式所示:
待總體水印序列WW1掃描完全,即可取得經過映射的水印信號WW1′。
4) 按行排序經過映射的,得到Mw×Nw,該矩陣即為預處理后的水印圖像W′。
根據DCT變換屬性特征,發現直流分量生成分塊效應的概率極高,削弱高頻分量魯棒性,降低低頻分量透明性。基于人體視覺感知,設定科學、適宜的頻率系數,可有效提升水印嵌入效果。
1.3.1 數字盲水印嵌入流程
數字盲水印嵌入的操作步驟設計,如下:
1) 二維DCT頻域獨立分塊處理初始圖像,分塊規格為n×n。假設初始圖像的n階頻域子圖是Wj=fj(x,y),可得到初始圖像與頻域子圖的關系表達式:
經過二維DCT變換DCT頻域子圖Wj,利用計算公式求取交(直)流系數[6],如下:
式中:j=0, 1, …,n2-1,0≤x≤n,0≤y≤n。
2) 為確保子圖Wj平均亮度,約束圖像降質得到維持,在DCT頻域r個子圖Wj=fj(x,y)的行像素亮度值上加1,在列像素亮度值上減1,獲取二值映像序列{τj},該序列與Wj=fj(x,y)存在關聯性。假設子圖Wj的灰度均值為Tj,修正因子為,且試驗系數α的取值范圍是0.6≤α≤0.7,若j滿足j=0, 1, …,n2-1,則子圖Wj的JND門限值計算公式如下:
3) 當j=0, 1, …,n2-1時,選取DCT頻域中頻分量,重新排序子塊Wj=fj(x,y)的交流系數Cj(u,v)=DCT{Wj|fj(x,y), 0≤x,y≤n}。如果g組含有所有交流系數Cj(u,v),則各組中的DCT交流系數數量為h個,假定為第k組第i個交流系數,根據式(8)取值該交流系數的門限值,得到v))],其中,0≤k≤g-1,0≤j≤n2-1,0≤i≤h-1基于式(8)與給出的子圖Wj,其門限值ri,k為固定值。
4) 采用相同方法處理大小是m×m的水印圖像W′(n>m),解得g1組DCT頻域交流系數,各組交流系數個數為h1,假設表示第k組第i1個DCT頻域交流系數,其中,0≤j1≤m2-1,k1<g1<g,h1<h,已知初始圖像W的DCT頻域子圖Wj中,第k組交流系數的門限值是ri,k(i=0, 1, 2, …,h-1),將門限值取整后作為多數字基底,則最大整數p為該基底表達能力上限。將多數字基整數Ej設定為水印圖像W滿足不等式時的系數,用表示各位數字,推導出表達式如下:
5) 令比特修改值為水印圖像W′多數字基整數Ej的各位系數在DCT頻域交流系數中以分散形式進行嵌入,明確水印加載強度。若交流系數的加載強度是則其水印表達式如下:
式中:τj為約束因子[7],可在關聯于分組的二值映像序列{τj}中獲取。
6) 已知由二值映像序列{τj}得到的偽隨機序列,從中選取隨機種子Key作為密鑰[8],根據生成的密鑰隨機數,選擇DCT頻域子圖Wi與Wj在掃描階段時高頻分量與低頻分量的交流系數。依據τj的極性與給出的JPEG量化因子系數Tag,判定高低頻分量交流系數調整與否,若τj=1且則表達式如下所示:
7) 當j<n2-1且k<g-1時,在增加步長之后進行對應的移位操作,迭代操作上述兩個步驟,基于初始圖像W的DCT頻域各分組子圖的交流系數完成水印圖像W′的比特嵌入操作。
8) 若g1<g且h1<h,則初始圖像W未嵌入水印比特的DCT頻域分組交流系數有g×h-g1×h1個,通過迭代操作步驟(4)~(7),處理規格為m1×m1的水印圖像W′(n>m1),并在余下交流系數里,實現水印圖像W比特信息嵌入。
9)Zig_Zag排序調整后的交流系數,經二維DCT反變換處理,根據頻域f(u,v)獲取完成水印嵌入的圖像W′。
1.3.2 容量分析
數字水印容量表示在原始圖像中添加水印的最多信息量。若圖像中存在高斯噪聲,且原始圖像屬于高斯白噪聲信道,此時可通過Shannon表達式預測隱藏信息容量。該文的多重水印嵌入方法在容量方面區別于單一水印[9]。
如果噪聲滿足均值為零且方差是σn2高斯分布,根據平均功率最大熵原理[10],令Y符合高斯分布,假設其平均值表示為m,在同時嵌入2個水印情況下,信道平均輸入功率受到限制:并且和噪聲N沒有任何聯系,則有:
因此,Y的熵計算公式如下:
由上述可得:
則容量表示為:
綜上所述,當有兩個水印嵌入,此時容量并不是嵌入單一水印容量的疊加。如果水印W′1和W′2之間不存在任何聯系,則容量C1、C2與C12具有的關系如下:
由上述公式分析得出,在嵌入兩個水印情況下,其容量高于任意一個單一水印容量,然而低于兩個單一水印容量的和。
1.3.3 圖像水印檢測
1) 將待測的n×n灰度圖像W′′′分割成W′′′=獲取二維DCT轉換后不同頻域的交(值)流系數Cj(u,v),其中j=0, 1, …,n2-1。
2) 設置系數α=0.65,對j=0, 1, …,n2-1,分別獲取W′′′頻域子圖Wj的灰度均值Tj以及修正值計算二值序列{τj}與所有分組中頻分量約束值
3) 對j=0, 1, …,n2-1,將圖像W′′′的第k組約束值當作中頻分量的多數字基底,則根據多數字基整數概念計算Ej的每一位數字且轉換成十進制整數Dj。
4) 假設JPEG的量化值表示為Null,則根據Dj、τj結合公式(10)獲得圖像W′′的DCT轉換中頻系數;反之,挑選品質因子Tag,確定閾值λ=0.5,評估τj=±1的極性,利用公式(11)得出與其相對的高低頻系數。
5) 將閾值λ作為約束條件,對圖像W′的交流系數做Zig_Zag排序處理,根據二維IDCT反變換,對水印圖像W′進行重構。
6) 對分組情形(即g1<g),重復步驟三至步驟五,可實現水印圖像W′′的重構。
為驗證算法的抗噪能力以及嵌入性能,設定仿真試驗環境為MATLAB R2012a,計算機配置為:32位Windows7系統,Pentium雙核2.8 GHz,運行內存2 GB。將包含“安全食品”文本信息當作需多重嵌入的水印圖像,同時用食物披薩圖作為初始灰度圖像。
1) 圖1為初始、多重水印、嵌入水印后、檢測出的水印圖像,能夠看出,在嵌入水印后相比初始圖像,處理后圖像清晰度并未受到太多影響,且提取的水印圖像也完整可識別。
圖1 初始、多重水印、嵌入水印后、檢測出的水印圖像
2) 對包含多重水印信息圖像進行常見噪聲干擾試驗,試驗結果如圖2所示,攻擊行為分別是壓縮40%、添加椒鹽噪聲、中值濾波處理、去除40%面積、旋轉45°。
圖2 不同干擾攻擊下水印檢測結果
通過圖2以及表1能夠看出,添加椒鹽噪聲以及去除40%面積后的含水印圖像,包含過多干擾噪聲,圖像也在一定程度上出現模糊現象,并且提取水印效果沒有達到理想預期,相似度分別為78.52%和84.39%,信噪比分別為32.56和30.25 dB,但是所得出結果依舊處于良好范圍,通過圖像還是能夠直觀看出所嵌入的水印信息為“安全食品”字樣。相比上述兩種,算法在面對壓縮40%、中值濾波、旋轉45度試驗上,所得結果能夠充分滿足現階段社會需求,所的相似度計算結果都高于85%,甚至旋轉45°的結果高達90.21%,并且三者信噪比都能保持在25 dB下,這是因為采用多重水印嵌入手段,加強了抗噪能力,使處理后圖像中包含多個水印,在一個信息受到干擾無法得到全面數據時,另外的水印還能夠填補,獲得的信息完整。
表1 攻擊下方法相似度和信噪比數值
由于網絡高速發展,數字圖像傳播能力遠遠超出社會想象力,引發的版權問題日益嚴重,但是現階段社會常使用的嵌入水印技術多為單一操作,面對噪聲影響情況下,很難保持原本圖像,使提取出的水印數據不完整,難以識別,降低食品安全權益保護效果。為此設計的基于DCT變換的食品圖像多重水印嵌入算法,通過在初始圖像不同紋理區域嵌入相同水印信息,能夠最大限度保持水印完整性,即使受到噪聲干擾丟失一部分信息也能通過替他水印找回,依舊合成完整的水印圖像。并且嵌入過程的門限值和數字基底設置,幫助DCT選塊分組,通過轉換和迭代加載,使嵌入其中的水印信息十分隱蔽,且圖像處理后基本看不出和初始圖像間差別,透明度高。
在面臨椒鹽噪聲以及部分丟失時,提取效果雖在良好范圍,但是從結果圖像中能明顯看出水印圖像并不完整,通過容量分析得出,在嵌入過程中,若水印數量是固定的,那么算法將自適應選擇最優長度進行嵌入,已完成透明度和魯棒性之間最優均衡。但這就導致圖像受損較大時,所有嵌入水印也受到相同程度損傷,使得所有水印信息都不夠完成。在后續研究中,將會利用半監督學習通過訓練樣本,明確最優水印長度,以獲得抗噪聲強、高透明度高、抗損傷范圍大等多重能力,用高經濟性價比滿足社會需求。