基于matlab的数字水印系统代码
时间: 2023-11-13 13:02:53 浏览: 34
以下是一个基于 MATLAB 的数字水印系统代码示例:
1. 首先生成一张需要嵌入水印的图像:
```
I = imread('image.jpg'); % 读入图像
imshow(I); % 显示图像
```
2. 生成一段随机的水印序列:
```
watermark = randi([0,1],1,100); % 生成100位的随机水印序列
```
3. 将水印序列嵌入到图像中:
```
watermarked_I = im2double(I); % 将图像转换为 double 类型
alpha = 0.01; % 水印强度
for i = 1:length(watermark)
if watermark(i) == 1
watermarked_I(i) = watermarked_I(i) + alpha;
else
watermarked_I(i) = watermarked_I(i) - alpha;
end
end
```
4. 提取嵌入在图像中的水印:
```
extracted_watermark = zeros(1,length(watermark));
for i = 1:length(watermark)
if watermarked_I(i) > I(i)
extracted_watermark(i) = 1;
else
extracted_watermark(i) = 0;
end
end
```
5. 计算嵌入水印前后的峰值信噪比(PSNR):
```
PSNR = psnr(watermarked_I,I); % 计算嵌入水印后的 PSNR
PSNR_orig = psnr(I,I); % 计算原始图像的 PSNR
```
注意:这只是一个简单的数字水印系统示例,实际应用中还需要考虑更多的因素,例如水印的鲁棒性、图像压缩等。