基于MATLAB的数字图像水印技术

发布时间 : 星期四 文章基于MATLAB的数字图像水印技术更新完毕开始阅读

《MATLAB应用与通信仿真》课程设计

f1=col2im(cf1,[8,8],[256,256],'distinct');

% 从含水印的图像 f1 中提取出 36×7 的分组码x1。 for i=1:252

sk(i)=sum((recf1(i,:)-recf0(i,:)).*p(i,:)); end; for i=1:252

if sign(sk(i))==-1 rex1(i)=0; else rex1(i)=1; end; end;

x1=reshape(rex1,36,7);

% 对提取出来的分组码 x1 进行纠错解码,最后得到一个 36×4 的水印 w1。 for i=1:36

s1(i)=x1(i,1)+x1(i,2)+x1(i,3)+x1(i,5); s2(i)=x1(i,2)+x1(i,3)+x1(i,4)+x1(i,6); s3(i)=x1(i,1)+x1(i,2)+x1(i,4)+x1(i,7); s1(i)=mod(s1(i),2); s2(i)=mod(s2(i),2); s3(i)=mod(s3(i),2);

if (s1(i)==0&s2(i)==0)&(s3(i)==1) x1(i,7)=~x1(i,7);

elseif (s1(i)==0&s2(i)==1)&(s3(i)==0) x1(i,6)=~x1(i,6);

elseif (s1(i)==0&s2(i)==1)&(s3(i)==1) x1(i,4)=~x1(i,4);

elseif (s1(i)==1&s2(i)==0)&(s3(i)==0) x1(i,5)=~x1(i,5);

elseif (s1(i)==1&s2(i)==0)&(s3(i)==1) x1(i,1)=~x1(i,1);

25

《MATLAB应用与通信仿真》课程设计

elseif (s1(i)==0&s2(i)==1)&(s3(i)==0) x1(i,3)=~x1(i,3);

elseif (s1(i)==1&s2(i)==1)&(s3(i)==1) x1(i,2)=~x1(i,2); end; end; w1=x1(:,1:4);

% 计算原图像 f0 和嵌入水印的图像 f1 的信噪比snr。 v1=sum(sum(f0.^2)); v2=sum(sum((f0-f1).^2)); snr=10*log10(v1/v2);

% 计算原水印 w0 和提取出来的水印 w1 的相关系数 r。 r=corr2(w0,w1);

% 显示原始图像 f0 和嵌入水印的图像 f1 subplot(1,3,2);imshow(f0,[]);title('原始图像'); subplot(1,3,3);imshow(f1,[]);title('嵌入水印的图像'); % 将含水印图像 f1 归一化,以便于攻击处理。 m=max(max(f1)); f=f1/m; %JPEG 压缩。

imwrite(f,'attackf.jpg','jpg','quality',30); attackf=imread('attackf.jpg'); attackf=double(attackf)/255; figure

% 显示攻击后的水印图像 attackf

subplot(1,2,1);imshow(attackf,[ ]);title('受JPEG攻击压缩后的水印图像'); %从受JPEG攻击压缩后的图像中提取水印 subplot(1,2,2);imshow(w1,[ ]);title('提取的水印'); figure

26

《MATLAB应用与通信仿真》课程设计

%给出其他几种攻击后的水印图像 imread('attackf.jpg'); %高斯低通滤波。 h=fspecial('gaussian',3,1); attackf=filter2(h,f);

subplot(2,3,1);imshow(attackf,[ ]);title('高斯滤波'); %直方图均衡化。 attackf=histeq(f);

subplot(2,3,2);imshow(attackf,[ ]);title('直方图'); %图像增亮。

attackf=imadjust(f,[ ],[0.4,1]);

subplot(2,3,3);imshow(attackf,[ ]);title('图像增亮'); %图像变暗。

attackf=imadjust(f,[ ],[0,0.85]);

subplot(2,3,4);imshow(attackf,[ ]);title('图像变暗'); % 增加对比度。

attackf=imadjust(f,[0.3,0.6],[]);

subplot(2,3,5);imshow(attackf,[ ]);title('增加对比度'); % 降低对比度。

attackf=imadjust(f,[ ],[0.2,0.8]);

subplot(2,3,6);imshow(attackf,[ ]);title('降低对比度'); figure %噪声试验 %添加高斯噪声。

attackf=imnoise(f,'gaussian',0,0.01);

subplot(1,3,1);imshow(attackf,[ ]);title('高斯噪声'); % 增加黑白像素点。

attackf=imnoise(f,'salt & pepper',0.06);

subplot(1,3,2);imshow(attackf,[ ]);title('椒盐噪声');

27

《MATLAB应用与通信仿真》课程设计

%添加乘积性噪声。

attackf=imnoise(f,'speckle',0.08);

subplot(1,3,3);imshow(attackf,[ ]);title('乘性噪声');

28

联系合同范文客服:xxxxx#qq.com(#替换为@)