LSB水印嵌入算法
1、加载原始图像和需要嵌入的信息
orig_image=imread('cameraman.tif');
message=imread('text.png');
figure('Position',[0,0,700,300])
基于最低有效位LSB的方法,原理为将水印直接嵌入到原始信号表示数据的最不重要
的位置(最低有效位)中。从下图可以看出,将水印嵌入到最低位B0位对图像影响很小,B0位可以称为最低有效位
title(sprintf("第%d位平面 B_%d",i,i-1))
sgtitle("图像的各个位平面B_7B_6B_5B_4B_3B_2B_1B_0")
2、水印嵌入算法
watermark(i,j)=message(mod(i,Hm)+1,mod(j,Wm)+1);
watermarked_image=orig_image;
watermarked_image(i,j)=bitset(watermarked_image(i,j),1,watermark(i,j));
imshow(watermarked_image);
3、提取水印算法
[Hw,Ww,~]=size(watermarked_image);
watermark2(i,j)=bitget(watermarked_image(i,j,1),1);
watermark2=2*double(watermark2);
注:
-
MATLAB
自带图片一般位于路径如/Applications/MATLAB_R2021a.app/toolbox/images/imdata/