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 ...
随机推荐
- lintcode :Binary Tree Preorder Traversal 二叉树的前序遍历
题目: 二叉树的前序遍历 给出一棵二叉树,返回其节点值的前序遍历. 样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]. 挑战 你能使用非递归实现么? 解题: 通过递 ...
- SULogger:iOS日志可视化工具
前言 debug对于咋们程序员来说家常便饭,但有时候我们会遇到一种情况:开发某个功能时,需要在某个特定场景下进行调试,而这个场景并没有MacBook来进行连接debug,偏偏我们需要获得调试时的一些信 ...
- 确认某端口占用情况并结束相应进程(Windows)
(1)确认某端口是否被占用 (2)通过查找对应的PID号,定位是哪一个进程在使用该端口 (3)通过PID号结束该进程 # 查找端口2000是否被占用C:\Users\tdcqma>netstat ...
- Java API —— 泛型
1.泛型概述及使用 JDK1.5以后出现的机制 泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行.也被称为参数化类型,可以把类型当作参数一样传递过来,在传递过来之 ...
- MyEclipse Blue Edition 6.5 注册码生成程序
import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; im ...
- 撤销 git reset --hard HEAD~1
方法一: 1.先通过git reflog找到上一次的历史提交记录id,git如果没有特意设置,是会保存记录一段时间的(a few days or a month) 2.git reset --hard ...
- 定制IE浏览器的尖兵利器 - BHO
IE浏览器是当前使用人数最广的浏览器, 本文主要来讲述如何来打造我们自己特色的浏览器, 自定义工具栏按钮, 自定义网页的右击菜单, BHO技术与IE浏览器. 本文写作过程中参考不少网络上的相关资料, ...
- linux关机和重启的命令[转]
如果你很急着关机或者重启话,那么关机就是init 0,重启就是init 6或者reboot Linux中常用的关机和重新启动命令有shutdown.halt.reboot以及init,它们都可以达到关 ...
- 函数buf_pool_get
根据space ,offset 获取 buff pool的实例 下标 /**************************************************************** ...
- IIS大数据请求设置方法
大并发大数据量请求一般会分为几种情况: 1.大量的用户同时对系统的不同功能页面进行查找,更新操作 2.大量的用户同时对系统的同一个页面,同一个表的大数据量进行查询操作 3.大量的用户同时对系统的同一个 ...