资源简介
数字音频水印_源代码。希望对大家能有所帮助。
代码片段和文件信息
clc;clear;close all;
% 水印嵌入程序
% 读取音频信号audio.wav存到变量A中
[Afsnbits] = wavread(‘login.wav‘);
%绘制原始声音图像
subplot(211); plot(A);
axis([0 350000 -2 2]);
title(‘原始声音信号波形图‘);
% 用变量L存储音频A的长度
L = size(A);
% 读取图像Lena.bmp存入变量M做水印信号
M = imread(‘mark.bmp‘);
% 将图像Lena.bmp转化为二值图并存入变量BW
BW = im2bw(M);
% 计算水印矩阵大小
[M1M2] = size(BW);
% M12为中间变量,避免每次都计算M1*M2
M12 = M1*M2;
% 降维,将水印信息得到的一维序列存入序列C中
C = reshape(BW1M12);
n = M12;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 对水印信号进行扩频处理效果不是很好
% 扩频系数为2
n = M12*2;
M = zeros(n1);
% 产生密钥序列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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 嵌入一个水印信息需要的音频数据为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,每个音频数据段Ae(m)是B的一个元素
k = 1;
% 建立M1 x M2行l列的元胞
B = cell(n1);
th = n*N;
% 当k小于Ae的长度时,矩阵Ae每10行作为一个音频数据段存入元胞B中
while ( k < th )
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,储存嵌有水印信号的中频系数
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
% 将所有分离的段合并创建到一维矩阵G中
G = F{11};
% i从3到M1*M2依次取值
for i = 2 : n
% 将元胞G和元胞F第i组元素合并创建到一维矩阵G
G=[G; F{i1}];
end
% 将元胞G和矩阵Ar合并创建一维矩阵G
G =[G; Ar];
wavwrite(Gfsnbits‘mark_audio.wav‘);
subplot(212); plot(G);
title(‘含水印的声音信号波形图‘);
axis([0 350000 -2 2]);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2275 2010-05-09 14:36 音频\1em
文件 2056 2010-05-09 14:36 音频\1extract.m
文件 2965 2010-05-09 14:56 音频\2dwt audio.m
文件 1284 2010-05-09 14:58 音频\3DCT_Audio.M
文件 1187 2010-05-09 16:13 音频\4dct+SS_audio.m
文件 2365 2010-05-09 16:15 音频\6audio_watermark1.m
文件 2265 2010-05-09 16:16 音频\7音频水印嵌入与提取\em
文件 2046 2009-01-06 23:50 音频\7音频水印嵌入与提取\extract.m
文件 17838 2008-12-19 22:09 音频\7音频水印嵌入与提取\Lena.bmp
文件 88266 2010-04-16 11:19 音频\7音频水印嵌入与提取\login.wav
文件 5174 2010-05-08 19:12 音频\7音频水印嵌入与提取\mark.bmp
文件 44 2010-05-09 16:17 音频\7音频水印嵌入与提取\test.wav
文件 3793 2010-05-09 16:18 音频\7音频水印嵌入与提取\watermark.m
文件 2361 2009-01-09 11:25 音频\7音频水印嵌入与提取\watermark1.m
文件 5003 2009-05-09 09:32 音频\8DWT.txt
文件 1841 2010-05-08 23:01 音频\9音频水印程序.txt
文件 88266 2010-04-16 11:19 音频\login.wav
文件 5174 2010-05-08 19:12 音频\mark.bmp
文件 88252 2010-05-09 14:55 音频\modified login.wav
文件 2848 2010-05-09 16:41 音频\复件 em
文件 2056 2010-05-09 16:50 音频\复件 extract.m
目录 0 2010-05-09 16:17 音频\7音频水印嵌入与提取
目录 0 2010-05-19 10:17 音频
----------- --------- ---------- ----- ----
327359 23
- 上一篇:考试抽题软件
- 下一篇:DAQ多通道数据采集
相关资源
- 双二阶广义积分器SOGI软件锁相(基于
- TMF8801驱动参考代码
- 代码项目“生成”微博、知乎、
- ARM9指令cache的verilog代码
- STM32+TMC5160代码电路图.rar
- 压缩感知常见测量矩阵一维仿真信号
- pppd2.4.7源代码以及拨号脚本
- DBX数字音频处理器调试软件
- Apache Subversion1.10.3服务端SVN
- ARM7TDMI-S在嵌入式系统中的Bootloader代码
- 酒店预订管理系统源代码
- Xyratex欲部分收购Ario的RAID代码
- Marvell 88W8686 WiFi模块的ADHOC热点创建代
- 机会路由源代码+仿真工具(SCORP)
- 批量替换证件照片的底色(含源代码
- cocos2d-x飞机大战项目
- 编译原理实验:词法分析,语法分析
- 分享一个远程控制软件源代码
- BLE-CC254x-1.3.2 蓝牙官方源代码
- createKeep
- Jetson-TX2多声卡实现同时录音与播放
- 使用delphi+intraweb进行微信开发1~4代码
- 基于Freemarker模板的代码生成器后台代
- Ubuntu下操作Excel,qt代码
- 代码之美高清中文版,强烈推荐!
- opencl编程指南随书代码
- 初学Visual Basic 2010代码
- VS2010、VS2012、VS2013代码自动注释插件
- eclipse、idea代码模板
- eclipse统计代码工具
评论
共有 条评论