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

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

matlab2022a

3.部分核心程序

.............................................................
% 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.299*R + 0.587*G + 0.114*B;  
U   = -0.147*R - 0.289*G + 0.436*B;  
V   =  0.615*R - 0.515*G - 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.299*Rs + 0.587*Gs + 0.114*Bs;  
Us   = -0.147*Rs - 0.289*Gs + 0.436*Bs;  
Vs   =  0.615*Rs - 0.515*Gs - 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
endfigure;
plot(SNRS,mean(NC,2),'b-o');
xlabel('SNR');
ylabel('水印提取NC值');
011_006m

4.算法理论概述

水印嵌入原理

水印提取原理:

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

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

5.算法完整程序工程

OOOOO

OOO

O

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

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

相关文章

Visual Studio C++ 2019进行安装

Visual Studio C 2019进行下载安装 链接:https://my.visualstudio.com/Downloads?qvisual%20studio%202017&wt.mc_idomsftvscom~older-downloads

SwiGLU激活函数

SwiGLU激活函数已经成为LLM的标配了。它是GLU的变体,公式如下: SwiGLU ⁡ ( x , W , V , b , c , β ) Swish ⁡ β ( x W b ) ⊗ ( x V c ) \operatorname{SwiGLU}(x, W, V, b, c, \beta)\operatorname{Swish}_\beta(x Wb) \otimes(x Vc) SwiGLU(x,…

开源免费的发票识别OCR应用:Invoice

Invoice:轻松识别,发票电子化扫描烦恼消- 精选真开源,释放新价值。 概览 Invoice 是github社区上一个采用开源许可协议发布的增值税发票光学字符识别(OCR)解决方案项目。该项目不仅集成了预训练的高级模型&#xff0c…

Python | Leetcode Python题解之第78题子集

题目: 题解: class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:self.res []self.backtrack([], 0, nums)return self.resdef backtrack(self, sol, index, nums):self.res.append(sol)for i in range(index, len(nums)):self…

Jenkins +git +web(vue) centos8.5 实战打包部署 运维系列二

1新建一个工程 #cat qy.sh #!/bin/bash cd /data/.jenkins/workspace/web rm -rf dist/ rm -rf qysupweb.tar.gz npm run build tar -czvf qysupweb.tar.gz dist/ #点击构建

基于控制工程的牛鞭效应simulink建模与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 牛鞭效应”对供应链性能和绩效产生了严重的影响。基于控制理论建立了多级线性供应链的模型,分别利用噪声带宽和Matlab/Simulink对一个可扩…

平航杯复现

简单介绍及前期操作 esxi镜像挂载是一个新的创新点 就根据官方的wp进行挂载就可以了,后面差不多常规的服务器取证操作,然后服务器和计算机,u盘取证都有点联系,还是需要队友配合好一点 配置网段我的建议是把本机的配置改一下&am…

box-decoration-break 使用介绍

box-decoration-break属性的使用 一、定义 box-decoration-break是CSS片段模块(CSS Fragmentation Module Level 3)中的一个属性,主要用于指定背景(background)、内边距(padding)、边框&#…

低代码在物品领用领域数字化转型的案例分析

办公用品管理数字化不仅代表了企业管理模式的革新,更是提升运营效率和成本控制的关键举措。通过数字化手段,企业能够实现采购、库存、领用等流程的自动化和智能化管理,大幅减少人工操作,提高处理速度,确保数据的准确性…

ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

如何使用Python下载哔哩哔哩(Bilibili)视频字幕

在本文中,我将向大家展示如何使用Python下载哔哩哔哩(Bilibili)视频的字幕。通过这个方法,你可以轻松地获取你喜欢的视频的字幕文件,方便学习和交流。 准备工作 在开始之前,我们需要安装一些必要的库&…

熟悉Redis吗,那Redis的过期键删除策略是什么

对于Redis,我们业务开发一般都只关心Redis键值对的查询、修改操作,可能因为懒或者只想能用就行,呵呵。很少关心键值对存储在什么地方、键值对过期了会怎么样、Redis有没什么策略处理过期的键、Redis处理过期键又有什么作用?但这些…

固定资产管理系统参考论文(论文 + 源码)

【免费】固定资产管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282536 固定资产管理系统 摘 要 随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求,利用计算机实现设备及资产的信息化管理已经显得非常重要。 固…

LeetCode例题讲解:快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…

System Verilog通过CORDIC算法迭代16次求sin和cos值

求5~85度的sin和cos值 其它角度和Verilog实现代码类似,查表、移位和加法器 define DIE 16 //迭代次数 define PIE 3.1415926 define MUL 100_000_000 //同比放大 initial begin int die; int x[17]; int y[17]; int z[17…

Isaac Sim 3(学习笔记5.8)

Isaac Sim 利用深度学习获取mask掩码图 参考内容 Kubernetes官网 在 Linux 系统中安装并设置 kubectl | Kubernetes准备开始 kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.30 版本的客户端能与 v1.29、 v1.30 和 v1.31 版本的控制面通信。 用…

NodeMCU ESP8266 操作 SSD1306 OLED显示屏详解(图文并茂)

文章目录 1 模块介绍2 接线介绍3 安装SSD1306驱动库4 源码分析4.1 硬件兼容性4.2 可能存在的问题总结1 模块介绍 我们将在本教程中使用的OLED显示屏是SSD1306型号:单色0.96英寸显示屏,像素为12864,如下图所示。 OLED显示屏不需要背光,这在黑暗环境中会产生非常好的对比度。…

三轴加速度计LIS2DUX12开发(3)----计步器

三轴加速度计LIS2DUX12开发.3--轮询获取加速度数据 计步器硬件准备视频教学样品申请源码下载步数检测说明通信模式管脚定义IIC通信模式速率生成STM32CUBEMXIIC配置INT配置串口配置CS和SA0设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置设置传感器的量程启用步数计和嵌…

矩阵:一个用于大型语言模型的贝氏学习模型

在本文中,作者介绍了一个贝氏学习模型来理解大型语言模型(LLM)的行为。他们探讨了基于预测下一个token的LLM优化指标,并开发了一个以此原理为基础的新颖模型。他们的方法涉及构建一个理想的生成文本模型,该模型由具有先…

能否直接上手 Qt ?——看完 C++ 课本后怎么做?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!如果你已经阅读了 C 课本,但仍然感到…