用MATLAB 对图像进行位平面分解,并显示各个位平面的内容,然后分别在各位平面嵌入自己设计的二值图内容,显示嵌入后各位平面效果以及组合的图像,将LSB嵌入水印的图像分别保存为bmp和jpg文件,然后再打开,查看最低位的内容发生的变化。
时间: 2024-10-19 12:09:53 浏览: 41
在MATLAB中,位平面分解(Bit Plane Decomposition)是一种将彩色图像转换为其组成部分的技术,通常用于数字图像处理和水印技术中。以下是步骤:
1. **加载和显示图像**:
使用`imread`函数加载图像,如`I = imread('input.jpg');` 然后使用`imshow(I)` 显示原始图像。
2. **位平面提取**:
MATLAB提供了一个名为`rgb2gray`的函数可以将RGB图像转换为灰度,方便后续操作。然后通过循环将8位灰度图像拆分成8个位平面,每个位代表了图像的一个亮度级别。例如:
```
planes = zeros(size(I));
for i = 1:8
planes(:, :, i) = im2bw(double(I) & (1 << uint8(i - 1)));
end
```
3. **嵌入二值信息**:
设计好你要嵌入的二值图(比如一个简单的黑白图案),将其转化为二进制数据。然后逐位替换位平面对应位置的像素,例如`planes(:,:,i) = planes(:,:,i) | (embedded_pattern .* (1 << uint8(i - 1)));`
4. **显示嵌入后的位平面**:
可以分别使用`imshow(planes(:,:,i))`来查看每个位平面的结果。
5. **合并位平面并保存结果**:
将修改过的位平面按原顺序合并回彩色图像,`watermarked_image = planes; % Merge planes back into RGB`. 之后,用`imwrite(watermarked_image, 'output.bmp')` 和 `imwrite(watermarked_image, 'output.jpg', 'Quality', 90)` 保存为bmp和jpg格式。
6. **查看嵌入变化**:
打开嵌入水印后的图片,检查最低位(通常是第1位)是否包含了你嵌入的信息。这可以通过对比嵌入前后的原始图像的最低位来进行观察。
阅读全文