matlab实现的小波变换彩色图像水印嵌入和提取程序代码.docx
- 文档编号:244180
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:5
- 大小:12.21KB
matlab实现的小波变换彩色图像水印嵌入和提取程序代码.docx
《matlab实现的小波变换彩色图像水印嵌入和提取程序代码.docx》由会员分享,可在线阅读,更多相关《matlab实现的小波变换彩色图像水印嵌入和提取程序代码.docx(5页珍藏版)》请在冰豆网上搜索。
functiondwtgl
clearall
clc;
%保存开始时间
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)-1
Cr(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)-1
Cg(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)-1
Cb(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);
end
end
%转化为uint8
output=uint8(round(pic));
imwrite(output,'watermarked.bmp','bmp');
%显示时间
elapsed_time=cputime-start_time,
%输出结果
%subplot(2,2,3);
figure(3);
imshow(output);
title('水印图像');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实现 变换 彩色 图像 水印 嵌入 提取 程序代码