数字图像处理-数字水印的嵌入与提取

2023-11-13

数字水印嵌入与提取

//本篇报告所有内容已上传csdn我的资源中(包括源码与报告word和ppt),欢迎大家下载进行进一步修改研究。

摘要:本报告重点介绍数字水印的嵌入与提取算法。数字水印根据水印的嵌入技术不同分为空间域数字水印和变换域数字水印。本报告将分别介绍数字水印的空间域算法和变换域算法,并结合图像质量评价参数峰值信噪比(PSNR)分析这两种算法的优缺点。

1. 引言

       随着互联网的普及和数字技术的广泛应用,数字产品变得极大丰富并且传播便捷,同时版权保护问题也日益突出。传统的信息安全技术在数字产品版权保护方面存在的不足,促成了数字水印技术的发展。数字水印技术将数字水印隐藏于数字媒体中,以便在版权纠纷中为版权所有者提供版权证明。数字水印根据水印的嵌入技术不同分为空间域数字水印和变换域数字水印。空间域算法包含叠加法和最低有效位(LSB)图像水印法等,变换域算法包含小波变换法等。实验部分使用Matlab软件进行,并分别用这三种方法对图像数字水印进行嵌入与提取。最后在相同的水印信号条件下,结合这三种方法所产生的含水印图像的峰值信噪比,分析了这三种方法的优缺点。

2. 数字图像水印算法

       数字水印技术是一种基于内容的、非密码机制的计算机信息隐藏技术。它可以将一些标识信息直接嵌入数字载体当中,且不影响原载体的使用价值,也不容易被探知和再次修改,从而实现保护版权、信息隐藏的功能。数字水印按照特性可以分为鲁棒数字水印和脆弱数字水印。本部分重点研究脆弱数字水印的应用,同时分别分析三种水印算法的机理和效果。

2.1 数字图像水印算法的基本框架

       如图一所示的是水印嵌入与提取流程图,根据密钥和水印产生算法生成水印信号,通过水印嵌入算法,将水印信号和原始图像进行结合, 得到嵌入了水印的作品。然后,在水印信号提取过程中,可以在相同的密钥下,通过水印产生算法恢复出水印信号。需要注意的是,特定的密钥对水印的嵌入和提取至关重要。

图1

图一:水印嵌入与提取流程图

2.2 叠加法

        叠加法通过对原始图像灰度值进行处理,将其按照某个权重叠加上水印图像灰度值即可得到加入水印的图像。同理,若想恢复出水印图像,可以直接将加入水印的图像减去原始图像。实验结果如图二所示。
在这里插入图片描述

图二:叠加法效果图

     在Matlab中对图像灰度值进行处理要先将图像变换成double类型,然后再进行简单叠加操作。代码如下所示:

imNew=uint8(double(imOri)+0.01*double(imWat)) ;%水印图像灰度权重设为0.01

2.3 最低有效位(LSB)图像水印法

          最低有效位算法是一种典型的空间域信息隐藏算法。对于一张8位灰度图像,它的灰度数值可以表示为0到255,那么可以将其分割为从低到高的8位比特平面。因为高位比特平面所占的灰度权重较高,由此可以直接将水印信号的高位比特平面替换原始图像的低位比特平面,从而达到水印嵌入的效果。对于水印提取的过程可以根据加入水印图像的低位比特平面直接进行恢复提取。
         将lena图像的第六位到第八位比特平面特换掉cameraman图像比特平面的第一位到第三位,同时保留cameraman图像原本的高位比特平面。实验结果如图三所示。
在这里插入图片描述

图三:最低有效位算法效果图

        由于低位比特平面所占像素权重不高,所以加入水印的图像不仅效果较好,而且可以很好地隐藏信息。通过代码可以实现低位比特平面恢复水印图像,代码如下,结果如图三所示。

newimgW=newimgW+bitPlaneRec(:,:,i)*2^(4+i); %低位比特平面转移到高位比特平面

在这里插入图片描述

图四:低位比特平面水印复原图像

2.4小波变换法

        小波变换是空间时间和频率的局部变换,能有效地从信号中提取信息,通过伸缩和平移等运算功能可对函数或信号进行多尺度的细化分析,达到高频处时间细分和低频处频率细分。一般来说,在数字图像处理中使用的是离散小波变换对图像进行处理,图像被变换成低频域(代表图像的概貌)和高频域(代表图像的细节)两部分,并且高频部分可以分为代表图像水平方向分量的HL,代表图像垂直方向分量LH,以及代表图像对角线方向分量的HH三部分区域。低频系数代表它所在的小波块对应的图像块的平均亮度,高频系数代表图像的纹理和边缘部分。如果对低频区域再进一步进行小波变换,则低频域将按照上述原则递归生成更高一级的低频和高频区域。如图四为图像进行三级分解的结构示意图。
在这里插入图片描述

图五:三级小波分解结构图与示例图

        图像经过小波变换后生成的小波图像的数据总量与原图像的数据总量相等, 通过将原始图像和水印信号的小波变换低频系数相加,最终可以得到新的小波域系数,再经过一次小波反变换最终可以获得嵌入水印的图像。水印恢复可以表示为水印信号减去原始信号。图五为小波变换法效果图。
核心代码如下所示:

imNew =uint8(ihaart2(LLwatermarked,LHorig,HLorig,HHorig)); %添加水印图像
imagesc(double(imNew)-double(imOri));%恢复水印

在这里插入图片描述

图六:小波变换法效果图

3. 水印图像质量评价与分析

图像质量评价通常从两个方面进行,分别是主观评价和客观评价,客观评价通常借由一些特定的指标进行,如PSNR(峰值信噪比)和SSIM(结构相似性)。本部分结合图像质量评价参数峰值信噪比(PSNR)分析前一部分介绍的三种图像水印算法的优缺点。

3.1 峰值信噪比(PSNR)

        PSNR定义公式为:
在这里插入图片描述

        其中MSE为两幅图像像素点之间的均方误差,MAX表示为灰度最大值,对于一幅8位灰度图像,MAX为255。对于一般的水印图像,更高的PSNR值意味着图像有更好的性能。

3.2 三种水印算法比较与分析

        将原始图像设置为lena图,加入水印图像为一张qq头像,确保水印嵌入比例均为0.01,表一结合三种水印算法的matlab仿真结果,对比了三种算法加入水印图像与原始图像之间的PSNR值。

表一:三种水印算法PSNR值对比
水印算法 叠加法 LSB图像水印法 小波变换法
PSNR/dB 43.36 36.11 43.85

      由表分析可得,通过小波变换法加入水印图像比LSB水印法加入水印图像的PSNR值要高将近8个dB,具有更好的表现性能。同时,相较于叠加法,小波变换法更利于水印信号的隐蔽,它能将水印信息分布到空域的所有像素当中去,有利于保证水印的不可感知性,鲁棒性更强。

参考文献

[1] 尹浩,林闯,邱锋,丁嵘.数字水印技术综述[J].计算机研究与发展,2005(07):1093-1099.
[2] 韦志辉,秦鹏,欧阳宏彬,富煜清.基于小波域中视觉门限模型的数字水印技术[J].东南大学学报,1998(05):46-50.
[3] 杜江. 信息隐藏与数字水印技术研究[D].西安电子科技大学,2001.
[4] 易开祥. 数字图象加密与数字水印技术研究[D].浙江大学,2001.
[5] 董卫军. 基于小波变换的图像处理技术研究[D].西北大学,2006.
[6] 边杏宾. 数字水印技术及应用研究[D].电子科技大学,2009.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字图像处理-数字水印的嵌入与提取 的相关文章

  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • MATLAB 中最有效的矩阵求逆

    在 MATLAB 中计算某个方阵 A 的逆矩阵时 使用 Ai inv A should be the same as Ai A 1 MATLAB 通常会通知我这不是最有效的求逆方法 那么什么是更有效率的呢 如果我有一个方程系统 可能会使用
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • Matlab:保存后翻转图例顺序和图例重叠图

    我正在尝试根据以下内容反转我的图例条目顺序matlab条形图中图例颜色的逆序 https stackoverflow com questions 31178005 reverse ordering of legend colors in m
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • 从开始/结束索引列表创建向量化数组

    我有一个两列矩阵M包含一堆间隔的开始 结束索引 startInd EndInd 1 3 6 10 12 12 15 16 如何生成所有区间索引的向量 v 1 2 3 6 7 8 9 10 12 15 16 我正在使用循环执行上述操作 但我想
  • 如何在MATLAB中显示由三个矩阵表示的图像?

    我有 3 个相同大小的 2D 矩阵 假设 200 行和 300 列 每个矩阵代表三种 基本 颜色 红色 绿色和蓝色 之一的值 矩阵的值可以在 0 到 255 之间 现在我想组合这些矩阵以将它们显示为彩色图像 200 x 300 像素 我怎样
  • 快速有效地计算已知特征值的特征向量

    我的问题的简短版本 计算矩阵特征向量的最佳方法是什么A 如果我们已经知道属于特征向量的特征值呢 更长的解释 我有一个很大的随机矩阵A由于它是随机的 因此具有非负左特征向量x 这样A Tx x 我正在寻找快速有效的方法来数值计算这个向量 最好
  • MATLAB 类的 Description 和DetailedDescription 属性

    内置 MATLAB 类具有 Description 和 DetailedDescription 属性的值 gt gt handle ans meta class handle Package meta Properties Name han
  • 检测分段常数信号中的阶跃

    我有一个分段恒定信号 如下所示 我想检测步骤转换的位置 标记为红色 我目前的做法 使用移动平均滤波器平滑信号 http www mathworks com help signal examples signal smoothing html
  • MATLAB 列含义的内存分析

    我正在使用 MATLAB 配置文件来使用命令观察内存 profile memory on profile clear my code profile report and i got this table 1 我想问一下什么意思 已分配内存
  • 读出 Matlab / Octave fft2() 函数输出的特定点

    我正在熟悉 Octave 及其功能fft2 在此玩具示例中 我的目标是生成以下 256 x 256 png 图像的 2D DFT 为了能够轻松理解输出 我尝试将此图像转换为 256 x 256 图像 消除颜色信息 Im imread cir

随机推荐

  • declare-styleable的使用

    declare styleable是给自定义控件添加自定义属性用的 可以定义多种类型 int Boolean string等等 参考链接
  • 正则表达式去除冗长代码,tppabs

    利用正则表达式去除网页中的冗长没用代码 1 btppabs h 2 tpa http 3 清除css内的 tpa http s gif png jpg 4 tpa
  • org.springframework.http.converter.HttpMessageNotWritableException

    这里说无法将 对应对象转换 原因在于没有导入json 依赖 所以无法转换 org springframework http converter HttpMessageNotWritableException No converter fou
  • SD/MMC存储器启动方案在SoC中的设计与实现

    原文地址 http blog csdn net allen6268198 article details 7745208 引言 SD MMC存储器以其成本低廉 存储容量大 性能优良 安全性高等特点越来越广泛地应用于便携式设备和家用电子设备
  • Android Studio中设置鼠标悬停显示文档提示方法

    有些小伙伴在开发的过程中可能会习惯使用文档注释 那么在Android Studio中如何设置启用文档注释呢 1 首先打开Android Studio 点击菜单栏中的 File选项菜单 点击如下的Settings 进行设置 2 点击Edito
  • Windows10系统下swin-transformer目标检测环境搭建

    Swin Transformer Object Detection环境搭建 前言 1 环境准备 2 虚拟环境创建 3 安装pytorch 4 安装mmcv 5 安装mmdet 6 安装apex 7 测试 前言 刚搞明白了分类 又进来了检测这
  • 基于 Linux 安装 web 服务及基本配置

    在网络环境中 web 服务无疑是最为流行的应用系统 有了 web 站点 企业可以充分展示自己的作品 宣传企业形象 web 站点还为企业提供了与客户交流 电子商务交易平台等丰富的网络应用 Apache HTTP Server 是 ASF 旗下
  • mycat实现mysql读写分离,热切换,集群

    在互联网时代 实现mysql读写分离 热切换 集群能大大提高mysql数据库访问压力 防止数据丢失 使用mycat能帮我们实现这些 我们要实现的是这种架构 1 Mycat能实现数据库的垂直切分和水平切分 这里用户写数据的时候 通过mycat
  • Linux 上的NetworkManager示例

    如果您是一位经验丰富的系统管理员 并且专注于网络管理 那么您可能已经听说过NetworkManager NetworkManager于 2004 年发布 由 Red Hat 开发 是一组不同的工具 主要是接口 旨在促进系统上的网络管理 如果
  • C - 选票统计

    Description 某校学生会主席由全校学生投票选举产生 共有 名候选人报名参选 编号为1到 0 1000 全校有 名学生 0 30000 每人都可以投票 但每人只能投一票 每票只能选1名候选人 请你设计一个程序能够统计出哪个候选人得票
  • FP-growth算法(仅理解部分,代码待更新)

    FP growth算法 仅理解部分 代码待更新 1 简介 2 构建FP树 2 1 FP树简介 2 2 FP树的构建步骤 2 3 FP树的构建实例 step1 扫描数据集 对所有元素项的出现次数进行计数 step2 去掉不满足最小支持度的元素
  • 【华为OD机试真题2023B卷 JAVA&JS】事件推送

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 事件推送 时间限制 1秒 内存限制 262144K 语言限制 不限 题目描述 同一个数轴X上有两个点的集合A A1 A2 Am 和B B1 B2 Bn Ai和Bj均为正整数 A B已经
  • pikachu之RCE

    pikachu之RCE 一 神魔是RCE RCE漏洞 可以让攻击者直接向后台服务器远程注入操作系统命令或者代码 从而控制后台系统 1 远程系统命令执行 出现原因 因为应用系统从设计上需要给用户提供指定的远程命令操作的接口 比如常见的路由器
  • C语言中基本整型数据类型

    为了更好的分享体验 博客搬迁至极客驿站 欢迎查阅 C语言中的基本整型数据类型 整型家族包括字符 短整型 整型 长整型 它们都分为有符号和无符号两种版本 整型值相互之间的大小的规则 长整型至少应该和整型一样长 而整型至少应该和短整型一样长 一
  • JointJS官方API(中文)

    某位大佬博主整理的 备份一份 方便使用 原文地址 https blog csdn net orangeunicorn article details 84982992 锚点anchor 链接锚是一个链接想要到达的点 这意味着连接端点最终未必
  • 启动dubbo项目提示zk连接不上 Will not attempt to authenticate using SASL

    背景 本来自己本地能正常连接zk 启动项目 突然就不行了 这种莫名其妙的错误 令人头大 虽然找到了解决方法 但不知其原因 希望有大佬一起交流下 解决方案 查看zookeeper安装目录下的 conf zoo cfg文件 查看dataDir的
  • JDBC规范与实现

    JDBC 一 JDBC的概述 二 获取数据库连接 1 JDBC sun公司提供的一套api java sqL javax sql 使用这套api可以实现对数据的连接和操作 DML DDL 2 如下代码来测试 获取mysql数据库连接要想获取
  • 如何重置或破解Ubuntu 20.04的用户密码

    1 前言 本教程主要讲解如何破解Ubuntu 20 04 Linux root密码或普通用户密码 在本教程中 您将学习到以下知识 如何重置root用户密码 如何挂载根目录读写 如何重置普通用户密码 实施准备工作 Ubuntu 20 04系统
  • windows下MongoDB的安装及配置

    https blog csdn net heshushun article details 77776706
  • 数字图像处理-数字水印的嵌入与提取

    数字水印嵌入与提取 本篇报告所有内容已上传csdn我的资源中 包括源码与报告word和ppt 欢迎大家下载进行进一步修改研究 摘要 本报告重点介绍数字水印的嵌入与提取算法 数字水印根据水印的嵌入技术不同分为空间域数字水印和变换域数字水印 本