摘 要:針對條碼印刷防偽應(yīng)用,提出一種條碼印刷防偽算法,使水印對一次打印掃描具有魯棒性,對二次打印掃描具有脆弱性,以區(qū)分原始載體作品的真?zhèn)巍8鶕?jù)條碼水印圖像的大小對載體圖像進(jìn)行分塊DCT變換,選取中低頻系數(shù),同時對這些系數(shù)幅值小的進(jìn)行放大修改,并通過修改系數(shù)符號的正負(fù)性來嵌入二值條碼水印。根據(jù)嵌入水印后圖像的分塊DCT系數(shù)的正負(fù)性來提取水印,水印提取過程實現(xiàn)了盲提取。通過設(shè)定合適的閾值可以判斷原圖像真?zhèn)巍7抡鎸嶒烌炞C了算法具有很好的不可見性,符合印刷品防偽技術(shù)的要求。關(guān)鍵詞:數(shù)字水印; 離散余弦變換; Arnold變換; Radon變換
中圖分類號:TN91891-34文獻(xiàn)標(biāo)識碼:A
文章編號:1004-373X(2010)16-0143-03
DCT Coefficients of Symbols Based on Relationship of the Domain
Watermarking Algorithm in the Printing
SUN Wen-wen, WANG Hui-qin
(Information and Control Engineering College, Xi’an University of Architecture and Technology, Xi’an 710055, China)
Abstract: A watermarking algorithm which is used in anti-counterfeiting is proposed. In order to distinguish the true or the 1 of the watermarked image, watermark is robust to the first PS (print and scan) and fragile to the second PS. The original image is blocked and every block is manipulated by DCT. To embed a binary barcode watermark, the amplitude of the smaller coefficients in low and middle frequency was increased and their signs were modified. The watermark was extracted according to the sign of low and middle frequency coefficients in blocked DCT domain and without the original image. The original image is to be judged as true or 1 with an appropriate threshold. The experiment results show that the algorithm meets the requirements of print anti-counterfeiting and have high practical value.Keywords: digital watermarking; discrete cosine transform; Arnold transform; Radon transform
0 引 言
條碼是由一組規(guī)則排列的條、空以及對應(yīng)的字符組成的標(biāo)記,用以表示一定的字符、數(shù)字及符號組成的信息,在防偽方面應(yīng)用極其廣泛。如商品包裝上和書刊后面的條碼防偽標(biāo)識等,給人們的生活和工作帶了許多便利,但是因為其主要印刷在商品包裝表面,使得不法分子能夠利用高端掃描儀器仿造條碼標(biāo)識,對假冒商品進(jìn)行包裝,以此謀求暴利。因此,為了既能夠保存條碼標(biāo)識,又能將條碼隱藏起來不被發(fā)現(xiàn)和偽造[1]。
本文通過對打印掃描前后圖像的DCT域失真分析,結(jié)合Arnold變換設(shè)計出一種利用DCT系數(shù)符號關(guān)系的條碼印刷水印算法,并在提取水印后可辨別印刷圖像的真?zhèn)巍?/p>
1 離散余弦變換
DCT是一種可分離的正交變換,并且是對稱的,它具有很好的去相關(guān)能力和能量壓縮能力。DCT常常被認(rèn)為是對語音和圖像信號進(jìn)行變換的最佳方法,并且由于其算法較易在數(shù)字信號處理器上快速實現(xiàn),因此它在圖像編碼領(lǐng)域具有很重要的地位,如應(yīng)用廣泛的JPEG,MPEG,H.261等壓縮標(biāo)準(zhǔn)[2],都是基于DCT域的。
2 Arnold變換
圖像可看作是平面區(qū)域上的二元函數(shù)Z=F(x,y),(x,y)∈R。通常區(qū)域R是一個矩形,對R中任意的點(x,y),則F(x,y)代表圖像的信息(如灰度值等)。在圖像被數(shù)字化后,Z=F(x,y)對應(yīng)于一個二維離散點陣,其元素所在的行與列對應(yīng)于自變量取值,元素本身代表圖像信息。離散化的數(shù)字圖像相當(dāng)于元素之間有相關(guān)性的一類特殊矩陣。對這一矩陣做某種變換可以得到新的矩陣,從而實現(xiàn)圖像的置亂處理[3-4]。令數(shù)字圖像的像素坐標(biāo)x,y∈{0,1,2,…,N-1},于是Arnold變換為:
x′y′=1112xymod N(1)
式中:x′和y′表示像素點(x,y)經(jīng)一次Arnold變換后得到的新位置坐標(biāo);mod N表示對x′和y′取模,保證x′和y′仍在{0,N-1}范圍內(nèi)。
當(dāng)對一個圖像進(jìn)行Arnold變換時,就是把圖像的像素點位置按式(1)進(jìn)行移動,像素的灰度值也相應(yīng)移動,顯然原圖像平面上任意區(qū)域的圖像信息就會發(fā)生變化,于是就得到一個相對原圖像混亂的圖像,所以對圖像進(jìn)行Arnold變換,就相當(dāng)于對該圖像進(jìn)行置亂。由于N×N個像素所能表現(xiàn)的圖像是有限的,因此迭代過程呈周期現(xiàn)象。
3 算法描述
3.1 算法嵌入過程
(1) 設(shè)原始灰度圖像I的大小為m×m,待嵌入的二值水印圖像W的大小為n×n,對二值水印圖像W進(jìn)行Arnold變換,經(jīng)過置亂度計算[5],本文選取的置亂次數(shù)為9,再對原始圖像I做DCT變換。
(2) 將I進(jìn)行k×k的分塊,其中k=m/n,且k為整數(shù),對每一個n×n分塊進(jìn)行DCT變換,得到分塊DCT系數(shù)矩陣。
(3) 將每一個分塊DCT系數(shù)矩陣的系數(shù)值按照Zig-Zag進(jìn)行排序[6],選取嵌入的水印的起始位置為s,嵌入的長度為2l,且s+2l≤k×k。
(4)對每一個分塊的DCT系數(shù)重復(fù)的嵌入l次1 b信息。設(shè)分塊后按Zig-Zag排序的一維系數(shù)矩陣為Pt(i)(t=1,2,…,n×n;i=1,2,…,k×k),其具體嵌入方法如下:
依據(jù)上面所介紹的DCT系數(shù)在打印掃描后的變化規(guī)律,在進(jìn)行水印嵌入前本文先對所選系數(shù)中幅值較小的系數(shù)進(jìn)行修正[7],其修正方法如下:
設(shè)修改的幅值強(qiáng)度為a(a>0),當(dāng)所選系數(shù)的幅值的絕對值小于a,則將系數(shù)的幅值修改為a,正負(fù)號不變。
當(dāng)某一分塊對應(yīng)的要嵌入水印信息為1時,修改系數(shù)滿足:
Pt(i)Pt(l+i)>0(2)
當(dāng)要嵌入水印信息為0時,修改系數(shù)滿足:
Pt(i)Pt(l+i)<0(3)
若是不滿足式(2)和式(3),則修改Pt(i)和Pt(l+i)中絕對值較小的一個符號,使其滿足上式。
如此重復(fù)l次嵌入1 b水印信息,即在i=s,s+1,…,s+l-1時,修改系數(shù)滿足以上式子,其中s和l可作為水印算法的密鑰。
(5) 按照上面的嵌入方法,把置亂的水印圖像灰度值采用加權(quán)相加的方式添加到合適的DCT系數(shù)上,實現(xiàn)水印信息的嵌入。
(6) 對嵌入完水印信息的DCT系數(shù)矩陣進(jìn)行分塊反離散余弦變換(IDCT),即可得到嵌入水印信息的圖像。
3.2 算法提取過程
水印的提取算法是嵌入算法的逆過程。
(1) 對打印掃描后的含水印圖像Iw利用Radon變換進(jìn)行糾正后[8]。
(2) 對圖像Iw進(jìn)行k×k的分塊,每一塊進(jìn)行DCT變換,得到分塊DCT系數(shù)矩陣,然后依據(jù)密鑰s和l從分塊系數(shù)矩陣中提取水印信息。
設(shè)對Iw進(jìn)行分塊DCT變換并按Zig-Zag排序后的系數(shù)一維矩陣為Pt′(i)(t=1,2,…,n×n;i=1,2,…,k×k)。
(3) 對于每一個分塊,只提取1 b的水印信息。按照嵌入方法的逆過程來提取,若P′t(i)×P′t(l+i)>0,則提取出的水印信息W′j(r)=1;
若P′t(i)×P′t(l+i)≤0,則提取的水印信息W′j(r)=0,式中j=1,2,…,n×n;r=1,2,…,l。
(4) 由于誤差的存在,提取的l個水印信息W′j(1),W′j(2),…,W′j(l)可能存在不一致的情況,因此本文通過最大隸屬度原則判斷該分塊最終的嵌入信息W′j。定義W′j對1的隸屬度為N1/l,其中N1為W′j(1),W′j(2),…,W′j(l)中1的個數(shù)/l對0的隸屬度為:
W′j(1),W′j(2),…,W′j(l)中0的個數(shù)。
按照上面的提取方法,從所有的分塊中提取出相應(yīng)的水印信息,再結(jié)合置亂過程中的變換次數(shù)進(jìn)行Arnold反變換,得到提取水印W′,比較提取的水印圖像和原始水印圖像的相似度,來判斷原圖像的真?zhèn)巍*?/p>
3.3 算法分析
對本算法的3個系數(shù)選取直接決定著算法的不可見性和魯棒性[9]。
當(dāng)起始位置s選的過小時,嵌入位置就靠近了低頻區(qū)域,水印的魯棒性增強(qiáng),但是同時水印的不可見性卻相對減小;反之不可見性增強(qiáng),但魯棒性卻減小。因此本文選取中低頻來嵌入水印,即s=-15 dB。當(dāng)l過小時,魯棒性減小,不可見性增強(qiáng);l過大時,魯棒性增強(qiáng),不可見性減小,同時也加大了算法的運(yùn)算時間。并且在選取l=37.752 1 dB時,還要考慮起始位置s,當(dāng)s靠近中頻時,l選取過大,使水印嵌入的位置集中在高頻,這樣不但不會增強(qiáng)水印的魯棒性,反而會減小水印的魯棒性。因此,本文選取l=13。對于第3個系數(shù)幅值強(qiáng)度a,則是為了增大算法的魯棒性。若a取的過小則對于增大算法的的魯棒性沒有太大改變,若a過大則可能因為修改的幅值過大而減小水印的不可見性。因此本文選取a=1.2。
同時利用Arnold變換對圖像進(jìn)行置亂使有意義的數(shù)字圖像變成像噪聲一樣的無意義圖像,實現(xiàn)了信息的初步隱藏,并且其置亂次數(shù)可以為隱藏系統(tǒng)提供密鑰(key),從而增強(qiáng)了系統(tǒng)的安全性和保密性,同時該算法實現(xiàn)的置亂克服了隨機(jī)置亂的不可恢復(fù)性。
本算法所選用的方法依據(jù)2個系數(shù)符號的同異性和絕對值大小來修改系數(shù),區(qū)別于直接選擇修改系數(shù)符號[10],這樣做利于大大提升水印的不可見性。
4 仿真實驗及結(jié)果
實驗采用256×256大小的256灰度級Camereman圖像作為原始圖像,以32×32大小的二值條碼作為水印圖像,如下圖1所示。
圖1 水印圖像
對于嵌入水印后的圖像,不僅從人眼的主觀感覺進(jìn)行評價,而且還以峰值信噪比(PSNR)來進(jìn)行客觀評價。因為本文嵌入的水印是二值條碼,所以對于提取的水印,將從人眼的主觀感覺和水印的相似性(NC)2個標(biāo)準(zhǔn)進(jìn)行評價。圖2是嵌入水印后的圖像和未受攻擊下提取的水印圖像。
圖2 嵌入水印后圖像及提取水印
本實驗按照上面算法分析,對各參數(shù)取s=15,l=13,d=2,嵌入水印后圖像的PSNR=37.752 1 dB,在未受任何攻擊的情況下提取的水印的NC=1,效果如圖2(b) 所示。說明本算法能夠完全正確地提取出所嵌入的水印信息。通過人眼的主觀感覺和PSNR=37.752 1 dB可以看出,本算法嵌入水印后的圖像的不可見性較好。
在此將算法進(jìn)行打印掃描魯棒性測試,即對嵌入水印后的圖像進(jìn)行一次打印掃描和二次打印掃描,然后提取水印信息比較真?zhèn)危鐖D3,圖4所示。可以看出對于一次打印掃描后提取的水印修復(fù)后與原水印圖像相同,而二次打印掃描后的提取水印圖像修復(fù)后則與原水印圖像有差別,因此要鑒別真?zhèn)危梢岳靡淮魏投未蛴呙韬筇崛〉乃∨c原始水印的NC值來判斷[11],但是這就要求給予一個閾值,大于閾值則為正版,反之則為盜版。圖5是經(jīng)過十組實驗得到的一次和二次打印掃描后提取水印與原始水印的NC值。從圖5可以看出將判斷真?zhèn)蔚拈撝等楠?.8比較合適。
圖3 一次打印掃描后圖像比較
圖4 二次打印掃描后圖像比較
圖5 10組實驗NC值示意圖
5 結(jié) 語
本文提出的算法是結(jié)合Arnold變換通過比較分塊DCT系數(shù)符號來嵌入二值條碼水印,針對圖像經(jīng)過一次和二次掃描后產(chǎn)生的旋轉(zhuǎn)變化,利用Radon變換進(jìn)行了糾正,水印提取實現(xiàn)了盲提取。針對具有特殊意義的條碼水印,本文利用最大隸屬度原則對提出的水印進(jìn)行了修復(fù),對一次和二次打印掃描后提取的水印與原始水印進(jìn)行比較。最后通過仿真實驗證明了本章提出的算法具有很好的可不見性,而且能夠區(qū)分印刷品的真?zhèn)巍?/p>
參考文獻(xiàn)
[1]熊昌鎮(zhèn).數(shù)字圖像隱藏技術(shù)的研究[D].北京:北方工業(yè)大學(xué),2004.
[2]章毓晉.圖像工程(上冊)圖像處理[M].2版.北京:清華大學(xué)出版社,2006.
[3]陳萍.基于Arnold置亂和小波變換的的圖像加密算法[J].微電子學(xué)與計算機(jī),2009(10):53-55.
[4]詹新生.圖像加密置亂性能分析[D].鄭州:鄭州大學(xué),2005.
[5]黃良永.二值圖像Arnold變換的最佳置亂度[J].計算機(jī)應(yīng)用,2009,29(2):474-476,483.
[6]鄭文斌.基于Zig-Zag掃描的空域圖像置亂新算法[J].計算機(jī)工程與科學(xué),2009,31(7):50-52.
[7]蔡漢添,何軍輝.一種基于DCT中頻的圖像水印技術(shù)[J].華南理工大學(xué)學(xué)報:自然科學(xué)版,2001,29(12):57-60.
[8]何冰.基于Radon變換的抗旋轉(zhuǎn)攻擊零水印算法[J].計算機(jī)工程,2009,35(16):128-129,132.
[9]牛少彰.數(shù)字水印新算法的設(shè)計及魯棒性分析[D].北京:北京郵電大學(xué),2004.
[10]尹康康,石教英,潘志庚.一種魯棒性好的圖像水印算法[J].軟件學(xué)報,2001,12(5):665-675.
[11]SOLANKI Kaushal, MADHOW Upamanyu, MANJUNATH B S,et al. Print and scan resilient data hiding in images[J]. IEEE Transactions on Information Forensics and Security, 2006, 1(4): 464-478.