图像经过中值滤波攻击后提取水印的matlab代码
时间: 2023-11-24 09:06:09 浏览: 101
matlab-基于DWT-HD-SVD混合技术的数字图像水印方法测试了jpeg压缩,jpeg2000压缩,高斯滤波,中值滤波,高
5星 · 资源好评率100%
由于中值滤波攻击会对图像中的像素值进行修改,因此在提取水印时需要先对攻击后的图像进行恢复,将其还原为原始图像。然后再使用水印提取算法提取水印。
以下是使用matlab实现的中值滤波攻击和水印提取的代码:
中值滤波攻击:
```matlab
% 读取原始图像
img = imread('lena.bmp');
% 添加水印
watermark = zeros(size(img,1), size(img,2));
watermark(50:100, 50:100) = 1;
watermarked_img = uint8(double(img) + 50 * watermark);
% 对水印图像进行中值滤波攻击
attacked_img = medfilt2(watermarked_img, [5, 5]);
% 显示攻击后的图像
imshow(attacked_img);
```
水印提取:
```matlab
% 恢复攻击后的图像,将其还原为原始图像
restored_img = uint8(double(attacked_img) - 50 * watermark);
% 显示恢复后的图像
imshow(restored_img);
% 提取水印
extracted_watermark = zeros(size(img,1), size(img,2));
extracted_watermark(restored_img > 128) = 1;
% 显示提取的水印
imshow(extracted_watermark);
```
在上面的代码中,我们首先读取了一张图像,并在其中添加了一个水印。然后对水印图像进行了中值滤波攻击,得到了攻击后的图像。接着,我们使用水印提取算法对攻击后的图像进行了恢复,并提取了其中的水印。最后,将提取得到的水印进行显示。
阅读全文