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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nodejs+vue高校师资管理系统python-flask-django-php

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

nginx: [emerg] stream directive is duplicate in /etc/nginx/nginx.conf:56

背景: 在维护paas平台的时候发现一个web前端容器服务运行报错,提示如下: 问题分析: 根据日志的内容,发现是nginx.conf配置文件的stream模块配置存在问题导致的。需要查看一下nginx.conf配置文件的内容: 注…

Soybean Admin:基于 Vue3、Vite3、TypeScript、NaiveUI、Pinia 和 UnoCSS 的清新优雅的中后台模版

一、引言 随着互联网技术的快速发展,前端开发领域也在不断演进。Soybean Admin 作为一个基于最新前端技术栈的中后台模版,为开发者提供了一个高效、规范、灵活的解决方案。本文将深入探讨 Soybean Admin 的技术特性及其在中后台前端开发中的优势。 二、…

android h5理财(记账)管理系统eclipse开发mysql数据库编程服务端java计算机程序设计

一、源码特点 android h5理财管理系统是一套完善的WEBandroid设计系统,对理解JSP java,安卓app编程开发语言有帮助(系统采用web服务端APP端 综合模式进行设计开发),系统具有完整的源代码和数据库,系统主要…

从零开始的 dbt 入门教程 (dbt cloud 自动化篇)

一、引 在前面的几篇文章中,我们从 dbt core 聊到了 dbt 项目工程化,我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发,那么到现在我们更迫切需要解决的是如何让数据更新做到定时化,毕竟作为开发我们肯定没有经历每天定…

基于springboot实现在线拍卖系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现在线拍卖系统演示 摘要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍…

[热门]通义灵码做活动,送挺多礼品,快来薅羊毛!!!

你的编辑器装上智能ai编辑了吗,的确挺好用的。 最近阿里云AI编码搞活动,可以免费体验并且还可以抽盲盒。有日历、马克杯、代金券、等等其他数码产品。 大多数都是日历。 点击链接参与「通义灵码 体验 AI 编码,开 AI 盲盒」 https://develope…

PCI产业概述和产业发展动态分享

atsec白海蔚 2024年3月底 关键词:支付卡产业、PCI DSS、数据安全、支付交易 本文为atsec和作者技术共享类文章,旨在共同探讨信息安全的相关话题。转载请注明:atsec和作者名称。 *如有兴趣了解早期产业信息请参见作者于2021年4月发布信息&a…

液晶显示解决方案T-CON面板显示驱动PMIC芯片

随着数智时代的到来,高清电影、游戏、VR/AR、车载等对多屏、大尺寸、更清晰显示设备的需求越来越高;特别是在智能手机、平板电脑、电视、广告展示和显示器等消费电子产品领域;高效、稳定、多功能的电源管理芯片变得至关重要。 对于LCD TV显示…

Linux-安装redis

安装指令 sudo apt-get install redis-server 启动服务 sudo systemctl start redis 查找redis路径 find / -name "filename" linux redis修改密码 sudo nano /etc/redis/redis.conf 找到 "requirepass" 这一行,取消注释并设置新的密码&…

算法练习-常用查找算法复现

一个不知名大学生,江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion:2024.03.24 Last edited: 2024.03.24 目录 算法练习-常用查找算法复现 第1关:顺序查找(算法7.1和7.2) 任务…

第二十章 TypeScript(webpack构建ts+vue3项目)

构建项目目录 src-- main.ts-- App.vue--shim.d.tswebpack.config.jsindex.htmlpackage.jsontsconfig.json 基础构建 npm install webpack -D npm install webpack-dev-server -D npm install webpack-cli -D package.json 添加打包命令和 启动服务的命令 {"scripts…

使用PySimpleGUI库打造一款轻量级计算器

目录 一、PySimpleGUI简介 二、安装PySimpleGUI 三、创建计算器界面 四、实现计算器的功能 五、总结 在Python的世界中,GUI(图形用户界面)库的选择多种多样,但如果你是一个新手,或者想要快速且简单地创建一个G…

谷粒商城——Redisson看门狗

可重入锁: 看门狗机制:(lock.lock()不设置过期时间就会自动触发 看门狗机制) 如果一个线程已经上锁后,在运行的过程中中断导致未释放锁从而导致其他线程无法进行,为此需要为每个锁设置自动过期时间。但是如果线程运行时间较长&am…

网线相关(T568A和T568B定义,交叉线连接方式,8芯网线1分2)

T568B 1 2 3 4 5 6 7 8 白橙 橙 白绿 蓝 白蓝 绿 白棕 棕 T568A 1 2 3 4 5 6 …

智慧园区整体解决方案

智慧园区整体解决方案-综合运营管理系统 1. 园区现状与发展机遇 2. 智慧园区愿景 3. 智慧解决方案架构 4. 智慧园区各子系统介绍 5. 智慧园区建设意义 楼宇管理,物业管理,消防管理,巡检管理,门禁管理,停车管理等综合实…

Linux命令dmesg详解和实例: 显示或控制内核环形缓冲区的内容,查看或操作内核消息

目录 一、命令介绍 二、 基本用法 1、语法结构 2、选项 3、支持的日志设施: 4、支持的日志级别(优先级): 四、基本用法 1. 查看内核消息: 2. 实时查看内核消息: 3. 清空内核消息: 五、 高级用法 1. 过滤消…

005、Dynamo与Revit API之间的转换

今天来聊聊 Dynamo 与 Revit 之间图元转换的基础知识,这些需要你牢牢记住哦,不然在 Python script 中写代码,经常会报错的~ 通常来讲,所有来自 Dynamo 节点的几何图形都不是 Revit 的几何对象,所以它们需要与 Revit AP…

网盘——数据库操作

关于网盘的数据库模块,主要有以下几个内容:定义数据库操作类、将数据库操作类定义成单例模式、数据库操作 数据库是在Qt里面,定义成操作类,专门用这个类产生对象,对数据库实现操作,那么我们在产生对象的时…

2016年认证杯SPSSPRO杯数学建模D题(第二阶段)NBA是否有必要设立四分线全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 D题 NBA是否有必要设立四分线 原题再现: NBA 联盟从 1946 年成立到今天,一路上经历过无数次规则上的变迁。有顺应民意、皆大欢喜的,比如 1973 年在技术统计中增加了抢断和盖帽数据;有应运而生、力…