当前位置 : 主页 > 编程语言 > python >

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 根据数字水印系统与通信系统的相似性,借助通信中的LDPC码和交织技术可提高盲水印算法的鲁棒性.在DCT域设计并实现了一种盲数字水印算法.该算法采用LDPC码作为水印信道编码,对

1 简介

根据数字水印系统与通信系统的相似性,借助通信中的LDPC码和交织技术可提高盲水印算法的鲁棒性.在DCT域设计并实现了一种盲数字水印算法.该算法采用LDPC码作为水印信道编码,对图像水印传输进行差错控制,把通过LDPC码编码后的水印序列嵌入原始图像频域,在提取时采用LDPC码的迭代译码算法.实验结果表明:该算法对于常见的图像攻击具有很强的鲁棒性,并且具有很好的视觉不可见性.

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_嵌入水印

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_数字水印_02

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_嵌入水印_03

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_信噪比_04

2 部分代码

% 基于DCT变换的信息隐藏(数字水印)嵌入算法的设计 %
close all;
clc;
clear all
warning off
%-----------------读入"隐藏的图片"---------------------
I=imread('W.bmp');
%-----------------------读入"载体图像"-------------------------
cover_image=imread('lena.bmp');
%------------------------------------------------------------------
I0=rgb2gray(I);%灰度化
cover_image=rgb2gray(cover_image);%灰度化
[wm0,watermarked_image,wm]=ldpc_dct(I0,cover_image);%ldpc_dct嵌入提取
e=wm0-wm;
[m,n]=size(e);
mse=sum((e(:).^2))/(m*n);
psnr=10*log10(255^2/mse);%原始水印与提取水印的峰值信噪比
% disp(['ldpc改进dct提取水印的峰值信噪比psnr=',num2str(psnr)])
figure(1)
subplot(221)
imshow(cover_image);
title('原图');
subplot(222);
imshow(I0);
title('水印图');
title('水印图');
%显示嵌入水印后的图象
subplot(223);
uint8_watermarked_image=uint8(watermarked_image);
imshow(uint8_watermarked_image)
title('ldpc编码译码改进后嵌入水印图')
subplot(224);
imshow(double(wm));
title('ldpc编码译码改进后提取水印图')
%% 剪切攻击
[thr,sorh,keepapp]= ddencmp('cmp','wv',I_gaosi);
% 降噪 or 压缩 using wavelets.
[I_yasuo,CXC,LXC,PERF0,PERFL2] = ...
wdencmp('gbl',C,S,'bior3.7',2,thr,sorh,keepapp);
[wm_yasuo0,watermarked_image_yasuo,wm_yasuo]=ldpc_dct(I_yasuo,cover_image);%ldpc_dct嵌入提取
e_yasuo=wm_yasuo0-wm_yasuo;
[m,n]=size(e_yasuo);
mse_yasuo=sum((e_yasuo(:).^2))/(m*n);
psnr_yasuo=10*log10(255^2/mse_yasuo);%原始水印与提取水印的峰值信噪比
% disp(['旋转攻击后峰值信噪比psnr=',num2str(psnr_xuanzhuan)])
figure(5)
subplot(221)
imshow(cover_image);
title('原图');
subplot(222);
imshow(I0);
title('水印图');
%显示嵌入水印后的图象
subplot(223);
uint8_watermarked_image_yasuo=uint8(watermarked_image_yasuo);
imshow(uint8_watermarked_image_yasuo)
title('小波压缩后嵌入水印图')
subplot(224);
imshow(double(wm_yasuo));
title('小波压缩后提取水印图')

3 仿真结果

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_数字水印_05

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_数字水印_06

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_嵌入水印_07

4 参考文献

[1]朱冰莲, 王雅楠. 基于LDPC码的图像水印盲检算法[J]. 重庆理工大学学报:自然科学, 2010(7):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【图像隐藏】基于LDPC编码译码结合DCT算法实现图像水印嵌入提取含Matlab源码_信噪比_08



网友评论