楊恒歡,常學(xué)義,荊 銳,馮 濤
(1.上海中新科技管理學(xué)院計(jì)算機(jī)系,上海 200023;2.上海第二工業(yè)大學(xué)成人與繼續(xù)教育學(xué)院,上海 200041)
隨著信息安全技術(shù)的發(fā)展,數(shù)字音頻水印技術(shù)也得到更加廣泛的應(yīng)用并迅速發(fā)展。數(shù)字音頻水印應(yīng)用領(lǐng)域主要是版權(quán)保護(hù)、隱藏標(biāo)識(shí)、認(rèn)證和安全不可見通信。一個(gè)有實(shí)用性的數(shù)字音頻水印應(yīng)具有以下特征:隱蔽性或透明性(Imperceptible or Transparency)、不易移除性(Non-removable)、強(qiáng)健性(Robustness)和明確性(Unambiguous)。在不同的應(yīng)用領(lǐng)域,數(shù)字音頻水印側(cè)重的特性也不同?,F(xiàn)今數(shù)字音頻水印技術(shù)的主要研究領(lǐng)域?yàn)槎祱D像和低像素灰度圖像。由于目前嵌入方法的局限性,在面對(duì)像素?cái)?shù)較大的圖像時(shí),無法做到良好的抗感知性,嵌入后對(duì)音頻品質(zhì)的影響較大,有很大的局限性。
數(shù)字水印的分類方式有兩種。
1) 按數(shù)字水印提取方式可將數(shù)字音頻水印類型劃分為有源水印、無源水印和零水印。
(1) 有源水印在提取過程中除了需要帶水印的音頻外還需要原始音頻。一般來說,有源水印的魯棒性比較強(qiáng),可嵌入信息量較大。文獻(xiàn)[1]提供一種基于快速傅里葉變換的有源水印方法。該方法提取水印時(shí)先對(duì)原始音頻進(jìn)行傅里葉變換找到水印嵌入位置序列,然后根據(jù)序列對(duì)水印音頻進(jìn)行處理提取出水印圖像。此類方法一般具有較好的魯棒性和透明性。但其應(yīng)用受到存儲(chǔ)成本的限制,攔截到水印音頻和原始音頻后易被發(fā)現(xiàn)水印信息,一般需要對(duì)水印圖像進(jìn)行加密,以此來提高水印信息的安全性。
(2) 無源水印又稱盲水印,即在提取水印信息時(shí)不需要原始音頻。無源水印較難發(fā)現(xiàn)其中藏有水印,但是通常情況下嵌入的信息量較小。文獻(xiàn)[2]提出了一種基于DWT和相對(duì)較小值的音頻盲水印算法。該方法在嵌入時(shí)根據(jù)連續(xù) 3個(gè)水印比特的二進(jìn)制權(quán)值之和來確定嵌入位置,提取時(shí)也可用相同方法確定水印的嵌入位置,以達(dá)到盲水印的提取。此類方法有較高的魯棒性和透明性,但存在嵌入信息量小的問題,一般只能處理低像素的二值圖像。
(3) 零水印在嵌入水印時(shí)對(duì)原始音頻無任何改動(dòng),其所生成的是與水印圖像等長(zhǎng)的密鑰文件。與前兩種水印算法不同,由于沒有改變音頻的特征,它在提取時(shí)需要原始音頻和與水印等長(zhǎng)的密鑰。文獻(xiàn)[3]中討論了兩種零水印算法。此類方法均根據(jù)音頻特征構(gòu)造一個(gè)新的矩陣作為密鑰,提取時(shí)根據(jù)原始音頻的特征和水印密鑰進(jìn)行處理還原水印。零水印并不改變宿主信息,能很好地解決數(shù)字水印的感知性和魯棒性之間的矛盾,但是通常需要公證機(jī)構(gòu)備份音頻以及需要水印等長(zhǎng)的密鑰才能保證應(yīng)用。
2) 根據(jù)數(shù)字音頻水印信息的嵌入位置,可將類型劃分為空間域水印算法和變換域水印算法。
(1) 空間域水印算法通常直接將水印信息嵌入到音頻文件的時(shí)域信息中。主要算法有最低有效位(LSB)編碼,回聲隱藏算法等。文獻(xiàn)[4]提出了一種基于回聲隱藏的數(shù)字音頻水印算法。該算法水印的嵌入和提取均在時(shí)間域完成,同時(shí)引入了用人類聽覺特性尋找序列,提高了水印的安全性并加強(qiáng)了不可見性。此類算法實(shí)現(xiàn)較為簡(jiǎn)單,運(yùn)行速度快,但通常魯棒性較差。
(2) 變換域水印算法將水印能量離散地嵌入到音頻的變換系數(shù)上。常見的變換方法有離散余弦變換(DCT)、離散傅里葉變換(DFT)、離散小波變換(DWT)、卡亨南一洛維變換(KLT)等。文獻(xiàn)[5]先對(duì)音頻進(jìn)行小波分析然后進(jìn)行離散余弦變換(DCT),選取 DCT系數(shù)中幅值較大的點(diǎn)嵌入水印信息。該算法具有較好的魯棒性和透明性,但水印的嵌入量較小,大多局限于二值圖像,在嵌入水印圖像較大時(shí),存在溢出等問題。
本文方法采用了無源水印技術(shù),提出了一種基于小波變換的雙聲道無源數(shù)字水印算法。先對(duì)水印圖片做置亂加密處理,然后尋找左右聲道在低頻系數(shù)中的較大差異位,并以水印圖像像素?cái)?shù)為基準(zhǔn)自適應(yīng)地尋找合適的嵌入位置,最后根據(jù)嵌入位置的音頻特征將水印嵌入到左(右)聲道的低頻系數(shù)中。該嵌入算法簡(jiǎn)單易行,嵌入水印后的音頻幾乎不會(huì)被感知改變,安全性好,且提取水印圖像無需原始音頻,實(shí)現(xiàn)了無源水印。本方法較以往算法不同之處在于:(a) 能大幅提高嵌入水印信息量,對(duì)于灰度以及彩色圖像同樣適用;(b) 具有很好的隱藏性,嵌入水印后的音頻幾乎不能被感知到水印的存在;(c) 以水印圖像像素為選擇基準(zhǔn)能自適應(yīng)將水印嵌入到音頻中。
本算法通過對(duì)音頻的左右聲道進(jìn)行小波分析和差異性對(duì)比分析,利用加密水印圖像的像素?cái)?shù)及音頻中低頻系數(shù)的差異點(diǎn),自適應(yīng)尋找適當(dāng)?shù)乃〔迦朦c(diǎn),最終將灰度圖像作為水印信號(hào)嵌入到音頻中。算法包括四部分:(1) 水印圖像的歸一化和加密;(2) 音頻信號(hào)分析及特征點(diǎn)的選??;(3) 水印圖像及參數(shù)的嵌入;(4) 水印圖像的選取。流程如圖1所示:
圖1 流程圖Fig.1 flow diagram
由于圖像信息的存儲(chǔ)格式和音頻處理時(shí)的格式不同,在處理前必須進(jìn)行歸一化操作,將圖像信息格式轉(zhuǎn)為限定范圍且方便運(yùn)算的格式。在讀入灰度水印圖像后,將水印圖像信息強(qiáng)制轉(zhuǎn)換為雙精度格式,并且限定各元素的取值范圍在0~1之間。為了加強(qiáng)水印圖像的魯棒性和安全性,同時(shí)需要對(duì)水印信息進(jìn)行加密。這樣保證即使非法截獲者猜測(cè)到水印的嵌入方法,也無法提取出正確的水印信息。可選擇的加密方法有很多,如位操作、FASS曲線、Arnold變換、三角函數(shù)變換等。鑒于無源水印本身抗感知性和安全性本身就較高,無需太過復(fù)雜的加密確保安全。本算法采用Arnold變換作為加密算法,改變水印圖像的空間相關(guān)性,Arnold 變換又稱作貓臉變換(Cat Mapping)[6],其優(yōu)點(diǎn)在于較易實(shí)現(xiàn),還原方式簡(jiǎn)單。其變換如式(1):
其中x和y為原始圖像的元素空間坐標(biāo),x'和y'是構(gòu)成圖像的坐標(biāo),K是原始圖像邊長(zhǎng)。隨著公式迭代次數(shù)的增加,水印圖像會(huì)變的越來越模糊,達(dá)到加密的目的。
圖2 原始圖像Fig.2 Original image
圖3 Arnold變換后的圖像Fig.3 Image after Arnold transforms
由于其迭代次數(shù)在達(dá)到某個(gè)特定次數(shù)時(shí)又會(huì)被還原成原圖像,因此在提取時(shí)只需要知道加密時(shí)的迭代次數(shù)就能還原水印圖像。通過對(duì)音頻的分析,得到的音頻振幅范圍非常小,大約在-1~+1之間。如果以傳統(tǒng)方法嵌入二值水印圖像,為了降低對(duì)音頻使用性影響,嵌入信息十分有限。在嵌入灰度圖像時(shí),由于影響因子較大,幾乎無法實(shí)現(xiàn)。本算法為了確保音頻的實(shí)用性,在嵌入圖像前需要將圖像每個(gè)像素值降低至不影響音頻的不可感知性和抗攻擊能力。當(dāng)像素值的降低強(qiáng)度大于0.1時(shí),會(huì)影響嵌入后音頻的不可感知性。而當(dāng)像素值的降低強(qiáng)度低于0.005時(shí),對(duì)于水印圖像低灰度區(qū)域影響極大,在抵抗白噪聲攻擊后,所得水印圖片完整度較低。根據(jù)多次實(shí)驗(yàn),使用1/20作為嵌入強(qiáng)度調(diào)控值,最為平衡。由于水印圖片像素值的降低,使得嵌入水印后的音頻,不可感知性和抗攻擊能力有了很大的提高,灰度水印的嵌入得以實(shí)現(xiàn)。
水印嵌入位置的好壞關(guān)系到數(shù)字音頻水印的魯棒性和透明性。一個(gè)成功的嵌入算法,在嵌入序列的選擇上,應(yīng)該是使其離散分布在音頻當(dāng)中。傳統(tǒng)的數(shù)字音頻無源水印算法,對(duì)嵌入位置的要求更高。由于在提取時(shí)沒有原始音頻作對(duì)照,其嵌入序列還需要具有一定可循的規(guī)律性。如文獻(xiàn)[3],該算法先對(duì)音頻進(jìn)行小波分析,其嵌入位置是根據(jù)連續(xù) 3個(gè)水印比特組合的二進(jìn)制權(quán)值之和來確定的。但是,無法進(jìn)行灰度水印圖像的嵌入,所以通用性較差。
本文算法通過將音頻信號(hào)左右聲道分別做小波分析,將兩者作對(duì)比確定嵌入位置。(1) 先將載體音頻分離為左右聲道,然后分別進(jìn)行三級(jí)小波分解。通過大量的實(shí)驗(yàn)數(shù)據(jù)確定,小波系數(shù)中的低頻系數(shù)具有較好的魯棒性。因此本算法選取第三級(jí)的低頻系數(shù)(dp3)進(jìn)行分析,并在其中選擇特征點(diǎn)。(2) 對(duì)于一個(gè)常規(guī)的雙聲道音頻來說其左右聲道間必然具有一定的差異性。如圖 4左半部分為左聲道,右半部分為右聲道。設(shè)定左聲道低頻系數(shù)為dp3,l,右聲道低頻系數(shù)為dp3,r。將左右聲道低頻系數(shù)dp3,l和dp3,r的所有元素作差值運(yùn)算,將其差值絕對(duì)值化并重構(gòu)到新向量D(圖5)中。計(jì)算方法見公式(2):
圖4 原始音頻Fig.4 Oringinal audio
圖5 左右聲道低頻系數(shù)差 Fig.5 The difference between dp3, and dp3,r
(3) 此時(shí)的向量D中包含音頻無音部分,和一些差值較小部分,這些位置都不適合嵌入水印圖像。本算法先求出向量D中的均值作為基準(zhǔn),然后找出二個(gè)最大值的位置,將該位置用作儲(chǔ)存均值D,最后將D中高于均值的位置記錄下來,該位置序列記為序列XL。均值D的數(shù)值將作為提取水印圖像所需的參數(shù),也會(huì)和水印圖像根據(jù)序列XL一起嵌入到音頻中。這樣提取的嵌入位置既保證水印圖像不會(huì)被嵌入到音頻的無意義部分,同時(shí)具有較好的離散性。并且嵌入位置是呈跳越離散分布,擁有很好的安全性和抗感知性,對(duì)原始音頻影響進(jìn)一步減小。
在所得的嵌入序列XL中具有數(shù)倍于水印圖像數(shù)據(jù)量的可嵌入位置,并且序列中具有許多連續(xù)的現(xiàn)象。為保證水印信息的嵌入的離散程度,本文算法在嵌入水印信息時(shí)采用了分段法。對(duì)于嵌入提取參數(shù),一個(gè)同水印一起分段嵌入,另一個(gè)則選擇具有最大差值相關(guān)的低頻系數(shù)位置作為嵌入點(diǎn)。假設(shè)所需嵌入的水印圖像具有NL個(gè)元素,通過公式可得固定步長(zhǎng)NXL。根據(jù)其將嵌入序列XL分為NL+1個(gè)段,前NL個(gè)段中將嵌入水印圖像,第NL+1段則嵌入一些提取參數(shù)。運(yùn)算取得量化步長(zhǎng)NXL的具體公式(3)如下:
將XL除以NL,如果XL/NL非整數(shù),取其整數(shù)部分(fix)作為量化步長(zhǎng)NXL;若XL與NL的余數(shù)為0,則取XL除NL+1所得整數(shù)部分。在嵌入水印的過程中,先選取XL中的第一個(gè)元素作為起始,提取出其對(duì)應(yīng)的左(右)聲道低頻系數(shù)的數(shù)值,將水印嵌入到其中數(shù)值較低的部分,然后以 NXL為步長(zhǎng),依次將水印信息嵌入,直至水印圖像嵌入完成。嵌入公式(4)如下:
需要嵌入的提取參數(shù)分別為圖像像素?cái)?shù)NL和嵌入前低頻系數(shù)差值的均值。嵌入方法如下:1) 引入嵌入強(qiáng)度將水印圖像像素?cái)?shù)(NL)強(qiáng)度降至0~0.01之間,然后用公式(4) 將其嵌入至對(duì)應(yīng)低頻系數(shù)上(序列XL的NL+1段尾部元素);2) 尋找向量D中最大的兩個(gè)差值Dmax1,Dmax2,將最大差值對(duì)應(yīng)位置的音頻左右聲道低頻系數(shù)差值重設(shè),差值為Dmax1= Dmax2+,Dmax2維持不變。至此,所有嵌入工作完成,將左右聲道低頻系數(shù)分別進(jìn)行逆小波變換,然后合并成雙聲道音頻。
先讀入帶水印音頻,將其分成左右聲道,分別進(jìn)行三級(jí)小波分解。然后對(duì)低頻系數(shù)做差運(yùn)算,將差值放入向量Dnew中。用冒泡法尋得其中最大的兩值,將這兩個(gè)值做差運(yùn)算得到提取參數(shù),用提取參數(shù)將向量Dnew進(jìn)行篩選,取得提取序列XLnew。提取出XLnew最后一個(gè)元素對(duì)應(yīng)的左右低頻系數(shù)的差值,減去后再進(jìn)行強(qiáng)度還原,得到第二個(gè)提取參數(shù)即水印圖像元素個(gè)數(shù)NL。之后將提取序列XLnew分為NL+1段,提取前NL段的每段的第一個(gè)差值。通過公式(4) 進(jìn)行逆運(yùn)算提取出水印信息,并將其轉(zhuǎn)為方陣,最后進(jìn)行Arnold逆變換就可得到水印圖片。
本方法在實(shí)驗(yàn)中采取了文字、建筑和動(dòng)物3種不同內(nèi)容的圖片,信息容量依次上升。文字圖片為漢字和幾何圖形;建筑圖片為中國(guó)館,動(dòng)物圖片為狒狒臉部。音頻為時(shí)長(zhǎng)30 s的女聲歌曲。本系統(tǒng)測(cè)試環(huán)境CPU為2.4 GHz,內(nèi)存為512 MB;軟件環(huán)境為WINDOWS-XP,MATLAB 7.9.0。做了嵌入和提取,對(duì)無攻擊、濾波以及重采樣攻擊后的提取圖像做了相似度對(duì)比,以及對(duì)水印音頻的抗感知性測(cè)試。測(cè)試結(jié)果見表1所示。
由10人試聽嵌入水印前后的音頻,都無法辨別出音頻差異。實(shí)驗(yàn)結(jié)果表明本文算法可以嵌入較大信息容量的復(fù)雜灰度圖片,并且嵌入與提取時(shí)的誤差極小,耗時(shí)短,具有一定的抗攻擊能力。
表1 實(shí)驗(yàn)結(jié)果Tab.1 The result of test
本文提出一種新穎的雙聲道數(shù)字音頻無源水印算法。通過分析音頻的小波系數(shù),自適應(yīng)地選取適宜嵌入水印和參數(shù)的特征點(diǎn),并結(jié)合圖像特征選取嵌入點(diǎn)將水印圖像信息嵌入到音頻中。實(shí)驗(yàn)結(jié)果表明該方法能嵌入較大幅度的復(fù)雜灰度圖像,嵌入水印的完整性與音頻的實(shí)用性良好,算法實(shí)現(xiàn)簡(jiǎn)易高效,具有一定的魯棒性。在實(shí)驗(yàn)中發(fā)現(xiàn)由于采用Arnold變換置亂圖像,提取時(shí)間會(huì)隨著圖像增大而大大延長(zhǎng),并且魯棒性還有較大的提高余度,將在以后的研究中考慮。
[1]韓冰, 李麗娟.一種基于快速傅里葉變換的音頻數(shù)字水印[J].科學(xué)技術(shù)與工程, 2005, 125(24):1906-1910.
[2]朱有忠, 向俊.基于DWT和相對(duì)較小值的音頻盲水印新算法[J].吉林大學(xué)學(xué)報(bào), 28(2):203-208.
[3]陳芳, 李晶, 繩鵬.基于變換域的音頻數(shù)字零水印算法研究[J].微計(jì)算機(jī)信息, 2009, 25(12):63-65.
[4]姚鐘涵, 王慧琴, 毛力.一種基于回聲隱藏的數(shù)字音頻水印算法[J].微計(jì)算機(jī)信息, 2008, 24(1):301-303.
[5]王慶, 張雪英, 馬朝陽(yáng).一種新的基于變換域的數(shù)字音頻水印算法[J].太原科技, 2009, (3):53-55.
[6]ARNOLD V I, AVEZ A.Mathematical Physics Monograph Series[M].New York:W A Benjamin, Inc., 1968.