Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2007-05-31
帖子: 1
声望力: 0 ![]() |
![]()
这是我的毕业设计题目,我编了一些程序也参考了一些资料。希望对matlab 有相当技术的人帮我看看我的这两段程序。我在matlab上调了,也能通过,但总觉的没有达到目的,谁能帮我加个注释,帮我分析一下,先谢了!
1.在原始图像中嵌入水印信息 clear all; s=48; t1=32; t2=16; file_name='lena.bmp'; cover_object=double(imread(file_name)); mc=size(cover_object,1); nc=size(cover_object,2); file_name='jinxin.bmp'; message=double(imread(file_name)); r1=size(message,1); c1=size(message,2); [cA1,cH1,cV1,cD1]=dwt2(cover_object,'haar'); [cA2,cH2,cV2,cD2]=dwt2(cA1,'haar'); [cA3,cH3,cV3,cD3]=dwt2(cA2,'haar'); for ii=1:r1 for jj=1:c1 if(message(ii,jj)==1)&(cA3(ii,jj)>=0) cA3(ii,jj)=cA3(ii,jj)-rem(cA3(ii,jj),s)+t1; elseif (message(ii,jj)==0)&(cA3(ii,jj)>=0) cA3(ii,jj)=cA3(ii,jj)-rem(cA3(ii,jj),s)+t2; elseif(message(ii,jj)==1)&(cA3(ii,jj)<0) cA3(ii,jj)=cA3(ii,jj)-rem(cA3(ii,jj),s)-t1; else cA3(ii,jj)=cA3(ii,jj)-rem(cA3(ii,jj),s)-t2; end end end cA2=idwt2(cA3,cH3,cV3,cD3,'haar',[mc/4,nc/4]); cA1=idwt2(cA2,cH2,cV2,cD2,'haar',[mc/2,nc/2]); watermarked_image = idwt2(cA1,cH1,cV1,cD1,'haar',[mc,nc]); figure(1) subplot(2,2,1);imshow(cA1,[]); subplot(2,2,2);imshow(cA2,[]); subplot(2,2,3);imshow(cA3,[]); subplot(2,2,4);imshow(cD1,[]); figure(2) imshow(cA3,[]); figure(3) imshow(message); SPImage=imnoise(cover_object,'salt & pepper',0.01); figure(4); imshow(SPImage); imwrite(SPImage,'E:\matlab\work\lena.bmp'); 2.从嵌入水印后的图像中提取水印信息 clear all; s=64; t1=48; t2=16; file_name='corrected.bmp'; watermarked_image=double(imread(file_name)); mw=size(watermarked_image,1); nw=size(watermarked_image,2); [cA1,cH1,cV1,cD1]=dwt2(watermarked_image,'haar'); [cA2,cH2,cV2,cD2]=dwt2(cA1,'haar'); [cA3,cH3,cV3,cD3]=dwt2(cA2,'haar'); m1=size(cA3,1); n1=size(cA3,2); for ii=1:m1 for jj=1:n1 if abs(rem(cA3(ii,jj),s))>=(t1+t2)/2 cA3(ii,jj)=1; else cA3(ii,jj)=0; end end end figure(1) imshow(cA3,[]) title('提取出的水印信号') x=imread('jinxin.bmp'); x=double(x); |
![]() |
![]() |