📄 image_patchwork.m
字号:
%根据W. Bender的《Techniques for data hiding》编写
%用补丁方法对图象做空间域的水印嵌入和提取,
%效率极高,程序简洁,属信息隐藏中常用的方法之一。
%作者:辽宁大学 信息学院 范铁生
%email:fts0@163.com
%
% 水印嵌入部分
clc,clear all
tic; %运算时间初始值
cover=double(imread('lena.bmp'))./256;%归一化
[m,n]=size(cover);
% 读入水印,并取二值化
message=im2bw(imread('baboon64.bmp'));
[mm,mn]=size(message);
%为伪随机数发生器的种子
rand('state',256); %嵌入的密钥
f=cover; %时域方法
delta=.2 %*256;%归一化后就不用*256了
ax=randperm(m);
ay=randperm(n);
bx=randperm(m);
by=randperm(n);
for r=1:mm
for s=1:mn
if message(r,s)==1
f(ax(r),ay(s))=f(ax(r),ay(s))+delta;
f(bx(r),by(s))=f(bx(r),by(s))-delta;
else
f(ax(r),ay(s))=f(ax(r),ay(s))-delta;
f(bx(r),by(s))=f(bx(r),by(s))+delta;
end
end
end
%水印提取部分
rand('state',256); %提取的密钥
ax=randperm(m);
ay=randperm(n);
bx=randperm(m);
by=randperm(n);
for r=1:mm
for s=1:mn
if f(ax(r),ay(s))-f(bx(r),by(s))>0
watermark(r,s)=1;
else
watermark(r,s)=0;
end
end
end
figure
subplot(131),imshow(cover,[]);title('原始图像');
subplot(132),imshow(F,[]);title('水印攻击的图像');
subplot(133),imshow(watermark*256,[]);title('水印提取的图像');
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -