当前位置: 首页 > news >正文

基于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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 低功耗、低成本 NAS 的可能性
  • Navicat 干货 | 探索 PostgreSQL 的外部数据包装器和统计函数
  • 江协STM32:点亮第一个LED灯和流水灯
  • AQS源码分析
  • vc_red.msi 错误
  • 3.1 SQL概述
  • c++红黑树
  • 混合云构建-使用 Azure ExpressRoute 建立从本地到 Azure 虚拟网络的专用连接
  • 记录一次Vcenter跨VDS网络迁移
  • TCP重传机制详解——02SACK
  • Python编程基础 001 开篇:为什么要学习编程
  • leetcode代码记录(平衡二叉树
  • 由浅到深认识Java语言(11):封装
  • stable diffusion 提示词进阶语法-年龄身材肤色-学习小结
  • C++类模板详解
  • ES6指北【2】—— 箭头函数
  • 2017年终总结、随想
  • Android框架之Volley
  • css选择器
  • download使用浅析
  • ESLint简单操作
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript 基本功--面试宝典
  • Linux快速复制或删除大量小文件
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Python语法速览与机器学习开发环境搭建
  • React-生命周期杂记
  • SQLServer之创建显式事务
  • 技术:超级实用的电脑小技巧
  • 简单实现一个textarea自适应高度
  • 网络应用优化——时延与带宽
  • 【云吞铺子】性能抖动剖析(二)
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • #每天一道面试题# 什么是MySQL的回表查询
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (六)c52学习之旅-独立按键
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转) 深度模型优化性能 调参
  • (转)fock函数详解
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .config、Kconfig、***_defconfig之间的关系和工作原理
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net Core中Quartz的使用方法
  • .net Signalr 使用笔记
  • .NET 设计模式初探
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc