基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

matlab2022a

3.部分核心程序

.......................................................................
%对水印进行置乱
Marks1s     = Arnold(Marks1,1,0); figure(1)
subplot(131);
imshow(I0,[]);
title('原始图像');
subplot(132);
imshow(Marks1,[]);
title('水印');
subplot(133);
imshow(Marks1s,[]);
title('置乱后水印');
%对图像进行处理
Mwk_1st   = func_wk_insert(I0,Marks1s,Power,Blksize,RR,CC);if SEL == 1
%噪声攻击
noise0    = 20*randn(size(Mwk_1st));
Mwk_1st   = double(Mwk_1st) + noise0;
end
if SEL == 2
%旋转攻击
Mwk_1st   = double(imrotate(Mwk_1st,0.1,'bilinear','crop'));
end
if SEL == 3
%剪切攻击
Mwk_1st(501:800,501:800) = 255*rand(300,300);
end
if SEL == 4
%缩放攻击
Mwk_1st   = imresize(Mwk_1st,1/2);
Mwk_1st   = imresize(Mwk_1st,2);
end
if SEL == 5
%去除行列攻击
Mwk_1st(200,:) = 255*rand(1,1024);
Mwk_1st(:,400) = 255*rand(1024,1);
end
if SEL == 6
%模糊攻击
G = fspecial('gaussian', [5 5], 0.5);
Mwk_1st = imfilter(Mwk_1st,G,'same');
end
if SEL == 7
%增强攻击
Mwk_1st = double((1.2*Mwk_1st));
endMsg1      = func_wk_desert(Mwk_1st,Blksize,RR,CC,4);
%对水印进行逆置乱
Msg1s     = Arnold(uint8(255*Msg1),1,1); figure(2)
subplot(221);
imshow(I0,[]);
title('原始图像');
subplot(222);
imshow(Marks1,[]);
title('水印');
subplot(223);
imshow(Mwk_1st,[]);
title('加入攻击的图像');
subplot(224);
imshow(Msg1s,[]);
title('水印提取');%%
%水印提取,计算NC和PSNR
Marks1   = imresize(Marks1,[RR,CC]);
NC(indx) = func_nc(uint8(Marks1),uint8(Msg1s)); 
pause(1); 
endfigure;
plot(NC,'b-o');
grid on
xlabel('视频帧数');
ylabel('比特率');
axis([0,15,0.8*min(NC),1.1*max(NC)]);save R1.mat NC
011_005m

4.算法理论概述

水印嵌入原理

       LABS方法在这里不太明确,如果指的是色彩空间转换,可能是在嵌入或提取阶段将RGB图像转换至LAB色彩空间,因为LAB空间更适合人眼对颜色的感知,有利于隐藏水印而不易察觉。

水印提取原理:

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

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

如果“LABS方法”涉及某种特定的解码策略,则在此步骤中可能会进一步应用相应的色彩空间处理和解码算法,以确保正确无误地还原水印信息。

5.算法完整程序工程

OOOOO

OOO

O


http://www.ppmy.cn/embedded/11846.html

相关文章

4-19 算法思路总结

leetcode 98 验证二叉搜索树 利用递归算法,从上而下递归,遇到false直接返回无需递归到叶子节点,从上往下递归时,传递并改变两个参数,对于当前节点的最大值以及最小值,对于根节点来说,初始化的最…

信息打点--公众号服务

微信公众号 获取微信公众号的途径https://weixin.sogou.com/ 微信公众号没有第三方服务 Github监控 人员&域名&邮箱 eg:xxx.cn password in:file https://gitee.com/ https://github.com/ https://www.huzhan.com/ 资源搜索 in:name test 仓库标题搜索含有…

(5)步态识别论文研读——GaitDAN:基于对抗域适应的跨视角步态识别

GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation | IEEE Journals & Magazine | IEEE Xplore GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation 基于对抗与适应 摘要:视角变化导致步态外观存在显着差异。因…

不容忽视的听力“杀手”

音乐与短视频已成为现代生活的重要组成部分,许多人在繁忙的日常中依赖耳机来获得片刻的宁静或激情。然而,我们也需要警惕,不当的耳机使用可能对我们的听力造成风险。长时间以高音量使用耳机,无疑会对听力构成挑战。 *图片源于网络…

java反射

java反射机制是指在程序运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。 写了一个小demo: 这是fangdong类 package com…

C语言 实现带透明度的鼠标光标 .cur 编辑器

操作参考: .cur 鼠标光标编辑器-CSDN博客 增加了滑块修改透明度 有一个bug,就是取色在绘图板上取色时,取到的颜色的透明度是0,也就是说,同样的颜色,有的是透明出来的,有的就是本身的颜色。但…

接收区块链的CCF会议--ICSOC 2024 截止7.24

ICSOC是CCF B类会议(软件工程/系统软件/程序设计语言) 2023年长文短文录用率22% Focus Area 4: Emerging Technologies Quantum Service Computing Digital Twins 3D Printing/additive Manufacturing Techniques Blockchain Robotic Process Autom…

nextjs渲染篇

1 服务器组件 默认情况下,Next.js 使用服务器组件。 1.1 服务器组件是如何呈现的? 在服务器上,Next.js 使用 React 的 API 来编排渲染。渲染工作被拆分为多个块:按单个路段和Suspense 每个区块分两个步骤呈现: Re…

C++:vector的介绍

C的vector是一种可变长度的动态数组,被广泛用于C编程中。它是标准模板库(STL)中的容器之一,提供了比原始数组更灵活和方便的操作。 vector可以存储任意类型的元素,包括基本类型(如整数和浮点数&#xff09…

计算机java项目|springboot校园一卡通

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

离线缓存问题的最优解决方案——将来最远策略

离线缓存问题的最优解决方案——将来最远策略 a. 将来最远策略的缓存管理器伪代码及运行时间分析b. 离线缓存问题的最优子结构性质证明c. 将来最远策略的最优性证明及示例 在现代计算机系统中,缓存技术是提高数据处理速度的关键。通过将主存中的少量数据保存在容量小…

SQL表连接详解:JOIN与逗号(,)的使用及其性能影响

省流版 在这个详细的解释中,我们将深入探讨SQL中表连接的概念,特别是JOIN和逗号(,)在连接表时的不同用法及其对查询性能的影响。通过实际示例和背后的逻辑分析,我们将揭示在不同场景下选择哪种连接方式更为合适。 1.…

Android—— log的记忆

一、关键log 1.Java的 backtrace(堆栈log) 上述是一个空指针异常,问题出现在sgtc.settings,所以属于客户UI问题。 2.WindowManager(管理屏幕上的窗口和视图层次结构) 3.ActivityManager(管理应用程序生命周期和任务栈) 4.wifi操作 (1) 连接wifi&#…

90天玩转Python—18—Python面向对象编程:核心概念详解

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

golang实现获取切片的交集和差集

一.交集 1.两个切片的交集 采用map实现取两个切片的交集,其中如果map[key]访问成功,即有key这个键,ok为true,否则ok为false。,以string类型为例: //a 切片, b 切片 func intersect(a []string, b []string) []string {//初始化一…

WebStorm 2024.1.1 JavaScript集成开发环境 mac/win

JetBrains WebStorm是Jetrains拥有的一款JavaScript前端开发工具。被中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaSscript IDE”。与Int elliJ IDEA同源,继承了Int elliJ IDEA强大的JS功能。 主要功能包括智能代码补全、代码格式…

Spring是如何解决循环依赖的

简介 所谓循环依赖指的是:BeanA对象的创建依赖于BeanB,BeanB对象的创建也依赖于BeanA,这就造成了死循环,如果不做处理的话势必会造成栈溢出。Spring通过提前曝光机制,利用三级缓存解决循环依赖问题。 变量描述single…

【AI开发:音频】一、GPT-SoVITS整合工具包的部署问题解决(GPU版)

前言 目前GPT-SoVITS的合成效果比较不错,相比较其他厂商的产品要规整的多。众多厂家中也是国内使用最多的一款了,并且这个整合包里携带了,除背景音、切割、训练、微调、合成、低成本合成等一些列完整的工具,也可以作为API进行使用…

在IDEA运行spark程序(搭建Spark开发环境)

建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境,以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习,在window系统上可以不用安装hadoop和spark,spark程序可以通过pom.xml的文件配置,添加…

数据结构—单链表

含义 1.顺序表的回顾 之前的文章已经谈到了顺序表,关于顺序表,有一下的几种特点 1.中间,头部的删除,复杂度为O(N); 2.增容会有申请新的空间,拷贝数据,释放旧的空间,会有不小的消耗&#xff…