资源简介
在彩色图像中嵌入二值灰度水印图像。有两种算法,第一种是嵌入在yuv模型的y层全部系数上,第二种是嵌入在rgb模型的r层直流系数上,缺点是系数大的话会有点泛红。改进是嵌入在y层的直流系数上,没有时间了所以没弄。压缩包里有代码、图片、论文,本科毕设题目,万事开头难,刚开始我也是遇到很多困难,所以希望这些资料可以帮助到你。
代码片段和文件信息
%************************主函数***********************
function private_call
clc
%读入原载体图像和原始水印图像
I=imread(‘f:\lena1.jpg‘);figure;subplot(221);imshow(I);title(‘原载体lena图像‘);
Q=imread(‘f:\xiaohui.jpg‘);
Q1=gray(Q);%调用子函数,实现水印图像灰度化和二值化
imwrite(Q1‘f:\erzhi.jpg‘);
subplot(222);imshow(Q1);title(‘二值水印图像‘);
r=arnold(Q1); %水印置乱
imwrite(r‘f:\images2.jpg‘);
s=embed(Ir);%水印嵌入
imwrite(s‘f:\watermarked.jpg‘);
D=imread(‘f:\watermarked.jpg‘);
pnsr1=compare(DI);c=sprintf(‘pnsr1:%f\n‘pnsr1);disp(c);
subplot(223);imshow(s);title(‘水印嵌入后图像‘);
v_get=get(DI);
h=iarnold(v_get);
NCa=com_sub(Q1h);c=sprintf(‘嵌入水印NC1:%f\n‘NCa);disp(c);
imwrite(h‘f:\get0.jpg‘);
subplot(224);
imshow(h);
title(‘反置乱后的水印图像‘);
%水印的检测
%两种不同JPEG压缩比下的测试
imwrite(D‘f:\jpeg_attck1.jpg‘‘jpeg‘‘Quality‘95);
L=imread(‘f:\jpeg_attck1.jpg‘);
pnsr2=compare(LI);c=sprintf(‘压缩95 pnsr2:%f\n‘pnsr2);disp(c);
figure;
subplot(221);
imshow(L);
title(‘95%jpeg压缩后的图像‘);
v_get1=get(LI);%提取压缩后的水印
h1=iarnold(v_get1);%反置乱
NC1=com_sub(Q1h1);c=sprintf(‘压缩NC2:%f\n‘NC1);disp(c);
imwrite(h1‘f:\jpg_get1.jpg‘);
subplot(223);
imshow(h1);
title(‘95%jpeg反置乱的水印‘);
imwrite(D‘f:\jpeg_attck2.jpg‘‘jpeg‘‘Quality‘45);
L1=imread(‘f:\jpeg_attck2.jpg‘);
pnsr12=compare(L1I);c=sprintf(‘压缩45 pnsr3:%f\n‘pnsr12);disp(c);
subplot(222);
imshow(L1);
title(‘45%jpeg压缩后的图像‘);
v_get12=get(L1I);%提取压缩后的水印
h12=iarnold(v_get12);%反置乱
NC3=com_sub(Q1h12);c=sprintf(‘压缩45 NC3:%f\n‘NC3);disp(c);
imwrite(h1‘f:\jpg_get2.jpg‘);
subplot(224);
imshow(h12);
title(‘45%jpeg反置乱的水印‘);
%2中不同的噪声检测
J=imnoise(D‘gaussian‘00.01);
pnsr3=compare(JI);c=sprintf(‘高斯噪声pnsr4:%f\n‘pnsr3);disp(c);
imwrite(J‘f:\gaussian.jpg‘);
W=imread(‘f:\gaussian.jpg‘);
v_get2=get(WI);%提取加噪后的水印
h2=iarnold(v_get2);%反置乱
NC4=com_sub(Q1h2);c=sprintf(‘高斯噪声NC4:%f\n‘NC4);disp(c);
imwrite(h2‘f:\gaussian2.jpg‘);
figure;
subplot(221);
imshow(W);
title(‘0.01高斯噪声的图像‘);
figure(3);
subplot(223);
imshow(h2);
title(‘反置乱的水印图像‘);
JJ=imnoise(D‘salt & pepper‘0.02);
pnsr32=compare(JJI);c=sprintf(‘椒盐噪声pnsr5:%f\n‘pnsr32);disp(c);
imwrite(JJ‘f:\salt$pepper_attack2.jpg‘);
WW=imread(‘f:\salt$pepper_attack2.jpg‘);
v_get22=get(WWI);%提取加噪后的水印
h22=iarnold(v_get22);%反置乱
NC5=com_sub(Q1h22);c=sprintf(‘椒盐噪声NC5:%f\n‘NC5);disp(c);
imwrite(h22‘f:\salt_get2.jpg‘);
subplot(222);
imshow(WW);
title(‘0.02椒盐噪声的图像‘);
subplot(224);
imshow(h22);
title(‘反置乱的水印图像‘);
%2种旋转测试
J1=imrotate(D2‘bilinear‘‘crop‘);
J2=imrotate(J1-2‘bilinear‘‘crop‘);
pnsr4=compare(J2I);c=sprintf(‘旋转2°pnsr6:%f\n‘pnsr4);disp(c);
v_get3=get(J2I);%旋转后的水印
h3=iarnold(v_get3);%反置乱
NC6=com_sub(Q1h3);c=sprintf(‘旋转2°NC6:%f\n‘NC6);disp(c);
figure;
subplot(231);
imshow(J1);
title(‘旋转2后的水印图像‘);
imwrite(h3‘f:\rotate_get3.jpg‘);
subplot(234);
imshow(h3);
title(‘反置乱的水印图像‘);
JJ1=imrotate(D95‘bilinear‘‘crop‘);
JJ2=imrotate(JJ1-95‘bilinear‘‘crop‘);
imwrite(JJ1‘f:\rotate.jpg‘);
pnsr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 26624 2017-05-10 12:07 130070204路开放\中期检查表.doc
文件 11277 2017-06-06 20:09 130070204路开放\代码使用说明.docx
文件 16384 2017-03-14 13:54 130070204路开放\任务书.doc
文件 60416 2017-04-19 12:32 130070204路开放\实习报告.doc
文件 50688 2017-04-16 18:52 130070204路开放\开题报告.doc
文件 982604 2017-06-06 20:03 130070204路开放\毕业论文.docx
文件 800203 2017-06-06 19:07 130070204路开放\毕业论文打印版.pdf
文件 6733 2017-05-28 09:33 130070204路开放\源代码及图片\caiseshuiyin.m
文件 6341 2017-05-28 09:51 130070204路开放\源代码及图片\caisezhiliu.m
文件 67250 2010-04-30 20:37 130070204路开放\源代码及图片\lena1.jpg
文件 5655 2017-05-20 07:48 130070204路开放\源代码及图片\xiaohui.jpg
文件 1068704 2017-06-06 19:13 130070204路开放\英文.docx
文件 17524 2017-06-06 19:12 130070204路开放\英文翻译.docx
文件 41558 2017-06-07 08:56 130070204路开放\项目审批表.doc
目录 0 2017-06-06 20:05 130070204路开放\源代码及图片
目录 0 2017-06-09 18:28 130070204路开放
----------- --------- ---------- ----- ----
3161961 16
评论
共有 条评论