DCT域數(shù)字水印算法的FPGA實現(xiàn)
1 引言
隨著計算機(jī)網(wǎng)絡(luò)和數(shù)字通信技術(shù)的迅速發(fā)展,數(shù)字技術(shù)使數(shù)字多媒體(數(shù)字視頻、數(shù)字音頻、數(shù)字圖像等)的傳輸與復(fù)制變得非常容易,但卻增加了多媒體信息被非法盜版的機(jī)會。數(shù)字作品的版權(quán)保護(hù)成為一個急需解決的難題,已引起學(xué)術(shù)界與企業(yè)界的廣泛關(guān)注。
數(shù)字水印技術(shù)是一種最近發(fā)展起來的新技術(shù),用于數(shù)字產(chǎn)品認(rèn)證和保護(hù)。大多數(shù)水印算法采用軟件實現(xiàn)。軟件實現(xiàn)具有易于應(yīng)用、升級和適應(yīng)性較好等特點,但存在速度受限、難以滿足實時處理的問題。而采用硬件實現(xiàn)則可以克服這些問題。
現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Ar-ray)是一種設(shè)計靈活、開發(fā)速度快的現(xiàn)場可編程邏輯器件。與DSP相比,F(xiàn)PGA具有以下主要優(yōu)點:速度快,內(nèi)置高速乘法器和加法器;高檔 FPGA中含有巨量高速存儲器,速度更快,電路更簡單;FPGA硬件可編程,使得硬件更簡單和小型化。文獻(xiàn)[l]利用FPGA實現(xiàn)小波變換,文獻(xiàn)[2- 3]利用FPGA實現(xiàn)一種高速DCT處理器件。在此基礎(chǔ)上,利用FPGA設(shè)計基于DCT域的數(shù)字水印算法,DCT變換是該數(shù)字水印方案的關(guān)鍵單元之一。采用硬件描述語言VHDL(Very HighSpeed Integrated Circuit Hardware Description Language)有效設(shè)計和仿真DCT變換。
2 圖像水印算法
這里設(shè)計的圖像水印算法是依據(jù)文獻(xiàn)[4]算法提出的。該算法是在充分考慮人眼視覺特性的基礎(chǔ)上,應(yīng)用一種新的圖像分類算法,結(jié)合Amold置亂變換,提出的一種基于圖像分類的自適應(yīng)水印算法。圖1為圖像水印算法框圖。
具體算法步驟如下:
(1)設(shè)水印信號為w,對其進(jìn)行n次Arnold置亂變換,記為wi,n作為密鑰由水印嵌入者保管,然后將wi進(jìn)行行堆疊或列堆疊變成一維水印序列wt,這里采用行堆疊。
(2)將原始圖像I分成m個互不重疊的8×8的子塊fk(x,y),對每個子塊進(jìn)行DCT變換得Fk(u,v)。
(3)將圖像塊分成3類,即平滑區(qū)、邊緣區(qū)、紋理區(qū)。依據(jù)分類結(jié)果為每一類指定一個強(qiáng)度因子αi(i=1,2,3),為使水印具有更好的魯棒性和透明性,這里借鑒文獻(xiàn)[5]的思想,利用部分DCT低頻系數(shù)嵌入水印,將水印信號依次疊加到Fk(u,v)的4個低頻系數(shù)中,即:
式中,4k≤t<4(k+1),k=0,1……m-1;αi為強(qiáng)度因子。平滑區(qū)、邊緣區(qū)、紋理區(qū)的α取值均不相同。
(4)對所得結(jié)果進(jìn)行DCT逆變換,再將所有子塊合并為整幅圖像,得到含水印的圖像。
3 數(shù)字水印方案的設(shè)計
根據(jù)上述圖像水印算法,設(shè)計FPGA實現(xiàn)的總體結(jié)構(gòu)。按照自頂向下(Top-to- Down)的設(shè)計方法,將總體設(shè)計劃分為一維DCT單元、外部存儲單元和控制單元(由一個有限狀態(tài)機(jī)FSM(finite system machine)控制)。圖像數(shù)據(jù)從外部(如PC機(jī))按行進(jìn)入一維DCT單元,數(shù)據(jù)處理后存入存儲單元:然后再對該中間數(shù)據(jù)按列進(jìn)行一維DCT變換。得到二維處理結(jié)果并存入存儲單元??刂茊卧瓷鲜霾襟E進(jìn)行圖像處理,并產(chǎn)生地址數(shù)據(jù)、enable信號等。圖2為其總體結(jié)構(gòu)圖。
3.1 2D-DCT結(jié)構(gòu)
對于一個大小為N×N的像素塊,假設(shè)x(i、j)為輸入的像素點陣數(shù)據(jù),其二維DCT變換公式為:
式中,C為帶余弦基本函數(shù)的變換系數(shù)矩陣,CT為C的轉(zhuǎn)置。
從式(3)和式(4)可看出,2D-DCT變換是可分離的,它可分裂為串聯(lián)的2次一維變換。所以可連續(xù)進(jìn)行2次一維DCT變換實現(xiàn)一幅圖像的2D- DCT。2D-DCT的結(jié)構(gòu)框圖如圖3所示。首先將圖像數(shù)據(jù)按行輸入一維DCT單元進(jìn)行行變換,變換后的數(shù)據(jù)存儲到轉(zhuǎn)置緩沖器,以進(jìn)行行列轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)再按列輸入一維DCT單元進(jìn)行列變換。變換完成后的數(shù)據(jù)輸出到PC機(jī)添加水印。
3.2 控制單元
控制單元控制存儲單元和運(yùn)算單元,其主要功能:產(chǎn)生存儲器的控制信號,控制雙端口RAM的運(yùn)行;產(chǎn)生存儲器的讀寫地址和控制運(yùn)算流程等。
4 實驗結(jié)果
在整個電路設(shè)計過程中,首先進(jìn)行計算機(jī)Matlab仿真,驗證算法的正確性,然后以Xilinx公司的ISE9.1i可編程邏輯器件開發(fā)系統(tǒng)作為開發(fā)工具,采用可綜合的VHDL語言描述DCT變換設(shè)計。使用Xilinx Spartan3 XC3S200完成整個電路設(shè)計,Spartan3系列器件嵌有18 bit×18 bit補(bǔ)碼乘法器和大量RAM塊,非常適合DCT變換。在Xilinx公司集成設(shè)計環(huán)境ISE9.1i下,選用XC3S200-4FT256器件實現(xiàn)綜合和仿真,綜合后最高時鐘頻率達(dá)98.592 MHz。并對布局布線后的設(shè)計用Mentor Graphics公司的Modelsim SE6.1f進(jìn)行仿真。表1給出2D-DCT變換時FPGA器件的使用情況。
器件的功能引腳示意圖,如圖4所示。其中,xin(7:0)為待轉(zhuǎn)換的8位數(shù)據(jù)輸入端,CLK為時鐘信號輸入端,RST為復(fù)位端,dct_2d(11: 0)為12位的DCT轉(zhuǎn)換結(jié)果,rdy_out是轉(zhuǎn)換結(jié)果就緒指示。DCT變換的邏輯功能如圖5所示的時序仿真波形。
5 結(jié)論
設(shè)計和實現(xiàn)一種基于DCT域的數(shù)字水印算法。DCT變換算法的實現(xiàn)是該設(shè)計中數(shù)字水印方案的關(guān)鍵算法之一。重點采用FPGA對水印算法DCT變換進(jìn)行設(shè)計和仿真實驗。實驗結(jié)果表明該方案利用FPGA實現(xiàn)水印算法比用軟件實現(xiàn)法速度更快,性能更穩(wěn)定。
來源:Etta0次