摘 要: 針對(duì)信息安全問題的日益突出,提出了基于5/3整數(shù)小波的數(shù)字水印算法,給出了兩種5/3小波的硬件架構(gòu):一種是基于RAM的流水線架構(gòu);另一種是基于行分組的行列并行架構(gòu)。進(jìn)而設(shè)計(jì)了基于FPGA的數(shù)字水印提取硬件系統(tǒng),結(jié)果證明該算法具有很好的不可見性及魯棒性,且復(fù)雜度低,硬件較容易實(shí)現(xiàn),并將水印提取代碼下載到FPGA硬件進(jìn)行驗(yàn)證,結(jié)果證明該算法可以很好地實(shí)現(xiàn)水印的提取工作。
關(guān)鍵詞: 數(shù)字水印; 5/3小波; FPGA; 水印提取
中圖分類號(hào): TN915.08?34; TP37 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)15?0062?05
Abstract: Since the information security problem has become increasingly prominent, a digital watermark algorithm based on 5/3 integers wavelet is proposed. Two hardware architectures of 5/3 wavelet are given: one is the pipelined architecture based on RAM, and the another is the rank parallel architecture based on row grouping. The hardware system of digital watermark extraction based on FPGA was designed. The results show this algorithm has good invisibility, robustness and low complexity, and is easy to implement with hardware. The wartermark extraction code is downloaded to FPGA for hardware verification. The verification results show that the system can extract the digital watermark well.
Keywords: digital watermark; 5/3 wavelet; FPGA; watermark extraction
0 引 言
數(shù)字水印技術(shù)是一種有效的數(shù)據(jù)安全維護(hù)及版權(quán)保護(hù)技術(shù)[1],將某種特殊信息嵌入到數(shù)字文件中,其中數(shù)字文件可以是圖像、視頻等,而水印可以是可見的或者不可見的。目前數(shù)字水印技術(shù)的研究工作主要是針對(duì)靜止的圖像,而視頻信號(hào)存在一些不同于靜止圖像信號(hào)的特點(diǎn),目前大多數(shù)的研究者都在軟件平臺(tái)上進(jìn)行數(shù)字視頻水印算法的研究,但很難滿足視頻的實(shí)時(shí)性要求。因此,基于硬件的視頻水印算法的研究是非常有必要的。
本文提出基于FPGA的數(shù)字水印算法,F(xiàn)PGA現(xiàn)場(chǎng)可編程邏輯門陣列,可重復(fù)編程、周期短、成本低,且FPGA門電路資源豐富,大大縮短了開發(fā)周期,降低了開發(fā)成本。本文選用Xilinx公司的FPGA芯片進(jìn)行系統(tǒng)設(shè)計(jì)。
1 數(shù)字水印技術(shù)
1.1 數(shù)字水印技術(shù)基礎(chǔ)
數(shù)字水印[2](Digital Watermark)技術(shù)是指使用某種水印算法將水印信息嵌入到多媒體數(shù)字文件中,數(shù)字水印包含兩個(gè)過程:水印的嵌入過程和水印的提取或檢測(cè)過程,水印嵌入過程是將水印數(shù)據(jù)嵌入到原始數(shù)字文件中,水印提取或檢測(cè)過程是采用相應(yīng)的水印檢測(cè)或提取算法對(duì)待檢測(cè)文件進(jìn)行水印檢測(cè)或提取操作。
數(shù)字水印技術(shù)的特殊應(yīng)用要求決定了其不同于其他信息安全技術(shù)的一些特性,包括可證明性、不可見性、魯棒性、安全性以及水印信息容量,其中魯棒性、不可見性及信息容量最為重要又相互矛盾,應(yīng)合理選擇三種特性的折中點(diǎn)。該技術(shù)可以按照水印抗攻擊的能力、感知特性、水印所附載的媒體、水印嵌入的位置、水印檢測(cè)手段、水印內(nèi)容等六個(gè)角度進(jìn)行分類。
1.2 數(shù)字視頻水印技術(shù)
數(shù)字視頻水印技術(shù)就是將數(shù)字水印嵌入到數(shù)字視頻產(chǎn)品中,以達(dá)到數(shù)字視頻產(chǎn)品版權(quán)保護(hù)、廣播監(jiān)控、視頻拷貝控制等目的。在視頻水印系統(tǒng)中,應(yīng)考慮實(shí)時(shí)性、可靠性、安全性、壓縮編碼、盲檢測(cè)性以及魯棒性等問題。
數(shù)字視頻水印攻擊的目的是降低水印檢測(cè)的能力或破壞隱藏在載體數(shù)據(jù)中水印信息的意義。針對(duì)視頻的各種攻擊可以大致分為無(wú)意攻擊和有意攻擊,常見的攻擊類型有視頻處理攻擊、同步攻擊、拷貝攻擊以及共謀攻擊[3]。
1.3 水印算法
數(shù)字視頻通常情況下會(huì)經(jīng)過編碼器壓縮成碼流之后再經(jīng)信道進(jìn)行傳輸,相應(yīng)地,接收端要經(jīng)過解碼器解碼還原數(shù)字視頻信息。根據(jù)這個(gè)數(shù)字視頻通信模型,可以將水印信息嵌入到三個(gè)不同的位置,而根據(jù)嵌入位置的不同,對(duì)應(yīng)兩種不同的數(shù)字視頻水印算法,即壓縮域視頻水印算法、原始域視頻水印算法。
2 小波分析
本文研究的數(shù)字視頻水印算法是基于小波域的。小波變換是局部化的時(shí)頻分析,即它用時(shí)域和頻域共同表示信號(hào)。小波分析作為一種同時(shí)從時(shí)域和頻域進(jìn)行分析的局部化分析方法,現(xiàn)正被廣泛的研究與應(yīng)用[4]。
2.1 小波變換基礎(chǔ)
連續(xù)小波變換(Continuous Wavelet Transform,CWT)或被稱為積分小波變換是用一族小波基函數(shù)的加權(quán)和來表征信號(hào),其中的一族小波基函數(shù)由基本小波經(jīng)過伸縮平移得到[5]。
多分辨率分析的基本原理是:將待處理信號(hào)進(jìn)行不同分辨率下的分解,然后選擇某一合適分辨率分析處理該信號(hào)或者同時(shí)在多級(jí)分辨率上分析處理該信號(hào)。任何小波都能把[L2(R)]分解成子空間[Wj,j∈Z]上的某種集合。
Mallat算法是一個(gè)經(jīng)典多分辨率分析方法,在小波函數(shù)和尺度函數(shù)具體結(jié)構(gòu)未知的情況下,可由系數(shù)直接完成信號(hào)的分解和重構(gòu),信號(hào)每次分解需要計(jì)算的長(zhǎng)度減半,因此該算法是一種快速算法。
利用Mallat算法同樣可以實(shí)現(xiàn)對(duì)二維圖像的離散小波變換。圖1是一個(gè)兩級(jí)二維分解情況,首先進(jìn)行第一級(jí)分解得到LL(低頻分量)、HL(垂直方向高頻分量)、LH(水平方向高頻分量)、HH(高頻分量)。然后再對(duì)第一級(jí)分解得到的低頻分量LL進(jìn)行第二級(jí)變換得到LL2(第二級(jí)低頻分量)、HL2(第二級(jí)垂直方向高頻分量)、LH2(第二級(jí)水平方向高頻分量)、HH2(第二級(jí)高頻分量)。圖1顯示了二維圖像經(jīng)過兩級(jí)小波變換后的各層小波系數(shù)的分布情況。
2.2 小波變換的提升算法
提升算法與傳統(tǒng)小波變換不同,它不使用基本小波經(jīng)過伸縮平移得到小波基函數(shù),而是通過提升過程構(gòu)造出小波基。相比較于傳統(tǒng)小波變換,提升小波變換具有結(jié)構(gòu)簡(jiǎn)單、計(jì)算速度快等優(yōu)點(diǎn)[6]。其運(yùn)算分為三個(gè)步驟:分裂、預(yù)測(cè)、更新。
2.3 整數(shù)小波變換
本文研究的水印算法是對(duì)圖像灰度值進(jìn)行小波變換,然后進(jìn)行水印的嵌入?;叶戎凳? b的整數(shù),希望它經(jīng)過小波變換之后系數(shù)依然是整數(shù),因此采用整數(shù)小波變換。選用的整數(shù)提升小波是5/3小波,用于JPEG2000標(biāo)準(zhǔn)的無(wú)損壓縮。
3 水印嵌入、提取算法
本算法思路是先對(duì)圖像進(jìn)行5/3小波變換,然后再計(jì)算二次小波系數(shù)的垂直高頻系數(shù)相鄰兩行差值之和,剔除差值最大的幾行所對(duì)應(yīng)的宏塊位置,禁止嵌入水印。確定嵌入行后,在一行22個(gè)宏塊中選擇12個(gè)均值較大的宏塊,再在宏塊的四個(gè)子塊中選擇方差相對(duì)小的子塊作為嵌入水印位置。
3.1 水印嵌入算法
若拿圖像的亮度分量[Y]進(jìn)行小波變換,則低頻LL代表圖像主要能量分布,反映出原始圖像的平均亮度信息。若需要更精細(xì)的分解,則只需選擇上一級(jí)的LL進(jìn)行下一級(jí)的小波分解即可。HL,LH和HH反映原始圖像的邊緣和輪廓特征。故將水印嵌入到低頻區(qū)域中可以保證水印具有較好的魯棒性,但不可見性較差,而將水印嵌入到高頻區(qū)域可以保證較好的不可見性,但魯棒性較差。綜合考慮魯棒性、不可見性及算法復(fù)雜度等,可以將水印信息嵌入到第二級(jí)的垂直高頻分量上(即LH2)。
中頻的大系數(shù)中嵌入水印信息,當(dāng)受到有損編碼壓縮等因素的影響,這些系數(shù)將發(fā)生變化,水印嵌入的位置將無(wú)法找到,造成出現(xiàn)漏檢、錯(cuò)檢等情況。為了解決這一問題,首先對(duì)LH2進(jìn)行分塊,然后對(duì)分塊后每行選取幾個(gè)較大的能量塊進(jìn)行水印嵌入,這樣即使前面某一個(gè)能量塊出現(xiàn)變化也不會(huì)影響后面的水印,保證了算法的魯棒性。
3.2 水印提取算法
水印嵌入的過程反過來就是水印提取過程。在進(jìn)行水印提取的過程中,先對(duì)含水印的圖像進(jìn)行小波變換,然后根據(jù)上面所設(shè)計(jì)的水印嵌入算法相對(duì)應(yīng)的進(jìn)行水印提取工作。
3.3 性能分析
本文選用了尺寸為528×320的YUV格式的視頻文件作為測(cè)試文件,對(duì)該視頻按照上面的步驟進(jìn)行水印嵌入及提取。
3.3.1 不可見性分析
水印嵌入后不可見性評(píng)價(jià)方法主要有兩種:主觀評(píng)價(jià)和定量評(píng)價(jià)。主觀評(píng)價(jià)將隨機(jī)產(chǎn)生的96位(0,1)序列嵌入到選擇測(cè)試文件中,截取了其中一幀圖像,如圖3所示,人眼無(wú)法識(shí)別水印信息的嵌入,證明了水印嵌入算法具有較好的不可見性。
通過峰值信噪比(PSNR)對(duì)不可見性做定量評(píng)價(jià)。如果PSNR>35 dB就說明水印算法具有良好的不可見性。通過使用Matlab對(duì)該測(cè)試文件嵌入水印后的視頻求其PSNR,結(jié)果如圖4所示。從圖4可以看出,每幀圖像的PSNR都大于35 dB。該結(jié)果從定量方面再次證明了提出的水印算法的不可見性較好。
3.3.2 魯棒性分析
選用相關(guān)系數(shù)(NC)衡量水印信息的魯棒性,NC值越大表示它們兩者越相似。為了評(píng)價(jià)水印算法的魯棒性,對(duì)含有水印的視頻進(jìn)行了MPEG?2編解碼、幀平均、幀刪除三種常見攻擊,然后使用NC評(píng)價(jià)該水印算法的魯棒性。各種攻擊下的NC參數(shù)如表1所示,證明了此算法的魯棒性較好。
4.1 硬件部分
標(biāo)清數(shù)字水印提取方案的硬件系統(tǒng)主要由USB數(shù)據(jù)傳輸模塊、FPGA數(shù)據(jù)處理模塊、SRAM數(shù)據(jù)存儲(chǔ)模塊三部分組成。
USB數(shù)據(jù)傳輸部分選用Cypress公司的cy7c68013芯片完成視頻圖像的傳輸[7]。
本系統(tǒng)中,用FX2作為一個(gè)可以與主機(jī)高速通信的USB 2.0接口, FPGA能夠提供滿足Slave FIFO要求的傳輸時(shí)序,且Slave FIFO方式相對(duì)比較簡(jiǎn)單,故USB選用的是Slave FIFO工作模式。Slave FIFO模式下USB與FPGA的數(shù)據(jù)流傳輸見圖6。
FPGA數(shù)據(jù)處理模塊采用低成本的Spartan?3系列的XC3S400芯片,該系列芯片性能指標(biāo)雖不是最優(yōu),但非常適合低成本應(yīng)用場(chǎng)合。Xilinx的FPGA基于SRAM工藝,斷電時(shí)數(shù)據(jù)會(huì)全部丟失,故FPGA通常使用一個(gè)外部PROM將配置數(shù)據(jù)下載到FPGA中。FPGA的配置方式有從串模式、JTAG模式、主串模式、SelectMAP/從并模式。本系統(tǒng)采用的配置方式是主串方式。PROM芯片選用XCF02S。
本系統(tǒng)采用兩片SRAM實(shí)現(xiàn)數(shù)據(jù)乒乓存儲(chǔ),即往一片SRAM中存儲(chǔ)完一幀圖像后,在處理該幀圖像的同時(shí)接著往另一片SRAM中存儲(chǔ)下一幀圖像,一幀標(biāo)清視頻圖像的數(shù)據(jù)量為[720×5761 024=405 ]KB,一個(gè)像素點(diǎn)為8 b,但是經(jīng)過小波變換后結(jié)果有可能會(huì)超過8 b,故選用存儲(chǔ)容量為512 KB數(shù)據(jù)線為16的IS64LV51216。它可以實(shí)現(xiàn)低成本、高速、高容量的緩存。
4.2 軟件部分
USB開發(fā)包含三個(gè)部分:驅(qū)動(dòng)程序開發(fā)、上位機(jī)應(yīng)用程序開發(fā)、8051固件程序開發(fā)。Windows操作系統(tǒng)提供了多種USB設(shè)備類的驅(qū)動(dòng)程序,且驅(qū)動(dòng)程序開發(fā)相對(duì)復(fù)雜,故省去了這個(gè)部分的開發(fā)。上位機(jī)部分直接使用Cypress公司提供的控制面板。故重點(diǎn)做的是固件程序的開發(fā)。Cypress公司為了方便開發(fā)者進(jìn)行開發(fā),同樣給開發(fā)者提供了固件框架?,F(xiàn)在要做的就是在理解USB協(xié)議的基礎(chǔ)上在該框架上進(jìn)行修改或添加完成所需要的功能。
固件程序需要實(shí)現(xiàn)的工作有:
(1) 完成USB設(shè)備的列舉與重新列舉。
(2) 初始化USB,對(duì)與數(shù)據(jù)傳輸及USB正常工作相對(duì)應(yīng)的寄存器進(jìn)行配置。
(3) 使用Slave FIFO模式實(shí)現(xiàn)數(shù)據(jù)在上位機(jī)與FPGA之間進(jìn)行傳輸。
FPGA軟件部分中,數(shù)據(jù)流處理過程是:由于視頻數(shù)據(jù)流是以奇偶場(chǎng)進(jìn)行傳輸?shù)模M(jìn)行小波變換時(shí)需要一整幀的圖像數(shù)據(jù),故首先把視頻數(shù)據(jù)流存儲(chǔ)在片外SRAM中,等到一整幀圖像數(shù)據(jù)都傳輸完畢后,再把數(shù)據(jù)從SRAM中讀出來進(jìn)行小波變換及水印提取,提取出水印信息后再通過USB口傳輸出去。FPGA完成的工作有:
(1) 控制USB傳輸數(shù)據(jù)。
(2) 對(duì)要進(jìn)行水印提取的視頻數(shù)據(jù)的[Y]分量做兩級(jí)5/3小波變換。
(3) 按照設(shè)計(jì)的算法將水印數(shù)據(jù)提取出來。
(4) 控制片外SRAM的讀/寫操作。
其中USB數(shù)據(jù)傳輸及SRAM讀/寫實(shí)現(xiàn)相對(duì)比較簡(jiǎn)單,小波變換是FPGA程序的核心部分,設(shè)計(jì)了基于RAM的流水線架構(gòu),基于RAM的二維5/3小波變換的實(shí)現(xiàn)結(jié)構(gòu)如圖7所示。5/3小波的流水線架構(gòu)如圖8所示。相比未加入流水線的小波變換架構(gòu),加入流水線后大大提高了小波變換的速度。
基于FPGA的水印提取算法進(jìn)行ModelSim仿真,結(jié)果見圖11,左邊列為FPGA提取出來的水印數(shù)據(jù),右邊列為水印編號(hào)即第幾個(gè)水印數(shù)據(jù)。圖12為Matlab水印提取結(jié)果,通過比較后發(fā)現(xiàn)兩者的結(jié)果是完全一致的,亦即小波變換及水印提取過程用FPGA實(shí)現(xiàn)是完全可行的。
5 結(jié) 論
本文通過分析數(shù)字水印的原理、分類、特征等,提出了一種基于DWT的數(shù)字水印算法,設(shè)計(jì)了數(shù)字水印提取系統(tǒng)。數(shù)字水印提取方案采用了USB+FPGA+SRAM的硬件結(jié)構(gòu)實(shí)現(xiàn)載有水印的視頻數(shù)據(jù)流的輸入、水印提取、水印結(jié)果輸出的工作。并對(duì)軟件的核心部分小波變換設(shè)計(jì)了硬件架構(gòu),設(shè)計(jì)了基于RAM的流水架構(gòu),結(jié)構(gòu)簡(jiǎn)單,易于FPGA實(shí)現(xiàn),并能夠滿足視頻實(shí)時(shí)處理的要求。參考文獻(xiàn)
[1] 胡大輝,杜治國(guó).一種改進(jìn)的回聲隱藏算法[J].西南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2012(9):109?114.
[2] 陳忻.數(shù)字水印技術(shù)綜述[J].科技視界,2012,27(9):106?107.
[3] DEGUILLAUME F, CSURKA G, PUN T. Countermeasures for unintentional and intentional video watermarking attacks [C]// Proceedings of 2000 SPIE Conference of Security and Watermarking of Multimedia Contents II. San Jose: SPIE, 2000: 346?357.
[4] 孫成.數(shù)字視頻水印算法的FPGA實(shí)現(xiàn)技術(shù)研究[D].北京:北京理工大學(xué),2011.
[5] PODILCHUK C I, ZENG W J. Image?adaptive watermarking using visual models [J]. IEEE journal on special areas in communications, 1998, 16(4): 525?539.
[6] 王杰,王誠(chéng),謝龍漢.Xilinx FPGA/CPLD 設(shè)計(jì)手冊(cè)[M].北京:人民郵電出版社,2011.
[7] 王沙沙.基于FPGA的數(shù)字水印系統(tǒng)設(shè)計(jì)技術(shù)研究[D].北京:北京理工大學(xué),2012.