基于DWT(离散小波变换)的图像水印算法,Matlab实现

        博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188

        个人主页:Matlab_ImagePro-CSDN博客

        原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        本次分享的是基于DWT(离散小波变换)的图像水印算法,用matlab实现。(有疑问或者想交流细节的QQ:3249726188

        一、案例背景介绍

        数字水印技术就是信息隐藏技术的一种,其方法是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到,通过这样来达到保护和鉴别数字作品的目的。数字水印技术除了有信息隐藏技术的一般性特点外,还拥有固定的特点和研究方法,由于其可靠的安全性,隐蔽性,同时可以在原始数据中一次性植入大量的水印信息,因此,数字水印技术已经成为当今信息安全领域最炙手可热的一种技术之一,在学术界和业界引起了广泛的关注,在其研究领域也取得了越来越多的成果。

        水印总的来说可以分类两类:时/空域水印算法和变换域水印算法。时/空域水印算法是通过改变载体图像的某些像素的灰度来嵌入水印信息的,而变换域水印算法是通过改变变换域系数来嵌入水印信息的。在早期的时候,人们的研究基本上是基于时/空域的,早期的水印算法相对较简单,实用性较强,但是鲁棒性较差。最低有效位水印算法和双集法等都是时/空域最典型的算法。

        时/空域水印算法在容量和鲁棒性等方面比不上变换域水印算法,但是它的复杂度较低,实用性较强,并且具有对攻击的时间和空间位置的定位能力,所以适合设计半脆弱水印算法和脆弱水印算法。最低有效位法(LSB)和双集法师空域中两种很典型的数字水印算法。

        1974,J.Morlet提出了小波变换的概念。对小波变换的研究发展到现在,小波变换已经是图像压缩标准的一个主要技术,已经成为了研究的重点和热点。同样的基于小波域的数字水印研究也是近年来数字水印技术算法研究的一个热点领域。小波变换是在时频的联合域上对信号进行分析,而不是仅仅停留在时域或者频域上进行单一的分析,所以时频局域化使得小波变换在信号分析中有很大优势。

        在图像上来说,人类视觉系统特性主要有以下三个方面的表现:亮度特性,频域特性和图像类特性。人眼对亮度变化的敏感性称为亮度特性,这是人类视觉系统特性中最基本的一种。人类视觉系统特性表明了人眼对高频的内容变化的敏感性较低,这就意味着图像的背景亮度越高,可以嵌入的附加信息就越多。同理,人眼对低频部分的变换较为敏感,所以在低频部分嵌入的信息就较少。人眼对不同的颜色同样有不同的敏感性。一幅彩色图像,每一个像素都可以分为R,G,B三种基色,根据人眼的敏感性不同,在嵌入水印的时候,会对不同颜色的嵌入量进行调整,R:G:B的比例一般选取为2:1:4。

        这次我们分享的算法,就是基于人类视觉系统的DWT数字水印算法。

        二、算法原理流程

        由小波分解可知,对图像每进行一次小波分解,图像就会被分成四个部分,分别是低频,水平细节,垂直细节和高频部分。然后继续对低频部分进行第二次分解,同样可以得到四个部分,以此类推。经过小波分解之后,因为低频部分与原图有较大的相似性,所以低频部分的鲁棒性会较好。把水印和载体图像都进行小波分解,分别成为3个基色分量,CR,CG,CB和WR,WG,WB,然后将水印的三基色系数分别对应嵌入到载体图像的三基色系数中,嵌入公式为:

CR(G,B)A2(I,j)= CR(G,B)A2(I,j)+r(g,b)*WR(G,B)A1(I,j)

CR(G,B)H1(I,j)= CR(G,B) H1 (I,j)+r(g,b)*WR(G,B) H1(I,j)

CR(G,B)V1(I,j)= CR(G,B) V1 (I,j)+r(g,b)*WR(G,B) V1(I,j)

CR(G,B)D1(I,j)= CR(G,B) D1 (I,j)+r(g,b)*WR(G,B) D1(I,j)

        其中,CR(G,B)A2(I,j)表示载体图像在嵌入水印前红色(绿,蓝)的分量经过两次小波分解后坐标域(I,j)对应的小波系数,WR(G,B)A1(I,j)表示水印图像红色(绿,蓝)经过一次小波分解之后坐标域(I,j)对应的小波系数,r(g,b)为三基色中红色的加权系数,且满足r:g:b=2:1:4的关系。

        水印的嵌入步骤大概可以分为以下的几步:

        (1)载入二值原始载体彩色图像和水印图像,并且将两个图像都分解为三个基色分量。

        (2)把两个图像都进行相应次数的小波分解(本文的方法为对原始图像分解两次,水印图像分解一次)。

        (3)根据Lewis和Knowles所提出的JND模型可知,当嵌入深度小于误差阈值的一半时,水印是不可感知的,DWT域系数量化后可嵌入的最大深度为:

ωθ(i,j)= (I,j)

        (4)把分解之后的水印图像像素点以此嵌入到载体图像中,嵌入公式为

I’θi(I,j)=Iθi(i,j)+αωθ(i,j)ωi

        I’θi(I,j)是小波变换系数,ωi是灰度水印序列,而ωθ(i,j)则是根据人类视觉系统掩蔽特性所计算出来的权值因子函数。α是拉伸因子,控制水印强度,它的值越大,鲁棒性就越好,但是透明性就越差,但是它的值越小,鲁棒性就越差,透明性就越好。

        (5)重复以上的步骤,就可以得到嵌入水印后的系数,然后对嵌入水印后的系数进行小波反变换就可以得到水印图像了。

        而水印的提取就像是水印嵌入的逆过程。其步骤也可以大概分为以下的几步:

        (1)载入原始图像和水印图像,把两个图像都分解为三个基色分量。

        (2)把两个图像分别进行相应次数的小波逆变换。

        (3)重构水印图像。

ωi=(I’θi(I,j)­- Iθi(i,j)) αωθ(i,j)

        三、Matlab实现效果

        嵌入部分:

       嵌入后的图直接提取水印的效果:

       嵌入后的图像经过jpeg压缩攻击后,提取到水印的效果图:

        

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

专注、专一于Matlab图像处理学习、交流、代做

QQ:3249726188

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

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

相关文章

商标跨类异议与跨类保护!

有个朋友对普推知产老杨说收到某邮件,名下商标让某公司抢注了现在公告期,让赶紧提出来异议去处理下,怎么会有这样的事,相同的名称基本上在同类别相关产品是无法公告和获得初审的。 经详细检索分析后,发现不是这样一回…

easyx查找算法可视化--顺序查找/二分查找/分块查找

💂 个人主页:pp不会算法^ v ^ 🤟 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 概述演示源码获取 概述 #顺序存储的顺序查找 √ #链式存…

python 中判断文件、目录是否存在的方法

判断目录是否存在并创建目录 一、实现上传文件功能二、判断目录是否存在的办法2.1、使用os模块2.1.1、判断目录是否存在2.1.2、os.makedirs():递归创建目录 2.2、使用pathlib模块2.2.1、path.exist()判断目录是否存在2.2.1、path.mkdir():创建目录 2.3、…

Unity3d C#转换微信小游戏 Dotween插件在苹果(IOS)设备中异常问题高性能模式修复

问题 使用minigame-unity-webgl-transform插件转换微信小游戏,功能在安卓和开发工具上都能正常,不过使用Dotween(版本DOTweenPro v1.0.244)插件实现的功能在苹果系统中却都不能正常对比如下: 云移动正常: 云移动IOS异常&#x…

3-iperf3 使用什么工具可以检测网络带宽、延迟和数据包丢失率等网络性能参数呢?

(1)iperf3简介 1.iperf3简介 2.用途(特点) 3.下载iperf3地址 (2)实战 1.iperf3参数 (1)通用参数(客户端和服务器端都是适用的) (2)客户端参数 实验1&…

题目:合唱队形(蓝桥OJ 0724)

问题描述: 解题思路: LIS的拓展,枚举i,以i位置为最长上升子序列的终点、最长下降子序列的起点。将上升与下降的值相加得以i位置为最高点得队形总人数。最后比较每个i位置(1~n)总人数的大小得最大队形总人数…

企业产品网络安全建设日志3月20

今天主要以下几个事情 确定了OCI当前情况下,更新某安全配置会导致链接中断 这问题说大不大,说小不小。 由此引申出各云服务器产品的完善度: AWS>OCI>其他 国内一些安全公司提供的WAF功能,缺点在于其全球的…

【Vue.js 3.0】递归组件实现思路

简介 在 <script setup></script> 语法糖中&#xff0c;你不需要显式地注册组件名&#xff0c;Vue 会自动根据组件文件的文件名来推断组件名。当你在模板中使用 <RecursiveComponent> 标签时&#xff0c;Vue 会查找与当前组件文件相对应的组件定义。 3.这意味…

【前端学习——js篇】11.元素可见区域

具体见&#xff1a;https://github.com/febobo/web-interview 11.元素可见区域 ①offsetTop、scrollTop offsetTop&#xff0c;元素的上外边框至包含元素的上内边框之间的像素距离&#xff0c;其他offset属性如下图所示&#xff1a; 下面再来了解下clientWidth、clientHeight…

基于单片机防丢失设备的设计和实践

摘要:防止老人或者小孩走丢走失,还可以放在汽车里,利用GPS系统,设计实现了基于单片机的防丢失设备。设备利用液晶显示屏显示信息,并实时发送位置短信到手机传输当前位置的纬度和经度坐标,实现了定位与监测功能。测试结果表明,利用该设备和手机可以同时观察老人或小孩携带…

学点儿数据库_Day11_多表、等值连接、内连接、模糊查找

1 多表 学生表、班级表、课程表、班级课程表 关系型数据库&#xff1a; MySql、SqlServer、Oracle 相同的数据出现多次绝不是一件好事&#xff0c;这是关系数据库设计的基础。关系表的设计就是要把信息分解成多个表&#xff0c;一个数据一个表&#xff0c;各表通过某些共同的…

three.js扩展库--物理引擎CannonJS / CannonES

物理引擎概念解释 所谓物理引擎,就是通过代码模拟物理世界。举个简单例子,比如你初高中都学过物理学,其中力、速度、加速度、位移都是比较常见的物理量,咱们通过CannonJS等物理引擎,都可以辅助你计算生活中物体的速度、位移,比如计算一个小球在地球重力的作用下,下落的…

最新版puppeteer 在linux下的安装教程

最新版的 puppeteer 在安装的时候&#xff0c;Chromium不会自动下载&#xff0c;导致安装失败 这个时候需要跳过Chromium的安装&#xff0c;然后手动下载Chromium并安装。 1、先设置npm跳过Chromium下载 export PUPPETEER_SKIP_DOWNLOADtrue 2、安装puppeteer npm i pup…

iOS_convert point or rect 坐标和布局转换+判断

文章目录 1. 坐标转换2. 布局转换3. 包含、相交 如&#xff1a;有3个色块 let view1 UIView(frame: CGRect(x: 100.0, y: 100.0, width: 300.0, height: 300.0)) view1.backgroundColor UIColor.cyan self.view.addSubview(view1)let view2 UIView(frame: CGRect(x: 50.0, …

阿里云服务器优惠价格61元一年,多配置报价,来看看

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

芒果YOLOv7改进88:上采样篇,即插即用,上采样CARAFE:顶会ICCV出品,轻量级通用上采样算子,只引入很少的参数量和计算代价

该专栏完整目录链接: 芒果YOLOv7深度改进教程 芒果专栏 基于 CARAFE 的改进结构,改进源码教程 | 详情如下🥇 👉1. CARAFE 结构 💡本博客 改进源代码改进 适用于 YOLOv7 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件改进后的…

【MD】激光驱动原子动力学的全尺寸从头算模拟

Zeng Q, Chen B, Zhang S, et al. Full-scale ab initio simulations of laser-driven atomistic dynamics[J]. npj Computational Materials, 2023, 9(1): 213.核心研究内容&#xff1a; 本文研究了激光驱动的原子动力学的全尺度从头算模拟。研究的重点是探讨在极端条件下材料…

maya导入导出bvh 自动 脚本

目录 maya打开脚本编辑器 运行打开bvh脚本 maya导出bvh脚本 maya打开脚本编辑器 打开Maya软件,点击右下角 “脚本编辑器” 运行打开bvh脚本<

数据结构:堆和二叉树遍历

堆的特征 1.堆是一个完全二叉树 2.堆分为大堆和小堆。大堆&#xff1a;左右节点都小于根节点 小堆&#xff1a;左右节点都大于根节点 堆的应用&#xff1a;堆排序&#xff0c;topk问题 堆排序 堆排序的思路&#xff1a; 1.升序排序&#xff0c;建小堆。堆顶就是这个堆最小…