唐晗 陳留洋
(1、吉首大學(xué)信息科學(xué)與工程學(xué)院,湖南 吉首416000 2、洛陽(yáng)師范學(xué)院國(guó)土與旅游學(xué)院,河南 洛陽(yáng)471934)
粒子群算法是把群體中的粒子都看成是隨機(jī)的解,然后多次重復(fù)計(jì)算找出最優(yōu)解。由下面的算法公式,可以來(lái)更新此時(shí)的飛行速度和位置:
上式中i=1,2,…,N;N 是這個(gè)群體中粒子的總和;vi是粒子速度;r 的取值范圍是(0,1);xi表示粒子此刻的位置;均為學(xué)習(xí)因子。
蛙跳中適應(yīng)度值(位置)的計(jì)算公式如下:
蛙跳步長(zhǎng)更新:
位置更新:
Smax≥Si≥2Smax,上式rand()的取值范圍是[0,1],k=1,2,…,n;Smax 表示最大步長(zhǎng)。通過(guò)計(jì)算后得到的解要優(yōu)于之前的解,那么就用計(jì)算后得到的解去代替最差的個(gè)體。并且全局最優(yōu)解Pg可以通過(guò)式(3)和式(4)求得。
為了實(shí)現(xiàn)提高水印信息安全性與魯棒性的目的,進(jìn)行Arnold 置亂操作。對(duì)于數(shù)字圖像,Arnold 置亂操作的數(shù)字公式為:
以式(5)輸出的結(jié)果作為再一次Arnold 置亂的初始值,圖像經(jīng)多次置亂后會(huì)變得“雜亂無(wú)序”。嵌入的信息就不容易被檢測(cè)到,即使嵌入的水印被攻擊者所得到,水印的實(shí)際內(nèi)容也不可能被知道。
設(shè)載體圖像的規(guī)格為256×256,水印圖像32×32,通過(guò)混合粒子群算法與蛙跳算法,在原載體圖的DCT 變換系數(shù)中尋找最優(yōu)值作為水印的嵌入位置,操作如下:
Step1 對(duì)原水印圖像進(jìn)行操作,見(jiàn)2.1;
Step2 讀入原載體圖像,把原載體圖像分為1024 個(gè)小塊(按規(guī)律編號(hào):1~1024),每個(gè)小塊為8×8,對(duì)小塊進(jìn)行DCT 變換,共得DCT 變換系數(shù)64×64 個(gè)。將小塊的DCT 變換得到的AC系數(shù)的位置編號(hào)分別按Zigzag 順序的2~64 的整數(shù)來(lái)表示。
Step3 通過(guò)粒子群算法尋優(yōu),小塊的交流系數(shù)AC 中采用粒子群優(yōu)化方法得到兩個(gè)值最優(yōu)值,分別是:全局最優(yōu)(個(gè)數(shù)1042),個(gè)體最優(yōu)(個(gè)數(shù)1042);
Step4 把粒子群優(yōu)化得到的全局最優(yōu)值和個(gè)體最優(yōu)值看成2 個(gè)蛙跳的種群,分別尋找最優(yōu)值;以在這兩個(gè)種群中找到的最優(yōu)值作為水印的2 個(gè)嵌入位置。并將這兩個(gè)位置的序號(hào),所在小塊的編號(hào)及水印置亂次數(shù)一起作為取出水印的密鑰;
Step5 嵌入水印的規(guī)則是如果此位置的像素值模2 的取值和水印信息一樣,則其DCT 系數(shù)就不變,否則將DCT 系數(shù)變成和水印信息樣,1 變成0,0 變成1。即若DCT 系數(shù)是單數(shù),將變成比本身小1 的雙數(shù),若是雙數(shù),改為比本身大1 的單數(shù);
Step6 所以的小塊都做一次DCT 逆變換,全部新小塊重組,獲得嵌入水印的圖像。
Step1:將含水印的圖像進(jìn)行分塊以及DCT 變換;
Step2:根據(jù)密匙所提供的水印嵌入位置,找到相對(duì)應(yīng)的DCT系數(shù),并進(jìn)行模2 操作。余數(shù)就是經(jīng)過(guò)置亂后的水印信息。
Step3:將獲得的置亂后水印圖像進(jìn)行反置亂處理,就可以獲得水印圖像。
選擇大小512×512 的Lena 灰度圖作為載體圖像;水印選擇為“C”字樣的,大小32×32 的二值圖像。采用兩個(gè)值來(lái)判斷算法的好壞,一個(gè)是峰值信噪比值(PSNR);另一個(gè)是相似度值(NC)。定義分別為:
通過(guò)Matlabr2014a 進(jìn)行實(shí)驗(yàn)仿真,算出兩圖像之間的PSNR值為41.4728dB;從水印圖像中提取出來(lái)的水印與原始水印間的NC 值為0.9858,可見(jiàn)本文算法具有良好的不可見(jiàn)性。
魯棒性的指標(biāo)由NC 值來(lái)體現(xiàn),它的取值范圍為[0 1]。NC值越接近1,證明魯棒性越好。通過(guò)Matlabr2014a 對(duì)嵌入了水印的圖像做旋轉(zhuǎn)、幾何剪切、濾波及圖像縮放等攻擊時(shí)的實(shí)驗(yàn)仿真。令JPEG 壓縮因子為30,均值濾波窗口大小為3×3,中值濾波為2×2,放大1.7 倍,旋轉(zhuǎn)30 度,幾何剪切為1/2。結(jié)果如表1所示。
表1 受各種攻擊的NC 值比較
由表1 看出,當(dāng)JPEG 壓縮因子為30,均值濾波(3×3),中值濾波(2×2)以及放大倍數(shù)為1.7 時(shí),NC 都快接近1,且優(yōu)于文獻(xiàn)數(shù)值。當(dāng)幾何剪切1/2 和旋轉(zhuǎn)30 度時(shí),新水印方案和其他文獻(xiàn)中的水印方案的NC 值都下降了,但新水印方案仍然能提出比較清晰的水印圖像,且NC 值優(yōu)于其他文獻(xiàn)方案。
本文提出的混合蛙跳算法和粒子群算法尋找水印嵌入位置的方法,從實(shí)驗(yàn)數(shù)據(jù)與文獻(xiàn)數(shù)值對(duì)比看出,水印的魯棒性都得到了提升;此算法的創(chuàng)新之處就是第二個(gè)優(yōu)化算法的初始值是一個(gè)優(yōu)化算法得到的結(jié)果,對(duì)嵌入水印的位置做了兩次優(yōu)化,讓嵌入的位置更好,更精確。該算法屬于盲水印算法,不需要原始圖像,只需要知道水印嵌入位置的像素點(diǎn)坐標(biāo)。新水印算法不僅對(duì)濾波、壓縮、剪切等常見(jiàn)攻擊都具有較好的魯棒性,而且有很好的不可感知性。