【图像隐藏】基于奇异值分解SVD实现数字水印嵌入提取,相关系数NC附Matlab代码

以下是使用奇异值分解(SVD)实现数字水印嵌入和提取的相关系数(NC)的Matlab代码示例:

matlab

% 数字水印嵌入
function watermarked_image = embed_watermark(original_image, watermark, strength)
% 将原始图像进行SVD分解
[U, S, V] = svd(double(original_image));

% 提取水印图像的尺寸
[M, N] = size(watermark);

% 调整水印图像的大小以匹配原始图像
watermark_resized = imresize(watermark, [M, N]);

% 对S矩阵进行嵌入水印操作
S_watermarked = S + strength * watermark_resized;

% 重构水印图像
watermarked_image = U * S_watermarked * V';

end

% 数字水印提取
function extracted_watermark = extract_watermark(original_image, watermarked_image, strength)
% 将原始图像和水印图像进行SVD分解
[U, S_original, V] = svd(double(original_image));
[U_watermarked, S_watermarked, ~] = svd(double(watermarked_image));

% 从S矩阵中提取嵌入的水印
extracted_watermark = (S_watermarked - S_original) / strength;

end

% 计算相关系数(NC)
function nc = calculate_nc(original_watermark, extracted_watermark)
% 将水印转换为行向量
original_watermark = original_watermark(😃‘;
extracted_watermark = extracted_watermark(😃’;

% 计算相关系数(NC)
nc = corrcoef(original_watermark, extracted_watermark);
nc = nc(1, 2);

end

% 示例用法
original_image = imread(‘original_image.jpg’); % 读取原始图像
watermark = imread(‘watermark.png’); % 读取水印图像

strength = 0.1; % 水印强度

% 嵌入水印
watermarked_image = embed_watermark(original_image, watermark, strength);

% 提取水印
extracted_watermark = extract_watermark(original_image, watermarked_image, strength);

% 计算相关系数
nc = calculate_nc(watermark, extracted_watermark);

disp([‘相关系数:’, num2str(nc)]);
请确保在运行代码之前,将original_image.jpg和watermark.png替换为实际的图像文件路径。代码中的strength参数用于控制水印的强度,您可以根据需要进行调整。

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 12:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 12:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 12:12:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 12:12:03       20 阅读

热门阅读

  1. vscode 创建一个测试单个js文件的项目

    2024-06-17 12:12:03       9 阅读
  2. 网络命令大全windows linux

    2024-06-17 12:12:03       9 阅读
  3. vue前端-静态资源下载小坑记录

    2024-06-17 12:12:03       8 阅读
  4. QComboBox使用详解(Qt)

    2024-06-17 12:12:03       8 阅读
  5. 小程序wx:if 和hidden的区别?

    2024-06-17 12:12:03       9 阅读
  6. R语言自定义vlookup函数

    2024-06-17 12:12:03       6 阅读
  7. Spark 面试题(六)

    2024-06-17 12:12:03       8 阅读
  8. Android 自定义SeekBar显示进度百分比

    2024-06-17 12:12:03       8 阅读
  9. 图片Base64编码

    2024-06-17 12:12:03       8 阅读