【图像隐藏】基于遗传算法的奇异值分解水印附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电子书和数学建模资料


相关文章
|
3月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
171 0
|
3月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
140 0
|
3月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
206 8
|
3月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
220 8
|
3月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
130 8
|
3月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
381 0
|
3月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
146 0
|
3月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
220 8
|
3月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
202 12
|
3月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
162 9