天天看點

【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼

1 簡介

 **0 引言**

近年來, 數字水印技術的作用越來越重要。數字水印技術是将一些辨別資訊直接嵌入數字載體當中, 或間接表示在信号載體中, 且不影響原載體的使用價值。通過隐藏在載體中的這些資訊, 可以判斷資訊是否被篡改, 具有防僞溯源、保護資訊安全、版權保護等作用。對于廣播轉播台站而言, 是廣播音頻的中轉站, 在廣播信号發送至千家萬戶之前務必保證信号的安全可靠, 但現在的大部分台站隻是利用人耳的判斷, 以及不同信源之間的比較, 具有較大的局限性。若利用數字水印的特性, 應用于廣播節目中可以有效地防止信号插播, 可靠地保護信号安全, 保障廣播的安全播出。

**1 音頻數字水印技術分類**

根據數字水印在音頻信号中的處理技術, 可将數字水印分為時域、變換域、壓縮域數字水印。

**1.1 時域數字水印**

在時域數字水印技術中, 直接将水印資訊嵌入至音頻信号中, 通常會選擇隐藏在信号不重要部位, 以保證其嵌入水印不影響原音頻信号的監聽效果。時域水印技術的實作較為容易且運算量小, 簡單直接, 但是魯棒性差, 容易被破解, 抵抗力較差。

**1.2 變換域數字水印**

在變換域數字水印中, 音頻信号需經過時域至變換域的轉換, 通常的變換域有離散餘弦變換 (DCT, Discrete Cosine Transform) 、離散傅立葉變換 (DFT, Discrete Fourier transform) 、離散小波變換 (DWT, Discrete Wavelet Transform) 等。在變換域中嵌入水印資訊, 通過反變換得到嵌入水印的音頻時域信号。變換域水印技術較時域水印技術複雜, 但變換域嵌入的水印資訊較時域而言, 不可見性更強, 隐蔽性更好, 魯棒性更好。本文的研究主要基于DWT的音頻信号的水印資訊的嵌入與提取。

**1.3 壓縮域數字水印**

在時域和變換域的水印技術, 都是直接将水印信号嵌入未壓縮的音頻格式中, 但是通常在音頻信号的傳輸或存儲中需要對音頻信号進行壓縮編碼 (例如WMA、MP3等) , 是以壓縮域數字水印也是水印技術也具有較大的實用價值。壓縮域數字水印技術大緻可分為三類: (1) 在非壓縮域嵌入水印, 将音頻信号與水印資訊一起壓縮; (2) 在壓縮域中, 直接将水印資訊嵌入壓縮的音頻信号中; (3) 将壓縮後的信号進行解壓縮, 然後嵌入水印資訊, 最後将水印資訊和解壓後的音頻信号一起壓縮。總的來說, 壓縮域水印技術的編解碼系統過于複雜, 受壓縮編碼格式限制大, 壓縮後的音頻信号已經去除了備援, 是以加入水印的難度大, 壓縮域水印技術有待進一步研究。

**2 基于DWT的音頻水印算法**

**2.1 水印嵌入**

本文研究的音頻水印算法是基于離散小波變換 (DWT) , 音頻信号通過DWT變換, 在變換域中嵌入水印資訊, 再經過逆變換 (IDWT) 進而得到嵌入水印的音頻信号。水印嵌入原理框圖如圖1所示。

假定水印為M1×M2的二維圖像bw, 由于音頻信号通常為一維向量, 故水印資訊在嵌入音頻信号之前需要将二維降至一維向量w, 即M=M1×M2。通常我們也可以将圖像進行打亂加密, 增強水印隐蔽性。

假定語音信号為s, 長度為N, 則s={s1, s2, s3, …, sN}由于語音信号較長在進行中一般需要進行分段, 每段長度設為N1, 故該語音信号分為K=fix (N/N1) 段進行處理, 每段語音均嵌入一個水印資訊。

小波變換是為了解決傅立葉變換的不足而提出的一種分析變換, 傅立葉變換的基函數是鋪滿整個時域的正弦信号, 對于突變信号以及變化的頻率成分資訊均不能較準确地表示。而小波變換是時間和頻率的局部變換, 更能準确地表示音頻信号的頻域特征, 常用的小波基有Haar小波、Daubechies (db N) 小波、Marr小波等。本文采用的小波基是Haar小波, 它是支撐域在t∈[0, 1]範圍内的矩形波, 定義如下:

【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼

圖1 音頻信号水印嵌入原理框圖

【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼

圖2 音頻信号水印提取原理框圖 

【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼

取定Haar小波基後, 則語音信号s可以表示為:

【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼

其中Cj, k為離散小波系數, 将音頻信号分解為低頻的近似部分和高頻的細節部分, 我們在水印資訊的嵌入進行中, 主要針對代表低頻近似部分的系數向量處理, 即将水印信号放入低頻近似部分, 高頻細節部分不變, 以保證語音品質基本不變。由于嵌入的水印為二值圖像, 是以如果水印資訊的值為1, 則将對應的低頻系數增大, 相反如果值為0, 則将對應的低頻系數降低。在DWT域嵌入水印資訊後, 然後通過IDWT變換, 将語音信号變換成時域信号。

**2.2 水印提取**

為了保證資訊安全, 在發送端發送嵌入水印的音頻信号, 而在接收端為了确定音頻資訊的準确性, 我們通常需要提取水印以確定來源的真實性, 是以水印的提取技術也尤為重要。在水印提取過程中, 需要原始音頻信号與嵌入水印的音頻信号同時進行DWT, 再将兩者參數進行分析比較提取出水印資訊。水印提取原理框圖如圖2所示。

在前面所述的水印嵌入過程中, 将水印資訊嵌入高頻的細節部分, 是以在提取水印過程中, 我們也隻需比較原始語音信号S的低頻小波系數向量c A與嵌入水印的音頻信号s1的低頻小波系數向量c A1作比較, 若c A1>c A, 則水印資訊為1;反之則為0, 再通過向量平均, 如此得到水印資訊的一維向量, 最後通過升維得到二值圖像。

2 部分代碼

function dPSNR = psnr(cover_object,watermarked_image) 
if (size(cover_object,1) ~= size(watermarked_image,1)) or (size(cover_object,2) ~= size(watermarked_image,2)) 
  error('cover_object <> watermarked_image'); 
  dPSNR = 0; 
  return ; 
end 
cover_object=double(cover_object); 
ImageB=double(watermarked_image); 
M = size(cover_object,1); 
N = size(cover_object,2); 
d = 0 ; 
for i = 1:M 
  for j = 1:N 
    d = d + (cover_object(i,j) - watermarked_image(i,j)).^2 ; 
  end 
end 
dPSNR = 10*log10((M*N*max(max(cover_object.^2)))/d) ; 
return      

3 仿真結果

【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼
【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼
【圖像隐藏】基于小波變換算法實作數字水印嵌入提取帶多種攻擊效果對比含Matlab源碼

4 參考文獻

[1]黃福瑩, and 李麗. "一種基于DWT的非自适應數字水印算法及其MATLAB實作." 廣西科學院學報 4(2009):3.

部落客簡介:擅長智能優化算法、神經網絡預測、信号處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系部落客删除。

繼續閱讀