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 ...
随机推荐
- Project Euler 81:Path sum: two ways 路径和:两个方向
Path sum: two ways In the 5 by 5 matrix below, the minimal path sum from the top left to the bottom ...
- Java学习笔记之:java运算符
一.介绍 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算 ...
- [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】
(function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有 ...
- YCM安装与配置
1.重新编译vim 2.通过vundle安装YCM 3.安装CMake 4.下载预先编译好的llvm+clang 5.看官网的命令,生成CMake的编译文件并编译 配置YCM: 要额外配置ycm_ex ...
- chrome下float元素下input选中内容bug
今天在写一个小demo的时候,发现chrome下一个很奇怪的bug. 我的代码如下: <!DOCTYPE html> <html lang="en"> &l ...
- Android之ScaleGestureDetector(缩放手势检测)
一.概述 ScaleGestureDetector这个类是专门用来检测两个手指在屏幕上做缩放的手势用的,最简单的应用就是用来缩放图片或者缩放网页. 二.要求 利用ScaleGestureDetecto ...
- org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml at org.hibernate ...
- bzoj1499: [NOI2005]瑰丽华尔兹
dp. 首先我们可以看到每个时间段只能往一个方向转移最多t步(t为时间段的长度),所以我们可以按时间段dp.因为这个前后值互不影响,也不用占用这一维空间就可以省去. 然后每个时间段内是一列一列(行) ...
- QPS、PV和需要部署机器数量计算公式(转)
术语说明: QPS = req/sec = 请求数/秒 [QPS计算PV和机器的方式] QPS统计方式 [一般使用 http_load 进行统计] QPS = 总请求数 / ( 进程总数 * 请求 ...
- Linux Shell编程(2): for while
; i < ; i++)) do echo "current number is $i" done SERVICES="80 22 25 110 8000 23 2 ...