基于FPGA的數(shù)字水印實(shí)現(xiàn)
The realization of digital watermarking based on FPGA
本文引用地址:http://cafeforensic.com/article/201903/399042.htm程前 1 ,董長旭 1 ,廖媛媛 2
(1.電子科學(xué)與工程學(xué)院,四川 成都 610000;
2.電子科技大學(xué),通信抗干擾技術(shù)國家級重點(diǎn)實(shí)驗室,四川 成都 610000)
摘要:數(shù)字水印技術(shù)在信息安全、知識產(chǎn)權(quán)保護(hù)和認(rèn)證等領(lǐng)域有著重要的功能和地位。本文基于現(xiàn)場可編程門陣列(FPGA),通過流水線設(shè)計,乒乓緩沖和分布式算法,實(shí)現(xiàn)8×8矩陣的二維DCT變換,充分利用FPGA的查找表(LUT)和塊RAM(BRAM)資源,實(shí)現(xiàn)載體圖像的快速DCT域變換。原始水印圖像通過Arnold變換進(jìn)行置亂,并與Logistic映射的混沌序列選擇合適的水印信息嵌入點(diǎn)。最后通過不同的水印攻擊來驗證本系統(tǒng)的
隱蔽性和魯棒性。
關(guān)鍵詞:水印圖像;二維DCT;分布式算法;Arnold置亂;混沌序列
0 引言
隨著通信技術(shù)的飛速發(fā)展,數(shù)字媒體通信在信息交流中得到了廣泛的應(yīng)用。網(wǎng)絡(luò)信息交換之間的安全和加密等問題引起了高度重視[1],保證信息不被非法利用和破壞也變得越來越重要。圖像數(shù)據(jù)可承載比文字更多的內(nèi)容,成為信息傳遞的重要途徑。傳統(tǒng)的加密方法主要針對數(shù)據(jù)傳輸過程進(jìn)行保護(hù),而不能完全解決接收解密后的安全性問題,而利用信息隱藏技術(shù)通過在公開的載體信息中插入隱藏的機(jī)密信息后進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)了信息的安全隱秘傳輸[2]。
數(shù)字水印技術(shù)可以廣泛用于信息安全、知識產(chǎn)權(quán)保護(hù)和認(rèn)證等領(lǐng)域,其通過某一種水印算法,實(shí)現(xiàn)將包含機(jī)密信息的水印圖像隱藏在傳輸?shù)妮d體圖像中,而數(shù)據(jù)接收方則通過專用解密方法提取水印信息,實(shí)現(xiàn)圖像數(shù)據(jù)安全提取和傳輸[3]。
1 圖像水印實(shí)現(xiàn)系統(tǒng)整體方案
本系統(tǒng)分為水印嵌入和水印提取兩個模塊,實(shí)現(xiàn)將水印圖像嵌入載體圖像后提取加密水印,整體框架圖如圖1所示。
2 水印嵌入模塊
水印嵌入模塊選擇在空間域或變換域進(jìn)行水印圖像嵌入載體圖像。首先將200×200的二值水印圖像進(jìn)行置亂處理后,利用混沌序列在800×800載體圖像中選擇合適的水印嵌入位置,在制定的嵌入規(guī)則指導(dǎo)下進(jìn)行水印的嵌入。本系統(tǒng)的水印嵌入模塊主要包括DCT變換模塊、Arnold置亂模塊、混沌序列模塊等。
2.1.1 二維DCT變換模塊
最初的數(shù)字水印算法是基于空間域?qū)崿F(xiàn),是在嵌入規(guī)則下直接實(shí)現(xiàn)水印圖像嵌入。雖然空間域嵌入可實(shí)現(xiàn)高速變換并降低系統(tǒng)復(fù)雜度,但是難以實(shí)現(xiàn)較好的魯棒性和不可感知性。變換域是指通過某一算法,常見的包括離散余弦變換(DCT),離散傅里葉變換(DFT),離散小波變換(DWT)等,將載體圖像變換到頻域進(jìn)行水印圖像的嵌入,這樣可實(shí)現(xiàn)高魯棒性,高安全性的水印不可感知嵌入系統(tǒng)。因為DCT變化是圖片JPEG壓縮標(biāo)準(zhǔn),所以本系統(tǒng)選擇在DCT域進(jìn)行水印嵌入,實(shí)現(xiàn)高抗JPEG壓縮攻擊性[4]。
本 系 統(tǒng) 選 擇 對 8 0 0 × 8 0 0 的 載 體 圖 像 進(jìn) 行8 × 8 矩 陣 分 塊 后 , 形 成 x(i,j) 0 ≤ i < 8, 0 ≤ j < 8的矩陣數(shù)據(jù),然后再經(jīng)過二維DCT得到變換結(jié)果X(m,n) 0 ≤ m < 8, 0 ≤ n < 8 ,二維DCT的公式如下:
其中0≤m , n≤7,尺度因子。
二維DCT運(yùn)算算法十分復(fù)雜,若用組合邏輯實(shí)現(xiàn)將大大影響系統(tǒng)的時序性能,本系統(tǒng)利用其可分解性質(zhì),對8×8矩陣每行首先進(jìn)行一維DCT變化,然后對變換結(jié)果每列進(jìn)行一維DCT即可得到二維DCT變換結(jié)果,具體操作步驟如下:一維DCT變換公式可以表示為矩陣形式:對于二維DCT變換,其公式可以用矩陣表示為:更進(jìn)一步,可以將二維DCT變換分解:為了得到更快的工作頻率,本系統(tǒng)選擇通過流水線設(shè)計改善其時序性能,提高計算效率。緩存時加入乒乓操作改善輸入速度和輸出速度差距過大的問題,巧妙設(shè)計時序增加資源利用率。由于dct模塊和轉(zhuǎn)置ram只例化一次,實(shí)現(xiàn)最小資源耗費(fèi)。一維DCT算法基本操作即為8×8矩陣相乘,需要大量的乘累加運(yùn)算,占用FPGA的專用乘法器資源,所以為了實(shí)現(xiàn)資源優(yōu)化,本系統(tǒng)通過分布式算法,將一維DCT的系數(shù)矩陣C 8×8 與輸入數(shù)據(jù)可能的運(yùn)算結(jié)果事先存儲在FPGA的BRAM資源中,利用真正的輸入行/列數(shù)據(jù)產(chǎn)生地址進(jìn)行讀操作即可正確實(shí)現(xiàn)一維DCT運(yùn)算。最終本系統(tǒng)實(shí)現(xiàn)100個周期內(nèi)完成一次完整的兩個8×8矩陣的DCT變換(IDCT同理)。
2.1.2 Arnold置亂模塊
水印圖像的置亂操作,簡單來說就是將所有像素按照一定規(guī)則實(shí)現(xiàn)重新排序,使得圖像成為雜亂的不可識別圖像,從而隱藏水印信息,本質(zhì)上就是對水印圖像的加密 [5] 。置亂后的水印圖像可以降低噪聲或者攻擊的影響,提高水印信息的魯棒性和抗攻擊性。本系統(tǒng)采用Arnold置亂對水印圖像進(jìn)行處理,通過FPGA將32位200×200的原始水印圖像進(jìn)行置亂。模塊將水印信息原存儲地址經(jīng)過置亂后,得到Arnold存儲器地址后將水印信息重新存入。
地址變換是將水印圖像原地址(x,y)處的像素點(diǎn)移動至變換后的位置(x’,y’),其中位置變換公式為:x’ = (x + y) / 200,y’ = (x + 2y) / 200。
同時Arnold置亂具有周期性,通過仿真發(fā)現(xiàn)圖像的置亂周期為150,即經(jīng)過150次置亂后得到原圖像,所以在水印嵌入模塊進(jìn)行N Arnold 次置亂后,在水印提取模塊進(jìn)行150-N Arnold 次置亂即可恢復(fù)水印圖像。
本系統(tǒng)的Arnold置亂模塊利用上述公式,對水印圖片的行/列地址進(jìn)行置亂。首先將輸入的水印圖像信息按行的順序串行輸入并進(jìn)行N Arnold 次Arnold置亂,利用遞減循環(huán)操作進(jìn)行置亂地址的200減法求余運(yùn)算,最終得到完成Arnold置亂的水印圖像,圖3的原始水印圖像經(jīng)過90次Arnold置亂后得到圖4所示的置亂水印圖像。
2.1.2 混沌序列模塊
混沌現(xiàn)象非周期,不收斂,有界且對初值敏感,是非線性動態(tài)系統(tǒng)中出現(xiàn)的確定的類似隨機(jī)過程,可以容易地生成很多非相關(guān)、類隨機(jī)的確定再生信號。
映射是廣泛應(yīng)用于混沌系統(tǒng)中的一個非線性方程 [6] ,公式如下:其 中 x, μ 是 分 支 系 數(shù) , 且3.5699456≤μ≤4時,Logistic映射工作于混沌狀態(tài),本系統(tǒng)選擇μ=3.875,初始值x 0 =0.621,在基于FPGA設(shè)計系統(tǒng)時,應(yīng)盡可能避免小數(shù)操作,所以將μ右移3位得到U=31,初始值x 0 右移8位得到x 0 =159。輸入初值進(jìn)行Logistic映射時,按照x i+1 =U×X i (1-X i )運(yùn)算,得到的值x i+1 左移11位即可得到0~1之間的混沌序列。
?。?)嵌入規(guī)則
本系統(tǒng)設(shè)計為盲水印算法,即在水印檢測過程中時,只需要密鑰而不需要原始數(shù)據(jù)的參與。在水印嵌入過程中,引入了混沌序列作為水印嵌入點(diǎn)選擇的條件。
由于混沌序列本身具有初值敏感性特性(即初值不同產(chǎn)生的序列完全不同),因此,引入混沌序列作為密鑰將進(jìn)一步提高算法的隱蔽性。
DCT 域8×8矩陣中的頻域系數(shù)進(jìn)行編號得到順序排列表,且表從左上角到右下角代表著從圖像的低頻部分到高頻部分,如下表1所示。
根據(jù) Waston 模型的頻率敏感度特性,同時考慮圖像進(jìn)行JPEG壓縮后圖像質(zhì)量不出現(xiàn)明顯降低,本系統(tǒng)選擇在中頻系數(shù)選擇合適的像素點(diǎn),基于加法水印嵌入規(guī)則將200×200的水印圖像嵌入800×800的載體圖像,即可劃分為將4個水印圖像信息嵌入8×8載體圖像矩陣中,同時基于嵌入規(guī)則在可選4個像素點(diǎn)中選擇嵌入1個水印信息,嵌入比為1/16,因此為了嵌入所有水印信息,需要在8×8的載體圖像矩陣中選擇4組16個像素點(diǎn)。綜合考慮,本文選擇Zigzag 表中編號為19、20和 8、10 ,9、11和12、14 , 13、15和17、21 , 16、18和22、23這4組像素點(diǎn)進(jìn)行水印圖像嵌入。最后根據(jù)上述置亂后的水印信息W,混沌序列值為X,每組像素點(diǎn)的系數(shù)分別為F1,F(xiàn)2,F(xiàn)3,F(xiàn)4,最終選擇一個合適的a值實(shí)現(xiàn)加法嵌入規(guī)則得到最終的像素點(diǎn)F0:
如果 X = 1,W = 1:若 F4 < F3,則F0 = F3+a,否則F0 = F4+a;
如果 X = 1,W = 0:若 F4 > F3,則F0 = F3- a,否則F0 = F4 -a;
如果 X = 0,W = 1:若 F2 < F1,則F0 = F1+a,否則F0 = F2+a;
如果 X = 0,W = 0:若 F2 > F1,則F0 = F1- a,否則F0 = F2-a。
?。?)系統(tǒng)運(yùn)行結(jié)果
將800×800載體圖像和200×200的水印圖像轉(zhuǎn)化成二值數(shù)據(jù)傳入本系統(tǒng),仿真結(jié)果如圖5(a)(b)
?。╟)(d)所示,可以發(fā)現(xiàn)嵌入水印后的圖像與載體圖像并沒有視覺上的失真,具有良好的水印不可見性,同時在未受攻擊時,水印圖像具有很好的隱蔽性。
對嵌入水印后的載體圖像分別進(jìn)行1/4裁剪攻擊,方差 0.01的高斯加噪攻擊和馬賽克攻擊后提取水印信息來驗證本系統(tǒng)的魯棒性,攻擊方法如圖4(e)(g)(i)所示,結(jié)果如圖4(f)(h)(j)
所示,可以發(fā)現(xiàn)經(jīng)過三種水印攻擊后,本系統(tǒng)仍舊可以提取水印信息,且通過仿真知,抵抗剪裁攻擊后的相關(guān)系數(shù)NC=0.7464,抵抗高斯噪聲后的相關(guān)系數(shù)NC=0.9998,抵抗馬賽克攻擊后的相關(guān)系數(shù)。
3.2 硬件速度與資源使用情況
通過仿真圖5(a)可以發(fā)現(xiàn),本系統(tǒng)在經(jīng)過時序優(yōu)化后,完成一次圖片處理小于1 ms,可在頻率下正常工作,并實(shí)現(xiàn)100 ms內(nèi)完成100個水印圖像嵌入操作。FPGA硬件使用資源如圖5(b)所示,除IO接口外使用的資源不足FPGA開發(fā)板資源的1%。
4 結(jié)論
本系統(tǒng)在全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽中,適用于參賽題目“華為云杯-圖片水印實(shí)現(xiàn)”,最終獲得西南分賽區(qū)一等獎,全國總決賽三等獎。本系統(tǒng)將繼續(xù)在架構(gòu)上對二維DCT變換模塊進(jìn)行優(yōu)化,在保證功能的同時,降低FPGA的IO接口資源使用率。
參考文獻(xiàn):
[1] 李趙紅, 侯建軍. 基于Logistic混沌映射的DCT域脆弱數(shù)字水印算法[J]. 電子學(xué)報, 2006,34(12):2134-2137.
[2] 于平平. 基于VLSI實(shí)現(xiàn)的數(shù)字圖像水印技術(shù)研究[D]. 天津大學(xué), 2010.
[3] 常曄. 基于DCT域的圖像數(shù)字盲水印算法設(shè)計及硬件實(shí)現(xiàn)[D]. 天津大學(xué),2010.
[4] 張釘銘. 基于FPGA的數(shù)字水印算法實(shí)現(xiàn)[D]. 南京航空航天大學(xué), 2012.
[5] 倪蓉蓉, 阮秋琦. 利用Arnold對稱性變換的圖像信息隱藏算法[J]. 北京交通大學(xué)學(xué)報, 2002, 26(2):25-28.
[6] 劉昕浩, 郭騰, 謝德輝,等. 基于Logistic混沌映射的圖像加密通信系統(tǒng)研究[J].湖南理工學(xué)院學(xué)報(自科版), 2015, 28(4):27-31.
本文來源于科技期刊《電子產(chǎn)品世界》2019年第4期第76頁,歡迎您寫論文時引用,并注明出處
評論