%Name: Chris Shoemaker
%Course: EER-280 - Digital Watermarking
%Project: Comparison-Based Correlation in DCT mid-band
% Uses two PN sequences; one for a "0" and another for a "1"
% Watermark Embeding
clear all;
% save start time
start_time=cputime;
k=15; % set gain factor for embeding
blocksize=8; % set the dct blocksize
pn_sequence_search='T'; % perform search to find highly uncorrelated pn sequences {T,F}
midband=[ 0,0,0,1,1,1,1,0; % defines the mid-band frequencies of an 8x8 dct
0,0,1,1,1,1,0,0;
0,1,1,1,1,0,0,0;
1,1,1,1,0,0,0,0;
1,1,1,0,0,0,0,0;
1,1,0,0,0,0,0,0;
1,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0 ];
% read in the cover object
file_name='_lena_std_bw.bmp';
cover_object=double(imread(file_name));
% determine size of cover image
Mc=size(cover_object,1); %Height
Nc=size(cover_object,2); %Width
% determine maximum message size based on cover object, and blocksize
max_message=Mc*Nc/(blocksize^2);
% read in the message image
file_name='_copyright.bmp';
message=double(imread(file_name));
Mm=size(message,1); %Height
Nm=size(message,2); %Width
% reshape the message to a vector
message=round(reshape(message,Mm*Nm,1)./256);
% check that the message isn't too large for cover
if (length(message) > max_message)
error('Message too large to fit in Cover Object')
end
% pad the message out to the maximum message size with ones's
message_vector=ones(1,max_message);
message_vector(1:length(message))=message;
% generate shell of watermarked image
watermarked_image=cover_object;
% read in key for PN generator
file_name='_key.bmp';
key=double(imread(file_name))./256;
% reset MATLAB's PN generator to state "key"
rand('state',key);
% generate PN sequences for "1" and "0"
pn_sequence_one=round(2*(rand(1,sum(sum(midband)))-0.5));
pn_sequence_zero=round(2*(rand(1,sum(sum(midband)))-0.5));
% find two highly un-correlated PN sequences
if (pn_sequence_search=='T')
while (corr2(pn_sequence_one,pn_sequence_zero) > -0.55)
pn_sequence_one=round(2*(rand(1,sum(sum(midband)))-0.5));
pn_sequence_zero=round(2*(rand(1,sum(sum(midband)))-0.5));
end
end
% process the image in blocks
x=1;
y=1;
for (kk = 1:length(message_vector))
% transform block using DCT
dct_block=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1));
% if message bit contains zero then embed pn_sequence_zero into the mid-band
% componants of the dct_block
ll=1;
if (message_vector(kk)==0)
for ii=1:blocksize
for jj=1:blocksize
if (midband(jj,ii)==1)
dct_block(jj,ii)=dct_block(jj,ii)+k*pn_sequence_zero(ll);
ll=ll+1;
end
end
end
% otherwise, embed pn_sequence_one into the mid-band componants of dct_block
else
for ii=1:blocksize
for jj=1:blocksize
if (midband(jj,ii)==1)
dct_block(jj,ii)=dct_block(jj,ii)+k*pn_sequence_one(ll);
ll=ll+1;
end
end
end
end
% transform block back into spatial domain
watermarked_image(y:y+blocksize-1,x:x+blocksize-1)=idct2(dct_block);
% move on to next block. At and of row move to next row
if (x+blocksize) >= Nc
x=1;
y=y+blocksize;
else
x=x+blocksize;
end
end
% convert to uint8 and write the watermarked image out to a file
watermarked_image_int=uint8(watermarked_image);
imwrite(watermarked_image_int,'dct2_watermarked_mod.bmp','bmp');
% display processing time
elapsed_time=cputime-start_time,
% display psnr of watermarked image
psnr=psnr(cover_object,watermarked_image,Nc,Mc),
% display watermarked image
figure(1)
imshow(watermarked_image,[])
title('Watermarked Image')
没有合适的资源?快使用搜索试试~ 我知道了~
数字水印综述加代码,具有很重要的参考价值
共104个文件
gif:69个
m:21个
bmp:10个
需积分: 9 10 下载量 167 浏览量
2008-12-19
11:41:08
上传
评论
收藏 2.05MB RAR 举报
温馨提示
数字水印综述加代码,具有很重要的参考价值
资源推荐
资源详情
资源评论
收起资源包目录
数字水印综述加代码,具有很重要的参考价值 (104个子文件)
dwt_watermarked.bmp 145KB
dct1_watermarked.bmp 145KB
cdma_watermarked.bmp 145KB
_lena_std_bw.bmp 145KB
lena.bmp 65KB
_key.bmp 41KB
cs.bmp 15KB
key.bmp 14KB
_copyright_small.bmp 14KB
_copyright.bmp 14KB
Thumbs.db 206KB
fig13s.gif 144KB
fig13s.gif 144KB
fig15as.gif 87KB
fig15bs.gif 87KB
fig24a.gif 74KB
fig26a.gif 72KB
fig31a.gif 71KB
fig29a.gif 71KB
fig22a.gif 70KB
lena3.gif 69KB
fig20a.gif 68KB
fig18a.gif 67KB
fig14as.gif 65KB
fig17a.gif 65KB
fig28.gif 44KB
fig14bs.gif 42KB
fig33.gif 18KB
fig19a.gif 13KB
fig19c.gif 11KB
fig17b.gif 11KB
fig16s.gif 10KB
fig32d.gif 9KB
fig25b.gif 8KB
fig27b.gif 8KB
fig32b.gif 7KB
fig21b.gif 7KB
fig19b.gif 7KB
fig25d.gif 5KB
fig18b.gif 4KB
fig27d.gif 4KB
fig21a.gif 4KB
fig19d.gif 4KB
fig03b.gif 4KB
fig27a.gif 4KB
fig27c.gif 4KB
fig32a.gif 4KB
fig26b.gif 4KB
fig25c.gif 4KB
fig25a.gif 4KB
fig31b.gif 4KB
fig32c.gif 4KB
fig24b.gif 3KB
fig20b.gif 3KB
fig23b.gif 3KB
fig01.gif 3KB
fig30d.gif 3KB
fig06.gif 3KB
fig30b.gif 3KB
fig34.gif 3KB
fig23d.gif 2KB
fig09.gif 2KB
fig22b.gif 2KB
fig30c.gif 2KB
fig30a.gif 2KB
fig23c.gif 2KB
fig23a.gif 2KB
fig29b.gif 2KB
fig03a.gif 1KB
_copyright.gif 928B
fig12.gif 928B
fig08.gif 920B
fig07.gif 852B
fig11.gif 801B
fig11.gif 801B
fig02.gif 762B
fig10.gif 698B
fig05.gif 575B
fig04.gif 377B
eq1.gif 307B
Hidden Bits A Survey of Techniques for Digital Watermarking.htm 120KB
test.jpg 11KB
dct2_embed_mod.m 4KB
dct1_embed.m 3KB
dct2_embed.m 3KB
cor_embed_mod.m 3KB
dct2_recover_mod.m 3KB
cor_embed.m 3KB
dct2_recover.m 3KB
cor_recover_mod.m 3KB
cor_recover.m 2KB
dwt_embed.m 2KB
lsb_embed.m 2KB
cdma_embed.m 2KB
cdma_recover.m 2KB
dwt_recover.m 2KB
dct1_recover.m 2KB
pn_period.m 1KB
lsb_recover.m 958B
psnr.m 727B
共 104 条
- 1
- 2
资源评论
ggmm1122
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功