Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-04-20
帖子: 1
声望力: 0 ![]() |
![]()
程序中lena.bmp是灰度图象,此时程序是好用的!但把灰度图象换成二值图像,程序就进入死循环状态,不知道为什么?a1,a2都变成0了,实际上都是(-1,1)之间的数!而换成灰度图象就正常付值,郁闷啊!到底是哪有问题呢?
请大家帮忙! ![]() clear all; image_name='lena.bmp'; watermark_image=imread(image_name); waterimage=double(watermark_image); waterimage_m=size(waterimage,1); waterimage_n=size(waterimage,2); ww=1; for i=1:waterimage_m for j=1:waterimage_n waterimage_y(ww,1)=waterimage(i,j); ww=ww+1; end end waterimage_1=size(waterimage_y,1); audio_name='shuiyin.wav'; [original_y,fs]=wavread(audio_name); xxx=original_y; music_1=size(original_y,1); sect=60; k=1; w=1; while k<=music_1&w<=waterimage_1 for i=1:sect music1(i,1)=original_y(k,1); k=k+1; end for j=1:sect music2(j,1)=original_y(k,1); k=k+1; end %end [a1,b1]=dwt(music1,'db2'); [a2,b2]=dwt(music2,'db2'); sect1=size(a1); en1=sum(a1.*a1); en2=sum(a2.*a2); if waterimage_y(w,1)==1 if en1>=en2 while en1>=en2 for ii=1:sect1 if a1(ii,1)==0 a1(ii,1)=a1(ii,1); else if a1(ii,1)<0 a1(ii,1)=a1(ii,1)+0.02; else a1(ii,1)=a1(ii,1)-0.02; end end end en1=sum(a1.*a1); end end else if waterimage_y(w,1)==0 if en1<en2 while en1<en2 for ii=1:sect1 if a2(ii,1)==0 a2(ii,1)=a2(ii,1); else if a2(ii,1)<0 a2(ii,1)=a2(ii,1)+0.02; else a2(ii,1)=a2(ii,1)-0.02; end end end en2=sum(a2.*a2); end end end end imusic1=idwt(a1,b1,'db2'); imusic2=idwt(a2,b2,'db2'); xx=1; for iii=k-2*sect:k-sect-1 original_y(iii,1)=imusic1(xx,1); xx=xx+1; end xx=1; for iii=k-sect:k-1 original_y(iii,1)=imusic2(xx,1); xx=xx+1; end w=w+1; k=k+4*sect; end wavwrite(original_y,fs,'newshuida.wav'); yyy=original_y; err_amp=xxx-yyy; wavwrite(err_amp,fs,'err_amp.wav'); figure(1) subplot(3,1,1) plot(xxx); title('yuanshi'); xlabel('qianrushuiyin'); subplot(3,1,2) plot(yyy); xlabel('err'); subplot(3,1,3) plot(err_amp); |
![]() |
![]() |