将灰度图像 Lena 分解成 8 个位平面并验证教材 P91 页的结论,即将数字水印信息嵌入 Lena 图像的第 1 至 3 个位平面中,可以达到不易察觉的目的。并显示出作用前后的图像matlab代码
时间: 2024-03-25 07:40:08 浏览: 42
好的,这里是将灰度图像 Lena 分解成 8 个位平面并嵌入数字水印信息后的 Matlab 代码,并显示出作用前后的图像:
```matlab
lena = imread('lena_gray.bmp'); % 读入灰度图像 Lena
bits = cell(8, 1); % 用于保存每个位平面的二进制数
for i = 1 : 8
bits{i} = bitget(lena, i); % 分解第 i 个位平面
end
watermark = [0 1 0 1 1 0 0 1 1 0]; % 数字水印信息
for i = 1 : 3
bits{i}(1 : length(watermark)) = bitset(bits{i}(1 : length(watermark)), 1, watermark); % 在第 i 个位平面中嵌入数字水印信息
end
watermarked_lena = uint8(0); % 用于保存加入数字水印信息后的 Lena 图像
for i = 1 : 8
watermarked_lena = watermarked_lena + bits{i} * 2^(i - 1); % 合成加入数字水印信息后的 Lena 图像
end
figure;
subplot(1, 2, 1); imshow(lena); title('原图');
subplot(1, 2, 2); imshow(watermarked_lena); title('加入数字水印信息后的图');
```
运行后会显示出两幅图像,左边是原始的灰度图像 Lena,右边是加入数字水印信息后的 Lena 图像。可以通过对比两幅图像来验证教材 P91 页的结论,即将数字水印信息嵌入 Lena 图像的前几个位平面中,可以达到不易察觉的目的。
阅读全文