1.1.1 嵌入水印

  1. 有意义的文字->二值图像->二值序列->置乱、加密->二值水印信息。
  2. 读取栅格数据,并进行M*M的分块处理,M为偶数。设分块区域,尺寸为偶数,满足DWT的条件
  3. 获取内所有像元属性值,得到参与变换的数组序列(可以是);对进行DWT变换,然后从小波系数中获取其低频分量区域。
  4. 基于低频分量,构建数据-水印同步函数:

中心(或最接近中心左上角)所对应的低频分量系数为,将其他低频分量系数相加得到 。T 是固定值,与水印信息长度 N 有关,表示同步函数的跳跃间隔,一般应大于水印嵌入时的量化步长h。利用同步函数可找到区域内所对应的水印信息在水印序列中的索引号。

  1. 获取水印位对应的水印信息,将水印信息嵌入到低频分量区域所对应的低频分量系数中

当水印信息位 =1时,按照下式进行水印信息的嵌入:

当水印信息位 =0时,按照下式进行水印信息的嵌入:

  1. 对含水印信息的小波系数进行小波逆变换处理,得到含水印分块数据序列 。而将数组元素  与对应的原始数据对比,对于变化幅度较大的栅格地理数据点,用数据拉回操作来修正水印误差,最后将相应的数据放回分块区域 内对应的位置
  2. 对所有分块数据进行水印嵌入操作,而后按分块复原策略将水印分块数据组织起来得到含水印的栅格地理数据。
    1. 获取栅格地理数据,然后对数据进行M*M分块,
    2. 统计每个分块区域的像元属性特征,而后进行小波变换处理,并获取其低频分量区域。然后,按照水印嵌入时所构建的数据-水印同步函数,进行水印信息位的定位和提取,水印信息提取的位置与水印嵌入位置相同,这个过程实际是水印嵌入的逆过程。提取方法如下式所示:

1.1.2 水印检测(默认未受到攻击)

  1. 提取的水印信息位根据模糊模式识别的最大隶属度原则进行判别。定义第i 位水印信息 在空间上对 1 的隶属度为: 中1的个数/T ;第i 位水印信息 在空间上对-1 的隶属度为:中-1的个数/T 。根据最大隶属度原则,来确定第i位水印信息是 1 还是-1。而后对提取出的水印信息进行如下式处理:

则提取出水印信息。

由于有意义二值图像水印信息在嵌入二值栅格地理数据前对其进行了加密、置乱等数据预处理,因此需要对所提取的水印信息 进行相应的解密、逆置乱等数据预处理,以便于水印信息的可视化显示。最后,对水印信息以二值图像的方式组织并显示以进行判读。

DWT在栅格数据嵌入不可见水印的应用的更多相关文章

  1. Robust Mesh Watermarking

    之前看了一篇题为"Robust Mesh Watermarking"的论文,查阅资料的时候发现了一篇与之很相似的名为"三维模型数字水印系统的设计与实现"的中文论 ...

  2. 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月底了,突然开始有 ...

  3. 基于LSB的图像数字水印实验

    1. 实验类别 设计型实验:MATLAB设计并实现基于LSB的图像数字水印算法. 2. 实验目的 了解信息隐藏中最常用的LSB算法的特点,掌握LSB算法原理,设计并实现一种基于图像的LSB隐藏算法. ...

  4. C++实现网格水印之调试笔记(四)—— 完成嵌入

    接下来的问题是,当模型是对称的时候,结果是符合预期的,但是当模型是不对称的时候,结果是错误的,如下: 输入: 顶点:233 输出: 这又是什么鬼...,我的马呢!!! 看来逻辑上还是有错误 注意这时候 ...

  5. C# ASP.NET MVC 图片盗链 加水印 的问题

    ImageClass using System; using System.Collections; using System.IO; using System.Drawing; using Syst ...

  6. C#图片处理示例(裁剪,缩放,清晰度,水印)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  7. 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  8. C++实现网格水印之调试笔记(六)—— 提取完成

    昨天在修改了可以调试出来的错误之后,提取出的水印和嵌入的仍然相去甚远.这个时候我觉得有必要整理一下嵌入和提取的整个过程. 嵌入过程: Step1,嵌入的时候对网格的拉普拉斯矩阵L进行特征值分解,得到特 ...

  9. C++实现网格水印之调试笔记(五)—— 提取出错

    在实现提取水印的过程中,遇到了一些问题 首先还是根据论文中的思路来梳理一下整个提取流程 读入两个模型,一个原始模型ori_mesh, 一个水印模型wm_mesh. 将两个模型对齐(即放在同一个坐标系下 ...

随机推荐

  1. This license xxx has been cancelled 解决

    上节回顾:JetBrains全家桶破解思路 hosts屏蔽一下即可,Linux是:/etc/hosts 0.0.0.0 account.jetbrains.com 重新输入Code即可,最后补一个地址 ...

  2. Spring 声明式事务

    事务的特性/概念 事务:一组操作要么都成功要么失败: 事务的四个关键属性(ACID): 原子性(atomicity):“原子”的本意是“不可再分”,事务的原子性表现为一个事务中涉及到的多个操作在逻辑上 ...

  3. poj3190 Stall Reservations

    我一开始想用线段树,但是发现还要记录每头cow所在的棚...... 无奈之下选择正解:贪心. 用priority_queue来维护所有牛棚中结束时间最早的那个牛棚,即可得出答案. 注意代码实现的细节. ...

  4. [bzoj1563][诗人小g]

    bzoj1563 思路 首先考虑\(n^2\)的暴力dp,用sum[i]表示前i句话的长度总和.f[i]表示前i句话最小的不协调度之和.转移的时候考虑枚举前面的每个点,找到转移的最优秀的那个点. 然后 ...

  5. vue层级关系的数据管理

    项目背景:为一些有层级关系的数据管理做一套后台管理系统,例如一个小区,里面是有许多楼,楼里有许多层,每一层有许多不同的房······,现在就是要实现对这些数据进行增删改查操作. 1.Tree(树形组件 ...

  6. redis设置密码以及jedisPool设置密码

    转: redis设置密码以及jedisPool设置密码 2019年01月02日 20:24:43 宇文荒雪 阅读数:1118   版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...

  7. my97DatePicker选择年、季度、月、周、日(转)

    My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 下面总结下使用该日历控件选择年.季度.月.周.日的方法. 1.选择年 <input id="d1212&quo ...

  8. nginx根据cookie分流

    转载互联网 nginx根据cookie分流众所周知,nginx可以根据url path进行分流,殊不知对于cookie分流也很强大,同时这也是我上篇提到的小流量实验的基础. 二话不说,先看需求,两台服 ...

  9. Centos 配置eth0 提示Device does not seem to be present

    Centos 配置eth0 提示Device does not seem to be present 参考资料: http://www.cnblogs.com/fbwfbi/archive/2013/ ...

  10. SpringCloud之注册中心Eureka搭建

    POM: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...