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 ...
随机推荐
- 【Linux高频命令专题(11)】cp
概述 cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是 ...
- 被称为同步神器的 BTSync,你可以怎么用?
在这高速运作的信息化时代,使用云端来衔接工作和生活的点滴已是寻常事.可你是否曾扪心自问过:用各大云端备份自己的信息资料,真的安全放心吗? 毫不夸张的说,其实恶意代码和漏洞早已和你如影随形.你甚至都不用 ...
- Spring 操作数据库
试了一下spring的JdbcTemplate觉得很好用.首先增加一个连接到mysql数据库的dataSource <bean id="dataSource2" class= ...
- 【c】time.h
表示时间的三种类型 日历时间:从一个时间点到现在的秒数,用time_t表示 始终滴答时间:从进程启动到现在时钟的滴答数(每秒一般包含1000个).用clock_t表示 分解时间:分解的数据结构如下.用 ...
- Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
- distinct用法
distinct可以列出不重复的记录,对于单个字段来说distinct使用比较简单,但是对于多个字段来说,distinct使用起来会使人发狂.而且貌似也没有见到微软对distinct使用多字段的任何说 ...
- [HDOJ1811]Rank of Tetris(并查集、拓扑排序)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1811 求一堆数据的拓扑序. 处理:x>y就是x到y一条边,x<y就是y到x一条边.关键问题 ...
- JasperReports+iReport在eclipse中的使用
转载:http://blog.csdn.net/daming924/article/details/7402295 一.介绍1)它可以PDF,HTML,XML等多种形式产生报表或动态报表,在新版本还支 ...
- 结构体TABLE_share
struct TABLE_share { static inline TABLE **next_ptr(TABLE *l) { return &l->share_next; } stat ...
- uva10820Send a Table
筛法. 首先使cnt[i]=sqr(n/i),这样cnt[i]就表示gcd(x,y)大于等于i的数对的个数,然后倒序枚举减去gcd大于i的个数就可以得到ans[i].最终得到ans[1]. 这个算法单 ...