基于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.rhkb.cn/news/288454.html

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

相关文章

【数字图像处理matlab系列】数组索引

【数字图像处理matlab系列】数组索引 【先赞后看养成习惯】【求点赞+关注+收藏】 MATLAB 支持大量功能强大的索引方案,这些索引方案不仅简化了数组操作,而且提高了程序的运行效率。 1. 向量索引 维数为1xN的数组称为行向量。行向量中元素的存取是使用一维索引进行的。因此…

智慧楼宇解决方案-提高楼宇整体效率

智慧楼宇借助云计算、物联网、大数据、人工智能和移动互联网等尖端技术和管理模式,打破传统的信息壁垒。智慧楼宇提供了更高效、舒适和便利的管理服务,今天古河云科技小编就来说一说智慧楼宇解决方案。 智慧楼宇的建设需要将园内基础设施层、数据平台层…

Matlab基础入门

基础操作: matlab命令行操作: matlab可以使用命令行执行程序,例如下图运行后在右边工作区会产生响应的变量,如不写分号,则会直接运行。 clear命令:clear用于清除变量。clc命令:clc用于清屏。 m…

HarmonyOS 应用开发案例

本帖下方集中了HarmonyOS Next应用开发时,会遇到的常见应用案例。后续会持续更新大量案例,帮助开发者快速学习。欢迎感兴趣的同学加入Q:454901491 72.手写绘制及保存图片案例(0319更新)(点此查看源码实现&…

Partisia Blockchain:真正做到兼顾隐私、高性能和可拓展的公链

目前,包括 Secret Network、Oasis Protocol 等在内的绝大多数以隐私为特性的可编程公链,在兼顾隐私的同时,在可拓展以及性能上或多或少的有所牺牲,即难以对诸多实际应用场景进行支撑。这归咎于链的设计以及共识机制的不合理&#…

netty构建udp服务器以及发送报文到客户端客户端详细案例

目录 一、基于netty创建udp服务端以及对应通道设置关键 二、发送数据 三、netty中的ChannelOption常用参数说明 1、ChannelOption.SO_BACKLOG 2、ChannelOption.SO_REUSEADDR 3、ChannelOption.SO_KEEPALIVE 4、ChannelOption.SO_SNDBUF和ChannelOption.SO_RCVBUF 5、Ch…

vite+vue3动态模块化导入并使用pinia

一、安装引入pinia 1.安装 pnpm install pinia # 或者使用 yarn yarn add pinia # 或者使用 npm npm install pinia 2.在main.js里引入 import { createApp } from vue import App from ./App.vue import { createPinia } from pinia createApp(App).use(createPinia()).mo…

java特殊文件——properties属性文件概述

前言: 整理下学习笔记,打好基础,daydayup!! properties properties是一个Map集合(键值对合集),但是一般不当作合集。而是用来代表属性文件,通过Properties读写属性文件里的内容 Properties调用方…

数据库学习(四)mybatis

Mybatis Mybatis是一个基于数据持久层(DAO层)的一款框架,他能极大的简化Java中连接数据库,操作数据库也就是jdbc的操作。 在定义mybatis相关接口时,不需要定义实现类,因为在程序启动时,mybati…

程序员如何兼职赚小钱?

程序员由于有技术和手艺其实兼职赚钱的路子还是挺多的,只要你有足够的时间。 1. 做外包 这是比较传统的方式,甲方在一些众包平台上发布开发任务,你可以抢这个任务,但是价格都比较便宜。 任务比较多的平台: 猪八戒、一品威客、开…

聚合支付备案新增机构名单公布,14家机构成功备案

孟凡富 3月27日,中国支付清算协会公布了最新一批收单外包服务机构备案机构结果,总备案机构为27000家,新增备案机构为648家,其中,新增聚合支付技术服务备案机构包括北京鑫杰华誉、深圳中峻、多点(深圳)数字科技、扬州泽…

Amazon SageMaker + Stable Diffusion 搭建文本生成图像模型

如果我们的计算机视觉系统要真正理解视觉世界,它们不仅必须能够识别图像,而且必须能够生成图像。文本到图像的 AI 模型仅根据简单的文字输入就可以生成图像。 近两年,以ChatGPT为代表的AIGC技术崭露头角,逐渐从学术研究的象牙塔迈…

静态、动态代理模式(Spring学习笔记八)

代理模式是SpringAOC的底层 代理模式分为:静态代理模式 动态代理模式 1、静态代理 代码步骤 接口: package com.li.dedmo01;public interface Rent {public void rent(); }真实角色: package com.li.dedmo01;public class Host imple…

没有与参数列表匹配的构造函数“cv::VideoWriter::VideoWriter”实例

今天在使用Visual Studio开发与OpenCV相关的程序时,遇到了这样的情况: 第一个参数的下方被打上了红波浪线,我本能的觉得是第一个参数出的问题,于是改成了这样: 红线依然存在,没有消失,把鼠标放在红线下方&#xff0c…

AI Agent(LLM Agent)入门解读

1. 什么是AI Agent? AI Agent可以理解为一个智能体,包括感知模块、规划决策模块和行动模块,类似于人类的五官、大脑和肢体。它能帮助人类处理复杂的任务,并能根据环境反馈进行学习和调整。 五官可以理解为感知模块,大…

Linux相关命令(1)

1、找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件,然后把他们重新生成一下。要求只能用一行命令。 find ./ -type f -name "*aaa*" ! -name "*bbb*" -exec touch {} \;文件系统操作命令 df:列出文件系统的整体磁盘使用情况 …

已注册的商标别忘了续展,新注可能难下证!

近期普推知产老杨遇到好几个网友和看过多个案例,以前商标名称可以申请注册下来,但是换字体注册不下来了,有的是不想续展想直接换字体申请注册,但是也没有下来。 这些商标名称主要是存在禁止注册或缺显,比如“柳林”以前…

LeetCode讲解算法2-数据结构[栈和队列](Python版)

文章目录 一、栈1.1 栈的定义1.2 栈的实现分析步骤1.3 栈的应用匹配圆括号匹配符号模2除法(十进制转二进制)进制转换 二、队列2.1 单向队列2.2 双端队列2.3 队列的应用验证回文串滑动窗口最大值 一、栈 1.1 栈的定义 栈是一种线性数据结构,栈…

【MySQL】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

【那些年错过的好书】——Web前端开发实战:HTML5+CSS3+JavaScript+Vue+Bootstrap(微视频版)

喜欢前端的同学,可以私信我加入学习群。 点击链接,获取资源: https://lizetoolbox.top:8080/qrCode_contact 或者 http://lizetoolbox.top/qrCode_contact 正文开始 前言推荐理由书籍介绍章节介绍实书示例写在最后 前言 陌生的朋友&…