之前因为考试,中断了实验室的工作,现在结束考试了,不能再荒废了。

最近看了一篇关于序列水印的文章,大体思想是:对于一个网格序列,首先对第一帧进行处理,在第一帧上,用网格分割算法(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的更多相关文章

  1. A Blind Watermarking for 3-D Dynamic Mesh Model Using Distribution of Temporal Wavelet Coefficients

    这周看了一篇动态网格序列水印的论文,由于目前在网格序列上做水印的工作特别少,加之我所看的这篇论文中的叙述相对简洁,理解起来颇为困难.好在请教了博士师兄,思路明朗了许多,也就把这思路整理在此了. 论文作 ...

  2. 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 ...

  3. 【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 ...

  4. {ICIP2014}{收录论文列表}

    This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...

  5. 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 ...

  6. 《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 ...

  7. java方法句柄-----5.Method Handles in Java

    Method Handles in Java 目录 Method Handles in Java 1.介绍 2.什么是MethodHandle 3. Method Handles vs Reflect ...

  8. CG&CAD resource

    Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...

  9. cvpr2015papers

    @http://www-cs-faculty.stanford.edu/people/karpathy/cvpr2015papers/ CVPR 2015 papers (in nicer forma ...

随机推荐

  1. fhq_treap 总结

    今天跟着zcg大神学了一发fhq_treap 发现在维护区间问题上fhq_treap不仅思维量小,而且代码量更小 是Splay的不错的替代品,不过至今还是有一些问题不能很好的解决 譬如查询某个数在序列 ...

  2. cv 论文(CNN相关)

    最近发现很多以前看的论文都忘了,所以想写点东西来整理下之前的paper,paper主要是cv(computer vision)方向的. 第一篇:Gradient-based learning appl ...

  3. GDB笔记

    GDB是在Linux命令行下对C/C++的程序进行调试常用的一个命令,现将平时记录在本子上的笔记整理如下: 一.断点 断点类型有breakpoints, watchpoints, catchpoint ...

  4. 【memcache缓存专题(1)】memcache的介绍与应用场景

    简介 Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各 ...

  5. Java学习笔记之:Java String类

    一.引言 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串. 创建字符串最简单的方式如下: String str= "Hello w ...

  6. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  7. Android listview的item设定高度

    在item的layout文件中,用android:layout_height设置item的高度.运行,高度设置无效. 解决办法: 给item设定minHeight,即可. -------------- ...

  8. PCL—低层次视觉—点云滤波(初步处理)

    点云滤波的概念 点云滤波是点云处理的基本步骤,也是进行 high level 三维图像处理之前必须要进行的预处理.其作用类似于信号处理中的滤波,但实现手段却和信号处理不一样.我认为原因有以下几个方面: ...

  9. ios7 webapp touch bug

    // ios7 touchstart bug if(navigator.userAgent.indexOf("iPhone OS 7") != -1){ var startX = ...

  10. WIN32编程杂记(一)

    1.UNREFERENCED_PARAMETER的用处 作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命 ...