- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字水印实验报告
基于DCT变换域的水印嵌入和提取
一、原始图像被随机攻击的源程序:% function random_damage()
function random_damage()
file_name = tt.jpg;
oriwat_img = imread(file_name);
% compute the size
H = size(oriwat_img, 1);
W = size(oriwat_img, 2);
% 随机产生行、列,破坏
row1 = unidrnd(512);
row2 = unidrnd(512);
column1 = unidrnd(512);
column2 = unidrnd(512);
if(row1 row2)
temp = row1;
row1 = row2;
row2 = temp;
end
if(column1 column2)
temp = column1;
column1 = column2;
column2 = temp;
end
attack_img = oriwat_img;
for i = row1 : row2
for j = column1:column2
attack_img(i, j) = unidrnd(255);
end
end
% set the attacked image
imwrite(attack_img, muc_attacked.bmp, bmp);
count = (column2 - column1 + 1) * (row2 - row1 + 1)
subplot(1, 2, 1);
imshow(oriwat_img)
title(OriginalWatermarked Image)
subplot(1, 2, 2);
imshow(attack_img)
title(Attacked Image)
该实验程序所产生的实验结果为:
由于该程序是通过产生随机序列而对图像进行攻击的,所以所产生的的实验结果每次都会有所不同,而上图的实验结果也是所显示的几个图像里面被攻击的效果最明显程度最严重的一个。
普通水印的嵌入和提取的源程序:
M=8; %原图像长度
N=8; %水印图像长度
K=8;
I=zeros(M,M);
J=zeros(N,N);
B=zeros(K,K);
I=imread(muc.jpg);%读入原图像
subplot(221)
imshow(I);
title(原图像);
%显示水印图像
%randn(seed,10);
%mark=randn(1024,1);
%subplot(2,2,2);
%plot(mark);
%title(水印序列);
L=imread(c.jpg);
J=rgb2gray(L)
subplot(2,2,2);
imshow(J);
title(水印图像);
%嵌入水印
T=1;
for m=1:N
for n=1:N
x=(m-1)*K+1;
y=(n-1)*K+1;
B=I(x:x+K-1,y:y+K-1); %将原图分成8*8的子块
B=dct2(B); %对子块进行DCT变换
if x==1y==1
a=0.002;
else
a=0.5;
end
B=B*(1+a*mark(T)); %嵌入水印
B=idct2(B); %进行DCT反变换
I(x:x+K-1,y:y+K-1)=B;
T=T+1;
end
end
subplot(2,2,3);
imshow(I);%显示嵌入水印后的图像
title(嵌入水印后的图像);
imwrite(I,嵌入后的图像.jpg);
%从嵌入水印的图像中提取水印
I=imread(muc.jpg);
J=imread(c.jpg);
for m=1:N
for n=1:N
x=(m-1)*K+1;
y=(n-1)*K+1;
B1=I(x:x+K-1,y:y+K-1);
B2=J(x:x+K-1,y:y+K-1);
B1=idct2(B1);
B2=idct2(B2);
a=B2(1,1)/B1(1,1)-1;
if a0
W(m,n)=0;
els
文档评论(0)