Robust Mesh Watermarking

之前看了一篇题为"Robust Mesh Watermarking"的论文,查阅资料的时候发现了一篇与之很相似的名为"三维模型数字水印系统的设计与实现"的中文论文,在中文论文的帮助下,总算对网格水印有了一定的了解,简单整理了一下。

由于知识版权保护的需要,数字水印技术应运而生。目前,图像、视频、音频、文本的水印研究已经比较成熟,但是三维模型水印的研究还相对匮乏。然而随着三维模型在网络上传播的日益增多,三维模型知识版权的保护也有了一定的研究意义。由于三维模型自身的特点,对嵌入其中的水印提出了不同于传统水印的要求:

  • 健壮性
  • 可工作在任意的网格上
  • 保持原有的连接
  • 不可感知

传统的水印一般分为时/空域水印和频域水印。在图像中,空域水印通过直接改变图像的像素来完成(比如早年提出的LSB算法),这类算法复杂度低,效率高,但缺乏健壮性,很容易被去除或破坏;

而频域(也称变换域)则是通过将图像转换到变换域,通过改变变换域中的某些参数来嵌入水印信息。这类变化主要包括DCT、DFT、DWT等。这类算法由于鲁棒性高,得到了普遍的研究。

对于网格而言,没有频域这一表示,因此需要寻找合适的表示方法来类比图像中的频域,本文的作者的出发点就是将图像中的频谱表示方式扩展到网格中来,他们的思路如下:

缺乏进行频率分解的某种自然的参数化方法(无DCT等)à网格多分辨率表示

没有自然的采样 à网格配准和重采样

以下就论文中提到的水印生成、嵌入及提取方法进行整理

水印生成

以原模型文件MD5加密后的MD5值作为密钥, 将此密钥作为伪随机数生成器的种子, 从均值为0、方差为l 的高斯分布中取 M个随机实数作为水印w = {w0,wl, …… wm-1 },

Key = MD5(models);

W = Random (key)

W ~ N(0,1)

水印嵌入:

w:水印

Φ:基函数系数

d:水印嵌方向

矩阵形式为: V‘ = V + BW

矩阵X分量形式为:

VX‘ :加入水印后网格顶点的X坐标

VX :原始网格顶点X坐标

ε:用户自定义的全局参数,用来控制水印嵌入的深度

Φ:是一个n x m的矩阵,由基函数组成的矩阵,其中矩阵中的项表示基函数Φi 在顶点j处的标量系数

hdx: 是一个 m x n 的对角矩阵,其中dx是全局位移趋势di的X分量,hi为第i个基函数的"幅度"

W :水印

下面介绍、di、hi的生成,由于在生成这些值的过程中用到了PM算法,在这之前先简单介绍下渐进网格(Progressive Meshes, PM)算法

下图为边塌陷与顶点分裂对照图,在左图的网格中,顶点uv之间的边动过边塌陷后被去掉了,u点被合并到了v点,在边塌陷的过程中,记录原顶点和新顶点之间的位置以及顶点之间的连接关系的变动,从而可以通过右图的顶点v点分裂可以分裂出点u,然后恢复出uv之间的边。整个边塌陷去掉的是原始网格中能量较小的边,具体的能量函数此处不做讨论。

在每次点分裂过程中,计算几何的幅度h:

  • 首先,用当前点的1-领域的质心来表示(预测)当前点分裂后新产生的点,
  • 然后,根据当前点的1-领域计算表面法向量
  • 最后,h为表面法向量与实际分裂出的新点坐标与预测的新点左边之差之间的点乘,即h = 表面法向量.(实际新点坐标-预测新点坐标)

之后,从若干(作者没有交代具体次数)次点分裂操作中,选出前m次h最大的操作,在这m次操作对应的原始点上生成基函数。

对于每次塌陷,计算"边界"Bi:由塌陷点i的当前邻居经过追踪点分裂操作之后扩展的邻居集合。计算半径rji :对于每个顶点Vj,计算边界内的点Ci到它的距离,当Ci位于边界中心时,半径为0,Ci位于边界上或边界外时,半径为1,其他情况在0到1之间,计算公式如下:

其中,d(v,S)表示v到S中任意一个顶点的距离的最小值,采用的是Dijkstra最短路径算法

(注:对于h和r的计算有点担心理解有偏差,截图附上此部分英文原文)

根据半径r构造基函数,为了得到更好的效果,将基函数构造为墨西哥草帽函数"

之所以选择这个函数是因为这个函数在坐标原点处连续,并且在原点处积分为0,不会引起模型的明显变化。

水印提取:

在进行水印提取之前, 可能需要对受攻击网格进行重定位或者重采样。当三维模型受到相似变换( 平移、旋转、一致放缩) 攻击时, 为了正确地提取水印,需要把模型带回原始的位置和尺度, 这是网格的重定位, 重定位( Registration ) 也称为对准、匹配。

重定位: 重定位可以理解为在两个模型间寻找一个变换, 使得两个模型间的"距离"最小

Get points v* on attacked mesh surface corresponding to original mesh vertices v

Use same basis functions f 1 … f m and hence same matrix B

Resampling choices:

  • Closest point projection
  • Ray-casting along local normal
  • Global deformation of original

完成上述两步(视情况而定,不一定必须)后,可以从可疑网格中提取水印了,根据下列公式

W* :从可疑模型中提取出的水印

V* :可疑网格中的顶点坐标

V :原始网格中的顶点坐标

解决该最小二乘法问题可以求出W*

计算两者之间的相关性:

Pfp computed from r and m using Student‘s t-test

Declare watermark present if

Pfp < Pthresh ( e.g. Pthresh = 10-6 )

根据作者的实验,这种水印可以抵抗多种攻击,具有较强的鲁棒性。具体实验结果请参看原文。

时间: 2024-10-11 06:27:25

Robust Mesh Watermarking的相关文章

Geodesic-based robust blind watermarking method for three-dimensional mesh animation by using mesh segmentation and vertex trajectory

之前因为考试,中断了实验室的工作,现在结束考试了,不能再荒废了. 最近看了一篇关于序列水印的文章,大体思想是:对于一个网格序列,首先对第一帧进行处理,在第一帧上,用网格分割算法(SDF)将网格分割成几个有意义的区域.在每个区域中,计算区域中的点到区域边界的测地线距离,根据测地线距离再将区域里的点分到不同的集合中,然后使集合中测地线距离的平均值保持在规定的范围内,从而嵌入水印. 下面介绍具体做法. 水印序列:+1.-1序列,由伪随机函数生成 网格分割算法:Shape Diameter Functi

{ICIP2014}{收录论文列表}

This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinci 10:30  ARS-L1.1—GROUP STRUCTURED DIRTY DICTIONARY LEARNING FOR CLASSIFICATION Yuanming Suo, Minh Dao, Trac Tran, Johns Hopkins University, USA; Hojj

常用图像数据集大全

1.搜狗实验室数据集: http://www.sogou.com/labs/dl/p.html 互联网图片库来自sogou图片搜索所索引的部分数据.其中收集了包括人物.动物.建筑.机械.风景.运动等类别,总数高达2,836,535张图片.对于每张图片,数据集中给出了图片的原图.缩略图.所在网页以及所在网页中的相关文本.200多G 2 http://www.imageclef.org/ IMAGECLEF致力于位图片相关领域提供一个基准(检索.分类.标注等等) Cross Language Eva

Watermarking 3D Polygonal Meshes in the Mesh Spectral Domain

这周看了一篇Ryutarou Ohbuchi网格水印的论文,论文中提出在网格的频率域中加入水印.对于网格而言,没有如图像中的DCT等转换到频率域的变换,因此用什么量来模拟传统频率域中的系数,是很关键的.本文提出的水印算法在给定的3D多边形网格的变换域中嵌入水印,该变换域在本文中指网格频谱分析.同时,3D多边形网格的形状是由它的点连接关系和顶点坐标定义的. 文中通过更改网格频谱系数来实现水印的嵌入.先将原始网格变换到频率域中,然后修改频率域系数,嵌入水印信息,最后将模型从频率域反变换到空域即可得到

什么是Service Mesh?

转至大佬宋净明的博客:https://jimmysong.io/posts/what-is-a-service-mesh/ Service mesh 又译作 "服务网格",作为服务间通信的基础设施层.Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 WHAT'S A SERVICE MESH? AND WHY DO I NEED ONE? 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh. 如 Willian Morg

游戏框架其九:网和着色器( Mesh and Shader )

网的重要作用可以导入3DMAX等创建的模型,到游戏中:着色器可以实现特定绚丽的效果.它们的实现如下 1. 网 Mesh的实现: #pragma once //======================================================================== // File: Mesh.h - classes to render meshes in D3D9 and D3D11 // 主要是导入3DMAX等软件生成的模型文件 基于Windows Dir

手势跟踪论文学习:Realtime and Robust Hand Tracking from Depth(三)Cost Function

iker原创.转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/39050619 Realtime and Robust Hand Tracking from Depth中的Cost Function 学习 首先,我们应该知道,输入的数据是什么:3D 点云数据. 3D点云给我的感觉应该是这种 输出的是:拟合好的手模型(48球体模型). 而这里的的3D 点云数据用p表示,每个球体用Sx 表示. Ci 第i个球体的中心:D表示深度图( 区分还

Extracting and composing robust features with denosing autoencoders 论文

这是一篇发表于2008年初的论文. 文章主要讲了利用 denosing autoencoder来学习 robust的中间特征..进上步,说明,利用这个方法,可以初始化神经网络的权值..这就相当于一种非监督学习的方法来训练神经网络. 当我们在用神经网络解决各种识别任务时,如果我们想要网络的性能更好,就需要更深层或更wider的神经网络来建模,Model出更复杂的分布.  网络变深以后,如何训练是一个很重要问题,如果训练不好,深层网络的性能真的不如浅层的神经网络.. 在训练深层网络的解决方法的道路上

【Unity】Mesh网格编程(一)正二十面体

前言 Mesh类是Unity用脚本创建和修改3D模型的重要脚本类. 本文以自定义编译器菜单的方式,实现了Unity创建正二十面体的功能扩展. 博文首发:http://blog.csdn.net/duzixi 添加了各种Shader材质球+Halo的效果图: 关于Mesh编程相关内容网上有很多资料,这里就不再赘述了. 步骤一: 创建Editor文件夹(若有就不用),将以下源代码保存为MyEditor.cs文件,存入文件夹中. 源代码: <span style="font-size:14px;