基于遗传优化的SVD水印嵌入提取算法matlab仿真

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

        基于遗传优化的的SVD水印嵌入提取算法。对比遗传优化前后SVD水印提取性能,并分析不同干扰情况下水印提取效果。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

SVD

GA优化SVD

性能对比:

3.核心程序

....................................................................
% 遍历遗传算法返回的各代最优个体(从第二个开始,跳过第一个)
for i = 2:npop% 使用当前个体对应的步长参数进行SVD嵌入水印step_size = a(i);Wimg = func_svd_embeded(I0, Iwat, step_size);% 计算插入水印后图像的峰值信噪比(PEAKSNR)[m, n] = size(I0);error = I0 - Iatt;MSE = (sum(sum(error .^ 2))) / (m * n);if (MSE > 0)peaksnr = 10 * log10(255^2 / MSE);elsepeaksnr = 99;end% 从攻击后图像中提取水印wimg = func_svd_extract(Iatt, step_size);% 存储原始水印图像,用于后续计算归一化相关系数orig_Iwat = Iwat;% 计算归一化相关系数(NC)作为目标函数值norm_cor = corr2(orig_Iwat, wimg);% 计算目标函数值(归一化相关系数)obfunc = norm_cor;% 更新最大目标函数值、最佳步长、PEAKSNR和NC,以及最终图像if (obfunc > max)max = obfunc;step = step_size;peaksnr_value = peaksnr;NC = norm_cor;final_image = Iatt; % 存储最佳攻击后图像end
end
[peaksnr_value,NC]
peaksnr2(ij,kk)  = peaksnr_value;
norm_cor2(ij,kk) = NC;
end
endfigure;
subplot(121);
plot(NB,mean(peaksnr2,2),'b-o');
xlabel('噪声大小');
ylabel('图像PSNR');subplot(122);
plot(NB,mean(norm_cor2,2),'b-o');
xlabel('噪声大小');
ylabel('提取水印NC');save R2.mat NB peaksnr2 norm_cor2
37

4.本算法原理

       遗传优化是一种基于自然选择和遗传机制的全局优化算法,其在图像水印嵌入与提取领域中有着广泛应用。特别是在SVD( Singular Value Decomposition,奇异值分解)水印算法中,遗传优化能有效地寻找到最佳的水印嵌入参数,以提高水印的鲁棒性和隐蔽性。

SVD水印嵌入:给定一幅待嵌入水印的宿主图像 I,通过奇异值分解将其分解为 I=UΣVT。在选定的奇异值子集上添加水印信息(通常以量化形式表示),然后重构图像得到嵌入水印后的图像 Iw​=U(Σ+W)VT,其中 W 为水印信息在奇异值上的映射。

遗传优化:以种群(一组候选解)为基础,通过模拟自然选择、交叉和变异等生物进化过程,逐步优化水印嵌入参数(如嵌入层选择、量化步长、水印强度等),以最大化水印的鲁棒性或隐蔽性。

遗传算法流程

  1. 初始化:设置遗传算法参数(种群大小、迭代次数、交叉概率、变异概率等),随机生成初始种群,每个个体代表一组水印嵌入参数。

  2. 适应度评估:计算种群中每个个体的鲁棒性得分FR​(θ) 和隐蔽性得分 FH​(θ),根据实际需求选择合适的评价指标(如加权和、折衷函数等)。

  3. 选择:根据适应度得分进行选择操作,保留优秀个体进入下一代种群,常用的策略有轮盘赌选择、tournament选择等。

  4. 交叉:对选定的个体进行交叉操作,生成新的子代个体。常见的交叉方法有单点交叉、两点交叉、均匀交叉等。

  5. 变异:以一定概率对子代个体的某些参数进行变异,打破遗传过程中的局部最优,增加种群多样性。常用变异操作包括二进制变异、实数域均匀变异、高斯变异等。

  6. 更新:将交叉和变异产生的子代个体加入下一代种群,替换掉被淘汰的个体。

  7. 迭代:若达到最大迭代次数或收敛条件满足,则停止;否则,返回步骤2继续下一轮迭代。

  8. 最优解选取:从最终种群中选择适应度最高的个体作为最佳水印嵌入参数。

5.完整程序

VVV

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据mysql的执行顺序来写select

过滤顺序指的是mysql的逻辑执行顺序,个人觉得我们可以按照执行顺序来写select查询语句。 目录 一、执行顺序二、小tips三、案例第一轮查询:统计每个num的出现次数第二轮查询:计算**最多次数**第三轮查询:找到所有出现次数为最多次…

Linux使用宝塔面板安装MySQL结合内网穿透实现公网连接本地数据库

文章目录 推荐前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…

【docker】Docker 简介

Docker 简介 什么是虚拟化、容器化?为什么要虚拟化、容器化?虚拟化实现方式应用程序执行环境分层虚拟化常见类别虚拟机容器JVM 之类的虚拟机 常见虚拟化实现主机虚拟化(虚拟机)实现容器虚拟化实现容器虚拟化实现原理容器虚拟化基础之 NameSpace 什么是虚拟化、容器…

ADC电路项目1——10bit SAR ADC 设计,smic18工艺,有工艺库,有效位数ENOB为9.8

分享一个入门SAR ADC的完整电路项目,适合新手小白学习 10bit 20MHz SAR ADC(WX:didadidadidida313,加我备注:CSDN 10 bit SAR ADC,谢绝白嫖哈) 概述: 本设计采用 smic18mmrf CMOS 工艺&#xf…

【自然语言】使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化

一、任务目标 python代码写将 HarryPorter 电子书作为语料库,分别使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化。 1. 首先将数据预处理,Word2Vec 训练时要求考虑每个单词前后的五个词汇,地址为 作为其上下文 &#xf…

OpenHarmony开发-连接开发板调试应用

在 OpenHarmony 开发过程中,连接开发板进行应用调试是一个关键步骤,只有在真实的硬件环境下,我们才能测试出应用更多的潜在问题,以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先&#xf…

java访问修饰符的访问范围 and 面向对象特征与区别

文章目录 java访问修饰符的访问范围java面向对象的基本特征面向对象与面向过程的区别其他链接 预定义类:由JDK提供的类 java访问修饰符的访问范围 java面向对象的基本特征 java面向对象的基本特征:封装、继承、多态(接口) 关键字…

蓝桥杯-油漆面积

代码及其解析:(AC80%) 思路:是把平面划成单位边长为1(面积也是1)的方格。每读入一个矩形,就把它覆盖的方格标注为已覆盖;对所有矩形都这样处理,最后统计被覆盖的方格数量即可。编码极其简单,但…

python笔记整理

解释性语言(javascript、python) 不需要预编译每次使用都要重新解释代码python中没有内置常量类型;默认只有变量 一般将大写的变量作为常量来用 变量命名规则 字母、数字、下划线、中文等(做好别用中文)数字不能打头不…

【JavaEE框架技术】spring-1

目录 一、使用maven管理spring项目 1.1搭建开发环境 1.1.1修改settings.xml文件 1.1.2把该文件拷入.m2目录 1.1.3打开ecplise,建立maven项目 1.1.4向pom.xml文件中添加spring的坐标: 1.4.1.1代码含义 1.4.1.2代码说明 1.2创建spring配置文件 二…

1653. 使字符串平衡的最少删除次数

1653. 使字符串平衡的最少删除次数 题目 链接&#xff1a;使字符串平衡的最少删除次数 题解 class Solution {public int minimumDeletions(String s) {int left0,right0;int ns.length();for(int i0;i<n;i){if(s.charAt(i)a){right;}}int resright;for(int i0;i<s.…

基于数据沙箱与LLM用例自愈的UI自动化测试平台

UI自动化测试能够在一定程度上确保产品质量&#xff0c;尤其在降本提效的大背景下&#xff0c;其重要性愈发凸显。理想情况下&#xff0c;UI自动化测试不仅能够能帮我们规避不少线上问题&#xff0c;又能加快产品上线速度。然而现实却往往相去甚远&#xff0c;在多数情况下&…

Mac资源库的东西可以删除吗?mac资源库在哪里打开 cleanmymacx是什么 cleanmymac免费下载

在使用Mac电脑的过程中&#xff0c;用户可能会遇到存储空间不足的问题。一种解决方法是清理不必要的文件&#xff0c;其中资源库&#xff08;Library&#xff09;文件夹是一个常被提及但又让人迷惑的目标。Mac资源库的东西可以删除吗&#xff1f;本文旨在解释Mac资源库的作用、…

公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录 jdk的体系结构图Java语言的跨平台的特性&#xff0c;怎么实现的&#xff1f;jvm内部组成呢&#xff1f;pc的值怎么变得&#xff1f;main方法的栈帧有一点点区别&#xff0c;Math()是new出来的&#xff0c;放在堆区&#xff0c;这个堆区的math和我们栈帧中的局部变量表…

37-代码测试(下):Go语言其他测试类型及IAM测试介绍

。 Go中的两类测试&#xff1a;单元测试和性能测试。 我就来介绍下Go 语言中的其他测试类型&#xff1a;示例测试、TestMain函数、Mock测试、Fake测试等&#xff0c; 示例测试 示例测试以Example开头&#xff0c;没有输入和返回参数&#xff0c;通常保存在example_test.go…

屏幕距离识别加语音提醒

效果 QQ录屏20240406131651 语音播放 import pygame pygame.mixer.init() #初始化 pygame.mixer.music.load(r"7359.wav") #文件位置 pygame.mixer.music.play(1) #播放语音 while pygame.mixer.music.get_busy(): # 在音频播放为完成之前不退出程序pass 完…

Session

文章目录 1.Session基本介绍1.Session有什么用?2.Session基本原理3.Session可以做什么&#xff1f;4.如何理解Session&#xff1f;5. Session基本使用 2.Session底层机制1.示意图2.创建session底层机制1.有sessionid&#xff0c;但没session对象1.由于访问了jsp的主页面&#…

vue实现富文本编辑器的具体方法

可以实现富文本的插件&#xff1a;vue-quill-editor、editor-for-vue 我们以 editor-for-vue 为例实现&#xff1a; 传送门&#xff1a;wangEditor官网地址 安装&#xff1a; npm install wangeditor/editor --save npm install wangeditor/editor-for-vue --save具体使用方…

分布式锁的原子性问题

4.6 分布式锁的原子性问题 更为极端的误删逻辑说明&#xff1a; 线程1现在持有锁之后&#xff0c;在执行业务逻辑过程中&#xff0c;他正准备删除锁&#xff0c;而且已经走到了条件判断的过程中&#xff0c;比如他已经拿到了当前这把锁确实是属于他自己的&#xff0c;正准备删…

【matlab非线性规划工具箱安装2 GloptiPoly 3.10工具箱】

【matlab非线性规划工具箱安装2 GloptiPoly 3.10工具箱】 该博客是非线性手眼标定代码中所依赖的matlab工具箱的安装内容&#xff0c;除了进行手眼标定以外&#xff0c;该工具箱还可以用于其他的非线性规划问题 在安装该工具箱之前请先安装SeDuMi 手眼标定传送门&#xff1a…