唐晗 陳留洋
(1、吉首大學信息科學與工程學院,湖南 吉首416000 2、洛陽師范學院國土與旅游學院,河南 洛陽471934)
粒子群算法是把群體中的粒子都看成是隨機的解,然后多次重復計算找出最優解。由下面的算法公式,可以來更新此時的飛行速度和位置:

上式中i=1,2,…,N;N 是這個群體中粒子的總和;vi是粒子速度;r 的取值范圍是(0,1);xi表示粒子此刻的位置;均為學習因子。
蛙跳中適應度值(位置)的計算公式如下:
蛙跳步長更新:

位置更新:

Smax≥Si≥2Smax,上式rand()的取值范圍是[0,1],k=1,2,…,n;Smax 表示最大步長。通過計算后得到的解要優于之前的解,那么就用計算后得到的解去代替最差的個體。并且全局最優解Pg可以通過式(3)和式(4)求得。
為了實現提高水印信息安全性與魯棒性的目的,進行Arnold 置亂操作。對于數字圖像,Arnold 置亂操作的數字公式為:

以式(5)輸出的結果作為再一次Arnold 置亂的初始值,圖像經多次置亂后會變得“雜亂無序”。嵌入的信息就不容易被檢測到,即使嵌入的水印被攻擊者所得到,水印的實際內容也不可能被知道。
設載體圖像的規格為256×256,水印圖像32×32,通過混合粒子群算法與蛙跳算法,在原載體圖的DCT 變換系數中尋找最優值作為水印的嵌入位置,操作如下:
Step1 對原水印圖像進行操作,見2.1;
Step2 讀入原載體圖像,把原載體圖像分為1024 個小塊(按規律編號:1~1024),每個小塊為8×8,對小塊進行DCT 變換,共得DCT 變換系數64×64 個。將小塊的DCT 變換得到的AC系數的位置編號分別按Zigzag 順序的2~64 的整數來表示。
Step3 通過粒子群算法尋優,小塊的交流系數AC 中采用粒子群優化方法得到兩個值最優值,分別是:全局最優(個數1042),個體最優(個數1042);
Step4 把粒子群優化得到的全局最優值和個體最優值看成2 個蛙跳的種群,分別尋找最優值;以在這兩個種群中找到的最優值作為水印的2 個嵌入位置。并將這兩個位置的序號,所在小塊的編號及水印置亂次數一起作為取出水印的密鑰;
Step5 嵌入水印的規則是如果此位置的像素值模2 的取值和水印信息一樣,則其DCT 系數就不變,否則將DCT 系數變成和水印信息樣,1 變成0,0 變成1。即若DCT 系數是單數,將變成比本身小1 的雙數,若是雙數,改為比本身大1 的單數;
Step6 所以的小塊都做一次DCT 逆變換,全部新小塊重組,獲得嵌入水印的圖像。
Step1:將含水印的圖像進行分塊以及DCT 變換;
Step2:根據密匙所提供的水印嵌入位置,找到相對應的DCT系數,并進行模2 操作。余數就是經過置亂后的水印信息。
Step3:將獲得的置亂后水印圖像進行反置亂處理,就可以獲得水印圖像。
選擇大小512×512 的Lena 灰度圖作為載體圖像;水印選擇為“C”字樣的,大小32×32 的二值圖像。采用兩個值來判斷算法的好壞,一個是峰值信噪比值(PSNR);另一個是相似度值(NC)。定義分別為:

通過Matlabr2014a 進行實驗仿真,算出兩圖像之間的PSNR值為41.4728dB;從水印圖像中提取出來的水印與原始水印間的NC 值為0.9858,可見本文算法具有良好的不可見性。

魯棒性的指標由NC 值來體現,它的取值范圍為[0 1]。NC值越接近1,證明魯棒性越好。通過Matlabr2014a 對嵌入了水印的圖像做旋轉、幾何剪切、濾波及圖像縮放等攻擊時的實驗仿真。令JPEG 壓縮因子為30,均值濾波窗口大小為3×3,中值濾波為2×2,放大1.7 倍,旋轉30 度,幾何剪切為1/2。結果如表1所示。

表1 受各種攻擊的NC 值比較
由表1 看出,當JPEG 壓縮因子為30,均值濾波(3×3),中值濾波(2×2)以及放大倍數為1.7 時,NC 都快接近1,且優于文獻數值。當幾何剪切1/2 和旋轉30 度時,新水印方案和其他文獻中的水印方案的NC 值都下降了,但新水印方案仍然能提出比較清晰的水印圖像,且NC 值優于其他文獻方案。
本文提出的混合蛙跳算法和粒子群算法尋找水印嵌入位置的方法,從實驗數據與文獻數值對比看出,水印的魯棒性都得到了提升;此算法的創新之處就是第二個優化算法的初始值是一個優化算法得到的結果,對嵌入水印的位置做了兩次優化,讓嵌入的位置更好,更精確。該算法屬于盲水印算法,不需要原始圖像,只需要知道水印嵌入位置的像素點坐標。新水印算法不僅對濾波、壓縮、剪切等常見攻擊都具有較好的魯棒性,而且有很好的不可感知性。