Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-05-07, 00:05   #1
piaoyap99
游客
 
帖子: n/a
微笑 帮忙看看错误

%嵌入水印
%读取原始音频music.wav到一维数组 I,利用 length 求出音频数组 I的长度
D=0.035;
I=wavread('F:\MATLAB701\work\music.wav');
len_wav=length(I);
%读取黑白水印图像到二维数组w, 同时利用size求出二维数组的长度与宽度
w=imread('F:\MATLAB701\work\watermark.bmp');
[m,n]=size(w);
%将原始音频I根据水印图像的高度进行均匀分段, 并对段长进行取下整操作
len_seg=floor(len_wav/m);
%对每一段音频进行小波基为"db1"的三层小波变换,分别得到低频系数和高频系数
%设一段音频段为block
p=1;
for i=1:m

block=wavread('F:\MATLAB701\work\music.wav',[p i*len_seg]);
p=i*len_seg;
[c,l]=wavedec(block,3,'db1');
%提取3级小波分解的低频系数和高频系数
ca3=appcoef(c,l,'db1',3);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);

%对低频系数进行DCT变换
ca3=dct(ca3);
%选取DCT系数中的低中频系数进行水印嵌入,本文采取每一段音频嵌入一行水印的策略
%应用此举,为无需将二维的水印转换一维,提高了程序的效率
%其中i表示第 i段音频中嵌入第i行水印信息
for j=1:n
temp=floor((ca3(j))/D);
if(mod(temp,2)==w(i,j))
ca3(j)=temp*D+D/2;
else ca3(j)=temp*D-D/2;
end
end
%其中D为量化系数,本文取值0.035
%进行反DCT变换
ca3=idct(ca3);
%将小波高频系数cd1,cd2,cd3与含有水印的小波低频系数ca3进行逆小波变换,得到含有水印的音频段
c1=[ca3',cd3',cd2',cd1'];

I1=waverec(c1,l,'db1');

%将所得到的音频段, 重组为数组 I1, 得到含有水印的音频,并保存为音频文件musicwatermarked.wav
end

wavwrite(I1,44100,'F:\MATLAB701\work\musicwatermarked.wav');
/////////////////////////////////////////////////////////////////////////////////////////////////
那位大侠帮忙看看错误在哪里啊?希望能帮忙改出来。 谢谢了!!!
我个人认为(1)求block时候不对,(2)最后重组I1时候根本就没有重组。可不知道该怎么改了。希望高手予以指点。
小妹谢过了!!!
  回复时引用此帖
旧 2008-07-17, 18:25   #2
leiwardmeng
初级会员
 
注册日期: 2008-07-17
年龄: 41
帖子: 5
声望力: 0
leiwardmeng 正向着好的方向发展
默认

(1)。建议你先把音频读入到矩阵中,再从矩阵中读取一段block。
block=I(((i-1)*len_seg+1):i*len_seg);
(2)。是没有重组。重组需要你将嵌入后的音频保存下来或者直接替代原始音频的矩阵。用后者比较简单,或者重新开辟一个矩阵来保存。
J(((i-1)*len_seg+1):i*len_seg)=I1;
其中J=I. %len_seg是段长
__________________
日光之下并无新事
leiwardmeng 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[原创]曲线拟合 shiqiang MATLAB论坛 147 2019-07-18 10:45
【讨论】matlab遗传算法应用 dushulang MATLAB论坛 2 2008-05-16 23:09
[求助]交流电路仿真 傲匿思帝 MATLAB论坛 0 2008-04-27 13:00
[求助]请帮忙纠错 LIKAIYU MATLAB论坛 2 2008-04-19 13:40
【求助】关于非线性最小二乘拟合中的问题~ LaGeLang_Yue MATLAB论坛 0 2007-05-24 12:47


所有时间均为北京时间。现在的时间是 23:47


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.