DWT在栅格数据嵌入不可见水印的应用
1.1.1 嵌入水印
- 有意义的文字->二值图像->二值序列->置乱、加密->二值水印信息。
- 读取栅格数据,并进行M*M的分块处理,M为偶数。设分块区域,尺寸为偶数,满足DWT的条件
- 获取内所有像元属性值,得到参与变换的数组序列(可以是);对进行DWT变换,然后从小波系数中获取其低频分量区域。
- 基于低频分量,构建数据-水印同步函数:
中心(或最接近中心左上角)所对应的低频分量系数为,将其他低频分量系数相加得到 。T 是固定值,与水印信息长度 N 有关,表示同步函数的跳跃间隔,一般应大于水印嵌入时的量化步长h。利用同步函数可找到区域内所对应的水印信息在水印序列中的索引号。
- 获取水印位对应的水印信息,将水印信息嵌入到低频分量区域所对应的低频分量系数中
当水印信息位 =1时,按照下式进行水印信息的嵌入:
当水印信息位 =0时,按照下式进行水印信息的嵌入:
- 对含水印信息的小波系数进行小波逆变换处理,得到含水印分块数据序列 。而将数组元素 与对应的原始数据对比,对于变化幅度较大的栅格地理数据点,用数据拉回操作来修正水印误差,最后将相应的数据放回分块区域 内对应的位置
- 对所有分块数据进行水印嵌入操作,而后按分块复原策略将水印分块数据组织起来得到含水印的栅格地理数据。
- 获取栅格地理数据,然后对数据进行M*M分块,
- 统计每个分块区域的像元属性特征,而后进行小波变换处理,并获取其低频分量区域。然后,按照水印嵌入时所构建的数据-水印同步函数,进行水印信息位的定位和提取,水印信息提取的位置与水印嵌入位置相同,这个过程实际是水印嵌入的逆过程。提取方法如下式所示:
1.1.2 水印检测(默认未受到攻击)
- 提取的水印信息位根据模糊模式识别的最大隶属度原则进行判别。定义第i 位水印信息 在空间上对 1 的隶属度为: 中1的个数/T ;第i 位水印信息 在空间上对-1 的隶属度为:中-1的个数/T 。根据最大隶属度原则,来确定第i位水印信息是 1 还是-1。而后对提取出的水印信息进行如下式处理:
则提取出水印信息。
由于有意义二值图像水印信息在嵌入二值栅格地理数据前对其进行了加密、置乱等数据预处理,因此需要对所提取的水印信息 进行相应的解密、逆置乱等数据预处理,以便于水印信息的可视化显示。最后,对水印信息以二值图像的方式组织并显示以进行判读。
DWT在栅格数据嵌入不可见水印的应用的更多相关文章
- Robust Mesh Watermarking
之前看了一篇题为"Robust Mesh Watermarking"的论文,查阅资料的时候发现了一篇与之很相似的名为"三维模型数字水印系统的设计与实现"的中文论 ...
- An Oblivious Watermarking for 3-D Polygonal Meshes Using Distribution of Vertex Norms
An Oblivious Watermarking for 3-D Polygonal Meshes Using Distribution of Vertex Norms 转眼就11月底了,突然开始有 ...
- 基于LSB的图像数字水印实验
1. 实验类别 设计型实验:MATLAB设计并实现基于LSB的图像数字水印算法. 2. 实验目的 了解信息隐藏中最常用的LSB算法的特点,掌握LSB算法原理,设计并实现一种基于图像的LSB隐藏算法. ...
- C++实现网格水印之调试笔记(四)—— 完成嵌入
接下来的问题是,当模型是对称的时候,结果是符合预期的,但是当模型是不对称的时候,结果是错误的,如下: 输入: 顶点:233 输出: 这又是什么鬼...,我的马呢!!! 看来逻辑上还是有错误 注意这时候 ...
- C# ASP.NET MVC 图片盗链 加水印 的问题
ImageClass using System; using System.Collections; using System.IO; using System.Drawing; using Syst ...
- C#图片处理示例(裁剪,缩放,清晰度,水印)
C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...
- 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)
C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...
- C++实现网格水印之调试笔记(六)—— 提取完成
昨天在修改了可以调试出来的错误之后,提取出的水印和嵌入的仍然相去甚远.这个时候我觉得有必要整理一下嵌入和提取的整个过程. 嵌入过程: Step1,嵌入的时候对网格的拉普拉斯矩阵L进行特征值分解,得到特 ...
- C++实现网格水印之调试笔记(五)—— 提取出错
在实现提取水印的过程中,遇到了一些问题 首先还是根据论文中的思路来梳理一下整个提取流程 读入两个模型,一个原始模型ori_mesh, 一个水印模型wm_mesh. 将两个模型对齐(即放在同一个坐标系下 ...
随机推荐
- docker镜像操作
1.获取镜像 docker pull NAME[:TAG] 如果不显式地指定TAG,则默认会选择latest标签,即下载仓库中最新版本的镜像.//获取最新镜像docker pull ubuntu // ...
- JavaScript(JS)之Javascript对象DOM之增删改查(四)
创建节点:var ele_a = document.createElement('a');添加节点:ele_parent.appendChild(ele_img);删除节点:ele_parent.re ...
- 为什么在Python里推荐使用多进程而不是多线程?(为什么python多线程无法增加CPU使用率?)
最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研究: 首先强调背景: ...
- R: 修改镜像、bioconductor安装及go基因富集分析
1.安装bioconductor及go分析涉及的相关包 source("http://bioconductor.org/biocLite.R") options(BioC_mirr ...
- MySQL准备
目录 数据库管理软件的由来 什么是数据? 什么是数据库管理系统/软件? 数据库管理的三个阶段 MySQL 概述SQL语句 安装MySQL(在命令行的操作全要用管理员权限) 将MySQL服务制作为win ...
- python自动化开发-[第七天]-面向对象
今日概要: 1.继承 2.封装 3.多态与多态性 4.反射 5.绑定方法和非绑定方法 一.新式类和经典类的区别 大前提: 1.只有在python2中才分新式类和经典类,python3中统一都是新式类 ...
- Java父类与子类方法调用顺序
父类 FatherClass package 父类与子类方法调用顺序; /** * 父类 * @author shundong * */ public class FatherClass { priv ...
- Mybatis分页插件PageHelper
application.properties配置 pagehelper.helperDialect=mysql pagehelper.reasonable=true pagehelper.suppor ...
- JSON的简单使用_向前台发送JSON数据
转自:http://www.cnblogs.com/digdeep/p/5574366.html 1.前台页面 <%@ page language="java" conten ...
- SVN简单的使用
一.什么是SVN有什么用? SVN是Subversion的简称,是一个开放源代码的版本控制系统.主要是用于团队开发中的资源共享和团队协作. 二.SVN服务器的安装 1.下载安装文件 在下面地址下载Vi ...