科技通報

跑跑卡丁车手游寻找宝藏:FPGA的數字水印提取系統設計

跑跑卡丁车手游内测时间 www.rxqdn.icu 點擊數:10    日期:2016-10-24 09:01:48

針對信息安全問題的日益突出,提出了基于5/3整數小波的數字水印算法,給出了兩種5/3小波的硬件架構:
  

 摘 要: 針對信息安全問題的日益突出,提出了基于5/3整數小波的數字水印算法,給出了兩種5/3小波的硬件架構:一種是基于RAM的流水線架構;另一種是基于行分組的行列并行架構。進而設計了基于FPGA的數字水印提取硬件系統,結果證明該算法具有很好的不可見性及魯棒性,且復雜度低,硬件較容易實現,并將水印提取代碼下載到FPGA硬件進行驗證,結果證明該算法可以很好地實現水印的提取工作。
關鍵詞: 數字水??; 5/3小波; FPGA; 水印提取
本文引用《現代電子技術
0 引 言
數字水印技術是一種有效的數據安全維護及版權?;ぜ際鮗1],將某種特殊信息嵌入到數字文件中,其中數字文件可以是圖像、視頻等,而水印可以是可見的或者不可見的。目前數字水印技術的研究工作主要是針對靜止的圖像,而視頻信號存在一些不同于靜止圖像信號的特點,目前大多數的研究者都在軟件平臺上進行數字視頻水印算法的研究,但很難滿足視頻的實時性要求。因此,基于硬件的視頻水印算法的研究是非常有必要的。
本文提出基于FPGA的數字水印算法,FPGA現場可編程邏輯門陣列,可重復編程、周期短、成本低,且FPGA門電路資源豐富,大大縮短了開發周期,降低了開發成本。本文選用Xilinx公司的FPGA芯片進行系統設計。
1 數字水印技術
1.1 數字水印技術基礎
數字水印[2](Digital Watermark)技術是指使用某種水印算法將水印信息嵌入到多媒體數字文件中,數字水印包含兩個過程:水印的嵌入過程和水印的提取或檢測過程,水印嵌入過程是將水印數據嵌入到原始數字文件中,水印提取或檢測過程是采用相應的水印檢測或提取算法對待檢測文件進行水印檢測或提取操作。
數字水印技術的特殊應用要求決定了其不同于其他信息安全技術的一些特性,包括可證明性、不可見性、魯棒性、安全性以及水印信息容量,其中魯棒性、不可見性及信息容量最為重要又相互矛盾,應合理選擇三種特性的折中點。該技術可以按照水印抗攻擊的能力、感知特性、水印所附載的媒體、水印嵌入的位置、水印檢測手段、水印內容等六個角度進行分類。
1.2 數字視頻水印技術
數字視頻水印技術就是將數字水印嵌入到數字視頻產品中,以達到數字視頻產品版權?;?、廣播監控、視頻拷貝控制等目的。在視頻水印系統中,應考慮實時性、可靠性、安全性、壓縮編碼、盲檢測性以及魯棒性等問題。
數字視頻水印攻擊的目的是降低水印檢測的能力或破壞隱藏在載體數據中水印信息的意義。針對視頻的各種攻擊可以大致分為無意攻擊和有意攻擊,常見的攻擊類型有視頻處理攻擊、同步攻擊、拷貝攻擊以及共謀攻擊[3]。
1.3 水印算法
數字視頻通常情況下會經過編碼器壓縮成碼流之后再經信道進行傳輸,相應地,接收端要經過解碼器解碼還原數字視頻信息。根據這個數字視頻通信模型,可以將水印信息嵌入到三個不同的位置,而根據嵌入位置的不同,對應兩種不同的數字視頻水印算法,即壓縮域視頻水印算法、原始域視頻水印算法。
2 小波分析
本文研究的數字視頻水印算法是基于小波域的。小波變換是局部化的時頻分析,即它用時域和頻域共同表示信號。小波分析作為一種同時從時域和頻域進行分析的局部化分析方法,現正被廣泛的研究與應用[4]。
2.1 小波變換基礎
連續小波變換(Continuous Wavelet Transform,CWT)或被稱為積分小波變換是用一族小波基函數的加權和來表征信號,其中的一族小波基函數由基本小波經過伸縮平移得到[5]。
多分辨率分析的基本原理是:將待處理信號進行不同分辨率下的分解,然后選擇某一合適分辨率分析處理該信號或者同時在多級分辨率上分析處理該信號。任何小波都能把[L2(R)]分解成子空間[Wj,j∈Z]上的某種集合。
Mallat算法是一個經典多分辨率分析方法,在小波函數和尺度函數具體結構未知的情況下,可由系數直接完成信號的分解和重構,信號每次分解需要計算的長度減半,因此該算法是一種快速算法。
利用Mallat算法同樣可以實現對二維圖像的離散小波變換。圖1是一個兩級二維分解情況,首先進行第一級分解得到LL(低頻分量)、HL(垂直方向高頻分量)、LH(水平方向高頻分量)、HH(高頻分量)。然后再對第一級分解得到的低頻分量LL進行第二級變換得到LL2(第二級低頻分量)、HL2(第二級垂直方向高頻分量)、LH2(第二級水平方向高頻分量)、HH2(第二級高頻分量)。圖1顯示了二維圖像經過兩級小波變換后的各層小波系數的分布情況。
2.2 小波變換的提升算法
提升算法與傳統小波變換不同,它不使用基本小波經過伸縮平移得到小波基函數,而是通過提升過程構造出小波基。相比較于傳統小波變換,提升小波變換具有結構簡單、計算速度快等優點[6]。其運算分為三個步驟:分裂、預測、更新。
2.3 整數小波變換
本文研究的水印算法是對圖像灰度值進行小波變換,然后進行水印的嵌入?;葉戎凳? b的整數,希望它經過小波變換之后系數依然是整數,因此采用整數小波變換。選用的整數提升小波是5/3小波,用于JPEG2000標準的無損壓縮。
3 水印嵌入、提取算法
本算法思路是先對圖像進行5/3小波變換,然后再計算二次小波系數的垂直高頻系數相鄰兩行差值之和,剔除差值最大的幾行所對應的宏塊位置,禁止嵌入水印。確定嵌入行后,在一行22個宏塊中選擇12個均值較大的宏塊,再在宏塊的四個子塊中選擇方差相對小的子塊作為嵌入水印位置。
3.1 水印嵌入算法
若拿圖像的亮度分量[Y]進行小波變換,則低頻LL代表圖像主要能量分布,反映出原始圖像的平均亮度信息。若需要更精細的分解,則只需選擇上一級的LL進行下一級的小波分解即可。HL,LH和HH反映原始圖像的邊緣和輪廓特征。故將水印嵌入到低頻區域中可以保證水印具有較好的魯棒性,但不可見性較差,而將水印嵌入到高頻區域可以保證較好的不可見性,但魯棒性較差。綜合考慮魯棒性、不可見性及算法復雜度等,可以將水印信息嵌入到第二級的垂直高頻分量上(即LH2)。
中頻的大系數中嵌入水印信息,當受到有損編碼壓縮等因素的影響,這些系數將發生變化,水印嵌入的位置將無法找到,造成出現漏檢、錯檢等情況。為了解決這一問題,首先對LH2進行分塊,然后對分塊后每行選取幾個較大的能量塊進行水印嵌入,這樣即使前面某一個能量塊出現變化也不會影響后面的水印,保證了算法的魯棒性。
3.2 水印提取算法
水印嵌入的過程反過來就是水印提取過程。在進行水印提取的過程中,先對含水印的圖像進行小波變換,然后根據上面所設計的水印嵌入算法相對應的進行水印提取工作。
3.3 性能分析
本文選用了尺寸為528×320的YUV格式的視頻文件作為測試文件,對該視頻按照上面的步驟進行水印嵌入及提取。
3.3.1 不可見性分析
水印嵌入后不可見性評價方法主要有兩種:主觀評價和定量評價。主觀評價將隨機產生的96位(0,1)序列嵌入到選擇測試文件中,截取了其中一幀圖像,如圖3所示,人眼無法識別水印信息的嵌入,證明了水印嵌入算法具有較好的不可見性。
通過峰值信噪比(PSNR)對不可見性做定量評價。如果PSNR>35 dB就說明水印算法具有良好的不可見性。通過使用Matlab對該測試文件嵌入水印后的視頻求其PSNR,結果如圖4所示。從圖4可以看出,每幀圖像的PSNR都大于35 dB。該結果從定量方面再次證明了提出的水印算法的不可見性較好。
3.3.2 魯棒性分析
選用相關系數(NC)衡量水印信息的魯棒性,NC值越大表示它們兩者越相似。為了評價水印算法的魯棒性,對含有水印的視頻進行了MPEG?2編解碼、幀平均、幀刪除三種常見攻擊,然后使用NC評價該水印算法的魯棒性。各種攻擊下的NC參數如表1所示,證明了此算法的魯棒性較好。
4.1 硬件部分
標清數字水印提取方案的硬件系統主要由USB數據傳輸???、FPGA數據處理???、SRAM數據存儲??槿糠腫槌?。
USB數據傳輸部分選用Cypress公司的cy7c68013芯片完成視頻圖像的傳輸[7]。
本系統中,用FX2作為一個可以與主機高速通信的USB 2.0接口, FPGA能夠提供滿足Slave FIFO要求的傳輸時序,且Slave FIFO方式相對比較簡單,故USB選用的是Slave FIFO工作模式。Slave FIFO模式下USB與FPGA的數據流傳輸見圖6。
FPGA數據處理??椴捎玫統殺鏡腟partan?3系列的XC3S400芯片,該系列芯片性能指標雖不是最優,但非常適合低成本應用場合。Xilinx的FPGA基于SRAM工藝,斷電時數據會全部丟失,故FPGA通常使用一個外部PROM將配置數據下載到FPGA中。FPGA的配置方式有從串模式、JTAG模式、主串模式、SelectMAP/從并模式。本系統采用的配置方式是主串方式。PROM芯片選用XCF02S。
本系統采用兩片SRAM實現數據乒乓存儲,即往一片SRAM中存儲完一幀圖像后,在處理該幀圖像的同時接著往另一片SRAM中存儲下一幀圖像,一幀標清視頻圖像的數據量為[720×5761 024=405 ]KB,一個像素點為8 b,但是經過小波變換后結果有可能會超過8 b,故選用存儲容量為512 KB數據線為16的IS64LV51216。它可以實現低成本、高速、高容量的緩存。
4.2 軟件部分
USB開發包含三個部分:驅動程序開發、上位機應用程序開發、8051固件程序開發。Windows操作系統提供了多種USB設備類的驅動程序,且驅動程序開發相對復雜,故省去了這個部分的開發。上位機部分直接使用Cypress公司提供的控制面板。故重點做的是固件程序的開發。Cypress公司為了方便開發者進行開發,同樣給開發者提供了固件框架。現在要做的就是在理解USB協議的基礎上在該框架上進行修改或添加完成所需要的功能。
固件程序需要實現的工作有:
(1) 完成USB設備的列舉與重新列舉。
(2) 初始化USB,對與數據傳輸及USB正常工作相對應的寄存器進行配置。
(3) 使用Slave FIFO模式實現數據在上位機與FPGA之間進行傳輸。
FPGA軟件部分中,數據流處理過程是:由于視頻數據流是以奇偶場進行傳輸的,而進行小波變換時需要一整幀的圖像數據,故首先把視頻數據流存儲在片外SRAM中,等到一整幀圖像數據都傳輸完畢后,再把數據從SRAM中讀出來進行小波變換及水印提取,提取出水印信息后再通過USB口傳輸出去。FPGA完成的工作有:
(1) 控制USB傳輸數據。
(2) 對要進行水印提取的視頻數據的[Y]分量做兩級5/3小波變換。
(3) 按照設計的算法將水印數據提取出來。
(4) 控制片外SRAM的讀/寫操作。
其中USB數據傳輸及SRAM讀/寫實現相對比較簡單,小波變換是FPGA程序的核心部分,設計了基于RAM的流水線架構,基于RAM的二維5/3小波變換的實現結構如圖7所示。5/3小波的流水線架構如圖8所示。相比未加入流水線的小波變換架構,加入流水線后大大提高了小波變換的速度。
基于FPGA的水印提取算法進行ModelSim仿真,結果見圖11,左邊列為FPGA提取出來的水印數據,右邊列為水印編號即第幾個水印數據。圖12為Matlab水印提取結果,通過比較后發現兩者的結果是完全一致的,亦即小波變換及水印提取過程用FPGA實現是完全可行的。
5 結 論
本文通過分析數字水印的原理、分類、特征等,提出了一種基于DWT的數字水印算法,設計了數字水印提取系統。數字水印提取方案采用了USB+FPGA+SRAM的硬件結構實現載有水印的視頻數據流的輸入、水印提取、水印結果輸出的工作。并對軟件的核心部分小波變換設計了硬件架構,設計了基于RAM的流水架構,結構簡單,易于FPGA實現,并能夠滿足視頻實時處理的要求。參考文獻
[1] 胡大輝,杜治國.一種改進的回聲隱藏算法[J].西南師范大學學報(自然科學版),2012(9):109?114.
[2] 陳忻.數字水印技術綜述[J].科技視界,2012,27(9):106?107.



王編輯
中聯論文網編輯
劉編輯
中聯論文網編輯
趙編輯
中聯論文網編輯
孫編輯
中聯論文網編輯
電話
18931176030
固話
0311-80693734
投稿郵箱
99期刊承諾發表不成功無條件退款!
客服系統