Geodesic-based robust blind watermarking method for three-dimensional mesh animation by using mesh segmentation and vertex trajectory
之前因为考试,中断了实验室的工作,现在结束考试了,不能再荒废了。
最近看了一篇关于序列水印的文章,大体思想是:对于一个网格序列,首先对第一帧进行处理,在第一帧上,用网格分割算法(SDF)将网格分割成几个有意义的区域。在每个区域中,计算区域中的点到区域边界的测地线距离,根据测地线距离再将区域里的点分到不同的集合中,然后使集合中测地线距离的平均值保持在规定的范围内,从而嵌入水印。
下面介绍具体做法。
水印序列:+1、-1序列,由伪随机函数生成
网格分割算法:Shape Diameter Function (SDF)。作为局部特征的SDF可以看作是每个点所在区域对应形状的直径.三维模型在受到攻击时,如平移、旋转、简化、噪声、姿势变化等,一般都能保持原有的形状特征,作为局部特征的SDF在攻击后能得以保存,因此SDF以及其分布具有一定的鲁棒性。
SDF的具体做法有三步:
Step1:计算形状直径值
对于一个面片,作一个以该面片中心为圆锥顶点、它的法向量的逆方向为中心线方向的圆锥体,从该顶点上引出若干条圆锥体范围内的射线交于模型的表面网格,通过构建八叉树结构来计算与网格相交的射线,去掉与顶点法线方向相同的射线(夹角小于90。认为是方向相同),取剩下长度在所有射线长度中位数标准差之内的射线作加权平均,即得到该顶点的SDF值。
Step2:GMM-EM聚类。
使用最大期望(exception—maximization,EM)算法构建三维模型面片SDF值的柱状分布图,用一个高斯混合模型(Gaussian mixture model,GMM)得到k个高斯分布,将网格模型的所有面片聚类成k个聚类,在模型视图上表现为若干个分块,即得到网格的k层次的粗分块。
Step3:切割边界精细化。
对于有意义的分割问题,另一个重要问题是分割边界的平滑性以及如褶皱之
类的局部特征是否保留,使用扩展的阿尔法图形切割算法(alpha expansion
graph-cut algorithm)最小化能量函数来确定面片的归属,得到最终的边界。
嵌入水印:
(1)使用SDF将网格的第一帧分割成不同的区域
(2)在SDF分割出来的每个区域中,对于区域中的每个顶点vj1,计算vj1 到它所在区域的边界线上的点的测地线距离的平均值,记为djB,根据djB的大小,将该区域中的点划分成Nw个不同的集合,每个集合记为
其中dmax是该区域中所有djB中,值最大的那个,同时,1≤i≤Nw。
(3)每位水印将被嵌入到i=1到i=Nw的集合中。对于第i个集合,计算所有djB的平均值ud,并检查ud与Ki的大小关系,Ki定义如下:
其中△∈[0,0.5],它是根据经验值来设定的,用来控制水印嵌入强度。
如果ud>Ki并且wi=+1,那么直接输出集合,否则需要增大ud,具体增大的方法是:从集合中随机挑选一个顶点,然后将这个顶点沿着在它一邻域中,与区域边缘平均测地线距离最大的点移动。移动的距离也是根据经验进行。每次移动要保证dmax不变,同时,每次移动后要重新判断ud与Ki的关系,知道满足条件为止。
同理,当ud<Ki且wi=-1时,直接输出,否则就减小ud,减小方法与增大方法类似,只是将挑选出的点沿着沿它一邻域中,与区域边缘平均测地线距离最小的点移动。
(4)根据顶点的轨迹可以确保其他帧的分割跟第一帧相同。在第三步中,被选中调整位置的顶点的原始顶点和调整后的新顶点的测地线距离之差记为δj。在剩下的帧中,可以直接根据δj和wi的正负调整顶点的位置以实现水印的嵌入。如果wi=+1,则将顶点沿着它一邻域中,与区域边缘平均测地线距离最大的点移动δj;同样地,wi=-1,则将顶点沿着它一邻域中,与区域边缘平均测地线距离最小的点移动δj。
水印提取:本文中提出的算法是盲水印算法,因此在提取时不需要原始序列,检测步骤如下。
(1)输入水印序列,按照嵌入的步骤(1)对序列的第一帧进行区域分割。
(2)根据嵌入的步骤(2)对序列的第一帧进行集合划分。
(3)从每个集合中提取水印,根据下面的式子决定提取出的水印值
其中:
是集合中与区域边界测地线距离平均值最大的值。
(4)与嵌入水印的步骤(4)相同,通过顶点轨迹可以将剩余的帧划分成与第一帧相同的有意义区域。然后通过步骤(3)提取出水印。
(5)为了验证版本信息,计算嵌入的水印W和提取的水印W'之间的比特错误率(BER),如果BER比预定的阈值小,则证明在某个集合中存在嵌入的水印。
Geodesic-based robust blind watermarking method for three-dimensional mesh animation by using mesh segmentation and vertex trajectory的更多相关文章
- A Blind Watermarking for 3-D Dynamic Mesh Model Using Distribution of Temporal Wavelet Coefficients
这周看了一篇动态网格序列水印的论文,由于目前在网格序列上做水印的工作特别少,加之我所看的这篇论文中的叙述相对简洁,理解起来颇为困难.好在请教了博士师兄,思路明朗了许多,也就把这思路整理在此了. 论文作 ...
- Summary: How to calculate PI? Based on Monte Carlo method
refer to: http://www.stealthcopter.com/blog/2009/09/python-calculating-pi-using-random-numbers/ Duri ...
- 【sqli-labs】 less49 GET -Error based -String -Blind -Order By Clause(GET型基于盲注的字符型Order By从句注入)
都是order by的注入,作者连图片都懒得改了... 注意和整型的区别,前引号用提交的引号闭合,后引号用#注释 http://192.168.136.128/sqli-labs-master/Les ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- CVPR 2011 Global contrast based salient region detection
Two salient region detection methods are proposed in this paper: HC AND RC HC: Histogram based contr ...
- 《A computer-aided healthcare system for cataract classification and grading based on fundus image analysis》学习笔记
Abstract This paper presents a fundus image analysis based computer aided system for automatic class ...
- java方法句柄-----5.Method Handles in Java
Method Handles in Java 目录 Method Handles in Java 1.介绍 2.什么是MethodHandle 3. Method Handles vs Reflect ...
- CG&CAD resource
Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...
- cvpr2015papers
@http://www-cs-faculty.stanford.edu/people/karpathy/cvpr2015papers/ CVPR 2015 papers (in nicer forma ...
随机推荐
- java:接口实例
接口:打印机接口 interface Printer { public void read(); } 函数一:佳能打印机 class CanPrinter implements Printer { p ...
- Photoshop:去掉投影
原图: 步骤: 1.图像->调整->黑白 (ctrl+shift+alt+B),-200 2.加渐变映射层配合合适的图层混合模式 结果:
- win32 api ShouCursor 根据内部计数器 是否>= 0 决定是否 显示光标,每true时计数器+1,每false-1
win32 api ShouCursor 根据内部计数器 是否>= 0 决定是否 显示光标,每true时计数器+1,每false-1,编程时true 和 false 的次数容易产生bug.
- linux下手动安装apache详解
引自:http://blog.chinaunix.net/uid-28458801-id-4211258.html error1:出现以下错误时候,需要下载安装apr configure: error ...
- org.json和json-lib比较
经常会用到JSON格式才处理,尤其是在Http请求的时候,网上可以找到很多json处理的相关工具,如org.json和json-lib,下面两段源代码是分别使用这两个工具解析和构造JSON的演示程序. ...
- C#基础(三)
运算符 分类 符号 解释 优先级 算数 ++,—— 加加,减减 由高到低,即执行顺序由上到下(圆括号优先级最高) * /% 乘 除 取余 + - 加 减 关系 关系和逻辑运算符永远是布尔型 > ...
- DirectSound播放PCM(可播放实时采集的音频数据)
前言 该篇整理的原始来源为http://blog.csdn.net/leixiaohua1020/article/details/40540147.非常感谢该博主的无私奉献,写了不少关于不同多媒体库的 ...
- [转载]Python模块学习 ---- subprocess 创建子进程
[转自]http://blog.sciencenet.cn/blog-600900-499638.html 最近,我们老大要我写一个守护者程序,对服务器进程进行守护.如果服务器不幸挂掉了,守护者能即时 ...
- csv 文件介绍
CSV即Comma Separate Values,这种文件格式经常用来作为不同程序之间的数据交互的格式. 具体文件格式 每条记录占一行 以逗号为分隔符 逗号前后的空格会被忽略 字段中包含有逗号,该字 ...
- Windows下免费、开源邮件服务器hMailServer
Windows下免费.开源邮件服务器hMailServer 一.Windows下搭建免费.开源的邮件服务器hMailServer 二.邮件服务器hMailServer管理工具hMailServer A ...