编写matlab脚本exam04_1b.m实现功能:读取”baidu.bmp”图像,把f1.txt的内容按LSB隐藏方法(顺序)隐藏到”baidu.bmp”。 保存为“baidu04b.bmp”。显示该图像
时间: 2023-12-14 22:39:41 浏览: 23
以下是实现题目要求的 Matlab 代码:
```matlab
% 读取图像和数据文件
img = imread('baidu.bmp');
fid = fopen('f1.txt', 'r');
data = fread(fid, Inf, 'uint8');
fclose(fid);
% 获取图像和数据的大小
[img_height, img_width, ~] = size(img);
data_len = length(data);
% 将数据转换为二进制字符串
data_bin_str = dec2bin(data, 8)';
% 将图像的每个像素的最低位替换为数据的二进制字符串
img_bin_str = dec2bin(img, 8)';
img_bin_str(end, :) = []; % 去掉 alpha 通道
img_bin_str(end+1, :) = '0'; % 将 alpha 通道补上
img_bin_str(end-data_len*8+1:end, end) = data_bin_str(:);
img_bin = reshape(img_bin_str', img_height, img_width, []);
img_encoded = uint8(bin2dec(img_bin));
% 保存图像并显示
imwrite(img_encoded, 'baidu04b.bmp');
imshow(img_encoded);
```
其中,我们使用 `imread` 函数读取原始图像,使用 `fopen` 和 `fread` 函数读取数据文件中的数据,然后将数据转换为二进制字符串。接着,我们将图像的每个像素的最低位替换为数据的二进制字符串,最后使用 `imwrite` 函数保存图像,并使用 `imshow` 函数显示图像。