【图像隐写】混合DWT-HD-SVD数字图像水印攻击(含PSNR、SSIM、NC)【含Matlab源码 3713期】

本文介绍了使用混合DWT-HD-SVD技术在Matlab中实现的数字图像水印嵌入和提取方法,包括攻击与防御策略,以及对PSNR、SSIM和NC等指标的评估。详细展示了攻击和水印大小对图像质量和隐秘性的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
在这里插入图片描述
🔊博主简介:985研究生,Matlab领域科研开发者;

🚅座右铭:行百里者,半于九十。

🏆代码获取方式:
优快云 Matlab武动乾坤—代码获取方式

更多Matlab图像处理仿真内容点击👇
Matlab图像处理(进阶版)

⛳️关注优快云 Matlab武动乾坤,更多资源等你来!!

⛄一、混合DWT-HD-SVD数字图像水印攻击

1 水印嵌入算法
水印W和载体图像C是水印嵌入算法的输入,含水印图像C是输出。C、W、C的尺寸分别为M×M、N×N和M×M。此外,该水印方法可以容纳多个尺寸不同的水印,并对宿主图像进行r级DWT分解。水印嵌入的过程如图1所示,具体的嵌入步骤为:

(1)基于R级DWT,将C分解为LL、LH、HL、HH的分量,其中R=log2(M/N)。

(2)HD在LL上执行,显示为:
PHPT=HD(LL) (9)

(3)将SVD应用于H:
HUwHSwHVwT=SVD(H) (10)

(4)W与SVD结合使用:
UwSwVwT=SVD(W) (11)

接着使用Logistic映射产生的混沌系统对Uw、VwT的运算加密,加密后的两个组件标记为Uw1和VTw1。

(5)通过将HSw和Sw与缩放因子α的乘积相加,计算嵌入的奇异值HSw:
HS
w=HSw+αSw (12)

(6)带水印的子带H是通过逆奇异值分解生成的,即:
H
=HUwHSw*HVwT (13)

(7)基于给出的逆HD,重建一个新的低频近似子带LL*:
LL*=PH*PT(14)

(8)水印图像C*是通过执行逆r级小波变换获得的,水印嵌入流程图如图2所示。
在这里插入图片描述
图2 水印嵌入流程图

2 水印提取算法
在水印提取算法中,加水印的宿主图像C是输入,提取的水印W是输出。W*的大小为N×N。水印提取过程如图3所示,具体提取步骤为:

(1)经过水印的主图像C*通过r级DWT分解为四个子带,分别为LLw、LHw、HLw、HHw。

(2)对LLw执行HD
PwHwPwT=HD(LLw) (15)

(3)将SVD应用于Hw,
HUwHSbwHVw*T=SVD(Hw)(16)

(4)提取的奇异值Sw为:
Sw
=(HSbw*-HSw*)/α (17)

(5)Uw1和Vw1T由混沌系统解密,解密的两个组件被标记为Uw2和Vw2T。提取的水印W通过逆奇异值分解(SVD)进行重构,公式为:
W
=Uw2Sw*Vw2T(18)
水印提取流程图如图3所示。
在这里插入图片描述
图3 水印提取流程图

⛄二、部分源代码

%% Digital image watermarking
% Digital Image Watermarking method based on hybrid DWT-HD-SVD Technique:
% Attacks, PSNR, SSIM, NC
%
%
%% Intilize
clc
clear
close all

%% Import image
cover_image=imread(‘lena512.bmp’);
watermark_logo=imread(‘cameraman.tif’);
%% Plot cover image and watermark image
figure
subplot(1,2,1);
imshow(cover_image);
title(‘Cover image: 512 x 512’);
subplot(1,2,2);
imshow(watermark_logo);
title(‘Watermark image: 256 x 256’);

%% Example: watermark embedding and exraction alpha=0.1 Attack: Sharpening
method = ‘DWT-HD-SVD’; % Apply 'DWT-HD-SVD Method
alpha = 0.1;
attack = ‘Sharpening attack’; % You can choose other attacks
param = 0.8; % attack parameter
[watermarked_image, extracted_watermark] = watermark(cover_image,…
watermark_logo,method,alpha,attack,param);

% Plot results
figure;
subplot(2, 2, 1);
imshow(cover_image);
xlabel(‘a) Cover image’);
subplot(2, 2, 2);
imshow(watermarked_image);
xlabel(‘b) Watermarked image’);
subplot(2, 2, 3);
imshow(watermark_logo);
xlabel(‘c) Watermark logo’);
subplot(2, 2, 4);
imshow(extracted_watermark);
xlabel(‘d) Extracted watermark’);
sgtitle(['DWT-HD-SVD method \alpha = '+string(alpha) attack]);

%% NC vs alpha DWT-HD-SVD figure 5
% Plot normalized correlation for different alpha
method = ‘DWT-HD-SVD’;
alpha =0.005:0.005:0.2;
attacks = {‘No Attack’; ‘Gaussian low-pass filter’; ‘Median’;…
‘Gaussian noise’; ‘Salt and pepper noise’;‘Speckle noise’;…
‘JPEG compression’; ‘JPEG2000 compression’; ‘Sharpening attack’;…
‘Histogram equalization’; ‘Average filter’; ‘Motion blur’};

% Attack papameters
params = [0; 3; 3; 0.001; 0; 0; 50; 12; 0.8; 0; 0; 0];
NC = NC_alpha(cover_image,watermark_logo,method,alpha,attacks,params);
%% plot NC vs alpha figure 5
NC_plot(alpha,NC,attacks);

%% PSNR vs alpha DWT-HD-SVD
method = ‘DWT-HD-SVD’;
alpha =0.005:0.005:0.2;
attacks = {‘No Attack’; ‘Gaussian low-pass filter’; ‘Median’; ‘Gaussian noise’;…
‘Salt and pepper noise’;‘Speckle noise’; ‘JPEG compression’;…
‘JPEG2000 compression’; ‘Sharpening attack’; ‘Histogram equalization’;…
‘Average filter’; ‘Motion blur’};
params = [0; 3; 3; 0.001; 0; 0; 50; 12; 0.8; 0; 0; 0];
PSNR = PSNR_alpha(cover_image,watermark_logo,method,alpha,attacks,params);

%% plot PSNR vs alpha
PSNR_plot(alpha,PSNR,attacks);

%% SSIM vs alpha DWT-HD-SVD figure 7 paper (see README)
method = ‘DWT-HD-SVD’;
alpha =0.005:0.005:0.2;
attacks = {‘No Attack’; ‘Gaussian low-pass filter’; ‘Median’; ‘Gaussian noise’;…
‘Salt and pepper noise’;‘Speckle noise’; ‘JPEG compression’;…
‘JPEG2000 compression’; ‘Sharpening attack’; ‘Histogram equalization’;…
‘Average filter’; ‘Motion blur’};
params = [0; 3; 3; 0.001; 0; 0; 50; 12; 0.8; 0; 0; 0];
SSIM = SSIM_alpha(cover_image,watermark_logo,method,alpha,attacks,params);

%% plot SSIM vs alpha
SSIM_plot(alpha,SSIM,attacks);

%% FIGURE 8. Invisibility performance: Watermarked images and corresponding extracted
% watermarks with various sizes and their corresponding PSNRs, SSIMs and NCs.

method = ‘DWT-HD-SVD’;
alpha =0.05;
attack = ‘No Attack’;
param = 0;

figure
for i=1:3
watermark_logoi = imresize(watermark_logo,2^(-i+1));
[watermarked_image, extracted_watermark] = watermark(cover_image,watermark_logoi,method,alpha,attack,param);
PSNR = psnr(watermarked_image, cover_image);
SSIM = ssim(watermarked_image, cover_image);
NC = nc(watermark_logoi,extracted_watermark);
subplot(2,3,i);
imshow(watermarked_image);
title([‘watermarked image’;‘watermark size ‘+string(length(watermark_logoi))+‘x’+string(length(watermark_logoi))]);
xlabel([‘PSNR=’+string(PSNR);‘SSIM=’+string(SSIM)]);
subplot(2,3,i+3);
imshow(extracted_watermark);
title(‘extracted watermark’);
xlabel(‘NC=’+string(NC));
end
sgtitle(‘DWT-HD-SVD: Invisibility performance: watermarks with various sizes; alpha=’+string(alpha)+’; No Attack’);

%% plot watermarked image for different attacks and watermark sizes

method = ‘DWT-HD-SVD’;
alpha =0.05;
attacks = {‘No Attack’; ‘Gaussian low-pass filter’; ‘Median’; ‘Gaussian noise’;…
‘Salt and pepper noise’;‘Speckle noise’; ‘JPEG compression’;…
‘JPEG2000 compression’; ‘Sharpening attack’; ‘Histogram equalization’;…
‘Average filter’; ‘Motion blur’};
params = [0; 3; 3; 0.001; 0; 0; 50; 12; 0.8; 0; 0; 0];
for i=3👎1
watermark_logoi = imresize(watermark_logo,2^(1-i));
figure
for j=1:length(attacks)

attack = string(attacks(j));
param = params(j);
[watermarked_image, extracted_watermark] = watermark(cover_image,watermark_logoi,method,alpha,attack,param);
PSNR = psnr(watermarked_image, cover_image);
SSIM = ssim(watermarked_image, cover_image);
subplot(3,4,j);
imshow(watermarked_image);
xlabel(['PSNR='+string(PSNR);'SSIM='+string(SSIM)]);
title(attack);

end
sgtitle(['DWT-HD-SVD: Attacked watermarked image; Size = ‘+string(length(watermark_logoi))+‘x’+string(length(watermark_logoi))+’; \alpha = '+string(alpha)]);
end

%% FIGURE 10. Extracted watermarks from the attacked watermarked images
% Evaluate robustness performance
method = ‘DWT-HD-SVD’;
alpha =0.05;
attacks = {‘No Attack’; ‘Gaussian low-pass filter’; ‘Median’; ‘Gaussian noise’;…
‘Salt and pepper noise’;‘Speckle noise’; ‘JPEG compression’;…
‘JPEG2000 compression’; ‘Sharpening attack’; ‘Histogram equalization’;…
‘Average filter’; ‘Motion blur’};
params = [0; 3; 3; 0.001; 0; 0; 50; 12; 0.8; 0; 0; 0];
for i=3👎1
watermark_logoi = imresize(watermark_logo,2^(1-i));
figure

for j=1:length(attacks)
attack = string(attacks(j));
param = params(j);
[watermarked_image, extracted_watermark] = watermark(cover_image,watermark_logoi,method,alpha,attack,param);
NC = nc(watermark_logoi,extracted_watermark);
subplot(3,4,j);
imshow(extracted_watermark);
xlabel([attack ‘NC=’+string(NC)]);
end
sgtitle(['DWT-HD-SVD: Extracted watermarks image from the attacked watermarked images; Size = ‘+string(length(watermark_logoi))+‘x’+string(length(watermark_logoi))+’; \alpha = '+string(alpha)]);
end

%% FIGURE 11. NC values under different parameters suffering various attacks
watermark_logo1 = watermark_logo;
watermark_logo2 = imresize(watermark_logo,0.5);
watermark_logo3 = imresize(watermark_logo,0.25);
method = ‘DWT-HD-SVD’;
alpha =0.1;
attacks = {‘JPEG compression’;‘JPEG2000 compression’;‘Gaussian low-pass filter’;…
‘Median’;‘Gaussian noise’;‘Sharpening attack’};
figure
for j = 1:length(attacks)
attack = string(attacks(j));
params = 0;
switch attack
case ‘JPEG compression’
params = 10:10:90;
y = [0.98 1];
x = [0 100];
ticks = string(params);
label = ‘Quality Factor (QF)’;
case ‘JPEG2000 compression’
params = 4:4:36;
y = [0.98 1];
ticks = string(params);
label = ‘Compression Ratio (CR)’;
case ‘Gaussian low-pass filter’
params = 0.5:0.5:4.5;
y = [0.9 1];
ticks = string(params);
label = ‘sigma’;
case ‘Median’
params = 3:7;
y = [0.86 1];
ticks = {‘3x3’,‘4x4’,‘5x5’,‘6x6’,‘7x7’};
label = ‘Window size’;
case ‘Gaussian noise’
params = 0.001:0.002:0.009;
y = [0.88 1];
ticks = string(params);
label = ‘Variance’;
case ‘Sharpening attack’
params = 0.1:0.1:0.9;
y = [0.96 1];
ticks = string(params);
label = ‘Strength (1-Threshold)’;
end
NC1 = 0;
NC2 = 0;
NC3 = 0;
for i = 1:length(params)
[watermarked_image1, extracted_watermark1] = watermark(cover_image,watermark_logo1,method,alpha,attack,params(i));
[watermarked_image2, extracted_watermark2] = watermark(cover_image,watermark_logo2,method,alpha,attack,params(i));
[watermarked_image3, extracted_watermark3] = watermark(cover_image,watermark_logo3,method,alpha,attack,params(i));
NC1(i) = nc(watermark_logo1,extracted_watermark1);
NC2(i) = nc(watermark_logo2,extracted_watermark2);
NC3(i) = nc(watermark_logo3,extracted_watermark3);
end
subplot(3,2,j)
plot(params,NC1,‘k<-’);
hold on
plot(params,NC2,‘rs-’);
hold on
plot(params,NC3,‘g^-’);
hold off
grid on
ylim(y);
xticks(params);
xticklabels(ticks);
xlabel(label);
ylabel(‘NC(W,W^*)’);
legend(‘256 x 256’, ‘128 x 128’, ‘64 x 64’, ‘Location’, ‘southwest’);
title(attacks(j));
end
sgtitle(‘DWT-HD-SVD: NC values under different parameters suffering various attacks.’);

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]宋俊辉,鲁骏.彩色图像数字水印嵌入和提取模型研究——基于DWT和DCT[J].现代商贸工业. 2011,23(17)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值