資源簡介
用Matlab實現(xiàn)的數(shù)字音頻水印嵌入與提取

代碼片段和文件信息
clc;clear;close?all;
%?水印嵌入程序
%?讀取音頻信號3.wav存到變量A中
[Afsnbits]?=?wavread(‘3.wav‘);
%繪制原始聲音圖像?
subplot(211);?plot(A);?
axis([0?350000?-2?2]);
title(‘原始聲音信號波形圖‘);
%?用變量L存儲音頻A的長度
L?=?size(A);
%?讀取圖像Lena.bmp存入變量M做水印信號
M?=?imread(‘Lena.bmp‘);
%?將圖像Lena.bmp轉化為二值圖并存入變量BW
BW?=?im2bw(M);
%?計算水印矩陣大小
[M1M2]?=?size(BW);
%?M12為中間變量,避免每次都計算M1*M2
M12?=?M1*M2;?
%?降維,將水印信息得到的一維序列存入序列C中
C?=?reshape(BW1M12);
n?=?M12;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%?對水印信號進行擴頻處理效果不是很好
%?擴頻系數(shù)為2
n?=?M12*2;
M?=?zeros(n1);
%?產(chǎn)生密鑰序列M
for?k?=?1?:?n
????if?mod(k4)?==?0
????????M(k)?=?1;
????else?
????????M(k)?=?0;
????end
????%?水印信號序列分別按位與密鑰異或
????l?=?ceil(k/2);
????S(k)?=?bitxor(C(l)M(k));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%?嵌入一個水印信息需要的音頻數(shù)據(jù)為N
N?=?10;?
length?=?n*10;
%?將原始音頻信號分解為Ae和Ar兩部分
i?=?1?:?length;?
j?=?[1];
%?取矩陣A的l到length行構建矩陣Ae
Ae?=?A(ij);
%?Ae(ij)
i?=?length+1?:?L;
%?取矩陣A的length到L行第一列構建矩陣Ar
Ar?=?A(ij);
%?建立元胞B,每個音頻數(shù)據(jù)段Ae(m)是B的一個元素
k?=?1;
%?建立M1?x?M2行l(wèi)列的元胞
B?=?cell(n1);
th?=?n*N;
%?當k小于Ae的長度時,矩陣Ae每10行作為一個音頻數(shù)據(jù)段存入元胞B中
while?(?k?????i?=?k?:?k+9;
????m?=?(k+9)/10;
????B{m1}?=?Ae(ij);
????k?=?k+10;
end
%?建立元胞D,并將元胞B中離散余弦變換了的元素存入元胞D中
D?=?cell(n1);
for?i?=?1?:?n
????D{i1}?=?dct(B{i1});
end
%?建立元胞E,儲存嵌有水印信號的中頻系數(shù)
E?=?cell(n1);
E?=?D;
for?i?=?1?:?n
%?????%?將水印信息C嵌入音頻中
%?????E{i1}(3)?=?(D{i1}(3))*(1+2*C(i));
????%?將擴頻了的水印信息S嵌入音頻中
????E{i1}(3)?=?(D{i1}(3))*(1+2*S(i));
end
%?建立元胞F
F?=?cell(n1);
%?將元胞E中離散余弦反變換了的元素存入元胞F中
for?i?=?1?:?n
????F{i1}?=?idct(E{i1});
end
%?將所有分離的段合并創(chuàng)建到一維矩陣G中
G?=?F{11};
%?i從3到M1*M2依次取值
for?i?=?2?:?n
????%?將元胞G和元胞F第i組元素合并創(chuàng)建到一維矩陣G
????G=[G;?F{i1}];
end
%?將元胞G和矩陣Ar合并創(chuàng)建一維矩陣G
G?=[G;?Ar];
wavwrite(Gfsnbits‘test.wav‘);
subplot(212);?plot(G);?
title(‘含水印的聲音信號波形圖‘);
axis([0?350000?-2?2]);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2261??2009-01-09?11:44??音頻水印嵌入與提取\em
?????文件???????2046??2009-01-06?23:50??音頻水印嵌入與提取\extract.m
?????文件??????17838??2008-12-19?22:09??音頻水印嵌入與提取\Lena.bmp
?????文件???????3807??2009-01-09?11:22??音頻水印嵌入與提取\watermark.m
?????文件???????2361??2009-01-09?11:25??音頻水印嵌入與提取\watermark1.m
?????目錄??????????0??2009-03-11?11:24??音頻水印嵌入與提取
-----------?---------??----------?-----??----
????????????????28313????????????????????6
- 上一篇:對信號進行降采樣
- 下一篇:短時傅里葉變換的MATLAB代碼
評論
共有 條評論