matlab中如何向一张图片中添加一段序列并恢复出来,用dec2bin、bin2dec,直接将图像序列与加入的序列相加减,写出代码
时间: 2024-02-28 17:57:39 浏览: 143
图像复原的matlab代码
5星 · 资源好评率100%
首先,我们需要将要添加的序列转换成二进制,并将其转换成与图像大小相同的矩阵。然后,我们将这个二进制矩阵与图像矩阵相加,得到一个新的矩阵。最后,我们将新的矩阵保存为一张新的图片。
下面是一个简单的 MATLAB 代码示例:
```matlab
% 读取图片
img = imread('example.jpg');
% 将要添加的序列
seq = [1 0 1 1 0 1 0 0];
% 将序列转换成二进制
seq_bin = dec2bin(seq);
% 将二进制序列转换成与图像大小相同的矩阵
seq_matrix = reshape(seq_bin.', 1, []);
seq_matrix = repmat(seq_matrix, 1, ceil(numel(img)/numel(seq_matrix)));
seq_matrix = seq_matrix(1:numel(img));
seq_matrix = reshape(seq_matrix, size(img));
% 将序列与图像相加
new_img = uint8(double(img) + bin2dec(seq_matrix));
% 保存新图片
imwrite(new_img, 'new_example.jpg');
```
恢复序列的方法类似。我们可以将新的图片与原始图片相减,然后将结果转换成二进制矩阵,并从中提取出序列。
下面是恢复序列的 MATLAB 代码示例:
```matlab
% 读取新图片和原始图片
new_img = imread('new_example.jpg');
old_img = imread('example.jpg');
% 将新图片与原始图片相减
diff_img = double(new_img) - double(old_img);
% 将差值转换成二进制矩阵
diff_bin = dec2bin(diff_img(:));
% 从差值中提取出序列
seq = diff_bin(end-7:end);
seq = seq - '0';
```
阅读全文