印刷品數(shù)字水印檢測(cè)器的實(shí)現(xiàn)
最近幾年,許多研究人員放棄了傳統(tǒng)密碼學(xué)的技術(shù)路線,嘗試用各種信號(hào)處理方法對(duì)聲像數(shù)據(jù)進(jìn)行隱藏加密,并將該技術(shù)用于制作多媒體的數(shù)字水印.數(shù)字水印(Digital Watermark)技術(shù)是指用信號(hào)處理的方法在數(shù)字化的多媒體數(shù)據(jù)中嵌入隱蔽的標(biāo)記,這種標(biāo)記通常是不可見的,只有通過專用的檢測(cè)器或閱讀器才能提取。數(shù)字水印是信息隱藏技術(shù)的一個(gè)重要研究方向。本文采用高端CMOS圖像傳感器采集圖像,基于DCT變換和相關(guān)算法,結(jié)合可編程邏輯器件FPGA和數(shù)字信號(hào)處理器DSP,實(shí)現(xiàn)了印刷品數(shù)字水印的快速檢測(cè)。
本文引用地址:http://www.ex-cimer.com/article/150398.htm1 基本原理
1.1 色彩空間的選擇
本系統(tǒng)中含有數(shù)字水印的印刷品由計(jì)算機(jī)生成,通過激光打印機(jī)打印,再由CMOS傳感器采集。整個(gè)過程中,圖像信號(hào)經(jīng)歷了DAC變換和ADC變換,并且在不同設(shè)備上傳輸。為了保證圖像的失真最小,必須選擇一種獨(dú)立于設(shè)備的色彩空間來表示圖像。本系統(tǒng)采用CIE-XYZ色彩空間。XYZ顏色模型將彩色光表示為:
C=X(x)+Y(y)+Z(z)
其中,x、y、z是XYZ色彩空間的基色量,X、Y、Z為三色比例系數(shù)。
1.2 水印的添加和提取
所要添加的水印信息可以是一段長(zhǎng)度為n的由-1和1表示的二進(jìn)制數(shù)碼{ki},如:-1-1-1-1-1-1-1-1 1 1 1 1 1 1 1 1 -1-1-1-1-1-1-1-1.將ki與偽隨機(jī)序列M序列按位與,具體實(shí)現(xiàn)是ki序列長(zhǎng)度取M序列長(zhǎng)度的整數(shù)倍,從而得到一個(gè)具有良好自相關(guān)特性的序列,這就是水印hi.宿主圖像可以是任意一幅色彩豐富的彩色圖片。首先,將宿主圖像轉(zhuǎn)化為CIE-XYZ色彩空間方式,取出亮度分量,將其進(jìn)行16×16 DCT變換,選出每個(gè)塊的前10個(gè)較大的DCT系數(shù)Wi;然后將hi序列按照如下公式計(jì)算得到加有水印的DCT系數(shù)序列:
Wi′=Wi(1+аhi)
其中,a控制了水印的強(qiáng)度。最后對(duì)處理過的DCT系數(shù)進(jìn)行反DCT變換后與圖像的另外兩個(gè)基色量合成并打印,即可得到添加了水印的圖像。
水印的提取過程與水印的添加過程大體相反。為了保證圖像的大小與原圖相同,將一幅含有水印的印刷品在合適的燈光照明和適當(dāng)?shù)奈锞嘞拢ㄟ^高端CMOS圖像傳感器及其外圍電路采集到存儲(chǔ)器,將圖像從RGB空間轉(zhuǎn)換為CIE-XYZ空間,提取其中的亮度分量;然后對(duì)其進(jìn)行16×16 DCT變換,選取前10個(gè)較大的DCT系數(shù),用已知hi序列與之進(jìn)行相關(guān)運(yùn)算。由于經(jīng)M序列調(diào)制的hi具有很好的自相關(guān)特性,當(dāng)圖像中含有水印時(shí),相關(guān)運(yùn)算的值超過一定的閾值即表示此圖像含有水印,反之則表示這幅圖片中不含有水印信息。通過上述方法,可以在需要受到保護(hù)的圖像中添加水印信息,然后用本論文闡述的機(jī)讀設(shè)備進(jìn)行檢測(cè),從而將不受保護(hù)的圖像檢測(cè)出來。對(duì)于含有水印信息圖像的復(fù)制印刷品,由于其水印能量被削弱,因此檢測(cè)得出的相關(guān)值偏低,也能將其淘汰。經(jīng)試驗(yàn)得出,正品的相關(guān)值都在40%以上,而正品的復(fù)制品都在15%以下,不含水印信息的相同印刷品的相關(guān)值都在10%以下。
數(shù)字水印系統(tǒng)原理如圖1所示。
1.3 算法在FPGA及DSP上的實(shí)現(xiàn)
由于本文采用CMOS圖像傳感器所采集圖像的色彩空間屬于RGB空間,因此,必須先將其轉(zhuǎn)換為獨(dú)立于設(shè)備的CIE-XYZ空間,使后續(xù)處理得以繼續(xù)。
FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
本文所采用的數(shù)字水印算法包含了圖像的2-D DCT運(yùn)算,計(jì)算量極大。為了保證計(jì)算的實(shí)時(shí)性,本文采用具有并行處理結(jié)構(gòu)的FPGA實(shí)現(xiàn)。首先改進(jìn)2-D DCT算法,使之適合FPGA的并行處理,常用的方法是將二維運(yùn)算轉(zhuǎn)化為兩次一維運(yùn)算。
因此,二維DCT運(yùn)算可由兩個(gè)一維運(yùn)算得到,并且,公式中的余弦值可以事先計(jì)算好并做為運(yùn)算參數(shù)保存。一維運(yùn)算的實(shí)現(xiàn)采用了DA(Distributed Arithmetic)算法進(jìn)一步提高運(yùn)算速度,具體原理如下:
Ai(i=0,1,2,……,15)表示某一行某一像素的亮度值,xk表示余弦變換的多項(xiàng)式系數(shù)。對(duì)于式(8),宜采用16個(gè)相同的模塊進(jìn)行并行運(yùn)算,所得結(jié)果為Z0,Z1,Z2,……,Z15,然后將Zy帶入式(4),進(jìn)行與上一步相同的運(yùn)算,得出DCT系數(shù)的值。以上運(yùn)算用按位與運(yùn)算和加法運(yùn)算,可以避免對(duì)乘法器資源的占用,而且可以用FPGA中的查找表(LUT)實(shí)現(xiàn)。在電路設(shè)計(jì)上可采用乒乓操作分時(shí)復(fù)用一維運(yùn)算模塊,以提高器件的利用率。
在得到圖片的DCT系數(shù)矩陣以后,取出每個(gè)16×16塊的前10個(gè)較大的DCT系數(shù),形成一個(gè)一維序列,與前面提到的水印序列hi進(jìn)行相關(guān)運(yùn)算。相關(guān)運(yùn)算值超過一個(gè)由試驗(yàn)得出的閾值則表明檢測(cè)到水印。
評(píng)論