您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > matlab实现的小波变换彩色图像水印嵌入和提取程序
functiondwtglclearallclc;%保存开始时间start_time=cputime;figure(1);%读出原始图像subplot(2,2,1);input=imread('image.bmp');imshow(input);title('原始图像');%读出水印subplot(2,2,2);water=imread('watermark.bmp');imshow(water);title('水印');%三色分离input=double(input);water=double(water);inputr=input(:,:,1);waterr=water(:,:,1);inputg=input(:,:,2);waterg=water(:,:,2);inputb=double(input(:,:,3));waterb=double(water(:,:,3));%系数r大,增加鲁棒性,r小增加透明性r=0.04;%水印R的分解[Cwr,Swr]=wavedec2(waterr,1,'haar');%图像R的分解[Cr,Sr]=wavedec2(inputr,2,'haar');%水印的嵌入Cr(1:size(Cwr,2)/16)=...Cr(1:size(Cwr,2)/16)+r*Cwr(1:size(Cwr,2)/16);k=0;whilek=size(Cr,2)/size(Cwr,2)-1Cr(1+size(Cr,2)/4+k*size(Cwr,2)/4:size(Cr,2)/4+...(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/4+...k*size(Cwr,2)/4:size(Cr,2)/4+(k+1)*size(Cwr,2)/4)+...r*Cwr(1+size(Cwr,2)/4:size(Cwr,2)/2);Cr(1+size(Cr,2)/2+k*size(Cwr,2)/4:size(Cr,2)/2+...(k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/2+...k*size(Cwr,2)/4:size(Cr,2)/2+(k+1)*size(Cwr,2)/4)+...r*Cwr(1+size(Cwr,2)/2:3*size(Cwr,2)/4);Cr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/4:3*size(Cwr,2)/4+...(k+1)*size(Cwr,2)/4)=Cr(1+3*size(Cr,2)/4+...k*size(Cwr,2)/4:3*size(Cr,2)/4+(k+1)*size(Cwr,2)/4)+...r*Cwr(1+3*size(Cwr,2)/4:size(Cwr,2));k=k+1;end;Cr(1:size(Cwr,2)/4)=Cr(1:size(Cwr,2)/4)+r*Cwr(1:size(Cwr,2)/4);g=0.02;%水印G的分解[Cwg,Swg]=WAVEDEC2(waterg,1,'haar');%图像G的分解[Cg,Sg]=WAVEDEC2(inputg,2,'haar');%水印的嵌入Cg(1:size(Cwg,2)/16)=...Cg(1:size(Cwg,2)/16)+g*Cwg(1:size(Cwg,2)/16);k=0;whilek=size(Cg,2)/size(Cwg,2)-1Cg(1+size(Cg,2)/4+k*size(Cwg,2)/4:size(Cg,2)/4+...(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/4+...k*size(Cwg,2)/4:size(Cg,2)/4+(k+1)*size(Cwg,2)/4)+...g*Cwg(1+size(Cwg,2)/4:size(Cwg,2)/2);Cg(1+size(Cg,2)/2+k*size(Cwg,2)/4:size(Cg,2)/2+...(k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/2+...k*size(Cwg,2)/4:size(Cg,2)/2+(k+1)*size(Cwg,2)/4)+...g*Cwg(1+size(Cwg,2)/2:3*size(Cwg,2)/4);Cg(1+3*size(Cg,2)/4+k*size(Cwg,2)/4:3*size(Cg,2)/4+...(k+1)*size(Cwg,2)/4)=Cg(1+3*size(Cg,2)/4+...k*size(Cwg,2)/4:3*size(Cg,2)/4+(k+1)*size(Cwg,2)/4)+...g*Cwg(1+3*size(Cwg,2)/4:size(Cwg,2));k=k+1;end;Cg(1:size(Cwg,2)/4)=Cg(1:size(Cwg,2)/4)+g*Cwg(1:size(Cwg,2)/4);b=0.16;%水印B的分解[Cwb,Swb]=WAVEDEC2(waterb,1,'haar');%图像B的分解[Cb,Sb]=WAVEDEC2(inputb,2,'haar');%水印的嵌入Cb(1:size(Cwb,2)/16)+b*Cwb(1:size(Cwb,2)/16);k=0;whilek=size(Cb,2)/size(Cwb,2)-1Cb(1+size(Cb,2)/4+k*size(Cwb,2)/4:size(Cb,2)/4+...(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/4+...k*size(Cwb,2)/4:size(Cb,2)/4+(k+1)*size(Cwb,2)/4)+...g*Cwb(1+size(Cwb,2)/4:size(Cwb,2)/2);Cb(1+size(Cb,2)/2+k*size(Cwb,2)/4:size(Cb,2)/2+...(k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/2+...k*size(Cwb,2)/4:size(Cb,2)/2+(k+1)*size(Cwb,2)/4)+...b*Cwb(1+size(Cwb,2)/2:3*size(Cwb,2)/4);Cb(1+3*size(Cb,2)/4+k*size(Cwb,2)/4:3*size(Cb,2)/4+...(k+1)*size(Cwb,2)/4)=Cb(1+3*size(Cb,2)/4+...k*size(Cwb,2)/4:3*size(Cb,2)/4+(k+1)*size(Cwb,2)/4)+...b*Cwb(1+3*size(Cwb,2)/4:size(Cwb,2));k=k+1;end;Cb(1:size(Cwb,2)/4)=Cb(1:size(Cwb,2)/4)+b*Cwb(1:size(Cwb,2)/4);%图像的重构inputr=WAVEREC2(Cr,Sr,'haar');inputg=WAVEREC2(Cg,Sg,'haar');inputb=WAVEREC2(Cb,Sb,'haar');%三色的叠加temp=size(inputr);pic=zeros(temp(1),temp(2),3);fori=1:temp(1);forj=1:temp(2);pic(i,j,1)=inputr(i,j);pic(i,j,2)=inputg(i,j);pic(i,j,3)=inputb(i,j);endend%转化为uint8output=uint8(round(pic));imwrite(output,'watermarked.bmp','bmp');%显示时间elapsed_time=cputime-start_time,%输出结果%subplot(2,2,3);figure(3);imshow(output);title('水印图像');
本文标题:matlab实现的小波变换彩色图像水印嵌入和提取程序
链接地址:https://www.777doc.com/doc-2342541 .html