数字水印实验 —— LSB隐写

LSB 图像隐写


实验要求

实验要求

  • Least Significant Bit 隐写法

LSB隐写法通过将秘密信息的二进制数据嵌入到图像像素的最低有效位中来实现信息的隐藏。由于只改变了最低有效位,肉眼难以察觉隐写前后的图像差异。

实验内容

  • 准备材料

    • 承载秘密的图像——cat.png

      GoodCat

    • 秘密图像——Matlab.png

      Matlab

    • 工具——Matlab

  • 代码

% 1. 将载体图片分成8个位平面,并显示在一个界面中
goodcat = imread('cat.png'); 

figure;
for i = 1:8
    bitPlane = bitget(goodcat, i);
    bitPlane = bitPlane * 202; % 适当调节颜色的强度
    subplot(2, 4, i);
    imshow(bitPlane);
    title(['BitPlane', num2str(i)]);
end

% 2. 制作水印图片,计划嵌入第六个位平面(因为事先观察到该面有效信息占比大)
watermark = imread('Matlab.png'); 
watermarkBitPlane = bitget(watermark, 6);% get所有通道的第六位面

%3. 嵌入到最低有效位
badcat= bitset(goodcat, 1, watermarkBitPlane);% 向badcat的位面1赋值

figure;imshow(badcat);title('BadCat');

% 4. 提取嵌入的秘密信息
secretPlane = bitget(badcat,1);
secretPlane = secretPlane * 255;
figure;imshow(secretPlane);title('Secret');

注:将准备图片与代码文件置于同一目录下运行。

  • 截图

    • 将cat.png分为8个位平面并显示

    在这里插入图片描述

    • 嵌入后的图像(嵌入了第六个位面)

    在这里插入图片描述

    • 提取出的信息

    在这里插入图片描述

实验小结

- `BitPlane = bitget(img, i);`截取图像img的第i位面(BitPlane)

- 每个通道的8bit数值越大,颜色表现强度越大

- 当RGB图像和灰度图像一同参与运算时,需要逐个指定通道(1、2、3);本实验没有出现这种情况

- `img_after = bitset(img_before, i, BitPlane)`将图像的第i位面覆写为某一位面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积积积积积

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值