<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設(shè)計(jì)應(yīng)用 > 一種基于分抽樣的音頻盲數(shù)字水印算法

          一種基于分抽樣的音頻盲數(shù)字水印算法

          ——
          作者:繆衛(wèi)平1,陳日升2 時(shí)間:2007-01-26 來源:《現(xiàn)代電子技術(shù)》 收藏


          1 引言

          本文引用地址:http://www.ex-cimer.com/article/20951.htm

          數(shù)字水?。╠igital watermarking)技術(shù)是在多媒體數(shù)據(jù)(如圖像、音頻、視頻信號(hào)等)中添加某些標(biāo)識(shí)所有權(quán)信息,以達(dá)到版權(quán)保護(hù)等作用,他為解決版權(quán)保護(hù)等問題提供了一種潛在的有效解決方法。按照水印檢測的方式可把數(shù)字水印分為無需原作的水?。z測水印)和需要原作的水?。魑臋z測水印)。對(duì)于盲檢測水印,其檢測獨(dú)立于原始媒體數(shù)據(jù)進(jìn)行,即水印的抽取含水印的媒體本身確定。這種水印的檢測可以在任何擁有檢測環(huán)境的平臺(tái)上進(jìn)行,使用范圍較廣,更具有實(shí)用性和商業(yè)價(jià)值。

          本文提出了一種新的音頻盲水印算法,利用一種新抽樣技術(shù)--分抽樣(subsampling)技術(shù),把一段音頻信號(hào)分割成幾段子音頻信號(hào),再對(duì)子音頻信號(hào)作離散小波變換,然后把經(jīng)過加密、糾錯(cuò)編碼和調(diào)制后的水印信號(hào)嵌入小波變換(dwt)的低頻系數(shù)上,以達(dá)到抵抗有意或無意水印攻擊的目的,提取水印時(shí)不需要原始音頻信號(hào)。

          2 算法原理

          第一步是通過分抽樣技術(shù)把原始音頻信號(hào)分割成4小段子音頻信號(hào)。如圖1所示,假設(shè)原始音頻信號(hào)表示為a(n),n=0,1,…,n-1,分割過程如下式:

          a1(m)=a(4n)

          a2(m)=a(4n+1)

          a3(m)=a(4n+2)  ?。?)

          a4(m)=a(4n+3)

          其中:m=0,1,…,n/4-1,a1,a2,a3和a4,是對(duì)a進(jìn)行分抽樣后的子音頻信號(hào)。由于子音頻信號(hào)ai是高度相關(guān)的,則對(duì)于不同的子音頻信號(hào),他們是近似相同的,即ai≈aj(i≠j),事實(shí)證明對(duì)于大多數(shù)音頻信號(hào)確實(shí)如此。

          分抽樣之后,對(duì)子音頻信號(hào)作離散小波變換,離散小波變換克服了短時(shí)博里葉變換的時(shí)間分辨率和頻率分辨率整個(gè)時(shí)一頻平面上固定不變的缺點(diǎn),將時(shí)間軸和頻率軸做非均勻劃分,時(shí)頻分辨率隨頻率而變化。小波變換的非線性對(duì)數(shù)形式的時(shí)頻特性更適合音頻信號(hào)的特點(diǎn)。對(duì)子音頻信號(hào)做3層小波分解,取出低頻段的部分頻率系數(shù)作為水印嵌入域。這是因?yàn)橐话愕男盘?hào)處理(如濾波、壓縮等)影響的大部分是音頻的高頻部分,即使水印信號(hào)受到影響,但還是能夠檢測出來。

          再對(duì)水印信號(hào)進(jìn)行處理。本算法嵌入的水印信號(hào)是一副二值圖像,故要先對(duì)其進(jìn)行將維處理,使二維的二值圖像變?yōu)橐痪S的數(shù)字序列。用密鑰k產(chǎn)生一個(gè)相同長度二進(jìn)制偽隨機(jī)序列,與水印數(shù)字序列做加密運(yùn)算,增強(qiáng)算法的安全性,即可靠性。然后對(duì)加密后的水印信號(hào)進(jìn)行bch糾錯(cuò)編碼,增強(qiáng)算法抵抗各種信號(hào)處理操作的魯棒性。在對(duì)其進(jìn)行調(diào)制,生成取值為-1,1的水印信號(hào)w。

          在本算法中,每一個(gè)水印信號(hào)樣本值ωm(ωm∈w)嵌入2段不同子音頻信號(hào)的3層小波變換后的同一個(gè)系數(shù)上,這2段子音頻信號(hào)是任選的,其水印嵌入域分別表示為vi和vj,水印嵌入規(guī)則為:

          v=(vi+vj)/2  ?。?)

          如果:

          |(vi-vj)/v|≥2a  (3)

          式中a為水印嵌入強(qiáng)度,則不修改vi和vj;否則,水印信號(hào)按式(4)嵌入:

          vi=v(1+aw),vj=v(1-aw)  (4)

          此時(shí)還要記錄水印嵌入的每一個(gè)位置,并保存下來。

          水印檢測時(shí),對(duì)嵌入水印的音頻信號(hào)按相同的方式分割和做dwt變換:先把音頻信號(hào)通過分抽樣分割成4小段子音頻信號(hào),再做3層dwt變換,取出低頻段水印嵌入域。由于嵌入水印的音頻信號(hào)可能已經(jīng)受到攻擊,用ui和uj分別表示2段子音頻信號(hào)水印嵌入域,按照水印嵌入時(shí)記錄的位置,水印提取規(guī)則為:

          w’=[(ui-uj)/(ui+uj)]/a  (5)

          w’為提取出水印信號(hào),再對(duì)其反調(diào)制、解碼和解密,這樣就恢復(fù)出原始水印信號(hào)了。

          3 實(shí)驗(yàn)結(jié)果

          實(shí)驗(yàn)中選取水印信息為24×96的二值圖像,如圖2所示。首先對(duì)水印信息作加密、糾錯(cuò)編碼及調(diào)質(zhì)處理。再對(duì)原始音頻信號(hào)進(jìn)行處理。將原始音頻信號(hào)分割成4段子音頻信號(hào),任選出其中2段,對(duì)其作3層dwt變換,最后將處理過的水印信號(hào)按公式(2)-(4)嵌入低頻段系數(shù)上。嵌入過程中的嵌入強(qiáng)度a=0.2。圖1(a)是原始的音頻信號(hào),單聲道,采樣頻率為44.1khz,持續(xù)時(shí)間為9.6s。圖3是嵌入水印后的音頻信號(hào),嵌入水印后的信噪比snr為41.3db,和原始音頻信號(hào)聽起來幾乎沒有差別。

          為檢測算法的魯棒性,對(duì)含水印音頻信號(hào)分別進(jìn)行下面的處理:

          (1)加入高斯白噪聲(均值為0,均方差為0.01);

          (2)低通濾波。取長度為9,截止頻率為5khz的chebyshev低通濾波器;

          (3)重新采樣。分別對(duì)含水印信號(hào)進(jìn)行一次抽取和插值操作。抽取和插值系數(shù)為2。

          在這幾種情況下提取的水印分別如圖4(a)-(c)所示。可以看出,本算法抵抗高斯噪聲攻擊的能力較強(qiáng),提取出的水印清晰可辨。對(duì)于低通濾波和垂直采集攻擊,效果差些,提取出的水印也可以分辨出來。

          4 結(jié)語

          本文提出的音頻盲水印算法,用24×96的二值圖像作為水印信息,經(jīng)過加密、糾錯(cuò)編碼和調(diào)制后,嵌入分抽樣后2段子音頻信號(hào)dwt后的低頻系數(shù)中。實(shí)驗(yàn)結(jié)果表明,利用該方法的含水印圖像對(duì)一般的信號(hào)處理具有較好的魯棒性。算法實(shí)用性強(qiáng),易于實(shí)現(xiàn),是一種行之有效的數(shù)字水印算法。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();