image_patchwork.m

来自「根据W. Bender的《Techniques for data hiding》」· M 代码 · 共 56 行

M
56
字号
%根据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 + =
减小字号Ctrl + -
显示快捷键?