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. nuxt.js实战之开发环境配置

    一.创建项目 1.使用如下命令生成项目 vue init nuxt-community/starter-template testPro --testPro为项目名称 2.进入到项目根目录下,使用np ...

  2. 浅析 @PathVariable 和 @RequestParam(转发,非原创)

    首先 上两个地址:地址①http://localhost:8989/SSSP/emps?pageNo=2地址②http://localhost:8989/SSSP/emp/7如果想获取地址①中的 pa ...

  3. 时间复杂度和大O表示法

    大O表示法:称一个函数g(n)是O(f(n)),当且仅当存在常数c>0和n0>=1,对一切n>n0均有|g(n)|<=c|f(n)|成立,也称函数g(n)以f(n)为界或者称g ...

  4. 洛谷P1399 快餐店

    题意:在基环树上找一点,使得这个点到所有点的距离最大值最小.这个点可以在某条边上. 解:很容易想到找出直径然后/2对吧...这里的直径是指任意两点间最短距离的最大值. 然而我这个SB冥思苦想了半天之后 ...

  5. 【POJ2676】sudoku 搜索

    按照每一行每一列去填数,当填到每一行的第9列时,开始填下一行. 代码如下: #include <cstdio> #include <algorithm> #include &l ...

  6. Django 路由

    创建好项目后在项目文件下的urls.py为设置路由 Django 有两种路由方式一种的精确路由 另一个为模糊路由 """mysite URL Configuration ...

  7. 关于在JTextPane(或JEditorPane)中返回文本部分(Text)

    今天遇到这样的一个问题,我需要取得当前JTextPane()中的文件,但是 JTextPane.getText()返回的是网页的HTML源代码,在网上搜索了一下,找到了一个方法: //返回消息框的无格 ...

  8. JS验证身份证

    话不多说,直接看代码 JS部分 /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * ...

  9. Oracle 在JDBC中使用 存储过程,包

      前提: 在Oracle中已经定义  存储过程  和  存储函数 和  包 导入了Oracle的JDBC   jar  包 package demo; import java.sql.Connect ...

  10. 3D游戏的角色移动

    * -----英雄的移动控制 * * * * */ using System.Collections; using System.Collections.Generic; using UnityEng ...