楊志疆
(漳州職業(yè)技術(shù)學(xué)院 計算機工程系,福建 漳州 363000)
音頻水印[1-2]是指先在數(shù)字音頻中嵌入水印信息,然后通過提取的水印信息來保護音頻的版權(quán)或判定音頻內(nèi)容的完整性與真實性。它在音樂作品的拷貝限制、使用跟蹤、盜版確認(rèn)及廣播分析等領(lǐng)域有著廣泛的應(yīng)用。根據(jù)音頻水印的特性可以劃分為魯棒性水印、脆弱性水印和半脆弱性水印,前兩種水印是目前研究最多的技術(shù),但通常只能實現(xiàn)單一功能,這使得它們漸漸不能滿足人們的實際應(yīng)用需求。而半脆弱水印兼具有魯棒性水印和脆弱性水印的特性,即水印對一般的音頻信號處理具有穩(wěn)定性,可實現(xiàn)版權(quán)保護功能,同時對音頻內(nèi)容的篡改操作具有脆弱性,可實現(xiàn)內(nèi)容認(rèn)證功能,因此引起學(xué)術(shù)界的關(guān)注。文獻[3]基于聽覺掩蔽特性和音頻自身特性,自適應(yīng)劃分音頻數(shù)據(jù)段和調(diào)整嵌入強度,實現(xiàn)半脆弱水印的嵌入,但只能大致確定篡改發(fā)生區(qū)域。文獻[4]提取音頻的MFCC系數(shù)作為水印,然后在小波域中采用均值量化嵌入水印,但水印在音頻常規(guī)處理中的魯棒性不夠強。文獻[5]針對水印假同步率高的問題,提出基于KMP半脆弱音頻水印,對篡改區(qū)域的定位較精確,但文中缺少水印的魯棒性檢測相關(guān)數(shù)據(jù)。針對以上問題,本文提出一種半脆弱音頻水印新方案:首先,對二值水印圖降維,并進行兩次混沌加密,根據(jù)循環(huán)碼的編碼原則進行編碼,生成水印編碼信息;其次,根據(jù)原水印圖的行數(shù)分別對水印編碼信息和音頻載體分幀;利用提升小波變換對每一幀音頻進行分解,并對低頻分量進行DCT變換;最后,通過量化系數(shù)的方法把同幀的水印編碼信息嵌入到DCT中頻系數(shù)中。仿真實驗證明,本方案的水印具有較好的不可聽性,在加噪、重采樣、重量化等音頻信號處理中具有強魯棒性,而對替換、剪切等惡意篡改,水印能精確定位被篡改的位置。
數(shù)字音頻水印技術(shù)可視為信道抗干擾的通信過程[6],其中,音頻載體為信道,各種有意或無意的攻擊為干擾信號,水印為信道中要傳遞的信息,水印的嵌入過程相當(dāng)于發(fā)送信息的過程,水印的提取過程相當(dāng)于接收信息的過程;而基于信道的糾錯編碼方式很多,其中循環(huán)碼[7]的檢錯糾錯能力強,碼率較高,易于用反饋式移位寄存器實現(xiàn)編碼,所以被廣泛應(yīng)用于數(shù)據(jù)存儲和數(shù)據(jù)通信等領(lǐng)域。循環(huán)碼是一種重要的線性分組碼,它把所保護的數(shù)據(jù)塊看作一個二進制多項式,即多項式的所有系數(shù)都為0或1。由于本算法采用的水印是二值圖像,水印二進制位串符合多項式系數(shù)的特征,因此,本文把水印看作循環(huán)碼要保護的信息,利用循環(huán)碼來提高水印的抗干擾能力和可靠性。循環(huán)碼的應(yīng)用原理主要遵循以下過程:
假設(shè)要保護的數(shù)據(jù)信息多項式為M(x),發(fā)送方和接收方預(yù)先約定的生成多項式G(x)的階為r,信息碼字為n位。
(1)編碼過程
步驟1將r個“0”附加在信息碼字的低端,即循環(huán)左移r位,相應(yīng)多項式變?yōu)閤rM(x),長度為n+r位。
步驟3將xrM(x)的位串與余數(shù)R(x)的位串進行異或運算,得編碼信息T(x),即T(x)=xrM(x)⊕R(x),⊕為異或運算。
(2)解碼過程
步驟1接收方收到發(fā)來的編碼信息T′(x)后,除以同一個生成多項式G(x),若余數(shù)R′(x)=0,則表示接收到信息正確,否則有錯。
步驟2把收到的正確編碼信息T′(x)去掉尾部r位,即得數(shù)據(jù)信息M(x)。
(3)糾錯過程
如果收到的信息T′(x)不能被G(x)整除,則T(x)≠T′(x),傳輸出錯。假設(shè)T′(x)=T(x)⊕E(x),其中,E(x)是錯誤矢量,則T′(x)/G(x)=(T(x)⊕E(x))/G(x)。由于T(x)%G(x)=0,所以(T(x)⊕E(x))/G(x)=E(x)/G(x)。若E(x)≠0,則傳輸出錯,因此通過在接收方檢測T′(x)HT是否為0來檢查是否出錯,H為一致校驗矩陣。
定義:S=T′(x)HT為伴隨式。則有
S=T′(x)HT=(T(x)⊕E(x))HT
=T(x)HT⊕E(x)HT=E(x)HT
由此可見伴隨式只與錯誤矢量有關(guān),與發(fā)送的碼字無關(guān)。若E(x)=0,則S=0,表明正確;否則S≠0,表明有誤。伴隨式與E(x)有一個對應(yīng)關(guān)系,通過這個對應(yīng)關(guān)系,由伴隨式S得到E(x),再將接收的碼字T′(x)與E(x)相加,就可得到糾錯后的正確編碼信息。
提升小波變換[8]LWT是由Swelden提出的一種不依賴Fourier變換的新的小波構(gòu)造方法,稱為第二代小波變換。提升方法給出了雙正交小波簡單而有效的構(gòu)造方法,使用了基本的多項式插補來獲取信號的高頻分量,通過構(gòu)建尺度函數(shù)來獲取信號的低頻分量,其復(fù)雜度只有原來卷積方法的一半左右,因此成為計算離散小波變換的主流方法,在信號處理領(lǐng)域有著廣泛的應(yīng)用。一般在Matlab中使用提升小波變換的主要步驟是:先用小波函數(shù)獲取相應(yīng)的提升小波方案;然后設(shè)置原始的提升步驟,并且把提升步驟添加到提升方案中;最后應(yīng)用提升方案對向量進行提升小波分解。
提升小波變換同第一代小波變換類似,對原音頻信號進行一級小波分解后,將得到一級的低頻分量cA1和一個高頻分量cD1,如果繼續(xù)對低頻分量cA1再次分解,將得到新的二級的低頻分量cA2和一個高頻分量cD2,因此,經(jīng)過多級提升小波分解得到的低頻分量cAn的能量最大,在信號處理中是最具有魯棒性的,是水印嵌入的理想選擇。由于DCT變換具有很強的聚能特性,信號經(jīng)過DCT變換后將把能量集中在低頻和中頻系數(shù)上,但低頻系數(shù)的改變?nèi)菀自斐尚盘柕慕蒂|(zhì)。基于以上分析,本文選擇音頻信號多級LWT-DCT變換的中頻系數(shù)作為水印的嵌入對象,來保證水印的穩(wěn)定性。
混沌序列具有非周期性不收斂、強依賴于初始條件的特點,即不同的μ和X0迭代得到的混沌序列一定不同,反之,給定一樣的μ和X0,將得到相同的混沌序列,因此本文利用混沌序列的特性來為水印加密,并且通過兩次不同初始條件的混沌序列來加密,確保了水印的安全性。
記原始音頻載體信號為A={a(i),i=1,2,…,L},L為音頻總采樣點數(shù),二值水印圖像為W={W(i,j),1≤i≤M,1≤j≤N},其中,W(i,j)∈(0,1)為水印第i行、第j列的像素值;M為像素點行數(shù);N為像素點列數(shù)。
嵌入過程為:
( 1 )
步驟3反復(fù)進行步驟2的各項操作,直到所有幀的水印編碼信息嵌入結(jié)束,再重新組合各幀新的音頻信號,最終得到含水印音頻。水印的整個嵌入過程如圖1所示。
圖1 水印的嵌入過程
步驟1將待測音頻載體分為M幀,對各幀音頻系數(shù)進行以下操作:
( 2 )
步驟3由兩組密鑰產(chǎn)生與嵌入過程中同樣的兩個混沌序列,把步驟2得到的矩陣降為一維,并分別與混沌序列進行異或運算,解密后再將所得序列升維為[MN]矩陣,恢復(fù)出水印圖像W′。水印的提取過程如圖2所示。
圖2 水印的提取過程
步驟1定義一個矩陣V,用來保存受篡改水印信息。
V(i,j)=W(i,j)⊕W′(i,j)
( 3 )
式中:⊕為異或運算;W′為提取的水印矩陣;W為原水印矩陣。
步驟2定義一個數(shù)組SS={ss(i),i=1,2,…,M},用來保存矩陣V中各幀的統(tǒng)計結(jié)果。設(shè)置適當(dāng)?shù)拈撝礔來消除一般音頻處理的虛警檢測,當(dāng)ss(i)≤F,表示該幀未受損,否則遭受篡改,并可通過數(shù)組SS來確定音頻受篡改的幀號。
步驟3通過統(tǒng)計ss(i)>F的個數(shù)計算受篡改幀數(shù),并計算篡改比例。
( 4 )
為驗證本算法的有效性,仿真實驗在Windows 10操作系統(tǒng)下MATLAB軟件環(huán)境中進行,音頻載體為PCM 44.100 kHz、16位、單聲道,長度為 10.54 s;二值水印圖的大小為32×32;提升小波方案采用Haar小波函數(shù);提升步驟設(shè)置為{'p',[-0.125 0.125],0};LWT分解級數(shù)為2;閾值F為3。
圖3是水印編碼信息嵌入音頻載體前后的波形對比,兩個波形在直觀上幾乎一樣,誤差很小,求得音頻的信噪比SNR為30.300 6。而在聽覺上,因為人類聽覺系統(tǒng)的局限性,難以分辨出前后音頻載體的不同,說明本音頻水印算法的不可聽性較好。
圖3 原始音頻與含水印音頻的比較
水印的作用是對多媒體信息的保護,如果水印缺少安全性,那么水印的作用將無從談起。圖4是水印經(jīng)過兩次加密和編碼后的結(jié)果,圖像已變的雜亂無章,無法直接獲得任何有用信息,同時,混沌加密也降低水印中像素點之間原有相關(guān)性,有利于水印的嵌入操作。
圖4 水印加密及編碼結(jié)果
原水印與提取水印的歸一化互相關(guān)系數(shù)NC和誤碼率BER是評價水印提取效果的常用依據(jù),若測得NC=1、BER=0,則水印提取效果最好,反之,若測得NC=0、BER=1,則水印提取效果最差。水印圖像的提取效果可由人眼直接分辨。表1是待測音頻在各種常見攻擊后水印提取的效果,以及同文獻[10] 、文獻[11]提取結(jié)果的比較??梢钥闯鏊≡诟鞣N常見的信號攻擊后,提取效果仍然較好,說明本水印算法在LWT-DCT域中利用循環(huán)碼進行差錯控制,提高了水印的魯棒性,而且通過比較可得出本水印算法在抵抗低通濾波、噪聲干擾、重新采樣等方面有明顯的優(yōu)勢。
表1 水印魯棒性的檢測與比較
表1(續(xù))
在半脆弱水印算法中,篡改定位是水印的一個重要功能。圖5是常規(guī)低通濾波的檢測結(jié)果,雖然音頻的SNR很低,但未檢測到惡意篡改。圖6是仿隨機替換三大段采樣點的定位結(jié)果,圖7和圖8為仿隨機剪切樣點的定位結(jié)果,可見本水印算法可準(zhǔn)確定位樣點替換或剪切等惡意篡改的位置,并能給出篡改幀數(shù)、幀號及篡改程度的提示。
圖5 常規(guī)低通濾波的檢測結(jié)果
圖6 仿隨機替換三大段采樣點的定位結(jié)果
圖7 仿隨機剪切樣點的定位結(jié)果(1)
圖8 仿隨機剪切樣點的定位結(jié)果(2)
為提升半脆弱音頻水印的性能,本算法在水印嵌入前,利用混沌加密的方法為水印信息進行兩次加密,保證水印安全性和可靠性,同時,采用循環(huán)碼對水印信息進行編碼,抵抗各種信號干擾,保護水印信息。在嵌入時,通過設(shè)置提升方案,獲取LWT最高級的低頻分量進行DCT變換,選擇中頻系數(shù)進行自適應(yīng)量化嵌入水印編碼信息,從而保證水印的魯棒性和盲檢測性。仿真實驗表明,水印在疊加噪聲、重新采樣、重新量化、Mp3有損壓縮、低通濾波等常見攻擊處理中穩(wěn)定性強,而且在遭受惡意篡改時,能準(zhǔn)確定位,并統(tǒng)計與提示篡改信息。由于本文引入(7,4)循環(huán)碼對水印進行嵌入前的編碼,使得信息嵌入量為原水印信息量的1.75倍,算法也為此多開支了編碼時間和信息嵌入時間,嵌入信息的時間復(fù)雜度增加了將近一倍,這將影響到水印的不可聽性及水印容量,因此,今后將進一步研究算法效率與信道編碼的糾錯能力,從而增強水印的實用性。