matlab中基于MSE、SNR、PSNR、NC测试图片相似度和水印鲁棒性的代码
时间: 2023-07-10 22:10:24 浏览: 114
以下是MATLAB中基于MSE、SNR、PSNR、NC测试图片相似度和水印鲁棒性的代码示例:
1. 计算图片相似度
```matlab
% 读取两张图片
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
% 计算MSE
mse = sum(sum((img1-img2).^2))/(m*n);
% 计算SNR
snr = 10*log10(sum(sum(img1.^2))/mse);
% 计算PSNR
psnr = 10*log10(255^2/mse);
% 计算NC
nc = sum(sum(img1.*img2))/(sqrt(sum(sum(img1.^2)))*sqrt(sum(sum(img2.^2))));
```
2. 测试水印鲁棒性
```matlab
% 读取原始图像和加水印后的图像
img_ori = imread('image.jpg');
img_watermark = imread('watermark.jpg');
% 添加嵌入强度为0.05的水印
alpha = 0.05;
img_watermarked = img_ori + alpha*img_watermark;
% 去除水印
img_restored = img_watermarked - alpha*img_watermark;
% 计算MSE
mse = sum(sum((img_ori-img_restored).^2))/(m*n);
% 计算PSNR
psnr = 10*log10(255^2/mse);
```
以上代码仅供参考,具体实现还需要根据实际情况进行调整和优化。
阅读全文