基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真

简介: 该内容是关于一个图像水印算法的描述。在MATLAB2022a中运行,算法包括水印的嵌入和提取。首先,RGB图像转换为YUV格式,然后水印通过特定规则嵌入到Y分量中,并经过Arnold置乱增强安全性。水印提取时,经过逆过程恢复,使用了二维CS-SCHT变换和噪声对比度(NC)计算来评估水印的鲁棒性。代码中展示了从RGB到YUV的转换、水印嵌入、JPEG压缩攻击模拟以及水印提取的步骤。

1.算法运行效果图预览

1.jpeg
2.jpeg
3.jpeg
4.jpeg

2.算法运行软件版本
matlab2022a

3.算法理论概述
水印嵌入原理

image.png

水印提取原理:

将嵌入水印的图像再次进行二维CS-SCHT变换。

提取变换后的低频系数,并按照嵌入时的规则去除宿主图像内容的影响,恢复出水印信息 Wm′。

image.png

4.部分核心程序
```% figure;
% subplot(121);
% imshow(Irgb)
% subplot(122);
% imshow(I1)

%RGB转换为RGB2YUV
R = double(Irgb(:,:,1));
G = double(Irgb(:,:,2));
B = double(Irgb(:,:,3));
Y = 0.299R + 0.587G + 0.114B;
U = -0.147
R - 0.289G + 0.436B;
V = 0.615R - 0.515G - 0.100*B;
YUV = cat(3, Y, U, V);

[I0,Marks1] = func_read_images(Y,I1);
I0 = imresize(I0,[512,512]);
%设置嵌入强度
Power = 5;
%设置块的大小
Blksize = 8;
RR = 60;
CC = 60;

%对水印进行置乱
Marks1s = Arnold(Marks1,1,0);

% figure
% subplot(131);
% imshow(Irgb,[]);
% title('原始图像');
% subplot(132);
% imshow(Marks1,[]);
% title('水印');
% subplot(133);
% imshow(Marks1s,[]);
% title('置乱后水印');
%对图像进行处理
[Mwk_1st] = func_wk_insert(I0,Marks1s,Power,Blksize,RR,CC);
Y = imresize(Y,[512,512]);
U = imresize(U,[512,512]);
V = imresize(V,[512,512]);
Mwk_1stYUV2 = cat(3,Mwk_1st,U,V);

%YUV2RGB
RGB1 = zeros(size(Mwk_1stYUV2));

RGB1(:,:,1) = Mwk_1st + 1.14 V;
RGB1(:,:,2) = Mwk_1st - 0.39
U - 0.58 V;
RGB1(:,:,3) = Mwk_1st + 2.03
U;

RGB1n(:,:,1)=awgn(RGB1(:,:,1),SNRS(ij),'measured');
RGB1n(:,:,2)=awgn(RGB1(:,:,2),SNRS(ij),'measured');
RGB1n(:,:,3)=awgn(RGB1(:,:,3),SNRS(ij),'measured');

%水印提取
Rs = double(RGB1n(:,:,1));
Gs = double(RGB1n(:,:,2));
Bs = double(RGB1n(:,:,3));
Ys = 0.299Rs + 0.587Gs + 0.114Bs;
Us = -0.147
Rs - 0.289Gs + 0.436Bs;
Vs = 0.615Rs - 0.515Gs - 0.100*Bs;

Mwk_1st2 = Ys(:,:,1);
Msg1 = func_wk_desert(real(Mwk_1st2),Blksize,RR,CC,4);
%对水印进行逆置乱
Msg1s = Arnold(uint8(255*Msg1),1,1);

% figure
% subplot(231);
% imshow(Irgb,[]);
% title('原始图像');
% subplot(232);
% imshow(uint8(YUV));
% title('RGB转为YUV图片');
% subplot(233);
% imshow(Marks1);
% title('水印');
% subplot(234);
% imshow(uint8(RGB1));
% title('JPEG压缩攻击');
% subplot(236);
% imshow(Msg1s,[]);
% title('水印提取');

%%
%水印提取,计算NC和PSNR
Marks1 = imresize(Marks1,[RR,CC]);
NC(ij,jk) = func_nc(uint8(Marks1),uint8(Msg1s)) ;
end
end

figure;
plot(SNRS,mean(NC,2),'b-o');
xlabel('SNR');
ylabel('水印提取NC值');

```

相关文章
|
1月前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
6天前
|
机器学习/深度学习 算法
基于BP神经网络和小波变换特征提取的烟草香型分类算法matlab仿真,分为浓香型,清香型和中间香型
```markdown 探索烟草香型分类:使用Matlab2022a中的BP神经网络结合小波变换。小波分析揭示香气成分的局部特征,降低维度,PCA等用于特征选择。BP网络随后处理这些特征,以区分浓香、清香和中间香型。 ```
|
13天前
|
算法 计算机视觉
图像处理之基于采样距离变换算法
图像处理之基于采样距离变换算法
12 0
|
21天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真
这是一个关于数字水印算法的摘要:使用MATLAB2022a实现,结合DCT和位平面分解技术。算法先通过DCT变换将图像转至频域,随后利用位平面分解嵌入水印,确保在图像处理后仍能提取。核心程序包括水印嵌入和提取,以及性能分析部分,通过PSNR和NC指标评估水印在不同噪声条件下的鲁棒性。
|
1月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1月前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
1月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
1月前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)

热门文章

最新文章