A Blind Watermarking for 3-D Dynamic Mesh Model Using Distribution of Temporal Wavelet Coefficients
这周看了一篇动态网格序列水印的论文,由于目前在网格序列上做水印的工作特别少,加之我所看的这篇论文中的叙述相对简洁,理解起来颇为困难。好在请教了博士师兄,思路明朗了许多,也就把这思路整理在此了。
论文作者提出了一种三维网格序列盲水印算法,在他们的算法中用到了小波分析。我对小波分析只有一个大概的了解,所以细节的理解上可能不尽正确,索性就不详细解释小波分解的知识了。
首先介绍论文中水印的产生:
此篇论文中的水印为 W= +1 或 W = -1,具体位数上嵌入+1还是 -1 作者没有做详细解释
然后介绍水印的嵌入:
对于原始的3-D序列
其中N为帧总数),每一帧的重心都平移到坐标原点,作为计算小波系数的预处理。
第一步,每个点的坐标使用小波变换沿着时间轴平移。原始序列被分解为低频序列
,称为比例系数,和高频序列
,称为小波系数。
本文中用到了bin的概念,它是水印嵌入的单位。每个bin从平均帧
分裂而来,
是
的平均数。
的笛卡尔坐标
被转换为球面坐标
,
笛卡尔坐标与球面坐标相互转换公式:(参考Wavelet transform based digital watermarking for 3-D surface meshes and mesh sequences)


其中i是顶点索引,
是
的法向。根据
的概率分布的大小,将这些概率分布划分到M个独立的、范围相同的bin中。在第m个bin中的顶点i将用于保存该顶点相应的修改后的小波系数。
属于第m个bin的小波系数
被映射到[-1,1]这个归一化区间。现在,每个bin在区间[-1,1]上都有一个拉普拉斯分布。为了嵌入第m个水印比特
方差为
的归一化后的小波系数
将由一个因子+△(或 –△)修改,修改方式如下:

其中,
分别表示
负数部分和正数部分的方差,
是强度因子,用来控制水印的健壮程度和透明性。为了将方差降低到预期的级别,小波系数
将用下式中的直方图映射函数迭代地进行修改:(本文引用文献3中的方法)

其中,
[1,∞];
转换为
,它们两者的符号保持一致,此外,变换的变量的绝对值随Km的增加而减小。且在区域[0 ,1]之间随Km的减小而增大。
所有在每个bin中的,变换后的小波系数将被映射到原始的范围中。然后进行时间的逆小波变换,同时,所有的序列平移到原始的重心处,得到嵌入水印的3-D序列。
水印嵌入过程图如下

水印提取:
本文中的水印算法提取过程相当简单。与水印嵌入过程相似,我们首先计算每个bin中的方差
并两两进行比较。在第m个bin中嵌入的水印将按照下式进行提取:

文中的水印提取不需要原始序列,因此是一种盲水印算法,水印提取图如下

总结:
论文提出的水印嵌入和提取方案大致如上所述,论文的其他篇幅主要用于实验验证。理解论文的难点在于如何将顶点划分到不同的bin中。总结起来说,作者先将序列分为高频部分和低频部分,然后求出低频部分的平均值,将这个平均值的笛卡尔坐标转换为球面坐标。球面坐标中有一个分量代表法向,根据大小,将法向分量的概率分布划分成M个独立等范围的bin,至此顶点被分到了不同的bin中,然后根据要嵌入的水印的值,对不同bin中的顶点的小波系数进行修改,以改变bin中顶点组的小波系数的方差。将进行了更改后的顶点坐标映射回笛卡尔坐标,并进行小波逆变换便得到了嵌入水印的序列。在提取时,直接计算每个bin的方差,比较正数部分方差和负数部分方差的大小便可提取出嵌入的水印。
A Blind Watermarking for 3-D Dynamic Mesh Model Using Distribution of Temporal Wavelet Coefficients的更多相关文章
- Geodesic-based robust blind watermarking method for three-dimensional mesh animation by using mesh segmentation and vertex trajectory
之前因为考试,中断了实验室的工作,现在结束考试了,不能再荒废了. 最近看了一篇关于序列水印的文章,大体思想是:对于一个网格序列,首先对第一帧进行处理,在第一帧上,用网格分割算法(SDF)将网格分割成几 ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- What’s a service mesh? And why do I need one?
https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ Update 2018-02-06: Since t ...
- Dynamic V Strongly Typed Views
Come From https://blogs.msdn.microsoft.com/rickandy/2011/01/28/dynamic-v-strongly-typed-views/ There ...
- nRF5 SDK for Mesh(六) BLE MESH 的 基础概念
Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile specification developed and published ...
- Java Project 转 Dynamic Web Project
使用eclipse 工具, 右键Java Project 项目 Properties - Project Facets - Convert to faceted form... - 勾选Dynami ...
- dva/dynamic
1.安装: yarn add dva 2.引入: import dynamic from 'dva/dynamic'; * dva路由跳转 * dynamic(app, model, componen ...
- Direction of Arrival Based Spatial Covariance Model for Blind Sound Source Separation
基于信号协方差模型DOA的盲声源分离[1]. 在此基础上,作者团队于2018年又发布了一篇文章,采用分级和时间差的空间协方差模型及非负矩阵分解的多通道盲声源分离[2]. 摘要 本文通过对短时傅立叶变换 ...
- 转-nRF5 SDK for Mesh(六) BLE MESH 的 基础概念
nRF5 SDK for Mesh(六) BLE MESH 的 基础概念 Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile s ...
随机推荐
- 李洪强iOS开发之OC语言BLOCK和协议
OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么? 苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相 ...
- EXCEL排序
题目描述: Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. 对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始).随后在 N ...
- java:访问权限
访问权限四大类:权限从大->小 1.public: 公共权限 2.protected: 受保护权限 3.default: 包级别访问权限/默认权限 4.private: 私有权限 以p ...
- Arc Engiene读取文档的属性
设计界面 创建类 代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- Retrofit分析-漂亮的解耦套路
没耐心自己分析源码的同学,还可以参考Stay录制的视频版 Retrofit分析-漂亮的解耦套路(视频版) 万万没想到Retrofit会这么火,在没看源码之前,我简单的认为是因为它跟OkHttp同出一源 ...
- Invoke与BeginInvoke
一.为什么 Control类提供了 Invoke和 BeginInvoke机制? 关于这个问题的最主要的原因已经是 dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自 ...
- 开发板挂载nfs服务器错误解析
输入mount -t nfs 192.168.1.110:/home/work /mnt,这时可能会出现 mount.nfs:access denied by server while mountin ...
- Android开发之ActivityManager获取系统信息
1.判断指定的service是否在运行 public static boolean isServiceRunning(Context ctx, String serviceName) { Activi ...
- [HDOJ2818]Building Block(带权并查集,路径压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2818 题意:有N个块,每次有两个操作: M x y表示把x所在的那一堆全部移到y所在的那一堆的下方. ...
- Redis cluster学习 & Redis常识 & sort操作
Redis中的5种数据类型String.Hash.List.Set.Sorted Set. Redis源码总代码一万多行. 这篇文章有一些Redis "常识" http://www ...