【图像隐藏】基于遗传算法的奇异值分解水印附matlab代码

简介: 【图像隐藏】基于遗传算法的奇异值分解水印附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

鲁棒性与不可见性是数字水印的主要衡量标准,这两者相互制约,传统的数字水印算法很难将二者平衡,提出一种强鲁棒性的图像水印优化嵌入方案,基本思想是先将水印图像经过奇异值分解得到水印序列,采用遗传算法优化水印的嵌入位置,综合优化水印的鲁棒性和不可见性.水印嵌入是自适应的过程,且实现了盲提取.实验表明,该方案在水印遭受各种攻击时,能更好的恢复出清晰地水印图像,具有更强的鲁棒性和不可见性等优点.

⛄ 部分代码

function [Wimg]= SVD_Watermarked(orig_img, wat_img, step_size)

%output

% - wimg : watermarked image

%Input

% - orig_image : original image without watermarking

% - wat_img : watermark image

% - step_size : The interval value

[M,N] = size(orig_img);

orig_img = double(orig_img);

ind=(M*N)/64;

dlarge = zeros(ind,1); % create array of size ind;

block = zeros(8,8,ind); % create and initialize block

index=0;

%将原始图像进行8*8分块?每一块进行SVD变换

for i = 1:8:M;

   for j = 1:8:N;

       index=index+1;

       block(:,:,index) = orig_img(i:i+7,j:j+7);  % make three dimensional array制作三维数组

       [Uimg,Simg,Vimg] = svd(block(:,:,index));

       dlarge(index)=Simg(1,1);              % store the the large value of S

   end

end

%max = max(dlarge);

max = dlarge(1);          % Find the maximum value from dlarge array从dlarge数组中找到最大值

for jj = 2:numel(dlarge)

   if max < dlarge(jj)

       max = dlarge(jj);

   end

end

%min = min(dlarge);

min = dlarge(1);          % find the minimum value from dlarge array

for jj = 2:numel(dlarge)

   if min > dlarge(jj)        

       min = dlarge(jj);

   end

end

interval_table = min-step_size : step_size : max+step_size;      % construct the table

[row col]=size(interval_table);

for i=1:index

   for j=1:col-1

       if ((dlarge(i)> interval_table(j)) && (dlarge(i) < interval_table(j+1)));

           if(wat_img(i)==1);   % 根据水印图像修改dlarge值

               dlarge(i)= (interval_table(j)+(interval_table(j)+interval_table(j+1))/2.)/2.;

           else

               dlarge(i)= (interval_table(j+1)+(interval_table(j)+interval_table(j+1))/2.)/2.;

           end

       end

   end

end

index=0;

Wimg = zeros(8,8,ind); % create and initialize Wimg

for i = 1:8:M;

   for j = 1:8:N;

       index=index+1;

       block(:,:,index) = orig_img(i:i+7,j:j+7);

       [Uimg,Simg,Vimg] = svd(block(:,:,index));

       Simg(1,1)= dlarge(index);       %put the large value based on watermarked image

       Wimg(:,:,index)=Uimg*Simg*Vimg'; %inverse the SVD

   end

end  

%Wimg is three dimensional matrix we have to change to two dimensional

%Wimg是一个三维的矩阵,我们必须把它变成二维的

%matrix

nrow = M/8;

ncol = N/8;

D = zeros(8,8,ind); % create and initialize D

final = zeros(8,8,ind); %create and initialize D

index=0;

for row=1:nrow

   index=index+1;

   D=Wimg(:,:,index);

   for col=2:ncol

      index=index+1;

      D=horzcat(D,Wimg(:,:,index));

%       fprintf('row= %d col= %d',row,col);

   end

   if(row==1)

       final=D;

   else

       final=vertcat(final,D);

   end

end

Wimg = uint8(final);

⛄ 运行结果

⛄ 参考文献

[1] 晁妍, 王慧玲, 刘淑影. 基于遗传算法和SVD-DWT的图像水印优化嵌入方案[J]. 韶关学院学报, 2018, 39(6):5.

[2] 鱼滨. 基于MATLAB和遗传算法的图像处理[M]. 西安电子科技大学出版社, 2015.

[3] 张敏辉, 赖麟, 孙连海. 基于遗传算法的研究与Matlab代码的实现[J]. 四川教育学院学报, 2012.

[4] 魏志成, 戴居丰, 李昊. 基于遗传算法的图像数字水印[J]. 计算机工程, 2007, 33(17):146-148.

[5] 史宝明, 李恒杰, 贺元香,等. 基于微遗传算法与SVD的鲁棒性数字水印技术研究[J]. 甘肃联合大学学报(自然科学版), 2014(006):028.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
2天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
3天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
3天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
12 1
|
5天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
5天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
5天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
5天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
5天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
5天前
|
算法
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
|
5天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真
这是一个关于数字图像水印嵌入的算法介绍。使用MATLAB2022a,该算法基于DOTC,结合抖动和量化误差隐藏,确保水印的鲁棒性和隐蔽性。图像被分为N*N块,根据水印信号进行二值化处理,通过调整重建电平的奇偶性嵌入水印。水印提取是嵌入过程的逆操作,通过重建电平恢复隐藏的水印比特。提供的代码片段展示了从块处理、水印嵌入到噪声攻击模拟及水印提取的过程,还包括PSNR和NC的计算,用于评估水印在不同噪声水平下的性能。

热门文章

最新文章