什么是数字水印

2023-11-09

经常有文章把数字签名和数字水印“傻傻分不清”,那今天就介绍一下数字水印。

一、数字水印技术原理

数字水印是一种信息隐藏技术,它利用人体感官的限制,将数字信号,如图像、文字、符号、数字等一切可以作为标记、标识的信息与原始数据(如图像、音频、视频数据)紧密结合并隐藏其中,并可以经历一些不破坏源数据价值的操作而能保存下来。

一般地,数字水印应具有如下的基本特性:

(1)可证明性:水印应能为受到版权保护的信息产品的归属提供完全和可靠的证据。

(2)不可感知性:不可感知包含两方面的意思,一个指视觉上的不可感知性(对听觉也是同样的要求),即因嵌入水印导致图像的变化对观察者的视觉系统来讲应该是不可察觉的,最理想的情况是水印图像与原始图像在视觉上一模一样,这是绝大多数水印算法所应达到的要求;另一方面水印用统计方法也是不能恢复的,如对大量的用同样方法和水印处理过的信息产品即使用统计方法也无法提取水印或确定水印的存在。

(3)鲁棒性:鲁棒性即健壮性,它对水印而言极为重要。一个鲁棒性强的数字水印应该能够承受大量的、不同的物理和几何失真,包括有意的(如恶意攻击)或无意的(如图像压缩、滤波、扫描与复印、噪声污染、尺寸变化等等)。但易碎水印技术恰恰与之相反,其鲁棒性很低,它所保护信息的微小变化都会引起水印被破坏。

二、一种使用易碎水印保护图像的方法

基于易碎水印的基本原理,我们可以使用它来保护图像,即当图像被更改后,哪怕是一个像素,都会破坏水印本身,从而达到验证保护的目的。

其基本思想是修改原图像中的每一个像素点的值,使得修改后的图像经过某一种算法的运算可以得到一个新的二值图像或文本,即水印。基本步骤为:

  1. 首先设定一个映射函数f,通过此函数可以将原图像g的每一个像素值映射成一个二值L(0或1):

在这里插入图片描述

  1. 设要嵌入的水印为W,W可以是一个二值图像,也可以是经过编码的字符串,这里面所使用水印为二值图像。根据以下公式修改原图像g的每一个像素值,使得修改后的g中每一个像素点的值通过f运算后都与W相同(要注意的是,修改幅度必须足够小,使肉眼观察不能察觉):
    在这里插入图片描述

这样水印图像就被嵌入到原图像中了。

  1. 提取、验证水印。假设待提取水印的原图像为g,验证对照的水印图像为W。通过f函数算出g每个像素的对应二值W’,即为提出的水印。
    在这里插入图片描述

将提取出的水印图像W’与W比较,就可以判断原图像g是否被更改过

在这里插入图片描述

下图就展示了水印保护的效果示意,原图像被修改后,对应的水印部分就会被破坏。
在这里插入图片描述

三、数字水印嵌入与提取

根据易碎水印保护图像的基本原理,可以设计出以下使用流程。

1.在原图像中的水印嵌入步骤

1)首先选择一张8位二值BMP图片作为水印图像;

2)从原图像的第一行第一列开始,逐个像素进行运算,

3)将当前像素的红、绿、蓝 三原色值取出,分别为R、G、B;

4)将R、G、B在映射表(Table)中所对应的映射结果(0或1)取出,并进行异或运算,得到运算结果P;

5)取出水印图像对应位置像素的值,并除以255,得到结果W。因为水印为二值图像,像素值为0或255,故除以255后变成0和1方可做下面比较;

6)若P=W,则跳回步骤2),进行下一像素的运算;

7)若P<>W,在R、G、B中随机选中一个,修改其数值。如果数值大于175,数值减去1,如果数值等于或小于175,则数值加1;

8)跳到步骤3)重新进行运算;

9)原图像全部像素处理完毕,水印嵌入完成。

2.在图像中提取水印嵌入步骤

1)从图像的第一行第一列开始,逐个像素进行运算,

2)将当前像素的红、绿、蓝 三原色值取出,分别为R’、G’、B’;

3)将R’、G’、B’在映射表(Table)中所对应的映射结果(0或1)取出,并进行异或运算,得到运算结果P’;

4)将P’值乘以255,得到结果W’。即为水印图案在此位置的像素值;

5)跳回步骤2),进行下一像素的运算;

7)最后得到水印图像。

通过提取图像中的数字水印,并与原水印对比,可以检测图像是否被篡改过。正是因为数字水印也可以用来检测数据的完整性,所以出现了把数字签名称为数字水印的情况,通过上面的介绍就应该知道,数字签名和数字水印是完全不同的技术。

四、强壮性数字水印的使用

上面提出了用易碎水印保护图像完整性的方法。其实数字水印更多地被用于多媒体数据的版权保护。比如以前的画家用印章或签名标识作品的作者,那么今天的艺术家可以通过数字水印将自己的名字添加到作品中来完成著作权的标识。同样,影视音像公司也可以把公司的名字、标志等信息添加到出版的多媒体数字产品中。这样通过跟踪多媒体数据中的数字水印信息来保护多媒体数据的版权。这里的水印都是鲁棒性强的水印,也就是强壮性水印。因为只有采用强壮性的水印,才能保证无论盗版者怎么修改、压缩、转换数字作品,里面的数字水印信息都能尽量的保留下来,以作为版权拥有者追究盗版行为的有利证据和武器。

除了在版权保护方面的应用,数字水印技术在文档(印刷品、电子文档等)的真伪认证上面也有很大的用途,将某些难以察觉的数字水印信息添加到文件中,大大增加了文件被伪造的难度。例如护照持有人的姓名在护照中被明显印刷出来,也可以在头像中将持有人姓名做为数字水印被隐藏起来,如果某人想通过更换头像来伪造一份护照,那么通过扫描护照就有可能检测出隐藏在头像中的水印信息与打印在护照上的姓名不符合,从而发现被伪造的护照。

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

什么是数字水印 的相关文章

  • Python单重循环练习题

    第一次学python 求大佬指正 1 有1020个西瓜 第一天卖掉总数的一半后又多卖出两个 以后每天卖剩下的一半多两个 问几天以后能卖完 8天后能卖完 sum 1020 day 0 while sum gt 0 day 1 sum sum
  • 解决tomcat 启动超过45秒时间限制

    当在eclipse运行一个javaweb项目时 出现了如下图片中的问题 解决方法 1在如下页面中找到Servers 找不到的话可以通过Window gt gt Show View放到下方 2 双击Servers进到如下页面 3 打开箭头所指
  • C++: read SQL server data using System::Data::SqlClient;

    stdafx h stdafx h include file for standard system include files or project specific include files that are used frequen
  • 『学Vue2+Vue3』自定义指令、插槽、路由入门

    day05 一 学习目标 1 自定义指令 基本语法 全局 局部注册 指令的值 v loading的指令封装 2 插槽 默认插槽 具名插槽 作用域插槽 3 综合案例 商品列表 MyTag组件封装 MyTable组件封装 4 路由入门 单页应用
  • 20个最炫HTML5,jQuery和CSS3下拉菜单制作教程(附示例/源码)

    3 Level Navigation Menu 三级导航菜单 独具特色的导航菜单 包含CSS3渐变 多个子菜单和jQuery动画 CSS3 Minimalistic Navigation Menu 一个简单的CSS3动画导航菜单 SLIDE
  • python之logging模块详解

    python之 logging 模块 文章目录 python之 logging 模块 一 日志关概念 日志的作用 日志的等级 3 日志字段信息与日志格式 4 日志功能的实现 二 logging 模块介绍 什么是logging模块 loggi
  • Linux服务器启动tomcat的三种方式

    直接进入主题 首先cd进入tomcat的bin文件夹下 然后可以尝试以下三种启动方式 第一种 当前会话启动 startup sh 效果 然后tomcat就在后台启动了 我们还可以在当前会话中继续输入其它指令 比如 ps ef grep to
  • Source Insight 自动补全 C 关键字、keil 标准库关键字

    一开始遇到该问题疯狂 baidu bing 相关的 blog 寥寥无几 而且是差不多十年前的 blog 主要原因 Source Insight 默认不包含 C 库文件 keil 标准库 导致编辑代码时找不到 C 库的相关宏 变量类型 函数等
  • [1082]IDEA配置tomcat时出现的问题及解决(HTTP状态404-未找到)

    文章目录 问题1 没有新建环境变量 问题2 tomcat设置depolyment有误 问题1 没有新建环境变量 解决 在系统环境变量中添加变量CATALINA BASE和CATALINA BASE 两个变量的值都是tomcat的安装路径 如
  • 【Java SE】基本数据类型

    大家好 我是保护小周 本期为大家带来的是 Java的基本数据类型 内容会与C语言的基本数据类型进行基本的比较 数据类型提示 整型提升 以及简单了解 String 类型 进一步感受Java 的安全性 C语言混不下去了 面向对象的编程太爽了 目
  • Hyperledger Fabric 安装环境配置答疑(1)

    目录 1 Hyperledger Fabric只支持Ubuntu系统吗 2 cURL是什么 有什么作用 3 为什么要安装Docker及docker compose 4 能否不使用Golang而换作其他语言环境 5 一定要安装Node与npm
  • 多态的概念

    一 多态的概念 多态 Polymorphism 按字面的意思就是 多种状态 是面向对象的序设计语言最核心的特征 具体点就是去完成某个行为 当不同的对象去完成时会产生出不同的状态 多态建立在继承和封装的基础上 二 多态的分类 编译时多态 设计
  • 静态成员变量的初始化,以及可能引发的multiple define问题

    静态成员变量的初始化 以及可能引发的multiple define问题 先说个人问题的解决方式 不要再头文件中定义静态成员变量 示例 test h ifndef TEST H define TEST H class hh static in
  • 网络协议的三个要素是什么?各有什么含义?

    网络协议的三个要素是什么 各有什么含义 网络协议 为进行网络中的数据交换而建立的规则 标准或约定 由以下三个要素组成 1 语法 即数据与控制信息的结构或格式 2 语义 即需要发出何种控制信息 完成何种动作以及做出何种响应 3 规则 即事件实
  • 删除tomcat日志

    1 df 查看磁盘空间 2 对应用户进去删掉对应日志 3 重启tomcat 重新生成文件 或者 4 lsof grep deleted发现有大量刚刚删除文件的进程存在 kill掉进程 5 使用df 查看磁盘空间 发现已经回收 最好重启下to
  • 二叉搜索树的中序遍历为 递增序列_Go 刷 Leetcode 系列:恢复二叉搜索树

    二叉搜索树中的两个节点被错误地交换 请在不改变其结构的情况下 恢复这棵树 示例 1 输入 1 3 null null 2 1 3 2输出 3 1 null null 2 3 1 2 示例 2 输入 3 1 4 null null 2 3 1
  • 一维连续型随机变量的函数分布

    目录 a b N 2 a b N 0 1 2 N 2 e sin a b N 2 a b N 0 1 2 N 2 e sin
  • LoadRunner脚本测试——登录实践

    实习公司最近在做一款会计项目的财政管理系统 跟着测试组在做登录响应测试时 学到了不少实践经验 本文作以简单阐述和分享 通过代理服务器录制脚本 测试系统的门户必须用Chrome打开 然而测试环境lr11似乎只对IE浏览器兼容 事实上 lr与浏
  • Java入门(2) —— 变量详解、运算符、定义类和定义方法以及方法的调用

    1 变量 1 定义变量 1 声明的同时直接赋值 数据类型 变量名 值 2 先声明 后赋值 声明 数据类型 变量名 赋值 变量名 值 2 数据类型 基本数据类型 4类8种 整数 gt 直接写整数 默认就是 int byte 1个字节 shor
  • 喷水装置(一)贪心算法

    听说这是 贪心算法 的一个简单应用 虽说是简单 但是对我来说 确实不简单 说下面说有用的 题目描述 现有一块草坪 长为20米 宽为2米 要在横中心线上放置半径为Ri的喷水装置 每个喷水装置的效果都会让以它为中心的半径为实数Ri 0

随机推荐

  • Fire-YOLO:一种用于火灾检测的小目标检测方法

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 作者丨CY 来源丨当交通遇上机器学习 编辑丨极市平台 极市导读 本次介绍的文章是太原理工大学团队在2022年发表在 Sustainability 的关于火灾检测的小目标实
  • qiankun 常见问题集合(一)

    qiankun 常见问题集合 一 1 loader js 220 Uncaught in promise Error qiankun You need to export lifecycle functions in app4 entry
  • 在使用localstorage的时候发生了报错的解决办法

    在使用localstorage的时候 发生了报错 提示是传入的格式不正确 但是传入的是json格式 为什么不正确呢 1 在localStorage setItem 过程中 传进的参数需使用JSON tringfy 方法转成json格式的字符
  • 用链式线性表实现两个一元多项式相加

    include
  • springboot+vue跨域(草稿箱中翻出来的)

    第一种 新建 GlobalCorsConfig 类 import org springframework context annotation Bean import org springframework context annotati
  • Copilot是GPT的理想应用模式吗?

    自OpenAI发布ChatGPT以来 LLM持续火热 各大公司纷纷入场 但近一段时间以来 我观测到的LLM应用场景 基本都是Copilot的形式 即以对话为基础的辅助应用 尽管体验起来十分的高大上 但我能明确感受到 这种Copilot的形式
  • pyspark中文api

    内容基于官网pyspark SparkSQL官方文档翻译及拓展 官方文档 https spark apache org docs latest api python reference pyspark sql index html 具体使用
  • Eclipse上的HTML/JSP/XML编辑器插件Eclipse HTML Editor

    官网 http amateras sourceforge jp cgi bin fswiki en wiki cgi page EclipseHTMLEditor Eclipse HTML Editor is an Eclipse plug
  • js的三种弹窗

    1 alert 提示框 用途 一般用于提示信息或者警告信息的展示 2 confirm option 确认 或 取消 消息框 用途 用户点击 确定 或 取消 按钮时 弹窗会返回一个布尔值 确认返回true 取消返回false 由此可以判断用户
  • adb shell 执行sh脚本_程序开发——Shell脚本

    Shell 是一个用 C 语言编写的程序 它是用户使用 Linux 的桥梁 Shell 既是一种命令语言 又是一种程序设计语言 Shell 是指一种应用程序 这个应用程序提供了一个界面 用户通过这个界面访问操作系统内核的服务 Ken Tho
  • 深入浅出 Spark Thrift Sever

    一 Spark Thrift Sever是什么 Spark借助Hive的Metadata Service可以实现通过命令行客户端工具执行Sql语句 就像是Hive或者Mysql的命令行工具一样 称之为Spark CLI Spark CLI适
  • 基于GMap.Net的地图解决方案

    一 地图的加载与显示 关于GMap的介绍与使用可以看我以前的文章 GMap Net开发之在WinForm和WPF中使用GMap Net地图插件 GMap Net是 Net下一个地图控件 可以基于Http协议加载各个公司的地图 如Google
  • 如何设计一个秒杀系统

    什么是秒杀 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到 对于电商网站中一些稀缺或者特价商品 电商网站一般会在约定时间点对其进行限量销售 因为这些商品的特殊性 会吸引大量用户前来抢购 并且会在约定的时间点同时在
  • MinGW-W64下载、配置教程

    注意 本文采用的操作系统 Windows7 64位 注 文章原创 配图的知乎水印也是笔者账号 一 下载与配置 使用浏览器访问 MinGW W64 图1 找到图2所示区域 根据需求点击一项 下载压缩包 图2 解压下载的压缩包 内容如图3 图3
  • JAVA练习34-验证回文串

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 前言 一 题目 验证回文串 1 题目描述 2 思路与代码 2 1 思路 2 2 代码 总结 前言 提示 这里可以添加本文要记录的大概内容 1月29日练习内容 提示 以下
  • Gin的使用

    Gin框架 gin框架路由使用前缀树 路由注册的过程是构造前缀树的过程 路由匹配的过程就是查找前缀树的过程 gin框架的中间件函数和处理函数是以切片形式的调用链条存在的 我们可以顺序调用也可以借助c Next 方法实现嵌套调用 借助c Se
  • BigDecimal比较大小问题

    BigDecimal比较大小 这个类是Java里精确计算的类 下面说一下两个BigDecimal对象大小 相等的判断 1比较对象是否相等 一般的对象用于等于 但是BigDecimal比较特殊 举个例子 BigDecimal a1 new B
  • android 下拉状态栏(SystemUI)常见修改记录

    摘要 下拉状态栏 1 下拉状态栏的亮度条 frameworks base packages SystemUI src com android systemui qs QSPanel javamBrightnessView对应布局文件 qui
  • 爬虫实例8(os模块的用法)

    import requests import os url https ss3 bdstatic com 70cFv8Sh Q1YnxGkpoWK1HF6hhy it u 460770515 1829173594 fm 26 gp 0 jp
  • 什么是数字水印

    经常有文章把数字签名和数字水印 傻傻分不清 那今天就介绍一下数字水印 一 数字水印技术原理 数字水印是一种信息隐藏技术 它利用人体感官的限制 将数字信号 如图像 文字 符号 数字等一切可以作为标记 标识的信息与原始数据 如图像 音频 视频数